Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/files_pdfviewer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authordependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2022-03-05 05:01:49 +0300
committerJohn Molakvoæ <skjnldsv@protonmail.com>2022-03-05 10:57:25 +0300
commit5cc7099441dc3a38e09f191bf05d7654166612c3 (patch)
tree27cbbfa21fadbd0078bf01c32a889a165afdfca6 /js
parent3fef33f5c2d1d9f53148450eb584f75f24c430db (diff)
Bump pdfjs-dist from 2.12.313 to 2.13.216
Bumps [pdfjs-dist](https://github.com/mozilla/pdfjs-dist) from 2.12.313 to 2.13.216. - [Release notes](https://github.com/mozilla/pdfjs-dist/releases) - [Commits](https://github.com/mozilla/pdfjs-dist/compare/v2.12.313...v2.13.216) --- updated-dependencies: - dependency-name: pdfjs-dist dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Diffstat (limited to 'js')
-rw-r--r--js/pdfjs/build/pdf.js1919
-rw-r--r--js/pdfjs/build/pdf.js.map2
-rw-r--r--js/pdfjs/build/pdf.sandbox.js12
-rw-r--r--js/pdfjs/build/pdf.sandbox.js.map2
-rw-r--r--js/pdfjs/build/pdf.worker.js8231
-rw-r--r--js/pdfjs/build/pdf.worker.js.map2
-rw-r--r--js/pdfjs/web/locale/dsb/viewer.properties2
-rw-r--r--js/pdfjs/web/locale/en-US/viewer.properties7
-rw-r--r--js/pdfjs/web/locale/ga-IE/viewer.properties25
-rw-r--r--js/pdfjs/web/locale/hr/viewer.properties4
-rw-r--r--js/pdfjs/web/locale/hsb/viewer.properties2
-rw-r--r--js/pdfjs/web/locale/hye/viewer.properties10
-rw-r--r--js/pdfjs/web/locale/is/viewer.properties31
-rw-r--r--js/pdfjs/web/locale/it/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/ko/viewer.properties2
-rw-r--r--js/pdfjs/web/locale/sat/viewer.properties4
-rw-r--r--js/pdfjs/web/locale/szl/viewer.properties4
-rw-r--r--js/pdfjs/web/locale/tg/viewer.properties9
-rw-r--r--js/pdfjs/web/viewer.css28
-rw-r--r--js/pdfjs/web/viewer.html16
-rw-r--r--js/pdfjs/web/viewer.js1734
-rw-r--r--js/pdfjs/web/viewer.js.map2
22 files changed, 6151 insertions, 5898 deletions
diff --git a/js/pdfjs/build/pdf.js b/js/pdfjs/build/pdf.js
index 4316828..3e1de0b 100644
--- a/js/pdfjs/build/pdf.js
+++ b/js/pdfjs/build/pdf.js
@@ -2,7 +2,7 @@
* @licstart The following is the entire license notice for the
* Javascript code in this page
*
- * Copyright 2021 Mozilla Foundation
+ * Copyright 2022 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -42,533 +42,11 @@ return /******/ (() => { // webpackBootstrap
Object.defineProperty(exports, "__esModule", ({
value: true
}));
-exports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.LinkTarget = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = void 0;
-exports.addLinkAttributes = addLinkAttributes;
-exports.deprecated = deprecated;
-exports.getFilenameFromUrl = getFilenameFromUrl;
-exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl;
-exports.getXfaPageViewport = getXfaPageViewport;
-exports.isDataScheme = isDataScheme;
-exports.isPdfFile = isPdfFile;
-exports.isValidFetchUrl = isValidFetchUrl;
-exports.loadScript = loadScript;
-
-var _util = __w_pdfjs_require__(2);
-
-var _base_factory = __w_pdfjs_require__(5);
-
-const DEFAULT_LINK_REL = "noopener noreferrer nofollow";
-const SVG_NS = "http://www.w3.org/2000/svg";
-const PixelsPerInch = {
- CSS: 96.0,
- PDF: 72.0,
-
- get PDF_TO_CSS_UNITS() {
- return (0, _util.shadow)(this, "PDF_TO_CSS_UNITS", this.CSS / this.PDF);
- }
-
-};
-exports.PixelsPerInch = PixelsPerInch;
-
-class DOMCanvasFactory extends _base_factory.BaseCanvasFactory {
- constructor({
- ownerDocument = globalThis.document
- } = {}) {
- super();
- this._document = ownerDocument;
- }
-
- _createCanvas(width, height) {
- const canvas = this._document.createElement("canvas");
-
- canvas.width = width;
- canvas.height = height;
- return canvas;
- }
-
-}
-
-exports.DOMCanvasFactory = DOMCanvasFactory;
-
-async function fetchData(url, asTypedArray = false) {
- if (isValidFetchUrl(url, document.baseURI)) {
- const response = await fetch(url);
-
- if (!response.ok) {
- throw new Error(response.statusText);
- }
-
- return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text());
- }
-
- return new Promise((resolve, reject) => {
- const request = new XMLHttpRequest();
- request.open("GET", url, true);
-
- if (asTypedArray) {
- request.responseType = "arraybuffer";
- }
-
- request.onreadystatechange = () => {
- if (request.readyState !== XMLHttpRequest.DONE) {
- return;
- }
-
- if (request.status === 200 || request.status === 0) {
- let data;
-
- if (asTypedArray && request.response) {
- data = new Uint8Array(request.response);
- } else if (!asTypedArray && request.responseText) {
- data = (0, _util.stringToBytes)(request.responseText);
- }
-
- if (data) {
- resolve(data);
- return;
- }
- }
-
- reject(new Error(request.statusText));
- };
-
- request.send(null);
- });
-}
-
-class DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {
- _fetchData(url, compressionType) {
- return fetchData(url, this.isCompressed).then(data => {
- return {
- cMapData: data,
- compressionType
- };
- });
- }
-
-}
-
-exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
-
-class DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {
- _fetchData(url) {
- return fetchData(url, true);
- }
-
-}
-
-exports.DOMStandardFontDataFactory = DOMStandardFontDataFactory;
-
-class DOMSVGFactory extends _base_factory.BaseSVGFactory {
- _createSVG(type) {
- return document.createElementNS(SVG_NS, type);
- }
-
-}
-
-exports.DOMSVGFactory = DOMSVGFactory;
-
-class PageViewport {
- constructor({
- viewBox,
- scale,
- rotation,
- offsetX = 0,
- offsetY = 0,
- dontFlip = false
- }) {
- this.viewBox = viewBox;
- this.scale = scale;
- this.rotation = rotation;
- this.offsetX = offsetX;
- this.offsetY = offsetY;
- const centerX = (viewBox[2] + viewBox[0]) / 2;
- const centerY = (viewBox[3] + viewBox[1]) / 2;
- let rotateA, rotateB, rotateC, rotateD;
- rotation %= 360;
-
- if (rotation < 0) {
- rotation += 360;
- }
-
- switch (rotation) {
- case 180:
- rotateA = -1;
- rotateB = 0;
- rotateC = 0;
- rotateD = 1;
- break;
-
- case 90:
- rotateA = 0;
- rotateB = 1;
- rotateC = 1;
- rotateD = 0;
- break;
-
- case 270:
- rotateA = 0;
- rotateB = -1;
- rotateC = -1;
- rotateD = 0;
- break;
-
- case 0:
- rotateA = 1;
- rotateB = 0;
- rotateC = 0;
- rotateD = -1;
- break;
-
- default:
- throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.");
- }
-
- if (dontFlip) {
- rotateC = -rotateC;
- rotateD = -rotateD;
- }
-
- let offsetCanvasX, offsetCanvasY;
- let width, height;
-
- if (rotateA === 0) {
- offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
- offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
- width = Math.abs(viewBox[3] - viewBox[1]) * scale;
- height = Math.abs(viewBox[2] - viewBox[0]) * scale;
- } else {
- offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
- offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
- width = Math.abs(viewBox[2] - viewBox[0]) * scale;
- height = Math.abs(viewBox[3] - viewBox[1]) * scale;
- }
-
- this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];
- this.width = width;
- this.height = height;
- }
-
- clone({
- scale = this.scale,
- rotation = this.rotation,
- offsetX = this.offsetX,
- offsetY = this.offsetY,
- dontFlip = false
- } = {}) {
- return new PageViewport({
- viewBox: this.viewBox.slice(),
- scale,
- rotation,
- offsetX,
- offsetY,
- dontFlip
- });
- }
-
- convertToViewportPoint(x, y) {
- return _util.Util.applyTransform([x, y], this.transform);
- }
-
- convertToViewportRectangle(rect) {
- const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
-
- const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
-
- return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];
- }
-
- convertToPdfPoint(x, y) {
- return _util.Util.applyInverseTransform([x, y], this.transform);
- }
-
-}
-
-exports.PageViewport = PageViewport;
-
-class RenderingCancelledException extends _util.BaseException {
- constructor(msg, type) {
- super(msg, "RenderingCancelledException");
- this.type = type;
- }
-
-}
-
-exports.RenderingCancelledException = RenderingCancelledException;
-const LinkTarget = {
- NONE: 0,
- SELF: 1,
- BLANK: 2,
- PARENT: 3,
- TOP: 4
-};
-exports.LinkTarget = LinkTarget;
-
-function addLinkAttributes(link, {
- url,
- target,
- rel,
- enabled = true
-} = {}) {
- (0, _util.assert)(url && typeof url === "string", 'addLinkAttributes: A valid "url" parameter must provided.');
- const urlNullRemoved = (0, _util.removeNullCharacters)(url);
-
- if (enabled) {
- link.href = link.title = urlNullRemoved;
- } else {
- link.href = "";
- link.title = `Disabled: ${urlNullRemoved}`;
-
- link.onclick = () => {
- return false;
- };
- }
-
- let targetStr = "";
-
- switch (target) {
- case LinkTarget.NONE:
- break;
-
- case LinkTarget.SELF:
- targetStr = "_self";
- break;
-
- case LinkTarget.BLANK:
- targetStr = "_blank";
- break;
-
- case LinkTarget.PARENT:
- targetStr = "_parent";
- break;
-
- case LinkTarget.TOP:
- targetStr = "_top";
- break;
- }
-
- link.target = targetStr;
- link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL;
-}
-
-function isDataScheme(url) {
- const ii = url.length;
- let i = 0;
-
- while (i < ii && url[i].trim() === "") {
- i++;
- }
-
- return url.substring(i, i + 5).toLowerCase() === "data:";
-}
-
-function isPdfFile(filename) {
- return typeof filename === "string" && /\.pdf$/i.test(filename);
-}
-
-function getFilenameFromUrl(url) {
- const anchor = url.indexOf("#");
- const query = url.indexOf("?");
- const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
- return url.substring(url.lastIndexOf("/", end) + 1, end);
-}
-
-function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") {
- if (typeof url !== "string") {
- return defaultFilename;
- }
-
- if (isDataScheme(url)) {
- (0, _util.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.');
- return defaultFilename;
- }
-
- const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
- const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
- const splitURI = reURI.exec(url);
- let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);
-
- if (suggestedFilename) {
- suggestedFilename = suggestedFilename[0];
-
- if (suggestedFilename.includes("%")) {
- try {
- suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];
- } catch (ex) {}
- }
- }
-
- return suggestedFilename || defaultFilename;
-}
-
-class StatTimer {
- constructor() {
- this.started = Object.create(null);
- this.times = [];
- }
-
- time(name) {
- if (name in this.started) {
- (0, _util.warn)(`Timer is already running for ${name}`);
- }
-
- this.started[name] = Date.now();
- }
-
- timeEnd(name) {
- if (!(name in this.started)) {
- (0, _util.warn)(`Timer has not been started for ${name}`);
- }
-
- this.times.push({
- name,
- start: this.started[name],
- end: Date.now()
- });
- delete this.started[name];
- }
-
- toString() {
- const outBuf = [];
- let longest = 0;
-
- for (const time of this.times) {
- const name = time.name;
-
- if (name.length > longest) {
- longest = name.length;
- }
- }
-
- for (const time of this.times) {
- const duration = time.end - time.start;
- outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\n`);
- }
-
- return outBuf.join("");
- }
-
-}
-
-exports.StatTimer = StatTimer;
-
-function isValidFetchUrl(url, baseUrl) {
- try {
- const {
- protocol
- } = baseUrl ? new URL(url, baseUrl) : new URL(url);
- return protocol === "http:" || protocol === "https:";
- } catch (ex) {
- return false;
- }
-}
-
-function loadScript(src, removeScriptElement = false) {
- return new Promise((resolve, reject) => {
- const script = document.createElement("script");
- script.src = src;
-
- script.onload = function (evt) {
- if (removeScriptElement) {
- script.remove();
- }
-
- resolve(evt);
- };
-
- script.onerror = function () {
- reject(new Error(`Cannot load script at: ${script.src}`));
- };
-
- (document.head || document.documentElement).appendChild(script);
- });
-}
-
-function deprecated(details) {
- console.log("Deprecated API usage: " + details);
-}
-
-let pdfDateStringRegex;
-
-class PDFDateString {
- static toDateObject(input) {
- if (!input || !(0, _util.isString)(input)) {
- return null;
- }
-
- if (!pdfDateStringRegex) {
- pdfDateStringRegex = new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?");
- }
-
- const matches = pdfDateStringRegex.exec(input);
-
- if (!matches) {
- return null;
- }
-
- const year = parseInt(matches[1], 10);
- let month = parseInt(matches[2], 10);
- month = month >= 1 && month <= 12 ? month - 1 : 0;
- let day = parseInt(matches[3], 10);
- day = day >= 1 && day <= 31 ? day : 1;
- let hour = parseInt(matches[4], 10);
- hour = hour >= 0 && hour <= 23 ? hour : 0;
- let minute = parseInt(matches[5], 10);
- minute = minute >= 0 && minute <= 59 ? minute : 0;
- let second = parseInt(matches[6], 10);
- second = second >= 0 && second <= 59 ? second : 0;
- const universalTimeRelation = matches[7] || "Z";
- let offsetHour = parseInt(matches[8], 10);
- offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;
- let offsetMinute = parseInt(matches[9], 10) || 0;
- offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;
-
- if (universalTimeRelation === "-") {
- hour += offsetHour;
- minute += offsetMinute;
- } else if (universalTimeRelation === "+") {
- hour -= offsetHour;
- minute -= offsetMinute;
- }
-
- return new Date(Date.UTC(year, month, day, hour, minute, second));
- }
-
-}
-
-exports.PDFDateString = PDFDateString;
-
-function getXfaPageViewport(xfaPage, {
- scale = 1,
- rotation = 0
-}) {
- const {
- width,
- height
- } = xfaPage.attributes.style;
- const viewBox = [0, 0, parseInt(width), parseInt(height)];
- return new PageViewport({
- viewBox,
- scale,
- rotation
- });
-}
-
-/***/ }),
-/* 2 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
- value: true
-}));
exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
exports.arrayByteLength = arrayByteLength;
exports.arraysToBytes = arraysToBytes;
exports.assert = assert;
exports.bytesToString = bytesToString;
-exports.createObjectURL = createObjectURL;
exports.createPromiseCapability = createPromiseCapability;
exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
exports.escapeString = escapeString;
@@ -578,13 +56,9 @@ exports.info = info;
exports.isArrayBuffer = isArrayBuffer;
exports.isArrayEqual = isArrayEqual;
exports.isAscii = isAscii;
-exports.isBool = isBool;
-exports.isNum = isNum;
exports.isSameOrigin = isSameOrigin;
-exports.isString = isString;
exports.objectFromMap = objectFromMap;
exports.objectSize = objectSize;
-exports.removeNullCharacters = removeNullCharacters;
exports.setVerbosityLevel = setVerbosityLevel;
exports.shadow = shadow;
exports.string32 = string32;
@@ -596,7 +70,7 @@ exports.unreachable = unreachable;
exports.utf8StringToString = utf8StringToString;
exports.warn = warn;
-__w_pdfjs_require__(3);
+__w_pdfjs_require__(2);
const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
exports.IDENTITY_MATRIX = IDENTITY_MATRIX;
@@ -1131,24 +605,12 @@ class AbortException extends BaseException {
}
exports.AbortException = AbortException;
-const NullCharactersRegExp = /\x00+/g;
-const InvisibleCharactersRegExp = /[\x01-\x1F]/g;
-
-function removeNullCharacters(str, replaceInvisible = false) {
- if (typeof str !== "string") {
- warn("The argument for removeNullCharacters must be a string.");
- return str;
- }
- if (replaceInvisible) {
- str = str.replace(InvisibleCharactersRegExp, " ");
+function bytesToString(bytes) {
+ if (typeof bytes !== "object" || bytes === null || bytes.length === undefined) {
+ unreachable("Invalid argument for bytesToString");
}
- return str.replace(NullCharactersRegExp, "");
-}
-
-function bytesToString(bytes) {
- assert(bytes !== null && typeof bytes === "object" && bytes.length !== undefined, "Invalid argument for bytesToString");
const length = bytes.length;
const MAX_ARGUMENT_COUNT = 8192;
@@ -1168,7 +630,10 @@ function bytesToString(bytes) {
}
function stringToBytes(str) {
- assert(typeof str === "string", "Invalid argument for stringToBytes");
+ if (typeof str !== "string") {
+ unreachable("Invalid argument for stringToBytes");
+ }
+
const length = str.length;
const bytes = new Uint8Array(length);
@@ -1184,8 +649,11 @@ function arrayByteLength(arr) {
return arr.length;
}
- assert(arr.byteLength !== undefined, "arrayByteLength - invalid argument.");
- return arr.byteLength;
+ if (arr.byteLength !== undefined) {
+ return arr.byteLength;
+ }
+
+ unreachable("Invalid argument for arrayByteLength");
}
function arraysToBytes(arr) {
@@ -1445,24 +913,37 @@ exports.Util = Util;
const PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];
function stringToPDFString(str) {
- const length = str.length,
- strBuf = [];
+ if (str[0] >= "\xEF") {
+ let encoding;
- if (str[0] === "\xFE" && str[1] === "\xFF") {
- for (let i = 2; i < length; i += 2) {
- strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));
+ if (str[0] === "\xFE" && str[1] === "\xFF") {
+ encoding = "utf-16be";
+ } else if (str[0] === "\xFF" && str[1] === "\xFE") {
+ encoding = "utf-16le";
+ } else if (str[0] === "\xEF" && str[1] === "\xBB" && str[2] === "\xBF") {
+ encoding = "utf-8";
}
- } else if (str[0] === "\xFF" && str[1] === "\xFE") {
- for (let i = 2; i < length; i += 2) {
- strBuf.push(String.fromCharCode(str.charCodeAt(i + 1) << 8 | str.charCodeAt(i)));
- }
- } else {
- for (let i = 0; i < length; ++i) {
- const code = PDFStringTranslateTable[str.charCodeAt(i)];
- strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
+
+ if (encoding) {
+ try {
+ const decoder = new TextDecoder(encoding, {
+ fatal: true
+ });
+ const buffer = stringToBytes(str);
+ return decoder.decode(buffer);
+ } catch (ex) {
+ warn(`stringToPDFString: "${ex}".`);
+ }
}
}
+ const strBuf = [];
+
+ for (let i = 0, ii = str.length; i < ii; i++) {
+ const code = PDFStringTranslateTable[str.charCodeAt(i)];
+ strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
+ }
+
return strBuf.join("");
}
@@ -1501,18 +982,6 @@ function utf8StringToString(str) {
return unescape(encodeURIComponent(str));
}
-function isBool(v) {
- return typeof v === "boolean";
-}
-
-function isNum(v) {
- return typeof v === "number";
-}
-
-function isString(v) {
- return typeof v === "string";
-}
-
function isArrayBuffer(v) {
return typeof v === "object" && v !== null && v.byteLength !== undefined;
}
@@ -1559,42 +1028,18 @@ function createPromiseCapability() {
return capability;
}
-function createObjectURL(data, contentType = "", forceDataSchema = false) {
- if (URL.createObjectURL && typeof Blob !== "undefined" && !forceDataSchema) {
- return URL.createObjectURL(new Blob([data], {
- type: contentType
- }));
- }
-
- const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
- let buffer = `data:${contentType};base64,`;
-
- for (let i = 0, ii = data.length; i < ii; i += 3) {
- const b1 = data[i] & 0xff;
- const b2 = data[i + 1] & 0xff;
- const b3 = data[i + 2] & 0xff;
- const d1 = b1 >> 2,
- d2 = (b1 & 3) << 4 | b2 >> 4;
- const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;
- const d4 = i + 2 < ii ? b3 & 0x3f : 64;
- buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
- }
-
- return buffer;
-}
-
/***/ }),
-/* 3 */
+/* 2 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {
-var _is_node = __w_pdfjs_require__(4);
+var _is_node = __w_pdfjs_require__(3);
;
/***/ }),
-/* 4 */
+/* 3 */
/***/ ((__unused_webpack_module, exports) => {
@@ -1607,185 +1052,7 @@ const isNodeJS = typeof process === "object" && process + "" === "[object proces
exports.isNodeJS = isNodeJS;
/***/ }),
-/* 5 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
- value: true
-}));
-exports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-class BaseCanvasFactory {
- constructor() {
- if (this.constructor === BaseCanvasFactory) {
- (0, _util.unreachable)("Cannot initialize BaseCanvasFactory.");
- }
- }
-
- create(width, height) {
- if (width <= 0 || height <= 0) {
- throw new Error("Invalid canvas size");
- }
-
- const canvas = this._createCanvas(width, height);
-
- return {
- canvas,
- context: canvas.getContext("2d")
- };
- }
-
- reset(canvasAndContext, width, height) {
- if (!canvasAndContext.canvas) {
- throw new Error("Canvas is not specified");
- }
-
- if (width <= 0 || height <= 0) {
- throw new Error("Invalid canvas size");
- }
-
- canvasAndContext.canvas.width = width;
- canvasAndContext.canvas.height = height;
- }
-
- destroy(canvasAndContext) {
- if (!canvasAndContext.canvas) {
- throw new Error("Canvas is not specified");
- }
-
- canvasAndContext.canvas.width = 0;
- canvasAndContext.canvas.height = 0;
- canvasAndContext.canvas = null;
- canvasAndContext.context = null;
- }
-
- _createCanvas(width, height) {
- (0, _util.unreachable)("Abstract method `_createCanvas` called.");
- }
-
-}
-
-exports.BaseCanvasFactory = BaseCanvasFactory;
-
-class BaseCMapReaderFactory {
- constructor({
- baseUrl = null,
- isCompressed = false
- }) {
- if (this.constructor === BaseCMapReaderFactory) {
- (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory.");
- }
-
- this.baseUrl = baseUrl;
- this.isCompressed = isCompressed;
- }
-
- async fetch({
- name
- }) {
- if (!this.baseUrl) {
- throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.');
- }
-
- if (!name) {
- throw new Error("CMap name must be specified.");
- }
-
- const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : "");
- const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;
- return this._fetchData(url, compressionType).catch(reason => {
- throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`);
- });
- }
-
- _fetchData(url, compressionType) {
- (0, _util.unreachable)("Abstract method `_fetchData` called.");
- }
-
-}
-
-exports.BaseCMapReaderFactory = BaseCMapReaderFactory;
-
-class BaseStandardFontDataFactory {
- constructor({
- baseUrl = null
- }) {
- if (this.constructor === BaseStandardFontDataFactory) {
- (0, _util.unreachable)("Cannot initialize BaseStandardFontDataFactory.");
- }
-
- this.baseUrl = baseUrl;
- }
-
- async fetch({
- filename
- }) {
- if (!this.baseUrl) {
- throw new Error('The standard font "baseUrl" parameter must be specified, ensure that ' + 'the "standardFontDataUrl" API parameter is provided.');
- }
-
- if (!filename) {
- throw new Error("Font filename must be specified.");
- }
-
- const url = `${this.baseUrl}${filename}`;
- return this._fetchData(url).catch(reason => {
- throw new Error(`Unable to load font data at: ${url}`);
- });
- }
-
- _fetchData(url) {
- (0, _util.unreachable)("Abstract method `_fetchData` called.");
- }
-
-}
-
-exports.BaseStandardFontDataFactory = BaseStandardFontDataFactory;
-
-class BaseSVGFactory {
- constructor() {
- if (this.constructor === BaseSVGFactory) {
- (0, _util.unreachable)("Cannot initialize BaseSVGFactory.");
- }
- }
-
- create(width, height) {
- if (width <= 0 || height <= 0) {
- throw new Error("Invalid SVG dimensions");
- }
-
- const svg = this._createSVG("svg:svg");
-
- svg.setAttribute("version", "1.1");
- svg.setAttribute("width", `${width}px`);
- svg.setAttribute("height", `${height}px`);
- svg.setAttribute("preserveAspectRatio", "none");
- svg.setAttribute("viewBox", `0 0 ${width} ${height}`);
- return svg;
- }
-
- createElement(type) {
- if (typeof type !== "string") {
- throw new Error("Invalid SVG element type");
- }
-
- return this._createSVG(type);
- }
-
- _createSVG(type) {
- (0, _util.unreachable)("Abstract method `_createSVG` called.");
- }
-
-}
-
-exports.BaseSVGFactory = BaseSVGFactory;
-
-/***/ }),
-/* 6 */
+/* 4 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -1798,9 +1065,9 @@ exports.getDocument = getDocument;
exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
exports.version = void 0;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
-var _display_utils = __w_pdfjs_require__(1);
+var _display_utils = __w_pdfjs_require__(5);
var _font_loader = __w_pdfjs_require__(7);
@@ -1812,7 +1079,7 @@ var _canvas = __w_pdfjs_require__(10);
var _worker_options = __w_pdfjs_require__(12);
-var _is_node = __w_pdfjs_require__(4);
+var _is_node = __w_pdfjs_require__(3);
var _message_handler = __w_pdfjs_require__(13);
@@ -2039,7 +1306,7 @@ async function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", {
docId,
- apiVersion: '2.12.313',
+ apiVersion: '2.13.216',
source: {
data: source.data,
url: source.url,
@@ -2628,14 +1895,12 @@ class PDFPageProxy {
}
streamTextContent({
- normalizeWhitespace = false,
disableCombineTextItems = false,
includeMarkedContent = false
} = {}) {
const TEXT_CONTENT_CHUNK_SIZE = 100;
return this._transport.messageHandler.sendWithStream("GetTextContent", {
pageIndex: this._pageIndex,
- normalizeWhitespace: normalizeWhitespace === true,
combineTextItems: disableCombineTextItems !== true,
includeMarkedContent: includeMarkedContent === true
}, {
@@ -2911,90 +2176,8 @@ class LoopbackPort {
}
postMessage(obj, transfers) {
- function cloneValue(object) {
- if (globalThis.structuredClone) {
- return globalThis.structuredClone(object, transfers);
- }
-
- function fallbackCloneValue(value) {
- if (typeof value === "function" || typeof value === "symbol" || value instanceof URL) {
- throw new Error(`LoopbackPort.postMessage - cannot clone: ${value?.toString()}`);
- }
-
- if (typeof value !== "object" || value === null) {
- return value;
- }
-
- if (cloned.has(value)) {
- return cloned.get(value);
- }
-
- let buffer, result;
-
- if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
- if (transfers?.includes(buffer)) {
- result = new value.constructor(buffer, value.byteOffset, value.byteLength);
- } else {
- result = new value.constructor(value);
- }
-
- cloned.set(value, result);
- return result;
- }
-
- if (value instanceof Map) {
- result = new Map();
- cloned.set(value, result);
-
- for (const [key, val] of value) {
- result.set(key, fallbackCloneValue(val));
- }
-
- return result;
- }
-
- if (value instanceof Set) {
- result = new Set();
- cloned.set(value, result);
-
- for (const val of value) {
- result.add(fallbackCloneValue(val));
- }
-
- return result;
- }
-
- result = Array.isArray(value) ? [] : Object.create(null);
- cloned.set(value, result);
-
- for (const i in value) {
- let desc,
- p = value;
-
- while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {
- p = Object.getPrototypeOf(p);
- }
-
- if (typeof desc.value === "undefined") {
- continue;
- }
-
- if (typeof desc.value === "function" && !value.hasOwnProperty?.(i)) {
- continue;
- }
-
- result[i] = fallbackCloneValue(desc.value);
- }
-
- return result;
- }
-
- const cloned = new WeakMap();
- return fallbackCloneValue(object);
- }
-
const event = {
- data: cloneValue(obj)
+ data: structuredClone(obj, transfers)
};
this._deferred.then(() => {
@@ -3605,9 +2788,13 @@ class WorkerTransport {
if (loadingTask.onPassword) {
const updatePassword = password => {
- this._passwordCapability.resolve({
- password
- });
+ if (password instanceof Error) {
+ this._passwordCapability.reject(password);
+ } else {
+ this._passwordCapability.resolve({
+ password
+ });
+ }
};
try {
@@ -3788,7 +2975,7 @@ class WorkerTransport {
getPage(pageNumber) {
if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {
- return Promise.reject(new Error("Invalid page request"));
+ return Promise.reject(new Error("Invalid page request."));
}
const pageIndex = pageNumber - 1,
@@ -3814,8 +3001,13 @@ class WorkerTransport {
}
getPageIndex(ref) {
+ if (typeof ref !== "object" || ref === null || !Number.isInteger(ref.num) || ref.num < 0 || !Number.isInteger(ref.gen) || ref.gen < 0) {
+ return Promise.reject(new Error("Invalid pageIndex request."));
+ }
+
return this.messageHandler.sendWithPromise("GetPageIndex", {
- ref
+ num: ref.num,
+ gen: ref.gen
});
}
@@ -3973,32 +3165,31 @@ class WorkerTransport {
}
class PDFObjects {
- constructor() {
- this._objs = Object.create(null);
- }
+ #objs = Object.create(null);
+
+ #ensureObj(objId) {
+ const obj = this.#objs[objId];
- _ensureObj(objId) {
- if (this._objs[objId]) {
- return this._objs[objId];
+ if (obj) {
+ return obj;
}
- return this._objs[objId] = {
+ return this.#objs[objId] = {
capability: (0, _util.createPromiseCapability)(),
- data: null,
- resolved: false
+ data: null
};
}
get(objId, callback = null) {
if (callback) {
- this._ensureObj(objId).capability.promise.then(callback);
-
+ const obj = this.#ensureObj(objId);
+ obj.capability.promise.then(() => callback(obj.data));
return null;
}
- const obj = this._objs[objId];
+ const obj = this.#objs[objId];
- if (!obj || !obj.resolved) {
+ if (!obj?.capability.settled) {
throw new Error(`Requesting object that isn't resolved yet ${objId}.`);
}
@@ -4006,20 +3197,18 @@ class PDFObjects {
}
has(objId) {
- const obj = this._objs[objId];
- return obj?.resolved || false;
+ const obj = this.#objs[objId];
+ return obj?.capability.settled || false;
}
- resolve(objId, data) {
- const obj = this._ensureObj(objId);
-
- obj.resolved = true;
+ resolve(objId, data = null) {
+ const obj = this.#ensureObj(objId);
obj.data = data;
- obj.capability.resolve(data);
+ obj.capability.resolve();
}
clear() {
- this._objs = Object.create(null);
+ this.#objs = Object.create(null);
}
}
@@ -4214,12 +3403,652 @@ class InternalRenderTask {
}
-const version = '2.12.313';
+const version = '2.13.216';
exports.version = version;
-const build = 'a2ae56f39';
+const build = '399a0ec60';
exports.build = build;
/***/ }),
+/* 5 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = void 0;
+exports.deprecated = deprecated;
+exports.getFilenameFromUrl = getFilenameFromUrl;
+exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl;
+exports.getXfaPageViewport = getXfaPageViewport;
+exports.isDataScheme = isDataScheme;
+exports.isPdfFile = isPdfFile;
+exports.isValidFetchUrl = isValidFetchUrl;
+exports.loadScript = loadScript;
+
+var _base_factory = __w_pdfjs_require__(6);
+
+var _util = __w_pdfjs_require__(1);
+
+const SVG_NS = "http://www.w3.org/2000/svg";
+
+class PixelsPerInch {
+ static CSS = 96.0;
+ static PDF = 72.0;
+ static PDF_TO_CSS_UNITS = this.CSS / this.PDF;
+}
+
+exports.PixelsPerInch = PixelsPerInch;
+
+class DOMCanvasFactory extends _base_factory.BaseCanvasFactory {
+ constructor({
+ ownerDocument = globalThis.document
+ } = {}) {
+ super();
+ this._document = ownerDocument;
+ }
+
+ _createCanvas(width, height) {
+ const canvas = this._document.createElement("canvas");
+
+ canvas.width = width;
+ canvas.height = height;
+ return canvas;
+ }
+
+}
+
+exports.DOMCanvasFactory = DOMCanvasFactory;
+
+async function fetchData(url, asTypedArray = false) {
+ if (isValidFetchUrl(url, document.baseURI)) {
+ const response = await fetch(url);
+
+ if (!response.ok) {
+ throw new Error(response.statusText);
+ }
+
+ return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text());
+ }
+
+ return new Promise((resolve, reject) => {
+ const request = new XMLHttpRequest();
+ request.open("GET", url, true);
+
+ if (asTypedArray) {
+ request.responseType = "arraybuffer";
+ }
+
+ request.onreadystatechange = () => {
+ if (request.readyState !== XMLHttpRequest.DONE) {
+ return;
+ }
+
+ if (request.status === 200 || request.status === 0) {
+ let data;
+
+ if (asTypedArray && request.response) {
+ data = new Uint8Array(request.response);
+ } else if (!asTypedArray && request.responseText) {
+ data = (0, _util.stringToBytes)(request.responseText);
+ }
+
+ if (data) {
+ resolve(data);
+ return;
+ }
+ }
+
+ reject(new Error(request.statusText));
+ };
+
+ request.send(null);
+ });
+}
+
+class DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {
+ _fetchData(url, compressionType) {
+ return fetchData(url, this.isCompressed).then(data => {
+ return {
+ cMapData: data,
+ compressionType
+ };
+ });
+ }
+
+}
+
+exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
+
+class DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {
+ _fetchData(url) {
+ return fetchData(url, true);
+ }
+
+}
+
+exports.DOMStandardFontDataFactory = DOMStandardFontDataFactory;
+
+class DOMSVGFactory extends _base_factory.BaseSVGFactory {
+ _createSVG(type) {
+ return document.createElementNS(SVG_NS, type);
+ }
+
+}
+
+exports.DOMSVGFactory = DOMSVGFactory;
+
+class PageViewport {
+ constructor({
+ viewBox,
+ scale,
+ rotation,
+ offsetX = 0,
+ offsetY = 0,
+ dontFlip = false
+ }) {
+ this.viewBox = viewBox;
+ this.scale = scale;
+ this.rotation = rotation;
+ this.offsetX = offsetX;
+ this.offsetY = offsetY;
+ const centerX = (viewBox[2] + viewBox[0]) / 2;
+ const centerY = (viewBox[3] + viewBox[1]) / 2;
+ let rotateA, rotateB, rotateC, rotateD;
+ rotation %= 360;
+
+ if (rotation < 0) {
+ rotation += 360;
+ }
+
+ switch (rotation) {
+ case 180:
+ rotateA = -1;
+ rotateB = 0;
+ rotateC = 0;
+ rotateD = 1;
+ break;
+
+ case 90:
+ rotateA = 0;
+ rotateB = 1;
+ rotateC = 1;
+ rotateD = 0;
+ break;
+
+ case 270:
+ rotateA = 0;
+ rotateB = -1;
+ rotateC = -1;
+ rotateD = 0;
+ break;
+
+ case 0:
+ rotateA = 1;
+ rotateB = 0;
+ rotateC = 0;
+ rotateD = -1;
+ break;
+
+ default:
+ throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.");
+ }
+
+ if (dontFlip) {
+ rotateC = -rotateC;
+ rotateD = -rotateD;
+ }
+
+ let offsetCanvasX, offsetCanvasY;
+ let width, height;
+
+ if (rotateA === 0) {
+ offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
+ offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
+ width = Math.abs(viewBox[3] - viewBox[1]) * scale;
+ height = Math.abs(viewBox[2] - viewBox[0]) * scale;
+ } else {
+ offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
+ offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
+ width = Math.abs(viewBox[2] - viewBox[0]) * scale;
+ height = Math.abs(viewBox[3] - viewBox[1]) * scale;
+ }
+
+ this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];
+ this.width = width;
+ this.height = height;
+ }
+
+ clone({
+ scale = this.scale,
+ rotation = this.rotation,
+ offsetX = this.offsetX,
+ offsetY = this.offsetY,
+ dontFlip = false
+ } = {}) {
+ return new PageViewport({
+ viewBox: this.viewBox.slice(),
+ scale,
+ rotation,
+ offsetX,
+ offsetY,
+ dontFlip
+ });
+ }
+
+ convertToViewportPoint(x, y) {
+ return _util.Util.applyTransform([x, y], this.transform);
+ }
+
+ convertToViewportRectangle(rect) {
+ const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
+
+ const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
+
+ return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];
+ }
+
+ convertToPdfPoint(x, y) {
+ return _util.Util.applyInverseTransform([x, y], this.transform);
+ }
+
+}
+
+exports.PageViewport = PageViewport;
+
+class RenderingCancelledException extends _util.BaseException {
+ constructor(msg, type) {
+ super(msg, "RenderingCancelledException");
+ this.type = type;
+ }
+
+}
+
+exports.RenderingCancelledException = RenderingCancelledException;
+
+function isDataScheme(url) {
+ const ii = url.length;
+ let i = 0;
+
+ while (i < ii && url[i].trim() === "") {
+ i++;
+ }
+
+ return url.substring(i, i + 5).toLowerCase() === "data:";
+}
+
+function isPdfFile(filename) {
+ return typeof filename === "string" && /\.pdf$/i.test(filename);
+}
+
+function getFilenameFromUrl(url) {
+ const anchor = url.indexOf("#");
+ const query = url.indexOf("?");
+ const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
+ return url.substring(url.lastIndexOf("/", end) + 1, end);
+}
+
+function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") {
+ if (typeof url !== "string") {
+ return defaultFilename;
+ }
+
+ if (isDataScheme(url)) {
+ (0, _util.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.');
+ return defaultFilename;
+ }
+
+ const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
+ const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
+ const splitURI = reURI.exec(url);
+ let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);
+
+ if (suggestedFilename) {
+ suggestedFilename = suggestedFilename[0];
+
+ if (suggestedFilename.includes("%")) {
+ try {
+ suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];
+ } catch (ex) {}
+ }
+ }
+
+ return suggestedFilename || defaultFilename;
+}
+
+class StatTimer {
+ constructor() {
+ this.started = Object.create(null);
+ this.times = [];
+ }
+
+ time(name) {
+ if (name in this.started) {
+ (0, _util.warn)(`Timer is already running for ${name}`);
+ }
+
+ this.started[name] = Date.now();
+ }
+
+ timeEnd(name) {
+ if (!(name in this.started)) {
+ (0, _util.warn)(`Timer has not been started for ${name}`);
+ }
+
+ this.times.push({
+ name,
+ start: this.started[name],
+ end: Date.now()
+ });
+ delete this.started[name];
+ }
+
+ toString() {
+ const outBuf = [];
+ let longest = 0;
+
+ for (const time of this.times) {
+ const name = time.name;
+
+ if (name.length > longest) {
+ longest = name.length;
+ }
+ }
+
+ for (const time of this.times) {
+ const duration = time.end - time.start;
+ outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\n`);
+ }
+
+ return outBuf.join("");
+ }
+
+}
+
+exports.StatTimer = StatTimer;
+
+function isValidFetchUrl(url, baseUrl) {
+ try {
+ const {
+ protocol
+ } = baseUrl ? new URL(url, baseUrl) : new URL(url);
+ return protocol === "http:" || protocol === "https:";
+ } catch (ex) {
+ return false;
+ }
+}
+
+function loadScript(src, removeScriptElement = false) {
+ return new Promise((resolve, reject) => {
+ const script = document.createElement("script");
+ script.src = src;
+
+ script.onload = function (evt) {
+ if (removeScriptElement) {
+ script.remove();
+ }
+
+ resolve(evt);
+ };
+
+ script.onerror = function () {
+ reject(new Error(`Cannot load script at: ${script.src}`));
+ };
+
+ (document.head || document.documentElement).appendChild(script);
+ });
+}
+
+function deprecated(details) {
+ console.log("Deprecated API usage: " + details);
+}
+
+let pdfDateStringRegex;
+
+class PDFDateString {
+ static toDateObject(input) {
+ if (!input || typeof input !== "string") {
+ return null;
+ }
+
+ if (!pdfDateStringRegex) {
+ pdfDateStringRegex = new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?");
+ }
+
+ const matches = pdfDateStringRegex.exec(input);
+
+ if (!matches) {
+ return null;
+ }
+
+ const year = parseInt(matches[1], 10);
+ let month = parseInt(matches[2], 10);
+ month = month >= 1 && month <= 12 ? month - 1 : 0;
+ let day = parseInt(matches[3], 10);
+ day = day >= 1 && day <= 31 ? day : 1;
+ let hour = parseInt(matches[4], 10);
+ hour = hour >= 0 && hour <= 23 ? hour : 0;
+ let minute = parseInt(matches[5], 10);
+ minute = minute >= 0 && minute <= 59 ? minute : 0;
+ let second = parseInt(matches[6], 10);
+ second = second >= 0 && second <= 59 ? second : 0;
+ const universalTimeRelation = matches[7] || "Z";
+ let offsetHour = parseInt(matches[8], 10);
+ offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;
+ let offsetMinute = parseInt(matches[9], 10) || 0;
+ offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;
+
+ if (universalTimeRelation === "-") {
+ hour += offsetHour;
+ minute += offsetMinute;
+ } else if (universalTimeRelation === "+") {
+ hour -= offsetHour;
+ minute -= offsetMinute;
+ }
+
+ return new Date(Date.UTC(year, month, day, hour, minute, second));
+ }
+
+}
+
+exports.PDFDateString = PDFDateString;
+
+function getXfaPageViewport(xfaPage, {
+ scale = 1,
+ rotation = 0
+}) {
+ const {
+ width,
+ height
+ } = xfaPage.attributes.style;
+ const viewBox = [0, 0, parseInt(width), parseInt(height)];
+ return new PageViewport({
+ viewBox,
+ scale,
+ rotation
+ });
+}
+
+/***/ }),
+/* 6 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+class BaseCanvasFactory {
+ constructor() {
+ if (this.constructor === BaseCanvasFactory) {
+ (0, _util.unreachable)("Cannot initialize BaseCanvasFactory.");
+ }
+ }
+
+ create(width, height) {
+ if (width <= 0 || height <= 0) {
+ throw new Error("Invalid canvas size");
+ }
+
+ const canvas = this._createCanvas(width, height);
+
+ return {
+ canvas,
+ context: canvas.getContext("2d")
+ };
+ }
+
+ reset(canvasAndContext, width, height) {
+ if (!canvasAndContext.canvas) {
+ throw new Error("Canvas is not specified");
+ }
+
+ if (width <= 0 || height <= 0) {
+ throw new Error("Invalid canvas size");
+ }
+
+ canvasAndContext.canvas.width = width;
+ canvasAndContext.canvas.height = height;
+ }
+
+ destroy(canvasAndContext) {
+ if (!canvasAndContext.canvas) {
+ throw new Error("Canvas is not specified");
+ }
+
+ canvasAndContext.canvas.width = 0;
+ canvasAndContext.canvas.height = 0;
+ canvasAndContext.canvas = null;
+ canvasAndContext.context = null;
+ }
+
+ _createCanvas(width, height) {
+ (0, _util.unreachable)("Abstract method `_createCanvas` called.");
+ }
+
+}
+
+exports.BaseCanvasFactory = BaseCanvasFactory;
+
+class BaseCMapReaderFactory {
+ constructor({
+ baseUrl = null,
+ isCompressed = false
+ }) {
+ if (this.constructor === BaseCMapReaderFactory) {
+ (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory.");
+ }
+
+ this.baseUrl = baseUrl;
+ this.isCompressed = isCompressed;
+ }
+
+ async fetch({
+ name
+ }) {
+ if (!this.baseUrl) {
+ throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.');
+ }
+
+ if (!name) {
+ throw new Error("CMap name must be specified.");
+ }
+
+ const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : "");
+ const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;
+ return this._fetchData(url, compressionType).catch(reason => {
+ throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`);
+ });
+ }
+
+ _fetchData(url, compressionType) {
+ (0, _util.unreachable)("Abstract method `_fetchData` called.");
+ }
+
+}
+
+exports.BaseCMapReaderFactory = BaseCMapReaderFactory;
+
+class BaseStandardFontDataFactory {
+ constructor({
+ baseUrl = null
+ }) {
+ if (this.constructor === BaseStandardFontDataFactory) {
+ (0, _util.unreachable)("Cannot initialize BaseStandardFontDataFactory.");
+ }
+
+ this.baseUrl = baseUrl;
+ }
+
+ async fetch({
+ filename
+ }) {
+ if (!this.baseUrl) {
+ throw new Error('The standard font "baseUrl" parameter must be specified, ensure that ' + 'the "standardFontDataUrl" API parameter is provided.');
+ }
+
+ if (!filename) {
+ throw new Error("Font filename must be specified.");
+ }
+
+ const url = `${this.baseUrl}${filename}`;
+ return this._fetchData(url).catch(reason => {
+ throw new Error(`Unable to load font data at: ${url}`);
+ });
+ }
+
+ _fetchData(url) {
+ (0, _util.unreachable)("Abstract method `_fetchData` called.");
+ }
+
+}
+
+exports.BaseStandardFontDataFactory = BaseStandardFontDataFactory;
+
+class BaseSVGFactory {
+ constructor() {
+ if (this.constructor === BaseSVGFactory) {
+ (0, _util.unreachable)("Cannot initialize BaseSVGFactory.");
+ }
+ }
+
+ create(width, height) {
+ if (width <= 0 || height <= 0) {
+ throw new Error("Invalid SVG dimensions");
+ }
+
+ const svg = this._createSVG("svg:svg");
+
+ svg.setAttribute("version", "1.1");
+ svg.setAttribute("width", `${width}px`);
+ svg.setAttribute("height", `${height}px`);
+ svg.setAttribute("preserveAspectRatio", "none");
+ svg.setAttribute("viewBox", `0 0 ${width} ${height}`);
+ return svg;
+ }
+
+ createElement(type) {
+ if (typeof type !== "string") {
+ throw new Error("Invalid SVG element type");
+ }
+
+ return this._createSVG(type);
+ }
+
+ _createSVG(type) {
+ (0, _util.unreachable)("Abstract method `_createSVG` called.");
+ }
+
+}
+
+exports.BaseSVGFactory = BaseSVGFactory;
+
+/***/ }),
/* 7 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -4230,7 +4059,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.FontLoader = exports.FontFaceObject = void 0;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
class BaseFontLoader {
constructor({
@@ -4642,11 +4471,11 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0;
-var _base_factory = __w_pdfjs_require__(5);
+var _base_factory = __w_pdfjs_require__(6);
-var _is_node = __w_pdfjs_require__(4);
+var _is_node = __w_pdfjs_require__(3);
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
let NodeCanvasFactory = class {
constructor() {
@@ -4724,7 +4553,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.AnnotationStorage = void 0;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
class AnnotationStorage {
constructor() {
@@ -4821,11 +4650,11 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.CanvasGraphics = void 0;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
var _pattern_helper = __w_pdfjs_require__(11);
-var _display_utils = __w_pdfjs_require__(1);
+var _display_utils = __w_pdfjs_require__(5);
const MIN_FONT_SIZE = 16;
const MAX_FONT_SIZE = 100;
@@ -4969,6 +4798,10 @@ function mirrorContextOperations(ctx, destCtx) {
}
function addContextCurrentTransform(ctx) {
+ if (ctx._transformStack) {
+ ctx._transformStack = [];
+ }
+
if (ctx.mozCurrentTransform) {
return;
}
@@ -5023,6 +4856,10 @@ function addContextCurrentTransform(ctx) {
};
ctx.restore = function ctxRestore() {
+ if (this._transformStack.length === 0) {
+ (0, _util.warn)("Tried to restore a ctx when the stack was already empty.");
+ }
+
const prev = this._transformStack.pop();
if (prev) {
@@ -5883,7 +5720,7 @@ class CanvasGraphics {
}
endDrawing() {
- while (this.stateStack.length || this.current.activeSMask !== null) {
+ while (this.stateStack.length || this.inSMaskMode) {
this.restore();
}
@@ -6088,8 +5925,12 @@ class CanvasGraphics {
}
}
+ get inSMaskMode() {
+ return !!this.suspendedCtx;
+ }
+
checkSMaskState() {
- const inSMaskMode = !!this.suspendedCtx;
+ const inSMaskMode = this.inSMaskMode;
if (this.current.activeSMask && !inSMaskMode) {
this.beginSMaskMode();
@@ -6099,7 +5940,7 @@ class CanvasGraphics {
}
beginSMaskMode() {
- if (this.suspendedCtx) {
+ if (this.inSMaskMode) {
throw new Error("beginSMaskMode called while already in smask mode");
}
@@ -6117,7 +5958,7 @@ class CanvasGraphics {
}
endSMaskMode() {
- if (!this.suspendedCtx) {
+ if (!this.inSMaskMode) {
throw new Error("endSMaskMode called while not in smask mode");
}
@@ -6125,7 +5966,6 @@ class CanvasGraphics {
copyCtxState(this.ctx, this.suspendedCtx);
this.ctx = this.suspendedCtx;
- this.current.activeSMask = null;
this.suspendedCtx = null;
}
@@ -6153,20 +5993,33 @@ class CanvasGraphics {
}
save() {
- this.ctx.save();
+ if (this.inSMaskMode) {
+ copyCtxState(this.ctx, this.suspendedCtx);
+ this.suspendedCtx.save();
+ } else {
+ this.ctx.save();
+ }
+
const old = this.current;
this.stateStack.push(old);
this.current = old.clone();
}
restore() {
- if (this.stateStack.length === 0 && this.current.activeSMask) {
+ if (this.stateStack.length === 0 && this.inSMaskMode) {
this.endSMaskMode();
}
if (this.stateStack.length !== 0) {
this.current = this.stateStack.pop();
- this.ctx.restore();
+
+ if (this.inSMaskMode) {
+ this.suspendedCtx.restore();
+ copyCtxState(this.suspendedCtx, this.ctx);
+ } else {
+ this.ctx.restore();
+ }
+
this.checkSMaskState();
this.pendingClip = null;
this._cachedGetSinglePixelWidth = null;
@@ -6286,7 +6139,7 @@ class CanvasGraphics {
if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) {
ctx.save();
ctx.resetTransform();
- ctx.lineWidth = Math.round(this._combinedScaleFactor);
+ ctx.lineWidth = Math.floor(this._combinedScaleFactor);
ctx.stroke();
ctx.restore();
} else {
@@ -6540,7 +6393,7 @@ class CanvasGraphics {
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
if (resetLineWidthToOne) {
ctx.resetTransform();
- ctx.lineWidth = Math.round(this._combinedScaleFactor);
+ ctx.lineWidth = Math.floor(this._combinedScaleFactor);
}
ctx.stroke();
@@ -6557,7 +6410,7 @@ class CanvasGraphics {
ctx.save();
ctx.moveTo(x, y);
ctx.resetTransform();
- ctx.lineWidth = Math.round(this._combinedScaleFactor);
+ ctx.lineWidth = Math.floor(this._combinedScaleFactor);
ctx.strokeText(character, 0, 0);
ctx.restore();
} else {
@@ -6671,7 +6524,7 @@ class CanvasGraphics {
for (i = 0; i < glyphsLength; ++i) {
const glyph = glyphs[i];
- if ((0, _util.isNum)(glyph)) {
+ if (typeof glyph === "number") {
x += spacingDir * glyph * fontSize / 1000;
continue;
}
@@ -6777,7 +6630,7 @@ class CanvasGraphics {
for (i = 0; i < glyphsLength; ++i) {
glyph = glyphs[i];
- if ((0, _util.isNum)(glyph)) {
+ if (typeof glyph === "number") {
spacingLength = spacingDir * glyph * fontSize / 1000;
this.ctx.translate(spacingLength, 0);
current.x += spacingLength * textHScale;
@@ -6967,10 +6820,9 @@ class CanvasGraphics {
}
this.save();
- const suspendedCtx = this.suspendedCtx;
- if (this.current.activeSMask) {
- this.suspendedCtx = null;
+ if (this.inSMaskMode) {
+ this.endSMaskMode();
this.current.activeSMask = null;
}
@@ -7051,10 +6903,7 @@ class CanvasGraphics {
copyCtxState(currentCtx, groupCtx);
this.ctx = groupCtx;
this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
- this.groupStack.push({
- ctx: currentCtx,
- suspendedCtx
- });
+ this.groupStack.push(currentCtx);
this.groupLevel++;
}
@@ -7065,17 +6914,10 @@ class CanvasGraphics {
this.groupLevel--;
const groupCtx = this.ctx;
- const {
- ctx,
- suspendedCtx
- } = this.groupStack.pop();
+ const ctx = this.groupStack.pop();
this.ctx = ctx;
this.ctx.imageSmoothingEnabled = false;
- if (suspendedCtx) {
- this.suspendedCtx = suspendedCtx;
- }
-
if (group.smask) {
this.tempSMask = this.smaskStack.pop();
this.restore();
@@ -7504,7 +7346,7 @@ Object.defineProperty(exports, "__esModule", ({
exports.TilingPattern = exports.PathType = void 0;
exports.getShadingPattern = getShadingPattern;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
const PathType = {
FILL: "Fill",
@@ -7954,6 +7796,7 @@ class TilingPattern {
tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));
graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);
+ tmpCtx.save();
this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);
graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice();
graphics.executeOperatorList(operatorList);
@@ -8075,7 +7918,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.MessageHandler = void 0;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
const CallbackKind = {
UNKNOWN: 0,
@@ -8096,8 +7939,7 @@ const StreamKind = {
function wrapReason(reason) {
if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) {
- (0, _util.warn)('wrapReason: Expected "reason" to be a (possibly cloned) Error.');
- return reason;
+ (0, _util.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.');
}
switch (reason.name) {
@@ -8562,7 +8404,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.Metadata = void 0;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
class Metadata {
#metadataMap;
@@ -8607,7 +8449,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.OptionalContentConfig = void 0;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
class OptionalContentGroup {
constructor(name, intent) {
@@ -8828,9 +8670,9 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.PDFDataTransportStream = void 0;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
-var _display_utils = __w_pdfjs_require__(1);
+var _display_utils = __w_pdfjs_require__(5);
class PDFDataTransportStream {
constructor(params, pdfDataRangeTransport) {
@@ -9247,9 +9089,9 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.AnnotationLayer = void 0;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
-var _display_utils = __w_pdfjs_require__(1);
+var _display_utils = __w_pdfjs_require__(5);
var _annotation_storage = __w_pdfjs_require__(9);
@@ -9260,6 +9102,13 @@ var _xfa_layer = __w_pdfjs_require__(20);
const DEFAULT_TAB_INDEX = 1000;
const GetElementsByNameSet = new WeakSet();
+function getRectDims(rect) {
+ return {
+ width: rect[2] - rect[0],
+ height: rect[3] - rect[1]
+ };
+}
+
class AnnotationElementFactory {
static create(parameters) {
const subtype = parameters.data.annotationType;
@@ -9381,8 +9230,10 @@ class AnnotationElement {
page = this.page,
viewport = this.viewport;
const container = document.createElement("section");
- let width = data.rect[2] - data.rect[0];
- let height = data.rect[3] - data.rect[1];
+ let {
+ width,
+ height
+ } = getRectDims(data.rect);
container.setAttribute("data-annotation-id", data.id);
const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);
@@ -9911,7 +9762,7 @@ class WidgetAnnotationElement extends AnnotationElement {
detail: {
id: this.data.id,
name: eventName,
- value: event.target.checked
+ value: valueGetter(event)
}
});
});
@@ -10046,9 +9897,7 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
const textContent = storedData.valueAsString || storedData.value || "";
const elementData = {
userValue: null,
- formattedValue: null,
- beforeInputSelectionRange: null,
- beforeInputValue: null
+ formattedValue: null
};
if (this.data.multiLine) {
@@ -10084,7 +9933,6 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
}
event.target.scrollLeft = 0;
- elementData.beforeInputSelectionRange = null;
};
if (this.enableScripting && this.hasJSActions) {
@@ -10131,7 +9979,6 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
this._dispatchEventFromSandbox(actions, jsEvent);
});
element.addEventListener("keydown", event => {
- elementData.beforeInputValue = event.target.value;
let commitKey = -1;
if (event.key === "Escape") {
@@ -10163,8 +10010,9 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
const _blurListener = blurListener;
blurListener = null;
element.addEventListener("blur", event => {
+ elementData.userValue = event.target.value;
+
if (this._mouseState.isDown) {
- elementData.userValue = event.target.value;
this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
source: this,
detail: {
@@ -10181,38 +10029,29 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
_blurListener(event);
});
- element.addEventListener("mousedown", event => {
- elementData.beforeInputValue = event.target.value;
- elementData.beforeInputSelectionRange = null;
- });
- element.addEventListener("keyup", event => {
- if (event.target.selectionStart === event.target.selectionEnd) {
- elementData.beforeInputSelectionRange = null;
- }
- });
- element.addEventListener("select", event => {
- elementData.beforeInputSelectionRange = [event.target.selectionStart, event.target.selectionEnd];
- });
if (this.data.actions?.Keystroke) {
- element.addEventListener("input", event => {
- let selStart = -1;
- let selEnd = -1;
-
- if (elementData.beforeInputSelectionRange) {
- [selStart, selEnd] = elementData.beforeInputSelectionRange;
- }
-
+ element.addEventListener("beforeinput", event => {
+ elementData.formattedValue = "";
+ const {
+ data,
+ target
+ } = event;
+ const {
+ value,
+ selectionStart,
+ selectionEnd
+ } = target;
this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
source: this,
detail: {
id,
name: "Keystroke",
- value: elementData.beforeInputValue,
- change: event.data,
+ value,
+ change: data,
willCommit: false,
- selStart,
- selEnd
+ selStart: selectionStart,
+ selEnd: selectionEnd
}
});
});
@@ -10920,8 +10759,10 @@ class LineAnnotationElement extends AnnotationElement {
render() {
this.container.className = "lineAnnotation";
const data = this.data;
- const width = data.rect[2] - data.rect[0];
- const height = data.rect[3] - data.rect[1];
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
const svg = this.svgFactory.create(width, height);
const line = this.svgFactory.createElement("svg:line");
line.setAttribute("x1", data.rect[2] - data.lineCoordinates[0]);
@@ -10953,8 +10794,10 @@ class SquareAnnotationElement extends AnnotationElement {
render() {
this.container.className = "squareAnnotation";
const data = this.data;
- const width = data.rect[2] - data.rect[0];
- const height = data.rect[3] - data.rect[1];
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
const svg = this.svgFactory.create(width, height);
const borderWidth = data.borderStyle.width;
const square = this.svgFactory.createElement("svg:rect");
@@ -10987,8 +10830,10 @@ class CircleAnnotationElement extends AnnotationElement {
render() {
this.container.className = "circleAnnotation";
const data = this.data;
- const width = data.rect[2] - data.rect[0];
- const height = data.rect[3] - data.rect[1];
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
const svg = this.svgFactory.create(width, height);
const borderWidth = data.borderStyle.width;
const circle = this.svgFactory.createElement("svg:ellipse");
@@ -11023,8 +10868,10 @@ class PolylineAnnotationElement extends AnnotationElement {
render() {
this.container.className = this.containerClassName;
const data = this.data;
- const width = data.rect[2] - data.rect[0];
- const height = data.rect[3] - data.rect[1];
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
const svg = this.svgFactory.create(width, height);
let points = [];
@@ -11094,8 +10941,10 @@ class InkAnnotationElement extends AnnotationElement {
render() {
this.container.className = this.containerClassName;
const data = this.data;
- const width = data.rect[2] - data.rect[0];
- const height = data.rect[3] - data.rect[1];
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
const svg = this.svgFactory.create(width, height);
for (const inkList of data.inkLists) {
@@ -11296,6 +11145,15 @@ class AnnotationLayer {
continue;
}
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
+
+ if (width <= 0 || height <= 0) {
+ continue;
+ }
+
if (data.annotationType === _util.AnnotationType.POPUP) {
popupAnnotations.push(data);
continue;
@@ -11511,7 +11369,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.XfaLayer = void 0;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
var _xfa_text = __w_pdfjs_require__(17);
@@ -11765,7 +11623,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.renderTextLayer = renderTextLayer;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
const MAX_TEXT_DIVS_TO_RENDER = 100000;
const DEFAULT_FONT_SIZE = 30;
@@ -12547,11 +12405,11 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.SVGGraphics = void 0;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
-var _display_utils = __w_pdfjs_require__(1);
+var _display_utils = __w_pdfjs_require__(5);
-var _is_node = __w_pdfjs_require__(4);
+var _is_node = __w_pdfjs_require__(3);
let SVGGraphics = class {
constructor() {
@@ -12571,6 +12429,30 @@ exports.SVGGraphics = SVGGraphics;
const LINE_CAP_STYLES = ["butt", "round", "square"];
const LINE_JOIN_STYLES = ["miter", "round", "bevel"];
+ const createObjectURL = function (data, contentType = "", forceDataSchema = false) {
+ if (URL.createObjectURL && typeof Blob !== "undefined" && !forceDataSchema) {
+ return URL.createObjectURL(new Blob([data], {
+ type: contentType
+ }));
+ }
+
+ const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+ let buffer = `data:${contentType};base64,`;
+
+ for (let i = 0, ii = data.length; i < ii; i += 3) {
+ const b1 = data[i] & 0xff;
+ const b2 = data[i + 1] & 0xff;
+ const b3 = data[i + 2] & 0xff;
+ const d1 = b1 >> 2,
+ d2 = (b1 & 3) << 4 | b2 >> 4;
+ const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;
+ const d4 = i + 2 < ii ? b3 & 0x3f : 64;
+ buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
+ }
+
+ return buffer;
+ };
+
const convertImgDataToPng = function () {
const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
const CHUNK_WRAPPER_SIZE = 12;
@@ -12763,7 +12645,7 @@ exports.SVGGraphics = SVGGraphics;
writePngChunk("IDATA", idat, data, offset);
offset += CHUNK_WRAPPER_SIZE + idat.length;
writePngChunk("IEND", new Uint8Array(0), data, offset);
- return (0, _util.createObjectURL)(data, "image/png", forceDataSchema);
+ return createObjectURL(data, "image/png", forceDataSchema);
}
return function convertImgDataToPng(imgData, forceDataSchema, isMask) {
@@ -13278,7 +13160,7 @@ exports.SVGGraphics = SVGGraphics;
if (glyph === null) {
x += fontDirection * wordSpacing;
continue;
- } else if ((0, _util.isNum)(glyph)) {
+ } else if (typeof glyph === "number") {
x += spacingDir * glyph * fontSize / 1000;
continue;
}
@@ -13401,7 +13283,7 @@ exports.SVGGraphics = SVGGraphics;
this.defs.appendChild(this.cssStyle);
}
- const url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);
+ const url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema);
this.cssStyle.textContent += `@font-face { font-family: "${fontObj.loadedName}";` + ` src: url(${url}); }\n`;
}
@@ -14078,7 +13960,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.PDFNodeStream = void 0;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
var _network_utils = __w_pdfjs_require__(24);
@@ -14547,11 +14429,11 @@ exports.extractFilenameFromHeader = extractFilenameFromHeader;
exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;
exports.validateResponseStatus = validateResponseStatus;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
var _content_disposition = __w_pdfjs_require__(25);
-var _display_utils = __w_pdfjs_require__(1);
+var _display_utils = __w_pdfjs_require__(5);
function validateRangeRequestCapabilities({
getResponseHeader,
@@ -14637,7 +14519,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
function getFilenameFromContentDispositionHeader(contentDisposition) {
let needsEncodingFixup = true;
@@ -14685,14 +14567,7 @@ function getFilenameFromContentDispositionHeader(contentDisposition) {
const buffer = (0, _util.stringToBytes)(value);
value = decoder.decode(buffer);
needsEncodingFixup = false;
- } catch (e) {
- if (/^utf-?8$/i.test(encoding)) {
- try {
- value = decodeURIComponent(escape(value));
- needsEncodingFixup = false;
- } catch (err) {}
- }
- }
+ } catch (e) {}
}
return value;
@@ -14824,7 +14699,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.PDFNetworkStream = void 0;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
var _network_utils = __w_pdfjs_require__(24);
@@ -15365,7 +15240,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.PDFFetchStream = void 0;
-var _util = __w_pdfjs_require__(2);
+var _util = __w_pdfjs_require__(1);
var _network_utils = __w_pdfjs_require__(24);
@@ -15706,12 +15581,6 @@ Object.defineProperty(exports, "InvalidPDFException", ({
return _util.InvalidPDFException;
}
}));
-Object.defineProperty(exports, "LinkTarget", ({
- enumerable: true,
- get: function () {
- return _display_utils.LinkTarget;
- }
-}));
Object.defineProperty(exports, "LoopbackPort", ({
enumerable: true,
get: function () {
@@ -15808,24 +15677,12 @@ Object.defineProperty(exports, "XfaLayer", ({
return _xfa_layer.XfaLayer;
}
}));
-Object.defineProperty(exports, "addLinkAttributes", ({
- enumerable: true,
- get: function () {
- return _display_utils.addLinkAttributes;
- }
-}));
Object.defineProperty(exports, "build", ({
enumerable: true,
get: function () {
return _api.build;
}
}));
-Object.defineProperty(exports, "createObjectURL", ({
- enumerable: true,
- get: function () {
- return _util.createObjectURL;
- }
-}));
Object.defineProperty(exports, "createPromiseCapability", ({
enumerable: true,
get: function () {
@@ -15874,12 +15731,6 @@ Object.defineProperty(exports, "loadScript", ({
return _display_utils.loadScript;
}
}));
-Object.defineProperty(exports, "removeNullCharacters", ({
- enumerable: true,
- get: function () {
- return _util.removeNullCharacters;
- }
-}));
Object.defineProperty(exports, "renderTextLayer", ({
enumerable: true,
get: function () {
@@ -15899,17 +15750,17 @@ Object.defineProperty(exports, "version", ({
}
}));
-var _display_utils = __w_pdfjs_require__(1);
+var _util = __w_pdfjs_require__(1);
-var _util = __w_pdfjs_require__(2);
+var _api = __w_pdfjs_require__(4);
-var _api = __w_pdfjs_require__(6);
+var _display_utils = __w_pdfjs_require__(5);
var _annotation_layer = __w_pdfjs_require__(18);
var _worker_options = __w_pdfjs_require__(12);
-var _is_node = __w_pdfjs_require__(4);
+var _is_node = __w_pdfjs_require__(3);
var _text_layer = __w_pdfjs_require__(21);
@@ -15917,8 +15768,8 @@ var _svg = __w_pdfjs_require__(22);
var _xfa_layer = __w_pdfjs_require__(20);
-const pdfjsVersion = '2.12.313';
-const pdfjsBuild = 'a2ae56f39';
+const pdfjsVersion = '2.13.216';
+const pdfjsBuild = '399a0ec60';
{
if (_is_node.isNodeJS) {
const {
diff --git a/js/pdfjs/build/pdf.js.map b/js/pdfjs/build/pdf.js.map
index 20eb822..6d9108a 100644
--- a/js/pdfjs/build/pdf.js.map
+++ b/js/pdfjs/build/pdf.js.map
@@ -1 +1 @@
-{"version":3,"file":"pdf.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/src/display/base_factory.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_text.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/shared/scripting_utils.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_layer.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/network.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, function() {\nreturn ","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n BaseException,\n isString,\n removeNullCharacters,\n shadow,\n stringToBytes,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n} from \"./base_factory.js\";\n\nconst DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nconst PixelsPerInch = {\n CSS: 96.0,\n PDF: 72.0,\n\n /** @type {number} */\n get PDF_TO_CSS_UNITS() {\n return shadow(this, \"PDF_TO_CSS_UNITS\", this.CSS / this.PDF);\n },\n};\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({ ownerDocument = globalThis.document } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\nasync function fetchData(url, asTypedArray = false) {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n isValidFetchUrl(url, document.baseURI)\n ) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n return asTypedArray\n ? new Uint8Array(await response.arrayBuffer())\n : stringToBytes(await response.text());\n }\n\n // The Fetch API is not supported.\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, /* asTypedArray = */ true);\n\n if (asTypedArray) {\n request.responseType = \"arraybuffer\";\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let data;\n if (asTypedArray && request.response) {\n data = new Uint8Array(request.response);\n } else if (!asTypedArray && request.responseText) {\n data = stringToBytes(request.responseText);\n }\n if (data) {\n resolve(data);\n return;\n }\n }\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n });\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url, /* asTypedArray = */ this.isCompressed).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url, /* asTypedArray = */ true);\n }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array<number>} viewBox - The xMin, yMin, xMax and\n * yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n * default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n * default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n * viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n * in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n /**\n * @param {PageViewportParameters}\n */\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n // Normalize the rotation, by clamping it to the [0, 360) range.\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\n \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n );\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n ];\n\n this.width = width;\n this.height = height;\n }\n\n /**\n * Clones viewport, with optional additional properties.\n * @param {PageViewportCloneParameters} [params]\n * @returns {PageViewport} Cloned viewport.\n */\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Array containing corresponding coordinates of the\n * rectangle in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\n\nclass RenderingCancelledException extends BaseException {\n constructor(msg, type) {\n super(msg, \"RenderingCancelledException\");\n this.type = type;\n }\n}\n\nconst LinkTarget = {\n NONE: 0, // Default value.\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4,\n};\n\n/**\n * @typedef ExternalLinkParameters\n * @typedef {Object} ExternalLinkParameters\n * @property {string} url - An absolute URL.\n * @property {LinkTarget} [target] - The link target. The default value is\n * `LinkTarget.NONE`.\n * @property {string} [rel] - The link relationship. The default value is\n * `DEFAULT_LINK_REL`.\n * @property {boolean} [enabled] - Whether the link should be enabled. The\n * default value is true.\n */\n\n/**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLAnchorElement} link - The link element.\n * @param {ExternalLinkParameters} params\n */\nfunction addLinkAttributes(link, { url, target, rel, enabled = true } = {}) {\n assert(\n url && typeof url === \"string\",\n 'addLinkAttributes: A valid \"url\" parameter must provided.'\n );\n\n const urlNullRemoved = removeNullCharacters(url);\n if (enabled) {\n link.href = link.title = urlNullRemoved;\n } else {\n link.href = \"\";\n link.title = `Disabled: ${urlNullRemoved}`;\n link.onclick = () => {\n return false;\n };\n }\n\n let targetStr = \"\"; // LinkTarget.NONE\n switch (target) {\n case LinkTarget.NONE:\n break;\n case LinkTarget.SELF:\n targetStr = \"_self\";\n break;\n case LinkTarget.BLANK:\n targetStr = \"_blank\";\n break;\n case LinkTarget.PARENT:\n targetStr = \"_parent\";\n break;\n case LinkTarget.TOP:\n targetStr = \"_top\";\n break;\n }\n link.target = targetStr;\n\n link.rel = typeof rel === \"string\" ? rel : DEFAULT_LINK_REL;\n}\n\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @returns {string}\n */\nfunction getFilenameFromUrl(url) {\n const anchor = url.indexOf(\"#\");\n const query = url.indexOf(\"?\");\n const end = Math.min(\n anchor > 0 ? anchor : url.length,\n query > 0 ? query : url.length\n );\n return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n * unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\n */\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n // SCHEME HOST 1.PATH 2.QUERY 3.REF\n // Pattern to get last matching NAME.pdf\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename =\n reFilename.exec(splitURI[1]) ||\n reFilename.exec(splitURI[2]) ||\n reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n try {\n suggestedFilename = reFilename.exec(\n decodeURIComponent(suggestedFilename)\n )[0];\n } catch (ex) {\n // Possible (extremely rare) errors:\n // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n }\n }\n }\n return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n constructor() {\n this.started = Object.create(null);\n this.times = [];\n }\n\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now(),\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n }\n\n toString() {\n // Find the longest name for padding purposes.\n const outBuf = [];\n let longest = 0;\n for (const time of this.times) {\n const name = time.name;\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (const time of this.times) {\n const duration = time.end - time.start;\n outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n // The Fetch API only supports the http/https protocols, and not file/ftp.\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false; // `new URL()` will throw on incorrect data.\n }\n}\n\n/**\n * @param {string} src\n * @param {boolean} [removeScriptElement]\n * @returns {Promise<void>}\n */\nfunction loadScript(src, removeScriptElement = false) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n\n script.onload = function (evt) {\n if (removeScriptElement) {\n script.remove();\n }\n resolve(evt);\n };\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n (document.head || document.documentElement).appendChild(script);\n });\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n /**\n * Convert a PDF date string to a JavaScript `Date` object.\n *\n * The PDF date string format is described in section 7.9.4 of the official\n * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n * edition) Adobe describes the same format including a trailing apostrophe.\n * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n * them. We ignore all apostrophes as they are not necessary for date parsing.\n *\n * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n * parts of the date string).\n *\n * @param {string} input\n * @returns {Date|null}\n */\n static toDateObject(input) {\n if (!input || !isString(input)) {\n return null;\n }\n\n // Lazily initialize the regular expression.\n if (!pdfDateStringRegex) {\n pdfDateStringRegex = new RegExp(\n \"^D:\" + // Prefix (required)\n \"(\\\\d{4})\" + // Year (required)\n \"(\\\\d{2})?\" + // Month (optional)\n \"(\\\\d{2})?\" + // Day (optional)\n \"(\\\\d{2})?\" + // Hour (optional)\n \"(\\\\d{2})?\" + // Minute (optional)\n \"(\\\\d{2})?\" + // Second (optional)\n \"([Z|+|-])?\" + // Universal time relation (optional)\n \"(\\\\d{2})?\" + // Offset hour (optional)\n \"'?\" + // Splitting apostrophe (optional)\n \"(\\\\d{2})?\" + // Offset minute (optional)\n \"'?\" // Trailing apostrophe (optional)\n );\n }\n\n // Optional fields that don't satisfy the requirements from the regular\n // expression (such as incorrect digit counts or numbers that are out of\n // range) will fall back the defaults from the specification.\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n\n // JavaScript's `Date` object expects the month to be between 0 and 11\n // instead of 1 and 12, so we have to correct for that.\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n // Universal time relation 'Z' means that the local time is equal to the\n // universal time, whereas the relations '+'/'-' indicate that the local\n // time is later respectively earlier than the universal time. Every date\n // is normalized to universal time.\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n const { width, height } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n return new PageViewport({\n viewBox,\n scale,\n rotation,\n });\n}\n\nexport {\n addLinkAttributes,\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n DOMSVGFactory,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n isValidFetchUrl,\n LinkTarget,\n loadScript,\n PageViewport,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n StatTimer,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nconst NullCharactersRegExp = /\\x00+/g;\nconst InvisibleCharactersRegExp = /[\\x01-\\x1F]/g;\n\n/**\n * @param {string} str\n */\nfunction removeNullCharacters(str, replaceInvisible = false) {\n if (typeof str !== \"string\") {\n warn(\"The argument for removeNullCharacters must be a string.\");\n return str;\n }\n if (replaceInvisible) {\n str = str.replace(InvisibleCharactersRegExp, \" \");\n }\n return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n assert(\n bytes !== null && typeof bytes === \"object\" && bytes.length !== undefined,\n \"Invalid argument for bytesToString\"\n );\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n },\n};\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if (\n (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n ) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n // Y: first and second points belong to different rectangles?\n if (\n (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n ) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n const length = str.length,\n strBuf = [];\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n // UTF16BE BOM\n for (let i = 2; i < length; i += 2) {\n strBuf.push(\n String.fromCharCode((str.charCodeAt(i) << 8) | str.charCodeAt(i + 1))\n );\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n // UTF16LE BOM\n for (let i = 2; i < length; i += 2) {\n strBuf.push(\n String.fromCharCode((str.charCodeAt(i + 1) << 8) | str.charCodeAt(i))\n );\n }\n } else {\n for (let i = 0; i < length; ++i) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isBool(v) {\n return typeof v === \"boolean\";\n}\n\nfunction isNum(v) {\n return typeof v === \"number\";\n}\n\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nfunction createObjectURL(data, contentType = \"\", forceDataSchema = false) {\n if (URL.createObjectURL && typeof Blob !== \"undefined\" && !forceDataSchema) {\n return URL.createObjectURL(new Blob([data], { type: contentType }));\n }\n // Blob/createObjectURL is not available, falling back to data schema.\n const digits =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n let buffer = `data:${contentType};base64,`;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = ((b1 & 3) << 4) | (b2 >> 4);\n const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createObjectURL,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n isBool,\n IsEvalSupportedCached,\n IsLittleEndianCached,\n isNum,\n isSameOrigin,\n isString,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n removeNullCharacters,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n (typeof globalThis === \"undefined\" || !globalThis._pdfjsCompatibilityChecked)\n) {\n // Provides support for `globalThis` in legacy browsers.\n // Support: Firefox<65, Chrome<71, Safari<12.1, Node.js<12.0.0\n if (typeof globalThis === \"undefined\" || globalThis.Math !== Math) {\n // eslint-disable-next-line no-global-assign\n globalThis = require(\"core-js/es/global-this\");\n }\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = require(\"dommatrix/dist/dommatrix.js\");\n })();\n\n // Provides support for Object.fromEntries in legacy browsers.\n // Support: Firefox<63, Chrome<73, Safari<12.1, Node.js<12.0.0\n (function checkObjectFromEntries() {\n if (Object.fromEntries) {\n return;\n }\n require(\"core-js/es/object/from-entries.js\");\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `ReadableStream`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n // Slightly reduce the size of the Chromium-extension, given\n // that `ReadableStream` has been supported since Chrome 43.\n return;\n }\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream =\n require(\"web-streams-polyfill/dist/ponyfill.js\").ReadableStream;\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CMapCompressionType, unreachable } from \"../shared/util.js\";\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n unreachable(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\"),\n };\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n\n /**\n * @private\n */\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\n\nclass BaseCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = false }) {\n if (this.constructor === BaseCMapReaderFactory) {\n unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({ name }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n );\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed\n ? CMapCompressionType.BINARY\n : CMapCompressionType.NONE;\n\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(\n `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n );\n });\n }\n\n /**\n * @private\n */\n _fetchData(url, compressionType) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseStandardFontDataFactory {\n constructor({ baseUrl = null }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n this.baseUrl = baseUrl;\n }\n\n async fetch({ filename }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The standard font \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"standardFontDataUrl\" API parameter is provided.'\n );\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n\n /**\n * @private\n */\n _fetchData(url) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n unreachable(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n\n return svg;\n }\n\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n\n /**\n * @private\n */\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\n\nexport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isSameOrigin,\n MissingPDFException,\n PasswordException,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n} from \"./node_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\nconst DefaultCanvasFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeCanvasFactory\n : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeCMapReaderFactory\n : DOMCMapReaderFactory;\nconst DefaultStandardFontDataFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeStandardFontDataFactory\n : DOMStandardFontDataFactory;\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params - The document initialization\n * parameters. The \"url\" key is always present.\n * @returns {Promise} A promise, which is resolved with an instance of\n * {IPDFStream}.\n * @ignore\n */\n\n/**\n * @type IPDFStreamFactory\n * @private\n */\nlet createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates an {IPDFStream} as an alternative PDF\n * data transport.\n *\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function\n * that takes document initialization parameters (including a \"url\") and\n * returns a promise which is resolved with an instance of {IPDFStream}.\n * @ignore\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string|URL} [url] - The URL of the PDF.\n * @property {TypedArray|Array<number>|string} [data] - Binary PDF data. Use\n * typed arrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {TypedArray} [initialData] - A typed array with the first portion\n * or all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string|URL|TypedArray|PDFDataRangeTransport|DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n\n let source;\n if (typeof src === \"string\" || src instanceof URL) {\n source = { url: src };\n } else if (isArrayBuffer(src)) {\n source = { data: src };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\n \"Invalid parameter in getDocument, \" +\n \"need either string, URL, Uint8Array, or parameter object.\"\n );\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n source = src;\n }\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n const value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n // The full path is required in the 'url' field.\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n warn(`Cannot create valid URL: \"${ex}\".`);\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString(); // Support Node.js environments.\n continue;\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n case \"range\":\n rangeTransport = value;\n continue;\n case \"worker\":\n worker = value;\n continue;\n case \"data\":\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n value instanceof Buffer // eslint-disable-line no-undef\n ) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break; // Use the data as-is when it's already a Uint8Array.\n } else if (typeof value === \"string\") {\n params[key] = stringToBytes(value);\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !isNaN(value.length)\n ) {\n params[key] = new Uint8Array(value);\n } else if (isArrayBuffer(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\n \"Invalid PDF binary data: either typed array, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n }\n continue;\n }\n params[key] = value;\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.CMapReaderFactory =\n params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.StandardFontDataFactory =\n params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (\n typeof params.docBaseUrl !== \"string\" ||\n isDataScheme(params.docBaseUrl)\n ) {\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n params.docBaseUrl = null;\n }\n if (!Number.isInteger(params.maxImageSize)) {\n params.maxImageSize = -1;\n }\n if (typeof params.useWorkerFetch !== \"boolean\") {\n params.useWorkerFetch =\n params.CMapReaderFactory === DOMCMapReaderFactory &&\n params.StandardFontDataFactory === DOMStandardFontDataFactory;\n }\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS;\n }\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts =\n !(\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n isNodeJS\n ) && !params.disableFontFace;\n }\n if (typeof params.ownerDocument === \"undefined\") {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docId = task.docId;\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(\n worker,\n params,\n rangeTransport,\n docId\n );\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n },\n rangeTransport\n );\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n params\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId - Unique document ID, used in `MessageHandler`.\n * @returns {Promise<string>} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename =\n pdfDataRangeTransport.contentDispositionFilename;\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n // Only send the required properties, and *not* the entire object.\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch\n ? source.standardFontDataUrl\n : null,\n }\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static get idCounters() {\n return shadow(this, \"idCounters\", { doc: 0 });\n }\n\n constructor() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.idCounters.doc++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n\n /**\n * Callback for when an unsupported feature is used in the PDF document.\n * The callback receives an {@link UNSUPPORTED_FEATURES} argument.\n * @type {function}\n */\n this.onUnsupportedFeature = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise<PDFDocumentProxy>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise<void>} A promise that is resolved when destruction is\n * completed.\n */\n async destroy() {\n this.destroyed = true;\n await this._transport?.destroy();\n\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n Object.defineProperty(this, \"fingerprint\", {\n get() {\n deprecated(\n \"`PDFDocumentProxy.fingerprint`, \" +\n \"please use `PDFDocumentProxy.fingerprints` instead.\"\n );\n return this.fingerprints[0];\n },\n });\n\n Object.defineProperty(this, \"getStats\", {\n value: async () => {\n deprecated(\n \"`PDFDocumentProxy.getStats`, \" +\n \"please use the `PDFDocumentProxy.stats`-getter instead.\"\n );\n return this.stats || { streamTypes: {}, fontTypes: {} };\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array<string, string|null>} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @typedef {Object} PDFDocumentStats\n * @property {Object<string, boolean>} streamTypes - Used stream types in the\n * document (an item is set to true if specific stream ID was used in the\n * document).\n * @property {Object<string, boolean>} fontTypes - Used font types in the\n * document (an item is set to true if specific font ID was used in the\n * document).\n */\n\n /**\n * @type {PDFDocumentStats | null} The current statistics about document\n * structures, or `null` when no statistics exists.\n */\n get stats() {\n return this._transport.stats;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return !!this._transport._htmlForXfa;\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise<PDFPageProxy>} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise<number>} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise<Array<any> | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise<any | null>} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise<any>} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} of all the JavaScript strings in the name tree, or `null`\n * if no JavaScript exists.\n */\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree (like getJavaScript);\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array<any> | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array<OutlineNode>} items\n */\n\n /**\n * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise<OptionalContentConfig>} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise<Array<number> | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise<MarkInfo | null>} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise<TypedArray>} A promise that is resolved with a\n * {TypedArray} that has the raw data from the PDF.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise<Uint8Array>} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n this._transport.annotationStorage.size <= 0\n ) {\n deprecated(\n \"saveDocument called while `annotationStorage` is empty, \" +\n \"please use the getData-method instead.\"\n );\n }\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise<Object<string, Array<Object>> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise<boolean>} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with an\n * {Array<string>} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} normalizeWhitespace - Replaces all occurrences of\n * whitespace with standard spaces (0x20). The default value is `false`.\n * @property {boolean} disableCombineTextItems - Do not attempt to combine\n * same line {@link TextItem}'s. The default value is `false`.\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array<TextItem | TextMarkedContent>} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array<any>} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array<any>} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {Object} [imageLayer] - An object that has `beginLayout`,\n * `endLayout` and `appendImage` functions.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object | string} [background] - Background to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * <color> value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array<StructTreeNode | StructTreeContent>} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array<number>} fnArray - Array containing the operator functions.\n * @property {Array<any>} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this._annotationPromises = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array<number>} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise<Array<any>>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n let promise = this._annotationPromises.get(intentArgs.cacheKey);\n if (!promise) {\n promise = this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n this._annotationPromises.set(intentArgs.cacheKey, promise);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n promise = promise.then(annotations => {\n for (const annotation of annotations) {\n if (annotation.titleObj !== undefined) {\n Object.defineProperty(annotation, \"title\", {\n get() {\n deprecated(\n \"`title`-property on annotation, please use `titleObj` instead.\"\n );\n return annotation.titleObj.str;\n },\n });\n }\n if (annotation.contentsObj !== undefined) {\n Object.defineProperty(annotation, \"contents\", {\n get() {\n deprecated(\n \"`contents`-property on annotation, please use `contentsObj` instead.\"\n );\n return annotation.contentsObj.str;\n },\n });\n }\n }\n return annotations;\n });\n }\n }\n return promise;\n }\n\n /**\n * @returns {Promise<Object>} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return (this._jsActionsPromise ||= this._transport.getPageJSActions(\n this._pageIndex\n ));\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n }) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n if (arguments[0]?.renderInteractiveForms !== undefined) {\n deprecated(\n \"render no longer accepts the `renderInteractiveForms`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].renderInteractiveForms === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_FORMS;\n }\n }\n if (arguments[0]?.includeAnnotationStorage !== undefined) {\n deprecated(\n \"render no longer accepts the `includeAnnotationStorage`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].includeAnnotationStorage === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_STORAGE;\n }\n }\n }\n\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance =\n canvasFactory ||\n new DefaultCanvasFactory({ ownerDocument: this._ownerDocument });\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup once rendering has finished (regardless of cleanupAfterRender).\n if (this.cleanupAfterRender || intentPrint) {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise<PDFOperatorList>} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n /* isOpList = */ true\n );\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = createPromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n normalizeWhitespace = false,\n disableCombineTextItems = false,\n includeMarkedContent = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n normalizeWhitespace: normalizeWhitespace === true,\n combineTextItems: disableCombineTextItems !== true,\n includeMarkedContent: includeMarkedContent === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise<TextContent>} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => {\n return XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise<StructTreeNode>} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return (this._structTreePromise ||= this._transport.getStructTree(\n this._pageIndex\n ));\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @private\n */\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n\n this._intentStates.clear();\n this.objs.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n if (resetStats && this._stats) {\n this._stats = new StatTimer();\n }\n this.pendingCleanup = false;\n return true;\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({ renderingIntent, cacheKey }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage:\n renderingIntent & RenderingIntentFlag.ANNOTATIONS_STORAGE\n ? this._transport.annotationStorage.serializable\n : null,\n }\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({ intentState, reason, force: true });\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {Object} Returns page stats, if enabled; returns `null` otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n constructor() {\n this._listeners = [];\n this._deferred = Promise.resolve();\n }\n\n postMessage(obj, transfers) {\n function cloneValue(object) {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n globalThis.structuredClone\n ) {\n return globalThis.structuredClone(object, transfers);\n }\n\n // Trying to perform a structured clone close to the spec, including\n // transfers.\n function fallbackCloneValue(value) {\n if (\n typeof value === \"function\" ||\n typeof value === \"symbol\" ||\n value instanceof URL\n ) {\n throw new Error(\n `LoopbackPort.postMessage - cannot clone: ${value?.toString()}`\n );\n }\n\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n if (cloned.has(value)) {\n // already cloned the object\n return cloned.get(value);\n }\n let buffer, result;\n if ((buffer = value.buffer) && isArrayBuffer(buffer)) {\n // We found object with ArrayBuffer (typed array).\n if (transfers?.includes(buffer)) {\n result = new value.constructor(\n buffer,\n value.byteOffset,\n value.byteLength\n );\n } else {\n result = new value.constructor(value);\n }\n cloned.set(value, result);\n return result;\n }\n if (value instanceof Map) {\n result = new Map();\n cloned.set(value, result); // Adding to cache now for cyclic references.\n for (const [key, val] of value) {\n result.set(key, fallbackCloneValue(val));\n }\n return result;\n }\n if (value instanceof Set) {\n result = new Set();\n cloned.set(value, result); // Adding to cache now for cyclic references.\n for (const val of value) {\n result.add(fallbackCloneValue(val));\n }\n return result;\n }\n result = Array.isArray(value) ? [] : Object.create(null);\n cloned.set(value, result); // Adding to cache now for cyclic references.\n // Cloning all value and object properties, however ignoring properties\n // defined via getter.\n for (const i in value) {\n let desc,\n p = value;\n while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n p = Object.getPrototypeOf(p);\n }\n if (typeof desc.value === \"undefined\") {\n continue;\n }\n if (typeof desc.value === \"function\" && !value.hasOwnProperty?.(i)) {\n continue;\n }\n result[i] = fallbackCloneValue(desc.value);\n }\n return result;\n }\n\n const cloned = new WeakMap();\n return fallbackCloneValue(object);\n }\n\n const event = { data: cloneValue(obj) };\n\n this._deferred.then(() => {\n for (const listener of this._listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Object} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n PDFWorkerUtil.fallbackWorkerSrc = PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static get _workerPorts() {\n return shadow(this, \"_workerPorts\", new WeakMap());\n }\n\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n if (port && PDFWorker._workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n\n this._readyCapability = createPromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n PDFWorker._workerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n typeof Worker !== \"undefined\" &&\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker._mainThreadWorkerMessageHandler\n ) {\n let workerSrc = PDFWorker.workerSrc;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n // Some versions of FF can't create a worker on localhost, see:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n const worker = new Worker(workerSrc);\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch (e) {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array([255]);\n // Some versions of Opera throw a DATA_CLONE_ERR on serializing the\n // typed array. Also, checking if we can use transfers.\n try {\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n } catch (ex) {\n warn(\"Cannot use postMessage transfers.\");\n testObj[0] = 0;\n messageHandler.send(\"test\", testObj);\n }\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch (e) {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker._workerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n if (this._workerPorts.has(params.port)) {\n return this._workerPorts.get(params.port);\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (PDFWorkerUtil.fallbackWorkerSrc !== null) {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch (ex) {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a `<script>` tag.\n return mainWorkerMessageHandler;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n const worker = await import(\"pdfjs/core/worker.js\");\n return worker.WorkerMessageHandler;\n }\n if (\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n // eslint-disable-next-line no-undef\n typeof __non_webpack_require__ === \"function\"\n ) {\n // Since bundlers, such as Webpack, cannot be told to leave `require`\n // statements alone we are thus forced to jump through hoops in order\n // to prevent `Critical dependency: ...` warnings in third-party\n // deployments of the built `pdf.js`/`pdf.worker.js` files; see\n // https://github.com/webpack/webpack/issues/8826\n //\n // The following hack is based on the assumption that code running in\n // Node.js won't ever be affected by e.g. Content Security Policies that\n // prevent the use of `eval`. If that ever occurs, we should revert this\n // to a normal `__non_webpack_require__` statement and simply document\n // the Webpack warnings instead (telling users to ignore them).\n //\n // eslint-disable-next-line no-eval\n const worker = eval(\"require\")(this.workerSrc);\n return worker.WorkerMessageHandler;\n }\n await loadScript(this.workerSrc);\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n PDFWorker.getWorkerSrc = function () {\n deprecated(\n \"`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead.\"\n );\n return this.workerSrc;\n };\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n #docStats = null;\n\n #pageCache = new Map();\n\n #pagePromises = new Map();\n\n #metadataPromise = null;\n\n constructor(messageHandler, loadingTask, networkStream, params) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n docId: loadingTask.docId,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement,\n });\n this._params = params;\n\n if (!params.useWorkerFetch) {\n this.CMapReaderFactory = new params.CMapReaderFactory({\n baseUrl: params.cMapUrl,\n isCompressed: params.cMapPacked,\n });\n this.StandardFontDataFactory = new params.StandardFontDataFactory({\n baseUrl: params.standardFontDataUrl,\n });\n }\n\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = createPromiseCapability();\n\n this.setupMessageHandler();\n }\n\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n\n get stats() {\n return this.#docStats;\n }\n\n getRenderingIntent(\n intent,\n annotationMode = AnnotationMode.ENABLE,\n isOpList = false\n ) {\n let renderingIntent = RenderingIntentFlag.DISPLAY; // Default value.\n let lastModified = \"\";\n\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n\n lastModified = this.annotationStorage.lastModified;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${lastModified}`,\n };\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = createPromiseCapability();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(\n new Error(\"Worker was destroyed during onPassword callback\")\n );\n }\n\n const waitOn = [];\n // We need to wait for all renderings to be completed, e.g.\n // timeout/rAF can take a long time.\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n // Allow `AnnotationStorage`-related clean-up when destroying the document.\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n // We also need to wait for the worker to finish its long running tasks.\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#metadataPromise = null;\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n\n if (this._networkStream) {\n this._networkStream.cancelAllRequests(\n new AbortException(\"Worker was terminated.\")\n );\n }\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n\n setupMessageHandler() {\n const { messageHandler, loadingTask } = this;\n\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetReader - no `IPDFStream` instance available.\"\n );\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total,\n };\n };\n sink.onPull = () => {\n this._fullReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n isArrayBuffer(value),\n \"GetReader - expected an ArrayBuffer.\"\n );\n // Enqueue data chunk into sink, and transfer it\n // to other side as `Transferable` object.\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = createPromiseCapability();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n // If stream or range are disabled, it's our only way to report\n // loading progress.\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total,\n });\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength,\n });\n }, headersCapability.reject);\n\n return headersCapability.promise;\n });\n\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetRangeReader - no `IPDFStream` instance available.\"\n );\n const rangeReader = this._networkStream.getRangeReader(\n data.begin,\n data.end\n );\n\n // When streaming is enabled, it's possible that the data requested here\n // has already been fetched via the `_fullRequestReader` implementation.\n // However, given that the PDF data is loaded asynchronously on the\n // main-thread and then sent via `postMessage` to the worker-thread,\n // it may not have been available during parsing (hence the attempt to\n // use range requests here).\n //\n // To avoid wasting time and resources here, we'll thus *not* dispatch\n // range requests if the data was already loaded but has not been sent to\n // the worker-thread yet (which will happen via the `_fullRequestReader`).\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = () => {\n rangeReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n isArrayBuffer(value),\n \"GetRangeReader - expected an ArrayBuffer.\"\n );\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n default:\n unreachable(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n\n messageHandler.on(\"PasswordRequest\", exception => {\n this._passwordCapability = createPromiseCapability();\n\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n this._passwordCapability.resolve({\n password,\n });\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this._passwordCapability.reject(ex);\n }\n } else {\n this._passwordCapability.reject(\n new PasswordException(exception.message, exception.code)\n );\n }\n return this._passwordCapability.promise;\n });\n\n messageHandler.on(\"DataLoaded\", data => {\n // For consistency: Ensure that progress is always reported when the\n // entire PDF file has been loaded, regardless of how it was fetched.\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length,\n });\n\n this.downloadInfoCapability.resolve(data);\n });\n\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n if (this.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n const params = this._params;\n\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n\n let fontRegistry = null;\n if (params.pdfBug && globalThis.FontInspector?.enabled) {\n fontRegistry = {\n registerFont(font, url) {\n globalThis.FontInspector.fontAdded(font, url);\n },\n };\n }\n const font = new FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n fontRegistry,\n });\n\n this.fontLoader\n .bind(font)\n .catch(reason => {\n return messageHandler.sendWithPromise(\"FontFallback\", { id });\n })\n .finally(() => {\n if (!params.fontExtraProperties && font.data) {\n // Immediately release the `font.data` property once the font\n // has been attached to the DOM, since it's no longer needed,\n // rather than waiting for a `PDFDocumentProxy.cleanup` call.\n // Since `font.data` could be very large, e.g. in some cases\n // multiple megabytes, this will help reduce memory usage.\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"FontPath\":\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n });\n\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n // Ignore any pending requests if the worker was terminated.\n return;\n }\n\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n\n // Heuristic that will allow us not to store large data.\n const MAX_IMAGE_SIZE_TO_STORE = 8000000;\n if (imageData?.data?.length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total,\n });\n });\n\n messageHandler.on(\"DocStats\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Ensure that a `PDFDocumentProxy.stats` call-site cannot accidentally\n // modify this internal data.\n this.#docStats = Object.freeze({\n streamTypes: Object.freeze(data.streamTypes),\n fontTypes: Object.freeze(data.fontTypes),\n });\n });\n\n messageHandler.on(\n \"UnsupportedFeature\",\n this._onUnsupportedFeature.bind(this)\n );\n\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.CMapReaderFactory) {\n return Promise.reject(\n new Error(\n \"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.CMapReaderFactory.fetch(data);\n });\n\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.StandardFontDataFactory) {\n return Promise.reject(\n new Error(\n \"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.StandardFontDataFactory.fetch(data);\n });\n }\n\n _onUnsupportedFeature({ featureId }) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this.loadingTask.onUnsupportedFeature?.(featureId);\n }\n\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n\n getPage(pageNumber) {\n if (\n !Number.isInteger(pageNumber) ||\n pageNumber <= 0 ||\n pageNumber > this._numPages\n ) {\n return Promise.reject(new Error(\"Invalid page request\"));\n }\n\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler\n .sendWithPromise(\"GetPage\", {\n pageIndex,\n })\n .then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n const page = new PDFPageProxy(\n pageIndex,\n pageInfo,\n this,\n this._params.ownerDocument,\n this._params.pdfBug\n );\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n getPageIndex(ref) {\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n ref,\n });\n }\n\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent,\n });\n }\n\n saveDocument() {\n return this.messageHandler\n .sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: this.annotationStorage.serializable,\n filename: this._fullReader?.filename ?? null,\n })\n .finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n\n getFieldObjects() {\n return (this._getFieldObjectsPromise ||=\n this.messageHandler.sendWithPromise(\"GetFieldObjects\", null));\n }\n\n hasJSActions() {\n return (this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise(\n \"HasJSActions\",\n null\n ));\n }\n\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id,\n });\n }\n\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n\n getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n\n getDocJSActions() {\n return this.messageHandler.sendWithPromise(\"GetDocJSActions\", null);\n }\n\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex,\n });\n }\n\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex,\n });\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n\n getOptionalContentConfig() {\n return this.messageHandler\n .sendWithPromise(\"GetOptionalContentConfig\", null)\n .then(results => {\n return new OptionalContentConfig(results);\n });\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n\n getMetadata() {\n return (this.#metadataPromise ||= this.messageHandler\n .sendWithPromise(\"GetMetadata\", null)\n .then(results => {\n return {\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null,\n };\n }));\n }\n\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n\n async startCleanup(keepLoadedFonts = false) {\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n if (this.destroyed) {\n return; // No need to manually clean-up when destruction has started.\n }\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(\n `startCleanup: Page ${page.pageNumber} is currently rendering.`\n );\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#metadataPromise = null;\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n }\n\n get loadingParams() {\n const params = this._params;\n return shadow(this, \"loadingParams\", {\n disableAutoFetch: params.disableAutoFetch,\n enableXfa: params.enableXfa,\n });\n }\n}\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n * @ignore\n */\nclass PDFObjects {\n constructor() {\n this._objs = Object.create(null);\n }\n\n /**\n * Ensures there is an object defined for `objId`.\n * @private\n */\n _ensureObj(objId) {\n if (this._objs[objId]) {\n return this._objs[objId];\n }\n return (this._objs[objId] = {\n capability: createPromiseCapability(),\n data: null,\n resolved: false,\n });\n }\n\n /**\n * If called *without* callback, this returns the data of `objId` but the\n * object needs to be resolved. If it isn't, this method throws.\n *\n * If called *with* a callback, the callback is called with the data of the\n * object once the object is resolved. That means, if you call this method\n * and the object is already resolved, the callback gets called right away.\n */\n get(objId, callback = null) {\n // If there is a callback, then the get can be async and the object is\n // not required to be resolved right now.\n if (callback) {\n this._ensureObj(objId).capability.promise.then(callback);\n return null;\n }\n // If there isn't a callback, the user expects to get the resolved data\n // directly.\n const obj = this._objs[objId];\n // If there isn't an object yet or the object isn't resolved, then the\n // data isn't ready yet!\n if (!obj || !obj.resolved) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n\n has(objId) {\n const obj = this._objs[objId];\n return obj?.resolved || false;\n }\n\n /**\n * Resolves the object `objId` with optional `data`.\n */\n resolve(objId, data) {\n const obj = this._ensureObj(objId);\n\n obj.resolved = true;\n obj.data = data;\n obj.capability.resolve(data);\n }\n\n clear() {\n this._objs = Object.create(null);\n }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n */\nclass RenderTask {\n constructor(internalRenderTask) {\n this._internalRenderTask = internalRenderTask;\n\n /**\n * Callback for incremental rendering -- a function that will be called\n * each time the rendering is paused. To continue rendering call the\n * function that is the first argument to the callback.\n * @type {function}\n */\n this.onContinue = null;\n }\n\n /**\n * Promise for rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._internalRenderTask.capability.promise;\n }\n\n /**\n * Cancels the rendering task. If the task is currently rendering it will\n * not be cancelled until graphics pauses with a timeout. The promise that\n * this object extends will be rejected when cancelled.\n */\n cancel() {\n this._internalRenderTask.cancel();\n }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass InternalRenderTask {\n static get canvasInUse() {\n return shadow(this, \"canvasInUse\", new WeakSet());\n }\n\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this._pdfBug = pdfBug;\n\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame =\n useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = createPromiseCapability();\n this.task = new RenderTask(this);\n // caching this-bound methods\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n get completed() {\n return this.capability.promise.catch(function () {\n // Ignoring errors, since we only want to know when rendering is\n // no longer pending.\n });\n }\n\n initializeGraphics({ transparency = false, optionalContentConfig }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.canvasInUse.has(this._canvas)) {\n throw new Error(\n \"Cannot use the same canvas during multiple render() operations. \" +\n \"Use different canvas or ensure previous operations were \" +\n \"cancelled or completed.\"\n );\n }\n InternalRenderTask.canvasInUse.add(this._canvas);\n }\n\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const { canvasContext, viewport, transform, imageLayer, background } =\n this.params;\n\n this.gfx = new CanvasGraphics(\n canvasContext,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n imageLayer,\n optionalContentConfig,\n this.annotationCanvasMap\n );\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background,\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n }\n\n cancel(error = null) {\n this.running = false;\n this.cancelled = true;\n if (this.gfx) {\n this.gfx.endDrawing();\n }\n if (this._canvas) {\n InternalRenderTask.canvasInUse.delete(this._canvas);\n }\n this.callback(\n error ||\n new RenderingCancelledException(\n `Rendering cancelled, page ${this._pageIndex + 1}`,\n \"canvas\"\n )\n );\n }\n\n operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n this._continue();\n }\n\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(\n this.operatorList,\n this.operatorListIdx,\n this._continueBound,\n this.stepper\n );\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n if (this._canvas) {\n InternalRenderTask.canvasInUse.delete(this._canvas);\n }\n this.callback();\n }\n }\n }\n}\n\n/** @type {string} */\nconst version =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n/** @type {string} */\nconst build =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n build,\n DefaultCanvasFactory,\n DefaultCMapReaderFactory,\n DefaultStandardFontDataFactory,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFDocumentLoadingTask,\n PDFDocumentProxy,\n PDFPageProxy,\n PDFWorker,\n RenderTask,\n setPDFNetworkStreamFactory,\n version,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n IsEvalSupportedCached,\n shadow,\n string32,\n unreachable,\n UNSUPPORTED_FEATURES,\n warn,\n} from \"../shared/util.js\";\n\nclass BaseFontLoader {\n constructor({\n docId,\n onUnsupportedFeature,\n ownerDocument = globalThis.document,\n // For testing only.\n styleElement = null,\n }) {\n if (this.constructor === BaseFontLoader) {\n unreachable(\"Cannot initialize BaseFontLoader.\");\n }\n this.docId = docId;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this._document = ownerDocument;\n\n this.nativeFontFaces = [];\n this.styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ? styleElement\n : null;\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n\n insertRule(rule) {\n let styleElement = this.styleElement;\n if (!styleElement) {\n styleElement = this.styleElement = this._document.createElement(\"style\");\n styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;\n this._document.documentElement\n .getElementsByTagName(\"head\")[0]\n .appendChild(styleElement);\n }\n const styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.length = 0;\n\n if (this.styleElement) {\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n async bind(font) {\n // Add the font to the DOM only once; skip if the font is already loaded.\n if (font.attached || font.missingFile) {\n return;\n }\n font.attached = true;\n\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n this._onUnsupportedFeature({\n featureId: UNSUPPORTED_FEATURES.errorFontLoadNative,\n });\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n\n // When font loading failed, fall back to the built-in font renderer.\n font.disableFontFace = true;\n throw ex;\n }\n }\n return; // The font was, asynchronously, loaded.\n }\n\n // !this.isFontLoadingAPISupported\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n\n if (this.isSyncFontLoadingSupported) {\n return; // The font was, synchronously, loaded.\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent([rule], [font], request);\n });\n // The font was, asynchronously, loaded.\n }\n }\n\n _queueLoadingCallback(callback) {\n unreachable(\"Abstract method `_queueLoadingCallback`.\");\n }\n\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n return shadow(\n this,\n \"isFontLoadingAPISupported\",\n hasFonts && !this.styleElement\n );\n }\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n\n // eslint-disable-next-line getter-return\n get isSyncFontLoadingSupported() {\n unreachable(\"Abstract method `isSyncFontLoadingSupported`.\");\n }\n\n // eslint-disable-next-line getter-return\n get _loadTestFont() {\n unreachable(\"Abstract method `_loadTestFont`.\");\n }\n\n _prepareFontLoadEvent(rules, fontsToLoad, request) {\n unreachable(\"Abstract method `_prepareFontLoadEvent`.\");\n }\n}\n\nlet FontLoader;\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n FontLoader = class MozcentralFontLoader extends BaseFontLoader {\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", true);\n }\n };\n} else {\n // PDFJSDev.test('CHROME || GENERIC')\n\n FontLoader = class GenericFontLoader extends BaseFontLoader {\n constructor(params) {\n super(params);\n this.loadingContext = {\n requests: [],\n nextRequestId: 0,\n };\n this.loadTestFontId = 0;\n }\n\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) {\n if (typeof navigator === \"undefined\") {\n // Node.js - we can pretend that sync font loading is supported.\n supported = true;\n } else {\n // User agent string sniffing is bad, but there is no reliable way to\n // tell if the font is fully loaded and ready to be used with canvas.\n const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(\n navigator.userAgent\n );\n if (m?.[1] >= 14) {\n supported = true;\n }\n // TODO - other browsers...\n }\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n // Sending all completed requests in order of how they were queued.\n while (context.requests.length > 0 && context.requests[0].done) {\n const otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const context = this.loadingContext;\n const request = {\n id: `pdfjs-font-loading-${context.nextRequestId++}`,\n done: false,\n complete: completeRequest,\n callback,\n };\n context.requests.push(request);\n return request;\n }\n\n get _loadTestFont() {\n const getLoadTestFont = function () {\n // This is a CFF font with 1 glyph for '.' that fills its entire width\n // and height.\n return atob(\n \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n );\n };\n return shadow(this, \"_loadTestFont\", getLoadTestFont());\n }\n\n _prepareFontLoadEvent(rules, fonts, request) {\n /** Hack begin */\n // There's currently no event when a font has finished downloading so the\n // following code is a dirty hack to 'guess' when a font is ready.\n // It's assumed fonts are loaded in order, so add a known test font after\n // the desired fonts and then test for the loading of that test font.\n\n function int32(data, offset) {\n return (\n (data.charCodeAt(offset) << 24) |\n (data.charCodeAt(offset + 1) << 16) |\n (data.charCodeAt(offset + 2) << 8) |\n (data.charCodeAt(offset + 3) & 0xff)\n );\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n\n // The temporary canvas is used to determine if fonts are loaded.\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n\n let called = 0;\n function isFontReady(name, callback) {\n called++;\n // With setTimeout clamping this gives the font ~100ms to load.\n if (called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n // Chromium seems to cache fonts based on a hash of the actual font data,\n // so the font must be modified for each load test else it will appear to\n // be loaded already.\n // TODO: This could maybe be made faster by avoiding the btoa of the full\n // font by splitting it in chunks before hand and padding the font id.\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n data = spliceString(\n data,\n COMMENT_OFFSET,\n loadTestFontId.length,\n loadTestFontId\n );\n // CFF checksum is important for IE, adjusting it\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n }\n if (i < loadTestFontId.length) {\n // align to 4 bytes boundary\n checksum =\n (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n\n const names = [];\n for (const font of fonts) {\n names.push(font.loadedName);\n }\n names.push(loadTestFontId);\n\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n\n for (const name of names) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.appendChild(span);\n }\n this._document.body.appendChild(div);\n\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n /** Hack end */\n }\n };\n} // End of PDFJSDev.test('CHROME || GENERIC')\n\nclass FontFaceObject {\n constructor(\n translatedData,\n {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n onUnsupportedFeature,\n fontRegistry = null,\n }\n ) {\n this.compiledGlyphs = Object.create(null);\n // importing translated data\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this.fontRegistry = fontRegistry;\n }\n\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight,\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(\n this.cssFontInfo.fontFamily,\n this.data,\n css\n );\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this);\n }\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = bytesToString(this.data);\n // Add the @font-face rule to the document.\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this, url);\n }\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n this._onUnsupportedFeature({\n featureId: UNSUPPORTED_FEATURES.errorFontGetPath,\n });\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n return (this.compiledGlyphs[character] = function (c, size) {\n // No-op function, to allow rendering to continue.\n });\n }\n\n // If we can, compile cmds into JS for MAXIMUM SPEED...\n if (this.isEvalSupported && IsEvalSupportedCached.value) {\n const jsBuf = [];\n for (const current of cmds) {\n const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n }\n // eslint-disable-next-line no-new-func\n return (this.compiledGlyphs[character] = new Function(\n \"c\",\n \"size\",\n jsBuf.join(\"\")\n ));\n }\n // ... but fall back on using Function.prototype.apply() if we're\n // blocked from using eval() for whatever reason (like CSP policies).\n return (this.compiledGlyphs[character] = function (c, size) {\n for (const current of cmds) {\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n c[current.cmd].apply(c, current.args);\n }\n });\n }\n}\n\nexport { FontFaceObject, FontLoader };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n} from \"./base_factory.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { unreachable } from \"../shared/util.js\";\n\nlet NodeCanvasFactory = class {\n constructor() {\n unreachable(\"Not implemented: NodeCanvasFactory\");\n }\n};\n\nlet NodeCMapReaderFactory = class {\n constructor() {\n unreachable(\"Not implemented: NodeCMapReaderFactory\");\n }\n};\n\nlet NodeStandardFontDataFactory = class {\n constructor() {\n unreachable(\"Not implemented: NodeStandardFontDataFactory\");\n }\n};\n\nif ((typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS) {\n const fetchData = function (url) {\n return new Promise((resolve, reject) => {\n const fs = __non_webpack_require__(\"fs\");\n fs.readFile(url, (error, data) => {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n resolve(new Uint8Array(data));\n });\n });\n };\n\n NodeCanvasFactory = class extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const Canvas = __non_webpack_require__(\"canvas\");\n return Canvas.createCanvas(width, height);\n }\n };\n\n NodeCMapReaderFactory = class extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n };\n\n NodeStandardFontDataFactory = class extends BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url);\n }\n };\n}\n\nexport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap } from \"../shared/util.js\";\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n constructor() {\n this._storage = new Map();\n this._timeStamp = Date.now();\n this._modified = false;\n\n // Callbacks to signal when the modification state is set or reset.\n // This is used by the viewer to only bind on `beforeunload` if forms\n // are actually edited to prevent doing so unconditionally since that\n // can have undesirable effects.\n this.onSetModified = null;\n this.onResetModified = null;\n }\n\n /**\n * Get the value for a given key if it exists, or return the default value.\n *\n * @public\n * @memberof AnnotationStorage\n * @param {string} key\n * @param {Object} defaultValue\n * @returns {Object}\n */\n getValue(key, defaultValue) {\n const value = this._storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n\n return Object.assign(defaultValue, value);\n }\n\n /**\n * Set the value for a given key\n *\n * @public\n * @memberof AnnotationStorage\n * @param {string} key\n * @param {Object} value\n */\n setValue(key, value) {\n const obj = this._storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this._storage.set(key, value);\n }\n if (modified) {\n this._timeStamp = Date.now();\n this._setModified();\n }\n }\n\n getAll() {\n return this._storage.size > 0 ? objectFromMap(this._storage) : null;\n }\n\n get size() {\n return this._storage.size;\n }\n\n /**\n * @private\n */\n _setModified() {\n if (!this._modified) {\n this._modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n\n resetModified() {\n if (this._modified) {\n this._modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n return this._storage.size > 0 ? this._storage : null;\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get lastModified() {\n return this._timeStamp.toString();\n }\n}\n\nexport { AnnotationStorage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n IsLittleEndianCached,\n isNum,\n OPS,\n shadow,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n getShadingPattern,\n PathType,\n TilingPattern,\n} from \"./pattern_helper.js\";\nimport { PixelsPerInch } from \"./display_utils.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n// Minimal font size that would be used during canvas fillText operations.\nconst MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\n\n// Defines the time the `executeOperatorList`-method is going to be executing\n// before it stops and shedules a continue of execution.\nconst EXECUTION_TIME = 15; // ms\n// Defines the number of steps before checking the execution time.\nconst EXECUTION_STEPS = 10;\n\nconst COMPILE_TYPE3_GLYPHS = true;\nconst MAX_SIZE_TO_COMPILE = 1000;\n\nconst FULL_CHUNK_HEIGHT = 16;\n\n// Because of https://bugs.chromium.org/p/chromium/issues/detail?id=1170396\n// some curves aren't rendered correctly.\n// Multiplying lineWidth by this factor should help to have \"correct\"\n// rendering with no artifacts.\n// Once the bug is fixed upstream, we can remove this constant and its use.\nconst LINEWIDTH_SCALE_FACTOR = 1.000001;\n\n/**\n * Overrides certain methods on a 2d ctx so that when they are called they\n * will also call the same method on the destCtx. The methods that are\n * overridden are all the transformation state modifiers, path creation, and\n * save/restore. We only forward these specific methods because they are the\n * only state modifiers that we cannot copy over when we switch contexts.\n *\n * To remove mirroring call `ctx._removeMirroring()`.\n *\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\n * the destCtx.\n * @param {Object} destCtx - The 2d canvas context that will receive the\n * forwarded calls.\n */\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\n\nfunction addContextCurrentTransform(ctx) {\n // If the context doesn't expose a `mozCurrentTransform`, add a JS based one.\n if (ctx.mozCurrentTransform) {\n return;\n }\n ctx._originalSave = ctx.save;\n ctx._originalRestore = ctx.restore;\n ctx._originalRotate = ctx.rotate;\n ctx._originalScale = ctx.scale;\n ctx._originalTranslate = ctx.translate;\n ctx._originalTransform = ctx.transform;\n ctx._originalSetTransform = ctx.setTransform;\n ctx._originalResetTransform = ctx.resetTransform;\n\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\n\n try {\n // The call to getOwnPropertyDescriptor throws an exception in Node.js:\n // \"TypeError: Method lineWidth called on incompatible receiver\n // #<CanvasRenderingContext2D>\".\n const desc = Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(ctx),\n \"lineWidth\"\n );\n\n ctx._setLineWidth = desc.set;\n ctx._getLineWidth = desc.get;\n\n Object.defineProperty(ctx, \"lineWidth\", {\n set: function setLineWidth(width) {\n this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR);\n },\n get: function getLineWidth() {\n return this._getLineWidth();\n },\n });\n } catch (_) {}\n\n Object.defineProperty(ctx, \"mozCurrentTransform\", {\n get: function getCurrentTransform() {\n return this._transformMatrix;\n },\n });\n\n Object.defineProperty(ctx, \"mozCurrentTransformInverse\", {\n get: function getCurrentTransformInverse() {\n // Calculation done using WolframAlpha:\n // http://www.wolframalpha.com/input/?\n // i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}}\n\n const [a, b, c, d, e, f] = this._transformMatrix;\n const ad_bc = a * d - b * c;\n const bc_ad = b * c - a * d;\n\n return [\n d / ad_bc,\n b / bc_ad,\n c / bc_ad,\n a / ad_bc,\n (d * e - c * f) / bc_ad,\n (b * e - a * f) / ad_bc,\n ];\n },\n });\n\n ctx.save = function ctxSave() {\n const old = this._transformMatrix;\n this._transformStack.push(old);\n this._transformMatrix = old.slice(0, 6);\n\n this._originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n const prev = this._transformStack.pop();\n if (prev) {\n this._transformMatrix = prev;\n this._originalRestore();\n }\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n const m = this._transformMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n\n this._originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n const m = this._transformMatrix;\n m[0] *= x;\n m[1] *= x;\n m[2] *= y;\n m[3] *= y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n const m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * a + m[2] * b,\n m[1] * a + m[3] * b,\n m[0] * c + m[2] * d,\n m[1] * c + m[3] * d,\n m[0] * e + m[2] * f + m[4],\n m[1] * e + m[3] * f + m[5],\n ];\n\n ctx._originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n this._transformMatrix = [a, b, c, d, e, f];\n\n ctx._originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n this._transformMatrix = [1, 0, 0, 1, 0, 0];\n\n ctx._originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n const cosValue = Math.cos(angle);\n const sinValue = Math.sin(angle);\n\n const m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * cosValue + m[2] * sinValue,\n m[1] * cosValue + m[3] * sinValue,\n m[0] * -sinValue + m[2] * cosValue,\n m[1] * -sinValue + m[3] * cosValue,\n m[4],\n m[5],\n ];\n\n this._originalRotate(angle);\n };\n}\n\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n\n getCanvas(id, width, height, trackTransform) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n // reset canvas transform for emulated mozCurrentTransform, if needed\n canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n if (trackTransform) {\n addContextCurrentTransform(canvasEntry.context);\n }\n return canvasEntry;\n }\n\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\n\nfunction compileType3Glyph(imgData) {\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([\n 0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0,\n ]);\n\n const width = imgData.width,\n height = imgData.height,\n width1 = width + 1;\n let i, ii, j, j0;\n const points = new Uint8Array(width1 * (height + 1));\n\n // decodes bit-packed mask data\n const lineSize = (width + 7) & ~7,\n data0 = imgData.data;\n const data = new Uint8Array(lineSize * height);\n let pos = 0;\n for (i = 0, ii = data0.length; i < ii; i++) {\n const elem = data0[i];\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n // finding interesting points: every point is located between mask pixels,\n // so there will be points of the (width + 1)x(height + 1) grid. Every point\n // will have flags assigned based on neighboring mask pixels:\n // 4 | 8\n // --P--\n // 2 | 1\n // We are interested only in points with the flags:\n // - outside corners: 1, 2, 4, 8;\n // - inside corners: 7, 11, 13, 14;\n // - and, intersections: 5, 10.\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n // 'sum' is the position of the current pixel configuration in the 'TYPES'\n // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum =\n (sum >> 2) +\n (data[pos + 1] ? 4 : 0) +\n (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n // building outlines\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const outlines = [];\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n const coords = [p % width1, i];\n\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n // set new direction\n type = pp;\n // delete mark\n points[p] = 0;\n } else {\n // type is 5 or 10, ie, a crossing\n // set new direction\n type = pp & ((0x33 * type) >> 4);\n // set new type for \"future hit\"\n points[p] &= (type >> 2) | (type << 2);\n }\n\n coords.push(p % width1, (p / width1) | 0);\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n outlines.push(coords);\n --i;\n }\n\n const drawOutline = function (c) {\n c.save();\n // the path shall be painted in [0..1]x[0..1] space\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.beginPath();\n for (let k = 0, kk = outlines.length; k < kk; k++) {\n const o = outlines[k];\n c.moveTo(o[0], o[1]);\n for (let l = 2, ll = o.length; l < ll; l += 2) {\n c.lineTo(o[l], o[l + 1]);\n }\n }\n c.fill();\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nclass CanvasExtraState {\n constructor(width, height) {\n // Are soft masks and alpha values shapes or opacities?\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n // Default fore and background colors\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n // Note: fill alpha applies to all non-stroking operations\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = null;\n\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n this.updatePathMinMax(transform, box[0], box[1]);\n this.updatePathMinMax(transform, box[2], box[3]);\n }\n\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n // Stroked paths can be outside of the path bounding box by 1/2 the line\n // width.\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = (scale[0] * this.lineWidth) / 2;\n const yStrokePad = (scale[1] * this.lineWidth) / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(\n this.clipBox,\n this.getPathBoundingBox(pathType, transform)\n );\n }\n}\n\nfunction putBinaryImageData(ctx, imgData, transferMaps = null) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n // Put the image data to the canvas in chunks, rather than putting the\n // whole image at once. This saves JS memory, because the ImageData object\n // is smaller. It also possibly saves C++ memory within the implementation\n // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n // the data passed to putImageData()). |n| shouldn't be too small, however,\n // because too many putImageData() calls will slow things down.\n //\n // Note: as written, if the last chunk is partial, the putImageData() call\n // will (conceptually) put pixels past the bounds of the canvas. But\n // that's ok; any such pixels are ignored.\n\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n\n let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;\n if (transferMaps) {\n switch (transferMaps.length) {\n case 1:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[0];\n transferMapBlue = transferMaps[0];\n transferMapGray = transferMaps[0];\n break;\n case 4:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[1];\n transferMapBlue = transferMaps[2];\n transferMapGray = transferMaps[3];\n break;\n }\n }\n\n // There are multiple forms in which the pixel data can be passed, and\n // imgData.kind tells us which one this is.\n if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n // Grayscale, 1 bit per pixel (i.e. black-and-white).\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = (width + 7) >> 3;\n let white = 0xffffffff;\n let black = IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;\n\n if (transferMapGray) {\n if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {\n [white, black] = [black, white];\n }\n }\n\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n // We ran out of input. Make all remaining pixels transparent.\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n // RGBA, 32-bits per pixel.\n const hasTransferMaps = !!(\n transferMapRed ||\n transferMapGreen ||\n transferMapBlue\n );\n\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === ImageKind.RGB_24BPP) {\n // RGB, 24-bits per pixel.\n const hasTransferMaps = !!(\n transferMapRed ||\n transferMapGreen ||\n transferMapBlue\n );\n\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n for (j = elemsInThisChunk; j--; ) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n\n if (hasTransferMaps) {\n for (let k = 0; k < destPos; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight =\n i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n // Expand the mask so it can be used by the canvas. Any required\n // inversion has already been handled.\n let destPos = 3; // alpha component offset\n for (let j = 0; j < thisChunkHeight; j++) {\n let elem,\n mask = 0;\n for (let k = 0; k < width; k++) {\n if (!mask) {\n elem = src[srcPos++];\n mask = 128;\n }\n dest[destPos] = elem & mask ? 0 : 255;\n destPos += 4;\n mask >>= 1;\n }\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\n \"strokeStyle\",\n \"fillStyle\",\n \"fillRule\",\n \"globalAlpha\",\n \"lineWidth\",\n \"lineCap\",\n \"lineJoin\",\n \"miterLimit\",\n \"globalCompositeOperation\",\n \"font\",\n ];\n for (let i = 0, ii = properties.length; i < ii; i++) {\n const property = properties[i];\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\n\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = \"#000000\";\n ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n const length = bytes.length;\n for (let i = 3; i < length; i += 4) {\n const alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n const alpha_ = 255 - alpha;\n bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n }\n }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n const length = maskData.length;\n const scale = 1 / 255;\n for (let i = 3; i < length; i += 4) {\n const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = (layerData[i] * alpha * scale) | 0;\n }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n const length = maskData.length;\n for (let i = 3; i < length; i += 4) {\n const y =\n maskData[i - 3] * 77 + // * 0.3 / 255 * 0x10000\n maskData[i - 2] * 152 + // * 0.59 ....\n maskData[i - 1] * 28; // * 0.11 ....\n layerData[i] = transferMap\n ? (layerData[i] * transferMap[y >> 8]) >> 8\n : (layerData[i] * y) >> 16;\n }\n}\n\nfunction genericComposeSMask(\n maskCtx,\n layerCtx,\n width,\n height,\n subtype,\n backdrop,\n transferMap,\n layerOffsetX,\n layerOffsetY,\n maskOffsetX,\n maskOffsetY\n) {\n const hasBackdrop = !!backdrop;\n const r0 = hasBackdrop ? backdrop[0] : 0;\n const g0 = hasBackdrop ? backdrop[1] : 0;\n const b0 = hasBackdrop ? backdrop[2] : 0;\n\n let composeFn;\n if (subtype === \"Luminosity\") {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n // processing image in chunks to save memory\n const PIXELS_TO_PROCESS = 1048576;\n const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (let row = 0; row < height; row += chunkSize) {\n const chunkHeight = Math.min(chunkSize, height - row);\n const maskData = maskCtx.getImageData(\n layerOffsetX - maskOffsetX,\n row + (layerOffsetY - maskOffsetY),\n width,\n chunkHeight\n );\n const layerData = layerCtx.getImageData(\n layerOffsetX,\n row + layerOffsetY,\n width,\n chunkHeight\n );\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\n\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n genericComposeSMask(\n smask.context,\n layerCtx,\n layerWidth,\n layerHeight,\n smask.subtype,\n smask.backdrop,\n smask.transferMap,\n layerOffsetX,\n layerOffsetY,\n smask.offsetX,\n smask.offsetY\n );\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n}\n\nfunction getImageSmoothingEnabled(transform, interpolate) {\n const scale = Util.singularValueDecompose2dScale(transform);\n // Round to a 32bit float so that `<=` check below will pass for numbers that\n // are very close, but not exactly the same 64bit floats.\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround(\n (globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n if (interpolate !== undefined) {\n // If the value is explicitly set use it.\n return interpolate;\n } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n // Smooth when downscaling.\n return true;\n }\n // Don't smooth when upscaling.\n return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n constructor(\n canvasCtx,\n commonObjs,\n objs,\n canvasFactory,\n imageLayer,\n optionalContentConfig,\n annotationCanvasMap\n ) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\n // Patterns are painted relative to the initial page/form transform, see\n // PDF spec 8.7.2 NOTE 1.\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n if (canvasCtx) {\n // NOTE: if mozCurrentTransform is polyfilled, then the current state of\n // the transformation must already be set in canvasCtx._transformMatrix.\n addContextCurrentTransform(canvasCtx);\n }\n this._cachedGetSinglePixelWidth = null;\n }\n\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null,\n }) {\n // For pdfs that use blend modes we have to clear the canvas else certain\n // blend modes can look wrong since we'd be blending with a white\n // backdrop. The problem with a transparent backdrop though is we then\n // don't get sub pixel anti aliasing on text, creating temporary\n // transparent canvas when we have blend modes.\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n\n this.ctx.save();\n this.ctx.fillStyle = background || \"rgb(255, 255, 255)\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\n \"transparent\",\n width,\n height,\n true\n );\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n // The transform can be applied before rendering, transferring it to\n // the new canvas.\n this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform.apply(this.ctx, transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform.apply(this.ctx, viewport.transform);\n this.viewportScale = viewport.scale;\n\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n this._combinedScaleFactor = Math.hypot(\n this.baseTransform[0],\n this.baseTransform[2]\n );\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n }\n\n executeOperatorList(\n operatorList,\n executionStartIdx,\n continueCallback,\n stepper\n ) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n\n // Sometimes the OperatorList to execute is empty.\n if (argsArrayLen === i) {\n return i;\n }\n\n const chunkOperations =\n argsArrayLen - i > EXECUTION_STEPS &&\n typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n // If the promise isn't resolved yet, add the continueCallback\n // to the promise and bail out.\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n // If the entire operatorList was executed, stop as were done.\n if (i === argsArrayLen) {\n return i;\n }\n\n // If the execution took longer then a certain amount of time and\n // `continueCallback` is specified, interrupt the execution.\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n\n // If the operatorList isn't executed completely yet OR the execution\n // time was short enough, do another execution round.\n }\n }\n\n endDrawing() {\n // Finishing all opened operations such as SMask group painting.\n while (this.stateStack.length || this.current.activeSMask !== null) {\n this.restore();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n }\n\n _scaleImage(img, inverseTransform) {\n // Vertical or horizontal scaling shall not be more than 2 to not lose the\n // pixels during drawImage operation, painting on the temporary canvas(es)\n // that are twice smaller in size.\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(\n Math.hypot(inverseTransform[0], inverseTransform[1]),\n 1\n );\n let heightScale = Math.max(\n Math.hypot(inverseTransform[2], inverseTransform[3]),\n 1\n );\n\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (\n (widthScale > 2 && paintWidth > 1) ||\n (heightScale > 2 && paintHeight > 1)\n ) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(\n tmpCanvasId,\n newWidth,\n newHeight\n );\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(\n img,\n 0,\n 0,\n paintWidth,\n paintHeight,\n 0,\n 0,\n newWidth,\n newHeight\n );\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight,\n };\n }\n\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const width = img.width,\n height = img.height;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n const maskCtx = maskCanvas.context;\n putBinaryImageMask(maskCtx, img);\n\n // Create the mask canvas at the size it will be drawn at and also set\n // its transform to match the current transform so if there are any\n // patterns applied they will be applied relative to the correct\n // transform.\n const objToCanvas = ctx.mozCurrentTransform;\n let maskToCanvas = Util.transform(objToCanvas, [\n 1 / width,\n 0,\n 0,\n -1 / height,\n 0,\n 0,\n ]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const cord1 = Util.applyTransform([0, 0], maskToCanvas);\n const cord2 = Util.applyTransform([width, height], maskToCanvas);\n const rect = Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);\n const drawnWidth = Math.ceil(rect[2] - rect[0]);\n const drawnHeight = Math.ceil(rect[3] - rect[1]);\n const fillCanvas = this.cachedCanvases.getCanvas(\n \"fillCanvas\",\n drawnWidth,\n drawnHeight,\n true\n );\n const fillCtx = fillCanvas.context;\n // The offset will be the top-left cordinate mask.\n const offsetX = Math.min(cord1[0], cord2[0]);\n const offsetY = Math.min(cord1[1], cord2[1]);\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform.apply(fillCtx, maskToCanvas);\n // Pre-scale if needed to improve image smoothing.\n const scaled = this._scaleImage(\n maskCanvas.canvas,\n fillCtx.mozCurrentTransformInverse\n );\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n fillCtx.mozCurrentTransform,\n img.interpolate\n );\n fillCtx.drawImage(\n scaled.img,\n 0,\n 0,\n scaled.img.width,\n scaled.img.height,\n 0,\n 0,\n width,\n height\n );\n fillCtx.globalCompositeOperation = \"source-in\";\n\n const inverse = Util.transform(fillCtx.mozCurrentTransformInverse, [\n 1,\n 0,\n 0,\n 1,\n -offsetX,\n -offsetY,\n ]);\n fillCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(ctx, this, inverse, PathType.FILL)\n : fillColor;\n\n fillCtx.fillRect(0, 0, width, height);\n\n // Round the offsets to avoid drawing fractional pixels.\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY),\n };\n }\n\n // Graphics state\n setLineWidth(width) {\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setGState(states) {\n for (let i = 0, ii = states.length; i < ii; i++) {\n const state = states[i];\n const key = state[0];\n const value = state[1];\n\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = state[1];\n break;\n case \"ca\":\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.current.transferMaps = value;\n }\n }\n }\n\n checkSMaskState() {\n const inSMaskMode = !!this.suspendedCtx;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n // Else, the state is okay and nothing needs to be done.\n }\n\n /**\n * Soft mask mode takes the current main drawing canvas and replaces it with\n * a temporary canvas. Any drawing operations that happen on the temporary\n * canvas need to be composed with the main canvas that was suspended (see\n * `compose()`). The temporary canvas also duplicates many of its operations\n * on the suspended canvas to keep them in sync, so that when the soft mask\n * mode ends any clipping paths or transformations will still be active and in\n * the right order on the canvas' graphics state stack.\n */\n beginSMaskMode() {\n if (this.suspendedCtx) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight,\n true\n );\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform.apply(ctx, this.suspendedCtx.mozCurrentTransform);\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n }\n\n endSMaskMode() {\n if (!this.suspendedCtx) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n // The soft mask is done, now restore the suspended canvas as the main\n // drawing canvas.\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n\n this.current.activeSMask = null;\n this.suspendedCtx = null;\n }\n\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n\n composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n // Whatever was drawn has been moved to the suspended canvas, now clear it\n // out of the current canvas.\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n\n save() {\n this.ctx.save();\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n if (this.stateStack.length === 0 && this.current.activeSMask) {\n this.endSMaskMode();\n }\n\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n this.ctx.restore();\n this.checkSMaskState();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this._cachedGetSinglePixelWidth = null;\n }\n }\n\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n\n this._cachedGetSinglePixelWidth = null;\n }\n\n // Path\n constructPath(ops, args) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, xw, yh);\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y\n );\n current.updateCurvePathMinMax(\n ctx.mozCurrentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y\n );\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3]\n );\n current.updateCurvePathMinMax(\n ctx.mozCurrentTransform,\n startX,\n startY,\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3]\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(\n ctx.mozCurrentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n x,\n y,\n x,\n y\n );\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n current.setCurrentPoint(x, y);\n }\n\n closePath() {\n this.ctx.closePath();\n }\n\n stroke(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n // For stroke we want to temporarily change the global alpha to the\n // stroking alpha.\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n const lineWidth = this.getSinglePixelWidth();\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.STROKE\n );\n // Prevent drawing too thin lines by enforcing a minimum line width.\n ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);\n ctx.stroke();\n ctx.restore();\n } else {\n const lineWidth = this.getSinglePixelWidth();\n if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) {\n // The current transform will transform a square pixel into a\n // parallelogram where both heights are lower than 1 and not equal.\n ctx.save();\n ctx.resetTransform();\n ctx.lineWidth = Math.round(this._combinedScaleFactor);\n ctx.stroke();\n ctx.restore();\n } else {\n // Prevent drawing too thin lines by enforcing a minimum line width.\n ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);\n ctx.stroke();\n }\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n // Restore the global alpha to the fill alpha\n ctx.globalAlpha = this.current.fillAlpha;\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n fill(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n );\n needRestore = true;\n }\n\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n\n this.consumePath();\n }\n\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n\n endPath() {\n this.consumePath();\n }\n\n // Clipping\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n\n // Text\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n ctx.setTransform.apply(ctx, path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n // A valid matrix needs all main diagonal elements to be non-zero\n // This also ensures we bypass FF bugzilla bug #719844.\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n\n // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n // and in some docs this can be negative (inverted x-y axes).\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return; // we don't need ctx.font for Type3 fonts\n }\n\n const name = fontObj.loadedName || \"sans-serif\";\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n const typeface = `\"${name}\", ${fontObj.fallbackName}`;\n\n // Some font backends cannot handle fonts below certain size.\n // Keeping the font at minimal size and using the fontSizeScale to change\n // the current transformation matrix before the fillText/strokeText.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n paintChar(character, x, y, patternTransform, resetLineWidthToOne) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode =\n textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(\n textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n const patternFill = current.patternFill && !font.missingFile;\n\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform.apply(ctx, patternTransform);\n }\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fill();\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (resetLineWidthToOne) {\n ctx.resetTransform();\n ctx.lineWidth = Math.round(this._combinedScaleFactor);\n }\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fillText(character, x, y);\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (resetLineWidthToOne) {\n ctx.save();\n ctx.moveTo(x, y);\n ctx.resetTransform();\n ctx.lineWidth = Math.round(this._combinedScaleFactor);\n ctx.strokeText(character, 0, 0);\n ctx.restore();\n } else {\n ctx.strokeText(character, x, y);\n }\n }\n }\n\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: ctx.mozCurrentTransform,\n x,\n y,\n fontSize,\n addToPath,\n });\n }\n }\n\n get isFontSubpixelAAEnabled() {\n // Checks if anti-aliasing is enabled when scaled text is painted.\n // On Windows GDI scaled fonts looks bad.\n const { context: ctx } = this.cachedCanvases.getCanvas(\n \"isFontSubpixelAAEnabled\",\n 10,\n 10\n );\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n const simpleFillText =\n current.textRenderingMode === TextRenderingMode.FILL &&\n !font.disableFontFace &&\n !current.patternFill;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n );\n patternTransform = ctx.mozCurrentTransform;\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n let lineWidth = current.lineWidth;\n let resetLineWidthToOne = false;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n this._cachedGetSinglePixelWidth = null;\n lineWidth = this.getSinglePixelWidth();\n resetLineWidthToOne = lineWidth < 0;\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (isNum(glyph)) {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx =\n -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n // Some standard fonts may not have the exact width: rescale per\n // character if measured width is greater than expected glyph width\n // and subpixel-aa is enabled, otherwise just center the glyph.\n const measuredWidth =\n ((ctx.measureText(character).width * 1000) / fontSize) *\n fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX +=\n (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n }\n }\n\n // Only attempt to draw the glyph if it is actually in the embedded font\n // file or if there isn't a font file so the fallback font is shown.\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n // common case\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(\n character,\n scaledX,\n scaledY,\n patternTransform,\n resetLineWidthToOne\n );\n if (accent) {\n const scaledAccentX =\n scaledX + (fontSize * accent.offset.x) / fontSizeScale;\n const scaledAccentY =\n scaledY - (fontSize * accent.offset.y) / fontSizeScale;\n this.paintChar(\n accent.fontChar,\n scaledAccentX,\n scaledAccentY,\n patternTransform,\n resetLineWidthToOne\n );\n }\n }\n }\n\n let charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n\n showType3Text(glyphs) {\n // Type3 fonts - each glyph is a \"mini-PDF\"\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible =\n current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedGetSinglePixelWidth = null;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y);\n\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (isNum(glyph)) {\n spacingLength = (spacingDir * glyph * fontSize) / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform.apply(ctx, fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n\n // Type3 fonts\n setCharWidth(xWidth, yWidth) {\n // We can safely ignore this since the width should be the same\n // as the width in the Widths array.\n }\n\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n // TODO According to the spec we're also suppose to ignore any operators\n // that set color or include images while processing this type3 font.\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.clip();\n this.endPath();\n }\n\n // Color\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform =\n this.baseTransform || this.ctx.mozCurrentTransform.slice();\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => {\n return new CanvasGraphics(\n ctx,\n this.commonObjs,\n this.objs,\n this.canvasFactory\n );\n },\n };\n pattern = new TilingPattern(\n IR,\n color,\n this.ctx,\n canvasGraphicsFactory,\n baseTransform\n );\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n\n setStrokeRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n\n setFillRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\n\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.objs.get(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.SHADING\n );\n\n const inv = ctx.mozCurrentTransformInverse;\n if (inv) {\n const canvas = ctx.canvas;\n const width = canvas.width;\n const height = canvas.height;\n\n const bl = Util.applyTransform([0, 0], inv);\n const br = Util.applyTransform([0, height], inv);\n const ul = Util.applyTransform([width, 0], inv);\n const ur = Util.applyTransform([width, height], inv);\n\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n // HACK to draw the gradient onto an infinite rectangle.\n // PDF gradients are drawn across the entire image while\n // Canvas only allows gradients to be drawn in a rectangle\n // The following bug should allow us to remove this.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n\n // Images\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updatePathMinMax(\n this.ctx.mozCurrentTransform,\n bbox[0],\n bbox[1]\n );\n this.current.updatePathMinMax(\n this.ctx.mozCurrentTransform,\n bbox[2],\n bbox[3]\n );\n this.clip();\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n // If there's an active soft mask we don't want it enabled for the group, so\n // clear it out. The mask and suspended canvas will be restored in endGroup.\n const suspendedCtx = this.suspendedCtx;\n if (this.current.activeSMask) {\n this.suspendedCtx = null;\n this.current.activeSMask = null;\n }\n\n const currentCtx = this.ctx;\n // TODO non-isolated groups - according to Rik at adobe non-isolated\n // group results aren't usually that different and they even have tools\n // that ignore this setting. Notes from Rik on implementing:\n // - When you encounter an transparency group, create a new canvas with\n // the dimensions of the bbox\n // - copy the content from the previous canvas to the new canvas\n // - draw as usual\n // - remove the backdrop alpha:\n // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n // value of your transparency group and 'alphaBackdrop' the alpha of the\n // backdrop\n // - remove background color:\n // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n\n // TODO knockout - supposedly possible with the clever use of compositing\n // modes.\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n\n const currentTransform = currentCtx.mozCurrentTransform;\n if (group.matrix) {\n currentCtx.transform.apply(currentCtx, group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n\n // Based on the current transform figure out how big the bounding box\n // will actually be.\n let bounds = Util.getAxialAlignedBoundingBox(\n group.bbox,\n currentCtx.mozCurrentTransform\n );\n // Clip the bounding box to the current canvas.\n const canvasBounds = [\n 0,\n 0,\n currentCtx.canvas.width,\n currentCtx.canvas.height,\n ];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n // Use ceil in case we're between sizes so we don't create canvas that is\n // too small and make the canvas at least 1x1 pixels.\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n let scaleX = 1,\n scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n // Using two cache entries is case if masks are used one after another.\n cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight,\n true\n );\n const groupCtx = scratchCanvas.context;\n\n // Since we created a new canvas that is just the size of the bounding box\n // we have to translate the group ctx.\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n if (group.smask) {\n // Saving state and cached mask to be used in setGState.\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null, // used during suspend operation\n });\n } else {\n // Setup the current ctx so when the group is popped we draw it at the\n // right location.\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\n // The transparency group inherits all off the current graphics state\n // except the blend mode, soft mask, and alpha constants.\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n this.groupStack.push({\n ctx: currentCtx,\n suspendedCtx,\n });\n this.groupLevel++;\n }\n\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const { ctx, suspendedCtx } = this.groupStack.pop();\n this.ctx = ctx;\n // Turn off image smoothing to avoid sub pixel interpolation which can\n // look kind of blurry for some pdfs.\n this.ctx.imageSmoothingEnabled = false;\n\n if (suspendedCtx) {\n this.suspendedCtx = suspendedCtx;\n }\n\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = this.ctx.mozCurrentTransform;\n this.restore();\n this.ctx.save();\n this.ctx.setTransform.apply(this.ctx, currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox(\n [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\n currentMtx\n );\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n\n beginAnnotations() {\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n }\n\n endAnnotations() {\n this.restore();\n }\n\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.save();\n\n if (Array.isArray(rect) && rect.length === 4) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(\n this.ctx.mozCurrentTransform\n );\n const { viewportScale } = this;\n const canvasWidth = Math.ceil(\n width * this.outputScaleX * viewportScale\n );\n const canvasHeight = Math.ceil(\n height * this.outputScaleY * viewportScale\n );\n\n this.annotationCanvas = this.canvasFactory.create(\n canvasWidth,\n canvasHeight\n );\n const { canvas, context } = this.annotationCanvas;\n canvas.style.width = `calc(${width}px * var(--viewport-scale-factor))`;\n canvas.style.height = `calc(${height}px * var(--viewport-scale-factor))`;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n addContextCurrentTransform(this.ctx);\n\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n\n this.ctx.rect(rect[0], rect[1], width, height);\n this.clip();\n this.endPath();\n }\n }\n\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n }\n\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n this.restore();\n }\n\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const width = img.width,\n height = img.height;\n\n const glyph = this.processingType3;\n\n if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n glyph.compiled = compileType3Glyph({ data: img.data, width, height });\n } else {\n glyph.compiled = null;\n }\n }\n\n if (glyph?.compiled) {\n glyph.compiled(ctx);\n return;\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n\n ctx.save();\n // The mask is drawn with the transform applied. Reset the current\n // transform to draw to the identity.\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectRepeat(\n imgData,\n scaleX,\n skewX = 0,\n skewY = 0,\n scaleY,\n positions\n ) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = ctx.mozCurrentTransform;\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(imgData);\n\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [\n scaleX,\n skewX,\n skewY,\n scaleY,\n positions[i],\n positions[i + 1],\n ]);\n\n const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (let i = 0, ii = images.length; i < ii; i++) {\n const image = images[i];\n const width = image.width,\n height = image.height;\n\n const maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, image);\n\n maskCtx.globalCompositeOperation = \"source-in\";\n\n maskCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(\n maskCtx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n )\n : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n ctx.save();\n ctx.transform.apply(ctx, image.transform);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = objId.startsWith(\"g_\")\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = objId.startsWith(\"g_\")\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height,\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n\n this.save();\n // scale the image to the unit square\n ctx.scale(1 / width, -1 / height);\n\n let imgToPaint;\n // typeof check is needed due to node.js support, see issue #8489\n if (\n (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n !imgData.data\n ) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\n \"inlineImage\",\n width,\n height\n );\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n imgToPaint = tmpCanvas.canvas;\n }\n\n const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse);\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\n ctx.mozCurrentTransform,\n imgData.interpolate\n );\n ctx.drawImage(\n scaled.img,\n 0,\n 0,\n scaled.paintWidth,\n scaled.paintHeight,\n 0,\n -height,\n width,\n height\n );\n\n if (this.imageLayer) {\n const position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: width / ctx.mozCurrentTransformInverse[0],\n height: height / ctx.mozCurrentTransformInverse[3],\n });\n }\n this.compose();\n this.restore();\n }\n\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const w = imgData.width;\n const h = imgData.height;\n\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n\n for (let i = 0, ii = map.length; i < ii; i++) {\n const entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n ctx.drawImage(\n tmpCanvas.canvas,\n entry.x,\n entry.y,\n entry.w,\n entry.h,\n 0,\n -1,\n 1,\n 1\n );\n if (this.imageLayer) {\n const position = this.getCanvasPosition(entry.x, entry.y);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: w,\n height: h,\n });\n }\n ctx.restore();\n }\n this.compose();\n }\n\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n\n // Marked content\n\n markPoint(tag) {\n // TODO Marked content.\n }\n\n markPointProps(tag, properties) {\n // TODO Marked content.\n }\n\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true,\n });\n }\n\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties),\n });\n } else {\n this.markedContentStack.push({\n visible: true,\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n\n // Compatibility\n\n beginCompat() {\n // TODO ignore undefined operators (should we do that anyway?)\n }\n\n endCompat() {\n // TODO stop ignoring undefined operators\n }\n\n // Helper functions\n\n consumePath(clipBox) {\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n\n getSinglePixelWidth() {\n if (this._cachedGetSinglePixelWidth === null) {\n // If transform is [a b] then a pixel (square) is transformed\n // [c d]\n // into a parallelogram: its area is the abs value of the determinant.\n // This parallelogram has 2 heights:\n // - Area / |col_1|;\n // - Area / |col_2|.\n // so in order to get a height of at least 1, pixel height\n // must be computed as followed:\n // h = max(sqrt(a² + c²) / |det(M)|, sqrt(b² + d²) / |det(M)|).\n // This is equivalent to:\n // h = max(|line_1_inv(M)|, |line_2_inv(M)|)\n const m = this.ctx.mozCurrentTransform;\n\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const sqNorm1 = m[0] ** 2 + m[2] ** 2;\n const sqNorm2 = m[1] ** 2 + m[3] ** 2;\n const pixelHeight = Math.sqrt(Math.max(sqNorm1, sqNorm2)) / absDet;\n if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) {\n // The parallelogram isn't a square and at least one height\n // is lower than 1 so the resulting line width must be 1\n // but it cannot be achieved with one scale: when scaling a pixel\n // we'll get a rectangle (see issue #12295).\n // For example with matrix [0.001 0, 0, 100], a pixel is transformed\n // in a rectangle 0.001x100. If we just scale by 1000 (to have a 1)\n // then we'll get a rectangle 1x1e5 which is wrong.\n // In this case, we must reset the transform, set linewidth to 1\n // and then stroke.\n this._cachedGetSinglePixelWidth = -(\n this._combinedScaleFactor * pixelHeight\n );\n } else if (absDet > Number.EPSILON) {\n this._cachedGetSinglePixelWidth = pixelHeight;\n } else {\n // Matrix is non-invertible.\n this._cachedGetSinglePixelWidth = 1;\n }\n }\n\n return this._cachedGetSinglePixelWidth;\n }\n\n getCanvasPosition(x, y) {\n const transform = this.ctx.mozCurrentTransform;\n return [\n transform[0] * x + transform[2] * y + transform[4],\n transform[1] * x + transform[3] * y + transform[5],\n ];\n }\n\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\n\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\nexport { CanvasGraphics };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FormatError,\n info,\n shadow,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\",\n};\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox || typeof Path2D === \"undefined\") {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\n\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n unreachable(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\n\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(\n this._p0[0],\n this._p0[1],\n this._p1[0],\n this._p1[1]\n );\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(\n this._p0[0],\n this._p0[1],\n this._r0,\n this._p1[0],\n this._p1[1],\n this._r1\n );\n }\n\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(\n pathType,\n ctx.mozCurrentTransform\n ) || [0, 0, 0, 0];\n // Create a canvas that is only as big as the current path. This doesn't\n // allow us to cache the pattern, but it generally creates much smaller\n // canvases and saves memory use. See bug 1722807 for an example.\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n width,\n height,\n true\n );\n\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n // Non shading fill patterns are positioned relative to the base transform\n // (usually the page's initial transform), but we may have created a\n // smaller canvas based on the path, so we must account for the shift.\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [\n 1,\n 0,\n 0,\n 1,\n ownerBBox[0],\n ownerBBox[1],\n ]);\n\n tmpCtx.transform.apply(tmpCtx, owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform.apply(tmpCtx, this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n // Avoid rendering breaking completely in Firefox 78 ESR,\n // and in Node.js (see issue 13724).\n warn(`RadialAxialShadingPattern.getPattern: \"${ex?.message}\".`);\n }\n } else {\n // Shading fills are applied relative to the current matrix which is also\n // how canvas gradients work, so there's no need to do anything special\n // here.\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n // Very basic Gouraud-shaded triangle rasterization algorithm.\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n let k;\n if (y < y1) {\n k = 0;\n } else {\n k = (y1 - y) / (y1 - y2);\n }\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = (car - (car - cbr) * k) | 0;\n bytes[j++] = (cag - (cag - cbg) * k) | 0;\n bytes[j++] = (cab - (cab - cbb) * k) | 0;\n bytes[j++] = 255;\n }\n }\n}\n\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(\n data,\n context,\n ps[q],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n drawTriangle(\n data,\n context,\n ps[q + verticesPerRow + 1],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q + verticesPerRow + 1],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(\n data,\n context,\n ps[i],\n ps[i + 1],\n ps[i + 2],\n cs[i],\n cs[i + 1],\n cs[i + 2]\n );\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\n\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n // we will increase scale on some weird factor to let antialiasing take\n // care of \"rough\" edges\n const EXPECTED_SCALE = 1.1;\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n const MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n // We need to keep transparent border around our pattern for fill():\n // createPattern with 'no-repeat' will bleed edges across entire area.\n const BORDER_SIZE = 2;\n\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n\n const width = Math.min(\n Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const height = Math.min(\n Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY,\n };\n\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n\n const tmpCanvas = cachedCanvases.getCanvas(\n \"mesh\",\n paddedWidth,\n paddedHeight,\n false\n );\n const tmpCtx = tmpCanvas.context;\n\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY,\n };\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n } else {\n // Obtain scale from matrix and current transformation matrix.\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n\n // Rasterizing on the main thread since sending/queue large canvases\n // might cause OOM.\n const temporaryPatternCanvas = this._createMeshCanvas(\n scale,\n pathType === PathType.SHADING ? null : this._background,\n owner.cachedCanvases\n );\n\n if (pathType !== PathType.SHADING) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n if (this.matrix) {\n ctx.transform.apply(ctx, this.matrix);\n }\n }\n\n ctx.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\n\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\n\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2,\n};\n\nclass TilingPattern {\n // 10in @ 300dpi shall be enough.\n static get MAX_PATTERN_SIZE() {\n return shadow(this, \"MAX_PATTERN_SIZE\", 3000);\n }\n\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n info(\"TilingType: \" + tilingType);\n\n // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n // described by bbox, and may repeat regularly by shifting the cell by\n // xstep and ystep.\n // Because the HTML5 canvas API does not support pattern repetition with\n // gaps in between, we use the xstep/ystep instead of the bbox's size.\n //\n // This has the following consequences (similarly for ystep):\n //\n // - If xstep is the same as bbox, then there is no observable difference.\n //\n // - If xstep is larger than bbox, then the pattern canvas is partially\n // empty: the area bounded by bbox is painted, the outside area is void.\n //\n // - If xstep is smaller than bbox, then the pixels between xstep and the\n // bbox boundary will be missing. This is INCORRECT behavior.\n // \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n // but overlapping cells without common pixels are still valid.\n // TODO: Fix the implementation, to allow this scenario to be painted\n // correctly.\n\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n // Obtain scale from matrix and current transformation matrix.\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(\n this.baseTransform\n );\n const combinedScale = [\n matrixScale[0] * curMatrixScale[0],\n matrixScale[1] * curMatrixScale[1],\n ];\n\n // Use width and height values that are as close as possible to the end\n // result when the pattern is used. Too low value makes the pattern look\n // blurry. Too large value makes it look too crispy.\n const dimx = this.getSizeAndScale(\n xstep,\n this.ctx.canvas.width,\n combinedScale[0]\n );\n const dimy = this.getSizeAndScale(\n ystep,\n this.ctx.canvas.height,\n combinedScale[1]\n );\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n dimx.size,\n dimy.size,\n true\n );\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n // Some bounding boxes have negative x0/y0 cordinates which will cause the\n // some of the drawing to be off of the canvas. To avoid this shift the\n // bounding box over.\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n\n graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice();\n\n graphics.executeOperatorList(operatorList);\n\n graphics.endDrawing();\n\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0,\n };\n }\n\n getSizeAndScale(step, realOutputSize, scale) {\n // xstep / ystep may be negative -- normalize.\n step = Math.abs(step);\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n // Use the destination canvas's size if it is bigger than the hard-coded\n // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n // whole canvas.\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return { scale, size };\n }\n\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.clip();\n graphics.endPath();\n }\n\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n // Set color needed by image masks (fixes issues 3226 and 8741).\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n let domMatrix = new DOMMatrix(matrix);\n // Rescale and so that the ctx.createPattern call generates a pattern with\n // the desired size.\n domMatrix = domMatrix.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n domMatrix = domMatrix.scale(\n 1 / temporaryPatternCanvas.scaleX,\n 1 / temporaryPatternCanvas.scaleY\n );\n\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n // Avoid rendering breaking completely in Firefox 78 ESR,\n // and in Node.js (see issue 13724).\n warn(`TilingPattern.getPattern: \"${ex?.message}\".`);\n }\n return pattern;\n }\n}\n\nexport { getShadingPattern, PathType, TilingPattern };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @typedef {Object} GlobalWorkerOptionsType\n * @property {Worker | null} workerPort - Defines global port for worker\n * process. Overrides the `workerSrc` option.\n * @property {string} workerSrc - A string containing the path and filename\n * of the worker file.\n *\n * NOTE: The `workerSrc` option should always be set, in order to prevent any\n * issues when using the PDF.js library.\n */\n\n/** @type {GlobalWorkerOptionsType} */\nconst GlobalWorkerOptions = Object.create(null);\n\nGlobalWorkerOptions.workerPort =\n GlobalWorkerOptions.workerPort === undefined\n ? null\n : GlobalWorkerOptions.workerPort;\n\nGlobalWorkerOptions.workerSrc =\n GlobalWorkerOptions.workerSrc === undefined\n ? \"\"\n : GlobalWorkerOptions.workerSrc;\n\nexport { GlobalWorkerOptions };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n PasswordException,\n UnexpectedResponseException,\n UnknownErrorException,\n warn,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n throw new Error(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n warn('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n return reason;\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this._createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = createPromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason),\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\n\n /**\n * @private\n */\n _createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: createPromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n }\n\n /**\n * @private\n */\n _processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(\n streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n );\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n /**\n * @private\n */\n async _deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall && streamController.startCall.promise,\n streamController.pullCall && streamController.pullCall.promise,\n streamController.cancelCall && streamController.cancelCall.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap } from \"../shared/util.js\";\n\nclass Metadata {\n #metadataMap;\n\n #data;\n\n constructor({ parsedData, rawData }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n\n getRaw() {\n return this.#data;\n }\n\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\nexport { Metadata };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { objectFromMap, warn } from \"../shared/util.js\";\n\nclass OptionalContentGroup {\n constructor(name, intent) {\n this.visible = true;\n this.name = name;\n this.intent = intent;\n }\n}\n\nclass OptionalContentConfig {\n constructor(data) {\n this.name = null;\n this.creator = null;\n this._order = null;\n this._groups = new Map();\n\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this._order = data.order;\n for (const group of data.groups) {\n this._groups.set(\n group.id,\n new OptionalContentGroup(group.name, group.intent)\n );\n }\n\n if (data.baseState === \"OFF\") {\n for (const group of this._groups) {\n group.visible = false;\n }\n }\n\n for (const on of data.on) {\n this._groups.get(on).visible = true;\n }\n\n for (const off of data.off) {\n this._groups.get(off).visible = false;\n }\n }\n\n _evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this._evaluateVisibilityExpression(element);\n } else if (this._groups.has(element)) {\n state = this._groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n\n isVisible(group) {\n if (this._groups.size === 0) {\n return true;\n }\n if (!group) {\n warn(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this._groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this._groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n // Per the spec, the expression should be preferred if available.\n if (group.expression) {\n return this._evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n // Default\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this._groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this._groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this._groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this._groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n\n setVisibility(id, visible = true) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n this._groups.get(id).visible = !!visible;\n }\n\n getOrder() {\n if (!this._groups.size) {\n return null;\n }\n if (this._order) {\n return this._order.slice();\n }\n return Array.from(this._groups.keys());\n }\n\n getGroups() {\n return this._groups.size > 0 ? objectFromMap(this._groups) : null;\n }\n\n getGroup(id) {\n return this._groups.get(id) || null;\n }\n}\n\nexport { OptionalContentConfig };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, createPromiseCapability } from \"../shared/util.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n constructor(params, pdfDataRangeTransport) {\n assert(\n pdfDataRangeTransport,\n 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.'\n );\n\n this._queuedChunks = [];\n this._progressiveDone = params.progressiveDone || false;\n this._contentDispositionFilename =\n params.contentDispositionFilename || null;\n\n const initialData = params.initialData;\n if (initialData?.length > 0) {\n const buffer = new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !params.disableStream;\n this._isRangeSupported = !params.disableRange;\n this._contentLength = params.length;\n\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({ begin, chunk });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({ loaded, total });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({ chunk });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData(args) {\n const buffer = new Uint8Array(args.chunk).buffer;\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(\n found,\n \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\"\n );\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n // Reporting to first range reader, if it exists.\n const firstReader = this._rangeReaders[0];\n if (firstReader?.onProgress) {\n firstReader.onProgress({ loaded: evt.loaded });\n }\n } else {\n const fullReader = this._fullRequestReader;\n if (fullReader?.onProgress) {\n fullReader.onProgress({ loaded: evt.loaded, total: evt.total });\n }\n }\n }\n\n _onProgressiveDone() {\n if (this._fullRequestReader) {\n this._fullRequestReader.progressiveDone();\n }\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFDataTransportStream.getFullReader can only be called once.\"\n );\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(\n this,\n queuedChunks,\n this._progressiveDone,\n this._contentDispositionFilename\n );\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n constructor(\n stream,\n queuedChunks,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename)\n ? contentDispositionFilename\n : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // Ignore new data.\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({ value: chunk, done: false });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\nexport { PDFDataTransportStream };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass XfaText {\n /**\n * Walk an XFA tree and create an array of text nodes that is compatible\n * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\n * all other fields and styles haven't been implemented.\n *\n * @param {Object} xfa - An XFA fake DOM object.\n *\n * @returns {TextContent}\n */\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null),\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str,\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n\n /**\n * @param {string} name - DOM node name. (lower case)\n *\n * @returns {boolean} true if the DOM node should have a corresponding text\n * node.\n */\n static shouldBuildText(name) {\n return !(\n name === \"textarea\" ||\n name === \"input\" ||\n name === \"option\" ||\n name === \"select\"\n );\n }\n}\n\nexport { XfaText };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n AnnotationBorderStyleType,\n AnnotationType,\n assert,\n shadow,\n stringToPDFString,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n DOMSVGFactory,\n getFilenameFromUrl,\n PDFDateString,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst GetElementsByNameSet = new WeakSet();\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {PDFPageProxy} page\n * @property {PageViewport} viewport\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n * @property {Object} [mouseState]\n */\n\nclass AnnotationElementFactory {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\n\nclass AnnotationElement {\n constructor(\n parameters,\n {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false,\n } = {}\n ) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this._mouseState = parameters.mouseState;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);\n }\n }\n\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLSectionElement}\n */\n _createContainer(ignoreBorder = false) {\n const data = this.data,\n page = this.page,\n viewport = this.viewport;\n const container = document.createElement(\"section\");\n let width = data.rect[2] - data.rect[0];\n let height = data.rect[3] - data.rect[1];\n\n container.setAttribute(\"data-annotation-id\", data.id);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (data.hasOwnCanvas) {\n const transform = viewport.transform.slice();\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(transform);\n width = Math.ceil(width * scaleX);\n height = Math.ceil(height * scaleY);\n rect[0] *= scaleX;\n rect[1] *= scaleY;\n // Reset the scale part of the transform matrix (which must be diagonal\n // or anti-diagonal) in order to avoid to rescale the canvas.\n // The canvas for the annotation is correctly scaled when it is drawn\n // (see `beginAnnotation` in canvas.js).\n for (let i = 0; i < 4; i++) {\n transform[i] = Math.sign(transform[i]);\n }\n container.style.transform = `matrix(${transform.join(\",\")})`;\n } else {\n container.style.transform = `matrix(${viewport.transform.join(\",\")})`;\n }\n\n container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`;\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) {\n // Underline styles only have a bottom border, so we do not need\n // to adjust for all borders. This yields a similar result as\n // Adobe Acrobat/Reader.\n width -= 2 * data.borderStyle.width;\n height -= 2 * data.borderStyle.width;\n }\n\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `${horizontalRadius}px / ${verticalRadius}px`;\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n const borderColor = data.borderColor || data.color || null;\n if (borderColor) {\n container.style.borderColor = Util.makeHexColor(\n data.color[0] | 0,\n data.color[1] | 0,\n data.color[2] | 0\n );\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${rect[0]}px`;\n container.style.top = `${rect[1]}px`;\n\n if (data.hasOwnCanvas) {\n container.style.width = container.style.height = \"auto\";\n } else {\n container.style.width = `${width}px`;\n container.style.height = `${height}px`;\n }\n return container;\n }\n\n /**\n * Create quadrilaterals from the annotation's quadpoints.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {Array<HTMLSectionElement>}\n */\n _createQuadrilaterals(ignoreBorder = false) {\n if (!this.data.quadPoints) {\n return null;\n }\n\n const quadrilaterals = [];\n const savedRect = this.data.rect;\n for (const quadPoint of this.data.quadPoints) {\n this.data.rect = [\n quadPoint[2].x,\n quadPoint[2].y,\n quadPoint[1].x,\n quadPoint[1].y,\n ];\n quadrilaterals.push(this._createContainer(ignoreBorder));\n }\n this.data.rect = savedRect;\n return quadrilaterals;\n }\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @param {HTMLDivElement|HTMLImageElement|null} trigger\n * @param {Object} data\n * @memberof AnnotationElement\n */\n _createPopup(trigger, data) {\n let container = this.container;\n if (this.quadrilaterals) {\n trigger = trigger || this.quadrilaterals;\n container = this.quadrilaterals[0];\n }\n\n // If no trigger element is specified, create it.\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.style.height = container.style.height;\n trigger.style.width = container.style.width;\n container.appendChild(trigger);\n }\n\n const popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n hideWrapper: true,\n });\n const popup = popupElement.render();\n\n // Position the popup next to the annotation's container.\n popup.style.left = container.style.width;\n\n container.appendChild(popup);\n }\n\n /**\n * Render the quadrilaterals of the annotation.\n *\n * @private\n * @param {string} className\n * @memberof AnnotationElement\n * @returns {Array<HTMLSectionElement>}\n */\n _renderQuadrilaterals(className) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(this.quadrilaterals, \"Missing quadrilaterals during rendering\");\n }\n\n for (const quadrilateral of this.quadrilaterals) {\n quadrilateral.className = className;\n }\n return this.quadrilaterals;\n }\n\n /**\n * Render the annotation's HTML element(s).\n *\n * @public\n * @memberof AnnotationElement\n * @returns {HTMLSectionElement|Array<HTMLSectionElement>}\n */\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n\n /**\n * @private\n * @returns {Array}\n */\n _getElementsByName(name, skipId = null) {\n const fields = [];\n\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const { page, id, exportValues } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue =\n typeof exportValues === \"string\" ? exportValues : null;\n\n const domElement = document.getElementById(id);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n }\n return fields;\n }\n // Fallback to a regular DOM lookup, to ensure that the standalone\n // viewer components won't break.\n for (const domElement of document.getElementsByName(name)) {\n const { id, exportValue } = domElement;\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n return fields;\n }\n\n static get platform() {\n const platform = typeof navigator !== \"undefined\" ? navigator.platform : \"\";\n\n return shadow(this, \"platform\", {\n isWin: platform.includes(\"Win\"),\n isMac: platform.includes(\"Mac\"),\n });\n }\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n const isRenderable = !!(\n parameters.data.url ||\n parameters.data.dest ||\n parameters.data.action ||\n parameters.data.isTooltipOnly ||\n parameters.data.resetForm ||\n (parameters.data.actions &&\n (parameters.data.actions.Action ||\n parameters.data.actions[\"Mouse Up\"] ||\n parameters.data.actions[\"Mouse Down\"]))\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n const { data, linkService } = this;\n const link = document.createElement(\"a\");\n\n if (data.url) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n !linkService.addLinkAttributes\n ) {\n warn(\n \"LinkAnnotationElement.render - missing `addLinkAttributes`-method on the `linkService`-instance.\"\n );\n }\n linkService.addLinkAttributes?.(link, data.url, data.newWindow);\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n } else {\n let hasClickAction = false;\n if (\n data.actions &&\n (data.actions.Action ||\n data.actions[\"Mouse Up\"] ||\n data.actions[\"Mouse Down\"]) &&\n this.enableScripting &&\n this.hasJSActions\n ) {\n hasClickAction = true;\n this._bindJSAction(link, data);\n }\n\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n } else if (!hasClickAction) {\n this._bindLink(link, \"\");\n }\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"linkAnnotation\").map(\n (quadrilateral, index) => {\n const linkElement = index === 0 ? link : link.cloneNode();\n quadrilateral.appendChild(linkElement);\n return quadrilateral;\n }\n );\n }\n\n this.container.className = \"linkAnnotation\";\n this.container.appendChild(link);\n return this.container;\n }\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\n */\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === /* isTooltipOnly = */ \"\") {\n link.className = \"internalLink\";\n }\n }\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\n */\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n link.className = \"internalLink\";\n }\n\n /**\n * Bind JS actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} data\n * @memberof LinkAnnotationElement\n */\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([\n [\"Action\", \"onclick\"],\n [\"Mouse Up\", \"onmouseup\"],\n [\"Mouse Down\", \"onmousedown\"],\n ]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name,\n },\n });\n return false;\n };\n }\n\n if (!link.onclick) {\n link.onclick = () => false;\n }\n link.className = \"internalLink\";\n }\n\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n link.className = \"internalLink\";\n\n if (!this._fieldObjects) {\n warn(\n `_bindResetFormAction - \"resetForm\" action not supported, ` +\n \"ensure that the `fieldObjects` parameter is provided.\"\n );\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n\n link.onclick = () => {\n if (otherClickAction) {\n otherClickAction();\n }\n\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include,\n } = resetForm;\n\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const { id } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const { id } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value, valueAsString: value });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\": {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, { value });\n break;\n }\n case \"combobox\":\n case \"listbox\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n default:\n continue;\n }\n const domElement = document.getElementById(id);\n if (!domElement || !GetElementsByNameSet.has(domElement)) {\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n\n if (this.enableScripting) {\n // Update the values in the sandbox.\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\",\n },\n });\n }\n\n return false;\n };\n }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable });\n }\n\n render() {\n this.container.className = \"textAnnotation\";\n\n const image = document.createElement(\"img\");\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src =\n this.imageResourcesPath +\n \"annotation-\" +\n this.data.name.toLowerCase() +\n \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({ type: this.data.name });\n\n if (!this.data.hasPopup) {\n this._createPopup(image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n // Show only the container for unsupported field types.\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n\n return this.container;\n }\n\n _getKeyModifier(event) {\n const { isWin, isMac } = AnnotationElement.platform;\n return (isWin && event.ctrlKey) || (isMac && event.metaKey);\n }\n\n _setEventListener(element, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n // Mouse events\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event),\n },\n });\n });\n } else {\n // Non mouse event\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: event.target.checked,\n },\n });\n });\n }\n }\n\n _setEventListeners(element, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n this._setEventListener(element, baseName, eventName, getter);\n }\n }\n }\n\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor =\n color === null\n ? \"transparent\"\n : Util.makeHexColor(color[0], color[1], color[2]);\n }\n\n _dispatchEventFromSandbox(actions, jsEvent) {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n event.target.style[styleName] = ColorConverters[`${color[0]}_HTML`](\n color.slice(1)\n );\n };\n\n const commonActions = {\n display: event => {\n const hidden = event.detail.display % 2 === 1;\n event.target.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden,\n print: event.detail.display === 0 || event.detail.display === 3,\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n print: event.detail.print,\n });\n },\n hidden: event => {\n event.target.style.visibility = event.detail.hidden\n ? \"hidden\"\n : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden: event.detail.hidden,\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({ preventScroll: false }), 0);\n },\n userName: event => {\n // tooltip\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n if (event.detail.readonly) {\n event.target.setAttribute(\"readonly\", \"\");\n } else {\n event.target.removeAttribute(\"readonly\");\n }\n },\n required: event => {\n if (event.detail.required) {\n event.target.setAttribute(\"required\", \"\");\n } else {\n event.target.removeAttribute(\"required\");\n }\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n };\n\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n if (action) {\n action(jsEvent);\n }\n }\n }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable =\n parameters.renderForms ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n super(parameters, { isRenderable });\n }\n\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(\n base.name,\n /* skipId = */ base.id\n )) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, { [keyInStorage]: value });\n }\n }\n\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n this.container.className = \"textWidgetAnnotation\";\n\n let element = null;\n if (this.renderForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n valueAsString: this.data.fieldValue,\n });\n const textContent = storedData.valueAsString || storedData.value || \"\";\n const elementData = {\n userValue: null,\n formattedValue: null,\n beforeInputSelectionRange: null,\n beforeInputValue: null,\n };\n\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = textContent;\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", textContent);\n }\n GetElementsByNameSet.add(element);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n elementData.userValue = textContent;\n element.setAttribute(\"id\", id);\n\n element.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n this.setPropertyOnSiblings(\n element,\n \"value\",\n event.target.value,\n \"value\"\n );\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue || \"\";\n element.value = elementData.userValue = defaultValue;\n delete elementData.formattedValue;\n });\n\n let blurListener = event => {\n if (elementData.formattedValue) {\n event.target.value = elementData.formattedValue;\n }\n // Reset the cursor position to the start of the field (issue 12359).\n event.target.scrollLeft = 0;\n elementData.beforeInputSelectionRange = null;\n };\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.userValue) {\n event.target.value = elementData.userValue;\n }\n });\n\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value || \"\";\n storage.setValue(id, { value: elementData.userValue.toString() });\n if (!elementData.formattedValue) {\n event.target.value = elementData.userValue;\n }\n },\n valueAsString(event) {\n elementData.formattedValue = event.detail.valueAsString || \"\";\n if (event.target !== document.activeElement) {\n // Input hasn't the focus so display formatted string\n event.target.value = elementData.formattedValue;\n }\n storage.setValue(id, {\n formattedValue: elementData.formattedValue,\n });\n },\n selRange(event) {\n const [selStart, selEnd] = event.detail.selRange;\n if (selStart >= 0 && selEnd < event.target.value.length) {\n event.target.setSelectionRange(selStart, selEnd);\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n // Even if the field hasn't any actions\n // leaving it can still trigger some actions with Calculate\n element.addEventListener(\"keydown\", event => {\n elementData.beforeInputValue = event.target.value;\n // if the key is one of Escape, Enter or Tab\n // then the data are committed\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\") {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n // Save the entered value\n elementData.userValue = event.target.value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: event.target.value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (this._mouseState.isDown) {\n // Focus out using the mouse: data are committed\n elementData.userValue = event.target.value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: event.target.value,\n willCommit: true,\n commitKey: 1,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n }\n _blurListener(event);\n });\n element.addEventListener(\"mousedown\", event => {\n elementData.beforeInputValue = event.target.value;\n elementData.beforeInputSelectionRange = null;\n });\n element.addEventListener(\"keyup\", event => {\n // keyup is triggered after input\n if (event.target.selectionStart === event.target.selectionEnd) {\n elementData.beforeInputSelectionRange = null;\n }\n });\n element.addEventListener(\"select\", event => {\n elementData.beforeInputSelectionRange = [\n event.target.selectionStart,\n event.target.selectionEnd,\n ];\n });\n\n if (this.data.actions?.Keystroke) {\n // We should use beforeinput but this\n // event isn't available in Firefox\n element.addEventListener(\"input\", event => {\n let selStart = -1;\n let selEnd = -1;\n if (elementData.beforeInputSelectionRange) {\n [selStart, selEnd] = elementData.beforeInputSelectionRange;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: elementData.beforeInputValue,\n change: event.data,\n willCommit: false,\n selStart,\n selEnd,\n },\n });\n });\n }\n\n this._setEventListeners(\n element,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.value\n );\n }\n\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / this.data.maxLen;\n\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n }\n\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const { fontSize, fontColor } = this.data.defaultAppearanceData;\n const style = element.style;\n\n // TODO: If the font-size is zero, calculate it based on the height and\n // width of the element.\n // Not setting `style.fontSize` will use the default font-size for now.\n if (fontSize) {\n style.fontSize = `${fontSize}px`;\n }\n\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== \"Off\";\n storage.setValue(id, { value });\n }\n\n this.container.className = \"buttonWidgetAnnotation checkBox\";\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.disabled = data.readOnly;\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"id\", id);\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, { value: curChecked });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, { value: event.target.checked });\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.className = \"buttonWidgetAnnotation radioButton\";\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== data.buttonValue;\n storage.setValue(id, { value });\n }\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.disabled = data.readOnly;\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"id\", id);\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n storage.setValue(radio.id, { value: false });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked =\n defaultValue !== null &&\n defaultValue !== undefined &&\n defaultValue === data.buttonValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, { value: curChecked });\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n }\n\n render() {\n // The rendering and functionality of a push button widget annotation is\n // equal to that of a link annotation, but may have more functionality, such\n // as performing actions on form fields (resetting, submitting, et cetera).\n const container = super.render();\n container.className = \"buttonWidgetAnnotation pushButton\";\n\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n\n return container;\n }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.className = \"choiceWidgetAnnotation\";\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n // For printing/saving we currently only support choice widgets with one\n // option selection. Therefore, listboxes (#12189) and comboboxes (#12224)\n // are not properly printed/saved yet, so we only store the first item in\n // the field value array instead of the entire array. Once support for those\n // two field types is implemented, we should use the same pattern as the\n // other interactive widgets where the return value of `getValue`\n // is used and the full array of field values is stored.\n storage.getValue(id, {\n value:\n this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined,\n });\n\n let { fontSize } = this.data.defaultAppearanceData;\n if (!fontSize) {\n fontSize = 9;\n }\n const fontSizeStyle = `calc(${fontSize}px * var(--zoom-factor))`;\n\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.disabled = this.data.readOnly;\n selectElement.name = this.data.fieldName;\n selectElement.setAttribute(\"id\", id);\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n\n selectElement.style.fontSize = `${fontSize}px`;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n\n // Insert the options into the choice field.\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (this.data.combo) {\n optionElement.style.fontSize = fontSizeStyle;\n }\n if (this.data.fieldValue.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n }\n selectElement.appendChild(optionElement);\n }\n\n const getValue = (event, isExport) => {\n const name = isExport ? \"value\" : \"textContent\";\n const options = event.target.options;\n if (!event.target.multiple) {\n return options.selectedIndex === -1\n ? null\n : options[options.selectedIndex][name];\n }\n return Array.prototype.filter\n .call(options, option => option.selected)\n .map(option => option[name]);\n };\n\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => {\n return { displayValue: option.textContent, exportValue: option.value };\n });\n };\n\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n });\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(\n options,\n option => option.selected\n );\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, { value: null, items: [] });\n },\n insert(event) {\n const { index, displayValue, exportValue } = event.detail.insert;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.insertBefore(\n optionElement,\n selectElement.children[index]\n );\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n items(event) {\n const { items } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const { displayValue, exportValue } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.appendChild(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n });\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(event, /* isExport */ true);\n const value = getValue(event, /* isExport */ false);\n storage.setValue(id, { value: exportValue });\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n changeEx: exportValue,\n willCommit: true,\n commitKey: 1,\n keyDown: false,\n },\n });\n });\n\n this._setEventListeners(\n selectElement,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n [\"input\", \"Action\"],\n ],\n event => event.target.checked\n );\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, { value: getValue(event) });\n });\n }\n\n this._setBackgroundColor(selectElement);\n\n this.container.appendChild(selectElement);\n return this.container;\n }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable });\n }\n\n render() {\n // Do not render popup annotations for parent elements with these types as\n // they create the popups themselves (because of custom trigger divs).\n const IGNORE_TYPES = [\n \"Line\",\n \"Square\",\n \"Circle\",\n \"PolyLine\",\n \"Polygon\",\n \"Ink\",\n ];\n\n this.container.className = \"popupAnnotation\";\n\n if (IGNORE_TYPES.includes(this.data.parentType)) {\n return this.container;\n }\n\n const selector = `[data-annotation-id=\"${this.data.parentId}\"]`;\n const parentElements = this.layer.querySelectorAll(selector);\n if (parentElements.length === 0) {\n return this.container;\n }\n\n const popup = new PopupElement({\n container: this.container,\n trigger: Array.from(parentElements),\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n });\n\n // Position the popup next to the parent annotation's container.\n // PDF viewers ignore a popup annotation's rectangle.\n const page = this.page;\n const rect = Util.normalizeRect([\n this.data.parentRect[0],\n page.view[3] - this.data.parentRect[1] + page.view[1],\n this.data.parentRect[2],\n page.view[3] - this.data.parentRect[3] + page.view[1],\n ]);\n const popupLeft =\n rect[0] + this.data.parentRect[2] - this.data.parentRect[0];\n const popupTop = rect[1];\n\n this.container.style.transformOrigin = `${-popupLeft}px ${-popupTop}px`;\n this.container.style.left = `${popupLeft}px`;\n this.container.style.top = `${popupTop}px`;\n\n this.container.appendChild(popup.render());\n return this.container;\n }\n}\n\nclass PopupElement {\n constructor(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.titleObj = parameters.titleObj;\n this.modificationDate = parameters.modificationDate;\n this.contentsObj = parameters.contentsObj;\n this.richText = parameters.richText;\n this.hideWrapper = parameters.hideWrapper || false;\n\n this.pinned = false;\n }\n\n render() {\n const BACKGROUND_ENLIGHT = 0.7;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"popupWrapper\";\n\n // For Popup annotations we hide the entire section because it contains\n // only the popup. However, for Text annotations without a separate Popup\n // annotation, we cannot hide the entire container as the image would\n // disappear too. In that special case, hiding the wrapper suffices.\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.hidden = true;\n\n const popup = document.createElement(\"div\");\n popup.className = \"popup\";\n\n const color = this.color;\n if (color) {\n // Enlighten the color.\n const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = Util.makeHexColor(r | 0, g | 0, b | 0);\n }\n\n const title = document.createElement(\"h1\");\n title.dir = this.titleObj.dir;\n title.textContent = this.titleObj.str;\n popup.appendChild(title);\n\n // The modification date is shown in the popup instead of the creation\n // date if it is available and can be parsed correctly, which is\n // consistent with other viewers such as Adobe Acrobat.\n const dateObject = PDFDateString.toDateObject(this.modificationDate);\n if (dateObject) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.className = \"popupDate\";\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString(),\n });\n popup.appendChild(modificationDate);\n }\n\n if (\n this.richText?.str &&\n (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)\n ) {\n XfaLayer.render({\n xfaHtml: this.richText.html,\n intent: \"richText\",\n div: popup,\n });\n popup.lastChild.className = \"richText popupContent\";\n } else {\n const contents = this._formatContents(this.contentsObj);\n popup.appendChild(contents);\n }\n\n if (!Array.isArray(this.trigger)) {\n this.trigger = [this.trigger];\n }\n\n // Attach the event listeners to the trigger element.\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this._toggle.bind(this));\n element.addEventListener(\"mouseover\", this._show.bind(this, false));\n element.addEventListener(\"mouseout\", this._hide.bind(this, false));\n }\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n\n wrapper.appendChild(popup);\n return wrapper;\n }\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {Object<string, string>} contentsObj\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents({ str, dir }) {\n const p = document.createElement(\"p\");\n p.className = \"popupContent\";\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.appendChild(document.createTextNode(line));\n if (i < ii - 1) {\n p.appendChild(document.createElement(\"br\"));\n }\n }\n return p;\n }\n\n /**\n * Toggle the visibility of the popup.\n *\n * @private\n * @memberof PopupElement\n */\n _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n\n /**\n * Show the popup.\n *\n * @private\n * @param {boolean} pin\n * @memberof PopupElement\n */\n _show(pin = false) {\n if (pin) {\n this.pinned = true;\n }\n if (this.hideElement.hidden) {\n this.hideElement.hidden = false;\n this.container.style.zIndex += 1;\n }\n }\n\n /**\n * Hide the popup.\n *\n * @private\n * @param {boolean} unpin\n * @memberof PopupElement\n */\n _hide(unpin = true) {\n if (unpin) {\n this.pinned = false;\n }\n if (!this.hideElement.hidden && !this.pinned) {\n this.hideElement.hidden = true;\n this.container.style.zIndex -= 1;\n }\n }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"freeTextAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"lineAnnotation\";\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\n const line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n this._createPopup(line, data);\n\n return this.container;\n }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"squareAnnotation\";\n\n // Create an invisible square with the same rectangle that acts as the\n // trigger for the popup. Only the square itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n // The browser draws half of the borders inside the square and half of\n // the borders outside the square by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(square);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the square instead\n // of to the entire container (which is the default).\n this._createPopup(square, data);\n\n return this.container;\n }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"circleAnnotation\";\n\n // Create an invisible circle with the same ellipse that acts as the\n // trigger for the popup. Only the circle itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n // The browser draws half of the borders inside the circle and half of\n // the borders outside the circle by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(circle);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the circle instead\n // of to the entire container (which is the default).\n this._createPopup(circle, data);\n\n return this.container;\n }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup. Only the polyline itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n // Convert the vertices array to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(polyline);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(polyline, data);\n\n return this.container;\n }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"caretAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n\n this.containerClassName = \"inkAnnotation\";\n\n // Use the polyline SVG element since it allows us to use coordinates\n // directly and to draw both straight lines and curves.\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n for (const inkList of data.inkLists) {\n // Convert the ink list to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(polyline, data);\n\n svg.appendChild(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"highlightAnnotation\");\n }\n\n this.container.className = \"highlightAnnotation\";\n return this.container;\n }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"underlineAnnotation\");\n }\n\n this.container.className = \"underlineAnnotation\";\n return this.container;\n }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"squigglyAnnotation\");\n }\n\n this.container.className = \"squigglyAnnotation\";\n return this.container;\n }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"strikeoutAnnotation\");\n }\n\n this.container.className = \"strikeoutAnnotation\";\n return this.container;\n }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"stampAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n\n const { filename, content } = this.data.file;\n this.filename = getFilenameFromUrl(filename);\n this.content = content;\n\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n id: stringToPDFString(filename),\n filename,\n content,\n });\n }\n\n render() {\n this.container.className = \"fileAttachmentAnnotation\";\n\n const trigger = document.createElement(\"div\");\n trigger.style.height = this.container.style.height;\n trigger.style.width = this.container.style.width;\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n if (\n !this.data.hasPopup &&\n (this.data.titleObj?.str ||\n this.data.contentsObj?.str ||\n this.data.richText)\n ) {\n this._createPopup(trigger, this.data);\n }\n\n this.container.appendChild(trigger);\n return this.container;\n }\n\n /**\n * Download the file attachment associated with this annotation.\n *\n * @private\n * @memberof FileAttachmentAnnotationElement\n */\n _download() {\n this.downloadManager?.openOrDownloadData(\n this.container,\n this.content,\n this.filename\n );\n }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n * The default value is `false`.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n */\n\nclass AnnotationLayer {\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n static render(parameters) {\n const sortedAnnotations = [],\n popupAnnotations = [];\n // Ensure that Popup annotations are handled last, since they're dependant\n // upon the parent annotation having already been rendered (please refer to\n // the `PopupAnnotationElement.render` method); fixes issue 11362.\n for (const data of parameters.annotations) {\n if (!data) {\n continue;\n }\n if (data.annotationType === AnnotationType.POPUP) {\n popupAnnotations.push(data);\n continue;\n }\n sortedAnnotations.push(data);\n }\n if (popupAnnotations.length) {\n sortedAnnotations.push(...popupAnnotations);\n }\n\n const div = parameters.div;\n\n for (const data of sortedAnnotations) {\n const element = AnnotationElementFactory.create({\n data,\n layer: div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath || \"\",\n renderForms: parameters.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage:\n parameters.annotationStorage || new AnnotationStorage(),\n enableScripting: parameters.enableScripting,\n hasJSActions: parameters.hasJSActions,\n fieldObjects: parameters.fieldObjects,\n mouseState: parameters.mouseState || { isDown: false },\n });\n if (element.isRenderable) {\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n if (Array.isArray(rendered)) {\n for (const renderedElement of rendered) {\n div.appendChild(renderedElement);\n }\n } else {\n if (element instanceof PopupAnnotationElement) {\n // Popup annotation elements should not be on top of other\n // annotation elements to prevent interfering with mouse events.\n div.prepend(rendered);\n } else {\n div.appendChild(rendered);\n }\n }\n }\n }\n\n this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap);\n }\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n static update(parameters) {\n const { page, viewport, annotations, annotationCanvasMap, div } =\n parameters;\n const transform = viewport.transform;\n const matrix = `matrix(${transform.join(\",\")})`;\n\n let scale, ownMatrix;\n for (const data of annotations) {\n const elements = div.querySelectorAll(\n `[data-annotation-id=\"${data.id}\"]`\n );\n if (elements) {\n for (const element of elements) {\n if (data.hasOwnCanvas) {\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (!ownMatrix) {\n // When an annotation has its own canvas, then\n // the scale has been already applied to the canvas,\n // so we musn't scale it twice.\n scale = Math.abs(transform[0] || transform[1]);\n const ownTransform = transform.slice();\n for (let i = 0; i < 4; i++) {\n ownTransform[i] = Math.sign(ownTransform[i]);\n }\n ownMatrix = `matrix(${ownTransform.join(\",\")})`;\n }\n\n const left = rect[0] * scale;\n const top = rect[1] * scale;\n element.style.left = `${left}px`;\n element.style.top = `${top}px`;\n element.style.transformOrigin = `${-left}px ${-top}px`;\n element.style.transform = ownMatrix;\n } else {\n element.style.transform = matrix;\n }\n }\n }\n }\n\n this.#setAnnotationCanvasMap(div, annotationCanvasMap);\n div.hidden = false;\n }\n\n static #setAnnotationCanvasMap(div, annotationCanvasMap) {\n if (!annotationCanvasMap) {\n return;\n }\n for (const [id, canvas] of annotationCanvasMap) {\n const element = div.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n\n const { firstChild } = element;\n if (firstChild.nodeName === \"CANVAS\") {\n element.replaceChild(canvas, firstChild);\n } else {\n element.insertBefore(canvas, firstChild);\n }\n }\n annotationCanvasMap.clear();\n }\n}\n\nexport { AnnotationLayer };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n * `../scripting_api/` folders, hence be EXTREMELY careful about\n * introducing any dependencies here since that can lead to an\n * unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n}\n\n// PDF specifications section 10.3\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_HTML([r, g, b]) {\n const R = makeColorComp(r);\n const G = makeColorComp(g);\n const B = makeColorComp(b);\n return `#${R}${G}${B}`;\n }\n\n static T_HTML() {\n return \"#00000000\";\n }\n\n static CMYK_RGB([c, y, m, k]) {\n return [\n \"RGB\",\n 1 - Math.min(1, c + k),\n 1 - Math.min(1, m + k),\n 1 - Math.min(1, y + k),\n ];\n }\n\n static CMYK_HTML(components) {\n return this.RGB_HTML(this.CMYK_RGB(components));\n }\n\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\n\nexport { ColorConverters };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { warn } from \"../shared/util.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\n/**\n * @typedef {Object} XfaLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Object} xfaHtml\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {string} [intent] - (default value is 'display').\n */\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, { value: null });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n });\n break;\n case \"input\":\n if (\n element.attributes.type === \"radio\" ||\n element.attributes.type === \"checkbox\"\n ) {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n // The checked attribute may have been set when opening the file,\n // unset through the UI and we're here because of printing.\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked\n ? event.target.getAttribute(\"xfaOn\")\n : event.target.getAttribute(\"xfaOff\"),\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value =\n options.selectedIndex === -1\n ? \"\"\n : options[options.selectedIndex].value;\n storage.setValue(id, { value });\n });\n break;\n }\n }\n\n static setAttributes({ html, element, storage = null, intent, linkService }) {\n const { attributes } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n if (attributes.type === \"radio\") {\n // Avoid to have a radio group when printing with the same as one\n // already displayed.\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n // We don't need to add dataId in the html object but it can\n // be useful to know its value when writing printing tests:\n // in this case, don't skip dataId to have its value.\n if (value === null || value === undefined || key === \"dataId\") {\n continue;\n }\n\n if (key !== \"style\") {\n if (key === \"textContent\") {\n html.textContent = value;\n } else if (key === \"class\") {\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n } else {\n if (isHTMLAnchorElement && (key === \"href\" || key === \"newWindow\")) {\n continue; // Handled below.\n }\n html.setAttribute(key, value);\n }\n } else {\n Object.assign(html.style, value);\n }\n }\n\n if (isHTMLAnchorElement) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n !linkService.addLinkAttributes\n ) {\n warn(\n \"XfaLayer.setAttribute - missing `addLinkAttributes`-method on the `linkService`-instance.\"\n );\n }\n linkService.addLinkAttributes?.(\n html,\n attributes.href,\n attributes.newWindow\n );\n }\n\n // Set the value after the others to be sure overwrite\n // any other values.\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n\n /**\n * Render the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\n */\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService,\n });\n }\n const stack = [[root, -1, rootHtml]];\n\n const rootDiv = parameters.div;\n rootDiv.appendChild(rootHtml);\n\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n\n // Set defaults.\n if (intent !== \"richText\") {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n\n // Text nodes used for the text highlighter.\n const textDivs = [];\n\n while (stack.length > 0) {\n const [parent, i, html] = stack[stack.length - 1];\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n\n const child = parent.children[++stack[stack.length - 1][1]];\n if (child === null) {\n continue;\n }\n\n const { name } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.appendChild(node);\n continue;\n }\n\n let childHtml;\n if (child?.attributes?.xmlns) {\n childHtml = document.createElementNS(child.attributes.xmlns, name);\n } else {\n childHtml = document.createElement(name);\n }\n\n html.appendChild(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService,\n });\n }\n\n if (child.children && child.children.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.appendChild(node);\n }\n }\n\n /**\n * TODO: re-enable that stuff once we've JS implementation.\n * See https://bugzilla.mozilla.org/show_bug.cgi?id=1719465.\n *\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaDisabled input, .xfaDisabled textarea\"\n * )) {\n * el.setAttribute(\"disabled\", true);\n * }\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaReadOnly input, .xfaReadOnly textarea\"\n * )) {\n * el.setAttribute(\"readOnly\", true);\n * }\n */\n\n for (const el of rootDiv.querySelectorAll(\n \".xfaNonInteractive input, .xfaNonInteractive textarea\"\n )) {\n el.setAttribute(\"readOnly\", true);\n }\n\n return {\n textDivs,\n };\n }\n\n /**\n * Update the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\n */\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\nexport { XfaLayer };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n createPromiseCapability,\n Util,\n} from \"../shared/util.js\";\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {import(\"./api\").TextContent} [textContent] - Text content to\n * render (the object is returned by the page's `getTextContent` method).\n * @property {ReadableStream} [textContentStream] - Text content stream to\n * render (the stream is returned by the page's `streamTextContent` method).\n * @property {HTMLElement} container - HTML element that will contain text runs.\n * @property {import(\"./display_utils\").PageViewport} viewport - The target\n * viewport to properly layout the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that are correspond\n * to the text items of the textContent input. This is output and shall be\n * initially be set to empty array.\n * @property {Array<string>} [textContentItemsStr] - Strings that correspond to\n * the `str` property of the text items of textContent input. This is output\n * and shall be initially be set to empty array.\n * @property {number} [timeout] - Delay in milliseconds before rendering of the\n * text runs occurs.\n * @property {boolean} [enhanceTextSelection] - Whether to turn on the text\n * selection enhancement.\n */\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\nconst AllWhitespaceRegexp = /^\\s+$/g;\n\nfunction getAscent(fontFamily, ctx) {\n const cachedAscent = ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n\n ctx.save();\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n\n // Both properties aren't available by default in Firefox.\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n ctx.restore();\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n // Try basic heuristic to guess ascent/descent.\n // Draw a g with baseline at 0,0 and then get the line\n // number where a pixel has non-null red component (starting\n // from bottom).\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(\n 0,\n 0,\n DEFAULT_FONT_SIZE,\n DEFAULT_FONT_SIZE\n ).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n // Draw an A with baseline at 0,DEFAULT_FONT_SIZE and then get the line\n // number where a pixel has non-null red component (starting\n // from top).\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n ctx.restore();\n\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles, ctx) {\n // Initialize all used properties to keep the caches monomorphic.\n const textDiv = document.createElement(\"span\");\n const textDivProperties = task._enhanceTextSelection\n ? {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1,\n }\n : {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n };\n\n task._textDivs.push(textDiv);\n\n const tx = Util.transform(task._viewport.transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * getAscent(style.fontFamily, ctx);\n\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n // Setting the style properties individually, rather than all at once,\n // should be OK since the `textDiv` isn't appended to the document yet.\n textDiv.style.left = `${left}px`;\n textDiv.style.top = `${top}px`;\n textDiv.style.fontSize = `${fontHeight}px`;\n textDiv.style.fontFamily = style.fontFamily;\n\n // Keeps screen readers from pausing on every new text span.\n textDiv.setAttribute(\"role\", \"presentation\");\n\n textDiv.textContent = geom.str;\n // geom.dir may be 'ttb' for vertical texts.\n textDiv.dir = geom.dir;\n\n // `fontName` is only used by the FontInspector, and we only use `dataset`\n // here to make the font name available in the debugger.\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n // We don't bother scaling single-char text divs, because it has very\n // little effect on text highlighting. This makes scrolling on docs with\n // lots of such divs a lot faster.\n let shouldScaleText = false;\n if (\n geom.str.length > 1 ||\n (task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str))\n ) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n // When the horizontal/vertical scaling differs significantly, also scale\n // even single-char text to improve highlighting (fixes issue11713.pdf).\n if (\n absScaleX !== absScaleY &&\n Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5\n ) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection && textDivProperties.hasText) {\n let angleCos = 1,\n angleSin = 0;\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n const divWidth =\n (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n const divHeight = fontHeight;\n\n let m, b;\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m,\n });\n }\n}\n\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n const textDivs = task._textDivs;\n const capability = task._capability;\n const textDivsLength = textDivs.length;\n\n // No point in rendering many divs as it would make the browser\n // unusable even after the divs are rendered.\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (let i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n}\n\nfunction findPositiveMin(ts, offset, count) {\n let result = 0;\n for (let i = 0; i < count; i++) {\n const t = ts[offset++];\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n return result;\n}\n\nfunction expand(task) {\n const bounds = task._bounds;\n const viewport = task._viewport;\n\n const expanded = expandBounds(viewport.width, viewport.height, bounds);\n for (let i = 0; i < expanded.length; i++) {\n const div = bounds[i].div;\n const divProperties = task._textDivProperties.get(div);\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n task._textDivProperties.set(div, divProperties);\n continue;\n }\n // Box is rotated -- trying to find padding so rotated div will not\n // exceed its expanded bounds.\n const e = expanded[i],\n b = bounds[i];\n const m = b.m,\n c = m[0],\n s = m[1];\n // Finding intersections with expanded box.\n const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n const ts = new Float64Array(64);\n for (let j = 0, jj = points.length; j < jj; j++) {\n const t = Util.applyTransform(points[j], m);\n ts[j + 0] = c && (e.left - t[0]) / c;\n ts[j + 4] = s && (e.top - t[1]) / s;\n ts[j + 8] = c && (e.right - t[0]) / c;\n ts[j + 12] = s && (e.bottom - t[1]) / s;\n\n ts[j + 16] = s && (e.left - t[0]) / -s;\n ts[j + 20] = c && (e.top - t[1]) / c;\n ts[j + 24] = s && (e.right - t[0]) / -s;\n ts[j + 28] = c && (e.bottom - t[1]) / c;\n\n ts[j + 32] = c && (e.left - t[0]) / -c;\n ts[j + 36] = s && (e.top - t[1]) / -s;\n ts[j + 40] = c && (e.right - t[0]) / -c;\n ts[j + 44] = s && (e.bottom - t[1]) / -s;\n\n ts[j + 48] = s && (e.left - t[0]) / s;\n ts[j + 52] = c && (e.top - t[1]) / -c;\n ts[j + 56] = s && (e.right - t[0]) / s;\n ts[j + 60] = c && (e.bottom - t[1]) / -c;\n }\n // Not based on math, but to simplify calculations, using cos and sin\n // absolute values to not exceed the box (it can but insignificantly).\n const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n task._textDivProperties.set(div, divProperties);\n }\n}\n\nfunction expandBounds(width, height, boxes) {\n const bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined,\n };\n });\n expandBoundsLTR(width, bounds);\n\n const expanded = new Array(boxes.length);\n for (const b of bounds) {\n const i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0,\n };\n }\n\n // Rotating on 90 degrees and extending extended boxes. Reusing the bounds\n // array and objects.\n boxes.map(function (box, i) {\n const e = expanded[i],\n b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n\n for (const b of bounds) {\n const i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n }\n return expanded;\n}\n\nfunction expandBoundsLTR(width, bounds) {\n // Sorting by x1 coordinate and walk by the bounds in the same order.\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n\n // First we see on the horizon is a fake boundary.\n const fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0,\n };\n const horizon = [\n {\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary,\n },\n ];\n\n for (const boundary of bounds) {\n // Searching for the affected part of horizon.\n // TODO red-black tree or simple binary search\n let i = 0;\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n let j = horizon.length - 1;\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n let horizonPart, affectedBoundary;\n let q,\n k,\n maxXNew = -Infinity;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n let xNew;\n if (affectedBoundary.x2 > boundary.x1) {\n // In the middle of the previous element, new x shall be at the\n // boundary start. Extending if further if the affected boundary\n // placed on top of the current one.\n xNew =\n affectedBoundary.index > boundary.index\n ? affectedBoundary.x1New\n : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n // We have some space in between, new x in middle will be a fair\n // choice.\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n // Affected boundary has x2new set, using it as new x.\n xNew = affectedBoundary.x2New;\n }\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n // Set new x1 for current boundary.\n boundary.x1New = maxXNew;\n\n // Adjusts new x2 for the affected boundaries.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n // Was not set yet, choosing new x if possible.\n if (affectedBoundary.x2 > boundary.x1) {\n // Current and affected boundaries intersect. If affected boundary\n // is placed on top of the current, shrinking the affected.\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n // Affected boundary is touching new x, pushing it back.\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n // Fixing the horizon.\n const changedHorizon = [];\n let lastBoundary = null;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n // Checking which boundary will be visible.\n const useBoundary =\n affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n if (lastBoundary === useBoundary) {\n // Merging with previous.\n changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary,\n });\n lastBoundary = useBoundary;\n }\n }\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary,\n });\n }\n if (boundary.y2 < horizon[j].end) {\n changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary,\n });\n }\n\n // Set x2 new of boundary that is no longer visible (see overlapping case\n // above).\n // TODO more efficient, e.g. via reference counting.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n let used = false;\n for (\n k = i - 1;\n !used && k >= 0 && horizon[k].start >= affectedBoundary.y1;\n k--\n ) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (\n k = j + 1;\n !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2;\n k++\n ) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(\n horizon,\n [i, j - i + 1].concat(changedHorizon)\n );\n }\n\n // Set new x2 for all unset boundaries.\n for (const horizonPart of horizon) {\n const affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n }\n}\n\nclass TextLayerRenderTask {\n constructor({\n textContent,\n textContentStream,\n container,\n viewport,\n textDivs,\n textContentItemsStr,\n enhanceTextSelection,\n }) {\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._document = container.ownerDocument;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = createPromiseCapability();\n this._renderTimer = null;\n this._bounds = [];\n\n // Always clean-up the temporary canvas once rendering is no longer pending.\n this._capability.promise\n .finally(() => {\n if (!this._enhanceTextSelection) {\n // The `textDiv` properties are no longer needed.\n this._textDivProperties = null;\n }\n\n if (this._layoutTextCtx) {\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this._layoutTextCtx.canvas.width = 0;\n this._layoutTextCtx.canvas.height = 0;\n this._layoutTextCtx = null;\n }\n })\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n }\n\n /**\n * Promise for textLayer rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Cancel rendering of the textLayer.\n */\n cancel() {\n this._canceled = true;\n if (this._reader) {\n this._reader\n .cancel(new AbortException(\"TextLayer task cancelled.\"))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n this._reader = null;\n }\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n }\n\n /**\n * @private\n */\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n if (items[i].str === undefined) {\n if (\n items[i].type === \"beginMarkedContentProps\" ||\n items[i].type === \"beginMarkedContent\"\n ) {\n const parent = this._container;\n this._container = document.createElement(\"span\");\n this._container.classList.add(\"markedContent\");\n if (items[i].id !== null) {\n this._container.setAttribute(\"id\", `${items[i].id}`);\n }\n parent.appendChild(this._container);\n } else if (items[i].type === \"endMarkedContent\") {\n this._container = this._container.parentNode;\n }\n continue;\n }\n this._textContentItemsStr.push(items[i].str);\n appendText(this, items[i], styleCache, this._layoutTextCtx);\n }\n }\n\n /**\n * @private\n */\n _layoutText(textDiv) {\n const textDivProperties = this._textDivProperties.get(textDiv);\n\n let transform = \"\";\n if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) {\n const { fontSize, fontFamily } = textDiv.style;\n\n // Only build font string and set to context if different from last.\n if (\n fontSize !== this._layoutTextLastFontSize ||\n fontFamily !== this._layoutTextLastFontFamily\n ) {\n this._layoutTextCtx.font = `${fontSize} ${fontFamily}`;\n this._layoutTextLastFontSize = fontSize;\n this._layoutTextLastFontFamily = fontFamily;\n }\n // Only measure the width for multi-char text divs, see `appendText`.\n const { width } = this._layoutTextCtx.measureText(textDiv.textContent);\n\n if (width > 0) {\n const scale = textDivProperties.canvasWidth / width;\n if (this._enhanceTextSelection) {\n textDivProperties.scale = scale;\n }\n transform = `scaleX(${scale})`;\n }\n }\n if (textDivProperties.angle !== 0) {\n transform = `rotate(${textDivProperties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n if (this._enhanceTextSelection) {\n textDivProperties.originalTransform = transform;\n }\n textDiv.style.transform = transform;\n }\n\n if (textDivProperties.hasText) {\n this._container.appendChild(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this._container.appendChild(br);\n }\n }\n\n /**\n * @private\n */\n _render(timeout = 0) {\n const capability = createPromiseCapability();\n let styleCache = Object.create(null);\n\n // The temporary canvas is used to measure text length in the DOM.\n const canvas = this._document.createElement(\"canvas\");\n canvas.height = canvas.width = DEFAULT_FONT_SIZE;\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n canvas.mozOpaque = true;\n }\n this._layoutTextCtx = canvas.getContext(\"2d\", { alpha: false });\n\n if (this._textContent) {\n const textItems = this._textContent.items;\n const textStyles = this._textContent.styles;\n this._processItems(textItems, textStyles);\n capability.resolve();\n } else if (this._textContentStream) {\n const pump = () => {\n this._reader.read().then(({ value, done }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error(\n 'Neither \"textContent\" nor \"textContentStream\" parameters specified.'\n );\n }\n\n capability.promise.then(() => {\n styleCache = null;\n if (!timeout) {\n // Render right away\n render(this);\n } else {\n // Schedule\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n }\n\n /**\n * @param {boolean} [expandDivs]\n */\n expandTextDivs(expandDivs = false) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n const transformBuf = [],\n paddingBuf = [];\n\n for (let i = 0, ii = this._textDivs.length; i < ii; i++) {\n const div = this._textDivs[i];\n const divProps = this._textDivProperties.get(div);\n\n if (!divProps.hasText) {\n continue;\n }\n if (expandDivs) {\n transformBuf.length = 0;\n paddingBuf.length = 0;\n\n if (divProps.originalTransform) {\n transformBuf.push(divProps.originalTransform);\n }\n if (divProps.paddingTop > 0) {\n paddingBuf.push(`${divProps.paddingTop}px`);\n transformBuf.push(`translateY(${-divProps.paddingTop}px)`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingRight > 0) {\n paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingBottom > 0) {\n paddingBuf.push(`${divProps.paddingBottom}px`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingLeft > 0) {\n paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);\n transformBuf.push(\n `translateX(${-divProps.paddingLeft / divProps.scale}px)`\n );\n } else {\n paddingBuf.push(0);\n }\n\n div.style.padding = paddingBuf.join(\" \");\n if (transformBuf.length) {\n div.style.transform = transformBuf.join(\" \");\n }\n } else {\n div.style.padding = null;\n div.style.transform = divProps.originalTransform;\n }\n }\n }\n}\n\n/**\n * @param {TextLayerRenderParameters} renderParameters\n * @returns {TextLayerRenderTask}\n */\nfunction renderTextLayer(renderParameters) {\n const task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection,\n });\n task._render(renderParameters.timeout);\n return task;\n}\n\nexport { renderTextLayer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n createObjectURL,\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n isNum,\n OPS,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { DOMSVGFactory } from \"./display_utils.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\n\n/** @type {any} */\nlet SVGGraphics = class {\n constructor() {\n unreachable(\"Not implemented: SVGGraphics\");\n }\n};\n\nif (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n) {\n const SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\",\n };\n const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n const convertImgDataToPng = (function () {\n const PNG_HEADER = new Uint8Array([\n 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,\n ]);\n const CHUNK_WRAPPER_SIZE = 12;\n\n const crcTable = new Int32Array(256);\n for (let i = 0; i < 256; i++) {\n let c = i;\n for (let h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ ((c >> 1) & 0x7fffffff);\n } else {\n c = (c >> 1) & 0x7fffffff;\n }\n }\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n let crc = -1;\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = (crc >>> 8) ^ b;\n }\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n\n data[p] = (len >> 24) & 0xff;\n data[p + 1] = (len >> 16) & 0xff;\n data[p + 2] = (len >> 8) & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n\n data.set(body, p);\n p += body.length;\n\n const crc = crc32(data, offset + 4, p);\n data[p] = (crc >> 24) & 0xff;\n data[p + 1] = (crc >> 16) & 0xff;\n data[p + 2] = (crc >> 8) & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n return (b << 16) | a;\n }\n\n /**\n * @param {Uint8Array} literals The input data.\n * @returns {Uint8Array} The DEFLATE-compressed data stream in zlib format.\n * This is the required format for compressed streams in the PNG format:\n * http://www.libpng.org/pub/png/spec/1.2/PNG-Compression.html\n */\n function deflateSync(literals) {\n if (!isNodeJS) {\n // zlib is certainly not available outside of Node.js. We can either use\n // the pako library for client-side DEFLATE compression, or use the\n // canvas API of the browser to obtain a more optimal PNG file.\n return deflateSyncUncompressed(literals);\n }\n try {\n // NOTE: This implementation is far from perfect, but already way better\n // than not applying any compression.\n //\n // A better algorithm will try to choose a good predictor/filter and\n // then choose a suitable zlib compression strategy (e.g. 3,Z_RLE).\n //\n // Node v0.11.12 zlib.deflateSync is introduced (and returns a Buffer).\n // Node v3.0.0 Buffer inherits from Uint8Array.\n // Node v8.0.0 zlib.deflateSync accepts Uint8Array as input.\n let input;\n // eslint-disable-next-line no-undef\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n // eslint-disable-next-line no-undef\n input = Buffer.from(literals);\n }\n const output = __non_webpack_require__(\"zlib\").deflateSync(input, {\n level: 9,\n });\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n warn(\n \"Not compressing PNG because zlib.deflateSync is unavailable: \" + e\n );\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n // An implementation of DEFLATE with compression level 0 (Z_NO_COMPRESSION).\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78; // compression method and flags\n idat[pi++] = 0x9c; // flags\n\n let pos = 0;\n while (len > maxBlockLength) {\n // writing non-final DEFLATE blocks type 0 and length of 65535\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n // writing non-final DEFLATE blocks type 0\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = (len >> 8) & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = ((~len & 0xffff) >> 8) & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n\n const adler = adler32(literals, 0, literals.length); // checksum\n idat[pi++] = (adler >> 24) & 0xff;\n idat[pi++] = (adler >> 16) & 0xff;\n idat[pi++] = (adler >> 8) & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n\n switch (kind) {\n case ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = (width + 7) >> 3;\n break;\n case ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n case ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n default:\n throw new Error(\"invalid format\");\n }\n\n // prefix every row with predictor 0\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0; // no prediction\n literals.set(\n bytes.subarray(offsetBytes, offsetBytes + lineSize),\n offsetLiterals\n );\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === ImageKind.GRAYSCALE_1BPP && isMask) {\n // inverting for image masks\n offsetLiterals = 0;\n for (let y = 0; y < height; y++) {\n offsetLiterals++; // skipping predictor\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n const ihdr = new Uint8Array([\n (width >> 24) & 0xff,\n (width >> 16) & 0xff,\n (width >> 8) & 0xff,\n width & 0xff,\n (height >> 24) & 0xff,\n (height >> 16) & 0xff,\n (height >> 8) & 0xff,\n height & 0xff,\n bitDepth, // bit depth\n colorType, // color type\n 0x00, // compression method\n 0x00, // filter method\n 0x00, // interlace method\n ]);\n const idat = deflateSync(literals);\n\n // PNG consists of: header, IHDR+data, IDAT+data, and IEND.\n const pngLength =\n PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n\n return createObjectURL(data, \"image/png\", forceDataSchema);\n }\n\n // eslint-disable-next-line no-shadow\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind =\n imgData.kind === undefined ? ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n })();\n\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n\n this.textMatrix = IDENTITY_MATRIX;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n\n // Default foreground and background colors\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n\n this.dashArray = [];\n this.dashPhase = 0;\n\n this.dependencies = [];\n\n // Clipping\n this.activeClipUrl = null;\n this.clipGroup = null;\n\n this.maskId = \"\";\n }\n\n clone() {\n return Object.create(this);\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n }\n\n // eslint-disable-next-line no-inner-declarations\n function opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({ fnId: 92, fn: \"group\", items: [] });\n tmp.push(opTree);\n opTree = opTree[opTree.length - 1].items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n return opTree;\n }\n\n /**\n * Format a float number as a string.\n *\n * @param value {number} - The float number to format.\n * @returns {string}\n */\n // eslint-disable-next-line no-inner-declarations\n function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n const s = value.toFixed(10);\n let i = s.length - 1;\n if (s[i] !== \"0\") {\n return s;\n }\n\n // Remove trailing zeros.\n do {\n i--;\n } while (s[i] === \"0\");\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n }\n\n /**\n * Format a transform matrix as a string. The standard rotation, scale and\n * translation matrices are replaced by their shorter forms, and for\n * identity matrices an empty string is returned to save memory.\n *\n * @param m {Array} - The transform matrix to format.\n * @returns {string}\n */\n // eslint-disable-next-line no-inner-declarations\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = (Math.acos(m[0]) * 180) / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n }\n return (\n `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` +\n `${pf(m[5])})`\n );\n }\n\n // The counts below are relevant for all pages, so they have to be global\n // instead of being members of `SVGGraphics` (which is recreated for\n // each page).\n let clipCount = 0;\n let maskCount = 0;\n let shadingCount = 0;\n\n SVGGraphics = class {\n constructor(commonObjs, objs, forceDataSchema = false) {\n this.svgFactory = new DOMSVGFactory();\n\n this.current = new SVGExtraState();\n this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n\n // In `src/shared/util.js` the operator names are mapped to IDs.\n // The list below represents the reverse of that, i.e., it maps IDs\n // to operator names.\n this._operatorIdMapping = [];\n for (const op in OPS) {\n this._operatorIdMapping[OPS[op]] = op;\n }\n }\n\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== OPS.dependency) {\n continue;\n }\n\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n return Promise.all(this.current.dependencies);\n }\n\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = Util.transform(\n this.transformMatrix,\n transformMatrix\n );\n this.tgrp = null;\n }\n\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n const svgElement = this._initialize(viewport);\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i],\n });\n }\n return opListToTree(opList);\n }\n\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n\n switch (fnId | 0) {\n case OPS.beginText:\n this.beginText();\n break;\n case OPS.dependency:\n // Handled in `loadDependencies`, so no warning should be shown.\n break;\n case OPS.setLeading:\n this.setLeading(args);\n break;\n case OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n case OPS.setFont:\n this.setFont(args);\n break;\n case OPS.showText:\n this.showText(args[0]);\n break;\n case OPS.showSpacedText:\n this.showText(args[0]);\n break;\n case OPS.endText:\n this.endText();\n break;\n case OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n case OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n case OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n case OPS.setHScale:\n this.setHScale(args[0]);\n break;\n case OPS.setTextMatrix:\n this.setTextMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n case OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n case OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n case OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n case OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n case OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n case OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n case OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n case OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n case OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n case OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n case OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n case OPS.setGState:\n this.setGState(args[0]);\n break;\n case OPS.fill:\n this.fill();\n break;\n case OPS.eoFill:\n this.eoFill();\n break;\n case OPS.stroke:\n this.stroke();\n break;\n case OPS.fillStroke:\n this.fillStroke();\n break;\n case OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case OPS.clip:\n this.clip(\"nonzero\");\n break;\n case OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n case OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n case OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n case OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n case OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n case OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case OPS.closePath:\n this.closePath();\n break;\n case OPS.closeStroke:\n this.closeStroke();\n break;\n case OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n case OPS.nextLine:\n this.nextLine();\n break;\n case OPS.transform:\n this.transform(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n case OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(opTreeElement.items);\n break;\n default:\n warn(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.hypot(a, b);\n\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.appendChild(current.tspan);\n }\n\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = IDENTITY_MATRIX;\n current.lineMatrix = IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return;\n }\n\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n let x = 0;\n for (const glyph of glyphs) {\n if (glyph === null) {\n // Word break\n x += fontDirection * wordSpacing;\n continue;\n } else if (isNum(glyph)) {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n let vx;\n const vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n current.tspan.textContent += character;\n } else {\n // TODO: To assist with text selection, we should replace the missing\n // character with a space character if charWidth is not zero.\n // But we cannot just do \"character = ' '\", because the ' ' character\n // might actually map to a different glyph.\n }\n\n let charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n }\n current.tspan.setAttributeNS(\n null,\n \"x\",\n current.xcoords.map(pf).join(\" \")\n );\n if (vertical) {\n current.tspan.setAttributeNS(\n null,\n \"y\",\n current.ycoords.map(pf).join(\" \")\n );\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === TextRenderingMode.ADD_TO_PATH) {\n // Workaround for Firefox: We must set fill=\"transparent\" because\n // fill=\"none\" would generate an empty clipping path.\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n // Include the text rise in the text matrix since the `pm` function\n // creates the SVG element's `translate` entry (work on a copy to avoid\n // altering the original text matrix).\n let textMatrix = current.textMatrix;\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(\n null,\n \"transform\",\n `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`\n );\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.appendChild(current.tspan);\n current.txtgrp.appendChild(current.txtElement);\n\n this._ensureTransformGroup().appendChild(current.txtElement);\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\n \"addFontStyle: No font data available, \" +\n 'ensure that the \"fontExtraProperties\" API parameter is set.'\n );\n }\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.appendChild(this.cssStyle);\n }\n\n const url = createObjectURL(\n fontObj.data,\n fontObj.mimetype,\n this.forceDataSchema\n );\n this.cssStyle.textContent +=\n `@font-face { font-family: \"${fontObj.loadedName}\";` +\n ` src: url(${url}); }\\n`;\n }\n\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n\n if (\n this.embedFonts &&\n !fontObj.missingFile &&\n !this.embeddedFonts[fontObj.loadedName]\n ) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n\n endText() {\n const current = this.current;\n if (\n current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG &&\n current.txtElement?.hasChildNodes()\n ) {\n // If no glyphs are shown (i.e. no child nodes), no clipping occurs.\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n // Path properties\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = Util.makeHexColor(r, g, b);\n }\n\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n\n setFillRGBColor(r, g, b) {\n this.current.fillColor = Util.makeHexColor(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n\n shadingFill(args) {\n const width = this.viewport.width;\n const height = this.viewport.height;\n const inv = Util.inverseTransform(this.transformMatrix);\n const bl = Util.applyTransform([0, 0], inv);\n const br = Util.applyTransform([0, height], inv);\n const ul = Util.applyTransform([width, 0], inv);\n const ur = Util.applyTransform([width, height], inv);\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n this._ensureTransformGroup().appendChild(rect);\n }\n\n /**\n * @private\n */\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n return this._makeShadingPattern(args);\n }\n\n /**\n * @private\n */\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n\n const tilingId = `shading${shadingCount++}`;\n const [tx0, ty0, tx1, ty1] = Util.normalizeRect([\n ...Util.applyTransform([x0, y0], matrix),\n ...Util.applyTransform([x1, y1], matrix),\n ]);\n const [xscale, yscale] = Util.singularValueDecompose2dScale(matrix);\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n\n // Save current state.\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n if (paintType === 2) {\n const cssColor = Util.makeHexColor(...color);\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n this.executeOpTree(this.convertOpList(operatorList));\n\n // Restore saved state.\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n\n tiling.appendChild(bbox.childNodes[0]);\n this.defs.appendChild(tiling);\n return `url(#${tilingId})`;\n }\n\n /**\n * @private\n */\n _makeShadingPattern(args) {\n if (typeof args === \"string\") {\n args = this.objs.get(args);\n }\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.appendChild(stop);\n }\n this.defs.appendChild(gradient);\n return `url(#${shadingId})`;\n case \"Mesh\":\n warn(\"Unimplemented pattern Mesh\");\n return null;\n case \"Dummy\":\n return \"hotpink\";\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n\n for (const op of ops) {\n switch (op | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n d.push(\n \"M\",\n pf(x),\n pf(y),\n \"L\",\n pf(xw),\n pf(y),\n \"L\",\n pf(xw),\n pf(yh),\n \"L\",\n pf(x),\n pf(yh),\n \"Z\"\n );\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3]),\n pf(x),\n pf(y)\n );\n j += 6;\n break;\n case OPS.curveTo2:\n d.push(\n \"C\",\n pf(x),\n pf(y),\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3])\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(x),\n pf(y),\n pf(x),\n pf(y)\n );\n j += 4;\n break;\n case OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n\n d = d.join(\" \");\n\n if (\n current.path &&\n ops.length > 0 &&\n ops[0] !== OPS.rectangle &&\n ops[0] !== OPS.moveTo\n ) {\n // If a path does not start with an OPS.rectangle or OPS.moveTo, it has\n // probably been divided into two OPS.constructPath operators by\n // OperatorList. Append the commands to the previous path element.\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n this._ensureTransformGroup().appendChild(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n\n // Saving a reference in current.element so that it can be addressed\n // in 'fill' and 'stroke'\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n\n endPath() {\n const current = this.current;\n\n // Painting operators end a path.\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n // Add the current path to a clipping path.\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n // A deep clone is needed when text is used as a clipping path.\n const clipElement = current.element.cloneNode(true);\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n this.pendingClip = null;\n clipPath.appendChild(clipElement);\n this.defs.appendChild(clipPath);\n\n if (current.activeClipUrl) {\n // The previous clipping group content can go out of order -- resetting\n // cached clipGroups.\n current.clipGroup = null;\n for (const prev of this.extraStack) {\n prev.clipGroup = null;\n }\n // Intersect with the previous clipping path.\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n current.activeClipUrl = `url(#${clipId})`;\n\n this.tgrp = null;\n }\n\n clip(type) {\n this.pendingClip = type;\n }\n\n closePath() {\n const current = this.current;\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value);\n break;\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n case \"ca\":\n this.setFillAlpha(value);\n break;\n default:\n warn(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n\n fill() {\n const current = this.current;\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n\n stroke() {\n const current = this.current;\n if (current.element) {\n this._setStrokeAttributes(current.element);\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n\n /**\n * @private\n */\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(\n null,\n \"stroke-width\",\n pf(lineWidthScale * current.lineWidth) + \"px\"\n );\n element.setAttributeNS(\n null,\n \"stroke-dasharray\",\n dashArray.map(pf).join(\" \")\n );\n element.setAttributeNS(\n null,\n \"stroke-dashoffset\",\n pf(lineWidthScale * current.dashPhase) + \"px\"\n );\n }\n\n eoFill() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n this.fill();\n }\n\n fillStroke() {\n // Order is important since stroke wants fill to be none.\n // First stroke, then if fill needed, it will be overwritten.\n this.stroke();\n this.fill();\n }\n\n eoFillStroke() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n this.fillStroke();\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n }\n\n paintImageXObject(objId) {\n const imgData = objId.startsWith(\"g_\")\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(\n null,\n \"transform\",\n `scale(${pf(1 / width)} ${pf(-1 / height)})`\n );\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n }\n\n paintImageMaskXObject(imgData) {\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n\n this.defs.appendChild(mask);\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(\n matrix[0],\n matrix[1],\n matrix[2],\n matrix[3],\n matrix[4],\n matrix[5]\n );\n }\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {}\n\n /**\n * @private\n */\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n\n // Create the definitions element.\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.appendChild(definitions);\n this.defs = definitions;\n\n // Create the root group element, which acts a container for all other\n // groups and applies the viewport transform.\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.appendChild(rootGroup);\n\n // For the construction of the SVG image we are only interested in the\n // root group, so we expose it as the entry point of the SVG image for\n // the other code in this class.\n this.svg = rootGroup;\n\n return svg;\n }\n\n /**\n * @private\n */\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.appendChild(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n return this.current.clipGroup;\n }\n\n /**\n * @private\n */\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().appendChild(this.tgrp);\n } else {\n this.svg.appendChild(this.tgrp);\n }\n }\n return this.tgrp;\n }\n };\n}\n\nexport { SVGGraphics };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n} from \"../shared/util.js\";\nimport {\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst fs = __non_webpack_require__(\"fs\");\nconst http = __non_webpack_require__(\"http\");\nconst https = __non_webpack_require__(\"https\");\nconst url = __non_webpack_require__(\"url\");\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n // Prepending 'file:///' to Windows absolute path.\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n // Changes protocol to 'file:' if url refers to filesystem.\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp =\n this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n // Check if url refers to filesystem.\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNodeStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = this.isFsUrl\n ? new PDFNodeStreamFsFullReader(this)\n : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl\n ? new PDFNodeStreamFsRangeReader(this, start, end)\n : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length; // optional\n this._loaded = 0;\n this._filename = null;\n\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._readableStream = null;\n this._readCapability = createPromiseCapability();\n this._headersCapability = createPromiseCapability();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = createPromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength,\n });\n }\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readable to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n\n // Destroy ReadableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = createPromiseCapability();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = createPromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n if (this.onProgress) {\n this.onProgress({ loaded: this._loaded });\n }\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readableStream to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // Destroy readableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers,\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n\n const getResponseHeader = name => {\n // Make sure that headers name are in lower case, as mentioned\n // here: https://nodejs.org/api/http.html#http_message_headers.\n return this._readableStream.headers[name.toLowerCase()];\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n // Note: `request.end(data)` is used to write `data` to request body\n // and notify end of request. But one should always call `request.end()`\n // even if there is no data to write -- (to notify the end of request).\n this._request.end();\n }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n this._httpHeaders = {};\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n // Setting right content length.\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n });\n }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n this._setReadableStream(fs.createReadStream(path, { start, end: end - 1 }));\n }\n}\n\nexport { PDFNodeStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n MissingPDFException,\n UnexpectedResponseException,\n} from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange,\n}) {\n assert(rangeChunkSize > 0, \"Range chunk size must be larger than zero\");\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined,\n };\n\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n // The file size is smaller than the size of two chunks, so it does not\n // make any sense to abort the request and retry with a range request.\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch (ex) {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || (status === 0 && url.startsWith(\"file:\"))) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(\n `Unexpected server response (${status}) while retrieving PDF \"${url}\".`,\n status\n );\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\nexport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToBytes } from \"../shared/util.js\";\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Support UTF-8 decoding when TextDecoder is unsupported.\n// - Move return to the end of the function to prevent Babel from dropping the\n// function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n\n // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n // filename*n*=part\n // filename*n=part\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n // RFC 2047, section\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n // filename=value (RFC 5987, section 4.1).\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // After this line there are only function declarations. We cannot put\n // \"return\" here for readability because babel would then drop the function\n // declarations...\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\n \"(?:^|;)\\\\s*\" +\n attributePattern +\n \"\\\\s*=\\\\s*\" +\n // Captures: value = token | quoted-string\n // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n \"(\" +\n '[^\";\\\\s][^;\\\\s]*' +\n \"|\" +\n '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n \")\",\n flags\n );\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch (e) {\n // TextDecoder constructor threw - unrecognized encoding.\n // Or TextDecoder API is not available (in IE / Edge).\n if (/^utf-?8$/i.test(encoding)) {\n // UTF-8 is commonly used, try to support it in another way:\n try {\n value = decodeURIComponent(escape(value));\n needsEncodingFixup = false;\n } catch (err) {}\n }\n }\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n // Maybe multi-byte UTF-8.\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n // Try iso-8859-1 encoding.\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n // Iterate over all filename*n= and filename*n*= with n being an integer\n // of at least zero. Any non-zero number must not start with '0'.\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match; // eslint-disable-line prefer-const\n n = parseInt(n, 10);\n if (n in matches) {\n // Ignore anything after the invalid second filename*0.\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n // Numbers must be consecutive. Truncate when there is a hole.\n break;\n }\n let [quot, part] = matches[n]; // eslint-disable-line prefer-const\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n // Find the first unescaped \" and terminate there.\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1; // Truncates and stop the iteration.\n }\n parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n // Decodes \"ext-value\" from RFC 5987.\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n // Some servers send \"filename*=\" without encoding 'language' prefix,\n // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n // RFC 2047-decode the result. Firefox tried to drop support for it, but\n // backed out because some servers use it - https://bugzil.la/875615\n // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n // We are more strict and only recognize RFC 2047-encoding if the value\n // starts with \"=?\", since then it is likely that the full value is\n // RFC 2047-encoded.\n\n // Firefox also decodes words even where RFC 2047 section 5 states:\n // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n // RFC 2047, section 2.4\n // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n // charset = token (but let's restrict to characters that denote a\n // possibly valid encoding).\n // encoding = q or b\n // encoded-text = any printable ASCII character other than ? or space.\n // ... but Firefox permits ? and space.\n return value.replace(\n /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n // RFC 2047 section 4.2.\n text = text.replace(/_/g, \" \");\n text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n try {\n text = atob(text);\n } catch (e) {}\n return textdecode(charset, text);\n }\n );\n }\n\n return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n createPromiseCapability,\n stringToBytes,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n const array = stringToBytes(data);\n return array.buffer;\n}\n\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = (this.isHttp && args.httpHeaders) || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n this.getXhr =\n args.getXhr ||\n function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end,\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = this.getXhr();\n const xhrId = this.currXhrId++;\n const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\n\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n\n xhr.send(null);\n\n return xhrId;\n }\n\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n pendingRequest.onProgress?.(evt);\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n // The XHR request might have been aborted in onHeadersReceived()\n // callback, in which case we should abort request.\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n // Success status == 0 can be on ftp, file and other protocols.\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n\n // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n // \"A server MAY ignore the Range header\". This means it's possible to\n // get a 200 rather than a 206 response from a range request.\n const ok_response_on_range_request =\n xhrStatus === OK_RESPONSE &&\n pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (\n !ok_response_on_range_request &&\n xhrStatus !== pendingRequest.expectedStatus\n ) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n\n const chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk,\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk,\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\n\n/** @implements {IPDFStream} */\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials,\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNetworkStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n this._manager,\n this._source\n );\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(\n this._manager,\n begin,\n end\n );\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = createPromiseCapability();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length; // Optional\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n\n this.onProgress = null;\n }\n\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n if (this._isRangeSupported) {\n // NOTE: by cancelling the full request, and then issuing range\n // requests, there will be an issue for sites where you can only\n // request the pdf once. However, if this is the case, then the\n // server should not be returning that it can support range requests.\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: data.chunk, done: false });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n this._headersReceivedCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength,\n });\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _close() {\n this.onClosed?.(this);\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._close();\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({ loaded: evt.loaded });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\nexport { PDFNetworkStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./fetch_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController?.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\",\n };\n}\n\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n headers.append(property, value);\n }\n return headers;\n}\n\n/** @implements {IPDFStream} */\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFFetchStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = createPromiseCapability();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n })\n .catch(this._headersCapability.reject);\n\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength,\n });\n }\n const buffer = new Uint8Array(value).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = createPromiseCapability();\n this._isStreamingSupported = !source.disableStream;\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n })\n .catch(this._readCapability.reject);\n\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n if (this.onProgress) {\n this.onProgress({ loaded: this._loaded });\n }\n const buffer = new Uint8Array(value).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n}\n\nexport { PDFFetchStream };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable sort-exports/sort-exports */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").PDFDocumentLoadingTask} PDFDocumentLoadingTask */\n/** @typedef {import(\"./display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./display/api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display/api\").RenderTask} RenderTask */\n\nimport {\n addLinkAttributes,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isPdfFile,\n isValidFetchUrl,\n LinkTarget,\n loadScript,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n} from \"./display/display_utils.js\";\nimport {\n AnnotationMode,\n CMapCompressionType,\n createObjectURL,\n createPromiseCapability,\n createValidAbsoluteUrl,\n InvalidPDFException,\n MissingPDFException,\n OPS,\n PasswordResponses,\n PermissionFlag,\n removeNullCharacters,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n Util,\n VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n build,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFWorker,\n setPDFNetworkStreamFactory,\n version,\n} from \"./display/api.js\";\nimport { AnnotationLayer } from \"./display/annotation_layer.js\";\nimport { GlobalWorkerOptions } from \"./display/worker_options.js\";\nimport { isNodeJS } from \"./shared/is_node.js\";\nimport { renderTextLayer } from \"./display/text_layer.js\";\nimport { SVGGraphics } from \"./display/svg.js\";\nimport { XfaLayer } from \"./display/xfa_layer.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nif (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n const streamsPromise = Promise.all([\n import(\"pdfjs/display/network.js\"),\n import(\"pdfjs/display/fetch_stream.js\"),\n ]);\n\n setPDFNetworkStreamFactory(async params => {\n const [{ PDFNetworkStream }, { PDFFetchStream }] = await streamsPromise;\n if (isValidFetchUrl(params.url)) {\n return new PDFFetchStream(params);\n }\n return new PDFNetworkStream(params);\n });\n} else if (PDFJSDev.test(\"GENERIC || CHROME\")) {\n if (PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const { PDFNodeStream } = require(\"./display/node_stream.js\");\n\n setPDFNetworkStreamFactory(params => {\n return new PDFNodeStream(params);\n });\n } else {\n const { PDFNetworkStream } = require(\"./display/network.js\");\n const { PDFFetchStream } = require(\"./display/fetch_stream.js\");\n\n setPDFNetworkStreamFactory(params => {\n if (isValidFetchUrl(params.url)) {\n return new PDFFetchStream(params);\n }\n return new PDFNetworkStream(params);\n });\n }\n}\n\nexport {\n // From \"./display/display_utils.js\":\n addLinkAttributes,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n isPdfFile,\n LinkTarget,\n loadScript,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n getXfaPageViewport,\n // From \"./shared/util.js\":\n AnnotationMode,\n CMapCompressionType,\n createObjectURL,\n createPromiseCapability,\n createValidAbsoluteUrl,\n InvalidPDFException,\n MissingPDFException,\n OPS,\n PasswordResponses,\n PermissionFlag,\n removeNullCharacters,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n Util,\n VerbosityLevel,\n // From \"./display/api.js\":\n build,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFWorker,\n version,\n // From \"./display/annotation_layer.js\":\n AnnotationLayer,\n // From \"./display/worker_options.js\":\n GlobalWorkerOptions,\n // From \"./display/text_layer.js\":\n renderTextLayer,\n // From \"./display/svg.js\":\n SVGGraphics,\n // From \"./display/xfa_layer.js\":\n XfaLayer,\n};\n"],"names":["DEFAULT_LINK_REL","SVG_NS","PixelsPerInch","CSS","PDF","shadow","constructor","ownerDocument","globalThis","_createCanvas","canvas","asTypedArray","isValidFetchUrl","document","response","fetch","stringToBytes","request","XMLHttpRequest","data","resolve","reject","_fetchData","cMapData","fetchData","_createSVG","offsetX","offsetY","dontFlip","centerX","viewBox","centerY","rotation","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","Math","offsetCanvasY","width","height","clone","scale","convertToViewportPoint","convertToViewportRectangle","topLeft","rect","bottomRight","convertToPdfPoint","LinkTarget","NONE","SELF","BLANK","PARENT","TOP","enabled","assert","url","urlNullRemoved","removeNullCharacters","link","targetStr","ii","i","anchor","query","end","defaultFilename","isDataScheme","warn","reURI","reFilename","splitURI","suggestedFilename","decodeURIComponent","Object","time","name","Date","timeEnd","start","toString","outBuf","longest","duration","baseUrl","protocol","removeScriptElement","script","console","toDateObject","isString","pdfDateStringRegex","matches","year","parseInt","month","day","hour","minute","second","universalTimeRelation","offsetHour","offsetMinute","xfaPage","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","RenderingIntentFlag","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","VerbosityLevel","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","UNSUPPORTED_FEATURES","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","Number","unreachable","base","other","options","dots","stringToUTF8String","absoluteUrl","_isValidProtocol","enumerable","configurable","writable","BaseException","NullCharactersRegExp","InvisibleCharactersRegExp","replaceInvisible","str","bytes","length","MAX_ARGUMENT_COUNT","String","strBuf","chunkEnd","chunk","arr","resultLength","arrayByteLength","pos","item","itemLength","value","obj","buffer8","view32","IsLittleEndianCached","isLittleEndian","IsEvalSupportedCached","isEvalSupported","hexNumbers","Array","n","makeHexColor","m1","m2","applyTransform","xt","p","m","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","Util","p2","r","p3","p4","inverseTransform","apply3dTransform","v","singularValueDecompose2dScale","transpose","a","b","c","first","sx","sy","normalizeRect","intersect","orderedX","rect1","rect2","orderedY","result","bezierBoundingBox","tvalues","bounds","t","b2ac","sqrtb2ac","t1","t2","j","jlen","mt","PDFStringTranslateTable","code","match","buf","char","escape","unescape","encodeURIComponent","arr1","arr2","date","buffer","capability","isSettled","get","contentType","forceDataSchema","URL","type","digits","b1","b2","b3","d1","d2","d3","d4","isNodeJS","process","create","context","reset","canvasAndContext","destroy","isCompressed","compressionType","reason","svg","createElement","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DefaultCanvasFactory","DefaultCMapReaderFactory","DefaultStandardFontDataFactory","createPDFNetworkStream","task","src","source","isArrayBuffer","range","params","rangeTransport","worker","window","isNaN","setVerbosityLevel","workerParams","port","GlobalWorkerOptions","PDFWorker","docId","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","initialData","progressiveDone","contentDispositionFilename","disableRange","disableStream","httpHeaders","withCredentials","rangeChunkSize","messageHandler","transport","pdfDataRangeTransport","workerId","apiVersion","password","disableAutoFetch","maxImageSize","disableFontFace","docBaseUrl","ignoreErrors","fontExtraProperties","enableXfa","useSystemFonts","cMapUrl","standardFontDataUrl","idCounters","doc","PDFDocumentLoadingTask","promise","addRangeListener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","listener","onDataProgress","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","abort","deprecated","streamTypes","fontTypes","annotationStorage","numPages","fingerprints","stats","isPureXfa","allXfaHtml","getPage","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJavaScript","getJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getData","getDownloadInfo","cleanup","keepLoadedFonts","loadingParams","loadingTask","saveDocument","getFieldObjects","hasJSActions","getCalculationOrderIds","pdfBug","pageNumber","rotate","ref","userUnit","view","getViewport","getAnnotations","intent","intentArgs","annotations","annotation","getXfa","render","annotationMode","imageLayer","canvasFactory","background","optionalContentConfigPromise","annotationCanvasMap","arguments","intentState","clearTimeout","canvasFactoryInstance","intentPrint","fnArray","argsArray","lastChunk","complete","error","internalRenderTask","callback","objs","commonObjs","operatorList","pageIndex","useRequestAnimationFrame","renderTask","Promise","getOperatorList","opListTask","streamTextContent","normalizeWhitespace","disableCombineTextItems","includeMarkedContent","TEXT_CONTENT_CHUNK_SIZE","combineTextItems","highWaterMark","size","textContent","getTextContent","xfa","XfaText","readableStream","reader","pump","items","styles","getStructTree","_destroy","waitOn","force","resetStats","_tryCleanup","renderTasks","_startRenderPage","_renderPageChunk","operatorListChunk","_pumpOperatorList","renderingIntent","_abortOperatorList","curIntentState","postMessage","cloned","transfers","fallbackCloneValue","desc","event","cloneValue","addEventListener","removeEventListener","terminate","PDFWorkerUtil","isWorkerDisabled","fallbackWorkerSrc","fakeWorkerId","pdfjsFilePath","wrapper","_workerPorts","_initializeFromPort","_initialize","workerSrc","isSameOrigin","terminateEarly","onWorkerError","sendTest","testObj","info","_setupFakeWorker","WorkerMessageHandler","id","workerHandler","fromPort","_mainThreadWorkerMessageHandler","_setupFakeWorkerGlobal","loader","mainWorkerMessageHandler","eval","loadScript","docStats","pageCache","pagePromises","metadataPromise","onUnsupportedFeature","styleElement","getRenderingIntent","isOpList","lastModified","cacheKey","page","terminated","setupMessageHandler","evt","loaded","total","sink","readyReason","headersCapability","fullReader","isStreamingSupported","isRangeSupported","contentLength","rangeReader","pdfInfo","ex","exception","updatePassword","exportedError","exportedData","fontRegistry","registerFont","pageProxy","MAX_IMAGE_SIZE_TO_STORE","imageData","_onUnsupportedFeature","cachedPromise","pageInfo","filename","getDocJSActions","getPageJSActions","results","metadata","startCleanup","cleanupSuccessful","_ensureObj","resolved","has","clear","cancel","canvasInUse","completed","initializeGraphics","transparency","InternalRenderTask","operatorListChanged","_continue","_scheduleNext","_next","version","build","addNativeFontFace","insertRule","styleSheet","bind","nativeFontFace","featureId","rule","_queueLoadingCallback","isFontLoadingAPISupported","hasFonts","isSyncFontLoadingSupported","_loadTestFont","_prepareFontLoadEvent","FontLoader","requests","nextRequestId","supported","navigator","otherRequest","setTimeout","done","getLoadTestFont","atob","offset","chunk1","s","chunk2","ctx","called","isFontReady","loadTestFontId","COMMENT_OFFSET","spliceString","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","int32","string32","btoa","names","div","span","translatedData","createNativeFontFace","css","weight","createFontFaceRule","bytesToString","getPathGenerator","cmds","jsBuf","args","current","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","fs","__non_webpack_require__","Canvas","getValue","setValue","modified","getAll","objectFromMap","_setModified","resetModified","serializable","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","EXECUTION_TIME","EXECUTION_STEPS","COMPILE_TYPE3_GLYPHS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","LINEWIDTH_SCALE_FACTOR","destCtx","set","ad_bc","bc_ad","old","prev","cosValue","sinValue","getCanvas","canvasEntry","addContextCurrentTransform","POINT_TO_PROCESS_LIMIT","POINT_TYPES","imgData","width1","points","lineSize","data0","elem","mask","count","j0","sum","steps","outlines","coords","p0","step","pp","drawOutline","k","kk","o","l","ll","setCurrentPoint","updatePathMinMax","updateCurvePathMinMax","box","getPathBoundingBox","pathType","PathType","xStrokePad","yStrokePad","updateClipFromPath","startNewPathAndClipBox","getClippedPathBoundingBox","transferMaps","partialChunkHeight","fullChunks","totalChunks","chunkImgData","srcPos","dest","transferMapRed","transferMapGreen","transferMapBlue","transferMapGray","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","thisChunkHeight","destPos","srcDiff","kEnd","kEndUnrolled","srcByte","hasTransferMaps","elemsInThisChunk","properties","property","sourceCtx","alpha","alpha_","r0","g0","b0","maskData","transferMap","layerData","y","hasBackdrop","backdrop","subtype","composeFn","PIXELS_TO_PROCESS","chunkSize","row","chunkHeight","maskCtx","layerOffsetX","layerCtx","composeSMaskBackdrop","layerBox","layerOffsetY","layerWidth","layerHeight","genericComposeSMask","actualScale","interpolate","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","beginDrawing","transparentCanvas","resetCtxToDefault","viewport","executeOperatorList","executionStartIdx","argsArrayLen","chunkOperations","endTime","stepper","fnId","objsPool","depObjId","continueCallback","endDrawing","_scaleImage","img","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","tmpCanvas","tmpCtx","_createMaskCanvas","fillColor","isPatternFill","maskCanvas","putBinaryImageMask","objToCanvas","maskToCanvas","cord1","cord2","drawnWidth","drawnHeight","fillCanvas","fillCtx","scaled","getImageSmoothingEnabled","inverse","states","state","key","checkSMaskState","inSMaskMode","beginSMaskMode","cacheId","scratchCanvas","copyCtxState","mirrorContextOperations","endSMaskMode","compose","dirtyBox","suspendedCtx","composeSMask","x","ops","xw","yh","startX","startY","consumePath","strokeColor","lineWidth","needRestore","paths","path","fontObj","bold","italic","typeface","browserFontSize","paintChar","textRenderingMode","fontSize","fillStrokeMode","isAddToPathSet","patternFill","addToPath","isFontSubpixelAAEnabled","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","glyphs","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","pattern","patternTransform","resetLineWidthToOne","glyph","isNum","restoreNeeded","spacing","character","accent","vmetric","vx","vy","scaledX","scaledY","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","showType3Text","fontMatrix","isTextInvisible","spacingLength","transformed","urx","ury","getColorN_Pattern","IR","color","baseTransform","canvasGraphicsFactory","createCanvasGraphics","_getPattern","matrix","getShadingPattern","inv","bl","br","ul","ur","x0","y0","x1","y1","bbox","currentCtx","group","currentTransform","canvasBounds","scaleX","scaleY","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","canvasWidth","canvasHeight","skewX","skewY","positions","trans","images","image","objId","map","w","h","imgToPaint","putBinaryImageData","position","left","top","entry","visible","tag","getSinglePixelWidth","absDet","sqNorm1","sqNorm2","pixelHeight","getCanvasPosition","isContentVisible","CanvasGraphics","SHADING","region","getPattern","_createGradient","grad","colorStop","ownerBBox","owner","applyBoundingBox","domMatrix","colors","rowSize","tmp","c1","c2","c3","x2","y2","x3","y3","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","ps","figure","cs","verticesPerRow","rows","cols","q","drawTriangle","_createMeshCanvas","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","combinedScale","paddedWidth","paddedHeight","cachedCanvases","backgroundColor","drawFigure","matrixScale","temporaryPatternCanvas","PaintType","COLORED","UNCOLORED","createPatternCanvas","xstep","ystep","paintType","tilingType","curMatrixScale","dimx","dimy","graphics","adjustedX0","adjustedY0","adjustedX1","adjustedY1","getSizeAndScale","maxSize","TilingPattern","clipBbox","bboxWidth","bboxHeight","setFillAndStrokeStyleToContext","cssColor","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","callbackId","wrapReason","action","cbSourceName","cbTargetName","comObj","sourceName","targetName","on","ah","send","sendWithPromise","sendWithStream","streamId","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","stream","cancelCapability","_createStreamSink","self","streamSink","enqueue","lastDesiredSize","close","sinkCapability","onPull","onCancel","isCancelled","ready","success","_processStreamMessage","streamController","_deleteStreamController","metadataMap","getRaw","_evaluateVisibilityExpression","array","operator","element","isVisible","setVisibility","getOrder","getGroups","getGroup","_onReceiveData","found","_progressiveDataLength","_onProgress","firstReader","_onProgressiveDone","_removeRangeReader","getFullReader","queuedChunks","getRangeReader","cancelAllRequests","isPdfFile","_enqueue","requestCapability","headersReady","read","requestsCapability","output","node","walk","shouldBuildText","DEFAULT_TAB_INDEX","GetElementsByNameSet","parameters","fieldType","isRenderable","ignoreBorder","createQuadrilaterals","_createContainer","container","horizontalRadius","verticalRadius","radius","borderColor","_createQuadrilaterals","quadrilaterals","savedRect","quadPoint","_createPopup","trigger","popupElement","titleObj","modificationDate","contentsObj","richText","hideWrapper","popup","_renderQuadrilaterals","quadrilateral","_getElementsByName","skipId","fields","fieldObj","exportValue","domElement","platform","isWin","isMac","linkService","hasClickAction","linkElement","index","_bindLink","destination","_bindNamedAction","_bindJSAction","jsName","detail","_bindResetFormAction","otherClickAction","refs","allFields","resetFormFields","resetFormRefs","fieldIds","field","storage","allIds","valueAsString","ids","JSON","_getKeyModifier","AnnotationElement","_setEventListener","baseName","valueGetter","shift","modifier","_setEventListeners","eventName","_setBackgroundColor","_dispatchEventFromSandbox","setColor","ColorConverters","commonActions","display","hidden","print","focus","preventScroll","userName","readonly","required","bgColor","fgColor","textColor","jsEvent","actions","setPropertyOnSiblings","storedData","elementData","userValue","formattedValue","beforeInputSelectionRange","beforeInputValue","defaultValue","blurListener","selRange","selStart","selEnd","commitKey","willCommit","_blurListener","change","fieldWidth","combWidth","_setTextStyle","TEXT_ALIGNMENT","style","fontColor","curChecked","checked","checkbox","radio","pdfButtonValue","fontSizeStyle","selectElement","option","optionElement","isExport","getItems","displayValue","values","multipleSelection","remove","insert","indices","editable","changeEx","keyDown","IGNORE_TYPES","selector","parentElements","popupLeft","popupTop","BACKGROUND_ENLIGHT","g","title","dateObject","PDFDateString","XfaLayer","xfaHtml","contents","_formatContents","lines","line","_toggle","_show","pin","_hide","unpin","borderWidth","square","circle","coordinate","polyline","getFilenameFromUrl","stringToPDFString","_download","sortedAnnotations","popupAnnotations","layer","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","fieldObjects","mouseState","isDown","rendered","setAnnotationCanvasMap","update","elements","ownTransform","ownMatrix","firstChild","CMYK_G","G_CMYK","G_RGB","G_HTML","G","makeColorComp","RGB_G","RGB_HTML","R","B","T_HTML","CMYK_RGB","CMYK_HTML","RGB_CMYK","setupStorage","html","setAttributes","isHTMLAnchorElement","attributes","root","rootHtml","stack","rootDiv","textDivs","parent","child","childHtml","el","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","ascentCache","AllWhitespaceRegexp","cachedAscent","metrics","ascent","descent","ratio","pixels","textDiv","textDivProperties","angle","hasText","geom","hasEOL","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","tx","fontHeight","fontAscent","getAscent","shouldScaleText","absScaleX","absScaleY","angleCos","angleSin","divWidth","divHeight","right","bottom","textDivsLength","ts","expanded","expandBounds","divProperties","e","jj","boxScale","findPositiveMin","x1New","x2New","expandBoundsLTR","boxes","fakeBoundary","horizon","boundary","maxXNew","horizonPart","affectedBoundary","xNew","changedHorizon","lastBoundary","useBoundary","used","textContentItemsStr","_processItems","len","appendText","_layoutText","fontFamily","_render","timeout","styleCache","textItems","textStyles","expandTextDivs","expandDivs","expand","transformBuf","paddingBuf","divProps","renderParameters","textContentStream","enhanceTextSelection","SVGGraphics","SVG_DEFAULTS","fontStyle","fontWeight","XML_NS","XLINK_NS","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc","body","crc32","deflateSyncUncompressed","input","Buffer","level","literals","maxBlockLength","deflateBlocks","idat","pi","adler","adler32","colorType","bitDepth","offsetLiterals","offsetBytes","kind","ihdr","deflateSync","pngLength","writePngChunk","createObjectURL","encode","opTree","opListElement","fn","pf","clipCount","maskCount","shadingCount","loadDependencies","transformMatrix","getSVG","svgElement","convertOpList","operatorIdMapping","opList","opListToTree","executeOpTree","opTreeElement","lineWidthScale","textMatrix","pm","addFontStyle","details","setStrokeAlpha","setFillAlpha","_makeColorN_Pattern","_makeTilingPattern","tilingId","txstep","tystep","tiling","tx1","ty1","_makeShadingPattern","shadingId","colorStops","point0","point1","gradient","focalPoint","circlePoint","focalRadius","circleRadius","stop","op","clipId","clipPath","clipElement","_setStrokeAttributes","dashArray","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","clipGroup","_ensureTransformGroup","http","https","fileUriRegex","parsedUrl","parseUrl","_error","_setReadableStream","auth","host","method","handleResponse","getResponseHeader","isHttp","suggestedLength","extractFilenameFromHeader","createRequestOptions","stat","returnValues","allowRangeRequests","contentEncoding","contentDisposition","getFilenameFromContentDispositionHeader","status","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","decoder","fatal","textdecode","iter","parts","part","quotindex","encodingend","extvalue","encoding","langvalue","text","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","xhr","requestRange","listeners","requestFull","xhrId","pendingRequest","onProgress","onStateChange","xhrStatus","ok_response_on_range_request","getArrayBuffer","rangeHeader","begin","getRequestXhr","isPendingRequest","abortRequest","_onRangeRequestReaderClosed","onHeadersReceived","onDone","onError","manager","_onHeadersReceived","fullRequestXhrId","fullRequestXhr","_onDone","_onError","createResponseStatusError","_close","signal","abortController","mode","credentials","redirect","headers","createHeaders","createFetchOptions","validateResponseStatus","pdfjsVersion","pdfjsBuild","require","setPDFNetworkStreamFactory"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"pdf.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/display/base_factory.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_text.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/shared/scripting_utils.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_layer.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/network.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, function() {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (\n typeof bytes !== \"object\" ||\n bytes === null ||\n bytes.length === undefined\n ) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n unreachable(\"Invalid argument for arrayByteLength\");\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n },\n};\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if (\n (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n ) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n // Y: first and second points belong to different rectangles?\n if (\n (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n ) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n IsEvalSupportedCached,\n IsLittleEndianCached,\n isSameOrigin,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = require(\"dommatrix/dist/dommatrix.js\");\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream = __non_webpack_require__(\n \"web-streams-polyfill/dist/ponyfill.js\"\n ).ReadableStream;\n })();\n\n // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n (function checkStructuredClone() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `structuredClone`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.structuredClone) {\n return;\n }\n require(\"core-js/web/structured-clone.js\");\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isSameOrigin,\n MissingPDFException,\n PasswordException,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n} from \"./node_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\nconst DefaultCanvasFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeCanvasFactory\n : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeCMapReaderFactory\n : DOMCMapReaderFactory;\nconst DefaultStandardFontDataFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeStandardFontDataFactory\n : DOMStandardFontDataFactory;\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params - The document initialization\n * parameters. The \"url\" key is always present.\n * @returns {Promise} A promise, which is resolved with an instance of\n * {IPDFStream}.\n * @ignore\n */\n\n/**\n * @type {IPDFStreamFactory}\n * @private\n */\nlet createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates an {IPDFStream} as an alternative PDF\n * data transport.\n *\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function\n * that takes document initialization parameters (including a \"url\") and\n * returns a promise which is resolved with an instance of {IPDFStream}.\n * @ignore\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string|URL} [url] - The URL of the PDF.\n * @property {TypedArray|Array<number>|string} [data] - Binary PDF data. Use\n * typed arrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {TypedArray} [initialData] - A typed array with the first portion\n * or all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string|URL|TypedArray|PDFDataRangeTransport|DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n\n let source;\n if (typeof src === \"string\" || src instanceof URL) {\n source = { url: src };\n } else if (isArrayBuffer(src)) {\n source = { data: src };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\n \"Invalid parameter in getDocument, \" +\n \"need either string, URL, Uint8Array, or parameter object.\"\n );\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n source = src;\n }\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n const value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n // The full path is required in the 'url' field.\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n warn(`Cannot create valid URL: \"${ex}\".`);\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString(); // Support Node.js environments.\n continue;\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n case \"range\":\n rangeTransport = value;\n continue;\n case \"worker\":\n worker = value;\n continue;\n case \"data\":\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n value instanceof Buffer // eslint-disable-line no-undef\n ) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break; // Use the data as-is when it's already a Uint8Array.\n } else if (typeof value === \"string\") {\n params[key] = stringToBytes(value);\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !isNaN(value.length)\n ) {\n params[key] = new Uint8Array(value);\n } else if (isArrayBuffer(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\n \"Invalid PDF binary data: either typed array, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n }\n continue;\n }\n params[key] = value;\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.CMapReaderFactory =\n params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.StandardFontDataFactory =\n params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (\n typeof params.docBaseUrl !== \"string\" ||\n isDataScheme(params.docBaseUrl)\n ) {\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n params.docBaseUrl = null;\n }\n if (!Number.isInteger(params.maxImageSize)) {\n params.maxImageSize = -1;\n }\n if (typeof params.useWorkerFetch !== \"boolean\") {\n params.useWorkerFetch =\n params.CMapReaderFactory === DOMCMapReaderFactory &&\n params.StandardFontDataFactory === DOMStandardFontDataFactory;\n }\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS;\n }\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts =\n !(\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n isNodeJS\n ) && !params.disableFontFace;\n }\n if (typeof params.ownerDocument === \"undefined\") {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docId = task.docId;\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(\n worker,\n params,\n rangeTransport,\n docId\n );\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n },\n rangeTransport\n );\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n params\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId - Unique document ID, used in `MessageHandler`.\n * @returns {Promise<string>} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename =\n pdfDataRangeTransport.contentDispositionFilename;\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n // Only send the required properties, and *not* the entire object.\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch\n ? source.standardFontDataUrl\n : null,\n }\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static get idCounters() {\n return shadow(this, \"idCounters\", { doc: 0 });\n }\n\n constructor() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.idCounters.doc++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n\n /**\n * Callback for when an unsupported feature is used in the PDF document.\n * The callback receives an {@link UNSUPPORTED_FEATURES} argument.\n * @type {function}\n */\n this.onUnsupportedFeature = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise<PDFDocumentProxy>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise<void>} A promise that is resolved when destruction is\n * completed.\n */\n async destroy() {\n this.destroyed = true;\n await this._transport?.destroy();\n\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n Object.defineProperty(this, \"fingerprint\", {\n get() {\n deprecated(\n \"`PDFDocumentProxy.fingerprint`, \" +\n \"please use `PDFDocumentProxy.fingerprints` instead.\"\n );\n return this.fingerprints[0];\n },\n });\n\n Object.defineProperty(this, \"getStats\", {\n value: async () => {\n deprecated(\n \"`PDFDocumentProxy.getStats`, \" +\n \"please use the `PDFDocumentProxy.stats`-getter instead.\"\n );\n return this.stats || { streamTypes: {}, fontTypes: {} };\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array<string, string|null>} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @typedef {Object} PDFDocumentStats\n * @property {Object<string, boolean>} streamTypes - Used stream types in the\n * document (an item is set to true if specific stream ID was used in the\n * document).\n * @property {Object<string, boolean>} fontTypes - Used font types in the\n * document (an item is set to true if specific font ID was used in the\n * document).\n */\n\n /**\n * @type {PDFDocumentStats | null} The current statistics about document\n * structures, or `null` when no statistics exists.\n */\n get stats() {\n return this._transport.stats;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return !!this._transport._htmlForXfa;\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise<PDFPageProxy>} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise<number>} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise<Array<any> | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise<any | null>} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise<any>} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} of all the JavaScript strings in the name tree, or `null`\n * if no JavaScript exists.\n */\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree (like getJavaScript);\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array<any> | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array<OutlineNode>} items\n */\n\n /**\n * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise<OptionalContentConfig>} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise<Array<number> | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise<MarkInfo | null>} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise<TypedArray>} A promise that is resolved with a\n * {TypedArray} that has the raw data from the PDF.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise<Uint8Array>} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n this._transport.annotationStorage.size <= 0\n ) {\n deprecated(\n \"saveDocument called while `annotationStorage` is empty, \" +\n \"please use the getData-method instead.\"\n );\n }\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise<Object<string, Array<Object>> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise<boolean>} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with an\n * {Array<string>} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} disableCombineTextItems - Do not attempt to combine\n * same line {@link TextItem}'s. The default value is `false`.\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array<TextItem | TextMarkedContent>} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array<any>} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array<any>} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {Object} [imageLayer] - An object that has `beginLayout`,\n * `endLayout` and `appendImage` functions.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object | string} [background] - Background to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * <color> value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array<StructTreeNode | StructTreeContent>} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array<number>} fnArray - Array containing the operator functions.\n * @property {Array<any>} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this._annotationPromises = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array<number>} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise<Array<any>>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n let promise = this._annotationPromises.get(intentArgs.cacheKey);\n if (!promise) {\n promise = this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n this._annotationPromises.set(intentArgs.cacheKey, promise);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n promise = promise.then(annotations => {\n for (const annotation of annotations) {\n if (annotation.titleObj !== undefined) {\n Object.defineProperty(annotation, \"title\", {\n get() {\n deprecated(\n \"`title`-property on annotation, please use `titleObj` instead.\"\n );\n return annotation.titleObj.str;\n },\n });\n }\n if (annotation.contentsObj !== undefined) {\n Object.defineProperty(annotation, \"contents\", {\n get() {\n deprecated(\n \"`contents`-property on annotation, please use `contentsObj` instead.\"\n );\n return annotation.contentsObj.str;\n },\n });\n }\n }\n return annotations;\n });\n }\n }\n return promise;\n }\n\n /**\n * @returns {Promise<Object>} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return (this._jsActionsPromise ||= this._transport.getPageJSActions(\n this._pageIndex\n ));\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n }) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n if (arguments[0]?.renderInteractiveForms !== undefined) {\n deprecated(\n \"render no longer accepts the `renderInteractiveForms`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].renderInteractiveForms === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_FORMS;\n }\n }\n if (arguments[0]?.includeAnnotationStorage !== undefined) {\n deprecated(\n \"render no longer accepts the `includeAnnotationStorage`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].includeAnnotationStorage === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_STORAGE;\n }\n }\n }\n\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance =\n canvasFactory ||\n new DefaultCanvasFactory({ ownerDocument: this._ownerDocument });\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup once rendering has finished (regardless of cleanupAfterRender).\n if (this.cleanupAfterRender || intentPrint) {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise<PDFOperatorList>} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n /* isOpList = */ true\n );\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = createPromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n disableCombineTextItems = false,\n includeMarkedContent = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n combineTextItems: disableCombineTextItems !== true,\n includeMarkedContent: includeMarkedContent === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise<TextContent>} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => {\n return XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise<StructTreeNode>} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return (this._structTreePromise ||= this._transport.getStructTree(\n this._pageIndex\n ));\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @private\n */\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n\n this._intentStates.clear();\n this.objs.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n if (resetStats && this._stats) {\n this._stats = new StatTimer();\n }\n this.pendingCleanup = false;\n return true;\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({ renderingIntent, cacheKey }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage:\n renderingIntent & RenderingIntentFlag.ANNOTATIONS_STORAGE\n ? this._transport.annotationStorage.serializable\n : null,\n }\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({ intentState, reason, force: true });\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {Object} Returns page stats, if enabled; returns `null` otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n constructor() {\n this._listeners = [];\n this._deferred = Promise.resolve();\n }\n\n postMessage(obj, transfers) {\n const event = {\n data:\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"SKIP_BABEL\") ||\n transfers\n ? structuredClone(obj, transfers)\n : structuredClone(obj),\n };\n\n this._deferred.then(() => {\n for (const listener of this._listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Object} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n PDFWorkerUtil.fallbackWorkerSrc = PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static get _workerPorts() {\n return shadow(this, \"_workerPorts\", new WeakMap());\n }\n\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n if (port && PDFWorker._workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n\n this._readyCapability = createPromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n PDFWorker._workerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n typeof Worker !== \"undefined\" &&\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker._mainThreadWorkerMessageHandler\n ) {\n let workerSrc = PDFWorker.workerSrc;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n // Some versions of FF can't create a worker on localhost, see:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n const worker = new Worker(workerSrc);\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch (e) {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array([255]);\n // Some versions of Opera throw a DATA_CLONE_ERR on serializing the\n // typed array. Also, checking if we can use transfers.\n try {\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n } catch (ex) {\n warn(\"Cannot use postMessage transfers.\");\n testObj[0] = 0;\n messageHandler.send(\"test\", testObj);\n }\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch (e) {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker._workerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n if (this._workerPorts.has(params.port)) {\n return this._workerPorts.get(params.port);\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (PDFWorkerUtil.fallbackWorkerSrc !== null) {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch (ex) {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a `<script>` tag.\n return mainWorkerMessageHandler;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n const worker = await import(\"pdfjs/core/worker.js\");\n return worker.WorkerMessageHandler;\n }\n if (\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n // eslint-disable-next-line no-undef\n typeof __non_webpack_require__ === \"function\"\n ) {\n // Since bundlers, such as Webpack, cannot be told to leave `require`\n // statements alone we are thus forced to jump through hoops in order\n // to prevent `Critical dependency: ...` warnings in third-party\n // deployments of the built `pdf.js`/`pdf.worker.js` files; see\n // https://github.com/webpack/webpack/issues/8826\n //\n // The following hack is based on the assumption that code running in\n // Node.js won't ever be affected by e.g. Content Security Policies that\n // prevent the use of `eval`. If that ever occurs, we should revert this\n // to a normal `__non_webpack_require__` statement and simply document\n // the Webpack warnings instead (telling users to ignore them).\n //\n // eslint-disable-next-line no-eval\n const worker = eval(\"require\")(this.workerSrc);\n return worker.WorkerMessageHandler;\n }\n await loadScript(this.workerSrc);\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n PDFWorker.getWorkerSrc = function () {\n deprecated(\n \"`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead.\"\n );\n return this.workerSrc;\n };\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n #docStats = null;\n\n #pageCache = new Map();\n\n #pagePromises = new Map();\n\n #metadataPromise = null;\n\n constructor(messageHandler, loadingTask, networkStream, params) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n docId: loadingTask.docId,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement,\n });\n this._params = params;\n\n if (!params.useWorkerFetch) {\n this.CMapReaderFactory = new params.CMapReaderFactory({\n baseUrl: params.cMapUrl,\n isCompressed: params.cMapPacked,\n });\n this.StandardFontDataFactory = new params.StandardFontDataFactory({\n baseUrl: params.standardFontDataUrl,\n });\n }\n\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = createPromiseCapability();\n\n this.setupMessageHandler();\n }\n\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n\n get stats() {\n return this.#docStats;\n }\n\n getRenderingIntent(\n intent,\n annotationMode = AnnotationMode.ENABLE,\n isOpList = false\n ) {\n let renderingIntent = RenderingIntentFlag.DISPLAY; // Default value.\n let lastModified = \"\";\n\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n\n lastModified = this.annotationStorage.lastModified;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${lastModified}`,\n };\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = createPromiseCapability();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(\n new Error(\"Worker was destroyed during onPassword callback\")\n );\n }\n\n const waitOn = [];\n // We need to wait for all renderings to be completed, e.g.\n // timeout/rAF can take a long time.\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n // Allow `AnnotationStorage`-related clean-up when destroying the document.\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n // We also need to wait for the worker to finish its long running tasks.\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#metadataPromise = null;\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n\n if (this._networkStream) {\n this._networkStream.cancelAllRequests(\n new AbortException(\"Worker was terminated.\")\n );\n }\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n\n setupMessageHandler() {\n const { messageHandler, loadingTask } = this;\n\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetReader - no `IPDFStream` instance available.\"\n );\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total,\n };\n };\n sink.onPull = () => {\n this._fullReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n isArrayBuffer(value),\n \"GetReader - expected an ArrayBuffer.\"\n );\n // Enqueue data chunk into sink, and transfer it\n // to other side as `Transferable` object.\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = createPromiseCapability();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n // If stream or range are disabled, it's our only way to report\n // loading progress.\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total,\n });\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength,\n });\n }, headersCapability.reject);\n\n return headersCapability.promise;\n });\n\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetRangeReader - no `IPDFStream` instance available.\"\n );\n const rangeReader = this._networkStream.getRangeReader(\n data.begin,\n data.end\n );\n\n // When streaming is enabled, it's possible that the data requested here\n // has already been fetched via the `_fullRequestReader` implementation.\n // However, given that the PDF data is loaded asynchronously on the\n // main-thread and then sent via `postMessage` to the worker-thread,\n // it may not have been available during parsing (hence the attempt to\n // use range requests here).\n //\n // To avoid wasting time and resources here, we'll thus *not* dispatch\n // range requests if the data was already loaded but has not been sent to\n // the worker-thread yet (which will happen via the `_fullRequestReader`).\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = () => {\n rangeReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n isArrayBuffer(value),\n \"GetRangeReader - expected an ArrayBuffer.\"\n );\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n default:\n unreachable(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n\n messageHandler.on(\"PasswordRequest\", exception => {\n this._passwordCapability = createPromiseCapability();\n\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this._passwordCapability.reject(password);\n } else {\n this._passwordCapability.resolve({ password });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this._passwordCapability.reject(ex);\n }\n } else {\n this._passwordCapability.reject(\n new PasswordException(exception.message, exception.code)\n );\n }\n return this._passwordCapability.promise;\n });\n\n messageHandler.on(\"DataLoaded\", data => {\n // For consistency: Ensure that progress is always reported when the\n // entire PDF file has been loaded, regardless of how it was fetched.\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length,\n });\n\n this.downloadInfoCapability.resolve(data);\n });\n\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n if (this.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n const params = this._params;\n\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n\n let fontRegistry = null;\n if (params.pdfBug && globalThis.FontInspector?.enabled) {\n fontRegistry = {\n registerFont(font, url) {\n globalThis.FontInspector.fontAdded(font, url);\n },\n };\n }\n const font = new FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n fontRegistry,\n });\n\n this.fontLoader\n .bind(font)\n .catch(reason => {\n return messageHandler.sendWithPromise(\"FontFallback\", { id });\n })\n .finally(() => {\n if (!params.fontExtraProperties && font.data) {\n // Immediately release the `font.data` property once the font\n // has been attached to the DOM, since it's no longer needed,\n // rather than waiting for a `PDFDocumentProxy.cleanup` call.\n // Since `font.data` could be very large, e.g. in some cases\n // multiple megabytes, this will help reduce memory usage.\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"FontPath\":\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n });\n\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n // Ignore any pending requests if the worker was terminated.\n return;\n }\n\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n\n // Heuristic that will allow us not to store large data.\n const MAX_IMAGE_SIZE_TO_STORE = 8000000;\n if (imageData?.data?.length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total,\n });\n });\n\n messageHandler.on(\"DocStats\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Ensure that a `PDFDocumentProxy.stats` call-site cannot accidentally\n // modify this internal data.\n this.#docStats = Object.freeze({\n streamTypes: Object.freeze(data.streamTypes),\n fontTypes: Object.freeze(data.fontTypes),\n });\n });\n\n messageHandler.on(\n \"UnsupportedFeature\",\n this._onUnsupportedFeature.bind(this)\n );\n\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.CMapReaderFactory) {\n return Promise.reject(\n new Error(\n \"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.CMapReaderFactory.fetch(data);\n });\n\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.StandardFontDataFactory) {\n return Promise.reject(\n new Error(\n \"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.StandardFontDataFactory.fetch(data);\n });\n }\n\n _onUnsupportedFeature({ featureId }) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this.loadingTask.onUnsupportedFeature?.(featureId);\n }\n\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n\n getPage(pageNumber) {\n if (\n !Number.isInteger(pageNumber) ||\n pageNumber <= 0 ||\n pageNumber > this._numPages\n ) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler\n .sendWithPromise(\"GetPage\", {\n pageIndex,\n })\n .then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n const page = new PDFPageProxy(\n pageIndex,\n pageInfo,\n this,\n this._params.ownerDocument,\n this._params.pdfBug\n );\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n getPageIndex(ref) {\n if (\n typeof ref !== \"object\" ||\n ref === null ||\n !Number.isInteger(ref.num) ||\n ref.num < 0 ||\n !Number.isInteger(ref.gen) ||\n ref.gen < 0\n ) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen,\n });\n }\n\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent,\n });\n }\n\n saveDocument() {\n return this.messageHandler\n .sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: this.annotationStorage.serializable,\n filename: this._fullReader?.filename ?? null,\n })\n .finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n\n getFieldObjects() {\n return (this._getFieldObjectsPromise ||=\n this.messageHandler.sendWithPromise(\"GetFieldObjects\", null));\n }\n\n hasJSActions() {\n return (this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise(\n \"HasJSActions\",\n null\n ));\n }\n\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id,\n });\n }\n\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n\n getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n\n getDocJSActions() {\n return this.messageHandler.sendWithPromise(\"GetDocJSActions\", null);\n }\n\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex,\n });\n }\n\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex,\n });\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n\n getOptionalContentConfig() {\n return this.messageHandler\n .sendWithPromise(\"GetOptionalContentConfig\", null)\n .then(results => {\n return new OptionalContentConfig(results);\n });\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n\n getMetadata() {\n return (this.#metadataPromise ||= this.messageHandler\n .sendWithPromise(\"GetMetadata\", null)\n .then(results => {\n return {\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null,\n };\n }));\n }\n\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n\n async startCleanup(keepLoadedFonts = false) {\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n if (this.destroyed) {\n return; // No need to manually clean-up when destruction has started.\n }\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(\n `startCleanup: Page ${page.pageNumber} is currently rendering.`\n );\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#metadataPromise = null;\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n }\n\n get loadingParams() {\n const params = this._params;\n return shadow(this, \"loadingParams\", {\n disableAutoFetch: params.disableAutoFetch,\n enableXfa: params.enableXfa,\n });\n }\n}\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n */\nclass PDFObjects {\n #objs = Object.create(null);\n\n /**\n * Ensures there is an object defined for `objId`.\n *\n * @param {string} objId\n * @returns {Object}\n */\n #ensureObj(objId) {\n const obj = this.#objs[objId];\n if (obj) {\n return obj;\n }\n return (this.#objs[objId] = {\n capability: createPromiseCapability(),\n data: null,\n });\n }\n\n /**\n * If called *without* callback, this returns the data of `objId` but the\n * object needs to be resolved. If it isn't, this method throws.\n *\n * If called *with* a callback, the callback is called with the data of the\n * object once the object is resolved. That means, if you call this method\n * and the object is already resolved, the callback gets called right away.\n *\n * @param {string} objId\n * @param {function} [callback]\n * @returns {any}\n */\n get(objId, callback = null) {\n // If there is a callback, then the get can be async and the object is\n // not required to be resolved right now.\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.capability.promise.then(() => callback(obj.data));\n return null;\n }\n // If there isn't a callback, the user expects to get the resolved data\n // directly.\n const obj = this.#objs[objId];\n // If there isn't an object yet or the object isn't resolved, then the\n // data isn't ready yet!\n if (!obj?.capability.settled) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n\n /**\n * @param {string} objId\n * @returns {boolean}\n */\n has(objId) {\n const obj = this.#objs[objId];\n return obj?.capability.settled || false;\n }\n\n /**\n * Resolves the object `objId` with optional `data`.\n *\n * @param {string} objId\n * @param {any} [data]\n */\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.capability.resolve();\n }\n\n clear() {\n this.#objs = Object.create(null);\n }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n */\nclass RenderTask {\n constructor(internalRenderTask) {\n this._internalRenderTask = internalRenderTask;\n\n /**\n * Callback for incremental rendering -- a function that will be called\n * each time the rendering is paused. To continue rendering call the\n * function that is the first argument to the callback.\n * @type {function}\n */\n this.onContinue = null;\n }\n\n /**\n * Promise for rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._internalRenderTask.capability.promise;\n }\n\n /**\n * Cancels the rendering task. If the task is currently rendering it will\n * not be cancelled until graphics pauses with a timeout. The promise that\n * this object extends will be rejected when cancelled.\n */\n cancel() {\n this._internalRenderTask.cancel();\n }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass InternalRenderTask {\n static get canvasInUse() {\n return shadow(this, \"canvasInUse\", new WeakSet());\n }\n\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this._pdfBug = pdfBug;\n\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame =\n useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = createPromiseCapability();\n this.task = new RenderTask(this);\n // caching this-bound methods\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n get completed() {\n return this.capability.promise.catch(function () {\n // Ignoring errors, since we only want to know when rendering is\n // no longer pending.\n });\n }\n\n initializeGraphics({ transparency = false, optionalContentConfig }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.canvasInUse.has(this._canvas)) {\n throw new Error(\n \"Cannot use the same canvas during multiple render() operations. \" +\n \"Use different canvas or ensure previous operations were \" +\n \"cancelled or completed.\"\n );\n }\n InternalRenderTask.canvasInUse.add(this._canvas);\n }\n\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const { canvasContext, viewport, transform, imageLayer, background } =\n this.params;\n\n this.gfx = new CanvasGraphics(\n canvasContext,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n imageLayer,\n optionalContentConfig,\n this.annotationCanvasMap\n );\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background,\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n }\n\n cancel(error = null) {\n this.running = false;\n this.cancelled = true;\n if (this.gfx) {\n this.gfx.endDrawing();\n }\n if (this._canvas) {\n InternalRenderTask.canvasInUse.delete(this._canvas);\n }\n this.callback(\n error ||\n new RenderingCancelledException(\n `Rendering cancelled, page ${this._pageIndex + 1}`,\n \"canvas\"\n )\n );\n }\n\n operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n this._continue();\n }\n\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(\n this.operatorList,\n this.operatorListIdx,\n this._continueBound,\n this.stepper\n );\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n if (this._canvas) {\n InternalRenderTask.canvasInUse.delete(this._canvas);\n }\n this.callback();\n }\n }\n }\n}\n\n/** @type {string} */\nconst version =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n/** @type {string} */\nconst build =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n build,\n DefaultCanvasFactory,\n DefaultCMapReaderFactory,\n DefaultStandardFontDataFactory,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFDocumentLoadingTask,\n PDFDocumentProxy,\n PDFPageProxy,\n PDFWorker,\n RenderTask,\n setPDFNetworkStreamFactory,\n version,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n} from \"./base_factory.js\";\nimport { BaseException, stringToBytes, Util, warn } from \"../shared/util.js\";\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass PixelsPerInch {\n static CSS = 96.0;\n\n static PDF = 72.0;\n\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({ ownerDocument = globalThis.document } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\nasync function fetchData(url, asTypedArray = false) {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n isValidFetchUrl(url, document.baseURI)\n ) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n return asTypedArray\n ? new Uint8Array(await response.arrayBuffer())\n : stringToBytes(await response.text());\n }\n\n // The Fetch API is not supported.\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, /* asTypedArray = */ true);\n\n if (asTypedArray) {\n request.responseType = \"arraybuffer\";\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let data;\n if (asTypedArray && request.response) {\n data = new Uint8Array(request.response);\n } else if (!asTypedArray && request.responseText) {\n data = stringToBytes(request.responseText);\n }\n if (data) {\n resolve(data);\n return;\n }\n }\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n });\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url, /* asTypedArray = */ this.isCompressed).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url, /* asTypedArray = */ true);\n }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array<number>} viewBox - The xMin, yMin, xMax and\n * yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n * default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n * default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n * viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n * in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n /**\n * @param {PageViewportParameters}\n */\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n // Normalize the rotation, by clamping it to the [0, 360) range.\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\n \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n );\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n ];\n\n this.width = width;\n this.height = height;\n }\n\n /**\n * Clones viewport, with optional additional properties.\n * @param {PageViewportCloneParameters} [params]\n * @returns {PageViewport} Cloned viewport.\n */\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Array containing corresponding coordinates of the\n * rectangle in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\n\nclass RenderingCancelledException extends BaseException {\n constructor(msg, type) {\n super(msg, \"RenderingCancelledException\");\n this.type = type;\n }\n}\n\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @returns {string}\n */\nfunction getFilenameFromUrl(url) {\n const anchor = url.indexOf(\"#\");\n const query = url.indexOf(\"?\");\n const end = Math.min(\n anchor > 0 ? anchor : url.length,\n query > 0 ? query : url.length\n );\n return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n * unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\n */\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n // SCHEME HOST 1.PATH 2.QUERY 3.REF\n // Pattern to get last matching NAME.pdf\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename =\n reFilename.exec(splitURI[1]) ||\n reFilename.exec(splitURI[2]) ||\n reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n try {\n suggestedFilename = reFilename.exec(\n decodeURIComponent(suggestedFilename)\n )[0];\n } catch (ex) {\n // Possible (extremely rare) errors:\n // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n }\n }\n }\n return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n constructor() {\n this.started = Object.create(null);\n this.times = [];\n }\n\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now(),\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n }\n\n toString() {\n // Find the longest name for padding purposes.\n const outBuf = [];\n let longest = 0;\n for (const time of this.times) {\n const name = time.name;\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (const time of this.times) {\n const duration = time.end - time.start;\n outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n // The Fetch API only supports the http/https protocols, and not file/ftp.\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false; // `new URL()` will throw on incorrect data.\n }\n}\n\n/**\n * @param {string} src\n * @param {boolean} [removeScriptElement]\n * @returns {Promise<void>}\n */\nfunction loadScript(src, removeScriptElement = false) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n\n script.onload = function (evt) {\n if (removeScriptElement) {\n script.remove();\n }\n resolve(evt);\n };\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n (document.head || document.documentElement).appendChild(script);\n });\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n /**\n * Convert a PDF date string to a JavaScript `Date` object.\n *\n * The PDF date string format is described in section 7.9.4 of the official\n * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n * edition) Adobe describes the same format including a trailing apostrophe.\n * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n * them. We ignore all apostrophes as they are not necessary for date parsing.\n *\n * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n * parts of the date string).\n *\n * @param {string} input\n * @returns {Date|null}\n */\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n\n // Lazily initialize the regular expression.\n if (!pdfDateStringRegex) {\n pdfDateStringRegex = new RegExp(\n \"^D:\" + // Prefix (required)\n \"(\\\\d{4})\" + // Year (required)\n \"(\\\\d{2})?\" + // Month (optional)\n \"(\\\\d{2})?\" + // Day (optional)\n \"(\\\\d{2})?\" + // Hour (optional)\n \"(\\\\d{2})?\" + // Minute (optional)\n \"(\\\\d{2})?\" + // Second (optional)\n \"([Z|+|-])?\" + // Universal time relation (optional)\n \"(\\\\d{2})?\" + // Offset hour (optional)\n \"'?\" + // Splitting apostrophe (optional)\n \"(\\\\d{2})?\" + // Offset minute (optional)\n \"'?\" // Trailing apostrophe (optional)\n );\n }\n\n // Optional fields that don't satisfy the requirements from the regular\n // expression (such as incorrect digit counts or numbers that are out of\n // range) will fall back the defaults from the specification.\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n\n // JavaScript's `Date` object expects the month to be between 0 and 11\n // instead of 1 and 12, so we have to correct for that.\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n // Universal time relation 'Z' means that the local time is equal to the\n // universal time, whereas the relations '+'/'-' indicate that the local\n // time is later respectively earlier than the universal time. Every date\n // is normalized to universal time.\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n const { width, height } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n return new PageViewport({\n viewBox,\n scale,\n rotation,\n });\n}\n\nexport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n DOMSVGFactory,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n isValidFetchUrl,\n loadScript,\n PageViewport,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n StatTimer,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CMapCompressionType, unreachable } from \"../shared/util.js\";\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n unreachable(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\"),\n };\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n\n /**\n * @private\n */\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\n\nclass BaseCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = false }) {\n if (this.constructor === BaseCMapReaderFactory) {\n unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({ name }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n );\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed\n ? CMapCompressionType.BINARY\n : CMapCompressionType.NONE;\n\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(\n `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n );\n });\n }\n\n /**\n * @private\n */\n _fetchData(url, compressionType) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseStandardFontDataFactory {\n constructor({ baseUrl = null }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n this.baseUrl = baseUrl;\n }\n\n async fetch({ filename }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The standard font \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"standardFontDataUrl\" API parameter is provided.'\n );\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n\n /**\n * @private\n */\n _fetchData(url) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n unreachable(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n\n return svg;\n }\n\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n\n /**\n * @private\n */\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\n\nexport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n IsEvalSupportedCached,\n shadow,\n string32,\n unreachable,\n UNSUPPORTED_FEATURES,\n warn,\n} from \"../shared/util.js\";\n\nclass BaseFontLoader {\n constructor({\n docId,\n onUnsupportedFeature,\n ownerDocument = globalThis.document,\n // For testing only.\n styleElement = null,\n }) {\n if (this.constructor === BaseFontLoader) {\n unreachable(\"Cannot initialize BaseFontLoader.\");\n }\n this.docId = docId;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this._document = ownerDocument;\n\n this.nativeFontFaces = [];\n this.styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ? styleElement\n : null;\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n\n insertRule(rule) {\n let styleElement = this.styleElement;\n if (!styleElement) {\n styleElement = this.styleElement = this._document.createElement(\"style\");\n styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;\n this._document.documentElement\n .getElementsByTagName(\"head\")[0]\n .appendChild(styleElement);\n }\n const styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.length = 0;\n\n if (this.styleElement) {\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n async bind(font) {\n // Add the font to the DOM only once; skip if the font is already loaded.\n if (font.attached || font.missingFile) {\n return;\n }\n font.attached = true;\n\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n this._onUnsupportedFeature({\n featureId: UNSUPPORTED_FEATURES.errorFontLoadNative,\n });\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n\n // When font loading failed, fall back to the built-in font renderer.\n font.disableFontFace = true;\n throw ex;\n }\n }\n return; // The font was, asynchronously, loaded.\n }\n\n // !this.isFontLoadingAPISupported\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n\n if (this.isSyncFontLoadingSupported) {\n return; // The font was, synchronously, loaded.\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent([rule], [font], request);\n });\n // The font was, asynchronously, loaded.\n }\n }\n\n _queueLoadingCallback(callback) {\n unreachable(\"Abstract method `_queueLoadingCallback`.\");\n }\n\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n return shadow(\n this,\n \"isFontLoadingAPISupported\",\n hasFonts && !this.styleElement\n );\n }\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n\n // eslint-disable-next-line getter-return\n get isSyncFontLoadingSupported() {\n unreachable(\"Abstract method `isSyncFontLoadingSupported`.\");\n }\n\n // eslint-disable-next-line getter-return\n get _loadTestFont() {\n unreachable(\"Abstract method `_loadTestFont`.\");\n }\n\n _prepareFontLoadEvent(rules, fontsToLoad, request) {\n unreachable(\"Abstract method `_prepareFontLoadEvent`.\");\n }\n}\n\nlet FontLoader;\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n FontLoader = class MozcentralFontLoader extends BaseFontLoader {\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", true);\n }\n };\n} else {\n // PDFJSDev.test('CHROME || GENERIC')\n\n FontLoader = class GenericFontLoader extends BaseFontLoader {\n constructor(params) {\n super(params);\n this.loadingContext = {\n requests: [],\n nextRequestId: 0,\n };\n this.loadTestFontId = 0;\n }\n\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) {\n if (typeof navigator === \"undefined\") {\n // Node.js - we can pretend that sync font loading is supported.\n supported = true;\n } else {\n // User agent string sniffing is bad, but there is no reliable way to\n // tell if the font is fully loaded and ready to be used with canvas.\n const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(\n navigator.userAgent\n );\n if (m?.[1] >= 14) {\n supported = true;\n }\n // TODO - other browsers...\n }\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n // Sending all completed requests in order of how they were queued.\n while (context.requests.length > 0 && context.requests[0].done) {\n const otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const context = this.loadingContext;\n const request = {\n id: `pdfjs-font-loading-${context.nextRequestId++}`,\n done: false,\n complete: completeRequest,\n callback,\n };\n context.requests.push(request);\n return request;\n }\n\n get _loadTestFont() {\n const getLoadTestFont = function () {\n // This is a CFF font with 1 glyph for '.' that fills its entire width\n // and height.\n return atob(\n \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n );\n };\n return shadow(this, \"_loadTestFont\", getLoadTestFont());\n }\n\n _prepareFontLoadEvent(rules, fonts, request) {\n /** Hack begin */\n // There's currently no event when a font has finished downloading so the\n // following code is a dirty hack to 'guess' when a font is ready.\n // It's assumed fonts are loaded in order, so add a known test font after\n // the desired fonts and then test for the loading of that test font.\n\n function int32(data, offset) {\n return (\n (data.charCodeAt(offset) << 24) |\n (data.charCodeAt(offset + 1) << 16) |\n (data.charCodeAt(offset + 2) << 8) |\n (data.charCodeAt(offset + 3) & 0xff)\n );\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n\n // The temporary canvas is used to determine if fonts are loaded.\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n\n let called = 0;\n function isFontReady(name, callback) {\n called++;\n // With setTimeout clamping this gives the font ~100ms to load.\n if (called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n // Chromium seems to cache fonts based on a hash of the actual font data,\n // so the font must be modified for each load test else it will appear to\n // be loaded already.\n // TODO: This could maybe be made faster by avoiding the btoa of the full\n // font by splitting it in chunks before hand and padding the font id.\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n data = spliceString(\n data,\n COMMENT_OFFSET,\n loadTestFontId.length,\n loadTestFontId\n );\n // CFF checksum is important for IE, adjusting it\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n }\n if (i < loadTestFontId.length) {\n // align to 4 bytes boundary\n checksum =\n (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n\n const names = [];\n for (const font of fonts) {\n names.push(font.loadedName);\n }\n names.push(loadTestFontId);\n\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n\n for (const name of names) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.appendChild(span);\n }\n this._document.body.appendChild(div);\n\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n /** Hack end */\n }\n };\n} // End of PDFJSDev.test('CHROME || GENERIC')\n\nclass FontFaceObject {\n constructor(\n translatedData,\n {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n onUnsupportedFeature,\n fontRegistry = null,\n }\n ) {\n this.compiledGlyphs = Object.create(null);\n // importing translated data\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this.fontRegistry = fontRegistry;\n }\n\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight,\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(\n this.cssFontInfo.fontFamily,\n this.data,\n css\n );\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this);\n }\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = bytesToString(this.data);\n // Add the @font-face rule to the document.\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this, url);\n }\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n this._onUnsupportedFeature({\n featureId: UNSUPPORTED_FEATURES.errorFontGetPath,\n });\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n return (this.compiledGlyphs[character] = function (c, size) {\n // No-op function, to allow rendering to continue.\n });\n }\n\n // If we can, compile cmds into JS for MAXIMUM SPEED...\n if (this.isEvalSupported && IsEvalSupportedCached.value) {\n const jsBuf = [];\n for (const current of cmds) {\n const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n }\n // eslint-disable-next-line no-new-func\n return (this.compiledGlyphs[character] = new Function(\n \"c\",\n \"size\",\n jsBuf.join(\"\")\n ));\n }\n // ... but fall back on using Function.prototype.apply() if we're\n // blocked from using eval() for whatever reason (like CSP policies).\n return (this.compiledGlyphs[character] = function (c, size) {\n for (const current of cmds) {\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n c[current.cmd].apply(c, current.args);\n }\n });\n }\n}\n\nexport { FontFaceObject, FontLoader };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n} from \"./base_factory.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { unreachable } from \"../shared/util.js\";\n\nlet NodeCanvasFactory = class {\n constructor() {\n unreachable(\"Not implemented: NodeCanvasFactory\");\n }\n};\n\nlet NodeCMapReaderFactory = class {\n constructor() {\n unreachable(\"Not implemented: NodeCMapReaderFactory\");\n }\n};\n\nlet NodeStandardFontDataFactory = class {\n constructor() {\n unreachable(\"Not implemented: NodeStandardFontDataFactory\");\n }\n};\n\nif ((typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS) {\n const fetchData = function (url) {\n return new Promise((resolve, reject) => {\n const fs = __non_webpack_require__(\"fs\");\n fs.readFile(url, (error, data) => {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n resolve(new Uint8Array(data));\n });\n });\n };\n\n NodeCanvasFactory = class extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const Canvas = __non_webpack_require__(\"canvas\");\n return Canvas.createCanvas(width, height);\n }\n };\n\n NodeCMapReaderFactory = class extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n };\n\n NodeStandardFontDataFactory = class extends BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url);\n }\n };\n}\n\nexport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap } from \"../shared/util.js\";\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n constructor() {\n this._storage = new Map();\n this._timeStamp = Date.now();\n this._modified = false;\n\n // Callbacks to signal when the modification state is set or reset.\n // This is used by the viewer to only bind on `beforeunload` if forms\n // are actually edited to prevent doing so unconditionally since that\n // can have undesirable effects.\n this.onSetModified = null;\n this.onResetModified = null;\n }\n\n /**\n * Get the value for a given key if it exists, or return the default value.\n *\n * @public\n * @memberof AnnotationStorage\n * @param {string} key\n * @param {Object} defaultValue\n * @returns {Object}\n */\n getValue(key, defaultValue) {\n const value = this._storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n\n return Object.assign(defaultValue, value);\n }\n\n /**\n * Set the value for a given key\n *\n * @public\n * @memberof AnnotationStorage\n * @param {string} key\n * @param {Object} value\n */\n setValue(key, value) {\n const obj = this._storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this._storage.set(key, value);\n }\n if (modified) {\n this._timeStamp = Date.now();\n this._setModified();\n }\n }\n\n getAll() {\n return this._storage.size > 0 ? objectFromMap(this._storage) : null;\n }\n\n get size() {\n return this._storage.size;\n }\n\n /**\n * @private\n */\n _setModified() {\n if (!this._modified) {\n this._modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n\n resetModified() {\n if (this._modified) {\n this._modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n return this._storage.size > 0 ? this._storage : null;\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get lastModified() {\n return this._timeStamp.toString();\n }\n}\n\nexport { AnnotationStorage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n IsLittleEndianCached,\n OPS,\n shadow,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n getShadingPattern,\n PathType,\n TilingPattern,\n} from \"./pattern_helper.js\";\nimport { PixelsPerInch } from \"./display_utils.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n// Minimal font size that would be used during canvas fillText operations.\nconst MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\n\n// Defines the time the `executeOperatorList`-method is going to be executing\n// before it stops and shedules a continue of execution.\nconst EXECUTION_TIME = 15; // ms\n// Defines the number of steps before checking the execution time.\nconst EXECUTION_STEPS = 10;\n\nconst COMPILE_TYPE3_GLYPHS = true;\nconst MAX_SIZE_TO_COMPILE = 1000;\n\nconst FULL_CHUNK_HEIGHT = 16;\n\n// Because of https://bugs.chromium.org/p/chromium/issues/detail?id=1170396\n// some curves aren't rendered correctly.\n// Multiplying lineWidth by this factor should help to have \"correct\"\n// rendering with no artifacts.\n// Once the bug is fixed upstream, we can remove this constant and its use.\nconst LINEWIDTH_SCALE_FACTOR = 1.000001;\n\n/**\n * Overrides certain methods on a 2d ctx so that when they are called they\n * will also call the same method on the destCtx. The methods that are\n * overridden are all the transformation state modifiers, path creation, and\n * save/restore. We only forward these specific methods because they are the\n * only state modifiers that we cannot copy over when we switch contexts.\n *\n * To remove mirroring call `ctx._removeMirroring()`.\n *\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\n * the destCtx.\n * @param {Object} destCtx - The 2d canvas context that will receive the\n * forwarded calls.\n */\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\n\nfunction addContextCurrentTransform(ctx) {\n if (ctx._transformStack) {\n // Reset the transform stack.\n ctx._transformStack = [];\n }\n // If the context doesn't expose a `mozCurrentTransform`, add a JS based one.\n if (ctx.mozCurrentTransform) {\n return;\n }\n ctx._originalSave = ctx.save;\n ctx._originalRestore = ctx.restore;\n ctx._originalRotate = ctx.rotate;\n ctx._originalScale = ctx.scale;\n ctx._originalTranslate = ctx.translate;\n ctx._originalTransform = ctx.transform;\n ctx._originalSetTransform = ctx.setTransform;\n ctx._originalResetTransform = ctx.resetTransform;\n\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\n\n try {\n // The call to getOwnPropertyDescriptor throws an exception in Node.js:\n // \"TypeError: Method lineWidth called on incompatible receiver\n // #<CanvasRenderingContext2D>\".\n const desc = Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(ctx),\n \"lineWidth\"\n );\n\n ctx._setLineWidth = desc.set;\n ctx._getLineWidth = desc.get;\n\n Object.defineProperty(ctx, \"lineWidth\", {\n set: function setLineWidth(width) {\n this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR);\n },\n get: function getLineWidth() {\n return this._getLineWidth();\n },\n });\n } catch (_) {}\n\n Object.defineProperty(ctx, \"mozCurrentTransform\", {\n get: function getCurrentTransform() {\n return this._transformMatrix;\n },\n });\n\n Object.defineProperty(ctx, \"mozCurrentTransformInverse\", {\n get: function getCurrentTransformInverse() {\n // Calculation done using WolframAlpha:\n // http://www.wolframalpha.com/input/?\n // i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}}\n\n const [a, b, c, d, e, f] = this._transformMatrix;\n const ad_bc = a * d - b * c;\n const bc_ad = b * c - a * d;\n\n return [\n d / ad_bc,\n b / bc_ad,\n c / bc_ad,\n a / ad_bc,\n (d * e - c * f) / bc_ad,\n (b * e - a * f) / ad_bc,\n ];\n },\n });\n\n ctx.save = function ctxSave() {\n const old = this._transformMatrix;\n this._transformStack.push(old);\n this._transformMatrix = old.slice(0, 6);\n\n this._originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n if (this._transformStack.length === 0) {\n warn(\"Tried to restore a ctx when the stack was already empty.\");\n }\n const prev = this._transformStack.pop();\n if (prev) {\n this._transformMatrix = prev;\n this._originalRestore();\n }\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n const m = this._transformMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n\n this._originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n const m = this._transformMatrix;\n m[0] *= x;\n m[1] *= x;\n m[2] *= y;\n m[3] *= y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n const m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * a + m[2] * b,\n m[1] * a + m[3] * b,\n m[0] * c + m[2] * d,\n m[1] * c + m[3] * d,\n m[0] * e + m[2] * f + m[4],\n m[1] * e + m[3] * f + m[5],\n ];\n\n ctx._originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n this._transformMatrix = [a, b, c, d, e, f];\n\n ctx._originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n this._transformMatrix = [1, 0, 0, 1, 0, 0];\n\n ctx._originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n const cosValue = Math.cos(angle);\n const sinValue = Math.sin(angle);\n\n const m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * cosValue + m[2] * sinValue,\n m[1] * cosValue + m[3] * sinValue,\n m[0] * -sinValue + m[2] * cosValue,\n m[1] * -sinValue + m[3] * cosValue,\n m[4],\n m[5],\n ];\n\n this._originalRotate(angle);\n };\n}\n\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n\n getCanvas(id, width, height, trackTransform) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n // reset canvas transform for emulated mozCurrentTransform, if needed\n canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n if (trackTransform) {\n addContextCurrentTransform(canvasEntry.context);\n }\n return canvasEntry;\n }\n\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\n\nfunction compileType3Glyph(imgData) {\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([\n 0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0,\n ]);\n\n const width = imgData.width,\n height = imgData.height,\n width1 = width + 1;\n let i, ii, j, j0;\n const points = new Uint8Array(width1 * (height + 1));\n\n // decodes bit-packed mask data\n const lineSize = (width + 7) & ~7,\n data0 = imgData.data;\n const data = new Uint8Array(lineSize * height);\n let pos = 0;\n for (i = 0, ii = data0.length; i < ii; i++) {\n const elem = data0[i];\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n // finding interesting points: every point is located between mask pixels,\n // so there will be points of the (width + 1)x(height + 1) grid. Every point\n // will have flags assigned based on neighboring mask pixels:\n // 4 | 8\n // --P--\n // 2 | 1\n // We are interested only in points with the flags:\n // - outside corners: 1, 2, 4, 8;\n // - inside corners: 7, 11, 13, 14;\n // - and, intersections: 5, 10.\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n // 'sum' is the position of the current pixel configuration in the 'TYPES'\n // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum =\n (sum >> 2) +\n (data[pos + 1] ? 4 : 0) +\n (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n // building outlines\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const outlines = [];\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n const coords = [p % width1, i];\n\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n // set new direction\n type = pp;\n // delete mark\n points[p] = 0;\n } else {\n // type is 5 or 10, ie, a crossing\n // set new direction\n type = pp & ((0x33 * type) >> 4);\n // set new type for \"future hit\"\n points[p] &= (type >> 2) | (type << 2);\n }\n\n coords.push(p % width1, (p / width1) | 0);\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n outlines.push(coords);\n --i;\n }\n\n const drawOutline = function (c) {\n c.save();\n // the path shall be painted in [0..1]x[0..1] space\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.beginPath();\n for (let k = 0, kk = outlines.length; k < kk; k++) {\n const o = outlines[k];\n c.moveTo(o[0], o[1]);\n for (let l = 2, ll = o.length; l < ll; l += 2) {\n c.lineTo(o[l], o[l + 1]);\n }\n }\n c.fill();\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nclass CanvasExtraState {\n constructor(width, height) {\n // Are soft masks and alpha values shapes or opacities?\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n // Default fore and background colors\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n // Note: fill alpha applies to all non-stroking operations\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = null;\n\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n this.updatePathMinMax(transform, box[0], box[1]);\n this.updatePathMinMax(transform, box[2], box[3]);\n }\n\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n // Stroked paths can be outside of the path bounding box by 1/2 the line\n // width.\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = (scale[0] * this.lineWidth) / 2;\n const yStrokePad = (scale[1] * this.lineWidth) / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(\n this.clipBox,\n this.getPathBoundingBox(pathType, transform)\n );\n }\n}\n\nfunction putBinaryImageData(ctx, imgData, transferMaps = null) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n // Put the image data to the canvas in chunks, rather than putting the\n // whole image at once. This saves JS memory, because the ImageData object\n // is smaller. It also possibly saves C++ memory within the implementation\n // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n // the data passed to putImageData()). |n| shouldn't be too small, however,\n // because too many putImageData() calls will slow things down.\n //\n // Note: as written, if the last chunk is partial, the putImageData() call\n // will (conceptually) put pixels past the bounds of the canvas. But\n // that's ok; any such pixels are ignored.\n\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n\n let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;\n if (transferMaps) {\n switch (transferMaps.length) {\n case 1:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[0];\n transferMapBlue = transferMaps[0];\n transferMapGray = transferMaps[0];\n break;\n case 4:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[1];\n transferMapBlue = transferMaps[2];\n transferMapGray = transferMaps[3];\n break;\n }\n }\n\n // There are multiple forms in which the pixel data can be passed, and\n // imgData.kind tells us which one this is.\n if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n // Grayscale, 1 bit per pixel (i.e. black-and-white).\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = (width + 7) >> 3;\n let white = 0xffffffff;\n let black = IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;\n\n if (transferMapGray) {\n if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {\n [white, black] = [black, white];\n }\n }\n\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n // We ran out of input. Make all remaining pixels transparent.\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n // RGBA, 32-bits per pixel.\n const hasTransferMaps = !!(\n transferMapRed ||\n transferMapGreen ||\n transferMapBlue\n );\n\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === ImageKind.RGB_24BPP) {\n // RGB, 24-bits per pixel.\n const hasTransferMaps = !!(\n transferMapRed ||\n transferMapGreen ||\n transferMapBlue\n );\n\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n for (j = elemsInThisChunk; j--; ) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n\n if (hasTransferMaps) {\n for (let k = 0; k < destPos; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight =\n i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n // Expand the mask so it can be used by the canvas. Any required\n // inversion has already been handled.\n let destPos = 3; // alpha component offset\n for (let j = 0; j < thisChunkHeight; j++) {\n let elem,\n mask = 0;\n for (let k = 0; k < width; k++) {\n if (!mask) {\n elem = src[srcPos++];\n mask = 128;\n }\n dest[destPos] = elem & mask ? 0 : 255;\n destPos += 4;\n mask >>= 1;\n }\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\n \"strokeStyle\",\n \"fillStyle\",\n \"fillRule\",\n \"globalAlpha\",\n \"lineWidth\",\n \"lineCap\",\n \"lineJoin\",\n \"miterLimit\",\n \"globalCompositeOperation\",\n \"font\",\n ];\n for (let i = 0, ii = properties.length; i < ii; i++) {\n const property = properties[i];\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\n\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = \"#000000\";\n ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n const length = bytes.length;\n for (let i = 3; i < length; i += 4) {\n const alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n const alpha_ = 255 - alpha;\n bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n }\n }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n const length = maskData.length;\n const scale = 1 / 255;\n for (let i = 3; i < length; i += 4) {\n const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = (layerData[i] * alpha * scale) | 0;\n }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n const length = maskData.length;\n for (let i = 3; i < length; i += 4) {\n const y =\n maskData[i - 3] * 77 + // * 0.3 / 255 * 0x10000\n maskData[i - 2] * 152 + // * 0.59 ....\n maskData[i - 1] * 28; // * 0.11 ....\n layerData[i] = transferMap\n ? (layerData[i] * transferMap[y >> 8]) >> 8\n : (layerData[i] * y) >> 16;\n }\n}\n\nfunction genericComposeSMask(\n maskCtx,\n layerCtx,\n width,\n height,\n subtype,\n backdrop,\n transferMap,\n layerOffsetX,\n layerOffsetY,\n maskOffsetX,\n maskOffsetY\n) {\n const hasBackdrop = !!backdrop;\n const r0 = hasBackdrop ? backdrop[0] : 0;\n const g0 = hasBackdrop ? backdrop[1] : 0;\n const b0 = hasBackdrop ? backdrop[2] : 0;\n\n let composeFn;\n if (subtype === \"Luminosity\") {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n // processing image in chunks to save memory\n const PIXELS_TO_PROCESS = 1048576;\n const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (let row = 0; row < height; row += chunkSize) {\n const chunkHeight = Math.min(chunkSize, height - row);\n const maskData = maskCtx.getImageData(\n layerOffsetX - maskOffsetX,\n row + (layerOffsetY - maskOffsetY),\n width,\n chunkHeight\n );\n const layerData = layerCtx.getImageData(\n layerOffsetX,\n row + layerOffsetY,\n width,\n chunkHeight\n );\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\n\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n genericComposeSMask(\n smask.context,\n layerCtx,\n layerWidth,\n layerHeight,\n smask.subtype,\n smask.backdrop,\n smask.transferMap,\n layerOffsetX,\n layerOffsetY,\n smask.offsetX,\n smask.offsetY\n );\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n}\n\nfunction getImageSmoothingEnabled(transform, interpolate) {\n const scale = Util.singularValueDecompose2dScale(transform);\n // Round to a 32bit float so that `<=` check below will pass for numbers that\n // are very close, but not exactly the same 64bit floats.\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround(\n (globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n if (interpolate !== undefined) {\n // If the value is explicitly set use it.\n return interpolate;\n } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n // Smooth when downscaling.\n return true;\n }\n // Don't smooth when upscaling.\n return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n constructor(\n canvasCtx,\n commonObjs,\n objs,\n canvasFactory,\n imageLayer,\n optionalContentConfig,\n annotationCanvasMap\n ) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\n // Patterns are painted relative to the initial page/form transform, see\n // PDF spec 8.7.2 NOTE 1.\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n if (canvasCtx) {\n // NOTE: if mozCurrentTransform is polyfilled, then the current state of\n // the transformation must already be set in canvasCtx._transformMatrix.\n addContextCurrentTransform(canvasCtx);\n }\n this._cachedGetSinglePixelWidth = null;\n }\n\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null,\n }) {\n // For pdfs that use blend modes we have to clear the canvas else certain\n // blend modes can look wrong since we'd be blending with a white\n // backdrop. The problem with a transparent backdrop though is we then\n // don't get sub pixel anti aliasing on text, creating temporary\n // transparent canvas when we have blend modes.\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n\n this.ctx.save();\n this.ctx.fillStyle = background || \"rgb(255, 255, 255)\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\n \"transparent\",\n width,\n height,\n true\n );\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n // The transform can be applied before rendering, transferring it to\n // the new canvas.\n this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform.apply(this.ctx, transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform.apply(this.ctx, viewport.transform);\n this.viewportScale = viewport.scale;\n\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n this._combinedScaleFactor = Math.hypot(\n this.baseTransform[0],\n this.baseTransform[2]\n );\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n }\n\n executeOperatorList(\n operatorList,\n executionStartIdx,\n continueCallback,\n stepper\n ) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n\n // Sometimes the OperatorList to execute is empty.\n if (argsArrayLen === i) {\n return i;\n }\n\n const chunkOperations =\n argsArrayLen - i > EXECUTION_STEPS &&\n typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n // If the promise isn't resolved yet, add the continueCallback\n // to the promise and bail out.\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n // If the entire operatorList was executed, stop as were done.\n if (i === argsArrayLen) {\n return i;\n }\n\n // If the execution took longer then a certain amount of time and\n // `continueCallback` is specified, interrupt the execution.\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n\n // If the operatorList isn't executed completely yet OR the execution\n // time was short enough, do another execution round.\n }\n }\n\n endDrawing() {\n // Finishing all opened operations such as SMask group painting.\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n }\n\n _scaleImage(img, inverseTransform) {\n // Vertical or horizontal scaling shall not be more than 2 to not lose the\n // pixels during drawImage operation, painting on the temporary canvas(es)\n // that are twice smaller in size.\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(\n Math.hypot(inverseTransform[0], inverseTransform[1]),\n 1\n );\n let heightScale = Math.max(\n Math.hypot(inverseTransform[2], inverseTransform[3]),\n 1\n );\n\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (\n (widthScale > 2 && paintWidth > 1) ||\n (heightScale > 2 && paintHeight > 1)\n ) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(\n tmpCanvasId,\n newWidth,\n newHeight\n );\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(\n img,\n 0,\n 0,\n paintWidth,\n paintHeight,\n 0,\n 0,\n newWidth,\n newHeight\n );\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight,\n };\n }\n\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const width = img.width,\n height = img.height;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n const maskCtx = maskCanvas.context;\n putBinaryImageMask(maskCtx, img);\n\n // Create the mask canvas at the size it will be drawn at and also set\n // its transform to match the current transform so if there are any\n // patterns applied they will be applied relative to the correct\n // transform.\n const objToCanvas = ctx.mozCurrentTransform;\n let maskToCanvas = Util.transform(objToCanvas, [\n 1 / width,\n 0,\n 0,\n -1 / height,\n 0,\n 0,\n ]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const cord1 = Util.applyTransform([0, 0], maskToCanvas);\n const cord2 = Util.applyTransform([width, height], maskToCanvas);\n const rect = Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);\n const drawnWidth = Math.ceil(rect[2] - rect[0]);\n const drawnHeight = Math.ceil(rect[3] - rect[1]);\n const fillCanvas = this.cachedCanvases.getCanvas(\n \"fillCanvas\",\n drawnWidth,\n drawnHeight,\n true\n );\n const fillCtx = fillCanvas.context;\n // The offset will be the top-left cordinate mask.\n const offsetX = Math.min(cord1[0], cord2[0]);\n const offsetY = Math.min(cord1[1], cord2[1]);\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform.apply(fillCtx, maskToCanvas);\n // Pre-scale if needed to improve image smoothing.\n const scaled = this._scaleImage(\n maskCanvas.canvas,\n fillCtx.mozCurrentTransformInverse\n );\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n fillCtx.mozCurrentTransform,\n img.interpolate\n );\n fillCtx.drawImage(\n scaled.img,\n 0,\n 0,\n scaled.img.width,\n scaled.img.height,\n 0,\n 0,\n width,\n height\n );\n fillCtx.globalCompositeOperation = \"source-in\";\n\n const inverse = Util.transform(fillCtx.mozCurrentTransformInverse, [\n 1,\n 0,\n 0,\n 1,\n -offsetX,\n -offsetY,\n ]);\n fillCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(ctx, this, inverse, PathType.FILL)\n : fillColor;\n\n fillCtx.fillRect(0, 0, width, height);\n\n // Round the offsets to avoid drawing fractional pixels.\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY),\n };\n }\n\n // Graphics state\n setLineWidth(width) {\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setGState(states) {\n for (let i = 0, ii = states.length; i < ii; i++) {\n const state = states[i];\n const key = state[0];\n const value = state[1];\n\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = state[1];\n break;\n case \"ca\":\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.current.transferMaps = value;\n }\n }\n }\n\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n // Else, the state is okay and nothing needs to be done.\n }\n\n /**\n * Soft mask mode takes the current main drawing canvas and replaces it with\n * a temporary canvas. Any drawing operations that happen on the temporary\n * canvas need to be composed with the main canvas that was suspended (see\n * `compose()`). The temporary canvas also duplicates many of its operations\n * on the suspended canvas to keep them in sync, so that when the soft mask\n * mode ends any clipping paths or transformations will still be active and in\n * the right order on the canvas' graphics state stack.\n */\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight,\n true\n );\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform.apply(ctx, this.suspendedCtx.mozCurrentTransform);\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n }\n\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n // The soft mask is done, now restore the suspended canvas as the main\n // drawing canvas.\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n\n this.suspendedCtx = null;\n }\n\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n\n composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n // Whatever was drawn has been moved to the suspended canvas, now clear it\n // out of the current canvas.\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n\n save() {\n if (this.inSMaskMode) {\n // SMask mode may be turned on/off causing us to lose graphics state.\n // Copy the temporary canvas state to the main(suspended) canvas to keep\n // it in sync.\n copyCtxState(this.ctx, this.suspendedCtx);\n // Don't bother calling save on the temporary canvas since state is not\n // saved there.\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n // Graphics state is stored on the main(suspended) canvas. Restore its\n // state then copy it over to the temporary canvas.\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this._cachedGetSinglePixelWidth = null;\n }\n }\n\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n\n this._cachedGetSinglePixelWidth = null;\n }\n\n // Path\n constructPath(ops, args) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, xw, yh);\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y\n );\n current.updateCurvePathMinMax(\n ctx.mozCurrentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y\n );\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3]\n );\n current.updateCurvePathMinMax(\n ctx.mozCurrentTransform,\n startX,\n startY,\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3]\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(\n ctx.mozCurrentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n x,\n y,\n x,\n y\n );\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n current.setCurrentPoint(x, y);\n }\n\n closePath() {\n this.ctx.closePath();\n }\n\n stroke(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n // For stroke we want to temporarily change the global alpha to the\n // stroking alpha.\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n const lineWidth = this.getSinglePixelWidth();\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.STROKE\n );\n // Prevent drawing too thin lines by enforcing a minimum line width.\n ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);\n ctx.stroke();\n ctx.restore();\n } else {\n const lineWidth = this.getSinglePixelWidth();\n if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) {\n // The current transform will transform a square pixel into a\n // parallelogram where both heights are lower than 1 and not equal.\n ctx.save();\n ctx.resetTransform();\n ctx.lineWidth = Math.floor(this._combinedScaleFactor);\n ctx.stroke();\n ctx.restore();\n } else {\n // Prevent drawing too thin lines by enforcing a minimum line width.\n ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);\n ctx.stroke();\n }\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n // Restore the global alpha to the fill alpha\n ctx.globalAlpha = this.current.fillAlpha;\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n fill(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n );\n needRestore = true;\n }\n\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n\n this.consumePath();\n }\n\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n\n endPath() {\n this.consumePath();\n }\n\n // Clipping\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n\n // Text\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n ctx.setTransform.apply(ctx, path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n // A valid matrix needs all main diagonal elements to be non-zero\n // This also ensures we bypass FF bugzilla bug #719844.\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n\n // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n // and in some docs this can be negative (inverted x-y axes).\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return; // we don't need ctx.font for Type3 fonts\n }\n\n const name = fontObj.loadedName || \"sans-serif\";\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n const typeface = `\"${name}\", ${fontObj.fallbackName}`;\n\n // Some font backends cannot handle fonts below certain size.\n // Keeping the font at minimal size and using the fontSizeScale to change\n // the current transformation matrix before the fillText/strokeText.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n paintChar(character, x, y, patternTransform, resetLineWidthToOne) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode =\n textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(\n textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n const patternFill = current.patternFill && !font.missingFile;\n\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform.apply(ctx, patternTransform);\n }\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fill();\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (resetLineWidthToOne) {\n ctx.resetTransform();\n ctx.lineWidth = Math.floor(this._combinedScaleFactor);\n }\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fillText(character, x, y);\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (resetLineWidthToOne) {\n ctx.save();\n ctx.moveTo(x, y);\n ctx.resetTransform();\n ctx.lineWidth = Math.floor(this._combinedScaleFactor);\n ctx.strokeText(character, 0, 0);\n ctx.restore();\n } else {\n ctx.strokeText(character, x, y);\n }\n }\n }\n\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: ctx.mozCurrentTransform,\n x,\n y,\n fontSize,\n addToPath,\n });\n }\n }\n\n get isFontSubpixelAAEnabled() {\n // Checks if anti-aliasing is enabled when scaled text is painted.\n // On Windows GDI scaled fonts looks bad.\n const { context: ctx } = this.cachedCanvases.getCanvas(\n \"isFontSubpixelAAEnabled\",\n 10,\n 10\n );\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n const simpleFillText =\n current.textRenderingMode === TextRenderingMode.FILL &&\n !font.disableFontFace &&\n !current.patternFill;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n );\n patternTransform = ctx.mozCurrentTransform;\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n let lineWidth = current.lineWidth;\n let resetLineWidthToOne = false;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n this._cachedGetSinglePixelWidth = null;\n lineWidth = this.getSinglePixelWidth();\n resetLineWidthToOne = lineWidth < 0;\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx =\n -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n // Some standard fonts may not have the exact width: rescale per\n // character if measured width is greater than expected glyph width\n // and subpixel-aa is enabled, otherwise just center the glyph.\n const measuredWidth =\n ((ctx.measureText(character).width * 1000) / fontSize) *\n fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX +=\n (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n }\n }\n\n // Only attempt to draw the glyph if it is actually in the embedded font\n // file or if there isn't a font file so the fallback font is shown.\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n // common case\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(\n character,\n scaledX,\n scaledY,\n patternTransform,\n resetLineWidthToOne\n );\n if (accent) {\n const scaledAccentX =\n scaledX + (fontSize * accent.offset.x) / fontSizeScale;\n const scaledAccentY =\n scaledY - (fontSize * accent.offset.y) / fontSizeScale;\n this.paintChar(\n accent.fontChar,\n scaledAccentX,\n scaledAccentY,\n patternTransform,\n resetLineWidthToOne\n );\n }\n }\n }\n\n let charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n\n showType3Text(glyphs) {\n // Type3 fonts - each glyph is a \"mini-PDF\"\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible =\n current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedGetSinglePixelWidth = null;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y);\n\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = (spacingDir * glyph * fontSize) / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform.apply(ctx, fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n\n // Type3 fonts\n setCharWidth(xWidth, yWidth) {\n // We can safely ignore this since the width should be the same\n // as the width in the Widths array.\n }\n\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n // TODO According to the spec we're also suppose to ignore any operators\n // that set color or include images while processing this type3 font.\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.clip();\n this.endPath();\n }\n\n // Color\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform =\n this.baseTransform || this.ctx.mozCurrentTransform.slice();\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => {\n return new CanvasGraphics(\n ctx,\n this.commonObjs,\n this.objs,\n this.canvasFactory\n );\n },\n };\n pattern = new TilingPattern(\n IR,\n color,\n this.ctx,\n canvasGraphicsFactory,\n baseTransform\n );\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n\n setStrokeRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n\n setFillRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\n\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.objs.get(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.SHADING\n );\n\n const inv = ctx.mozCurrentTransformInverse;\n if (inv) {\n const canvas = ctx.canvas;\n const width = canvas.width;\n const height = canvas.height;\n\n const bl = Util.applyTransform([0, 0], inv);\n const br = Util.applyTransform([0, height], inv);\n const ul = Util.applyTransform([width, 0], inv);\n const ur = Util.applyTransform([width, height], inv);\n\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n // HACK to draw the gradient onto an infinite rectangle.\n // PDF gradients are drawn across the entire image while\n // Canvas only allows gradients to be drawn in a rectangle\n // The following bug should allow us to remove this.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n\n // Images\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updatePathMinMax(\n this.ctx.mozCurrentTransform,\n bbox[0],\n bbox[1]\n );\n this.current.updatePathMinMax(\n this.ctx.mozCurrentTransform,\n bbox[2],\n bbox[3]\n );\n this.clip();\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n // If there's an active soft mask we don't want it enabled for the group, so\n // clear it out. The mask and suspended canvas will be restored in endGroup.\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n\n const currentCtx = this.ctx;\n // TODO non-isolated groups - according to Rik at adobe non-isolated\n // group results aren't usually that different and they even have tools\n // that ignore this setting. Notes from Rik on implementing:\n // - When you encounter an transparency group, create a new canvas with\n // the dimensions of the bbox\n // - copy the content from the previous canvas to the new canvas\n // - draw as usual\n // - remove the backdrop alpha:\n // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n // value of your transparency group and 'alphaBackdrop' the alpha of the\n // backdrop\n // - remove background color:\n // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n\n // TODO knockout - supposedly possible with the clever use of compositing\n // modes.\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n\n const currentTransform = currentCtx.mozCurrentTransform;\n if (group.matrix) {\n currentCtx.transform.apply(currentCtx, group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n\n // Based on the current transform figure out how big the bounding box\n // will actually be.\n let bounds = Util.getAxialAlignedBoundingBox(\n group.bbox,\n currentCtx.mozCurrentTransform\n );\n // Clip the bounding box to the current canvas.\n const canvasBounds = [\n 0,\n 0,\n currentCtx.canvas.width,\n currentCtx.canvas.height,\n ];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n // Use ceil in case we're between sizes so we don't create canvas that is\n // too small and make the canvas at least 1x1 pixels.\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n let scaleX = 1,\n scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n // Using two cache entries is case if masks are used one after another.\n cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight,\n true\n );\n const groupCtx = scratchCanvas.context;\n\n // Since we created a new canvas that is just the size of the bounding box\n // we have to translate the group ctx.\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n if (group.smask) {\n // Saving state and cached mask to be used in setGState.\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null, // used during suspend operation\n });\n } else {\n // Setup the current ctx so when the group is popped we draw it at the\n // right location.\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\n // The transparency group inherits all off the current graphics state\n // except the blend mode, soft mask, and alpha constants.\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n // Turn off image smoothing to avoid sub pixel interpolation which can\n // look kind of blurry for some pdfs.\n this.ctx.imageSmoothingEnabled = false;\n\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = this.ctx.mozCurrentTransform;\n this.restore();\n this.ctx.save();\n this.ctx.setTransform.apply(this.ctx, currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox(\n [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\n currentMtx\n );\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n\n beginAnnotations() {\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n }\n\n endAnnotations() {\n this.restore();\n }\n\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.save();\n\n if (Array.isArray(rect) && rect.length === 4) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(\n this.ctx.mozCurrentTransform\n );\n const { viewportScale } = this;\n const canvasWidth = Math.ceil(\n width * this.outputScaleX * viewportScale\n );\n const canvasHeight = Math.ceil(\n height * this.outputScaleY * viewportScale\n );\n\n this.annotationCanvas = this.canvasFactory.create(\n canvasWidth,\n canvasHeight\n );\n const { canvas, context } = this.annotationCanvas;\n canvas.style.width = `calc(${width}px * var(--viewport-scale-factor))`;\n canvas.style.height = `calc(${height}px * var(--viewport-scale-factor))`;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n addContextCurrentTransform(this.ctx);\n\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n\n this.ctx.rect(rect[0], rect[1], width, height);\n this.clip();\n this.endPath();\n }\n }\n\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n }\n\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n this.restore();\n }\n\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const width = img.width,\n height = img.height;\n\n const glyph = this.processingType3;\n\n if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n glyph.compiled = compileType3Glyph({ data: img.data, width, height });\n } else {\n glyph.compiled = null;\n }\n }\n\n if (glyph?.compiled) {\n glyph.compiled(ctx);\n return;\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n\n ctx.save();\n // The mask is drawn with the transform applied. Reset the current\n // transform to draw to the identity.\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectRepeat(\n imgData,\n scaleX,\n skewX = 0,\n skewY = 0,\n scaleY,\n positions\n ) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = ctx.mozCurrentTransform;\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(imgData);\n\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [\n scaleX,\n skewX,\n skewY,\n scaleY,\n positions[i],\n positions[i + 1],\n ]);\n\n const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (let i = 0, ii = images.length; i < ii; i++) {\n const image = images[i];\n const width = image.width,\n height = image.height;\n\n const maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, image);\n\n maskCtx.globalCompositeOperation = \"source-in\";\n\n maskCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(\n maskCtx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n )\n : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n ctx.save();\n ctx.transform.apply(ctx, image.transform);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = objId.startsWith(\"g_\")\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = objId.startsWith(\"g_\")\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height,\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n\n this.save();\n // scale the image to the unit square\n ctx.scale(1 / width, -1 / height);\n\n let imgToPaint;\n // typeof check is needed due to node.js support, see issue #8489\n if (\n (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n !imgData.data\n ) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\n \"inlineImage\",\n width,\n height\n );\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n imgToPaint = tmpCanvas.canvas;\n }\n\n const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse);\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\n ctx.mozCurrentTransform,\n imgData.interpolate\n );\n ctx.drawImage(\n scaled.img,\n 0,\n 0,\n scaled.paintWidth,\n scaled.paintHeight,\n 0,\n -height,\n width,\n height\n );\n\n if (this.imageLayer) {\n const position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: width / ctx.mozCurrentTransformInverse[0],\n height: height / ctx.mozCurrentTransformInverse[3],\n });\n }\n this.compose();\n this.restore();\n }\n\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const w = imgData.width;\n const h = imgData.height;\n\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n\n for (let i = 0, ii = map.length; i < ii; i++) {\n const entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n ctx.drawImage(\n tmpCanvas.canvas,\n entry.x,\n entry.y,\n entry.w,\n entry.h,\n 0,\n -1,\n 1,\n 1\n );\n if (this.imageLayer) {\n const position = this.getCanvasPosition(entry.x, entry.y);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: w,\n height: h,\n });\n }\n ctx.restore();\n }\n this.compose();\n }\n\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n\n // Marked content\n\n markPoint(tag) {\n // TODO Marked content.\n }\n\n markPointProps(tag, properties) {\n // TODO Marked content.\n }\n\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true,\n });\n }\n\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties),\n });\n } else {\n this.markedContentStack.push({\n visible: true,\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n\n // Compatibility\n\n beginCompat() {\n // TODO ignore undefined operators (should we do that anyway?)\n }\n\n endCompat() {\n // TODO stop ignoring undefined operators\n }\n\n // Helper functions\n\n consumePath(clipBox) {\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n\n getSinglePixelWidth() {\n if (this._cachedGetSinglePixelWidth === null) {\n // If transform is [a b] then a pixel (square) is transformed\n // [c d]\n // into a parallelogram: its area is the abs value of the determinant.\n // This parallelogram has 2 heights:\n // - Area / |col_1|;\n // - Area / |col_2|.\n // so in order to get a height of at least 1, pixel height\n // must be computed as followed:\n // h = max(sqrt(a² + c²) / |det(M)|, sqrt(b² + d²) / |det(M)|).\n // This is equivalent to:\n // h = max(|line_1_inv(M)|, |line_2_inv(M)|)\n const m = this.ctx.mozCurrentTransform;\n\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const sqNorm1 = m[0] ** 2 + m[2] ** 2;\n const sqNorm2 = m[1] ** 2 + m[3] ** 2;\n const pixelHeight = Math.sqrt(Math.max(sqNorm1, sqNorm2)) / absDet;\n if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) {\n // The parallelogram isn't a square and at least one height\n // is lower than 1 so the resulting line width must be 1\n // but it cannot be achieved with one scale: when scaling a pixel\n // we'll get a rectangle (see issue #12295).\n // For example with matrix [0.001 0, 0, 100], a pixel is transformed\n // in a rectangle 0.001x100. If we just scale by 1000 (to have a 1)\n // then we'll get a rectangle 1x1e5 which is wrong.\n // In this case, we must reset the transform, set linewidth to 1\n // and then stroke.\n this._cachedGetSinglePixelWidth = -(\n this._combinedScaleFactor * pixelHeight\n );\n } else if (absDet > Number.EPSILON) {\n this._cachedGetSinglePixelWidth = pixelHeight;\n } else {\n // Matrix is non-invertible.\n this._cachedGetSinglePixelWidth = 1;\n }\n }\n\n return this._cachedGetSinglePixelWidth;\n }\n\n getCanvasPosition(x, y) {\n const transform = this.ctx.mozCurrentTransform;\n return [\n transform[0] * x + transform[2] * y + transform[4],\n transform[1] * x + transform[3] * y + transform[5],\n ];\n }\n\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\n\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\nexport { CanvasGraphics };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FormatError,\n info,\n shadow,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\",\n};\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox || typeof Path2D === \"undefined\") {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\n\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n unreachable(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\n\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(\n this._p0[0],\n this._p0[1],\n this._p1[0],\n this._p1[1]\n );\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(\n this._p0[0],\n this._p0[1],\n this._r0,\n this._p1[0],\n this._p1[1],\n this._r1\n );\n }\n\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(\n pathType,\n ctx.mozCurrentTransform\n ) || [0, 0, 0, 0];\n // Create a canvas that is only as big as the current path. This doesn't\n // allow us to cache the pattern, but it generally creates much smaller\n // canvases and saves memory use. See bug 1722807 for an example.\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n width,\n height,\n true\n );\n\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n // Non shading fill patterns are positioned relative to the base transform\n // (usually the page's initial transform), but we may have created a\n // smaller canvas based on the path, so we must account for the shift.\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [\n 1,\n 0,\n 0,\n 1,\n ownerBBox[0],\n ownerBBox[1],\n ]);\n\n tmpCtx.transform.apply(tmpCtx, owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform.apply(tmpCtx, this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n // Avoid rendering breaking completely in Firefox 78 ESR,\n // and in Node.js (see issue 13724).\n warn(`RadialAxialShadingPattern.getPattern: \"${ex?.message}\".`);\n }\n } else {\n // Shading fills are applied relative to the current matrix which is also\n // how canvas gradients work, so there's no need to do anything special\n // here.\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n // Very basic Gouraud-shaded triangle rasterization algorithm.\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n let k;\n if (y < y1) {\n k = 0;\n } else {\n k = (y1 - y) / (y1 - y2);\n }\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = (car - (car - cbr) * k) | 0;\n bytes[j++] = (cag - (cag - cbg) * k) | 0;\n bytes[j++] = (cab - (cab - cbb) * k) | 0;\n bytes[j++] = 255;\n }\n }\n}\n\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(\n data,\n context,\n ps[q],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n drawTriangle(\n data,\n context,\n ps[q + verticesPerRow + 1],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q + verticesPerRow + 1],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(\n data,\n context,\n ps[i],\n ps[i + 1],\n ps[i + 2],\n cs[i],\n cs[i + 1],\n cs[i + 2]\n );\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\n\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n // we will increase scale on some weird factor to let antialiasing take\n // care of \"rough\" edges\n const EXPECTED_SCALE = 1.1;\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n const MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n // We need to keep transparent border around our pattern for fill():\n // createPattern with 'no-repeat' will bleed edges across entire area.\n const BORDER_SIZE = 2;\n\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n\n const width = Math.min(\n Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const height = Math.min(\n Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY,\n };\n\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n\n const tmpCanvas = cachedCanvases.getCanvas(\n \"mesh\",\n paddedWidth,\n paddedHeight,\n false\n );\n const tmpCtx = tmpCanvas.context;\n\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY,\n };\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n } else {\n // Obtain scale from matrix and current transformation matrix.\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n\n // Rasterizing on the main thread since sending/queue large canvases\n // might cause OOM.\n const temporaryPatternCanvas = this._createMeshCanvas(\n scale,\n pathType === PathType.SHADING ? null : this._background,\n owner.cachedCanvases\n );\n\n if (pathType !== PathType.SHADING) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n if (this.matrix) {\n ctx.transform.apply(ctx, this.matrix);\n }\n }\n\n ctx.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\n\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\n\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2,\n};\n\nclass TilingPattern {\n // 10in @ 300dpi shall be enough.\n static get MAX_PATTERN_SIZE() {\n return shadow(this, \"MAX_PATTERN_SIZE\", 3000);\n }\n\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n info(\"TilingType: \" + tilingType);\n\n // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n // described by bbox, and may repeat regularly by shifting the cell by\n // xstep and ystep.\n // Because the HTML5 canvas API does not support pattern repetition with\n // gaps in between, we use the xstep/ystep instead of the bbox's size.\n //\n // This has the following consequences (similarly for ystep):\n //\n // - If xstep is the same as bbox, then there is no observable difference.\n //\n // - If xstep is larger than bbox, then the pattern canvas is partially\n // empty: the area bounded by bbox is painted, the outside area is void.\n //\n // - If xstep is smaller than bbox, then the pixels between xstep and the\n // bbox boundary will be missing. This is INCORRECT behavior.\n // \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n // but overlapping cells without common pixels are still valid.\n // TODO: Fix the implementation, to allow this scenario to be painted\n // correctly.\n\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n // Obtain scale from matrix and current transformation matrix.\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(\n this.baseTransform\n );\n const combinedScale = [\n matrixScale[0] * curMatrixScale[0],\n matrixScale[1] * curMatrixScale[1],\n ];\n\n // Use width and height values that are as close as possible to the end\n // result when the pattern is used. Too low value makes the pattern look\n // blurry. Too large value makes it look too crispy.\n const dimx = this.getSizeAndScale(\n xstep,\n this.ctx.canvas.width,\n combinedScale[0]\n );\n const dimy = this.getSizeAndScale(\n ystep,\n this.ctx.canvas.height,\n combinedScale[1]\n );\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n dimx.size,\n dimy.size,\n true\n );\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n // Some bounding boxes have negative x0/y0 cordinates which will cause the\n // some of the drawing to be off of the canvas. To avoid this shift the\n // bounding box over.\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n\n // To match CanvasGraphics beginDrawing we must save the context here or\n // else we end up with unbalanced save/restores.\n tmpCtx.save();\n\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n\n graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice();\n\n graphics.executeOperatorList(operatorList);\n\n graphics.endDrawing();\n\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0,\n };\n }\n\n getSizeAndScale(step, realOutputSize, scale) {\n // xstep / ystep may be negative -- normalize.\n step = Math.abs(step);\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n // Use the destination canvas's size if it is bigger than the hard-coded\n // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n // whole canvas.\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return { scale, size };\n }\n\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.clip();\n graphics.endPath();\n }\n\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n // Set color needed by image masks (fixes issues 3226 and 8741).\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n let domMatrix = new DOMMatrix(matrix);\n // Rescale and so that the ctx.createPattern call generates a pattern with\n // the desired size.\n domMatrix = domMatrix.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n domMatrix = domMatrix.scale(\n 1 / temporaryPatternCanvas.scaleX,\n 1 / temporaryPatternCanvas.scaleY\n );\n\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n // Avoid rendering breaking completely in Firefox 78 ESR,\n // and in Node.js (see issue 13724).\n warn(`TilingPattern.getPattern: \"${ex?.message}\".`);\n }\n return pattern;\n }\n}\n\nexport { getShadingPattern, PathType, TilingPattern };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @typedef {Object} GlobalWorkerOptionsType\n * @property {Worker | null} workerPort - Defines global port for worker\n * process. Overrides the `workerSrc` option.\n * @property {string} workerSrc - A string containing the path and filename\n * of the worker file.\n *\n * NOTE: The `workerSrc` option should always be set, in order to prevent any\n * issues when using the PDF.js library.\n */\n\n/** @type {GlobalWorkerOptionsType} */\nconst GlobalWorkerOptions = Object.create(null);\n\nGlobalWorkerOptions.workerPort =\n GlobalWorkerOptions.workerPort === undefined\n ? null\n : GlobalWorkerOptions.workerPort;\n\nGlobalWorkerOptions.workerSrc =\n GlobalWorkerOptions.workerSrc === undefined\n ? \"\"\n : GlobalWorkerOptions.workerSrc;\n\nexport { GlobalWorkerOptions };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n PasswordException,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n unreachable(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this._createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = createPromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason),\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\n\n /**\n * @private\n */\n _createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: createPromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n }\n\n /**\n * @private\n */\n _processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(\n streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n );\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n /**\n * @private\n */\n async _deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall && streamController.startCall.promise,\n streamController.pullCall && streamController.pullCall.promise,\n streamController.cancelCall && streamController.cancelCall.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap } from \"../shared/util.js\";\n\nclass Metadata {\n #metadataMap;\n\n #data;\n\n constructor({ parsedData, rawData }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n\n getRaw() {\n return this.#data;\n }\n\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\nexport { Metadata };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { objectFromMap, warn } from \"../shared/util.js\";\n\nclass OptionalContentGroup {\n constructor(name, intent) {\n this.visible = true;\n this.name = name;\n this.intent = intent;\n }\n}\n\nclass OptionalContentConfig {\n constructor(data) {\n this.name = null;\n this.creator = null;\n this._order = null;\n this._groups = new Map();\n\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this._order = data.order;\n for (const group of data.groups) {\n this._groups.set(\n group.id,\n new OptionalContentGroup(group.name, group.intent)\n );\n }\n\n if (data.baseState === \"OFF\") {\n for (const group of this._groups) {\n group.visible = false;\n }\n }\n\n for (const on of data.on) {\n this._groups.get(on).visible = true;\n }\n\n for (const off of data.off) {\n this._groups.get(off).visible = false;\n }\n }\n\n _evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this._evaluateVisibilityExpression(element);\n } else if (this._groups.has(element)) {\n state = this._groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n\n isVisible(group) {\n if (this._groups.size === 0) {\n return true;\n }\n if (!group) {\n warn(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this._groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this._groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n // Per the spec, the expression should be preferred if available.\n if (group.expression) {\n return this._evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n // Default\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this._groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this._groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this._groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this._groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n\n setVisibility(id, visible = true) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n this._groups.get(id).visible = !!visible;\n }\n\n getOrder() {\n if (!this._groups.size) {\n return null;\n }\n if (this._order) {\n return this._order.slice();\n }\n return Array.from(this._groups.keys());\n }\n\n getGroups() {\n return this._groups.size > 0 ? objectFromMap(this._groups) : null;\n }\n\n getGroup(id) {\n return this._groups.get(id) || null;\n }\n}\n\nexport { OptionalContentConfig };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, createPromiseCapability } from \"../shared/util.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n constructor(params, pdfDataRangeTransport) {\n assert(\n pdfDataRangeTransport,\n 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.'\n );\n\n this._queuedChunks = [];\n this._progressiveDone = params.progressiveDone || false;\n this._contentDispositionFilename =\n params.contentDispositionFilename || null;\n\n const initialData = params.initialData;\n if (initialData?.length > 0) {\n const buffer = new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !params.disableStream;\n this._isRangeSupported = !params.disableRange;\n this._contentLength = params.length;\n\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({ begin, chunk });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({ loaded, total });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({ chunk });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData(args) {\n const buffer = new Uint8Array(args.chunk).buffer;\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(\n found,\n \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\"\n );\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n // Reporting to first range reader, if it exists.\n const firstReader = this._rangeReaders[0];\n if (firstReader?.onProgress) {\n firstReader.onProgress({ loaded: evt.loaded });\n }\n } else {\n const fullReader = this._fullRequestReader;\n if (fullReader?.onProgress) {\n fullReader.onProgress({ loaded: evt.loaded, total: evt.total });\n }\n }\n }\n\n _onProgressiveDone() {\n if (this._fullRequestReader) {\n this._fullRequestReader.progressiveDone();\n }\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFDataTransportStream.getFullReader can only be called once.\"\n );\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(\n this,\n queuedChunks,\n this._progressiveDone,\n this._contentDispositionFilename\n );\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n constructor(\n stream,\n queuedChunks,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename)\n ? contentDispositionFilename\n : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // Ignore new data.\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({ value: chunk, done: false });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\nexport { PDFDataTransportStream };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass XfaText {\n /**\n * Walk an XFA tree and create an array of text nodes that is compatible\n * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\n * all other fields and styles haven't been implemented.\n *\n * @param {Object} xfa - An XFA fake DOM object.\n *\n * @returns {TextContent}\n */\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null),\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str,\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n\n /**\n * @param {string} name - DOM node name. (lower case)\n *\n * @returns {boolean} true if the DOM node should have a corresponding text\n * node.\n */\n static shouldBuildText(name) {\n return !(\n name === \"textarea\" ||\n name === \"input\" ||\n name === \"option\" ||\n name === \"select\"\n );\n }\n}\n\nexport { XfaText };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n AnnotationBorderStyleType,\n AnnotationType,\n assert,\n shadow,\n stringToPDFString,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n DOMSVGFactory,\n getFilenameFromUrl,\n PDFDateString,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1],\n };\n}\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {PDFPageProxy} page\n * @property {PageViewport} viewport\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n * @property {Object} [mouseState]\n */\n\nclass AnnotationElementFactory {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\n\nclass AnnotationElement {\n constructor(\n parameters,\n {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false,\n } = {}\n ) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this._mouseState = parameters.mouseState;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);\n }\n }\n\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLSectionElement}\n */\n _createContainer(ignoreBorder = false) {\n const data = this.data,\n page = this.page,\n viewport = this.viewport;\n const container = document.createElement(\"section\");\n let { width, height } = getRectDims(data.rect);\n\n container.setAttribute(\"data-annotation-id\", data.id);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (data.hasOwnCanvas) {\n const transform = viewport.transform.slice();\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(transform);\n width = Math.ceil(width * scaleX);\n height = Math.ceil(height * scaleY);\n rect[0] *= scaleX;\n rect[1] *= scaleY;\n // Reset the scale part of the transform matrix (which must be diagonal\n // or anti-diagonal) in order to avoid to rescale the canvas.\n // The canvas for the annotation is correctly scaled when it is drawn\n // (see `beginAnnotation` in canvas.js).\n for (let i = 0; i < 4; i++) {\n transform[i] = Math.sign(transform[i]);\n }\n container.style.transform = `matrix(${transform.join(\",\")})`;\n } else {\n container.style.transform = `matrix(${viewport.transform.join(\",\")})`;\n }\n\n container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`;\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) {\n // Underline styles only have a bottom border, so we do not need\n // to adjust for all borders. This yields a similar result as\n // Adobe Acrobat/Reader.\n width -= 2 * data.borderStyle.width;\n height -= 2 * data.borderStyle.width;\n }\n\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `${horizontalRadius}px / ${verticalRadius}px`;\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n const borderColor = data.borderColor || data.color || null;\n if (borderColor) {\n container.style.borderColor = Util.makeHexColor(\n data.color[0] | 0,\n data.color[1] | 0,\n data.color[2] | 0\n );\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${rect[0]}px`;\n container.style.top = `${rect[1]}px`;\n\n if (data.hasOwnCanvas) {\n container.style.width = container.style.height = \"auto\";\n } else {\n container.style.width = `${width}px`;\n container.style.height = `${height}px`;\n }\n return container;\n }\n\n /**\n * Create quadrilaterals from the annotation's quadpoints.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {Array<HTMLSectionElement>}\n */\n _createQuadrilaterals(ignoreBorder = false) {\n if (!this.data.quadPoints) {\n return null;\n }\n\n const quadrilaterals = [];\n const savedRect = this.data.rect;\n for (const quadPoint of this.data.quadPoints) {\n this.data.rect = [\n quadPoint[2].x,\n quadPoint[2].y,\n quadPoint[1].x,\n quadPoint[1].y,\n ];\n quadrilaterals.push(this._createContainer(ignoreBorder));\n }\n this.data.rect = savedRect;\n return quadrilaterals;\n }\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @param {HTMLDivElement|HTMLImageElement|null} trigger\n * @param {Object} data\n * @memberof AnnotationElement\n */\n _createPopup(trigger, data) {\n let container = this.container;\n if (this.quadrilaterals) {\n trigger = trigger || this.quadrilaterals;\n container = this.quadrilaterals[0];\n }\n\n // If no trigger element is specified, create it.\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.style.height = container.style.height;\n trigger.style.width = container.style.width;\n container.appendChild(trigger);\n }\n\n const popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n hideWrapper: true,\n });\n const popup = popupElement.render();\n\n // Position the popup next to the annotation's container.\n popup.style.left = container.style.width;\n\n container.appendChild(popup);\n }\n\n /**\n * Render the quadrilaterals of the annotation.\n *\n * @private\n * @param {string} className\n * @memberof AnnotationElement\n * @returns {Array<HTMLSectionElement>}\n */\n _renderQuadrilaterals(className) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(this.quadrilaterals, \"Missing quadrilaterals during rendering\");\n }\n\n for (const quadrilateral of this.quadrilaterals) {\n quadrilateral.className = className;\n }\n return this.quadrilaterals;\n }\n\n /**\n * Render the annotation's HTML element(s).\n *\n * @public\n * @memberof AnnotationElement\n * @returns {HTMLSectionElement|Array<HTMLSectionElement>}\n */\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n\n /**\n * @private\n * @returns {Array}\n */\n _getElementsByName(name, skipId = null) {\n const fields = [];\n\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const { page, id, exportValues } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue =\n typeof exportValues === \"string\" ? exportValues : null;\n\n const domElement = document.getElementById(id);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n }\n return fields;\n }\n // Fallback to a regular DOM lookup, to ensure that the standalone\n // viewer components won't break.\n for (const domElement of document.getElementsByName(name)) {\n const { id, exportValue } = domElement;\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n return fields;\n }\n\n static get platform() {\n const platform = typeof navigator !== \"undefined\" ? navigator.platform : \"\";\n\n return shadow(this, \"platform\", {\n isWin: platform.includes(\"Win\"),\n isMac: platform.includes(\"Mac\"),\n });\n }\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n const isRenderable = !!(\n parameters.data.url ||\n parameters.data.dest ||\n parameters.data.action ||\n parameters.data.isTooltipOnly ||\n parameters.data.resetForm ||\n (parameters.data.actions &&\n (parameters.data.actions.Action ||\n parameters.data.actions[\"Mouse Up\"] ||\n parameters.data.actions[\"Mouse Down\"]))\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n const { data, linkService } = this;\n const link = document.createElement(\"a\");\n\n if (data.url) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n !linkService.addLinkAttributes\n ) {\n warn(\n \"LinkAnnotationElement.render - missing `addLinkAttributes`-method on the `linkService`-instance.\"\n );\n }\n linkService.addLinkAttributes?.(link, data.url, data.newWindow);\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n } else {\n let hasClickAction = false;\n if (\n data.actions &&\n (data.actions.Action ||\n data.actions[\"Mouse Up\"] ||\n data.actions[\"Mouse Down\"]) &&\n this.enableScripting &&\n this.hasJSActions\n ) {\n hasClickAction = true;\n this._bindJSAction(link, data);\n }\n\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n } else if (!hasClickAction) {\n this._bindLink(link, \"\");\n }\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"linkAnnotation\").map(\n (quadrilateral, index) => {\n const linkElement = index === 0 ? link : link.cloneNode();\n quadrilateral.appendChild(linkElement);\n return quadrilateral;\n }\n );\n }\n\n this.container.className = \"linkAnnotation\";\n this.container.appendChild(link);\n return this.container;\n }\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\n */\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === /* isTooltipOnly = */ \"\") {\n link.className = \"internalLink\";\n }\n }\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\n */\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n link.className = \"internalLink\";\n }\n\n /**\n * Bind JS actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} data\n * @memberof LinkAnnotationElement\n */\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([\n [\"Action\", \"onclick\"],\n [\"Mouse Up\", \"onmouseup\"],\n [\"Mouse Down\", \"onmousedown\"],\n ]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name,\n },\n });\n return false;\n };\n }\n\n if (!link.onclick) {\n link.onclick = () => false;\n }\n link.className = \"internalLink\";\n }\n\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n link.className = \"internalLink\";\n\n if (!this._fieldObjects) {\n warn(\n `_bindResetFormAction - \"resetForm\" action not supported, ` +\n \"ensure that the `fieldObjects` parameter is provided.\"\n );\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n\n link.onclick = () => {\n if (otherClickAction) {\n otherClickAction();\n }\n\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include,\n } = resetForm;\n\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const { id } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const { id } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value, valueAsString: value });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\": {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, { value });\n break;\n }\n case \"combobox\":\n case \"listbox\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n default:\n continue;\n }\n const domElement = document.getElementById(id);\n if (!domElement || !GetElementsByNameSet.has(domElement)) {\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n\n if (this.enableScripting) {\n // Update the values in the sandbox.\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\",\n },\n });\n }\n\n return false;\n };\n }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable });\n }\n\n render() {\n this.container.className = \"textAnnotation\";\n\n const image = document.createElement(\"img\");\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src =\n this.imageResourcesPath +\n \"annotation-\" +\n this.data.name.toLowerCase() +\n \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({ type: this.data.name });\n\n if (!this.data.hasPopup) {\n this._createPopup(image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n // Show only the container for unsupported field types.\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n\n return this.container;\n }\n\n _getKeyModifier(event) {\n const { isWin, isMac } = AnnotationElement.platform;\n return (isWin && event.ctrlKey) || (isMac && event.metaKey);\n }\n\n _setEventListener(element, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n // Mouse events\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event),\n },\n });\n });\n } else {\n // Non mouse event\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n },\n });\n });\n }\n }\n\n _setEventListeners(element, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n this._setEventListener(element, baseName, eventName, getter);\n }\n }\n }\n\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor =\n color === null\n ? \"transparent\"\n : Util.makeHexColor(color[0], color[1], color[2]);\n }\n\n _dispatchEventFromSandbox(actions, jsEvent) {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n event.target.style[styleName] = ColorConverters[`${color[0]}_HTML`](\n color.slice(1)\n );\n };\n\n const commonActions = {\n display: event => {\n const hidden = event.detail.display % 2 === 1;\n event.target.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden,\n print: event.detail.display === 0 || event.detail.display === 3,\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n print: event.detail.print,\n });\n },\n hidden: event => {\n event.target.style.visibility = event.detail.hidden\n ? \"hidden\"\n : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden: event.detail.hidden,\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({ preventScroll: false }), 0);\n },\n userName: event => {\n // tooltip\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n if (event.detail.readonly) {\n event.target.setAttribute(\"readonly\", \"\");\n } else {\n event.target.removeAttribute(\"readonly\");\n }\n },\n required: event => {\n if (event.detail.required) {\n event.target.setAttribute(\"required\", \"\");\n } else {\n event.target.removeAttribute(\"required\");\n }\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n };\n\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n if (action) {\n action(jsEvent);\n }\n }\n }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable =\n parameters.renderForms ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n super(parameters, { isRenderable });\n }\n\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(\n base.name,\n /* skipId = */ base.id\n )) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, { [keyInStorage]: value });\n }\n }\n\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n this.container.className = \"textWidgetAnnotation\";\n\n let element = null;\n if (this.renderForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n valueAsString: this.data.fieldValue,\n });\n const textContent = storedData.valueAsString || storedData.value || \"\";\n const elementData = {\n userValue: null,\n formattedValue: null,\n };\n\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = textContent;\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", textContent);\n }\n GetElementsByNameSet.add(element);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n elementData.userValue = textContent;\n element.setAttribute(\"id\", id);\n\n element.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n this.setPropertyOnSiblings(\n element,\n \"value\",\n event.target.value,\n \"value\"\n );\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue || \"\";\n element.value = elementData.userValue = defaultValue;\n delete elementData.formattedValue;\n });\n\n let blurListener = event => {\n if (elementData.formattedValue) {\n event.target.value = elementData.formattedValue;\n }\n // Reset the cursor position to the start of the field (issue 12359).\n event.target.scrollLeft = 0;\n };\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.userValue) {\n event.target.value = elementData.userValue;\n }\n });\n\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value || \"\";\n storage.setValue(id, { value: elementData.userValue.toString() });\n if (!elementData.formattedValue) {\n event.target.value = elementData.userValue;\n }\n },\n valueAsString(event) {\n elementData.formattedValue = event.detail.valueAsString || \"\";\n if (event.target !== document.activeElement) {\n // Input hasn't the focus so display formatted string\n event.target.value = elementData.formattedValue;\n }\n storage.setValue(id, {\n formattedValue: elementData.formattedValue,\n });\n },\n selRange(event) {\n const [selStart, selEnd] = event.detail.selRange;\n if (selStart >= 0 && selEnd < event.target.value.length) {\n event.target.setSelectionRange(selStart, selEnd);\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n // Even if the field hasn't any actions\n // leaving it can still trigger some actions with Calculate\n element.addEventListener(\"keydown\", event => {\n // if the key is one of Escape, Enter or Tab\n // then the data are committed\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\") {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n // Save the entered value\n elementData.userValue = event.target.value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: event.target.value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n elementData.userValue = event.target.value;\n if (this._mouseState.isDown) {\n // Focus out using the mouse: data are committed\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: event.target.value,\n willCommit: true,\n commitKey: 1,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n }\n _blurListener(event);\n });\n\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.formattedValue = \"\";\n const { data, target } = event;\n const { value, selectionStart, selectionEnd } = target;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data,\n willCommit: false,\n selStart: selectionStart,\n selEnd: selectionEnd,\n },\n });\n });\n }\n\n this._setEventListeners(\n element,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.value\n );\n }\n\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / this.data.maxLen;\n\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n }\n\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const { fontSize, fontColor } = this.data.defaultAppearanceData;\n const style = element.style;\n\n // TODO: If the font-size is zero, calculate it based on the height and\n // width of the element.\n // Not setting `style.fontSize` will use the default font-size for now.\n if (fontSize) {\n style.fontSize = `${fontSize}px`;\n }\n\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== \"Off\";\n storage.setValue(id, { value });\n }\n\n this.container.className = \"buttonWidgetAnnotation checkBox\";\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.disabled = data.readOnly;\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"id\", id);\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, { value: curChecked });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, { value: event.target.checked });\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.className = \"buttonWidgetAnnotation radioButton\";\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== data.buttonValue;\n storage.setValue(id, { value });\n }\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.disabled = data.readOnly;\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"id\", id);\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n storage.setValue(radio.id, { value: false });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked =\n defaultValue !== null &&\n defaultValue !== undefined &&\n defaultValue === data.buttonValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, { value: curChecked });\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n }\n\n render() {\n // The rendering and functionality of a push button widget annotation is\n // equal to that of a link annotation, but may have more functionality, such\n // as performing actions on form fields (resetting, submitting, et cetera).\n const container = super.render();\n container.className = \"buttonWidgetAnnotation pushButton\";\n\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n\n return container;\n }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.className = \"choiceWidgetAnnotation\";\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n // For printing/saving we currently only support choice widgets with one\n // option selection. Therefore, listboxes (#12189) and comboboxes (#12224)\n // are not properly printed/saved yet, so we only store the first item in\n // the field value array instead of the entire array. Once support for those\n // two field types is implemented, we should use the same pattern as the\n // other interactive widgets where the return value of `getValue`\n // is used and the full array of field values is stored.\n storage.getValue(id, {\n value:\n this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined,\n });\n\n let { fontSize } = this.data.defaultAppearanceData;\n if (!fontSize) {\n fontSize = 9;\n }\n const fontSizeStyle = `calc(${fontSize}px * var(--zoom-factor))`;\n\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.disabled = this.data.readOnly;\n selectElement.name = this.data.fieldName;\n selectElement.setAttribute(\"id\", id);\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n\n selectElement.style.fontSize = `${fontSize}px`;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n\n // Insert the options into the choice field.\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (this.data.combo) {\n optionElement.style.fontSize = fontSizeStyle;\n }\n if (this.data.fieldValue.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n }\n selectElement.appendChild(optionElement);\n }\n\n const getValue = (event, isExport) => {\n const name = isExport ? \"value\" : \"textContent\";\n const options = event.target.options;\n if (!event.target.multiple) {\n return options.selectedIndex === -1\n ? null\n : options[options.selectedIndex][name];\n }\n return Array.prototype.filter\n .call(options, option => option.selected)\n .map(option => option[name]);\n };\n\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => {\n return { displayValue: option.textContent, exportValue: option.value };\n });\n };\n\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n });\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(\n options,\n option => option.selected\n );\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, { value: null, items: [] });\n },\n insert(event) {\n const { index, displayValue, exportValue } = event.detail.insert;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.insertBefore(\n optionElement,\n selectElement.children[index]\n );\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n items(event) {\n const { items } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const { displayValue, exportValue } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.appendChild(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n });\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(event, /* isExport */ true);\n const value = getValue(event, /* isExport */ false);\n storage.setValue(id, { value: exportValue });\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n changeEx: exportValue,\n willCommit: true,\n commitKey: 1,\n keyDown: false,\n },\n });\n });\n\n this._setEventListeners(\n selectElement,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n [\"input\", \"Action\"],\n ],\n event => event.target.checked\n );\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, { value: getValue(event) });\n });\n }\n\n this._setBackgroundColor(selectElement);\n\n this.container.appendChild(selectElement);\n return this.container;\n }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable });\n }\n\n render() {\n // Do not render popup annotations for parent elements with these types as\n // they create the popups themselves (because of custom trigger divs).\n const IGNORE_TYPES = [\n \"Line\",\n \"Square\",\n \"Circle\",\n \"PolyLine\",\n \"Polygon\",\n \"Ink\",\n ];\n\n this.container.className = \"popupAnnotation\";\n\n if (IGNORE_TYPES.includes(this.data.parentType)) {\n return this.container;\n }\n\n const selector = `[data-annotation-id=\"${this.data.parentId}\"]`;\n const parentElements = this.layer.querySelectorAll(selector);\n if (parentElements.length === 0) {\n return this.container;\n }\n\n const popup = new PopupElement({\n container: this.container,\n trigger: Array.from(parentElements),\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n });\n\n // Position the popup next to the parent annotation's container.\n // PDF viewers ignore a popup annotation's rectangle.\n const page = this.page;\n const rect = Util.normalizeRect([\n this.data.parentRect[0],\n page.view[3] - this.data.parentRect[1] + page.view[1],\n this.data.parentRect[2],\n page.view[3] - this.data.parentRect[3] + page.view[1],\n ]);\n const popupLeft =\n rect[0] + this.data.parentRect[2] - this.data.parentRect[0];\n const popupTop = rect[1];\n\n this.container.style.transformOrigin = `${-popupLeft}px ${-popupTop}px`;\n this.container.style.left = `${popupLeft}px`;\n this.container.style.top = `${popupTop}px`;\n\n this.container.appendChild(popup.render());\n return this.container;\n }\n}\n\nclass PopupElement {\n constructor(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.titleObj = parameters.titleObj;\n this.modificationDate = parameters.modificationDate;\n this.contentsObj = parameters.contentsObj;\n this.richText = parameters.richText;\n this.hideWrapper = parameters.hideWrapper || false;\n\n this.pinned = false;\n }\n\n render() {\n const BACKGROUND_ENLIGHT = 0.7;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"popupWrapper\";\n\n // For Popup annotations we hide the entire section because it contains\n // only the popup. However, for Text annotations without a separate Popup\n // annotation, we cannot hide the entire container as the image would\n // disappear too. In that special case, hiding the wrapper suffices.\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.hidden = true;\n\n const popup = document.createElement(\"div\");\n popup.className = \"popup\";\n\n const color = this.color;\n if (color) {\n // Enlighten the color.\n const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = Util.makeHexColor(r | 0, g | 0, b | 0);\n }\n\n const title = document.createElement(\"h1\");\n title.dir = this.titleObj.dir;\n title.textContent = this.titleObj.str;\n popup.appendChild(title);\n\n // The modification date is shown in the popup instead of the creation\n // date if it is available and can be parsed correctly, which is\n // consistent with other viewers such as Adobe Acrobat.\n const dateObject = PDFDateString.toDateObject(this.modificationDate);\n if (dateObject) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.className = \"popupDate\";\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString(),\n });\n popup.appendChild(modificationDate);\n }\n\n if (\n this.richText?.str &&\n (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)\n ) {\n XfaLayer.render({\n xfaHtml: this.richText.html,\n intent: \"richText\",\n div: popup,\n });\n popup.lastChild.className = \"richText popupContent\";\n } else {\n const contents = this._formatContents(this.contentsObj);\n popup.appendChild(contents);\n }\n\n if (!Array.isArray(this.trigger)) {\n this.trigger = [this.trigger];\n }\n\n // Attach the event listeners to the trigger element.\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this._toggle.bind(this));\n element.addEventListener(\"mouseover\", this._show.bind(this, false));\n element.addEventListener(\"mouseout\", this._hide.bind(this, false));\n }\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n\n wrapper.appendChild(popup);\n return wrapper;\n }\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {Object<string, string>} contentsObj\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents({ str, dir }) {\n const p = document.createElement(\"p\");\n p.className = \"popupContent\";\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.appendChild(document.createTextNode(line));\n if (i < ii - 1) {\n p.appendChild(document.createElement(\"br\"));\n }\n }\n return p;\n }\n\n /**\n * Toggle the visibility of the popup.\n *\n * @private\n * @memberof PopupElement\n */\n _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n\n /**\n * Show the popup.\n *\n * @private\n * @param {boolean} pin\n * @memberof PopupElement\n */\n _show(pin = false) {\n if (pin) {\n this.pinned = true;\n }\n if (this.hideElement.hidden) {\n this.hideElement.hidden = false;\n this.container.style.zIndex += 1;\n }\n }\n\n /**\n * Hide the popup.\n *\n * @private\n * @param {boolean} unpin\n * @memberof PopupElement\n */\n _hide(unpin = true) {\n if (unpin) {\n this.pinned = false;\n }\n if (!this.hideElement.hidden && !this.pinned) {\n this.hideElement.hidden = true;\n this.container.style.zIndex -= 1;\n }\n }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"freeTextAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"lineAnnotation\";\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\n const line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n this._createPopup(line, data);\n\n return this.container;\n }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"squareAnnotation\";\n\n // Create an invisible square with the same rectangle that acts as the\n // trigger for the popup. Only the square itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n // The browser draws half of the borders inside the square and half of\n // the borders outside the square by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(square);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the square instead\n // of to the entire container (which is the default).\n this._createPopup(square, data);\n\n return this.container;\n }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"circleAnnotation\";\n\n // Create an invisible circle with the same ellipse that acts as the\n // trigger for the popup. Only the circle itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n // The browser draws half of the borders inside the circle and half of\n // the borders outside the circle by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(circle);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the circle instead\n // of to the entire container (which is the default).\n this._createPopup(circle, data);\n\n return this.container;\n }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup. Only the polyline itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n // Convert the vertices array to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(polyline);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(polyline, data);\n\n return this.container;\n }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"caretAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n\n this.containerClassName = \"inkAnnotation\";\n\n // Use the polyline SVG element since it allows us to use coordinates\n // directly and to draw both straight lines and curves.\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n for (const inkList of data.inkLists) {\n // Convert the ink list to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(polyline, data);\n\n svg.appendChild(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"highlightAnnotation\");\n }\n\n this.container.className = \"highlightAnnotation\";\n return this.container;\n }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"underlineAnnotation\");\n }\n\n this.container.className = \"underlineAnnotation\";\n return this.container;\n }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"squigglyAnnotation\");\n }\n\n this.container.className = \"squigglyAnnotation\";\n return this.container;\n }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"strikeoutAnnotation\");\n }\n\n this.container.className = \"strikeoutAnnotation\";\n return this.container;\n }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"stampAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n\n const { filename, content } = this.data.file;\n this.filename = getFilenameFromUrl(filename);\n this.content = content;\n\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n id: stringToPDFString(filename),\n filename,\n content,\n });\n }\n\n render() {\n this.container.className = \"fileAttachmentAnnotation\";\n\n const trigger = document.createElement(\"div\");\n trigger.style.height = this.container.style.height;\n trigger.style.width = this.container.style.width;\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n if (\n !this.data.hasPopup &&\n (this.data.titleObj?.str ||\n this.data.contentsObj?.str ||\n this.data.richText)\n ) {\n this._createPopup(trigger, this.data);\n }\n\n this.container.appendChild(trigger);\n return this.container;\n }\n\n /**\n * Download the file attachment associated with this annotation.\n *\n * @private\n * @memberof FileAttachmentAnnotationElement\n */\n _download() {\n this.downloadManager?.openOrDownloadData(\n this.container,\n this.content,\n this.filename\n );\n }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n * The default value is `false`.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n */\n\nclass AnnotationLayer {\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n static render(parameters) {\n const sortedAnnotations = [],\n popupAnnotations = [];\n // Ensure that Popup annotations are handled last, since they're dependant\n // upon the parent annotation having already been rendered (please refer to\n // the `PopupAnnotationElement.render` method); fixes issue 11362.\n for (const data of parameters.annotations) {\n if (!data) {\n continue;\n }\n const { width, height } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue;\n }\n if (data.annotationType === AnnotationType.POPUP) {\n popupAnnotations.push(data);\n continue;\n }\n sortedAnnotations.push(data);\n }\n if (popupAnnotations.length) {\n sortedAnnotations.push(...popupAnnotations);\n }\n\n const div = parameters.div;\n\n for (const data of sortedAnnotations) {\n const element = AnnotationElementFactory.create({\n data,\n layer: div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath || \"\",\n renderForms: parameters.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage:\n parameters.annotationStorage || new AnnotationStorage(),\n enableScripting: parameters.enableScripting,\n hasJSActions: parameters.hasJSActions,\n fieldObjects: parameters.fieldObjects,\n mouseState: parameters.mouseState || { isDown: false },\n });\n if (element.isRenderable) {\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n if (Array.isArray(rendered)) {\n for (const renderedElement of rendered) {\n div.appendChild(renderedElement);\n }\n } else {\n if (element instanceof PopupAnnotationElement) {\n // Popup annotation elements should not be on top of other\n // annotation elements to prevent interfering with mouse events.\n div.prepend(rendered);\n } else {\n div.appendChild(rendered);\n }\n }\n }\n }\n\n this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap);\n }\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n static update(parameters) {\n const { page, viewport, annotations, annotationCanvasMap, div } =\n parameters;\n const transform = viewport.transform;\n const matrix = `matrix(${transform.join(\",\")})`;\n\n let scale, ownMatrix;\n for (const data of annotations) {\n const elements = div.querySelectorAll(\n `[data-annotation-id=\"${data.id}\"]`\n );\n if (elements) {\n for (const element of elements) {\n if (data.hasOwnCanvas) {\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (!ownMatrix) {\n // When an annotation has its own canvas, then\n // the scale has been already applied to the canvas,\n // so we musn't scale it twice.\n scale = Math.abs(transform[0] || transform[1]);\n const ownTransform = transform.slice();\n for (let i = 0; i < 4; i++) {\n ownTransform[i] = Math.sign(ownTransform[i]);\n }\n ownMatrix = `matrix(${ownTransform.join(\",\")})`;\n }\n\n const left = rect[0] * scale;\n const top = rect[1] * scale;\n element.style.left = `${left}px`;\n element.style.top = `${top}px`;\n element.style.transformOrigin = `${-left}px ${-top}px`;\n element.style.transform = ownMatrix;\n } else {\n element.style.transform = matrix;\n }\n }\n }\n }\n\n this.#setAnnotationCanvasMap(div, annotationCanvasMap);\n div.hidden = false;\n }\n\n static #setAnnotationCanvasMap(div, annotationCanvasMap) {\n if (!annotationCanvasMap) {\n return;\n }\n for (const [id, canvas] of annotationCanvasMap) {\n const element = div.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n\n const { firstChild } = element;\n if (firstChild.nodeName === \"CANVAS\") {\n element.replaceChild(canvas, firstChild);\n } else {\n element.insertBefore(canvas, firstChild);\n }\n }\n annotationCanvasMap.clear();\n }\n}\n\nexport { AnnotationLayer };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n * `../scripting_api/` folders, hence be EXTREMELY careful about\n * introducing any dependencies here since that can lead to an\n * unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n}\n\n// PDF specifications section 10.3\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_HTML([r, g, b]) {\n const R = makeColorComp(r);\n const G = makeColorComp(g);\n const B = makeColorComp(b);\n return `#${R}${G}${B}`;\n }\n\n static T_HTML() {\n return \"#00000000\";\n }\n\n static CMYK_RGB([c, y, m, k]) {\n return [\n \"RGB\",\n 1 - Math.min(1, c + k),\n 1 - Math.min(1, m + k),\n 1 - Math.min(1, y + k),\n ];\n }\n\n static CMYK_HTML(components) {\n return this.RGB_HTML(this.CMYK_RGB(components));\n }\n\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\n\nexport { ColorConverters };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { warn } from \"../shared/util.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\n/**\n * @typedef {Object} XfaLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Object} xfaHtml\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {string} [intent] - (default value is 'display').\n */\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, { value: null });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n });\n break;\n case \"input\":\n if (\n element.attributes.type === \"radio\" ||\n element.attributes.type === \"checkbox\"\n ) {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n // The checked attribute may have been set when opening the file,\n // unset through the UI and we're here because of printing.\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked\n ? event.target.getAttribute(\"xfaOn\")\n : event.target.getAttribute(\"xfaOff\"),\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value =\n options.selectedIndex === -1\n ? \"\"\n : options[options.selectedIndex].value;\n storage.setValue(id, { value });\n });\n break;\n }\n }\n\n static setAttributes({ html, element, storage = null, intent, linkService }) {\n const { attributes } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n if (attributes.type === \"radio\") {\n // Avoid to have a radio group when printing with the same as one\n // already displayed.\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n // We don't need to add dataId in the html object but it can\n // be useful to know its value when writing printing tests:\n // in this case, don't skip dataId to have its value.\n if (value === null || value === undefined || key === \"dataId\") {\n continue;\n }\n\n if (key !== \"style\") {\n if (key === \"textContent\") {\n html.textContent = value;\n } else if (key === \"class\") {\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n } else {\n if (isHTMLAnchorElement && (key === \"href\" || key === \"newWindow\")) {\n continue; // Handled below.\n }\n html.setAttribute(key, value);\n }\n } else {\n Object.assign(html.style, value);\n }\n }\n\n if (isHTMLAnchorElement) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n !linkService.addLinkAttributes\n ) {\n warn(\n \"XfaLayer.setAttribute - missing `addLinkAttributes`-method on the `linkService`-instance.\"\n );\n }\n linkService.addLinkAttributes?.(\n html,\n attributes.href,\n attributes.newWindow\n );\n }\n\n // Set the value after the others to be sure overwrite\n // any other values.\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n\n /**\n * Render the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\n */\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService,\n });\n }\n const stack = [[root, -1, rootHtml]];\n\n const rootDiv = parameters.div;\n rootDiv.appendChild(rootHtml);\n\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n\n // Set defaults.\n if (intent !== \"richText\") {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n\n // Text nodes used for the text highlighter.\n const textDivs = [];\n\n while (stack.length > 0) {\n const [parent, i, html] = stack[stack.length - 1];\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n\n const child = parent.children[++stack[stack.length - 1][1]];\n if (child === null) {\n continue;\n }\n\n const { name } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.appendChild(node);\n continue;\n }\n\n let childHtml;\n if (child?.attributes?.xmlns) {\n childHtml = document.createElementNS(child.attributes.xmlns, name);\n } else {\n childHtml = document.createElement(name);\n }\n\n html.appendChild(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService,\n });\n }\n\n if (child.children && child.children.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.appendChild(node);\n }\n }\n\n /**\n * TODO: re-enable that stuff once we've JS implementation.\n * See https://bugzilla.mozilla.org/show_bug.cgi?id=1719465.\n *\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaDisabled input, .xfaDisabled textarea\"\n * )) {\n * el.setAttribute(\"disabled\", true);\n * }\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaReadOnly input, .xfaReadOnly textarea\"\n * )) {\n * el.setAttribute(\"readOnly\", true);\n * }\n */\n\n for (const el of rootDiv.querySelectorAll(\n \".xfaNonInteractive input, .xfaNonInteractive textarea\"\n )) {\n el.setAttribute(\"readOnly\", true);\n }\n\n return {\n textDivs,\n };\n }\n\n /**\n * Update the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\n */\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\nexport { XfaLayer };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n createPromiseCapability,\n Util,\n} from \"../shared/util.js\";\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {import(\"./api\").TextContent} [textContent] - Text content to\n * render (the object is returned by the page's `getTextContent` method).\n * @property {ReadableStream} [textContentStream] - Text content stream to\n * render (the stream is returned by the page's `streamTextContent` method).\n * @property {HTMLElement} container - HTML element that will contain text runs.\n * @property {import(\"./display_utils\").PageViewport} viewport - The target\n * viewport to properly layout the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that are correspond\n * to the text items of the textContent input. This is output and shall be\n * initially be set to empty array.\n * @property {Array<string>} [textContentItemsStr] - Strings that correspond to\n * the `str` property of the text items of textContent input. This is output\n * and shall be initially be set to empty array.\n * @property {number} [timeout] - Delay in milliseconds before rendering of the\n * text runs occurs.\n * @property {boolean} [enhanceTextSelection] - Whether to turn on the text\n * selection enhancement.\n */\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\nconst AllWhitespaceRegexp = /^\\s+$/g;\n\nfunction getAscent(fontFamily, ctx) {\n const cachedAscent = ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n\n ctx.save();\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n\n // Both properties aren't available by default in Firefox.\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n ctx.restore();\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n // Try basic heuristic to guess ascent/descent.\n // Draw a g with baseline at 0,0 and then get the line\n // number where a pixel has non-null red component (starting\n // from bottom).\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(\n 0,\n 0,\n DEFAULT_FONT_SIZE,\n DEFAULT_FONT_SIZE\n ).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n // Draw an A with baseline at 0,DEFAULT_FONT_SIZE and then get the line\n // number where a pixel has non-null red component (starting\n // from top).\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n ctx.restore();\n\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles, ctx) {\n // Initialize all used properties to keep the caches monomorphic.\n const textDiv = document.createElement(\"span\");\n const textDivProperties = task._enhanceTextSelection\n ? {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1,\n }\n : {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n };\n\n task._textDivs.push(textDiv);\n\n const tx = Util.transform(task._viewport.transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * getAscent(style.fontFamily, ctx);\n\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n // Setting the style properties individually, rather than all at once,\n // should be OK since the `textDiv` isn't appended to the document yet.\n textDiv.style.left = `${left}px`;\n textDiv.style.top = `${top}px`;\n textDiv.style.fontSize = `${fontHeight}px`;\n textDiv.style.fontFamily = style.fontFamily;\n\n // Keeps screen readers from pausing on every new text span.\n textDiv.setAttribute(\"role\", \"presentation\");\n\n textDiv.textContent = geom.str;\n // geom.dir may be 'ttb' for vertical texts.\n textDiv.dir = geom.dir;\n\n // `fontName` is only used by the FontInspector, and we only use `dataset`\n // here to make the font name available in the debugger.\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n // We don't bother scaling single-char text divs, because it has very\n // little effect on text highlighting. This makes scrolling on docs with\n // lots of such divs a lot faster.\n let shouldScaleText = false;\n if (\n geom.str.length > 1 ||\n (task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str))\n ) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n // When the horizontal/vertical scaling differs significantly, also scale\n // even single-char text to improve highlighting (fixes issue11713.pdf).\n if (\n absScaleX !== absScaleY &&\n Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5\n ) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection && textDivProperties.hasText) {\n let angleCos = 1,\n angleSin = 0;\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n const divWidth =\n (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n const divHeight = fontHeight;\n\n let m, b;\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m,\n });\n }\n}\n\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n const textDivs = task._textDivs;\n const capability = task._capability;\n const textDivsLength = textDivs.length;\n\n // No point in rendering many divs as it would make the browser\n // unusable even after the divs are rendered.\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (let i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n}\n\nfunction findPositiveMin(ts, offset, count) {\n let result = 0;\n for (let i = 0; i < count; i++) {\n const t = ts[offset++];\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n return result;\n}\n\nfunction expand(task) {\n const bounds = task._bounds;\n const viewport = task._viewport;\n\n const expanded = expandBounds(viewport.width, viewport.height, bounds);\n for (let i = 0; i < expanded.length; i++) {\n const div = bounds[i].div;\n const divProperties = task._textDivProperties.get(div);\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n task._textDivProperties.set(div, divProperties);\n continue;\n }\n // Box is rotated -- trying to find padding so rotated div will not\n // exceed its expanded bounds.\n const e = expanded[i],\n b = bounds[i];\n const m = b.m,\n c = m[0],\n s = m[1];\n // Finding intersections with expanded box.\n const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n const ts = new Float64Array(64);\n for (let j = 0, jj = points.length; j < jj; j++) {\n const t = Util.applyTransform(points[j], m);\n ts[j + 0] = c && (e.left - t[0]) / c;\n ts[j + 4] = s && (e.top - t[1]) / s;\n ts[j + 8] = c && (e.right - t[0]) / c;\n ts[j + 12] = s && (e.bottom - t[1]) / s;\n\n ts[j + 16] = s && (e.left - t[0]) / -s;\n ts[j + 20] = c && (e.top - t[1]) / c;\n ts[j + 24] = s && (e.right - t[0]) / -s;\n ts[j + 28] = c && (e.bottom - t[1]) / c;\n\n ts[j + 32] = c && (e.left - t[0]) / -c;\n ts[j + 36] = s && (e.top - t[1]) / -s;\n ts[j + 40] = c && (e.right - t[0]) / -c;\n ts[j + 44] = s && (e.bottom - t[1]) / -s;\n\n ts[j + 48] = s && (e.left - t[0]) / s;\n ts[j + 52] = c && (e.top - t[1]) / -c;\n ts[j + 56] = s && (e.right - t[0]) / s;\n ts[j + 60] = c && (e.bottom - t[1]) / -c;\n }\n // Not based on math, but to simplify calculations, using cos and sin\n // absolute values to not exceed the box (it can but insignificantly).\n const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n task._textDivProperties.set(div, divProperties);\n }\n}\n\nfunction expandBounds(width, height, boxes) {\n const bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined,\n };\n });\n expandBoundsLTR(width, bounds);\n\n const expanded = new Array(boxes.length);\n for (const b of bounds) {\n const i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0,\n };\n }\n\n // Rotating on 90 degrees and extending extended boxes. Reusing the bounds\n // array and objects.\n boxes.map(function (box, i) {\n const e = expanded[i],\n b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n\n for (const b of bounds) {\n const i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n }\n return expanded;\n}\n\nfunction expandBoundsLTR(width, bounds) {\n // Sorting by x1 coordinate and walk by the bounds in the same order.\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n\n // First we see on the horizon is a fake boundary.\n const fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0,\n };\n const horizon = [\n {\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary,\n },\n ];\n\n for (const boundary of bounds) {\n // Searching for the affected part of horizon.\n // TODO red-black tree or simple binary search\n let i = 0;\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n let j = horizon.length - 1;\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n let horizonPart, affectedBoundary;\n let q,\n k,\n maxXNew = -Infinity;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n let xNew;\n if (affectedBoundary.x2 > boundary.x1) {\n // In the middle of the previous element, new x shall be at the\n // boundary start. Extending if further if the affected boundary\n // placed on top of the current one.\n xNew =\n affectedBoundary.index > boundary.index\n ? affectedBoundary.x1New\n : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n // We have some space in between, new x in middle will be a fair\n // choice.\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n // Affected boundary has x2new set, using it as new x.\n xNew = affectedBoundary.x2New;\n }\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n // Set new x1 for current boundary.\n boundary.x1New = maxXNew;\n\n // Adjusts new x2 for the affected boundaries.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n // Was not set yet, choosing new x if possible.\n if (affectedBoundary.x2 > boundary.x1) {\n // Current and affected boundaries intersect. If affected boundary\n // is placed on top of the current, shrinking the affected.\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n // Affected boundary is touching new x, pushing it back.\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n // Fixing the horizon.\n const changedHorizon = [];\n let lastBoundary = null;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n // Checking which boundary will be visible.\n const useBoundary =\n affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n if (lastBoundary === useBoundary) {\n // Merging with previous.\n changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary,\n });\n lastBoundary = useBoundary;\n }\n }\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary,\n });\n }\n if (boundary.y2 < horizon[j].end) {\n changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary,\n });\n }\n\n // Set x2 new of boundary that is no longer visible (see overlapping case\n // above).\n // TODO more efficient, e.g. via reference counting.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n let used = false;\n for (\n k = i - 1;\n !used && k >= 0 && horizon[k].start >= affectedBoundary.y1;\n k--\n ) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (\n k = j + 1;\n !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2;\n k++\n ) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(\n horizon,\n [i, j - i + 1].concat(changedHorizon)\n );\n }\n\n // Set new x2 for all unset boundaries.\n for (const horizonPart of horizon) {\n const affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n }\n}\n\nclass TextLayerRenderTask {\n constructor({\n textContent,\n textContentStream,\n container,\n viewport,\n textDivs,\n textContentItemsStr,\n enhanceTextSelection,\n }) {\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._document = container.ownerDocument;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = createPromiseCapability();\n this._renderTimer = null;\n this._bounds = [];\n\n // Always clean-up the temporary canvas once rendering is no longer pending.\n this._capability.promise\n .finally(() => {\n if (!this._enhanceTextSelection) {\n // The `textDiv` properties are no longer needed.\n this._textDivProperties = null;\n }\n\n if (this._layoutTextCtx) {\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this._layoutTextCtx.canvas.width = 0;\n this._layoutTextCtx.canvas.height = 0;\n this._layoutTextCtx = null;\n }\n })\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n }\n\n /**\n * Promise for textLayer rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Cancel rendering of the textLayer.\n */\n cancel() {\n this._canceled = true;\n if (this._reader) {\n this._reader\n .cancel(new AbortException(\"TextLayer task cancelled.\"))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n this._reader = null;\n }\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n }\n\n /**\n * @private\n */\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n if (items[i].str === undefined) {\n if (\n items[i].type === \"beginMarkedContentProps\" ||\n items[i].type === \"beginMarkedContent\"\n ) {\n const parent = this._container;\n this._container = document.createElement(\"span\");\n this._container.classList.add(\"markedContent\");\n if (items[i].id !== null) {\n this._container.setAttribute(\"id\", `${items[i].id}`);\n }\n parent.appendChild(this._container);\n } else if (items[i].type === \"endMarkedContent\") {\n this._container = this._container.parentNode;\n }\n continue;\n }\n this._textContentItemsStr.push(items[i].str);\n appendText(this, items[i], styleCache, this._layoutTextCtx);\n }\n }\n\n /**\n * @private\n */\n _layoutText(textDiv) {\n const textDivProperties = this._textDivProperties.get(textDiv);\n\n let transform = \"\";\n if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) {\n const { fontSize, fontFamily } = textDiv.style;\n\n // Only build font string and set to context if different from last.\n if (\n fontSize !== this._layoutTextLastFontSize ||\n fontFamily !== this._layoutTextLastFontFamily\n ) {\n this._layoutTextCtx.font = `${fontSize} ${fontFamily}`;\n this._layoutTextLastFontSize = fontSize;\n this._layoutTextLastFontFamily = fontFamily;\n }\n // Only measure the width for multi-char text divs, see `appendText`.\n const { width } = this._layoutTextCtx.measureText(textDiv.textContent);\n\n if (width > 0) {\n const scale = textDivProperties.canvasWidth / width;\n if (this._enhanceTextSelection) {\n textDivProperties.scale = scale;\n }\n transform = `scaleX(${scale})`;\n }\n }\n if (textDivProperties.angle !== 0) {\n transform = `rotate(${textDivProperties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n if (this._enhanceTextSelection) {\n textDivProperties.originalTransform = transform;\n }\n textDiv.style.transform = transform;\n }\n\n if (textDivProperties.hasText) {\n this._container.appendChild(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this._container.appendChild(br);\n }\n }\n\n /**\n * @private\n */\n _render(timeout = 0) {\n const capability = createPromiseCapability();\n let styleCache = Object.create(null);\n\n // The temporary canvas is used to measure text length in the DOM.\n const canvas = this._document.createElement(\"canvas\");\n canvas.height = canvas.width = DEFAULT_FONT_SIZE;\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n canvas.mozOpaque = true;\n }\n this._layoutTextCtx = canvas.getContext(\"2d\", { alpha: false });\n\n if (this._textContent) {\n const textItems = this._textContent.items;\n const textStyles = this._textContent.styles;\n this._processItems(textItems, textStyles);\n capability.resolve();\n } else if (this._textContentStream) {\n const pump = () => {\n this._reader.read().then(({ value, done }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error(\n 'Neither \"textContent\" nor \"textContentStream\" parameters specified.'\n );\n }\n\n capability.promise.then(() => {\n styleCache = null;\n if (!timeout) {\n // Render right away\n render(this);\n } else {\n // Schedule\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n }\n\n /**\n * @param {boolean} [expandDivs]\n */\n expandTextDivs(expandDivs = false) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n const transformBuf = [],\n paddingBuf = [];\n\n for (let i = 0, ii = this._textDivs.length; i < ii; i++) {\n const div = this._textDivs[i];\n const divProps = this._textDivProperties.get(div);\n\n if (!divProps.hasText) {\n continue;\n }\n if (expandDivs) {\n transformBuf.length = 0;\n paddingBuf.length = 0;\n\n if (divProps.originalTransform) {\n transformBuf.push(divProps.originalTransform);\n }\n if (divProps.paddingTop > 0) {\n paddingBuf.push(`${divProps.paddingTop}px`);\n transformBuf.push(`translateY(${-divProps.paddingTop}px)`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingRight > 0) {\n paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingBottom > 0) {\n paddingBuf.push(`${divProps.paddingBottom}px`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingLeft > 0) {\n paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);\n transformBuf.push(\n `translateX(${-divProps.paddingLeft / divProps.scale}px)`\n );\n } else {\n paddingBuf.push(0);\n }\n\n div.style.padding = paddingBuf.join(\" \");\n if (transformBuf.length) {\n div.style.transform = transformBuf.join(\" \");\n }\n } else {\n div.style.padding = null;\n div.style.transform = divProps.originalTransform;\n }\n }\n }\n}\n\n/**\n * @param {TextLayerRenderParameters} renderParameters\n * @returns {TextLayerRenderTask}\n */\nfunction renderTextLayer(renderParameters) {\n const task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection,\n });\n task._render(renderParameters.timeout);\n return task;\n}\n\nexport { renderTextLayer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n OPS,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { DOMSVGFactory } from \"./display_utils.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\n\n/** @type {any} */\nlet SVGGraphics = class {\n constructor() {\n unreachable(\"Not implemented: SVGGraphics\");\n }\n};\n\nif (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n) {\n const SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\",\n };\n const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n const createObjectURL = function (\n data,\n contentType = \"\",\n forceDataSchema = false\n ) {\n if (\n URL.createObjectURL &&\n typeof Blob !== \"undefined\" &&\n !forceDataSchema\n ) {\n return URL.createObjectURL(new Blob([data], { type: contentType }));\n }\n // Blob/createObjectURL is not available, falling back to data schema.\n const digits =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n let buffer = `data:${contentType};base64,`;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = ((b1 & 3) << 4) | (b2 >> 4);\n const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n };\n\n const convertImgDataToPng = (function () {\n const PNG_HEADER = new Uint8Array([\n 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,\n ]);\n const CHUNK_WRAPPER_SIZE = 12;\n\n const crcTable = new Int32Array(256);\n for (let i = 0; i < 256; i++) {\n let c = i;\n for (let h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ ((c >> 1) & 0x7fffffff);\n } else {\n c = (c >> 1) & 0x7fffffff;\n }\n }\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n let crc = -1;\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = (crc >>> 8) ^ b;\n }\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n\n data[p] = (len >> 24) & 0xff;\n data[p + 1] = (len >> 16) & 0xff;\n data[p + 2] = (len >> 8) & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n\n data.set(body, p);\n p += body.length;\n\n const crc = crc32(data, offset + 4, p);\n data[p] = (crc >> 24) & 0xff;\n data[p + 1] = (crc >> 16) & 0xff;\n data[p + 2] = (crc >> 8) & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n return (b << 16) | a;\n }\n\n /**\n * @param {Uint8Array} literals The input data.\n * @returns {Uint8Array} The DEFLATE-compressed data stream in zlib format.\n * This is the required format for compressed streams in the PNG format:\n * http://www.libpng.org/pub/png/spec/1.2/PNG-Compression.html\n */\n function deflateSync(literals) {\n if (!isNodeJS) {\n // zlib is certainly not available outside of Node.js. We can either use\n // the pako library for client-side DEFLATE compression, or use the\n // canvas API of the browser to obtain a more optimal PNG file.\n return deflateSyncUncompressed(literals);\n }\n try {\n // NOTE: This implementation is far from perfect, but already way better\n // than not applying any compression.\n //\n // A better algorithm will try to choose a good predictor/filter and\n // then choose a suitable zlib compression strategy (e.g. 3,Z_RLE).\n //\n // Node v0.11.12 zlib.deflateSync is introduced (and returns a Buffer).\n // Node v3.0.0 Buffer inherits from Uint8Array.\n // Node v8.0.0 zlib.deflateSync accepts Uint8Array as input.\n let input;\n // eslint-disable-next-line no-undef\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n // eslint-disable-next-line no-undef\n input = Buffer.from(literals);\n }\n const output = __non_webpack_require__(\"zlib\").deflateSync(input, {\n level: 9,\n });\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n warn(\n \"Not compressing PNG because zlib.deflateSync is unavailable: \" + e\n );\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n // An implementation of DEFLATE with compression level 0 (Z_NO_COMPRESSION).\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78; // compression method and flags\n idat[pi++] = 0x9c; // flags\n\n let pos = 0;\n while (len > maxBlockLength) {\n // writing non-final DEFLATE blocks type 0 and length of 65535\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n // writing non-final DEFLATE blocks type 0\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = (len >> 8) & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = ((~len & 0xffff) >> 8) & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n\n const adler = adler32(literals, 0, literals.length); // checksum\n idat[pi++] = (adler >> 24) & 0xff;\n idat[pi++] = (adler >> 16) & 0xff;\n idat[pi++] = (adler >> 8) & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n\n switch (kind) {\n case ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = (width + 7) >> 3;\n break;\n case ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n case ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n default:\n throw new Error(\"invalid format\");\n }\n\n // prefix every row with predictor 0\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0; // no prediction\n literals.set(\n bytes.subarray(offsetBytes, offsetBytes + lineSize),\n offsetLiterals\n );\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === ImageKind.GRAYSCALE_1BPP && isMask) {\n // inverting for image masks\n offsetLiterals = 0;\n for (let y = 0; y < height; y++) {\n offsetLiterals++; // skipping predictor\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n const ihdr = new Uint8Array([\n (width >> 24) & 0xff,\n (width >> 16) & 0xff,\n (width >> 8) & 0xff,\n width & 0xff,\n (height >> 24) & 0xff,\n (height >> 16) & 0xff,\n (height >> 8) & 0xff,\n height & 0xff,\n bitDepth, // bit depth\n colorType, // color type\n 0x00, // compression method\n 0x00, // filter method\n 0x00, // interlace method\n ]);\n const idat = deflateSync(literals);\n\n // PNG consists of: header, IHDR+data, IDAT+data, and IEND.\n const pngLength =\n PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n\n return createObjectURL(data, \"image/png\", forceDataSchema);\n }\n\n // eslint-disable-next-line no-shadow\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind =\n imgData.kind === undefined ? ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n })();\n\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n\n this.textMatrix = IDENTITY_MATRIX;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n\n // Default foreground and background colors\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n\n this.dashArray = [];\n this.dashPhase = 0;\n\n this.dependencies = [];\n\n // Clipping\n this.activeClipUrl = null;\n this.clipGroup = null;\n\n this.maskId = \"\";\n }\n\n clone() {\n return Object.create(this);\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n }\n\n // eslint-disable-next-line no-inner-declarations\n function opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({ fnId: 92, fn: \"group\", items: [] });\n tmp.push(opTree);\n opTree = opTree[opTree.length - 1].items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n return opTree;\n }\n\n /**\n * Format a float number as a string.\n *\n * @param value {number} - The float number to format.\n * @returns {string}\n */\n // eslint-disable-next-line no-inner-declarations\n function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n const s = value.toFixed(10);\n let i = s.length - 1;\n if (s[i] !== \"0\") {\n return s;\n }\n\n // Remove trailing zeros.\n do {\n i--;\n } while (s[i] === \"0\");\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n }\n\n /**\n * Format a transform matrix as a string. The standard rotation, scale and\n * translation matrices are replaced by their shorter forms, and for\n * identity matrices an empty string is returned to save memory.\n *\n * @param m {Array} - The transform matrix to format.\n * @returns {string}\n */\n // eslint-disable-next-line no-inner-declarations\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = (Math.acos(m[0]) * 180) / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n }\n return (\n `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` +\n `${pf(m[5])})`\n );\n }\n\n // The counts below are relevant for all pages, so they have to be global\n // instead of being members of `SVGGraphics` (which is recreated for\n // each page).\n let clipCount = 0;\n let maskCount = 0;\n let shadingCount = 0;\n\n SVGGraphics = class {\n constructor(commonObjs, objs, forceDataSchema = false) {\n this.svgFactory = new DOMSVGFactory();\n\n this.current = new SVGExtraState();\n this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n\n // In `src/shared/util.js` the operator names are mapped to IDs.\n // The list below represents the reverse of that, i.e., it maps IDs\n // to operator names.\n this._operatorIdMapping = [];\n for (const op in OPS) {\n this._operatorIdMapping[OPS[op]] = op;\n }\n }\n\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== OPS.dependency) {\n continue;\n }\n\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n return Promise.all(this.current.dependencies);\n }\n\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = Util.transform(\n this.transformMatrix,\n transformMatrix\n );\n this.tgrp = null;\n }\n\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n const svgElement = this._initialize(viewport);\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i],\n });\n }\n return opListToTree(opList);\n }\n\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n\n switch (fnId | 0) {\n case OPS.beginText:\n this.beginText();\n break;\n case OPS.dependency:\n // Handled in `loadDependencies`, so no warning should be shown.\n break;\n case OPS.setLeading:\n this.setLeading(args);\n break;\n case OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n case OPS.setFont:\n this.setFont(args);\n break;\n case OPS.showText:\n this.showText(args[0]);\n break;\n case OPS.showSpacedText:\n this.showText(args[0]);\n break;\n case OPS.endText:\n this.endText();\n break;\n case OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n case OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n case OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n case OPS.setHScale:\n this.setHScale(args[0]);\n break;\n case OPS.setTextMatrix:\n this.setTextMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n case OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n case OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n case OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n case OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n case OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n case OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n case OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n case OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n case OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n case OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n case OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n case OPS.setGState:\n this.setGState(args[0]);\n break;\n case OPS.fill:\n this.fill();\n break;\n case OPS.eoFill:\n this.eoFill();\n break;\n case OPS.stroke:\n this.stroke();\n break;\n case OPS.fillStroke:\n this.fillStroke();\n break;\n case OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case OPS.clip:\n this.clip(\"nonzero\");\n break;\n case OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n case OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n case OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n case OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n case OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n case OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case OPS.closePath:\n this.closePath();\n break;\n case OPS.closeStroke:\n this.closeStroke();\n break;\n case OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n case OPS.nextLine:\n this.nextLine();\n break;\n case OPS.transform:\n this.transform(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n case OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(opTreeElement.items);\n break;\n default:\n warn(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.hypot(a, b);\n\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.appendChild(current.tspan);\n }\n\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = IDENTITY_MATRIX;\n current.lineMatrix = IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return;\n }\n\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n let x = 0;\n for (const glyph of glyphs) {\n if (glyph === null) {\n // Word break\n x += fontDirection * wordSpacing;\n continue;\n } else if (typeof glyph === \"number\") {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n let vx;\n const vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n current.tspan.textContent += character;\n } else {\n // TODO: To assist with text selection, we should replace the missing\n // character with a space character if charWidth is not zero.\n // But we cannot just do \"character = ' '\", because the ' ' character\n // might actually map to a different glyph.\n }\n\n let charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n }\n current.tspan.setAttributeNS(\n null,\n \"x\",\n current.xcoords.map(pf).join(\" \")\n );\n if (vertical) {\n current.tspan.setAttributeNS(\n null,\n \"y\",\n current.ycoords.map(pf).join(\" \")\n );\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === TextRenderingMode.ADD_TO_PATH) {\n // Workaround for Firefox: We must set fill=\"transparent\" because\n // fill=\"none\" would generate an empty clipping path.\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n // Include the text rise in the text matrix since the `pm` function\n // creates the SVG element's `translate` entry (work on a copy to avoid\n // altering the original text matrix).\n let textMatrix = current.textMatrix;\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(\n null,\n \"transform\",\n `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`\n );\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.appendChild(current.tspan);\n current.txtgrp.appendChild(current.txtElement);\n\n this._ensureTransformGroup().appendChild(current.txtElement);\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\n \"addFontStyle: No font data available, \" +\n 'ensure that the \"fontExtraProperties\" API parameter is set.'\n );\n }\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.appendChild(this.cssStyle);\n }\n\n const url = createObjectURL(\n fontObj.data,\n fontObj.mimetype,\n this.forceDataSchema\n );\n this.cssStyle.textContent +=\n `@font-face { font-family: \"${fontObj.loadedName}\";` +\n ` src: url(${url}); }\\n`;\n }\n\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n\n if (\n this.embedFonts &&\n !fontObj.missingFile &&\n !this.embeddedFonts[fontObj.loadedName]\n ) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n\n endText() {\n const current = this.current;\n if (\n current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG &&\n current.txtElement?.hasChildNodes()\n ) {\n // If no glyphs are shown (i.e. no child nodes), no clipping occurs.\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n // Path properties\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = Util.makeHexColor(r, g, b);\n }\n\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n\n setFillRGBColor(r, g, b) {\n this.current.fillColor = Util.makeHexColor(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n\n shadingFill(args) {\n const width = this.viewport.width;\n const height = this.viewport.height;\n const inv = Util.inverseTransform(this.transformMatrix);\n const bl = Util.applyTransform([0, 0], inv);\n const br = Util.applyTransform([0, height], inv);\n const ul = Util.applyTransform([width, 0], inv);\n const ur = Util.applyTransform([width, height], inv);\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n this._ensureTransformGroup().appendChild(rect);\n }\n\n /**\n * @private\n */\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n return this._makeShadingPattern(args);\n }\n\n /**\n * @private\n */\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n\n const tilingId = `shading${shadingCount++}`;\n const [tx0, ty0, tx1, ty1] = Util.normalizeRect([\n ...Util.applyTransform([x0, y0], matrix),\n ...Util.applyTransform([x1, y1], matrix),\n ]);\n const [xscale, yscale] = Util.singularValueDecompose2dScale(matrix);\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n\n // Save current state.\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n if (paintType === 2) {\n const cssColor = Util.makeHexColor(...color);\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n this.executeOpTree(this.convertOpList(operatorList));\n\n // Restore saved state.\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n\n tiling.appendChild(bbox.childNodes[0]);\n this.defs.appendChild(tiling);\n return `url(#${tilingId})`;\n }\n\n /**\n * @private\n */\n _makeShadingPattern(args) {\n if (typeof args === \"string\") {\n args = this.objs.get(args);\n }\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.appendChild(stop);\n }\n this.defs.appendChild(gradient);\n return `url(#${shadingId})`;\n case \"Mesh\":\n warn(\"Unimplemented pattern Mesh\");\n return null;\n case \"Dummy\":\n return \"hotpink\";\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n\n for (const op of ops) {\n switch (op | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n d.push(\n \"M\",\n pf(x),\n pf(y),\n \"L\",\n pf(xw),\n pf(y),\n \"L\",\n pf(xw),\n pf(yh),\n \"L\",\n pf(x),\n pf(yh),\n \"Z\"\n );\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3]),\n pf(x),\n pf(y)\n );\n j += 6;\n break;\n case OPS.curveTo2:\n d.push(\n \"C\",\n pf(x),\n pf(y),\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3])\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(x),\n pf(y),\n pf(x),\n pf(y)\n );\n j += 4;\n break;\n case OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n\n d = d.join(\" \");\n\n if (\n current.path &&\n ops.length > 0 &&\n ops[0] !== OPS.rectangle &&\n ops[0] !== OPS.moveTo\n ) {\n // If a path does not start with an OPS.rectangle or OPS.moveTo, it has\n // probably been divided into two OPS.constructPath operators by\n // OperatorList. Append the commands to the previous path element.\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n this._ensureTransformGroup().appendChild(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n\n // Saving a reference in current.element so that it can be addressed\n // in 'fill' and 'stroke'\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n\n endPath() {\n const current = this.current;\n\n // Painting operators end a path.\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n // Add the current path to a clipping path.\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n // A deep clone is needed when text is used as a clipping path.\n const clipElement = current.element.cloneNode(true);\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n this.pendingClip = null;\n clipPath.appendChild(clipElement);\n this.defs.appendChild(clipPath);\n\n if (current.activeClipUrl) {\n // The previous clipping group content can go out of order -- resetting\n // cached clipGroups.\n current.clipGroup = null;\n for (const prev of this.extraStack) {\n prev.clipGroup = null;\n }\n // Intersect with the previous clipping path.\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n current.activeClipUrl = `url(#${clipId})`;\n\n this.tgrp = null;\n }\n\n clip(type) {\n this.pendingClip = type;\n }\n\n closePath() {\n const current = this.current;\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value);\n break;\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n case \"ca\":\n this.setFillAlpha(value);\n break;\n default:\n warn(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n\n fill() {\n const current = this.current;\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n\n stroke() {\n const current = this.current;\n if (current.element) {\n this._setStrokeAttributes(current.element);\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n\n /**\n * @private\n */\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(\n null,\n \"stroke-width\",\n pf(lineWidthScale * current.lineWidth) + \"px\"\n );\n element.setAttributeNS(\n null,\n \"stroke-dasharray\",\n dashArray.map(pf).join(\" \")\n );\n element.setAttributeNS(\n null,\n \"stroke-dashoffset\",\n pf(lineWidthScale * current.dashPhase) + \"px\"\n );\n }\n\n eoFill() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n this.fill();\n }\n\n fillStroke() {\n // Order is important since stroke wants fill to be none.\n // First stroke, then if fill needed, it will be overwritten.\n this.stroke();\n this.fill();\n }\n\n eoFillStroke() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n this.fillStroke();\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n }\n\n paintImageXObject(objId) {\n const imgData = objId.startsWith(\"g_\")\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(\n null,\n \"transform\",\n `scale(${pf(1 / width)} ${pf(-1 / height)})`\n );\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n }\n\n paintImageMaskXObject(imgData) {\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n\n this.defs.appendChild(mask);\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(\n matrix[0],\n matrix[1],\n matrix[2],\n matrix[3],\n matrix[4],\n matrix[5]\n );\n }\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {}\n\n /**\n * @private\n */\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n\n // Create the definitions element.\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.appendChild(definitions);\n this.defs = definitions;\n\n // Create the root group element, which acts a container for all other\n // groups and applies the viewport transform.\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.appendChild(rootGroup);\n\n // For the construction of the SVG image we are only interested in the\n // root group, so we expose it as the entry point of the SVG image for\n // the other code in this class.\n this.svg = rootGroup;\n\n return svg;\n }\n\n /**\n * @private\n */\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.appendChild(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n return this.current.clipGroup;\n }\n\n /**\n * @private\n */\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().appendChild(this.tgrp);\n } else {\n this.svg.appendChild(this.tgrp);\n }\n }\n return this.tgrp;\n }\n };\n}\n\nexport { SVGGraphics };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n} from \"../shared/util.js\";\nimport {\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst fs = __non_webpack_require__(\"fs\");\nconst http = __non_webpack_require__(\"http\");\nconst https = __non_webpack_require__(\"https\");\nconst url = __non_webpack_require__(\"url\");\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n // Prepending 'file:///' to Windows absolute path.\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n // Changes protocol to 'file:' if url refers to filesystem.\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp =\n this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n // Check if url refers to filesystem.\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNodeStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = this.isFsUrl\n ? new PDFNodeStreamFsFullReader(this)\n : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl\n ? new PDFNodeStreamFsRangeReader(this, start, end)\n : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length; // optional\n this._loaded = 0;\n this._filename = null;\n\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._readableStream = null;\n this._readCapability = createPromiseCapability();\n this._headersCapability = createPromiseCapability();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = createPromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength,\n });\n }\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readable to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n\n // Destroy ReadableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = createPromiseCapability();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = createPromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n if (this.onProgress) {\n this.onProgress({ loaded: this._loaded });\n }\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readableStream to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // Destroy readableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers,\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n\n const getResponseHeader = name => {\n // Make sure that headers name are in lower case, as mentioned\n // here: https://nodejs.org/api/http.html#http_message_headers.\n return this._readableStream.headers[name.toLowerCase()];\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n // Note: `request.end(data)` is used to write `data` to request body\n // and notify end of request. But one should always call `request.end()`\n // even if there is no data to write -- (to notify the end of request).\n this._request.end();\n }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n this._httpHeaders = {};\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n // Setting right content length.\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n });\n }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n this._setReadableStream(fs.createReadStream(path, { start, end: end - 1 }));\n }\n}\n\nexport { PDFNodeStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n MissingPDFException,\n UnexpectedResponseException,\n} from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange,\n}) {\n assert(rangeChunkSize > 0, \"Range chunk size must be larger than zero\");\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined,\n };\n\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n // The file size is smaller than the size of two chunks, so it does not\n // make any sense to abort the request and retry with a range request.\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch (ex) {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || (status === 0 && url.startsWith(\"file:\"))) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(\n `Unexpected server response (${status}) while retrieving PDF \"${url}\".`,\n status\n );\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\nexport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToBytes } from \"../shared/util.js\";\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Move return to the end of the function to prevent Babel from dropping the\n// function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n\n // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n // filename*n*=part\n // filename*n=part\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n // RFC 2047, section\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n // filename=value (RFC 5987, section 4.1).\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // After this line there are only function declarations. We cannot put\n // \"return\" here for readability because babel would then drop the function\n // declarations...\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\n \"(?:^|;)\\\\s*\" +\n attributePattern +\n \"\\\\s*=\\\\s*\" +\n // Captures: value = token | quoted-string\n // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n \"(\" +\n '[^\";\\\\s][^;\\\\s]*' +\n \"|\" +\n '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n \")\",\n flags\n );\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch (e) {\n // TextDecoder constructor threw - unrecognized encoding.\n }\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n // Maybe multi-byte UTF-8.\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n // Try iso-8859-1 encoding.\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n // Iterate over all filename*n= and filename*n*= with n being an integer\n // of at least zero. Any non-zero number must not start with '0'.\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match; // eslint-disable-line prefer-const\n n = parseInt(n, 10);\n if (n in matches) {\n // Ignore anything after the invalid second filename*0.\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n // Numbers must be consecutive. Truncate when there is a hole.\n break;\n }\n let [quot, part] = matches[n]; // eslint-disable-line prefer-const\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n // Find the first unescaped \" and terminate there.\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1; // Truncates and stop the iteration.\n }\n parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n // Decodes \"ext-value\" from RFC 5987.\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n // Some servers send \"filename*=\" without encoding 'language' prefix,\n // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n // RFC 2047-decode the result. Firefox tried to drop support for it, but\n // backed out because some servers use it - https://bugzil.la/875615\n // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n // We are more strict and only recognize RFC 2047-encoding if the value\n // starts with \"=?\", since then it is likely that the full value is\n // RFC 2047-encoded.\n\n // Firefox also decodes words even where RFC 2047 section 5 states:\n // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n // RFC 2047, section 2.4\n // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n // charset = token (but let's restrict to characters that denote a\n // possibly valid encoding).\n // encoding = q or b\n // encoded-text = any printable ASCII character other than ? or space.\n // ... but Firefox permits ? and space.\n return value.replace(\n /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n // RFC 2047 section 4.2.\n text = text.replace(/_/g, \" \");\n text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n try {\n text = atob(text);\n } catch (e) {}\n return textdecode(charset, text);\n }\n );\n }\n\n return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n createPromiseCapability,\n stringToBytes,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n const array = stringToBytes(data);\n return array.buffer;\n}\n\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = (this.isHttp && args.httpHeaders) || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n this.getXhr =\n args.getXhr ||\n function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end,\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = this.getXhr();\n const xhrId = this.currXhrId++;\n const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\n\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n\n xhr.send(null);\n\n return xhrId;\n }\n\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n pendingRequest.onProgress?.(evt);\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n // The XHR request might have been aborted in onHeadersReceived()\n // callback, in which case we should abort request.\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n // Success status == 0 can be on ftp, file and other protocols.\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n\n // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n // \"A server MAY ignore the Range header\". This means it's possible to\n // get a 200 rather than a 206 response from a range request.\n const ok_response_on_range_request =\n xhrStatus === OK_RESPONSE &&\n pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (\n !ok_response_on_range_request &&\n xhrStatus !== pendingRequest.expectedStatus\n ) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n\n const chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk,\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk,\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\n\n/** @implements {IPDFStream} */\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials,\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNetworkStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n this._manager,\n this._source\n );\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(\n this._manager,\n begin,\n end\n );\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = createPromiseCapability();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length; // Optional\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n\n this.onProgress = null;\n }\n\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n if (this._isRangeSupported) {\n // NOTE: by cancelling the full request, and then issuing range\n // requests, there will be an issue for sites where you can only\n // request the pdf once. However, if this is the case, then the\n // server should not be returning that it can support range requests.\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: data.chunk, done: false });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n this._headersReceivedCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength,\n });\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _close() {\n this.onClosed?.(this);\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._close();\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({ loaded: evt.loaded });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\nexport { PDFNetworkStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./fetch_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController?.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\",\n };\n}\n\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n headers.append(property, value);\n }\n return headers;\n}\n\n/** @implements {IPDFStream} */\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFFetchStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = createPromiseCapability();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n })\n .catch(this._headersCapability.reject);\n\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength,\n });\n }\n const buffer = new Uint8Array(value).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = createPromiseCapability();\n this._isStreamingSupported = !source.disableStream;\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n })\n .catch(this._readCapability.reject);\n\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n if (this.onProgress) {\n this.onProgress({ loaded: this._loaded });\n }\n const buffer = new Uint8Array(value).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n}\n\nexport { PDFFetchStream };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").PDFDocumentLoadingTask} PDFDocumentLoadingTask */\n/** @typedef {import(\"./display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./display/api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display/api\").RenderTask} RenderTask */\n/** @typedef {import(\"./display/display_utils\").PageViewport} PageViewport */\n\nimport {\n AnnotationMode,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n InvalidPDFException,\n MissingPDFException,\n OPS,\n PasswordResponses,\n PermissionFlag,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n Util,\n VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n build,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFWorker,\n setPDFNetworkStreamFactory,\n version,\n} from \"./display/api.js\";\nimport {\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isPdfFile,\n isValidFetchUrl,\n loadScript,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n} from \"./display/display_utils.js\";\nimport { AnnotationLayer } from \"./display/annotation_layer.js\";\nimport { GlobalWorkerOptions } from \"./display/worker_options.js\";\nimport { isNodeJS } from \"./shared/is_node.js\";\nimport { renderTextLayer } from \"./display/text_layer.js\";\nimport { SVGGraphics } from \"./display/svg.js\";\nimport { XfaLayer } from \"./display/xfa_layer.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nif (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n const streamsPromise = Promise.all([\n import(\"pdfjs/display/network.js\"),\n import(\"pdfjs/display/fetch_stream.js\"),\n ]);\n\n setPDFNetworkStreamFactory(async params => {\n const [{ PDFNetworkStream }, { PDFFetchStream }] = await streamsPromise;\n if (isValidFetchUrl(params.url)) {\n return new PDFFetchStream(params);\n }\n return new PDFNetworkStream(params);\n });\n} else if (PDFJSDev.test(\"GENERIC || CHROME\")) {\n if (PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const { PDFNodeStream } = require(\"./display/node_stream.js\");\n\n setPDFNetworkStreamFactory(params => {\n return new PDFNodeStream(params);\n });\n } else {\n const { PDFNetworkStream } = require(\"./display/network.js\");\n const { PDFFetchStream } = require(\"./display/fetch_stream.js\");\n\n setPDFNetworkStreamFactory(params => {\n if (isValidFetchUrl(params.url)) {\n return new PDFFetchStream(params);\n }\n return new PDFNetworkStream(params);\n });\n }\n}\n\nexport {\n AnnotationLayer,\n AnnotationMode,\n build,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n GlobalWorkerOptions,\n InvalidPDFException,\n isPdfFile,\n loadScript,\n LoopbackPort,\n MissingPDFException,\n OPS,\n PasswordResponses,\n PDFDataRangeTransport,\n PDFDateString,\n PDFWorker,\n PermissionFlag,\n PixelsPerInch,\n RenderingCancelledException,\n renderTextLayer,\n shadow,\n SVGGraphics,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n Util,\n VerbosityLevel,\n version,\n XfaLayer,\n};\n"],"names":["IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","RenderingIntentFlag","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","NONE","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","VerbosityLevel","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","UNSUPPORTED_FEATURES","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","Number","isInteger","getVerbosityLevel","info","msg","console","log","warn","unreachable","Error","assert","cond","isSameOrigin","baseUrl","otherUrl","base","URL","origin","e","other","_isValidProtocol","url","protocol","createValidAbsoluteUrl","options","addDefaultProtocol","startsWith","dots","match","length","tryConvertEncoding","stringToUTF8String","ex","absoluteUrl","shadow","obj","prop","value","Object","defineProperty","enumerable","configurable","writable","BaseException","BaseExceptionClosure","message","name","constructor","prototype","PasswordException","code","UnknownErrorException","details","InvalidPDFException","MissingPDFException","UnexpectedResponseException","status","FormatError","AbortException","bytesToString","bytes","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","i","chunkEnd","Math","min","chunk","subarray","push","join","stringToBytes","str","Uint8Array","charCodeAt","arrayByteLength","arr","byteLength","arraysToBytes","resultLength","pos","data","item","itemLength","set","string32","objectSize","keys","objectFromMap","map","create","key","isLittleEndian","buffer8","view32","Uint32Array","buffer","IsLittleEndianCached","isEvalSupported","Function","IsEvalSupportedCached","hexNumbers","Array","n","toString","padStart","Util","makeHexColor","r","g","b","m1","m2","applyTransform","p","m","xt","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","p2","slice","p3","p4","max","inverseTransform","apply3dTransform","v","singularValueDecompose2dScale","transpose","a","c","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","compare","orderedX","sort","orderedY","result","bezierBoundingBox","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t","t1","t2","b2ac","sqrtb2ac","abs","j","mt","jlen","PDFStringTranslateTable","stringToPDFString","encoding","decoder","TextDecoder","fatal","decode","ii","charAt","escapeString","replace","isAscii","test","stringToUTF16BEString","buf","char","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayBuffer","isArrayEqual","arr1","arr2","getModificationDate","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","createPromiseCapability","capability","isSettled","get","promise","Promise","resolve","reject","reason","isNodeJS","process","versions","nw","electron","type","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DefaultCanvasFactory","NodeCanvasFactory","DOMCanvasFactory","DefaultCMapReaderFactory","NodeCMapReaderFactory","DOMCMapReaderFactory","DefaultStandardFontDataFactory","NodeStandardFontDataFactory","DOMStandardFontDataFactory","createPDFNetworkStream","setPDFNetworkStreamFactory","pdfNetworkStreamFactory","getDocument","src","task","PDFDocumentLoadingTask","source","PDFDataRangeTransport","range","params","rangeTransport","worker","window","location","href","Buffer","isNaN","rangeChunkSize","CMapReaderFactory","StandardFontDataFactory","ignoreErrors","stopAtErrors","fontExtraProperties","pdfBug","enableXfa","docBaseUrl","isDataScheme","maxImageSize","useWorkerFetch","disableFontFace","useSystemFonts","ownerDocument","globalThis","document","disableRange","disableStream","disableAutoFetch","workerParams","port","GlobalWorkerOptions","workerPort","PDFWorker","fromPort","_worker","docId","then","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","PDFDataTransportStream","initialData","progressiveDone","contentDispositionFilename","httpHeaders","withCredentials","all","workerId","messageHandler","MessageHandler","transport","WorkerTransport","_transport","send","catch","_capability","pdfDataRangeTransport","sendWithPromise","apiVersion","password","cMapUrl","standardFontDataUrl","idCounters","doc","onPassword","onProgress","onUnsupportedFeature","destroy","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","addRangeListener","listener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","begin","onDataProgress","loaded","total","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","end","abort","PDFDocumentProxy","pdfInfo","_pdfInfo","deprecated","fingerprints","stats","streamTypes","fontTypes","annotationStorage","numPages","isPureXfa","_htmlForXfa","allXfaHtml","getPage","pageNumber","getPageIndex","ref","getDestinations","getDestination","id","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJavaScript","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getData","getDownloadInfo","downloadInfoCapability","cleanup","keepLoadedFonts","startCleanup","loadingTask","loadingParams","saveDocument","size","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","pageIndex","pageInfo","_pageIndex","_pageInfo","_ownerDocument","_stats","StatTimer","_pdfBug","commonObjs","objs","PDFObjects","cleanupAfterRender","pendingCleanup","_intentStates","Map","_annotationPromises","rotate","userUnit","view","getViewport","scale","rotation","offsetX","offsetY","dontFlip","PageViewport","viewBox","getAnnotations","intent","intentArgs","getRenderingIntent","cacheKey","renderingIntent","annotations","annotation","titleObj","contentsObj","_jsActionsPromise","getPageJSActions","getXfa","children","render","canvasContext","viewport","annotationMode","imageLayer","canvasFactory","background","optionalContentConfigPromise","annotationCanvasMap","arguments","renderInteractiveForms","includeAnnotationStorage","time","intentState","streamReaderCancelTimeout","clearTimeout","canvasFactoryInstance","intentPrint","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","_pumpOperatorList","complete","error","renderTasks","delete","internalRenderTask","_tryCleanup","_abortOperatorList","timeEnd","InternalRenderTask","callback","useRequestAnimationFrame","Set","add","renderTask","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","getOperatorList","opListReadCapability","opListTask","streamTextContent","disableCombineTextItems","includeMarkedContent","TEXT_CONTENT_CHUNK_SIZE","sendWithStream","combineTextItems","highWaterMark","textContent","items","getTextContent","xfa","XfaText","readableStream","pump","reader","read","done","assign","styles","getReader","getStructTree","_structTreePromise","_destroy","waitOn","values","force","completed","cancel","clear","resetStats","_startRenderPage","_renderPageChunk","operatorListChunk","serializable","streamReader","RenderingCancelledException","setTimeout","curCacheKey","curIntentState","LoopbackPort","_listeners","_deferred","postMessage","transfers","event","structuredClone","call","addEventListener","removeEventListener","indexOf","splice","terminate","PDFWorkerUtil","isWorkerDisabled","fallbackWorkerSrc","fakeWorkerId","__non_webpack_require__","pdfjsFilePath","currentScript","createCDNWrapper","wrapper","createObjectURL","Blob","_workerPorts","WeakMap","has","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","on","Worker","_mainThreadWorkerMessageHandler","workerSrc","terminateEarly","onWorkerError","_setupFakeWorker","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","pdfjsWorker","loader","mainWorkerMessageHandler","eval","loadScript","getWorkerSrc","docStats","pageCache","pagePromises","metadataPromise","fontLoader","FontLoader","_onUnsupportedFeature","bind","styleElement","_params","isCompressed","cMapPacked","destroyCapability","_passwordCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","AnnotationStorage","isOpList","lastModified","page","hasOwnProperty","resetModified","terminated","_getFieldObjectsPromise","_hasJSActionsPromise","cancelAllRequests","sink","getFullReader","evt","onPull","close","enqueue","onCancel","ready","readyReason","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_numPages","htmlForXfa","exception","updatePassword","exportedData","exportedError","fontRegistry","FontInspector","enabled","registerFont","fontAdded","FontFaceObject","finally","imageData","pageProxy","MAX_IMAGE_SIZE_TO_STORE","freeze","fetch","featureId","cachedPromise","num","gen","filename","results","OptionalContentConfig","metadata","Metadata","cleanupSuccessful","ensureObj","objId","settled","RenderTask","_internalRenderTask","onContinue","canvasInUse","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","canvas","StepperManager","stepper","init","nextBreakPoint","getNextBreakPoint","gfx","CanvasGraphics","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","version","build","SVG_NS","PixelsPerInch","CSS","PDF","PDF_TO_CSS_UNITS","BaseCanvasFactory","_document","_createCanvas","width","height","createElement","fetchData","asTypedArray","isValidFetchUrl","baseURI","response","ok","statusText","arrayBuffer","text","request","XMLHttpRequest","open","responseType","onreadystatechange","readyState","DONE","responseText","BaseCMapReaderFactory","_fetchData","compressionType","cMapData","BaseStandardFontDataFactory","DOMSVGFactory","BaseSVGFactory","_createSVG","createElementNS","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","clone","convertToViewportPoint","x","y","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","trim","substring","toLowerCase","isPdfFile","getFilenameFromUrl","anchor","query","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","reURI","reFilename","splitURI","exec","suggestedFilename","includes","started","times","now","start","outBuf","longest","duration","padEnd","removeScriptElement","script","onload","remove","onerror","head","documentElement","appendChild","pdfDateStringRegex","PDFDateString","toDateObject","input","RegExp","matches","year","parseInt","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","attributes","style","context","getContext","reset","canvasAndContext","svg","setAttribute","BaseFontLoader","nativeFontFaces","addNativeFontFace","nativeFontFace","fonts","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","attached","missingFile","isFontLoadingAPISupported","createNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","_loadTestFont","rules","fontsToLoad","GenericFontLoader","loadingContext","requests","nextRequestId","loadTestFontId","supported","navigator","userAgent","completeRequest","otherRequest","shift","getLoadTestFont","atob","int32","offset","spliceString","s","insert","chunk1","chunk2","ctx","called","isFontReady","fillText","getImageData","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","btoa","names","loadedName","div","visibility","position","top","left","span","fontFamily","body","translatedData","compiledGlyphs","cssFontInfo","FontFace","css","weight","fontWeight","italicAngle","mimetype","getPathGenerator","character","cmds","jsBuf","current","args","cmd","fs","readFile","Canvas","createCanvas","_storage","_timeStamp","_modified","onSetModified","onResetModified","getValue","defaultValue","setValue","modified","entry","val","entries","_setModified","getAll","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","EXECUTION_TIME","EXECUTION_STEPS","COMPILE_TYPE3_GLYPHS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","LINEWIDTH_SCALE_FACTOR","mirrorContextOperations","destCtx","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","translate","__originalTransform","__originalSetTransform","setTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","beginPath","ctxSave","ctxRestore","ctxTranslate","ctxScale","ctxTransform","f","ctxSetTransform","ctxResetTransform","ctxRotate","angle","cp1x","cp1y","cp2x","cp2y","addContextCurrentTransform","_transformStack","mozCurrentTransform","_originalSave","_originalRestore","_originalRotate","_originalScale","_originalTranslate","_originalTransform","_originalSetTransform","_originalResetTransform","_transformMatrix","desc","getOwnPropertyDescriptor","getPrototypeOf","_setLineWidth","_getLineWidth","getLineWidth","_","getCurrentTransform","getCurrentTransformInverse","ad_bc","bc_ad","old","prev","pop","cosValue","cos","sinValue","sin","CachedCanvases","cache","getCanvas","trackTransform","canvasEntry","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","j0","points","lineSize","data0","elem","mask","count","sum","steps","Int32Array","outlines","coords","p0","step","pp","drawOutline","k","kk","o","l","ll","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","fillColor","strokeColor","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","minX","minY","maxX","maxY","updateCurvePathMinMax","box","getPathBoundingBox","pathType","PathType","xStrokePad","yStrokePad","updateClipFromPath","Infinity","getClippedPathBoundingBox","putBinaryImageData","ImageData","putImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","createImageData","srcPos","destPos","dest","thisChunkHeight","elemsInThisChunk","transferMapRed","transferMapGreen","transferMapBlue","transferMapGray","kind","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","srcDiff","kEnd","kEndUnrolled","srcByte","hasTransferMaps","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","strokeStyle","fillStyle","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","genericComposeSMask","maskCtx","layerCtx","subtype","backdrop","layerOffsetX","layerOffsetY","maskOffsetX","maskOffsetY","hasBackdrop","composeFn","PIXELS_TO_PROCESS","chunkSize","ceil","row","chunkHeight","composeSMask","layerBox","layerWidth","layerHeight","drawImage","getImageSmoothingEnabled","interpolate","fround","actualScale","devicePixelRatio","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","canvasCtx","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransform","baseTransformStack","groupLevel","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","markedContentStack","cachedCanvases","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedGetSinglePixelWidth","fillRect","transparentCanvas","compositeCtx","_combinedScaleFactor","hypot","beginLayout","executionStartIdx","continueCallback","argsArrayLen","chunkOperations","endTime","fnId","breakIt","depObjId","objsPool","inSMaskMode","endLayout","_scaleImage","img","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","tmpCanvas","tmpCtx","newWidth","newHeight","clearRect","_createMaskCanvas","isPatternFill","maskCanvas","objToCanvas","maskToCanvas","cord1","cord2","drawnWidth","drawnHeight","fillCanvas","fillCtx","scaled","mozCurrentTransformInverse","imageSmoothingEnabled","inverse","getPattern","round","limit","dashArray","dashPhase","flatness","states","state","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","compose","dirtyBox","floor","ops","startX","startY","xw","yh","consumePath","getSinglePixelWidth","needRestore","paths","pendingTextPaths","path","addToPath","spacing","fontRefName","fontObj","fontDirection","isType3Font","bold","italic","typeface","fallbackName","browserFontSize","mode","rise","paintChar","patternTransform","resetLineWidthToOne","fillStrokeMode","isAddToPathSet","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","pattern","glyph","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","charWidth","isTextInvisible","spacingLength","charProcOperatorList","operatorListId","transformed","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","IR","color","canvasGraphicsFactory","createCanvasGraphics","TilingPattern","_getPattern","matrix","getShadingPattern","SHADING","inv","bl","br","ul","ur","bbox","isArray","group","currentCtx","isolated","knockout","currentTransform","canvasBounds","scaleX","scaleY","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","canvasWidth","canvasHeight","annotationCanvas","savedCtx","compiled","skewX","skewY","positions","trans","images","image","w","h","imgToPaint","HTMLElement","getCanvasPosition","appendImage","tag","visible","isVisible","isContentVisible","absDet","sqNorm1","sqNorm2","pixelHeight","EPSILON","op","applyBoundingBox","Path2D","region","BaseShadingPattern","RadialAxialShadingPattern","_type","_bbox","_colorStops","_p0","_p1","_r0","_r1","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","ownerBBox","createPattern","domMatrix","DOMMatrix","drawTriangle","c1","c2","c3","colors","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_colors","_figures","_bounds","_background","_createMeshCanvas","combinedScale","backgroundColor","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","matrixScale","temporaryPatternCanvas","DummyShadingPattern","PaintType","COLORED","UNCOLORED","xstep","ystep","paintType","tilingType","createPatternCanvas","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","clipBbox","realOutputSize","maxSize","bboxWidth","bboxHeight","cssColor","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","stream","_processStreamMessage","action","cbSourceName","cbTargetName","_createStreamSink","actionName","handler","ah","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","self","streamSink","isCancelled","lastDesiredSize","sinkCapability","success","streamController","_deleteStreamController","allSettled","metadataMap","parsedData","rawData","getRaw","OptionalContentGroup","creator","_order","_groups","order","groups","baseState","off","_evaluateVisibilityExpression","array","operator","element","expression","policy","ids","setVisibility","getOrder","from","getGroups","getGroup","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","_onReceiveData","_onProgress","_onProgressiveDone","_enqueue","found","some","_begin","_progressiveDataLength","_loaded","firstReader","_removeRangeReader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","_stream","_done","_filename","_requests","_headersReady","requestCapability","_end","_queuedChunk","requestsCapability","output","walk","node","shouldBuildText","child","DEFAULT_TAB_INDEX","GetElementsByNameSet","getRectDims","AnnotationElementFactory","parameters","annotationType","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","layer","linkService","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","_fieldObjects","fieldObjects","_mouseState","mouseState","container","_createContainer","quadrilaterals","_createQuadrilaterals","sign","transformOrigin","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","quadPoints","savedRect","quadPoint","_createPopup","trigger","popupElement","PopupElement","modificationDate","richText","hideWrapper","popup","_renderQuadrilaterals","className","quadrilateral","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementById","getElementsByName","platform","isWin","isMac","isTooltipOnly","resetForm","actions","Action","link","addLinkAttributes","newWindow","_bindNamedAction","_bindLink","hasClickAction","_bindJSAction","_bindResetFormAction","index","linkElement","cloneNode","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","jsName","eventBus","dispatch","detail","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","storage","allIds","valueAsString","dispatchEvent","Event","hasPopup","alt","dataset","l10nId","l10nArgs","JSON","stringify","alternativeText","title","_getKeyModifier","ctrlKey","metaKey","_setEventListener","baseName","eventName","valueGetter","shiftKey","modifier","_setEventListeners","getter","_setBackgroundColor","_dispatchEventFromSandbox","jsEvent","setColor","styleName","target","ColorConverters","commonActions","display","hidden","print","focus","preventScroll","userName","readonly","removeAttribute","required","bgColor","fgColor","textColor","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","storedData","elementData","userValue","formattedValue","multiLine","disabled","readOnly","tabIndex","defaultFieldValue","blurListener","scrollLeft","activeElement","selRange","selStart","selEnd","setSelectionRange","commitKey","willCommit","selectionStart","selectionEnd","_blurListener","isDown","Keystroke","change","maxLen","maxLength","comb","fieldWidth","combWidth","classList","letterSpacing","verticalAlign","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","textAlignment","textAlign","checked","checkbox","curChecked","buttonValue","radio","pdfButtonValue","fontSizeStyle","selectElement","combo","multiSelect","multiple","option","selected","optionElement","displayValue","isExport","selectedIndex","filter","getItems","multipleSelection","findIndex","insertBefore","indices","editable","changeEx","keyDown","IGNORE_TYPES","parentType","selector","parentId","parentElements","querySelectorAll","parentRect","popupLeft","popupTop","pinned","BACKGROUND_ENLIGHT","hideElement","dir","dateObject","toLocaleDateString","toLocaleTimeString","XfaLayer","xfaHtml","html","lastChild","contents","_formatContents","_toggle","_show","_hide","lines","split","line","createTextNode","pin","zIndex","unpin","lineCoordinates","append","square","circle","containerClassName","svgElementName","coordinate","vertices","polyline","inkList","inkLists","content","file","_download","openOrDownloadData","AnnotationLayer","sortedAnnotations","popupAnnotations","rendered","renderedElement","prepend","setAnnotationCanvasMap","update","ownMatrix","elements","ownTransform","querySelector","firstChild","nodeName","replaceChild","makeColorComp","CMYK_G","G_CMYK","G_RGB","G_HTML","G","RGB_G","RGB_HTML","R","B","T_HTML","CMYK_RGB","CMYK_HTML","components","RGB_CMYK","setupStorage","xfaOn","xfaOff","getAttribute","setAttributes","isHTMLAnchorElement","HTMLAnchorElement","dataId","root","rootHtml","stack","rootDiv","textDivs","parent","childHtml","xmlns","el","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","ascentCache","AllWhitespaceRegexp","getAscent","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","appendText","geom","textDiv","textDivProperties","_enhanceTextSelection","hasText","hasEOL","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","_textDivs","tx","_viewport","atan2","fontName","fontHeight","fontAscent","_fontInspectorEnabled","shouldScaleText","absScaleX","absScaleY","_textDivProperties","_textContentStream","_layoutText","angleCos","angleSin","divWidth","divHeight","right","bottom","_canceled","textDivsLength","_renderingDone","findPositiveMin","ts","expand","expanded","expandBounds","divProperties","Float64Array","jj","boxScale","boxes","x1New","x2New","expandBoundsLTR","fakeBoundary","horizon","boundary","horizonPart","affectedBoundary","maxXNew","xNew","changedHorizon","lastBoundary","useBoundary","unshift","used","concat","TextLayerRenderTask","textContentStream","textContentItemsStr","enhanceTextSelection","_textContent","_container","_textContentItemsStr","_reader","_layoutTextLastFontSize","_layoutTextLastFontFamily","_layoutTextCtx","_renderTimer","_processItems","styleCache","len","parentNode","_render","timeout","mozOpaque","textItems","textStyles","expandTextDivs","expandDivs","transformBuf","paddingBuf","divProps","padding","renderTextLayer","renderParameters","SVGGraphics","SVG_DEFAULTS","fontStyle","XML_NS","XLINK_NS","contentType","forceDataSchema","digits","b1","b2","b3","d1","d2","d3","d4","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc32","crc","writePngChunk","adler32","deflateSync","literals","deflateSyncUncompressed","maxBlockLength","deflateBlocks","idat","pi","adler","encode","isMask","bitDepth","colorType","offsetLiterals","offsetBytes","ihdr","pngLength","SVGExtraState","dependencies","activeClipUrl","clipGroup","maskId","opListToTree","opList","opTree","opListElement","fn","pf","toFixed","pm","acos","clipCount","maskCount","shadingCount","transformMatrix","transformStack","extraStack","embedFonts","embeddedFonts","cssStyle","_operatorIdMapping","tgrp","executeOpTree","loadDependencies","getSVG","svgElement","convertOpList","operatorIdMapping","opTreeElement","lineMatrix","xcoords","ycoords","tspan","setAttributeNS","txtElement","txtgrp","lineWidthScale","_setStrokeAttributes","_ensureTransformGroup","addFontStyle","defs","hasChildNodes","setStrokeAlpha","setFillAlpha","_makeColorN_Pattern","_makeShadingPattern","_makeTilingPattern","tilingId","tx0","ty0","tx1","ty1","xscale","yscale","txstep","tystep","tiling","childNodes","shadingId","colorStops","gradient","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","stop","getAttributeNS","clipId","clipPath","clipElement","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","http","https","fileUriRegex","parseUrl","sourceUrl","parsedUrl","parse","host","PDFNodeStream","isHttp","isFsUrl","_rangeRequestReaders","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_url","_storedError","_disableRange","_rangeChunkSize","_readableStream","_readCapability","_headersCapability","_error","_setReadableStream","BaseRangeReader","createRequestOptions","headers","auth","hostname","method","handleResponse","statusCode","getResponseHeader","allowRangeRequests","suggestedLength","validateRangeRequestCapabilities","extractFilenameFromHeader","_request","_httpHeaders","Range","lstat","stat","createReadStream","returnValues","contentEncoding","contentDisposition","getFilenameFromContentDispositionHeader","createResponseStatusError","validateResponseStatus","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","contentDispositionStr","iter","quot","part","parts","quotindex","extvalue","encodingend","langvalue","charset","hex","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","getArrayBuffer","xhr","NetworkManager","getXhr","NetworkManager_getXhr","currXhrId","pendingRequests","requestRange","listeners","requestFull","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","getRequestXhr","isPendingRequest","abortRequest","PDFNetworkStream","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_onHeadersReceived","_onDone","_onError","_fullRequestId","_headersReceivedCapability","_cachedChunks","fullRequestXhrId","fullRequestXhr","lengthComputable","_requestId","_close","createFetchOptions","abortController","signal","credentials","redirect","createHeaders","Headers","PDFFetchStream","PDFFetchStreamReader","PDFFetchStreamRangeReader","_withCredentials","AbortController","_abortController","_headers","pdfjsVersion","pdfjsBuild","require"],"sourceRoot":""} \ No newline at end of file
diff --git a/js/pdfjs/build/pdf.sandbox.js b/js/pdfjs/build/pdf.sandbox.js
index 283e3e5..46049b6 100644
--- a/js/pdfjs/build/pdf.sandbox.js
+++ b/js/pdfjs/build/pdf.sandbox.js
@@ -2,7 +2,7 @@
* @licstart The following is the entire license notice for the
* Javascript code in this page
*
- * Copyright 2021 Mozilla Foundation
+ * Copyright 2022 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -37,7 +37,7 @@ return /******/ (() => { // webpackBootstrap
/* 1 */
/***/ ((__unused_webpack_module, exports) => {
-Object.defineProperty(exports, "__esModule", ({value:true}));exports["default"]=void 0;var Module=function(){var _scriptDir=typeof document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return function(Module){Module=Module||{};var b;b||(b=typeof Module!=='undefined'?Module:{});var h,n;b.ready=new Promise(function(a,c){h=a;n=c;});var q={},r;for(r in b)b.hasOwnProperty(r)&&(q[r]=b[r]);var t="";"undefined"!==typeof document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf("blob:")?t=t.substr(0,t.lastIndexOf("/")+1):t="";var aa=b.print||console.log.bind(console),u=b.printErr||console.warn.bind(console);for(r in q)q.hasOwnProperty(r)&&(b[r]=q[r]);q=null;var v;b.wasmBinary&&(v=b.wasmBinary);var noExitRuntime=b.noExitRuntime||!0;"object"!==typeof WebAssembly&&w("no native wasm support detected");var x,z=!1;function A(a){var c=b["_"+a];c||w("Assertion failed: Cannot call unknown function "+(a+", make sure it is exported"));return c;}function B(a,c,d,e){var f={string:function(l){var p=0;if(null!==l&&void 0!==l&&0!==l){var U=(l.length<<2)+1;p=C(U);D(l,E,p,U);}return p;},array:function(l){var p=C(l.length);F.set(l,p);return p;}},g=A(a),k=[];a=0;if(e)for(var m=0;m<e.length;m++){var y=f[d[m]];y?(0===a&&(a=G()),k[m]=y(e[m])):k[m]=e[m];}d=g.apply(null,k);d=function(l){return"string"===c?H(l):"boolean"===c?!!l:l;}(d);0!==a&&I(a);return d;}var J="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function K(a,c,d){var e=c+d;for(d=c;a[d]&&!(d>=e);)++d;if(16<d-c&&a.subarray&&J)return J.decode(a.subarray(c,d));for(e="";c<d;){var f=a[c++];if(f&128){var g=a[c++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|g);else{var k=a[c++]&63;f=224==(f&240)?(f&15)<<12|g<<6|k:(f&7)<<18|g<<12|k<<6|a[c++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023));}}else e+=String.fromCharCode(f);}return e;}function H(a){return a?K(E,a,void 0):"";}function D(a,c,d,e){if(0<e){e=d+e-1;for(var f=0;f<a.length;++f){var g=a.charCodeAt(f);if(55296<=g&&57343>=g){var k=a.charCodeAt(++f);g=65536+((g&1023)<<10)|k&1023;}if(127>=g){if(d>=e)break;c[d++]=g;}else{if(2047>=g){if(d+1>=e)break;c[d++]=192|g>>6;}else{if(65535>=g){if(d+2>=e)break;c[d++]=224|g>>12;}else{if(d+3>=e)break;c[d++]=240|g>>18;c[d++]=128|g>>12&63;}c[d++]=128|g>>6&63;}c[d++]=128|g&63;}}c[d]=0;}}function L(a){for(var c=0,d=0;d<a.length;++d){var e=a.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:c+4;}return c;}function ba(a){var c=L(a)+1,d=M(c);d&&D(a,F,d,c);return d;}var ca,F,E,N;function da(){var a=x.buffer;ca=a;b.HEAP8=F=new Int8Array(a);b.HEAP16=new Int16Array(a);b.HEAP32=N=new Int32Array(a);b.HEAPU8=E=new Uint8Array(a);b.HEAPU16=new Uint16Array(a);b.HEAPU32=new Uint32Array(a);b.HEAPF32=new Float32Array(a);b.HEAPF64=new Float64Array(a);}var O,ea=[],fa=[],ha=[],ia=[];function ja(){var a=b.preRun.shift();ea.unshift(a);}var P=0,Q=null,R=null;b.preloadedImages={};b.preloadedAudios={};function w(a){if(b.onAbort)b.onAbort(a);u(a);z=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");n(a);throw a;}function S(a){return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,");}var T="data:application/octet-stream;base64,AGFzbQEAAAABxQZsYAR/fn9/AX5gA39/fwF/YAJ/fwF/YAJ/fwBgAX8Bf2AFf35/f38BfmADf39/AGABfAF8YAF/AGACf34BfmACf34AYAR/f39/AX9gAn9/AX5gAn9+AX9gA39/fgF/YAN/fn8BfmABfgF/YAN/fn8AYAZ/fn9/f38BfmADf35/AX9gBX9/f39/AX9gBn9+fn9/fwF+YAN/fn4BfmAEf39+fwF/YAN/f38BfmAEf39/fwBgBn9/f39/fwF/YAR/f39/AX5gA39+fgF/YAF/AX5gBX9+fn5+AGABfgF+YAJ8fAF8YAABf2AFf35/fn8Bf2AHf35/fn5+fwF/YAV/fn5/fwF+YAAAYAV/f39/fwBgA39+fgBgBH9+fn8AYAd/f39/f39/AX9gBn9+f35+fwF/YAV/fn5+fwF/YAV/fn5/fwBgAn5/AGAJf39/f39/f39/AX9gBH9+f38Bf2AEf35+fwF/YAJ+fwF/YAZ/f39/f38BfmAHf35/f39/fwF+YAR/fn9+AX5gBH9+fn8BfmAHf39/f39/fwBgA39/fgBgBH9/fn8AYAR/fn9/AGAIf39/f39/f38Bf2AEf39/fgF/YAR/fn9+AX9gBH9+fn4Bf2AGf3x/f39/AX9gA35/fwF/YAR/fn5+AX5gAn5+AX5gAnx/AXxgA3x8fwF8YAZ/f39/f38AYAN/f3wAYAV/fn9/fwBgBH9+f34AYAJ/fABgB3x/f39/f38AYAp/f39/f39/f39/AX9gB39/f35+fn8Bf2AFf39+f38Bf2AEf39+fgF/YAV/f35+fwF/YAZ/f35+f38Bf2AGf39+fn5+AX9gBX9+f39/AX9gBn9+f39/fwF/YAV/fn5+fgF/YAZ/fn5+fn8Bf2AEf3x/fwF/YAN+fn4Bf2AEfn5+fgF/YAJ8fwF/YAJ8fAF/YAABfmABfAF+YAV/f39/fwF+YAd/f39/f39+AX5gBX9/f39+AX5gBH9/f34BfmADf39+AX5gBH9/fn8BfmAFf39+fn4BfmAFf35/fn8BfmAHf35+fn9/fwF+YAh/fn5+fn9+fgF+YAN/fnwBfmAFf3x/f38BfmABfwF8YAF+AXxgAn9/AXxgAn5+AXwCPQoBYQFhABkBYQFiACUBYQFjAAIBYQFkAAsBYQFlAAQBYQFmAAMBYQFnAAEBYQFoAAIB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QQBHDwsgAacPCyABpykCBCEEIAAgARAKIARC/////weDQgBSDwsgAactAAUhAiAAIAEQCiACQX9zQYABcUEHdg8LIANBC2pBEk8EQCABEEkiBb1C////////////AINCgYCAgICAgPj/AFQgBUQAAAAAAAAAAGJxDwsgACABEApBASECCyACCxkAIAAoAhAgARDnASIBRQRAIAAQxgELIAELPwEBfyMAQRBrIgIkAAJ/IAEgACgCEEcEQCACIAE2AgAgAEH91gAgAhATQX8MAQsgABAPCyEAIAJBEGokACAACyEAIAAoAgRBf0wEQCAAIAFBAXRqLwEQDwsgACABai0AEAsoAQF/IwBBEGsiAiQAIAIgATsBDiAAIAJBDmpBAhCHARogAkEQaiQACwsAIAAgAUEBEOMFC5oLAgV/D34jAEHgAGsiBSQAIAJCIIYgAUIgiIQhDyAEQi+GIANCEYiEIQwgBEL///////8/gyINQg+GIANCMYiEIRAgAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiC0IgiCERIA1CEYghEiAEQjCIp0H//wFxIQcCQAJ/IAJCMIinQf//AXEiCUEBa0H9/wFNBEBBACAHQQFrQf7/AUkNARoLIAFQIAJC////////////AIMiDkKAgICAgIDA//8AVCAOQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASAOQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgDoQhAkIAIQEgAlAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgDoRQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIA5C////////P1gEQCAFQdAAaiABIAsgASALIAtQIgYbeSAGQQZ0rXynIgZBD2sQciAFKQNYIgtCIIYgBSkDUCIBQiCIhCEPIAtCIIghEUEQIAZrIQYLIAYgAkL///////8/Vg0AGiAFQUBrIAMgDSADIA0gDVAiCBt5IAhBBnStfKciCEEPaxByIAUpA0giAkIPhiAFKQNAIgNCMYiEIRAgAkIvhiADQhGIhCEMIAJCEYghEiAGIAhrQRBqCyEGIAxC/////w+DIgIgAUL/////D4MiAX4iEyADQg+GQoCA/v8PgyIDIA9C/////w+DIg5+fCIEQiCGIg0gASADfnwiDCANVK0gAiAOfiIVIAMgC0L/////D4MiC358IhQgEEL/////D4MiDSABfnwiECAEIBNUrUIghiAEQiCIhHwiEyACIAt+IhYgAyARQoCABIQiD358IgMgDSAOfnwiESABIBJC/////weDQoCAgIAIhCIBfnwiEkIghnwiF3whBCAHIAlqIAZqQf//AGshBgJAIAsgDX4iGCACIA9+fCICIBhUrSACIAIgASAOfnwiAlatfCACIAIgFCAVVK0gECAUVK18fCICVq18IAEgD358IAEgC34iCyANIA9+fCIBIAtUrUIghiABQiCIhHwgAiABQiCGfCIBIAJUrXwgASABIBEgElatIAMgFlStIAMgEVatfHxCIIYgEkIgiIR8IgFWrXwgASAQIBNWrSATIBdWrXx8IgIgAVStfCIBQoCAgICAgMAAg1BFBEAgBkEBaiEGDAELIAxCP4ghAyABQgGGIAJCP4iEIQEgAkIBhiAEQj+IhCECIAxCAYYhDCADIARCAYaEIQQLIAZB//8BTgRAIApCgICAgICAwP//AIQhCkIAIQEMAQsCfiAGQQBMBEBBASAGayIHQYABTwRAQgAhAQwDCyAFQTBqIAwgBCAGQf8AaiIGEHIgBUEgaiACIAEgBhByIAVBEGogDCAEIAcQ1gIgBSACIAEgBxDWAiAFKQMwIAUpAziEQgBSrSAFKQMgIAUpAxCEhCEMIAUpAyggBSkDGIQhBCAFKQMAIQIgBSkDCAwBCyABQv///////z+DIAatQjCGhAsgCoQhCiAMUCAEQn9VIARCgICAgICAgICAf1EbRQRAIAogAkIBfCIBIAJUrXwhCgwBCyAMIARCgICAgICAgICAf4WEUEUEQCACIQEMAQsgCiACIAJCAYN8IgEgAlStfCEKCyAAIAE3AwAgACAKNwMIIAVB4ABqJAALagECfwJAIAAoAtgCIgNFDQAgACgC4AIiBCAAKALcAk4NACAAKALoAiABSw0AIAAoAuQCIAJGDQAgAyAEQQN0aiIDIAI2AgQgAyABNgIAIAAgATYC6AIgACAEQQFqNgLgAiAAIAI2AuQCCwsMACAAKAJAQX8Q0AMLIQAgACABIAJCgICAgDAgAyAEQQIQ4gEhAiAAIAEQCiACCxkAIAEEQCAAIAFBEGutQoCAgICQf4QQCgsL6wECAn8BfkKAgICA4AAhAyAAKAIUBH5CgICAgOAABSAAKAIEIQEgACgCCCICRQRAIAAoAgAgARAYIABBADYCBCAAKAIAQS8QMQ8LIAAoAgwgAkoEQCAAKAIAKAIQIAEgAiAAKAIQIgF0IAFrQRFqEOYBIgFFBEAgACgCBCEBCyAAIAE2AgQLIAEgACgCECICBH8gAgUgASAAKAIIakEAOgAQIAAoAhALQR90rSABKQIEQv////93g4QiAzcCBCABIANCgICAgHiDIAA1AghC/////weDhDcCBCAAQQA2AgQgAa1CgICAgJB/hAsLDwAgACgCQEGAAmogARAcC28BAn8gAUIgiKciAyABpyICQQBIckUEQCACEJMBDwsgA0F4RgRAIAAgACgCECACENMCEBcPC0EAIQIgACABEJgEIgEQCwR/QQAFIAFCgICAgHCDQoCAgICAf1EEQCAAIAEQmAIPCyAAIAGnEKUECwtLAQJ/IAFCgICAgHBaBH8gAaciAy8BBiICQQ1GBEBBAQ8LIAJBKUYEQCADKAIgLQAQDwsgACgCECgCRCACQRhsaigCEEEARwVBAAsLcgEBfwJ/IAAoAggiAiAAKAIMTgRAQX8gACACQQFqIAEQ0gINARoLAkAgACgCEARAIAAgACgCCCICQQFqNgIIIAAoAgQgAkEBdGogATsBEAwBCyAAIAAoAggiAkEBajYCCCACIAAoAgRqIAE6ABALQQALCywBAX8jAEEQayIDJAAgAyACNgIMIABB3ABqQYABIAEgAhDXAhogA0EQaiQACxAAIAAgACgCKCkDCEEBEFALFAEBfiAAIAEQKyECIAAgARAKIAILKAEBfwJAIABCgICAgHBUDQAgASAApyIBLwEGRw0AIAEoAiAhAgsgAgsoACAAIAJBMCACQQAQEiICEAsEQCABQgA3AwBBfw8LIAAgASACEKwBCyYBAX8jAEEQayIDJAAgAyACNgIMIABBBiABIAIQ/QEgA0EQaiQACw0AIAAgASACQQAQqgMLfwEDfyAAIQECQCAAQQNxBEADQCABLQAARQ0CIAFBAWoiAUEDcQ0ACwsDQCABIgJBBGohASACKAIAIgNBf3MgA0GBgoQIa3FBgIGChHhxRQ0ACyADQf8BcUUEQCACIABrDwsDQCACLQABIQMgAkEBaiIBIQIgAw0ACwsgASAAawsVACAAKAIAIAAoAgQQGCAAQQA2AgQLCgAgAEEwa0EKSQsjAQJ/IAAoAgAiASAAKAIEIgI2AgQgAiABNgIAIABCADcCAAsMACAAIAEgAhANEFkLEQAgACABIAIgA0GAgAEQlwILEQAgAEKAgICAwIGA/P8AfL8LDAAgACABIAAgAUobCykBAX8gAgRAIAAhAwNAIAMgAToAACADQQFqIQMgAkEBayICDQALCyAACw4AIAAgASgCACABEIkFCx0AIAAgASkDEBAKIAAgASkDGBAKIAAgASkDCBAKCxEAIAAgACgCJBCgAkECEOEFCxcAIAAoAgwgACgCCEEAIAAoAhARAQAaC5oBAQR/AkACfyAAKAIQIQMgARDsBCIFIQQgAygC1AEgBBDgBSIGIAMoAsgBENECQQJ0aiEDA0ACQCADKAIAIgNFDQACQCADKAIUIAZHDQAgAygCLCAERw0AIAMoAiBFDQELIANBKGohAwwBCwsgAwsEQCADEKACIQMMAQsgACAFQQIQ6AQiAw0AQoCAgIDgAA8LIAAgAyACEOEFCyYBAX8CQCAAKAIQQYN/Rw0AIAAoAiAgAUcNACAAKAIkRSECCyACCwoAIAAgAUEBEFALsAQCA38BfgJAAkACQAJAAkADQCACKAIQIgUgBSgCGCADcUF/c0ECdGooAgAhBCAFECchBgNAIARFDQQgAyAGIARBAWtBA3QiBGoiBSgCBEcEQCAFKAIAQf///x9xIQQMAQsLIAIoAhQgBGohBCAFKAIAIQYgAUUNASABQoCAgIAwNwMYIAFCgICAgDA3AxAgAUKAgICAMDcDCCABIAZBGnZBB3EiBjYCAAJAAkACQAJAIAUoAgBBHnZBAWsOAwABAgMLIAEgBkEQcjYCACAEKAIAIgAEQCABIACtQoCAgIBwhBANNwMQC0EBIQUgBCgCBCIARQ0HIAEgAK1CgICAgHCEEA03AxhBAQ8LIAQoAgAoAhApAwAiBxCDAQ0EIAEgBxANNwMIQQEPCyAAIAIgAyAEIAUQzgJFDQEMBgsLIAEgBCkDABANNwMIQQEPC0EBIQUgBkGAgICAfHFBgICAgHhHDQIgBCgCACgCECkDABCDAUUNAgsgACADEOEBDAILQQAhBSACLQAFIgRBBHFFDQAgBEEIcQRAIAMQXEUNASADEHkiAyACKAIoIgRJIQUgAUUgAyAET3INASABQoCAgIAwNwMYIAFCgICAgDA3AxAgAUEHNgIAIAEgACACrUKAgICAcIQgAxB4NwMIQQEPCyAAKAIQKAJEIAIvAQZBGGxqKAIUIgRFDQAgBCgCACIERQ0AIAAgASACrUKAgICAcIQgAyAEERcAIQULIAUPC0F/CxcBAX9BByAAQiCIpyIBIAFBC2pBEUsbCyoBAX8jAEEQayIEJAAgBCADNgIMIAAgASACIAMQ1wIhACAEQRBqJAAgAAuNAQECfyABKAJ8IgRBgIAETgRAIABB1voAQQAQQUF/DwtBfyEDIAAgAUH0AGpBECABQfgAaiAEQQFqEH0Ef0F/BSABIAEoAnwiA0EBajYCfCABKAJ0IANBBHRqIgNCADcCACADQgA3AgggAyAAIAIQFzYCACADIAMoAgxBgP///wdyNgIMIAEoAnxBAWsLC6oCAQR/IAIgA0kEfyABKAIEQX9MBEAgASACQQF0akEQaiEFQQAhASADIAJrIgJBACACQQBKGyEDA0AgASADRwRAIAQgBSABQQF0ai8BAHIhBCABQQFqIQEMAQsLAkACQCAAKAIIIAJqIgYgACgCDCIHSgRAQX8hASAAIAYgBBDSAkUNAQwCCyAEQYACSA0AIAAoAhANAEF/IQEgACAHEO8DDQELAkAgACgCEEUEQEEAIQEDQCABIANGDQIgACgCBCAAKAIIIAFqaiAFIAFBAXRqLQAAOgAQIAFBAWohAQwACwALIAAoAgQgACgCCEEBdGpBEGogBSACQQF0ECMaCyAAIAAoAgggAmo2AghBACEBCyABDwsgACABIAJqQRBqIAMgAmsQnQIFQQALCxEAIAAgARANIAIQDUEBEN4BC4kBAgF8AX8gAkIgiKciBEECTQRAIAEgAqe3OQMAQQAPCyAEQQtqQRJPBEAgASACEEk5AwBBAA8LAn8gACACEJ0BIgIQCwRARAAAAAAAAPh/IQNBfwwBCyACEFQiAEEHRwRAIABFBEAgAqe3IQNBAAwCCxABAAsgAhBJIQNBAAshACABIAM5AwAgAAvcAgIEfwF+AkACQCAAKQNwIgVQRQRAIAApA3ggBVkNAQsjAEEQayICJABBfyEDAkACfyAAIAAtAEoiAUEBayABcjoASiAAKAIUIAAoAhxLBEAgAEEAQQAgACgCJBEBABoLIABBADYCHCAAQgA3AxAgACgCACIBQQRxBEAgACABQSByNgIAQX8MAQsgACAAKAIsIAAoAjBqIgQ2AgggACAENgIEIAFBG3RBH3ULDQAgACACQQ9qQQEgACgCIBEBAEEBRw0AIAItAA8hAwsgAkEQaiQAIANBf0oNAQsgAEEANgJoQX8PCyAAAn8gACgCCCICIAApA3AiBVANABogAiAFIAApA3hCf4V8IgUgAiAAKAIEIgFrrFkNABogASAFp2oLNgJoIAAoAgQhASACBEAgACAAKQN4IAIgAWtBAWqsfDcDeAsgAUEBayIALQAAIANHBEAgACADOgAACyADCwkAIAAgATYAAAsHACAAQR92CwwAIAAgAUH/AXEQDgsLACAAIAFBABDjBQvdAQEGfyAAQQFqIQYgAC0AACIDQRh0QRh1IgVBAE4EQCACIAY2AgAgAw8LQX8hAwJAIAVBQGsiBEH/AXFBPUsNACAEQRh0QRh1QQJ0QaTdAWooAgAiBCABTg0AIARBAWshByAAIARqQQFqIQggBSAEQYPdAWotAABxIQFBACEAA0AgACAERwRAIAYsAAAiBUF/SiAFQf8BcUG/AUtyDQIgBUE/cSABQQZ0ciEBIABBAWohACAGQQFqIQYMAQsLIAEgB0ECdEGQ3QFqKAIASQ0AIAIgCDYCACABIQMLIAMLCQAgAEEBELkBCy0AIAFCgICAgGCDQoCAgIAgUQRAIABBlMwAQQAQFEKAgICA4AAPCyAAIAEQKwtFAQF/IAJC/////wdYBEAgACABIAIQngEPCyAAIAIQnQMiA0UEQEKAgICA4AAPCyAAIAEgAyABQQAQEiEBIAAgAxARIAELTAEBfwJAAkAgACABIAIQDRDOBSIFDQAgASgCACIAQQBIDQEgACADTA0AIAEgAzYCAAsgBQ8LIAFBACAAIARqIgAgAEEASBs2AgBBAAszAQF/IAEEQANAIAIgA0ZFBEAgACABIANBA3RqKAIEEBEgA0EBaiEDDAELCyAAIAEQGAsLGAAgAC0AAEEgcUUEQCABIAIgABCnBBoLC64CAAJAAkACQAJAIAJBA0wEQAJAAkACQAJAAkACQAJAAkACQCABQdgAaw4JAAECAwQFBgcICgsgACACQT1rQf8BcRAODwsgACACQTlrQf8BcRAODwsgACACQTVrQf8BcRAODwsgACACQTFrQf8BcRAODwsgACACQS1rQf8BcRAODwsgACACQSlrQf8BcRAODwsgACACQSVrQf8BcRAODwsgACACQSFrQf8BcRAODwsgACACQR1rQf8BcRAODwsgAkH/AUoNAQJAAkACQCABQdgAaw4DAAECBAsgAEHAARAODAULIABBwQEQDgwECyAAQcIBEA4MAwsgAUEiRg0BCyAAIAFB/wFxEA4gACACQf//A3EQMA8LIAAgAkEUa0H/AXEQDg8LIAAgAkH/AXEQDgscAQF/IAAgARA6BH9BAAUgAEGPxABBABAUQX8LCxkBAX8gASACED8iA0UEQCAAIAIQnAMLIAMLJgEBfyMAQRBrIgIkACACQQA2AgwgAEEBIAFBABD9ASACQRBqJAALGQAgACgCECABEJwCIgFFBEAgABDGAQsgAQsPACAAKAJAQYACaiABEA4LbwIBfgF/IAAhBAJAAkAgARAQDQAgACABQTsgAUEAEBIiAxALBEAgAw8LIAMQIA0BIAAgAxAKIAAgARCNAyIEDQBCgICAgOAADwsgBCgCKCACQQN0aikDABANIQMLIAAgAyACEFAhASAAIAMQCiABCzEAIAAgASACQoCAgIAIfEL/////D1gEfiACQv////8PgwUgArkQFQsgA0GHgAEQygILEAAgACAANgIEIAAgADYCAAtjAAJAAkAgAUEASA0AIAAoAqwCIAFMDQAgACgCpAIgAUEUbGoiACAAKAIAIAJqIgA2AgAgAEF/TA0BIAAPC0GeigFBoQ1ByKgBQcOKARAAAAtB0IoBQaENQcuoAUHDigEQAAALDAAgAEG80AFBABAUCw0AIAAgASABEEMQ/gELUAEBfgJAIANBwABxBEAgASADQUBqrYYhAkIAIQEMAQsgA0UNACACIAOtIgSGIAFBwAAgA2utiIQhAiABIASGIQELIAAgATcDACAAIAI3AwgLbQEBfyMAQYACayIFJAAgBEGAwARxIAIgA0xyRQRAIAUgAUH/AXEgAiADayICQYACIAJB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2RcQdiEHDAELQX8hBwsgCkEQaiQAIAcLTAECfyMAQRBrIgMkAAJAIAFBgIABcUUEQCABQYCAAnFFDQEgABD6AUUNAQsgA0EANgIMIABBBCACQQAQ/QFBfyEECyADQRBqJAAgBAvMAQECfwJAAkAgAUKAgICAcFoEQCABpyEDA0ACQCADLQAFQQRxRQ0AIAAoAhAoAkQgAy8BBkEYbGooAhQiBEUNACAEKAIQRQ0AIAAgA61CgICAgHCEEA0iASACIAQoAhAREwAhAiAAIAEQCiACDwsgA61CgICAgHCEEA0hASAAQQAgAyACEFMhBCAAIAEQCiAEDQIgAy8BBkEVa0H//wNxQQhNBEAgACACEKUDIgQNBAsgAygCECgCLCIDDQALC0EAIQQLIAQPCyAEQR91CxoAIAAgASACQQBOBH4gAq0FIAK4EBULEJ4BCwsAIABB/////wdxC80JAgR/BH4jAEHwAGsiBSQAIARC////////////AIMhCgJAAkAgAUIBfSILQn9RIAJC////////////AIMiCSABIAtWrXxCAX0iC0L///////+///8AViALQv///////7///wBRG0UEQCADQgF9IgtCf1IgCiADIAtWrXxCAX0iC0L///////+///8AVCALQv///////7///wBRGw0BCyABUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhBCABIQMMAgsgA1AgCkKAgICAgIDA//8AVCAKQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQQMAgsgASAJQoCAgICAgMD//wCFhFAEQEKAgICAgIDg//8AIAIgASADhSACIASFQoCAgICAgICAgH+FhFAiBhshBEIAIAEgBhshAwwCCyADIApCgICAgICAwP//AIWEUA0BIAEgCYRQBEAgAyAKhEIAUg0CIAEgA4MhAyACIASDIQQMAgsgAyAKhFBFDQAgASEDIAIhBAwBCyADIAEgASADVCAJIApUIAkgClEbIgcbIQogBCACIAcbIgtC////////P4MhCSACIAQgBxsiAkIwiKdB//8BcSEIIAtCMIinQf//AXEiBkUEQCAFQeAAaiAKIAkgCiAJIAlQIgYbeSAGQQZ0rXynIgZBD2sQciAFKQNoIQkgBSkDYCEKQRAgBmshBgsg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LQACENwBDQBBWQwEC0GDfwsMAgtBCgwBCyADCyEAIARBEGokACAAC58BAQJ/AkACQCACQv////8HWARAIAAgASACpxCTARB3IgRBAUgNAUF/IAQgACABIAIQngEiAhALGyEEDAILIAAgAhCdAyIFRQRAQX8hBAwBCwJAIAAgASAFEHciBEEBSARAQoCAgIAwIQIMAQtBfyAEIAAgASAFIAFBABASIgIQCxshBAsgACAFEBEMAQtCgICAgDAhAgsgAyACNwMAIAQLFgAgAEKAgICAcFoEQCAApyABNgIgCwsNACAAIAEgARBDEJ0CC3sBAX9BfyECIAAoAhQEf0F/BSABQoCAgIBwg0KAgICAkH9SBEAgACgCACABECsiARALBEAgABCIA0F/DwsgACABpyICQQAgAigCBEH/////B3EQVyECIAAoAgAgARAKIAIPCyAAIAGnIgBBACAAKAIEQf////8HcRBXCwtqAQF/IAAoAhQEQCAAKAIAIAEQCkF/DwsCQCABQoCAgIBwg0KAgICAkH9RDQAgACgCACABED4iARALRQ0AIAAQiANBfw8LIAAgAaciAkEAIAIoAgRB/////wdxEFchAiAAKAIAIAEQCiACCxYBAX8gAEIgiKciAUUgAUELakERS3ILSgECfyACQv////8HWARAIAAgASACIANBgIABEOABDwsgACACEJ0DIgRFBEAgACADEApBfw8LIAAgASAEIAMQSCEFIAAgBBARIAULggoBEn8jAEEwayIHJAAgAUEANgIAIAJBADYCACAHQQA2AiwgB0EANgIoIARBMHEhDiAEQRBxIREgAygCECIJECchBQJAAkACQAJ/A0AgCSgCICAISgRAAkAgBSgCBCINRQ0AQQAgESAFKAIAQYCAgIABcRsgBCAAIA0QpAMiC3ZBAXFFcg0AAkAgDkUNACAFKAIAQYCAgIB8cUGAgICAeEcNACADKAIUIAhBA3RqKAIAKAIQKQMAEIMBRQ0AIAAgBSgCBBDhAUF/DAQLIAAgB0EkaiANELIBBEAgDEEBaiEMDAELIAtFBEAgD0EBaiEPDAELIApBAWohCgsgBUEIaiEFIAhBAWohCAwBCwtBACEFAkAgAy0ABSIGQQRxRQ0AIAZBCHEEQCAEQQFxRQ0BIAMoAiggDGohDAwBCyADLwEGIgZBBUYEQCAEQQFx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HgAgACABIAJBAE4EfiACrQUgArgQFQsgAyAEEMoCC6wCAQR/IwBBEGsiAiQAAkACQAJAAkACQANAAkACQAJAIAEQVEEIag4QBAIFBQUFBQEIAAAGBQUICAULIAFC/////w+DIQEMBwsgACABQQEQwAEiARALRQ0BDAULCyAAIAJBCGogARCQAiEDIAAgARAKIAMEQCACIAM2AgwgAiADIAMQhgMiBGoiBTYCDEIAIQECQCAEIAIoAghGDQAgACAFIAJBDGpBAEEEEMICIgEQCw0AIAIgAigCDBCGAyACKAIMaiIENgIMIAIoAgggBCADa0YNACAAIAEQCkKAgICAwH4hAQsgACADEDYLIANFDQMMBAsgACABEAogAEGIwwBBABAUDAILIAAgARAKC0KAgICAwH4hAQwBC0KAgICA4AAhAQsgAkEQaiQAIAELzQIBA38CQCABQoCAgIBwVCACQv////8PVnINACACpyIEIAGnIgMoAihPDQACQAJAAkACQAJAAkACQAJAAkACQCADLwEGIgVBCGsOFgEKCgoKCgoKCgoKCgoDAgMEBQYHCAkACyAFQQJHDQkLIAMoAiQgBEEDdGopAwAQDQ8LIAMoAiQgBGowAABC/////w+DDwsgAygCJCAEajEAAA8LIAMoAiQgBEEBdGoyAQBC/////w+DDwsgAygCJCAEQQF0ajMBAA8LIAMoAiQgBEECdGo1AgAPCyADKAIkIARBAnRqKAIAIgBBAE4EQCAArQ8LIAC4EBUPCyADKAIkIARBAnRqKgIAuxAVDwsgAygCJCAEQQN0aisDABAVDwsgACACEDkhAyAAIAIQCiADRQRAQoCAgIDgAA8LIAAgASADIAFBABASIQEgACADEBEgAQuzAQEDfyABQoCAgIBwVARAQQAPCyABpyICLwEGQSlGBEAjAEEQayIEJAACQAJAIAAgBEEIaiABQeEAEIQBIgJFDQAgBCkDCCIBEBAEQCAAIAIpAwAQnwEhAwwCCyAAIAEgAikDCEEBIAIQNSIBEAsNACAAIAEQLCEDIAAgAikDABCfASICQQBIDQAgAiADRg0BIABBgNgAQQAQFAtBfyEDCyAEQRBqJAAgAw8LIAItAAVBAXELHgAgAEKAgICAcINCgICAgJB/UQRAIACnIAEQngQLCxYAIAAgACgCKCABQQN0aikDACAB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LCACTQ0BAn8CQCAAKAI4IAJBAnRqKAIAIgApAgRCgICAgICAgIBAg0KAgICAgICAgMAAUg0AIANBDGogABDoBUUNAEEBIAMoAgwiAEF/Rw0BGgtBACEAQQALIQIgASAANgIACyADQRBqJAAgAg8LQcovQaENQb8YQcI/EAAAC0UAIAAoAhAgASACEOYBIgEgAkVyRQRAIAAQxgEgAQ8LIAMEQCADQQAgACgCECABEKMEIgAgAmsiAiAAIAJJGzYCAAsgAQtpAQN+IAAgAkIgiCIDIAFCIIgiBH4gAkL/////D4MiAiABQv////8PgyIBfiIFQiCIIAIgBH58IgJCIIh8IAEgA34gAkL/////D4N8IgFCIIh8NwMIIAAgBUL/////D4MgAUIghoQ3AwAL+QECA34CfyMAQRBrIgUkAAJ+IAG9IgNC////////////AIMiAkKAgICAgICACH1C/////////+//AFgEQCACQjyGIQQgAkIEiEKAgICAgICAgDx8DAELIAJCgICAgICAgPj/AFoEQCADQjyGIQQgA0IEiEKAgICAgIDA//8AhAwBCyACUARAQgAMAQsgBSACQgAgA6dnQSBqIAJCIIinZyACQoCAgIAQVBsiBkExahByIAUpAwAhBCAFKQMIQoCAgICAgMAAhUGM+AAgBmutQjCGhAshAiAAIAQ3AwAgACACIANCgICAgICAgICAf4OENwMIIAVBEGokAAsqAQF/IwBBEGsiAyQAIAMgAjYCDCAAIAEgAkHuAkEAEK0EGiADQRBqJAALDQAgAEEAIAFBABChBAsbACAAIAFB/wFxEA4gACgCBCEBIAAgAhAcIAELlwwBB38jAEEgayICJAACQAJAAkACQAJAAn8gACgCECIDQYN/RwRAQQAgA0FXRw0BGiAAKAJAIgMtAGxBAXFFBEAgAEHjhgFBABATDAMLIAMoAmRFBEAgAEH+hgFBABATDAMLQX8hBSAAEA8NBQJ/AkACQAJAIAAoAhAiA0Epaw4EAgEBAgALIANB3QBGIANBOmtBAklyIANB/QBGcg0BCyAAKAIwDQAgA0EqRgRAIAAQDw0IQQEhBAsgACABELkBDQcgBEUMAQsgAEEGEAxBAQshAyAAKAJALQBsIQEgA0UEQCAAEDQhBSAAEDQhAyAAQf4AQf0AIAFBA0YbEAwgAEEOEAwg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ACEIDAMLIABB8AAQDCAAQRQQDEHKACEIDAILEAEACwJAAkACQCAIQccAaw4EAQQEAgALIAhBtgFHDQMgABA0IQcgAEG5ARAMIAAgChAaIAAgBxA4IAAgCxAWIAkgB0EBEG8aQTwhCAwDCyAAQfEAEAxBxwAhCAwCCyAAQfAAEAxBygAhCAwBCyAAIAgQDAsgASAINgIAIAIgCzYCACADIAo2AgAgBCAHNgIAIAUEQCAFIAw2AgALQQALWgEDfyMAQRBrIgEkAAJAIAAoAhAiA0Gqf0YNACADQTtHBEAgA0H9AEYNASAAKAIwDQEgAUE7NgIAIABB/dYAIAEQE0F/IQIMAQsgABAPIQILIAFBEGokACACCxkAIAEgAkEPcToABCABQQhqIABB0ABqEEwLvAEBBX8jAEEgayIEJAACfgJAIAJCgICAgHCDQoCAgICQf1IEQCAAIAIQPiICEAsNAQsgACAEQQhqIAEQQyIGIAMQQyIHaiACpyIFKAIEIghB/////wdxaiAIQR92EKoDDQAgBEEIaiABIAYQnQIaIARBCGogBUEAIAUoAgRB/////wdxEFcaIARBCGogAyAHEJ0CGiAAIAIQCiAEQQhqEDcMAQsgACACEApCgICAgOAACyECIARBIGokACACCzsAAn8gACABQYCABE8Ef0F/IAAgAUGAgARrQQp2QYCwA2oQlAENARogAUH/B3FBgLgDcgUgAQsQlAELC1MBAX8gAUKAgICAcFoEfyABpy8BBiICQSlGBEACf0EAIAFBKRA/IgJFDQAaIAItABEEQCAAEMgCQX8MAQsgACACKQMAEL8BCw8LIAJBAkYFQQALC8kCAgF+An8jAEEQayIFJAACQCABQoCAgIBwVARAIAEhAwwBCyACQW9xIQQCQAJAAkAgAkEQcQ0AIAAgAUHCASABQQAQEiIDEAsNASADEBANACADECYNACAFIABBxgBBFiAEQQFGG0HIACAEGxAxNwMIIAAgAyABQQEgBUEIahA1IQMgACAFKQMIEAogAxALDQEgACABEAogA0KAgICAcFQNAyAAIAMQCiAAQajDAEEAEBQMAgsgBEEARyEEQQAhAgNAIAJBAkcEQCAAIAFBN0E5IAIgBEYbIAFBABASIgMQCw0CAkAgACADEDpFDQAgACADIAFBAEEAEDUiAxALDQMgA0L/////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IAJqLQAAIAFGDQIgAkEBaiECDAALAAtBfyECCyACC44BAQF/IwBBEGsiAyQAIAMgAjcDCAJAIAAgAUGGASABQQAQEiICEAsNACAAIAIQOgRAIAAgAiABQQEgA0EIahA1IgIQCw0BIAIQIA0BIAIQJg0BIAAgAhAKIABBj9MAQQAQFEKAgICA4AAhAgwBCyAAIAIQCiAAIAFBASADQQhqEJEFIQILIANBEGokACACC5oBAQN/IAEoAgAhAwJAIAAoAgQiAkF/TARAIAAgA0EBdGovARAiBEGA+ANxQYCwA0cgAkH/////B3EgA0EBaiICTHINASAAIAJBAXRqLwEQIgBBgPgDcUGAuANHDQEgBEEKdEGA+D9xIABB/wdxckGAgARqIQQgA0ECaiECDAELIANBAWohAiAAIANqLQAQIQQLIAEgAjYCACAECygAIAAgAkEwIAJBABASIgIQCwRAIAFBADYCAEF/DwsgACABIAIQ6QMLMwEBfwJAIAFCgICAgHBUDQAgAaciAy8BBkESRw0AIANBIGoPCyACBEAgAEESEJwDC0EACzkAIABB/wBNBEAgAEEDdkH8////AXFB4N8BaigCACAAdkEBcQ8LIABBfnFBjMAARiAAELgEQQBHcgtdAQF/QX8hBAJAIAAgARApIgEQCw0AIAAgAacgAhCUBCEEIAAgARAKIAQNACADQYCAAXFFBEBBACEEIANBgIACcUUNASAAEPoBRQ0BCyAAQfAYQQAQFEF/IQQLIAQL2AICA38CfCABEFQhBiACEFQhBAJAAkACfAJAAkACQAJAAkACQAJAAkAgBkEIag4QAgEKCgoKCgMEAAkJCgoKBQoLIARBAUcNCSABpyACp0YPCyAEQXlHDQggAacgAqcQlQJFIQUMCAsgAacgAqdGIARBeEZxIQUMBwsgBEF/Rw0GIAGnIAKnRiEFDAYLIAGntyEHIARBB0YNASAEDQUgAqe3DAMLIAEQSSEHIARFDQEgBEEHRw0ECyACEEkMAQsgAqe3CyEIAkAgAwRAIAe9Qv///////////wCDIgFCgICAgICAgPj/AFhBACAIvUL///////////8AgyICQoGAgICAgID4/wBUG0UEQCABQoGAgICAgID4/wBUIAJCgICAgICAgPj/AFZzDwsgA0ECRw0BCyAHIAhhDwsgB70gCL1RDwsg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IQ5BASEJIAUCfyAFIAhBAnYgAmwiAWoiByAFIAFBAXRqIgYgBCADEQEAIQAgBiAFIAFBA2xqIgogBCADEQEAIQECQCAAQX9MBEAgAUEASA0BIAogByAHIAogBCADEQEAQQBIGwwCCyABQQBKDQAgByAKIAcgCiAEIAMRAQBBAEgbIQYLIAYLIAIgDREGACAFIAIgCGxqIgohASAKIQYgAiAFaiIPIQBBASERA0ACQAJAIAAgAU8NACAFIAAgBCADEQEAIgdBf0wNACAHDQEgDyAAIAIgDREGACACIA9qIQ8gEUEBaiERDAELAkADQCAAIAEgEGoiAU8NASAFIAEgBCADEQEAIgdBAEwEQCAHDQEgBiAQaiIGIAEgAiANEQYAIAhBAWshCAwBCwsgACABIAIgDREGAAwBCyAFIAAgACAPayIHIA8gBWsiASABIAdLGyIBayABIBIRBgAgACAKIAYgAGsiASAKIAZrIgAgACABSxsiAGsgACASEQYAIAggCWshBiAKIAFrIQECQCAGIAkgEWsiCEkEQCAFIQkgCCEAIAEhBSAGIQgMAQsgASEJIAYhAAsgCyAONgIIIAsgADYCBCALIAk2AgAgC0EMaiELDAMLIAAgAmohACAJQQFqIQkMAAsACwsgACAFaiEGIAUhCQNAIAIgCWoiCSEAIAYgCU0NAQNAIAAgBU0NASAAIBBqIgEgACAEIAMRAQBBAUgNASAAIAEgAiANEQYAIAEhAAwACwALAAsACyAMQeAEaiQAC08BAX8gARCOAQRAIAEQDQ8LAkAgAUKAgICAcFQNACABpyICLwEGQQRHDQAgAikDICIBEI4BRQ0AIAEQDQ8LIABB2bQBQQAQFEKAgICA4AALkAIBAn8jAEEQayIDJAAgAyACNwMIQoCAgIDgACECAkAgACABEL8BIgRBAEgNACAERQRAIABCgICAgDBBASADQQhqEOYCIQIMAQsgACABQTwgAUEAEBIiARALBEAgASECDAELAkACQCABELEBRQ0AIAAgARCNAyIERQ0BIAAgBEYNACAAIAEgBCkDQBBYRQ0AIAAgARAKQoCAgIAwIQELAn4gARAgBEAgACABQcwBIAFBABASIQIgACABEAogAhALDQNCgICAgDAgAiACECYbIQELIAELEBAEQCAAQoCAgIAwQQEgA0EIahDmAiECDAIL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JAAgAAvcBAIGfwJ+AkAgAUKAgICAcINCgICAgJB/UgRAQoCAgIDgACEJIAAgARA+IgEQCw0BCwJAIAJCgICAgHCDQoCAgICQf1ENAEKAgICA4AAhCSAAIAIQPiICEAtFDQAgASECDAELAkAgAqciBCkCBCIJQv////8Hg1ANAAJAIAGnIgMoAgBBAUcNACADKQIEIAmFp0EASA0AIAAoAhAgAxCjBCAEKAIEIgVB/////wdxIgcgAykCBCIJpyIIQf////8HcSIGaiAFQR92dCAIQR92IghrQRFqSQ0AIAgEQCADIAZBAXRqQRBqIARBEGogBUEBdBAjGiADIAQpAgQgCXxC/////weDIAlCgICAgHiDhDcCBAwCCyADQRBqIgUgBmogBEEQaiAHECMaIAMgBCkCBCAJfEL/////B4MiCiAJQoCAgIB4g4Q3AgQgBSAKp2pBADoAAAwBCwJ+AkACQCAEKQIEIgmnQf////8HcSADKQIEIgqnQf////8HcWoiBkGAgICABE8EQCAAQfQNQQAQQQwBCyAAIAYgCSAKhKdBH3YiBxD8ASIFDQELQoCAgIDgAAwBCwJAIAdFBEAgBUEQaiADQRBqIAMoAgRB/////wdxECMiByADKAIEQf////8HcWogBEEQaiAEKAIEQf////8HcRAjGiAGIAdqQQA6AAAMAQsgBUEQaiIGIAMgAygCBEH/////B3EQlQUgBiADKAIEQQF0aiAEIAQoAgRB/////wdxEJUFCyAFrUKAgICAkH+ECyEJIAAgARAKDAELIAEhCQsgACACEAogCQtAACAAAn8CfyADBEAgASgCJCACQQN0akEEagwBC0EAIAEoAiAiA0UNARogAyABLwEoIAJqQQR0agsoAgALEOEBCwsAIABB4ztBABAUC50MAgx/BH4jAEGAAWsiCiQAIAohBSMAQeABayIIJAACQCABvSIRQoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgEUL///////////8Ag0KBgICAgICA+P8AWgRAIAVBzsK5AjYAAAwCCyABRAAAAAAAAAAAYwRAIAVBLToAACAFQQFqIQULIAVBvMMALQAAOgAIIAVBtMMAKQAANwAADAELAkAgBEUEQAJ+IAGZRAAAAAAAAOBDYwRAIAGwDAELQoCAgICAgICAgH8LIhJC////////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AwAQCiADQQFqIQMMAQsLIAAgARAYC2UBAn8jAEEQayIFJAACQCACEJsBRQRAIAIQDSECDAELIAAgBUEMaiACEJACIgZFBEBCgICAgOAAIQIMAQsgACABIAYgBSgCDEGQyAAgAyAEELcFIQIgACAGEDYLIAVBEGokACACC7wBAgN+AX8jAEEQayICJABCgICAgOAAIQUCQCAAIAEQZw0AIAMpAwAhBgJAAkAgAykDCCIHQiCIpyIDQQNHBEAgBEECRg0CIANBAkYNAQwCCyAEQQJGDQELIAAgASAGQQBBABAiIQUMAQsgACACQQxqIAcQiwQiA0UNACACKAIMIQgCfiAEQQFxBEAgACABIAYgCCADEI4DDAELIAAgASAGIAggAxAiCyEFIAAgAyAIEJgDCyACQRBqJAAgBQsNACAAIAEQDSACEMABCxwAIAAgACgCECgCRCABQRhsaigCBEH1wgAQxQELZQEBfyMAQTBrIgIkAAJ/IAFC/////wdYBEAgAacQkwEMAQsgAiABNwMAIAJBEGpBGEGBwQAgAhBVGkEAIAAgAkEQahBxIgEQCw0AGiAAKAIQIAGnQQEQ1AILIQAgAkEwaiQAIAALPAEBfyABIAAoAtQBIAEoAhQgACgCyAEQ0QJBAnRqIgIoAgA2AiggAiABNgIAIAAgACgC0AFBAWo2AtABC0MAAn9BACACKAIAKAIAQRp2IANGDQAaQX8gACABIAIQ4wENABogAigCACIAIAAoAgBB////H3EgA0EadHI2AgBBAAsLqwEBBH9BfyECAkAgACABQQAQ4wENACABKAIoIgQgASgCECIDKAIgaiIFIAMoAhxLBEAgACABQRBqIAEgBRDRBQ0BCyABKAIkIQNBACECA0AgAiAERkUEQCAAIAEgAhCTAUEHEIABIAMpAwA3AwAgAkEBaiECIANBCGohAwwBCwsgACABKAIkEBhBACECIAFBADYCKCABQgA3AyAgASABLQAFQfcBcToABQsgAgt5AQN/AkACQCAAQQFxIgINACABQYECcUGBAkYgAUGACHFBACAAIAFzQQRxG3INASACIAFBgPQAcUVyDQAgAEEwcSICQRBGIAFBgDBxIgRBAEdzDQEgAEECcSABQYIEcUGCBEdyIAJBEEZyDQAgBEUNAQtBASEDCyADC5QBAQF/IwBBEGsiBSQAIAUg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AkACQCAAIARBCGogAUHiABCEASICRQ0AIAQpAwgiARAQBEAgACACKQMAEJkEIQMMAgsgACABIAIpAwhBASACEDUiARALDQAgACABECwiA0UEQEEAIQMMAgsgACACKQMAEJ8BIgJBAEgNACACRQ0BIABBodgAQQAQFAtBfyEDCyAEQRBqJAAgAw8LIAIgAi0ABUH+AXE6AAVBAQsuAQF/IACnKQMgIgBCgICAgHCDQoCAgICQf1EEfyAApygCBEH/////B3EFQQALCwoAIAAoAgBBfHELMwAgACACQQEQ/AEiAEUEQEKAgICA4AAPCyAAQRBqIAEgAkEBdBAjGiAArUKAgICAkH+EC2UCAn8BfkEEIQJCgICAgCAhBAJAAkACQAJAAkACQCABEFQiA0EIag4KAwIFBQUFBQUEAQALIANBB0YNAwwEC0EGIQIMAgtBBSECDAELQQchAgsgACgCKCACQQN0aikDACEECyAEC18BAXwgACkCBEL//////////z9YBEAgASABKwMIRAAAAAAAAPA/IAAoAgC3IgKjoDkDCCABIAErAxAgACgCBCIAQf////8HcSAAQR92IgB0IABrQRFquCACo6A5AxALC+cGAQV/AkACQAJAAkACQAJAAkACQAJAIAEtAARBD3EOBgABBAIDBgULIAAgASgCECIHIAIRAwAgBxAnIQUDQCAHKAIgIANKBEACQCAFKAIERQ0AIAEoAhQgA0EDdGohBAJAAkACQAJAIAUoAgBBHnZBAWsOAwABAgMLIAQoAgAiBgRAIAAgBiACEQMACyAEKAIEIgRFDQMgACAEIAIRAwAMAwsgBCgCACIELQAFQQFxRQ0CIAAgBCACEQMADAILIAAgBBCbBCACEQMADAELIAAgBCkDACACECELIANBAWohAyAFQQhqIQUMAQsLIAEvAQYiA0EBRg0GIAAoAkQgA0EYbGooAgwiA0UNBiAAIAGtQoCAgIBwhCACIAMREQAPCwNAIAEoAjggA0oEQCAAIAEoAjQgA0EDdGopAwAgAhAhIANBAWohAwwBCwsgASgCMCIBRQ0FIAAgASACEQMADwsgAS0ABUEBcUUNBSAAIAEoAhApAwAgAhAhDwsgASgCIARAIAAgAUEoaiACEPADCyAAIAEpAxAgAhAhIAAgASkDGCACECEPCyABKAIsIgFFDQIgACABIAIRAwAPCxABAAsgAUHkAWohAyABQeABaiEHA0AgByADKAIAIgVHBEAgBUEIayEDQQAhBANAIAMoAiAgBEoEQAJAIAMoAhwgBEEUbGoiBigCCA0AIAYoAgQiBkUNACAAIAYgAhEDAAsgBEEBaiEEDAELCyAAIAMpA0AgAhAhIAAgAykDSCACECEgACADKQNgIAIQISAAIAMpA2ggAhAhIAVBBGohAwwBCwsgACABKQPAASACECEgACABKQPIASACECEgACABKQOwASACECEgACABKQO4ASACECEgACABKQOoASACECFBACEDA0AgA0EIRgRAQQAhAwNAIAAoAkAgA0oEQCAAIAEoAiggA0EDdGopAwAgAhAhIANBAWohAwwBCwsgACABKQOYASACECEgACABKQOgASACECEgACABKQNQIAIQISAAIAEpA0AgAhAhIAAgASkDSCACECEgACABKQM4IAIQISAAIAEpAzAgAhAhIAEoAiQiAQRAIAAgASACEQMACwUgACABIANBA3RqKQNYIAIQISADQQFqIQMMAQsLCw8LQbM5QaENQY4sQcg5EAAAC4kCAgF+An8jAEEwayIEJABBoRkhBUKAgICA4AAhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABEFRBCGoOEAUGCQkJCQoEAAECAwkJCwgJCyAEIAE+AgAgBEEQakEgQZ4ZIAQQVRogBEEQaiEFDAkLIABBA0ECIAGnGxAxIQMMCQsgAEEBEDEhAwwICyAAQcUAEDEhAwwHCyAAIAFBABCbAyIBEAsEQCABIQMMBwsgACABIAIQoAQhAyAAIAEQCgwGCyACRQ0BCyABEA0hAwwECyAAQbUZQQAQFAwDCyAAIAEQSUEKQQBBABDJAiEDDAILQdUZIQULIAAgBRBxIQMLIARBMGokACADC6YEAQl/AkACQAJAIAJCgICAgHCDQoCAgICQf1IEQCAAIAIQKyICEAtFDQEMAgsgAhANIQILIAKnIgooAgQiBUH/////B3EhBgJAIAVBAE4EQCAKQRBqIQVBACEDA0AgBCAGRkUEQCADIAQgBWotAABBB3ZqIQMgBEEBaiEEDAELCyADRQRAIAFFDQQgASAGNgIAIAUPCyAAIAMgBmpBABD8ASIHRQ0CQQAhAyAHQRBqIgshBANAIAMgBkYNAgJ/IAMgBWosAAAiCEEATgRAIAQgCDoAACAEQQFqDAELIAQgCEE/cUGAAXI6AAEgBCAIQcABcUEGdkHAAXI6AAAgBEECagshBCADQQFqIQMMAAsACyAAIAZBA2xBABD8ASIHRQ0BQQAhBSAHQRBqIgshBANAIAUiCCAGTg0BIAhBAWohBSAKIAhBAXRqLwEQIglB/wBNBEAgBCAJOgAAIARBAWohBAUCQCADIAUgBk5yIAlBgPgDcUGAsANHcg0AIAogBUEBdGovARAiDEGA+ANxQYC4A0cNACAJQQp0QYD4P3EgDEH/B3FyQYCABGohCSAIQQJqIQULIAQgCRDjAiAEaiEECwwACwALIARBADoAACAHIAQgB2tBEGtB/////wdxrSAHKQIEQoCAgIB4g4Q3AgQgACACEAogAQRAIAEgBygCBEH/////B3E2AgALIAsPCyABRQRAQQAPC0EAIQUgAUEANgIACyAFCyUCAX8BfiAAIAEQMSIDEAtFBEAgACADELcBIQIgACADEAoLIAILDAAgASAAKAIMEQQACz0BAX8gASABKAIAIgJBAWs2AgAgAkEBTARAIAEpAgRCgICAgICAgIDAAFoEQCAAIAEQqwMPCyAAIAEQHwsLVQECfyMAQRBrIgIkACAAKAIQIQACfwJAIAJBDGogARDoBUUNACACKAIMIgNBAEgNACAAIAEQpAQgAxCTAQwBCyAAIAFBARDUAgshASACQRBqJAAgAQtcAQN/IABB4AFqIQQgACgC5AEhAwNAIAQgAyICRwRAIAIoAgQhAwJAAkACQCABDgMCAAEECyACLABMDQMMAQsgAikCTEIghkI4h6cNAgsgACACQQhrEOoFDAELCwu8AQEDfwJAIAEgAigCECIDBH8gAwVBACEDIAIQ8AUNASACKAIQCyACKAIUIgVrSwRAIAIgACABIAIoAiQRAQAPCwJ/IAIsAEtBf0oEQCABIQMDQCABIAMiBEUNAhogACAEQQFrIgNqLQAAQQpHDQALIAIgACAEIAIoAiQRAQAiAyAESQ0CIAAgBGohACACKAIUIQUgASAEawwBCyABCyEDIAUgACADECMaIAIgAigCFCADajYCFCABIQMLIAMLQAEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQeiAAIAUpAwA3AwAgACAFKQMINwMIIAVBEGok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5wBBABDXASEDIAAgARAKIANBf0oNASAAQYbCAUEAEBQLQX8hAgsgAgtdAQF/AkACQAJAAkAgAUIgiKdBAWoOAwECAAILIAEQDQ8LIAGnIgIvAQZBBkcNACACKQMgIgFCgICAgHCDQoCAgIAQUQ0BCyAAQYC4AUEAEBRCgICAgOAAIQELIAELEABB4bEBIABBCxCBAkEARwteAQJ/QcCxASEDAkACQCABKAIEQf////8HcSIEIAJMDQAgASACEC9BJUcNAEHNsQEhAyACQQJqIARODQAgASACQQFqQQIQwwMiAkF/Sg0BCyAAIAMQxANBfyECCyACC1cAIwBBEGsiAiQAAn5CgICAgOAAIAAgAkEIaiADKQMAEEcNABogAisDCL1CgICAgICAgPj/AINCgICAgICAgPj/AFKtQoCAgIAQhAshASACQRBqJAAgAQtXACMAQRBrIgIkAAJ+QoCAgIDgACAAIAJBCGogAykDABBHDQAaIAIrAwi9Qv///////////wCDQoCAgICAgID4/wBWrUKAgICAEIQLIQEgAkEQaiQAIAEL+AICA38DfiMAQTBrIggkACADQgAgA0IAVRshDSAFQQFrIQogBUEBSCEFQgAhAwNAAkAgAyANUQRAIAQhDAwBC0J/IQwgACACIAMgCEEoahCJASIJQQBIDQACQCAJRQ0AIAYQEEUEQCAIIAgpAyg3AwAgAyELIANCgICAgAhaBEAgA7kQFSELCyAIIAI3AxAgCCALNwMIIAggACAGIAdBAyAIECIiCzcDKCAAIAgpAwAQCiAAIAgpAwgQCiALEAsNAgsCQAJAAkAgBQ0AIAAgCCkDKCILEL8BIglBAEgNASAJRQ0AIAAgCEEgaiALEEBBAEgNASAAIAEgCyAIKQMgIAQgCkKAgICAMEKAgICAMBDTBCIEQgBTDQEgACALEAoMAwsgBEL/////////D1MNASAAQfusAUEAEBQgCCkDKCELCyAAIAsQCgwCCyAAIAEgBCAIKQMoEG1BAEgNASAEQgF8IQQLIANCAXwhAwwBCwsgCEEwaiQAIAwLDAAgAEIAIABCAFUbCygAAkAgARAQRQRAIAEQJkUNAQsgACABED4PCyAAIAFBOEEAQQAQuQILowICBn8BfiMAQTBrIgIkAAJAAkAgAykDACIBECBFDQBCgICAgOAAIQsgACAB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ARAKQoCAgIDgAAuYAQICfgF/IAAgARAxIQMCfwJAIAEQXA0AQQAgACgCECgCOCABQQJ0aigCACkCBCICQoCAgICAgICAQINCgICAgICAgICAf1IgAkKAgICA8P///z+DUCACQv//////////v39WcRsNACACp0F/c0EfdkEBIAJC/////weDUBshBAsgBAsEfiAAQcHKACADQcPKABC9AQUgAwsLpwEBBX8gAKciAygCECIBIAEoAhhBf3NBAnRBpH5yaigCACECIAEQJyEBA0AgAkUEQEEADwsgASACQQFrIgRBA3RqIgUoAgAhAiAFKAIEQTZHBEAgAkH///8fcSECDAELC0EBIQECQCACQf////8DSw0AIAMoAhQgBEEDdGopAwAiAEKAgICAcINCgICAgJB/Ug0AIACnKAIEQf////8HcUEARyEBCyABC8wDAQZ/IABB4ABqIgQQbiAAQdAAaiEFIAAoAlQhAgJAAkADQCAFIAIiAUcEQCABQQRrIgMtAABBEE8NAiABKAIEIQIgACABQQhrIgZBBhCfBCADIAMtAABBD3FBEHI6AAAgBigCAA0BIAEQRiABIAQQTAwBCwsMAQtBnDlBoQ1BxCxBqTkQAAALIABB1ABqIQEgAEHQAGohAgJAAkADQCACIAEoAgAiAUcEQCABQQhrIgMoAgBBAEwNAiABQQRrIgQgBC0AAEEPcToAACAAIANBBxCfBCABQQRqIQEMAQsLIABB5ABqIQEgAEHgAGohAgNAIAIgASgCACIBRwRAIAAgAUEIa0EIEJ8EIAFBBGohAQwBCwsMAQtB1jlBoQ1B5yxB9zkQAAALIAAiAkECOgBoIABB2ABqIQMgAEHgAGohAQNAIAEgAigCZCIARwRAIABBBGstAABBDnEEQCAAEEYgACADEEwFIAIgAEEIaxDfBQsMAQsLIAJBADoAaCACKAJcIQACQAJAA0AgACADRwRAIABBBGstAABBDnENAiAAKAIEIQEgAiAAQQhrEB8gASEADAELCyADEG4MAQtB/zlBoQ1BnS1B4DoQAAALCw0AIAAgAUHxyQAQxQELUAIBfwF+AkAgACABQekAIAFBABASIgQQC0UEQCAAIAQQLCEDIAAgAUHAACABQQAQEiIBEAtFDQELQoCAgIDgACEBQQAhAwsgAiADNgIAIAELxAEBBH8gAaci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AkAgAikDCCIHQgFTBEAMAQsgB0IBfSEGAkACQAJAAkAgASACQQRqIAIQjgJFDQAgByACKAIAIgitUg0AIAGnIQkgAigCBCEDIARFDQEgAykDACEFIAMgA0EIaiAIQQN0QQhrEOgBDAILAkAgBARAIAAgAUIAEGIiBRALDQYgACABQgBCASAGQQEQgANFDQEMBgsgACABIAYQYiIFEAsNBQsgACABIAYQlAJBAE4NAgwECyAIQQN0IANqQQhrKQMAIQULIAkgCSgCKEEBazYCKAsgB0KBgICACFQNACAGuRAVIQYLIAAgAUEwIAYQSEF/Sg0BCyAAIAUQCkKAgICA4AAhBQsgACABEAogAkEQaiQAIAULEAAgACADKQMAQREgBBD/AgvqBAIFfgN/IwBBEGsiCyQAAn4CQAJAAkAgACABECkiBkKAgICAcFQNACAGpyIKLwEGQQJHDQAgCi0ABUEJcUEJRw0AIAooAhAQJy0AA0EIcUUNACAKKAIUKQMAIgFC/////w9WDQAgCyABQiCGQiCHIgc3AwggByAKNQIoUg0AIAcgAqx8IgVC/////wdVDQAgCjUCICAFUwRAIAAgCiAFpxDTBQ0DCwJ/IARFIAJBAUhyRQRAIAooAiQiBCACQQN0aiAEIAGnQQN0EOgBQQAMAQsgAacLIQxBACEEIAJBACACQQBKGyECA0AgAiAERkUEQCADIARBA3RqKQMAEA0hASAKKAIkIAQgDGpBA3RqIAE3AwAgBEEBaiEEDAELCyAKIAU+AiggCigCFCAFQv////8PgzcDACAFQoCAgIAIfCEBDAELIAAgC0EIaiAGEEANASALKQMIIgEgAqwiCHwiBUKAgICAgICAEFkEQCAAQZXXAEEAEBQMAgsCQCAERSACQQFIckUEQEIAIQcgACAGIAhCACABQX8QgAMNAwwBCyABIQcLIAJBACACQQBKG60hCEIAIQFBACEEA0AgASAIUgRAIAEgB3whCSAEQQN0IQIgBEEBaiEEIAFCAXwhASAAIAYgCSACIANqKQMAEA0QjwFBAE4NAQwDCwsgACAGQTACfiAFQv////8PgyAFQoCAgIAIfCIBQv////8PWA0AGiAFuRAVCxBIQQBIDQELIAAgBhAKIAVC/////w+DIAFC/////w9YDQEaIAW5EBUMAQsgACAGEApCgICAgOAACyEBIAtBEGokACABCzwAIAFBAEHQABBLIgEgBDYCDCABIAA2AgAgASACIANqNgI8IAEgAjYCOCABQQE2AgggAUKggICAEDcDEAt/AQR/IAEtAABB2wBGBEAgAUEBaiIDEENBAWshAiAAKAIQKAI4IQRBwgEhAQNAIAFBzwFHBEACQCAEIAFBAnRqKAIAIgUoAgRB/////wdxIAJHDQAgBUEQaiADIAIQdA0AIAAgARAXDwsgAUEBaiEBDAELCxABAAsgACABEMcBCxcAIAAgACkDwAEgASACIANBAEF/ELcFCzUBAX8gACgC7AEiB0UEQCAAQdzNAEEAEBRCgICAgOAADwsgACABIAIgAyAEIAUgBiAHETMAC8YCAgJ+An9CgICAgDAhAgJAAkAgASkCVCIDQhiGQjiHpw0AIANCIIZCOIenBEAgA0IQhkI4h6dFDQEgACABKQNgEA0QkgFCgICAgOAADwsgASADQv////+PYINCgICAgBCENwJUA0AgASgCFCAESgRAIAEoAhAgBEEDdGooAgQiBSkCVEIYhkI4h6dFBEAgACAFELgFIgIQCw0EIAAgAhAKCyAEQQFqIQQMAQsLAkAgASgCUCIEBEBCgICAgOAAQoCAgIAwIAAgASAEEQIAQQBIGyECDAELIAAgASkDSEKAgICAMEEAQQAQNSECIAFCgICAgDA3A0gLIAIQCwRAIAFBAToAWSABIAAoAhApA4ABEA03A2ALIAEgASkCVEL///+HgGCDQoCAgAiENwJUCyACDwsgASABKQJUQv////+PYIM3AlQgAgvLBQIHfwF+IwBBEGsiBiQAAn9BACABKQJUIglCKIZCOIenDQAaIAEgCUL//4N4g0KAgASENwJUAkADQAJAIAEoAhQgAkwEQEEAIQIMAQsgAkEDdCEDIAJBAWohAiAAIAMgASgCEGooAgQQuQVBAE4NAQwCCwsCQANAIAIgASgCIE4NAQJAAkAgASgCHCIIIAJBFGxqIgMoAghBAUcNACADKAIMIgVB/QBGDQAgACAGQQhqIAZBDGogASgCECADKAIAQQN0aigCBCAFEO0DIgMNAQsgAkEBaiECDAELCyAAIAMgASAIIAJBFGxqKAIQEOwDDAELQQAgASgCUA0BGiABKAJIKAIkIQhBACECQQAhBQNAAkAgASgCOCAFTARAA0AgAiAB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JCABIARBA3YgAGo2AiBBAAshASADQRBqJAAgAQtfAgF/AXwjAEEQayICJAACf0EAIAEQjgFFDQAaQX8gACACQQhqIAEQRw0AGiACKwMIIgO9QoCAgICAgID4/wCDQoCAgICAgID4/wBSIAOcIANhcQshACACQRBqJAAgAAu7AQEBfCABAn8CfwNAAkACQAJAIAIQVA4IAAAAAAICAgECC0EAIQBBAEH/ASACpxCwARBKDAQLQQAiACACEEkiA71C////////////AINCgICAgICAgPj/AFYgA0QAAAAAAAAAAGNyDQIaQf8BIANEAAAAAADgb0BkDQMaAn8gA54iA5lEAAAAAAAA4EFjBEAgA6oMAQtBgICAgHgLDAMLIAAgAhCdASICEAtFDQALQX8LIQBBAAs2AgAgAAuyBAEIfyMAQRBrIgYkAAJ/QX8gACAGQQxqIAJBABDLAg0AGiABKAIQLQAzQQhxRQRAIAAgA0EwEN8BDAELIAEtAAVBCHEEQCAGKAIMIgMgASgCKCIFSQRAIAMhBANAIAQgBUZFBEAgACABKAIkIARBA3RqKQMAEAogBEEBaiEEDAELCyABIAM2AigLIANBAE4EfiADrQUgA7gQFQshAiABKAIUIAI3AwBBAQwBCyAAIAZBBGogASgCFCkDABDEARogBigCDCIJIQUCQCAGKAIEIgcgCU0NACABKAIQIgsoAiAiBCAHIAlrTwRAA0AgByIFIAlNDQIgACABIAAgBUEBayIHEOcFIgoQlAQhBCAAIAoQESAEDQAMAgsACyAJIQUgCxAnIgchCANAIAQgCkwEQCAGIAU2AgRBACEIA0AgBCAITA0DAkAgBygCBCIERQ0AIAAgBkEIaiAEELIBRQ0AIAYoAgggBUkNACAAIAEgBygCBBCUBBogASgCECILECcgCEEDdGohBwsgB0EIaiEHIAhBAWohCCALKAIgIQQMAAsABQJAIAgoAgQiBEUNACAAIAZBCGogBBCyAUUNACAGKAIIIgQgBUkNACAFIARBAWogCC0AA0EEcRshBQsgCEEIaiEIIApBAWohCiALKAIgIQQMAQsACwALIAAgASgCFCAFQQBOBH4gBa0FIAW4EBULEB5BASAFIAlNDQAaIAAgA0GawAAQdgshBCAGQRBqJAAgBAumBAEKfyMAQRBrIgIkACACQQA2Agwg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ACACQQVqQQtB8Q0gAhBVGiAAIAJBBWoQcSIEEAsNACAAKAIQIASnQQEQ1AIhAwsgAkEQaiQAIAML4QECBn8BfgJAIAEoAgQiBEH/////B3EiAkEBa0EJSw0AAn8gBEF/TARAIAEvARAMAQsgAS0AEAsiAxBFRQ0AAn8CQCADQTBGBEBBACIDIAJBAUcNAhoMAQsgAkEBIAJBAUsbIQUgAUEQaiEGIANBMGshAyAEQX9KIQdBASECA0AgAiAFRg0BAn8gB0UEQCABIAJBAXRqLwEQDAELIAIgBmotAAALIgQQRUUNAyAEQTBrrCADrUIKfnwiCKchAyACQQFqIQIgCEKAgICAEFQNAAsMAgsgACADNgIAQQELDwtBAAssAQF/A0AgASADRkUEQCAAIANqLQAAIAJBhwJsaiECIANBAWohAwwBCwsgAguIAgECfyAAIAEoAgQQEQNAIAIgASgCFE5FBEAgACABKAIQIAJBA3RqKAIAEBEgAkEBaiECDAELCyAAIAEoAhAQGEEAIQIDQCABKAIgIAJKBEAgASgCHCACQRRsaiIDKAIIRQRAIAAoAhAgAygCBBD5AQsgACADKAIQEBEgACADKAIMEBEgAkEBaiECDAELCyAAIAEoAhwQGCAAIAEoAigQGEEAIQIDQCACIAEoAjhORQRAIAAgASgCNCACQQxsaigCBBARIAJBAWohAgwBCwsgACABKAI0EBggACABKQNAEAogACABKQNIEAogACABKQNgEAogACABKQNoEAogAUEIahBGIAAgARAYC68CAgJ/A34jAEEgayICJABCgICAgOAAIQcCQCAAIAMpAwAiBhBnDQAgACABQSoQbCIBEAsNAAJAIABBIBBqIgRFDQBBACEDIARBADYCFCAEQQA2AgAgBEEEaiEFA0AgA0ECRkUEQCAFIANBA3RqEG4gA0EBaiEDDAELCyAEQoCAgIAwNwMYIAEgBBCKASAAIAJBEGogARCsBQ0AAkAgACAGQoCAgIAwQQIgAkEQahAiIggQCwRAIAIgABCRATcDCCAAIAIpAxhCgICAgDBBASACQQhqECIhBiAAIAIpAwgQCiAGEAsNASAAIAYQCgsgACAIEAogACACKQMQEAogACACKQMYEAogASEHDAILIAAgAikDEBAKIAAgAikDGBAKCyAAIAEQCgsgAkEgaiQAIAcL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BSkDeCECIAUpA3AhBAwBCyAGBH4gAQUgBUHgAGogASAKQgBCgICAgICAwLvAABAyIAUpA2giCkIwiKdB+ABrIQYgBSkDYAshBCAHRQRAIAVB0ABqIAMgCUIAQoCAgICAgMC7wAAQMiAFKQNYIglCMIinQfgAayEHIAUpA1AhAwsgCUL///////8/g0KAgICAgIDAAIQhCSAKQv///////z+DQoCAgICAgMAAhCEKIAYgB0oEQANAAn4gCiAJfSADIARWrX0iC0IAWQRAIAsgBCADfSIEhFAEQCAFQSBqIAEgAkIAQgAQMiAFKQMoIQIgBSkDICEEDAULIAtCAYYgBEI/iIQMAQsgCkIBhiAEQj+IhAshCiAEQgGGIQQgBkEBayIGIAdKDQALIAchBgsCQCAKIAl9IAMgBFatfSIJQgBTBEAgCiEJDAELIAkgBCADfSIEhEIAUg0AIAVBMGogASACQgBCABAyIAUpAzghAiAFKQMwIQQMAQsgCUL///////8/WARAA0AgBEI/iCEBIAZBAWshBiAEQgGGIQQgASAJQgGGhCIJQoCAgICAgMAAVA0ACwsgCEGAgAJxIQcgBkEATARAIAVBQGsgBCAJQv///////z+DIAZB+ABqIAdyrUIwhoRCAEKAgICAgIDAwz8QMiAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAuhBAIEfgJ/AkAgAb0iBEIBhiIDUCAEQv///////////wCDQoCAgICAgID4/wBWckUEQCAAvSIFQjSIp0H/D3EiBkH/D0cNAQsgACABoiIAIACjDwsCfgJAIAMgBUIBhiICVARAIARCNIinQf8PcSEHIAZFBEAgBUIMhiICQgBTBEBBACEGDAMLQX8hBgNAIAJCAYYiAkIAUw0DIAZBAWshBgwACwALIAVC/////////weDQoCAgICAgIAIhAwCCyAARAAAAAAAAAAAoiAAIAIgA1EbDwsgBUEBIAZrrYYLIQICfgJAIAdFBEAgBEIMhiIDQgBTBEBBACEHDAILQX8hBwNAIANCAYYiA0IAUw0CIAdBAWshBwwACwALIARC/////////weDQoCAgICAgIAIhAwBCyAEQQEgB2uthgshBCAGIAdKBEADQAJAIAIgBH0i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IAxBA3I2AgQgBSAKaiICIAIoAgRBAXI2AgQgAyAMEPQFCyAFIQILIAILIgIEQCACQQhqDwsgARChAiIFRQRAQQAPCyAFIABBfEF4IABBBGsoAgAiAkEDcRsgAkF4cWoiAiABIAEgAksbECMaIAAQ6QEgBQvYAwICfgJ/IwBBIGsiBCQAAkAgAUL///////////8AgyIDQoCAgICAgMCAPH0gA0KAgICAgIDA/8MAfVQEQCABQgSGIABCPIiEIQMgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIANCgYCAgICAgIDAAHwhAgwCCyADQoCAgICAgICAQH0hAiAAQoCAgICAgICACIVCAFINASACIANCAYN8IQIMAQsgAFAgA0KAgICAgIDA//8AVCADQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiADQv///////7//wwBWDQBCACECIANCMIinIgVBkfcASQ0AIARBEGogACABQv///////z+DQoCAgICAgMAAhCICIAVBgfcAaxByIAQgACACQYH4ACAFaxDWAiAEKQMIQgSGIAQpAwAiAEI8iIQhAiAEKQMQIAQpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyAAQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIARBIGokACACIAFCgICAgICAgICAf4OEvwuCEQIFfwt+IwBBwAFrIgUkACAEQv///////z+DIRIgAkL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhESAEQjCIp0H//wFxIQcCQAJAAkAgAkIwiKdB//8BcSIJQQFrQf3/AU0EQCAHQQFrQf7/AUkNAQsgAVAgAkL///////////8AgyIKQoCAgICAgMD//wBUIApCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhEQwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCERIAMhAQwCCyABIApCgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhEQwDCyARQoCAgICAgMD//wCEIRFCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgCoRQDQIgAiADhFAEQCARQoCAgICAgMD//wCEIRFCACEBDAILIApC////////P1gEQCAFQbABaiABIAwgASAMIAxQIgYbeSAGQQZ0rXynIgZBD2sQckEQIAZrIQYgBSkDuAEhDCAFKQOwASEBCyACQv///////z9WDQAgBUGgAWogAyASIAMgEiASUCIIG3kgCEEGdK18pyIIQQ9rEHIgBiAIakEQayEGIAUpA6gBIRIgBSkDoAEhAwsgBUGQAWogEkKAgICAgIDAAIQiFEIPhiADQjGIhCICQoTJ+c6/5ryC9QAgAn0iBBC0ASAFQYABakIAIAUpA5gBfSAEELQBIAVB8ABqIAUpA4gBQgGGIAUpA4ABQj+IhCIEIAIQtAEgBUHgAGogBEIAIAUpA3h9ELQBIAVB0ABqIAUpA2hCAYYgBSkDYEI/iIQiBCACELQBIAVBQGsgBEIAIAUpA1h9ELQBIAVBMGogBSkDSEIBhiAFKQNAQj+IhCIEIAIQtAEgBUEgaiAEQgAgBSkDOH0QtAEgBUEQaiAFKQMoQgGGIAUpAyBCP4iEIgQgAhC0ASAFIARCACAFKQMYfRC0ASAGIAkgB2tqIQYCfkIAIAUpAwhCAYYgBSkDAEI/iIRCAX0iCkL/////D4MiBCACQiCIIgt+Ig4gCkIgiCIKIAJC/////w+DIg9+fCICQiCIIAIgDlStQiCGhCAKIAt+fCACQiCGIgsgBCAPfnwiAiALVK0gAiACIAQgA0IRiEL/////D4MiDn4iDyAKIANCD4ZCgID+/w+DIg1+fCILQiCGIhAgBCANfnwgEFStIAogDn4gCyAPVK1CIIYgC0IgiIR8fHwiAlatfHwgAkIAUq18fSILQv////8PgyIOIAR+Ig8gCiAOfiINIAQgC0IgiCIQfnwiC0IghnwiDiAPVK0gCiAQfiALIA1UrUIghiALQiCIhHx8IA5CACACfSICQiCIIgsgBH4iDyACQv////8PgyINIAp+fCICQiCGIhAgBCANfnwgEFStIAogC34gAiAPVK1CIIYgAkIgiIR8fHwiAiAOVK18IAJCAn0iDyACVK18QgF9IgtC/////w+DIgIgDEIChiABQj6IhEL/////D4MiBH4iDiABQh6IQv////8PgyIKIAtCIIgiC358Ig0gDlStIA0gDSAPQiCIIg4gDEIeiEL//+//D4NCgIAQhCIMfnwiDVatfCALIAx+fCACIAx+IhMgBCALfnwiECATVK1CIIYgEEIgiIR8IA0gDSAQQiCGfCINVq18IA0gDSAKIA5+IhMgD0L/////D4MiDyAEfnwiECATVK0gECAQIAIgAUIChkL8////D4MiE358IhBWrXx8Ig1WrXwgDSALIBN+IgsgDCAPfnwiDCAEIA5+fCIEIAIgCn58IgJCIIggAiAEVK0gCyAMVq0gBCAMVK18fEIghoR8IgQgDVStfCAEIAQgECAOIBN+IgwgCiAPfnwiCkIgiCAKIAxUrUIghoR8IgogEFStIAogAkIghnwgClStfHwiBFatfCICQv////////8AWARAIAFCMYYgBEIgiCIBIANC/////w+DIgp+Ig0gBEL/////D4MiDCADQiCIIgt+fCIOQiCGIhAgCiAMfnwiDyAQVK19IA9CAFKtfSACQv////8PgyAKfiAMIBJC/////w+DfnwgASALfnwgDSAOVq1CIIYgDkIgiIR8IAQgFEIgiH4gAyACQiCIfnwgAiALfnwgASASfnxCIIZ8fSESIAZBAWshBkIAIA99DAELIARCIYghDCABQjCGIAJCP4YgBEIBiIQiBEL/////D4MiASADQiCIIgp+Ig8gDCACQh+GhCINQv////8PgyIQIANC/////w+DIgx+fCILQiCGIhMgASAMfnwiDiATVK19IA5CAFKtfSAEIBRCIIh+IAMgAkIhiH58IAJCAYgiAiAKfnwgDSASfnxCIIYgCiAQfiACQv////8PgyAMfnwgASASQv////8Pg358IAsgD1StQiCGIAtCIIiEfHx9IRJCACAOfQshASAGQYCAAU4EQCARQoCAgICAgMD//wCEIRFCACEBDAELIAZB//8AaiEHIAZBgYB/TARAAkAgBw0AIAQgAUIBhiADViASQgGGIAFCP4iEIgEgFFYgASAUURutfCIBIARUrSACQv///////z+DfCICQoCAgICAgMAAg1ANACACIBGEIREMAgtCACEBDAELIAQgAUIBhiADWiASQgGGIAFCP4iEIgEgFFogASAUURutfCIBIARUrSACQv///////z+DfCAHrUIwhnwgEYQhEQsgACABNwMAIAAgETcDCCAFQcABaiQADwsgAEIANwMAIABCgICAgICA4P//ACARIAIgA4RQGzcDCCAFQcABaiQAC8QBAgF/An5BfyEDAkAgAEIAUiABQv///////////wCDIgRCgICAgICAwP//AFYgBEKAgICAgIDA//8AURsNAEEAIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBRGw0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQEEAIAEgAlMgASACURsNASAAIAEgAoWEQgBSDwsgAEIAUiABIAJVIAEgAlEbDQAgACABIAKFhEIAUiEDCyADC9wyAxV/B34BfCMAQRBrIhEkACMAQaABayIOJAAgDkEQakEAQZABEEsaIA5BfzYCXCAOIAA2AjwgDkF/NgIYIA4gADYCFCAOQRBqEKoEIA5BEGohAiMAQTBrIg0kAEHgowQoAgAhEEHUowQoAgAhDwNAAn8gAigCBCIAIAIoAmhJBEAgAiAAQQFqNgIEIAAtAAAMAQsgAhBaCyIFEP0FDQALQQEhAAJAAkAgBUEraw4DAAEAAQtBf0EBIAVBLUYbIQAgAigCBCIEIAIoAmhJBEAgAiAEQQFqNgIEIAQtAAAhBQwBCyACEFohBQsCQAJAAkADQCAGQYmjBGosAAAgBUEgckYEQAJAIAZBBksNACACKAIEIgQgAigCaEkEQCACIARBAWo2AgQgBC0AACEFDAELIAIQWiEFCyAGQQFqIgZBCEcNAQwCCwsgBkEDRwRAIAZBCEYNASAGQQRJDQIgBkEIRg0BCyACKAJoIgQEQCACIAIoAgRBAWs2AgQLIAZBBEkNAANAIAQEQCACIAIoAgRBAWs2AgQLIAZBAWsiBkEDSw0ACwsjAEEQayICJAACfiAAskMAAIB/lLwiBEH/////B3EiAEGAgIAEa0H////3B00EQCAArUIZhkKAgICAgICAwD98DAELIAStQhmGQoCAgICAgMD//wCEIABBgICA/AdPDQAaQgAgAEUNABogAiAArUIAIABnIgBB0QBqEHIgAikDACEWIAIpAwhCgICAgICAwACFQYn/ACAAa61CMIaECyEXIA0gFjcDACANIBcgBEGAgICAeHGtQiCGhDcDCCACQRBqJAAgDSkDCCEWIA0pAwAhFwwBCwJAAkACQCAGDQBBACEGA0AgBkGSowRqLAAAIAVBIHJHDQECQCAGQQFLDQAgAigCBCIEIAIoAmhJBEAgAiAEQQFqNgIEIAQtAAAhBQwBCyACEFohBQsgBkEBaiIGQQNHDQALDAELAkACQCAGDgQAAQECAQsCQCAFQTBHDQACfyACKAIEIgQgAigCaEkEQCACIARBAWo2AgQgBC0AAAwBCyACEFoLQV9xQdgARgRAIwBBsANrIgMkAAJ/IAIoAgQiBCACKAJoSQRAIAIgBEEBajYCBCAELQAADAELIAIQWgshBQJAAn8DQCAFQTBHBEACQCAFQS5HDQQgAigCBCIEIAIoAmhPDQAgAiAEQQFqNgIEIAQtAAAMAwsFIAIoAgQiBCACKAJoSQR/QQEhCiACIARBAWo2AgQgBC0AAAVBASEKIAIQWgshBQwBCwsgAhBaCyEFQQEhCCAFQTBHDQADQCAZQgF9IRkCfyACKAIEIgQgAigCaEkEQCACIARBAWo2AgQgBC0AAAwBCyACEFoLIgVBMEYNAAtBASEKC0KAgICAgIDA/z8hFwNAAkAgBUEgciEGAkACQCAFQTBrIgRBCkkNACAFQS5HQQAgBkHhAGtBBUsbDQIgBUEuRw0AIAgNAkEBIQggFiEZDAELIAZB1wBrIAQgBUE5ShshBAJAIBZCB1cEQCAEIAlBBHRqIQkMAQsgFkIcVwRAIANBMGogBBCBASADQSBqIBsgF0IAQoCAgICAgMD9PxAyIANBEGogAykDICIbIAMpAygiFyADKQMwIAMpAzgQMiADIBggGiADKQMQIAMpAxgQeiADKQMIIRogAykDACEYDAELIAwgBEVyDQAgA0HQAGogGyAXQgBCgICAgICAgP8/EDIgA0FAayAYIBogAykDUCADKQNYEHogAykDSCEaQQEhDCADKQNAIRgLIBZCAXwhFkEBIQoLIAIoAgQiBCACKAJoSQR/IAIgBEEBajYCBCAELQAABSACEFoLIQUMAQsLAn4CQCAKRQRAIAIoAmhFDQEgAiACKAIEIgRBAWs2AgQgAiAEQQJrNgIEIAhFDQEgAiAEQQNrNgIEDAELIBZCB1cEQCAWIRcDQCAJQQR0IQkgF0IBfCIXQghSDQALCwJAIAVBX3FB0ABGBEAgAhD6BSIXQoCAgICAgICAgH9SDQFCACEXIAIoAmhFDQEgAiACKAIEQQFrNgIEDAELQgAhFyACKAJoRQ0AIAIgAigCBEEBazYCBAsgCUUEQCADQfAAaiAAt0QAAAAAAAAAAKIQtQEgAykDcCEYIAMpA3gMAgsgGSAWIAgbQgKGIBd8QiB9IhZBACAQa61VBEBBhKcEQcQANgIAIANBoAFqIAAQgQEgA0GQAWogAykDoAEgAykDqAFCf0L///////+///8AEDIgA0GAAWogAykDkAEgAykDmAFCf0L///////+///8AEDIgAykDgAEhGCADKQOIAQwCCyAQQeIBa6wgFlcEQCAJQX9KBEADQCADQaADaiAYIBpCAEKAgICAgIDA/79/EHogGCAaQoCAgICAgID/PxD4BSECIANBkANqIBggGiAYIAMpA6ADIAJBAEgiBBsgGiADKQOoAyAEGxB6IBZCAX0hFiADKQOYAyEaIAMpA5ADIRggCUEBdCACQX9KciIJQX9KDQALCwJ+IBYgEKx9QiB8IhenIgRBACAEQQBKGyAPIBcgD61TGyIEQfEATgRAIANBgANqIAAQgQEgAykDiAMhGSADKQOAAyEbQgAMAQsgA0HgAmpEAAAAAAAA8D9BkAEgBGsQyAEQtQEgA0HQAmogABCBASADQfACaiADKQPgAiADKQPoAiADKQPQAiIbIAMpA9gCIhkQ/AUgAykD+AIhHCADKQPwAgshFyADQcACaiAJIAlBAXFFIBggGkIAQgAQgAJBAEcgBEEgSHFxIgBqEKICIANBsAJqIBsgGSADKQPAAiADKQPIAhAyIANBkAJqIAMpA7ACIAMpA7gCIBcgHBB6IANBoAJqQgAgGCAAG0IAIBogABsgGyAZEDIgA0GAAmogAykDoAIgAykDqAIgAykDkAIgAykDmAIQeiADQfABaiADKQOAAiADKQOIAiAXIBwQqAQgAykD8AEiGSADKQP4ASIXQgBCABCAAkUEQEGEpwRBxAA2AgALIANB4AFqIBkgFyAWpxD7BSADKQPgASEYIAMpA+gBDAILQYSnBEHEADYCACADQdABaiAAEIEBIANBwAFqIAMpA9ABIAMpA9gBQgBCgICAgICAwAAQMiADQbABaiADKQPAASADKQPIAUIAQoCAgICAgMAAEDIgAykDsAEhGCADKQO4AQwBCyADQeAAaiAAt0QAAAAAAAAAAKIQtQEgAykDYCEYIAMpA2gLIRYgDSAYNwMQIA0gFjcDGCADQbADaiQAIA0pAxghFiANKQMQIRcMBQsgAigCaEUNACACIAIoAgRBAWs2AgQLIAAhDEEAIQRBACEGIwBBkMYAayIBJABBACAPIBBqIhRrIRUCQAJ/A0AgBUEwRwRAAkAgBUEuRw0EIAIoAgQiACACKAJoTw0AIAIgAEEBajYCBCAALQAADAMLBSACKAIEIgAgAigCaEkEfyACIABBAWo2AgQgAC0AAAUgAhBaCyEFQQEhBgwBCwsgAhBaCyEFQQEhByAFQTBHDQBCfyEWA38CfyACKAIEIgAgAigCaEkEQCACIABBAWo2AgQgAC0AAAwBCyACEFoLIgVBMEcEf0EBBSAWQgF9IRYMAQsLIQYLIAFBADYCkAYCfgJAAkACQCAFQS5GIghFQQAgBUEwayIAQQlLG0UEQANAAkAgCEEBcQRAIAdFBEAgFyEWQQEhBwwCCyAGRSEIDAQLIBdCAXwhFyAEQfwPTARAIAMgF6cgBUEwRhshAyABQZAGaiAEQQJ0aiIGIAsEfyAFIAYoAgBBCmxqQTBrBSAACzYCAEEBIQZBACALQQFqIgAgAEEJRiIAGyELIAAgBGohBAwBCyAFQTBGDQAgASABKAKARkEBcjYCgEZB3I8BIQMLAn8gAigCBCIAIAIoAmhJBEAgAiAAQQFqNgIEIAAtAAAMAQsgAhBaCyIFQS5GIgggBUEwayIAQQpJcg0ACwsgFiAXIAcbIRYgBkUgBUFfcUHFAEdyRQRAIAIQ+gUiGUKAgICAgICAgIB/UgRAIBYgGXwhFgwECyACKAJoRQ0DIAIgAigCBEEBazYCBAwDCyAGRSEIIAVBAEgNAQsgAigCaEUNACACIAIoAgRBAWs2AgQLIAhFDQBBhKcEQRw2AgBCACEXIAIQqgRCAAwBCyABKAKQBiIARQRAIAEgDLdEAAAAAAAAAACiELUBIAEpAwAhFyABKQMIDAELIBYgF1IgF0IJVXIgD0EeTEEAIAAgD3YbckUEQCABQTBqIAwQgQEgAUEgaiAAEKICIAFBEGogASkDMCABKQM4IAEpAyAgASkDKBAyIAEpAxAhFyABKQMYDAELIBBBfm2tIBZTBEBBhKcEQcQANgIAIAFB4ABqIAwQgQEgAUHQAGogASkDYCABKQNoQn9C////////v///ABAyIAFBQGsgASkDUCABKQNYQn9C////////v///ABAyIAEpA0AhFyABKQNIDAELIBBB4gFrrCAWVQRAQYSnBEHEADYCACABQZABaiAMEIEBIAFBgAFqIAEpA5ABIAEpA5gBQgBCgICAgICAwAAQMiABQfAAaiABKQOAASABKQOIAUIAQoCAgICAgMAAEDIgASkDcCEXIAEpA3gMAQsgCwRAIAtBCEwEQCABQZAGaiAEQQJ0aiICKAIAIQADQCAAQQpsIQAgC0EBaiILQQlHDQALIAIgADYCAAsgBEEBaiEECwJAIAMgFqciB0ogA0EJTnIgB0ERSnINACAHQQlGBEAgAUHAAWogDBCBASABQbABaiABKAKQBhCiAiABQaABaiABKQPAASABKQPIASABKQOwASABKQO4ARAyIAEpA6ABIRcgASkDqAEMAgsgB0EITARAIAFBkAJqIAwQgQEgAUGAAmogASgCkAYQogIgAUHwAWogASkDkAIgASkDmAIgASkDgAIgASkDiAIQMiABQeABakEAIAdrQQJ0QdCjBGooAgAQgQEgAUHQAWogASkD8AEgASkD+AEgASkD4AEgASkD6AEQ9wUgASkD0AEhFyABKQPYAQwCCyAPIAdBfWxqQRtqIgJBHkxBACABKAKQBiIAIAJ2Gw0AIAFB4AJqIAwQgQEgAUHQAmogABCiAiABQcACaiABKQPgAiABKQPoAiABKQPQAiABKQPYAhAyIAFBsAJqIAdBAnRBiKMEaigCABCBASABQaACaiABKQPAAiABKQPIAiABKQOwAiABKQO4AhAyIAEpA6ACIRcgASkDqAIMAQsDQCABQZAGaiAEIgBBAWsiBEECdGooAgBFDQALQQAhCwJAIAdBCW8iBEUEQEEAIQQMAQsgBCAEQQlqIAdBf0obIRICQCAARQRAQQAhBEEAIQAMAQtBgJTr3ANBACASa0ECdEHQowRqKAIAIgltIQpBACEIQQAhBUEAIQQDQCABQZAGaiAFQQJ0aiICIAggAigCACIDIAluIgZqIgI2AgAgBEEBakH/D3EgBCACRSAEIAVGcSICGyEEIAdBCWsgByACGyEHIAogAyAGIAlsa2whCCAFQQFqIgUgAEcNAAsgCEUNACABQZAGaiAAQQJ0aiAINgIAIABBAWohAAsgByASa0EJaiEHCwNAIAFBkAZqIARB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BX0gBSAEGyEFDAELQoCAgICAgICAgH8hBSAAKAJoRQ0AIAAgACgCBEEBazYCBEKAgICAgICAgIB/DwsgBQu/AgEBfyMAQdAAayIEJAACQCADQYCAAU4EQCAEQSBqIAEgAkIAQoCAgICAgID//wAQMiAEKQMoIQIgBCkDICEBIANB//8BSARAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABAyIANB/f8CIANB/f8CSBtB/v8BayEDIAQpAxghAiAEKQMQIQEMAQsgA0GBgH9KDQAgBEFAayABIAJCAEKAgICAgIDAABAyIAQpA0ghAiAEKQNAIQEgA0GDgH5KBEAgA0H+/wBqIQMMAQsgBEEwaiABIAJCAEKAgICAgIDAABAyIANBhoB9IANBhoB9ShtB/P8BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhAyIAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHQAGokAAs1ACAAIAE3AwAgACACQv///////z+DIARCMIinQYCAAnEgAkIwiKdB//8BcXKtQjCGhDcDCAsQACAAQSBGIABBCWtBBUlyC9gBAQR/IAAoAlQhAwJAIAAoAhQgACgCHCIFayIGBEAgACAFNgIUIAAgBSAGEP4FIAZJDQELAkAgAygCEEHhAEcEQCADKAIAIQQMAQsgAyADKAIEIgQ2AgALIAMoAgwgBGogASADKAIIIARrIgEgAiABIAJJGyIEECMaIAMgAygCACAEaiIBNgIAIAEgAygCBE0NACADIAE2AgQgAygCCCICIAFLBEAgAygCDCABakEAOgAAIAQPCyAALQAAQQRxRSACRXINACACIAMoAgxqQQFrQQA6AAALIAQLuwIAAkAgAUEUSw0AAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4KAAECAwQFBgcICQoLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIB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QQBBAEETEKkFIQEgACAEEAoLIAZB0ABqJAAgAQsWACAAIAApA8ABIAMpAwBBA0F/EJkDCzsBAX8DQCACBEAgAC0AACEDIAAgAS0AADoAACABIAM6AAAgAUEBaiEBIABBAWohACACQQFrIQIMAQsLCxoAIAAtAAAhAiAAIAEtAAA6AAAgASACOgAAC0IBAX8gAkEBdiECA0AgAgRAIAAvAQAhAyAAIAEvAQA7AQAgASADOwEAIAFBAmohASAAQQJqIQAgAkEBayECDAELCwsaACAALwEAIQIgACABLwEAOwEAIAEgAjsBAAtCAQF/IAJBAnYhAgNAIAIEQCAAKAIAIQMgACABKAIANgIAIAEgAzYCACABQQRqIQEgAEEEaiEAIAJBAWshAgwBCwsLGgAgACgCACECIAAgASgCADYCACABIAI2AgALQgEBfiACQQN2IQIDQCACBEAgACkDACEDIAAgASkDADcDACABIAM3AwAgAUEIaiEBIABBCGohACACQQFrIQIMAQsLCxwBAX4gACkDACEDIAAgASkDADcDACABIAM3AwALWgECfiACQQR2IQIDQCACBEAgACkDACEDIAAgASkDADcDACAAKQMIIQQgACABKQMINwMIIAEgBDcDCCABIAM3AwAgAUEQaiEBIABBEGohACACQQFrIQIMAQsLCzQBAn4gACkDACEDIAAgASkDADcDACAAKQMIIQQgACABKQMINwMIIAEgBDcDCCABIAM3AwALmwMCA38CfiMAQSBrIgUkAEKAgICA4AAhCAJAIAAgAUEeEGgiB0UNACAAIAVBEGogAykDABDBAQ0AIAMpAwghASAFQQA2AhwCfgJAIARBG0wEQCAAIAVBHGogARDEAQ0DDAELIAAgBUEIaiABEEcNAiAEQRxGBEAgBSAFKwMItjgCHAwBCyAFKQMIDAELQgALIQFBASEGIAJBA04EQCAAIAMpAxAQ+AFBAXMhBgsgBygCDCgCICICLQAEBEAgABBwDAELIAc1AhQgBSkDECIJQQEgBEGZHmotAAB0rHxUBEAgAEGg2wEQaQwBCyAJpyACKAIIIAcoAhBqaiEAAkACQAJAAkACQAJAIARBFmsOCAQEAAABAQECAwsgBSgCHCEDIAYEQCAFIANB//8DcRDkAyIDNgIcCyAAIANB//8DcRCEAwwECyAFKAIcIQMgBgRAIAUgAxCDAyIDNgIcCyAAIAMQWwwDCyAAIAYEfiABEJMFBSABCzcAAAwCCxABAAsgACAFKAIcOgAAC0KAgICAMCEICyAFQSBqJAAgCAunAwIBfgN/IwBBEGsiByQAQoCAgIDgACEFAkAgACABQR4QaCIIRQ0AIAAgB0EIaiADKQMAEMEBDQBBASEGIAJBAk4EQCAAIAMpAwgQ+AFBAXMhBgsgCCgCDCgCICICLQAEBEAgABBwDAELIAg1AhQgBykDCCIBQQEgBEGZHmotAAB0rHxUBEAgAEGg2wEQaQwBCyABpyACKAIIIAgoAhBqaiEAAkACQAJAAkACQAJAAkACQAJAIARBFmsOCAgAAQIDBAUGBwsgADEAACEFDAgLIAAvAAAhACAGBH8gABDkAwUgAAtBEHRBEHWtIQUMBwsgAC8AACEAIAYEfyAAEOQDBSAAC60hBQwGCyAAKAAAIQAgBgR/IAAQgwMFIAALrSEFDAULIAAoAAAhAAJ/IAYEQCAAEIMDIQALIABBAE4LBEAgAK0hBQwFCyAAuBAVIQUMBAsgACgAACEAIAYEfyAAEIMDBSAAC767EBUhBQwDCyAAKQAAIQEgBgR+IAEQkwUFIAELvxAVIQUMAgsQAQALIAAwAABC/////w+DIQULIAdBEGokACAFC4ABAQN/IwBBEGsiBSQAIAUgAq03AwgCQCAAIAFBASAFQQhqEMUDIgEQCw0AIAJBACACQQBKGyECA0AgAiAERg0BIAAgASAEIAMgBEEDdGopAwAQDRCWAiEGIARBAWohBCAGQX9KDQALIAAgARAKQoCAgIDgACEBCyAFQRBqJAAgAQumBQIJfgJ/IwBBMGsiDSQAIAMpAwAhBUKAgICAMCEGIA1CgICAgDA3AxhBASEOAkACQAJAAkACfiACQQJIBEBCgICAgDAhCkKAgICAMAwBCwJAIAMpAwgiChAQDQAgACAKEGcNAkEAIQ4gAkEDSA0AIAMpAxAMAQtCgICAgDALIQsgACAFQcMBIAVBABASIgQQCw0AAkAgBBAQRQRAIAAgBBAKIAAQTiIHEAsEQEKAgICAMCEJQoCAgIAwIQQMBAsgDSAFEA03AxAgACANQRBqQQhyQQAQlwMhAiANKQMYIQkgDSkDECEEIAINA0IAIQUDQCAAIAQgCSANQQRqEKsBIggQC0UEQCANKAIEBEAgBCEIDAQLIAAgByAFIAgQbSECIAVCAXwhBSACQQBODQELCyAEEBANBCAAIARBARCvARoMAwtCgICAgDAhCUKAgICAMCEIQoCAgIAwIQQgACAFECkiBxALDQMLIAAgDUEIaiAHEEBBAEgEQCAIIQQMAgsgDQJ+IA0pAwgiBEKAgICACHxC/////w9YBEAgBEL/////D4MMAQsgBLkQFQsiBTcDICAAIAFBASANQSBqEMUDIQYgACAFEAoCQCAGEAsNAEIAIQUgBEIAIARCAFUbIQwDQCAFIAxRBEAgCCEEDAYLIAAgByAFEGIiBBALDQECQCAOBEAgBCEBDAELIA0gBDcDICANIAVC/////w+DNwMoIAAgCiALQQIgDUEgahAiIQEgACAEEAogARALDQILIAAgBiAFIAEQjwEhAiAFQgF8IQUgAkEATg0ACwsgCCEEDAILQoCAgIAwIQlCgICAgDAhBEKAgICAMCEHCwsgACAGEApCgICAgOAAIQYLIAAgBxAKIAAgBBAKIAAgCRAKIA1BMGokACAGCw8AIAArAwAgASsDABDHBAsJACABKwMAEBULVgEBfyABEBBFBEAgAEHJzABBABAUQoCAgIDgAA8LAn4CQCACRQ0AIAMpAwAiARAQDQBCgICAgOAAIAAgARArIgEQCw0BGiABpyEECyAAIARBAxD2AwsLEQAgACoCALsgASoCALsQxwQLCgAgASoCALsQFQsXACABKAIAIgEgACgCACIASSAAIAFJawsYACABKAIAIgBBAE4EQCAArQ8LIAC4EBULFwAgASgCACIBIAAoAgAiAEggACABSGsLBwAgATUCAAsNACAALwEAIAEvAQBrCwcAIAEzAQALDQAgAC4BACABLgEAawsOACABMgEAQv////8PgwsNACAALQAAIAEtAABrCwcAIAExAAALDQAgACwAACABLAAAawsOACABMAAAQv////8PgwvhCQQEfwF8AX4BfSMAQRBrIgYkAEKAgICA4AAhCgJAIAAgARCWASIIQQBIDQBBfyEFAkACQAJAIAhFDQBBASEHAkACQCAEQQFGBEBBfyEHIAYgCEEBazYCDCACQQJIDQEgACAGIAMpAwgQRw0GIAYrAwAiCb1C////////////AINCgYCAgICAgPj/AFoEQCAGQQA2AgwMAgsgCUQAAAAA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CGoQwAIhASACQQE2AgAgARALBEAgACACEMADIAEPCyACKAJEQQhrIgMpAwAhBiADQoCAgIAwNwMAIAFC/////w9YBEAgAadBAkYEQCACQQI2AgAgBEECNgIAIAYPCyAEQQA2AgAgBg8LIAAgARAKIAAgAhDAAyAGDwsgAykDABANDwsgACADKQMAEA0QkgEMAQsgAEHgzwFBABAUC0KAgICA4AAhAQsgAQtmAQF+IAMpAwAiARD3A0UEQCAAQeTJAEEAEBRCgICAgOAADwtCgICAgDAhBCABpykCBEKAgICAgICAgECDQoCAgICAgICAgH9RBH4gAUL/////D4NCgICAgJB/hBANBUKAgICAMAsLLwEBfkKAgICA4AAhASAAIAMpAwAQKyIEEAsEfkKAgICA4AAFIAAgBKdBAhD2AwsLSQIBfgF/IAAgARDBAyIBEAsEQCABDwtCgICAgDAhAiABpyIDKAIEQYCAgIB4RwRAIAAgACgCECADENMCEDEhAgsgACABEAogAgsJACAAIAEQwQMLTgEBfiMAQRBrIgIkACACIAAgARDBAyIBNwMIAkAgARALBEAgASEEDAELIABCgICAgDBBASACQQhqEMgEIQQgACABEAoLIAJBEGokACAECy0AQoCAgIDgACAAIAMpAwAgAykDCEEAEJsCIgBBAEetQoCAgIAQhCAAQQBIGwuGAQEDfiADKQMAIgEhBCACQQROBEAgAykDGCEECyABQv////9vWARAIAAQKEKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQOSICRQ0AIAAgASACIAYQDSAEQQAQiAQhAyAAIAIQESADQQBIDQAgA0EAR61CgICAgBCEIQULIAULKgAgAykDACIBQv////9vWARAIAAQKEKAgICA4AAPCyAAIAFBA0EAEP8CC2MBAX4gAykDACIEQv////9vWARAIAAQKEKAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBA5IgJFDQAgACAEIAIQdyEDIAAgAhARIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQtjAQJ+AkACQCADKQMAIgFC/////29YBEAgABAoDAELIAMpAwghBSABIQQgAkEDTgRAIAMpAxAhBAsgACAFEDkiAg0BC0KAgICA4AAPCyAAIAEgAiAEQQAQEiEBIAAgAhARIAELZgEBfiADKQMAIgRC/////29YBEAgABAoQoCAgIDgAA8LQoCAgIDgACEBAkAgACADKQMIEDkiAkUNACAAIAQgAkEAEN0BIQMgACACEBEgA0EASA0AIANBAEetQoCAgIAQhCEBCyABC4sBAgF/An4jAEEQayIEJAAgAykDCCEFIAMpAwAiBiEBAkACQAJAAkAgAkEDSA0AIAMpAxAiARCxAQ0AIABBycwAQQAQFAwBCyAAIARBDGogBRCLBCICDQELQoCAgIDgACEBDAELIAAgBiABIAQoAgwiAyACEI4DIQEgACACIAMQmAMLIARBEGokACABCxwAIAAgAykDAEEAIAJBAWsQSiADQQhqQQIQmgMLQwAjAEEQayICJAACfkKAgICA4AAgACACQQxqIAMpAwAQxAENABpCICACKAIMIgBFDQAaIABnrQshASACQRBqJAAgAQtQACMAQRBrIgIkAEKAgICA4AAhAQJAIAAgAkEMaiADKQMAEJMCDQAgACACQQhqIAMpAwgQkwINACACKAIIIAIoAgxsrSEBCyACQRBqJAAgAQsGACAAtrsLUwACfCAAIAApA9ABIgFCDIggAYUiAUIZhiABhSIBQhuIIAGFIgE3A9ABIAFCnbqz+5SS/aIlfkIMiEKAgICAgICA+D+Ev0QAAAAAAADwv6ALEBUL9QMDA3wFfwN+IwBBEGsiCCQAIAhCADcDCAJAAkAgAkEBSA0AQoCAgIDgACEBIAAgCEEIaiADKQMAEEcNAUEBIQkgCCsDCCEEIAJBAUcEQANAIAIgCUYNAiAAIAggAyAJQQN0aikDABBHDQMgCUEBaiEJIAgrAwAhBSMAQSBrIgckACAEvUL///////////8AgyINIAW9Qv///////////wCDIgwgDCANVhsiDr8hBAJAIA5CNIinIgpB/w9GDQAgDSAMIAwgDVQbIgy/IQUCQCAOUA0AIAxCNIinIgtB/w9GDQAgCyAKa0HBAE4EQCAFIASgIQQMAgsCfCALQf4LTwRAIAREAAAAAAAAMBSiIQQgBUQAAAAAAAAwFKIhBUQAAAAAAACwawwBC0QAAAAAAADwPyAKQbwESw0AGiAERAAAAAAAALBroiEEIAVEAAAAAAAAsGuiIQVEAAAAAAAAMBQLIQYgB0EYaiAHQRBqIAUQhgYgB0EIaiAHIAQQhgYgBiAHKwMAIAcrAxCgIAcrAwigIAcrAxign6IhBAwBCyAFIQQLIAdBIGokAAwACwALIASZIQQLIAS9An8gBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLIgC3vVEEQCAArSEBDAELIAQQFSEBCyAIQRBqJAAgAQtbAQF/AkAgAL1C////////////AINCgICAgICAgPj/AFYgAEQAAAAAAAAAAGFyDQAgAEQAAAAAAAAAAGMhAUQAAAAAAADwvyEAIAENAEQAAAAAAADwPyEACyAAC4MBAgJ+AX8gAL0iAUI0iKdB/w9xIgNB/gdNBEAgAUKAgICAgICAgIB/gyECIANB/gdHIAFCgICAgICAgPC/f1FyRQRAIAJCgICAgICAgPg/hL8PCyACvw8LIANBsghNBHwgAUI/hyABfEIBQbMIIANrrYYiAUIBiHxCACABfYO/BSAACwvjBAICfAV/IwBBEGsiCCQAAn4gAkUEQEQAAAAAAADw/0QAAAAAAADwfyAEGxAVDAELAnwgAykDACIBQv////8PWARAIAJBASACQQFKGyELIAGnIQlBASEHA0AgByALRwRAIAm3IAMgB0EDdGopAwAiAUKAgICAEFoNAxogAachCgJ/IAQEQCAJIAoQSgwBCyAJIAoQsAELIQkgB0EBaiEHDAELCyAJrQwCC0KAgICA4AAgACAIQQhqIAEQRw0BGkEBIQcgCCsDCAshBSAHIAIgAiAHSBshAgNAIAIgB0cEQEKAgICA4AAgACAIIAMgB0EDdGopAwAQRw0CGgJAIAW9Qv///////////wCDQoCAgICAgID4/wBWDQAgCCsDACIGvUL///////////8Ag0KAgICAgICA+P8AVgRAIAYhBQwBCyAEBEAgBb1C////////////AINCgICAgICAgPj/AFgEfCAFIAUgBqUgBr1C////////////AINCgICAgICAgPj/AFYbBSAGCyAGvSAFvYO/IAVEAAAAAAAAAABiIAZEAAAAAAAAAABichshBQwBCyAFvUL///////////8Ag0KAgICAgICA+P8AWAR8IAUgBSAGpCAGvUL///////////8Ag0KAgICAgICA+P8AVhsFIAYLIAa9IAW9hL8gBUQAAAAAAAAAAGIgBkQAAAAAAAAAAGJyGyEFCyAHQQFqIQcMAQsL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QANAIANBAUgNAiAFQQhqIAZBACADIAYoAgRB/////wdxELABIgIQVw0DIAUgAyACayIDNgIEDAALAAsgBUEIaiAKIAMQywQNAQsgBEUEQCAFQQhqIAlBACAIEFcNAQsgACALEAogACABEAogBUEIahA3IQwMBAsgBUEIahBECyAAIAsQCgsgACABEAoMAQsgASEMCyAFQSBqJAAgDAv3BAIEfgV/IwBB0ABrIgIkACADKQMIIQggAykDACEFAkACQAJAIAEQEEUEQCABECZFDQELIABBk84AQQAQFAwBCwJAIAUQEA0AIAUQJg0AIAQEQCAAIAUQzQRBAEgNAgtCgICAgOAAIQYgACAFQcYBIAVBABASIgcQCw0CIAcQEA0AIAcQJg0AIAIgCDcDKCACIAE3AyAgACAHIAVBAiACQSBqEDUhBgwCCyAAIAJBCGpBABBCGkKAgICAMCEHAkAgACABECsiBhALBEBCgICAgDAhBQwBCyAAIAUQKyIFEAsNACAAIAgQOiINRQRAIAAgCBArIgcQCw0BCyAGpyEKIAWnIgwpAgQhAQNAAkACQCABQv////8Hg1AEQEEAIQMgC0UNASAJIAooAgRB/////wdxTg0CIAlBAWohAwwBCyAKIAwgCRDMBCIDQX9KDQAgCw0BIAJBCGoQRCAAIAUQCiAAIAcQCgwFCyACIAU3AyACfiANBEAgAiAGNwMwIAIgA603AyggACAAIAhCgICAgDBBAyACQSBqECIQPgwBCyACIAc3A0ggAkKAgICAMDcDQCACQoCAgIAwNwM4IAIgBjcDKCACIAOtNwMwIAAgAkEgahCQBQsiARALDQIgAkEIaiAKIAkgAxBXGiACQQhqIAEQjQEaIAwpAgQiAadB/////wdxIANqIQlBASELIAQNAQsLIAJBCGogCiAJIAooAgRB/////wdxEFcaIAAgBRAKIAAgBxAKIAAgBhAKIAJBCGoQNyEGDAILIAJBCGoQRCAAIAUQCiAAIAcQCiAAIAYQCgtCgICAgOAAIQYLIAJB0ABqJAAgBguDAgIDfwF+IwBBIGsiAiQAAkACQCAAIAEQYSIBEAsNACAAIAIgAykDABCOBA0AIAIpAwAiB0KAgICACFoEQCAAQaTCARBpDAELIAenIgNBAUYNASABpyIFKQIEpyIGQf////8HcSIERQ0BIAcgBK1+QoCAgIAEWQRAIABB9A1BABBBDAELIAAgAkEIaiADIARsIAZBH3YQqgMNAAJAIARBAUcEQANAIANBAUgNAiACQQhqIAVBACAEEFcaIANBAWshAwwACwALIAJBCGogBUEAEC8gAxDLBBoLIAAgARAKIAJBCGoQNyEBDAELIAAgARAKQoCAgIDgACEBCyACQSBqJAAgAQulAQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3EiBCAEEGMNACACIAQ2AgggAykDCCIHEBBFBEAgACACQQhqIAcgBCAEEGMNASACKAIIIQQLIAAgBSACKAIMIgMgBCADEEoQmgEhBgsgACABEAoLIAJBEGokACAGC6cBAgN/An4jAEEQayICJAACQCAAIAEQYSIBEAsEQCABIQcMAQtCgICAgOAAIQcCQCAAIAJBDGogAykDACABpyIGKAIEQf////8HcSIEIAQQYw0AIAIgBCACKAIMIgVrIgQ2AgggACAGIAUgAykDCCIIEBAEfyAEBSAAIAJBCGogCCAEQQAQYw0BIAIoAggLIAVqEJoBIQcLIAAgARAKCyACQRBqJAAgBwu6AQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3FBABBjDQAgAiAFKAIEQf////8HcSIENgIIIAMpAwgiBxAQRQRAIAAgAkEIaiAHIARBABBjDQEgAigCCCEECyAAIAUgAigCDCIDIAQgAyAESCIFGyAEIAMgBRsQmgEhBgsgACABEAoLIAJBEGokACAGC5gEAgl+A38jAEEQayINJAAgAykDCCEHIAMpAwAhBAJAAkACQCABEBBFBEAgARAmRQ0BCyAAQZPOAEEAEBQMAQsCQCAEEBAiAg0AIAQQJg0AQoCAgIDgACEFIAAgBEHIASAEQQAQEiIIEAsNAiAIEBANACAIECYNACANIAc3AwggDSABNwMAIAAgCCAEQQIgDRA1IQUMAgtCgICAgDAhCQJAIAAgARArIgwQCwRAQoCAgIAwIQUMAQsgABBOIgUQCw0AAkAgBxAQBEAgDUF/NgIADAELIAAgDSAHEMQBQQBIDQELIAynIg4pAgQhASAAIAQQKyIJEAsNAAJAIA0oAgAiA0UNACABp0H/////B3EhDyAAIA4CfwJAIAINACAJpyICKQIEQv////8HgyEKAkAgDwRAIAFC/////weDIAp9IApQrSIEfSEHIAOtIQgDQCAEIAt8IgEgB1UNAiAOIAIgAacQzAQiA0EASA0CIAAgDiALpyADEJoBIgEQCw0GIAAgBSAGIAFBABCqAUEASA0GIAogA6x8IQsgBkIBfCIGIAhSDQALDAQLIApQRQ0BDAMLIAZC/////w+DIQYgC6cMAQtBAAsgDxCaASIBEAsNASAAIAUgBiABQQAQqgFBAEgNAQsgACAMEAogACAJEAoMAgsgACAFEAogACAMEAogACAJEAoLQoCAgIDgACEFCyANQRBqJAAgBQvTAgEDfiMAQTBrIgIkACACIAE3AyggAykDACEFAkACQCABEBBFBEAgARAmRQ0BCyAAQZPOAEEAEBRCgICAgOAAIQcMAQsCQCAFEBANACAFECYNAEKAgICA4AAhByAAIAUgBCAFQQAQEiIGEAsNAQJAIARBxQFHDQAgACAFEM0EQX9KDQAgACAGEAoMAgsgBhAQDQAgBhAmDQAgACAGIAVBASACQShqEDUhBwwBCyACIAAgARArIgY3AwhCgICAgOAAIQcgBhALDQAgAiAFNwMQAkACQAJ/IARBxQFHBEBCgICAgDAhAUEBDAELIABBhMIBEHEiARALDQEgAiABNwMYQQILIQMgACAAKQNIIAMgAkEQahCuASEFIAAgARAKIAUQC0UNAQsgACAGEAoMAQsgACAFIARBASACQQhqELkCIQcgACACKQMIEAoLIAJBMGokACAHC/kCAgV/A34jAEEQayIFJAACQCAAIAEQYSIKEAsEQCAKIQEMAQsCQCAAIAMpAwAQgwQiBgRAQoCAgIDgACEBQoCAgIAwIQsgBkEBSA0BIABB8MEBQQAQFAwBC0KAgICA4AAhASAAIAMpAwAQKyILEAsNACALpyIHKAIEIQggBSAKpyIJKAIEQf////8HcSIGQQAgBEECRhs2AgwCQCACQQJIDQAgAykDCCIMEBANACAAIAVBDGogDCAGQQAQYw0BCyAGIAhB/////wdxIgZrIQICQAJAAkACQCAEDgIAAQILIAUoAgwhAwwCCyAFKAIMIgMgAkoh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IQQgACABECkiARALRQRAAn5CgICAgOAAIAAgAUHbACABQQAQEiIEEAsNABogACAEEDpFBEAgACAEEAogACABQQBBABDXBAwBCyAAIAQgAUEAQQAQNQshBCAAIAEQCgsgBAvWAgICfwR+IwBBIGsiBSQAAn4CQCAAIAUgACABECkiCRBADQBBLCEGQoCAgIAwIQgCQCACQQFIIARyRQRAQQAhAiADKQMAIgEQEA0BIAAgARArIggQCw0CQX8hBiAIpyICKAIEQQFHDQEgAi0AECEGDAELQQAhAgsgACAFQQhqQQAQQhpCACEBIAUpAwAiB0IAIAdCAFUbIQoCQANAIAEgClIEQAJAIAFQDQAgBkEATgRAIAVBCGogBhA7GgwBCyAFQQhqIAJBACACKAIEQf////8HcRBXGgsgACAJIAGnEHgiBxALDQICQCAHECYNACAHEBANACAFQQhqIAQEfiAAIAcQ1QQFIAcLEI0BDQMLIAFCAXwhAQwBCwsgACAIEAogACAJEAogBUEIahA3DAILIAVBCGoQRCAAIAgQCgsgACAJEApCgICAgOAACyEBIAVBIGokACABC/MBAgF/An4jAEEgayIEJAACfgJAAkACQCAAIARBEGogACABECkiBRBADQAgBCkDECIGQgFTDQEgBCAGQgF9IgE3AwggAkECTgRAIAAgBEEIaiADKQMIQn8gASAGEH4NASAEKQMIIQELA0AgAUIAUw0CIAAgBSABIARBGGoQiQEiAkEASA0BIAIEQCAAIAMpAwAQDSAEKQMYQQAQ3gENBAsgAUIBfSEBDAALAAsgACAFEApCgICAgOAADAILQn8hAQsgACAFEAogAUL/////D4MgAUKAgICACHxC/////w9YDQAaIAG5EBULIQEgBEEgaiQAIAEL9QICAX8EfiMAQSBrIgQkAAJ+AkACQCAAIARBEGogACABECkiBxBADQBCfyEGIAQpAxAiCEIBUw0BIARCADcDCCACQQJOBEAgACAEQQhqIAMpAwhCACAIIAgQfg0BCwJAIAcgBEEEaiAEEI4CRQRAIAQpAwghAQwBCyAEKQMIIgUgBDUCACIBIAEgBVMbIQEgBCgCBCECA0AgASAFUgRAIAAgAykDABANIAIgBadBA3RqKQMAEA1BABDeAQRAIAUhBgwFBSAFQgF8IQUMAgsACwsgBCABNwMICyABIAggASAIVRshBQNAIAEgBVENAiAAIAcgASAEQRhqEIkBIgJBAEgNAQJAIAJFDQAgACADKQMAEA0gBCkDGEEAEN4BRQ0AIAEhBgwDCyABQgF8IQEMAAsACyAAIAcQCkKAgICA4AAMAQsgACAHEAogBkL/////D4MgBkKAgICACHxC/////w9YDQAaIAa5EBULIQEgBEEgaiQAIAEL3AICCH4BfyMAQTBrIg0kAEKAgICAMCEGAkACQCAAIA1BCGogACABECkiBxBABEBCgICAgDAhBQwBC0KAgICAMCEFIAAgAykDACIKEGcNAEKAgICAMCEJIAJBAk4EQCADKQMIIQkLIA0pAwgiBUIAIAVCAFUbIQsDQCAIIAtSBEACfiAIIgVCgICAgAhaBEAgCLkQFSEFCyAFCxALDQIgACAHIAUQngEiBhALDQIgDSABNwMgIA0gBTcDGCANIAY3AxAgACAKIAlBAyANQRBqECIiDBALDQIgACAMECwEQCAEBEAgACAGEAogACAHEAoMBQsgACAFEAogACAHEAogBiEFDAQFIAAgBhAKIAAgBRAKIAhCAXwhCAwCCwALCyAAIAcQCkL/////D0KAgICAMCAEGyEFDAELIAAgBRAKIAAgBhAKIAAgBxAKQoCAgIDgACEFCyANQTBqJAAgBQv1AQIBfwJ+IwBBIGsiBCQAAkACQCAAIARBGGogACABECkiBhBADQAgBEIANwMQAkAgAkEBTARAIAQgBCkDGCIFNwMIDAELIAQpAxghBSADKQMIIgEQEEUEQCAAIARBEGogAUIAIAUgBRB+DQILIAQgBTcDCCACQQNIDQAgAykDECIBEBANACAAIARBCGogAUIAIAUgBRB+DQEgBCkDCCEFCyAEKQMQIgEgBSABIAVVGyEFA0AgASAFUQ0CIAAgBiABIAMpAwAQDRCPASECIAFCAXwhASACQX9KDQALCyAAIAYQCkKAgICA4AAhBgsgBEEgaiQAIAYL0gQCA38IfiMAQUBqIgUkAEKAgICAMCEKIAVCgICAgDA3AzggBUKAgICAMDcDMAJAAkACQCAEQQhxIgYEQCAFIAAgARANIgsQlgEiB6w3AwggB0EATg0BDAILIAAgBUEIaiAAIAEQKSILEEANAQsgACADKQMAIg0QZw0AAkAgAkEBTARAQgAhASAFKQMI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BgRAQoCAgIAwIQUgAi0AAEEQcQRAIAJBGGogAkEQaiAEGykDABANIQULIAAgAhBNDAMLIAAgARCZAiIBEAsNAiABECYEQEKAgICAMCEFDAMLIAAQf0UNAAsMAQtBACEDCyAAIAMQESAAIAEQCiACQSBqJAAgBQuVAQECfiADKQMIIQUgAykDACEGAkAgACABECkiARALRQRAIAAgBRBnRQRAIAAgBhA5IgINAgsgACABEAoLQoCAgIDgAA8LIAAgASACQoCAgIAwQoCAgIAwIAUgBBsgBUKAgICAMCAEG0GFqgFBhZoBIAQbEHUhAyAAIAEQCiAAIAIQEUKAgICA4ABCgICAgDAgA0EASBsLUgACQCABEBBFBEAgARAmRQ0BCyAAEChCgICAgOAADwsCQCACECANACACECYNAEKAgICAMA8LQoCAgIDgAEKAgICAMCAAIAEgAkEBEJsCQQBIGwslAQF+IAAgARApIgEQCwRAIAEPCyAAIAEQ+wEhAiAAIAEQCiACC5MBAgF+AX8jAEEgayICJABCgICAgOAAIQQCQAJAIAAgARApIgEQCw0AIAAgAykDABA5IgNFDQAgACACIAGnIAMQUyIFQQBIDQEgBUUEQEKAgICAECEEDAILIAI1AgAhBCAAIAIQTSAEQgKIQgGDQoCAgIAQhCEEDAELQQAhAwsgACADEBEgACABEAogAkEgaiQAIAQLhwEBAn4gAykDACIFECBFBEBCgICAgBAPCwJAIAAgARApIgQQC0UEQCAEpyECIAUQDSEBA0AgACABEJkCIgEQC0UEQCABECYiAyACIAGnRnINAyAAEH9FDQELCyAAIAEQCiAAIAQQCgtCgICAgOAADwsgACABEAogACAEEAogA0WtQoCAgIAQhAtlAQF+QoCAgIDgACEEAkAgACADKQMAEDkiAkUNACAAIAEQKSIBEAsEQCAAIAIQESABDwsgAEEAIAGnIAIQUyEDIAAgAhARIAAgARAKIANBAEgNACADQQBHrUKAgICAEIQhBAsgBAsIACAAIAEQKQsPACAAIAFBN0EAQQAQwwILnAIBBX4jAEEQayICJAAgAykDACEFAkAgABA9IgEQCwRAIAEhBQwBC0KAgICAMCEHAkACQCAAIAVBABD1ASIEEAsNACAAIARB6gAgBEEAEBIiBxALDQADQCAAIAQgByACQQxqEKsBIgYQCw0BIAIoAgwEQCABIQUMAwsCQAJAIAYQIEUEQCAAECgMAQsgACAGQQAQeCIIEAsNACAAIAZBARB4IgUQCwRAIAAgCBAKDAELIAAgASAIIAVBh4ABEMoCQX9KDQELIAAgBhAKDAILIAAgBhAKDAALAAtCgICAgOAAIQUgBBAgBEAgACAEQQEQrwEaCyAHIQYgBCEHIAEhBAsgACAGEAogACAHEAogACAEEAoLIAJBEGokACAFC0AAAn4CQCABEKgDIgJFDQAgAi0AEEEBcQ0AQoCAgIAwIAItABFBAXENARoLIAAgAUEAQQAQ3AQaQoCAgIDgAAsLSABBLyECIAAgAykDACIBEFRBf0YEfyABpy8BBiICQSlGBEBBDUEpIAAgARA6GyECCyAAKAIQKAJEIAJBGGxqKAIEBUEvCxAxC/MBAgR/AX4jAEEwayICJAACQCADKQMAIgkQIEUEQEKBgICAECEBDAELQoCAgIDgACEBIAAgAkEsaiACQShqIAmnIghBAxCQAQ0AIAIoAiwhBiACKAIoIQdBACEDAkADQCADIAdHBEAgACACQQhqIAggBiADQQN0aigCBBBTIgVBAEgNAgJAIAVFDQAgACACQQhqEE0gAigCCCIFQQFxRUEAIARFIAVBAnFFchsNAEKAgICAECEBDAMLIANBAWohAwwBCwsgACAJEJ8BIgNBAEgNASADQQFHrUKAgICAEIQhAQsgACAGIAcQZAsgAkEwaiQAIAELnQECAX4Bf0KAgICAMCEBAkACQCAAIAMpAwAQKSIEEAsNACACQQEgAkEBShshBUEBIQIDQCACIAVGDQICQCADIAJBA3RqKQMAIgEQJg0AIAEQEA0AIAAgARApIgEQCw0CIAAgBCABQoCAgIAwQQEQxgUNAiAAIAEQCgsgAkEBaiECDAALAAsgACAEEAogACABEApCgICAgOAAIQQLIAQLGwAgACADKQMAIAMpAwgQWEEAR61CgICAgBCEC5sCAgN+A38jAEEgayICJABCgICAgOAAIQQgACADKQMAECkiBRALRQRAQoCAgIAwIQECfgJAIAAgAkEcaiACQRhqIAWnQQMQkAENACAAED0iARALDQAgAigCHCEHIAIoAhghCEEAIQMDQCADIAhHBEAgACAHIANBA3RqIgkoAgQQXiIGEAsNAiACIAY3AwggAiAFNwMAIABCgICAgDBBAiACQQAQ2AQhBCAAIAYQCiAEEAsNAiAEEBBFBEAgACABIAkoAgQgBEGHgAEQGUF/TA0DCyADQQFqIQMMAQsLIAAgByAIEGQgAQwBCyAAIAIoAhwgAigCGBBkIAAgBRAKIAEhBUKAgICA4AALIQQgACAFEAoLIAJBIGokACAEC20AAn4CQCADKQMAIgFC/////29YBEAgBEUNASAAEChCgICAgOAADwtCgICAgOAAIAAgARCZBCICQQBIDQEaIAQEQCACQQBHrUKAgICAEIQPCyACDQAgAEGrnAFBABAUQoCAgIDgAA8LIAEQDQsLTwACQAJAIAMpAwAiAUL/////b1gEQCAERQRAQoCAgIAQDwsgABAoDAELIAAgARCfASIAQQBODQELQoCAgIDgAA8LIABBAEetQoCAgIAQhAsQACAAIAMpAwBBAkEAEP8CCxAAIAAgAykDAEEBQQAQ/wILLQEBfkKAgICA4AAhASAAIAMpAwAiBCADKQMIENoEBH5CgICAgOAABSAEEA0LC30BAn4gAykDACIBQv////9vWARAIAAQKEKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQOSICRQ0AIAAgASACIAYgBEVBDnQQ2QQhAyAAIAIQESADQQBIDQAgBARAIANBAEetQoCAgIAQhA8LIAEQDSEFCyAFCycAIAAgAykDACIBIAMpAwhBARCbAkEASARAQoCAgIDgAA8LIAEQDQs4ACADKQMAIgFCIIinIgJBf0YgBEVBACACQX5xQQJHG3JFBEAgABAoQoCAgIDgAA8LIAAgARD7AQtiAQF+AkAgAykDACIBECANACABECYNACAAQcChAUEAEBRCgICAgOAADwsCQCAAIAEQUiIBEAtFBEAgAykDCCIEEBANASAAIAEgBBDaBEUNASAAIAEQCgtCgICAgOAADwsgAQu4AQECfiABECBFBEAgABAoQoCAgIDgAA8LQoCAgIDgACEFAn4gACABQTYgAUEAEBIiBBAQBEAgAEGOARAxDAELIAAgBBA+CyIEEAsEfkKAgICA4AAFAn4gACABQTMgAUEAEBIiARAQBEAgAEEvEDEMAQsgACABED4LIgEQCwRAIAAgBBAKQoCAgIDgAA8LAkAgBBD2AQ0AIAEQ9gENACAAQb4V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BUEIaiADIAJBH3YQqgMaIAcoAgRB/////wdxIQhBACEAA0ACQAJAIAAgCEgEQCAAQQFqIQJBfyEGAkACfwJAAkACQAJAAkACQAJAIAcgABAvIgNB2wBrDgMDAQIACyACIQACQCADQQprDgQECwsFAAsgA0EvRw0HIARFDQVBASEEQS8hAwwHC0HcACEDIAIgCE4NBiAAQQJqIQAgByACEC8hBgwJC0EAIQRB3QAhAwwFC0HbACEDIAQgAiAITnINBiAAQQJqIAIgByACEC9B3QBGIgIbIQBB3QBBfyACGyEGQQEhBAwHC0HuAAwCC0HyAAwBC0EAIQRBLwshBkHcACEDCyACIQAMAgsgBUEIahA3IQEMAwsgAiEAQQEhBAsgBUEIaiADEJQBGiAGQQBIDQAgBUEIaiAGEJQBGgwACwALIAVBIGokACABC9gCAgN/AX4jAEEQayIEJAACQCABQv////9vWARAIAAQKEKAgICA4AAhBQwBC0KAgICA4AAhBSAAIAAgAUHuACABQQAQEhAsIgJBAEgNACACBH8gBEHnADoACCAEQQlqBSAEQQhqCyECIAAgACABQZ/PABDMAhAsIgNBAEgNACADBEAgAkHpADoAACACQQFqIQILIAAgACABQarPABDMAhAsIgNBAEgNACADBEAgAkHtADoAACACQQFqIQILIAAgACABQbTPABDMAhAsIgNBAEgNACADBEAgAkHzADoAACACQQFqIQILIAAgACABQe8AIAFBABASECwiA0EASA0AIAMEQCACQfUAOgAAIAJBAWohAgsgACAAIAFBw88AEMwCECwiA0EASA0AIAAgBEEIaiADBH8gAkH5ADoAACACQQFqBSACCyAEQQhqaxD+ASEFCyAEQRBqJAAgBQv6CgIRfwF+IwBBEGsiByQAAkAgACABEGEiARALDQAjAEEQayIFJABBfyEEAkAgACIGIAEQKyIVEAsNACAGIBWnIgooAgRB/////wdxIgBBARBKQQJ0EC0iCUUEQCAGIBUQCiAHQQA2AggMAQtBACEEIAVBADYCDCAAQQBHIQsDQCALBEAgCSAEQQJ0aiAKIAVBDGoQ2QE2AgAgBEEBaiEEIAUoAgwgAEghCwwBCwsgBiAVEAogByAJNgIICyAFQRBqJAAgBiABEApCgICAgOAAIQEgBCIAQQBIDQACQCAC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CyACRQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQwDC0EAIAAoAgggACgCBCACakkNARogASACEPUFDwsgACACEKUFCw8LQQALJgAgAQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQsLKAEBfwJAIAGnKAIgIgNFDQAgAygCAEEERg0AIAAgA0EIaiACEPADCwscAQF/IAFBKBA/IgIEQCAAIAIQ7gMgACACEB8LCyUBAX8gAacoAiAiAwRAIAAgAykDACACECEgACADKQMIIAIQIQsLJwEBfyABpygCICICBEAgACACKQMAECUgACACKQMIECUgACACEB8LCx4BAX8gAacoAiAiAgRAIAAgAikDABAlIAAgAhAfCwtDAQJ/IAGnKAIgIgIEQAJAIAIpAwAiARDeBUUNACACKAIMIgNFDQAgACADEPIDIAIpAwAhAQsgACABECUgACACEB8LC1gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNASAEKAIARQRAIAAgAykDECACECELIAAgAykDGCACECEgA0EEaiEDDAALAAsLgQEBBX8gAacoAiAiAwRAIANBBGohBSADKAIIIQIDQCACIAVHBEAgAigCBCEGIAJBEGshBCACQQxrKAIARQRAAkAgAygCAARAIAQQpgUMAQsgACACKQMQECULIAAgAikDGBAlCyAAIAQQHyAGIQIMAQsLIAAgAygCEBAfIAAgAxAfCwshAQF/IAGnKAIgIgMEQCAAIAM1AgxCgICAgHCEIAIQIQsLQAEBfyABpygCICICBEAgACACNQIMQoCAgIBwhCIBEN4FBH4gAhBGIAI1AgxCgICAgHCEBSABCxAlIAAgAhAfCwtbAQJ/IAGnKAIgIgIEQAJAAkAgAi0ABUUNACAAKAK8ASIDRQ0AIAAoAsQBIAIoAgggAxEDAAwBCyACKAIYIgNFDQAgACACKAIUIAIoAgggAxEGAAsgACACEB8LCykBAX8gACABpyICNQIkQoCAgICQf4QQJSAAIAI1AiBCgICAgJB/hBAlCxEAIAAgAacoAiApAwAgAhAhCxkBAX8gACABpygCICICKQMAECUgACACEB8LQQEDfwJAIAFBDxA/IgRFDQAgBEEIaiEFA0AgAyAELQAFTw0BIAAgBSADQQN0aikDACACECEgA0EBaiEDDAALAAsLQwEDfyABQQ8QPyIDBEAgA0EIaiEEA0AgAiADLQAFT0UEQCAAIAQgAkEDdGopAwAQJSACQQFqIQIMAQsLIAAgAxAfCwtJAQJ/IAAgAacoAiAiBCkDACACECEgACAEKQMIIAIQIQNAIAMgBCgCEE5FBEAgACAEIANBA3RqKQMYIAIQISADQQFqIQMMAQsLC0kBAn8gACABpygCICICKQMAECUgACACKQMIECUDQCADIAIoAhBORQRAIAAgAiADQQN0aikDGBAlIANBAWohAwwBCwsgACACEB8LjgEBBH8gAaciAygCJCEFIAMoAiAhBCADKAIoIgMEQCAAIAOtQoCAgIBwhCACECELIAQEQAJAIAVFDQBBACEDA0AgAyAEKAI8Tg0BAkAgBSADQQJ0aigCACIGRQ0AIAYtAAVBAXFFDQAgACAGIAIRAwALIANBAWohAwwACwALIAAgBK1CgICAgGCEIAIQIQsLcwEDfyABpyICKAIoIgMEQCAAIAOtQoCAgIBwhBAlCyACKAIgIgMEQCACKAIkIgQEQEEAIQIDQCACIAMoAjxORQRAIAAgBCACQQJ0aigCABD5ASACQQFqIQIMAQsLIAAgBBAfCyAAIAOtQoCAgIBghBAlCwsSACABpygCICIABEAgABCtAwsLDgAgACABpykDICACECELGQAgACABpyIAKQMgECUgAEKAgICAMDcDIAs1AQJ/IAGnIQQDQCADIAQoAihPRQRAIAAgBCgCJCADQQN0aikDACACECEgA0EBaiEDDAELCws8AQJ/IAGnIQMDQCACIAMoAihPRQRAIAAgAygCJCACQQN0aikDABAlIAJBAWohAgwBCwsgACADKAIkEB8LCAAgACACEB8LtwECAX8CfiMAQSBrIgMkACABQQNGBEAgAikDECEEIAIpAwghBQJAIAAgA0EQaiACKQMAEKwFQQBIBEBCgICAgOAAIQQMAQsgACAEIAVBAiADQRBqECIiBBALBEAgAyAAEJEBNwMIIAAgAykDGEKAgICAMEEBIANBCGoQIiEEIAAgAykDCBAKCyAAIAMpAxAQCiAAIAMpAxgQCgsgA0EgaiQAIAQPC0H24wBBoQ1Bu+oCQYDkABAAAAvoAQEIfyMAIgchCyABpygCICIIKAIQIglB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TwRAIAAgAKEhAAwBCyAAIAEQsAQhAiABKwMAIAErAwggAkEBcRCEBiEACyABQRBqJAAgAAutAwIBfgV/IAG9Qv///////////wCDQoCAgICAgID4/wBYQQAgAL1C////////////AINCgYCAgICAgPj/AFQbRQRAIAAgAaAPCyABvSICQiCIpyIDQYCAwP8DayACpyIGckUEQCAAEK8EDwsgAkI+iKdBAnEiByAAvSICQj+Ip3IhBAJAAkAgAkIgiKdB/////wdxIgUgAqdyRQRAAkAgBEECaw4CAgADC0QYLURU+yEJwA8LIANB/////wdxIgMgBnJFBEBEGC1EVPsh+T8gAKYPCwJAIANBgIDA/wdGBEAgBUGAgMD/B0cNASAEQQN0QaCcBGorAwAPCyAFQYCAwP8HR0EAIANBgICAIGogBU8bRQRARBgtRFT7Ifk/IACmDwsCfCAHBEBEAAAAAAAAAAAgBUGAgIAgaiADSQ0BGgsgACABo5kQrwQLIQACQAJAAkAgBA4DBQABAgsgAJoPC0QYLURU+yEJQCAARAdcFDMmpqG8oKEPCyAARAdcFDMmpqG8oEQYLURU+yEJwKAPCyAEQQN0QcCcBGorAwAPC0QYLURU+yEJQCEACyAAC8cBAQJ/IwBBEGsiASQAAnwgAL1CIIinQf////8HcSICQfvDpP8DTQRARAAAAAAAAPA/IAJBnsGa8gNJDQEaIABEAAAAAAAAAAAQ2QIMAQsgACAAoSACQYCAwP8HTw0AGgJAAkACQAJAIAAgARCwBEEDcQ4DAAECAwsgASsDACABKwMIENkCDAMLIAErAwAgASsDCEEBENoCmgwCCyABKwMAIAErAwgQ2QKaDAELIAErAwAgASsDCEEBENoCCyEAIAFBEGokACAAC7ACAwF8AX4BfwJAIAC9IgJCIIinQf////8HcSIDQYCAwP8DTwRAIAKnIANBgIDA/wNrckUNAUQAAAAAAAAAACAAIAChow8LAnwgA0H////+A00EQEQYLURU+yH5PyADQYGAgOMDSQ0BGkQHXBQzJqaRPCAAIACiENsCIACioSAAoUQYLURU+yH5P6APCyACQn9XBEBEGC1EVPsh+T8gAEQAAAAAAADwP6BEAAAAAAAA4D+iIgCfIgEgASAAENsCokQHXBQzJqaRvKCgoSIAIACgDwtEAAAAAAAA8D8gAKFEAAAAAAAA4D+iIgCfIgEgABDbAqIgACABvUKAgICAcIO/IgAgAKKhIAEgAKCjoCAAoCIAIACgCw8LRAAAAAAAAAAARBgtRFT7IQlAIAJCf1UbC4cBAwF+AX8BfCAAvSIBQv///////////wCDvyEAAkACfCABQjSIp0H/D3EiAkH9B00EQCACQd8HSQ0CIAAgAKAiAyADIACiRAAAAAAAAPA/IACho6AMAQsgAEQAAAAAAADwPyAAoaMiACAAoAsQsANEAAAAAAAA4D+iIQALIAAgAJogAUJ/VRsLngEDAnwBfwF+RAAAAAAAAOA/IACmIQIgAL1C////////////AIMiBL8hAQJAIARCIIinIgNBwdyYhARNBEAgARCkAiEBIANB//+//wNNBEAgA0GAgMDyA0kNAiACIAEgAaAgASABoiABRAAAAAAAAPA/oKOhog8LIAIgASABIAFEAAAAAAAA8D+go6CiDwsgAiACoCABEIcGoiEACyAACwUAIACZCwUAIACfC94BAgF/An4gAL0iAkL///////////8AgyIDvyEAAkAgA0IgiKciAUHrp4b/A08EQCABQYGA0IEETwRARAAAAAAAAACAIACjRAAAAAAAAPA/oCEADAILRAAAAAAAAPA/RAAAAAAAAABAIAAgAKAQpAJEAAAAAAAAAECgo6EhAAwBCyABQa+xwf4DTwRAIAAgAKAQpAIiACAARAAAAAAAAABAoKMhAAwBCyABQYCAwABJDQAgAEQAAAAAAAAAwKIQpAIiAJogAEQAAAAAAAAAQKCjIQALIAAgAJogAkJ/VRsLgwIDAXwCfwF+IAC9IgRCIIinQf////8HcSICQYCAwP8HTwRAIAAgAKAPC0GT8f3UAiEDAkAgAkH//z9NBEBBk/H9ywIhAyAARAAAAAAAAFBDor0iBEIgiKdB/////wdxIgJFDQELIAAgBEKAgICAgICAgIB/gyACQQNuIANqrUIghoS/IgEgAaIgASAAo6IiACAAIACioiAARNft5NQAsMI/okTZUee+y0Tov6CiIAAgAETC1klKYPH5P6JEICTwkuAo/r+gokSS5mEP5gP+P6CgIAGivUKAgICACHxCgICAgHyDvyIAIACioyIBIAChIAAgAKAgAaCjIACiIACgIQALIAALngMCA34CfyMAQSBrIgkk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IG92ZXJoZWFkLCAlMC4xZiBhdmVyYWdlIHNsYWNrKQoAbWVtb3J5IHVzZWQAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgYXRvbSkKAGF0b21zACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIHN0cmluZykKAHN0cmluZ3MAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgb2JqZWN0KQoAb2JqZWN0cwAgIHByb3BlcnRpZXMAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgc2hhcGUpCgAgIHNoYXBlcwAlLTIwcyAlOGxsZCAlOGxsZAoAYnl0ZWNvZGUgZnVuY3Rpb25zACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIGZ1bmN0aW9uKQoAICBieXRlY29kZQAgIHBjMmxpbmUAJS0yMHMgJThsbGQKAEMgZnVuY3Rpb25zAGFycmF5cwAgIGZhc3QgYXJyYXlzACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIGZhc3QgYXJyYXkpCgAgIGVsZW1lbnRzAGJpbmFyeSBvYmplY3RzAG91dCBvZiBtZW1vcnkAaW52YWxpZCAnaW5zdGFuY2VvZicgcmlnaHQgb3BlcmFuZABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIG51bGwAAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiB1bmRlZmluZWQAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkASlNfU2V0UHJvcGVydHlJbnRlcm5hbABwcm9wID09IEpTX0FUT01fbGVuZ3RoAG91dC1vZi1ib3VuZCBudW1lcmljIGluZGV4AG5vdCBhbiBvYmplY3QAb2JqZWN0IGlzIG5vdCBleHRlbnNpYmxlAHBycyAhPSBOVUxMAEpTX0RlZmluZVByb3BlcnR5AHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUAbm9uIGludGVnZXIgaW5kZXggaW4gdHlwZWQgYXJyYXkAbmVnYXRpdmUgaW5kZXggaW4gdHlwZWQgYXJyYXkAb3V0LW9mLWJvdW5kIGluZGV4IGluIHR5cGVkIGFycmF5AGludmFsaWQgZGVzY3JpcHRvciBmbGFncwBjb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5AGludmFsaWQgYXJyYXkgaW5kZXgAJWQAW2Z1bmN0aW9uIGJ5dGVjb2RlXQBjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gc3RyaW5nAFt1bnN1cHBvcnRlZCB0eXBlXQBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX0dMT0JBTCB8fCBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX01PRFVMRQBKU19FdmFsVGhpcwBSZWdFeHAAdW5leHBlY3RlZCBkYXRhIGF0IHRoZSBlbmQAICAgICAgICAgIAAAAIwAAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABQcm94eQBBoBsL0wHALgAAkC8AAFAwAACwMAAAADEAAFAxAAAMCwUEAgIAALIAAABnAAAAaAAAALMAAABpAAAAagAAALQAAABpAAAAagAAALUAAABAAAAAQQAAALYAAABrAAAAbAAAALcAAABrAAAAbAAAAC8AAABtAAAAbgAAALgAAABAAAAAQQAAALkAAABvAAAAcAAAAFByb21pc2UAQXN5bmNGdW5jdGlvbgBBc3luY0dlbmVyYXRvckZ1bmN0aW9uAERhdGUAT2JqZWN0AEZ1bmN0aW9uAEVycm9yAEGAHQslJlMAADBTAAA7UwAASlMAAFZTAABgUwAAaVMAAHdTAABBcnJheQBBsB0LhTFjb3B5V2l0aGluAGVudHJpZXMAZmlsbABmaW5kAGZpbmRJbmRleABmbGF0AGZsYXRNYXAAaW5jbHVkZXMAa2V5cwB2YWx1ZXMAAE51bWJlcgBCb29sZWFuAFN0cmluZwBTeW1ib2wAR2VuZXJhdG9yRnVuY3Rpb24AZXZhbAAAAAABAQICAgNBcnJheUJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBUeXBlZEFycmF5AEJZVEVTX1BFUl9FTEVNRU5UAERhdGFWaWV3AG1yMSAhPSBOVUxMAGRlbGV0ZV93ZWFrX3JlZgBtci0+ZW1wdHkAbWFwX2RlY3JlZl9yZWNvcmQAc2YtPmN1cl9zcCAhPSBOVUxMAGFzeW5jX2Z1bmNfZnJlZQBzaXplICE9IDAAanNfZGVmX21hbGxvYwAAAG51bGwAZmFsc2UAdHJ1ZQBpZgBlbHNlAHJldHVybgB2YXIAdGhpcwBkZWxldGUAdm9pZAB0eXBlb2YAbmV3AGluAGluc3RhbmNlb2YAZG8Ad2hpbGUAZm9yAGJyZWFrAGNvbnRpbnVlAHN3aXRjaABjYXNlAGRlZmF1bHQAdGhyb3cAdHJ5AGNhdGNoAGZpbmFsbHkAZnVuY3Rpb24AZGVidWdnZXIAd2l0aABjbGFzcwBjb25zdABlbnVtAGV4cG9ydABleHRlbmRzAGltcG9ydABzdXBlcgBpbXBsZW1lbnRzAGludGVyZmFjZQBsZXQAcGFja2FnZQBwcml2YXRlAHByb3RlY3RlZABwdWJsaWMAc3RhdGljAHlpZWxkAGF3YWl0AABsZW5ndGgAZmlsZU5hbWUAbGluZU51bWJlcgBtZXNzYWdlAGVycm9ycwBzdGFjawBuYW1lAHRvU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHZhbHVlT2YAZXZhbABwcm90b3R5cGUAY29uc3RydWN0b3IAY29uZmlndXJhYmxlAHdyaXRhYmxlAGVudW1lcmFibGUAdmFsdWUAZ2V0AHNldABvZgBfX3Byb3RvX18AdW5kZWZpbmVkAG51bWJlcgBib29sZWFuAHN0cmluZwBvYmplY3QAc3ltYm9sAGludGVnZXIAdW5rbm93bgBhcmd1bWVudHMAY2FsbGVlAGNhbGxlcgA8ZXZhbD4APHJldD4APHZhcj4APGFyZ192YXI+ADx3aXRoPgBsYXN0SW5kZXgAdGFyZ2V0AGluZGV4AGlucHV0AGRlZmluZVByb3BlcnRpZXMAYXBwbHkAam9pbgBjb25jYXQAc3BsaXQAY29uc3RydWN0AGdldFByb3RvdHlwZU9mAHNldFByb3RvdHlwZU9mAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBoYXMAZGVsZXRlUHJvcGVydHkAZGVmaW5lUHJvcGVydHkAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAG93bktleXMAYWRkAGRvbmUAbmV4dAB2YWx1ZXMAc291cmNlAGZsYWdzAGdsb2JhbAB1bmljb2RlAHJhdwBuZXcudGFyZ2V0AHRoaXMuYWN0aXZlX2Z1bmMAPGhvbWVfb2JqZWN0PgA8Y29tcHV0ZWRfZmllbGQ+ADxzdGF0aWNfY29tcHV0ZWRfZmllbGQ+ADxjbGFzc19maWVsZHNfaW5pdD4APGJyYW5kPgAjY29uc3RydWN0b3IAYXMAZnJvbQBtZXRhACpkZWZhdWx0KgAqAE1vZHVsZQB0aGVuAHJlc29sdmUAcmVqZWN0AHByb21pc2UAcHJveHkAcmV2b2tlAGFzeW5jAGV4ZWMAZ3JvdXBzAHN0YXR1cwByZWFzb24AZ2xvYmFsVGhpcwB0b0pTT04AT2JqZWN0AEFycmF5AEVycm9yAE51bWJlcgBTdHJpbmcAQm9vbGVhbgBTeW1ib2wAQXJndW1lbnRzAE1hdGgASlNPTgBEYXRlAEZ1bmN0aW9uAEdlbmVyYXRvckZ1bmN0aW9uAEZvckluSXRlcmF0b3IAUmVnRXhwAEFycmF5QnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAFVpbnQ4Q2xhbXBlZEFycmF5AEludDhBcnJheQBVaW50OEFycmF5AEludDE2QXJyYXkAVWludDE2QXJyYXkASW50MzJBcnJheQBVaW50MzJBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AE1hcABTZXQAV2Vha01hcABXZWFrU2V0AE1hcCBJdGVyYXRvcgBTZXQgSXRlcmF0b3IAQXJyYXkgSXRlcmF0b3IAU3RyaW5nIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAR2VuZXJhdG9yAFByb3h5AFByb21pc2UAUHJvbWlzZVJlc29sdmVGdW5jdGlvbgBQcm9taXNlUmVqZWN0RnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBBc3luY0Z1bmN0aW9uUmVzb2x2ZQBBc3luY0Z1bmN0aW9uUmVqZWN0AEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AQXN5bmNHZW5lcmF0b3IARXZhbEVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAU3ludGF4RXJyb3IAVHlwZUVycm9yAFVSSUVycm9yAEludGVybmFsRXJyb3IAPGJyYW5kPgBTeW1ib2wudG9QcmltaXRpdmUAU3lt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eTogaW5jb25zaXN0ZW50IHByb3RvdHlwZQByZXZva2VkIHByb3h5AG9wZXJhbmQgJ3Byb3RvdHlwZScgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdABpbnRlcnJ1cHRlZAAlcyBpcyBub3QgaW5pdGlhbGl6ZWQAbGV4aWNhbCB2YXJpYWJsZQAAAHEAAAByAAAAcwAAAENvdWxkIG5vdCBmaW5kIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGNpcmN1bGFyIHJlZmVyZW5jZSB3aGVuIGxvb2tpbmcgZm9yIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnIGlzIGFtYmlndW91cwAocHItPnUuaW5pdC5yZWFsbV9hbmRfaWQgJiAzKSA9PSAwAEpTX0RlZmluZUF1dG9Jbml0UHJvcGVydHkAJyVzJyBpcyBub3QgZGVmaW5lZABudW1faW5kZXggPT0gbnVtX2tleXNfY291bnQASlNfR2V0T3duUHJvcGVydHlOYW1lc0ludGVybmFsAHN0cl9pbmRleCA9PSBudW1fa2V5c19jb3VudCArIHN0cl9rZXlzX2NvdW50AHN5bV9pbmRleCA9PSBhdG9tX2NvdW50AEpTX0F0b21Jc0FycmF5SW5kZXgAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAG51bV9rZXlzX2NtcABqc19nZXRfYXRvbV9pbmRleABub3QgY29uZmlndXJhYmxlAG5vIHNldHRlciBmb3IgcHJvcGVydHkAJyVzJyBpcyByZWFkLW9ubHkAcC0+c2hhcGUtPmhlYWRlci5yZWZfY291bnQgPT0gMQBhZGRfcHJvcGVydHkAJWxsZABjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAdmFyX3JlZi0+aGVhZGVyLnJlZl9jb3VudCA+IDAAZnJlZV92YXJfcmVmAEpTX0F0b21Jc051bWVyaWNJbmRleDEAAG4AZgBpAG4AaQB0AHkAbmZpbml0eQAhc2gtPmlzX2hhc2hlZABjb21wYWN0X3Byb3BlcnRpZXMAbmV3X3NpemUgPD0gc2gtPnByb3Bfc2l6ZQBqID09IChzaC0+cHJvcF9jb3VudCAtIHNoLT5kZWxldGVkX3Byb3BfY291bnQpACVzIG9iamVjdCBleHBlY3RlZABjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gbnVtYmVyAHRvUHJpbWl0aXZlAEluZmluaXR5AGludmFsaWQgYXJyYXkgbGVuZ3RoAE5hTgAlLipmAG4gPCBidWZfc2l6ZQBqc19mY3Z0MQAlKy4qZQBtdXN0IGJlIGNhbGxlZCB3aXRoIG5ldwBub3QgYSBmdW5jdGlvbgBkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2xhc3MgY29uc3RydWN0b3JzIG11c3QgYmUgaW52b2tlZCB3aXRoICduZXcnAHVuc3VwcG9ydGVkIHJlZmVyZW5jZSB0byAnc3VwZXInAGl0ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSB0aHJvdyBtZXRob2QAaW52YWxpZCB0aHJvdyB2YXIgdHlwZSAlZAAndGhpcycgY2FuIGJlIGluaXRpYWxpemVkIG9ubHkgb25jZQBpbnZhbGlkIHJldCB2YWx1ZQBpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAaXRlcmF0b3JfY2xvc2VfcmV0dXJuAHZhbHVlIGhhcyBubyBwcm9wZXJ0eQBpbnZhbGlkIG9wY29kZTogcGM9JXUgb3Bjb2RlPTB4JTAyeAAADQAQAC0AMQBpbXBvcnQubWV0YSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29udGV4dABleHBlY3RpbmcgPGJyYW5kPiBwcml2YXRlIGZpZWxkAGludmFsaWQgYnJhbmQgb24gb2JqZWN0AHJlZGVjbGFyYXRpb24gb2YgJyVzJwA8aW5wdXQ+AG5vdCBhIG9iamVjdAB0b28gbWFueSBhcmd1bWVudHMAc3RyaW5nIGV4cGVjdGVkAG5vIGZ1bmN0aW9uIGZpbGVuYW1lIGZvciBpbXBvcnQoKQBjYW5ub3QgZGVmaW5lIHZhcmlhYmxlICclcycAdmFsdWUgaXMgbm90IGl0ZXJhYmxlACFfX0pTX0F0b21Jc1RhZ2dlZEludChkZXNjcikASlNfTmV3U3ltYm9sRnJvbUF0b20AZGVzY3IgPCBydC0+YXRvbV9zaXplAG5vdCBhIHN5bWJvbABwcml2YXRlIGNsYXNzIGZpZWxkICclcycgZG9lcyBub3QgZXhpc3QAcHJpdmF0ZSBjbGFzcyBmaWVsZCAnJXMnIGFscmVhZHkgZXhpc3RzAFsAXQBnZXQgAHNldCAAcGFyZW50IGNsYXNzIG11c3QgYmUgY29uc3RydWN0b3IAcGFyZW50IHByb3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCBvciBudWxsAGItPmZ1bmNfa2luZCA9PSBKU19GVU5DX05PUk1BTABqc19vcF9kZWZpbmVfY2xhc3MAcmVjZWl2ZXIgaXMgbm90IGFuIG9iamVjdABzZXR0ZXIgaXMgZm9yYmlkZGVuAGludmFsaWQgaW5kZXggZm9yIGFwcGVuZABudWxsIG9yIHVuZGVmaW5lZCBhcmUgZm9yYmlkZGVuAGludmFsaWQgJ2luJyBvcGVyYW5kAG5vdCBhIGNvbnN0cnVjdG9yACAgICBhdCAlcwA6JWQAPGFub255bW91cz4AICglcwAgKG5hdGl2ZSkAZHVwbGljYXRlIGV4cG9ydGVkIG5hbWUgJyVzJwBjb3VsZCBub3QgbG9hZCBtb2R1bGUgJyVzJwAuAC4uAGJ5dGVjb2RlIGZ1bmN0aW9uIGV4cGVjdGVkAGV2YWwgaXMgbm90IHN1cHBvcnRlZABjaXJjdWxhciByZWZlcmVuY2UAZ2V0ICVzAHNldCAlcwBjYW5ub3QgY29udmVydCB0byBvYmplY3QAbm9ybWFsaXplAEHAzgAL9QEsJwAAAwAAAAAAAAB0AAAAYmFkIG5vcm1hbGl6YXRpb24gZm9ybQBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncwAlcwBmbGFncwBzb3VyY2UAZ2xvYmFsAGlnbm9yZUNhc2UAbXVsdGlsaW5lAGRvdEFsbAB1bmljb2RlAHN0aWNreQBleGVjAGNvbXBpbGUAdGVzdAB0b1N0cmluZwBbU3ltYm9sLnJlcGxhY2VdAFtTeW1ib2wubWF0Y2hdAFtTeW1ib2wubWF0Y2hBbGxdAFtTeW1ib2wuc2VhcmNoXQBbU3ltYm9sLnNwbGl0XQBBwNAAC+ADiycAAAEBAAB1AAAAAAAAAJEnAAABAQAAdgAAAAAAAACYJwAAAQIBAHcAAAAAAAAAnycAAAECAgB3AAAAAAAAAKonAAABAgQAdwAAAAAAAAC0JwAAAQIIAHcAAAAAAAAAuycAAAECEAB3AAAAAAAAAMMnAAABAiAAdwAAAAAAAADKJwAAAwAAAAEAAAAwAAAAzycAAAMAAAACAAAAeAAAANcnAAADAAAAAQAAAHkAAADcJwAAAwAAAAAAAAB6AAAA5ScAAAMAAAACAAAAewAAAPYnAAADAAAAAQAAAHwAAAAFKAAAAwAAAAEAAAB9AAAAFygAAAMAAAABAAAAfgAAACcoAAADAAAAAgAAAH8AAAAoPzopAG91dCBvZiBtZW1vcnkgaW4gcmVnZXhwIGV4ZWN1dGlvbgBmbGFncyBtdXN0IGJlIHVuZGVmaW5lZABSZWdFeHAgZXhlYyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwAbm90IGEgc3RyaW5nAHkAW1N5bWJvbC5zcGVjaWVzXQDPKQAAAQEAAIAAAAAAAAAAbmV4dABbU3ltYm9sLnRvU3RyaW5nVGFnXQBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAEGw1AAL1wrwKQAAAwAAAAAMAACBAAAA9SkAAAEDAAAKKgAAAAAAAHVuZXhwZWN0ZWQgZW5kIG9mIGNvbW1lbnQAdW5leHBlY3RlZCBjaGFyYWN0ZXIAaW52YWxpZCBjaGFyYWN0ZXIgaW4gYSBKU09OIHN0cmluZwBvY3RhbCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZQBtYWxmb3JtZWQgZXNjYXBlIHNlcXVlbmNlIGluIHN0cmluZyBsaXRlcmFsAGludmFsaWQgVVRGLTggc2VxdWVuY2UAdW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nAGV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lAHVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0AHVuZXhwZWN0ZWQgdG9rZW46ICclLipzJwBleHBlY3RpbmcgJyVjJwAgAFx1JTA0eABBcnJheSBsb28gbG9uZwBKU09OAAAAAAAAAACkKwAAAwgAANArAAADAAAAcGFyc2UAc3RyaW5naWZ5AMArAAADAAAAAgAAAIIAAADGKwAAAwAAAAMAAACDAAAA9SkAAAEDAACkKwAAAAAAAHByb3h5OiBpbmNvbnNpc3RlbnQgaXNFeHRlbnNpYmxlAHByb3h5OiBpbmNvbnNpc3RlbnQgcHJldmVudEV4dGVuc2lvbnMAcHJveHk6IGluY29uc2lzdGVudCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAaW52YWxpZCBnZXR0ZXIAaW52YWxpZCBzZXR0ZXIAY2Fubm90IGhhdmUgc2V0dGVyL2dldHRlciBhbmQgdmFsdWUgb3Igd3JpdGFibGUAcHJveHk6IHByb3BlcnRpZXMgbXVzdCBiZSBzdHJpbmdzIG9yIHN5bWJvbHMAcHJveHk6IGR1cGxpY2F0ZSBwcm9wZXJ0eQBwcm94eTogdGFyZ2V0IHByb3BlcnR5IG11c3QgYmUgcHJlc2VudCBpbiBwcm94eSBvd25LZXlzAHByb3h5OiBwcm9wZXJ0eSBub3QgcHJlc2VudCBpbiB0YXJnZXQgd2VyZSByZXR1cm5lZCBieSBub24gZXh0ZW5zaWJsZSBwcm94eQBwcm94eTogaW5jb25zaXN0ZW50IGRlbGV0ZVByb3BlcnR5AHByb3h5OiBkZWZpbmVQcm9wZXJ0eSBleGNlcHRpb24AcHJveHk6IGluY29uc2lzdGVudCBkZWZpbmVQcm9wZXJ0eQBwcm94eTogaW5jb25zaXN0ZW50IGhhcwBwcm94eTogaW5jb25zaXN0ZW50IGdldABwcm94eTogaW5jb25zaXN0ZW50IHNldABwcm94eTogY2Fubm90IHNldCBwcm9wZXJ0eQByZXZvY2FibGUAVi4AAAMAAAACAAAAhAAAAHNldABnZXQAaGFzAGRlbGV0ZQBjbGVhcgBzaXplAGZvckVhY2gAdmFsdWVzAGtleXMAZW50cmllcwBbU3ltYm9sLml0ZXJhdG9yXQBNYXAAcC4AAAMAAAACAQAAhQAAAHQuAAADAAAAAQEAAIYAAAB4LgAAAwAAAAEBAACHAAAAfC4AAAMAAAABAQAAiAAAAIMuAAADAAAAAAEAAIkAAACJLgAAAQIAAIoAAAAAAAAAji4AAAMAAAABAQAAiwAAAJYuAAADAAQAAAEAAIwAAACdLgAAAwAAAAABAACMAAAAoi4AAAMACAAAAQAAjAAAAKouAAADCQAAoi4AAP/////1KQAAAQMAALwuAAAAAAAAYWRkAFNldABBkN8AC7cBgC8AAAMAAQABAQAAhQAAAHguAAADAAEAAQEAAIcAAAB8LgAAAwABAAEBAACIAAAAgy4AAAMAAQAAAQAAiQAAAIkuAAABAgEAigAAAAAAAACOLgAAAwABAAEBAACLAAAAli4AAAMAAQAAAQAAjAAAAJ0uAAADCQAAli4AAP////+qLgAAAwkAAJYuAAD/////oi4AAAMACQAAAQAAjAAAAPUpAAABAwAAhC8AAAAAAABXZWFrTWFwAEHQ4AALV3AuAAADAAIAAgEAAIUAAAB0LgAAAwACAAEBAACGAAAAeC4AAAMAAgABAQAAhwAAAHwuAAADAAIAAQEAAIgAAAD1KQAAAQMAAEAwAAAAAAAAV2Vha1NldABBsOEAC4IDgC8AAAMAAwABAQAAhQAAAHguAAADAAMAAQEAAIcAAAB8LgAAAwADAAEBAACIAAAA9SkAAAEDAACgMAAAAAAAAE1hcCBJdGVyYXRvcgAAAADwKQAAAwAAAAAMAACNAAAA9SkAAAEDAADwMAAAAAAAAHMgIT0gTlVMTABqc19tYXBfaXRlcmF0b3JfbmV4dABTZXQgSXRlcmF0b3IAAAAAAPApAAADAAEAAAwAAI0AAAD1KQAAAQMAAD8xAAAAAAAAc2V0L2FkZCBpcyBub3QgYSBmdW5jdGlvbgAAAAAAAADPKQAAAQEAAIAAAAAAAAAAcmVzb2x2aW5nIGZ1bmN0aW9uIGFscmVhZHkgc2V0AHByb21pc2Ugc2VsZiByZXNvbHV0aW9uAGFyZ2MgPT0gNQBwcm9taXNlX3JlYWN0aW9uX2pvYgBhcmdjID09IDMAanNfcHJvbWlzZV9yZXNvbHZlX3RoZW5hYmxlX2pvYgB0aGVuAGNhdGNoAGZpbmFsbHkAQcDkAAtmIDIAAAMAAAACAAAAjgAAACUyAAADAAAAAQAAAI8AAAArMgAAAwAAAAEAAACQAAAA9SkAAAEDAAAsDgAAAAAAAHJlc29sdmUAcmVqZWN0AGFsbABhbGxTZXR0bGVkAGFueQByYWNlAEGw5QAL1gGAMgAAAwAAAAEBAACRAAAAiDIAAAMAAQABAQAAkQAAAI8yAAADAAAAAQEAAJIAAACTMgAAAwABAAEBAACSAAAAnjIAAAMAAgABAQAAkgAAAKIyAAADAAAAAQAAAJMAAADPKQAAAQEAAIAAAAAAAAAAcmVqZWN0ZWQAZnVsZmlsbGVkAGFzeW5jIABmdW5jdGlvbgAgYW5vbnltb3VzKAAKKSB7CgAKfSkAAAAAAAAAAPUpAAABAwAANA4AAAAAAABbU3ltYm9sLmFzeW5jSXRlcmF0b3JdAEGQ5wALkwhwMwAAAwAAAAAAAACUAAAAcmV0dXJuAHRocm93AAAAAPApAAADAAAAAQEAAJUAAACgMwAAAwABAAEBAACVAAAApzMAAAMAAgABAQAAlQAAAG5vdCBhbiBBc3luYy1mcm9tLVN5bmMgSXRlcmF0b3IAQXN5bmNHZW5lcmF0b3IAAPApAAADAAAAAQEAAJYAAACgMwAAAwABAAEBAACWAAAApzMAAAMAAgABAQAAlgAAAPUpAAABAwAAADQAAAAAAABub3QgYW4gQXN5bmNHZW5lcmF0b3Igb2JqZWN0AEpTX0lzVW5kZWZpbmVkKGZ1bmNfcmV0KQBqc19hc3luY19nZW5lcmF0b3JfcmVzdW1lX25leHQAcy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0FXQUlUSU5HX1JFVFVSTiB8fCBzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQ09NUExFVEVEAGpzX2FzeW5jX2dlbmVyYXRvcl9yZXNvbHZlX2Z1bmN0aW9uAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9FWEVDVVRJTkcAAPUpAAABAwAAQg4AAAAAAAB2YWx1ZU9mAFtTeW1ib2wudG9QcmltaXRpdmVdAHRvVVRDU3RyaW5nAHRvR01UU3RyaW5nAHRvSVNPU3RyaW5nAHRvRGF0ZVN0cmluZwB0b1RpbWVTdHJpbmcAdG9Mb2NhbGVTdHJpbmcAdG9Mb2NhbGVEYXRlU3RyaW5nAHRvTG9jYWxlVGltZVN0cmluZwBnZXRUaW1lem9uZU9mZnNldABnZXRUaW1lAGdldFllYXIAZ2V0RnVsbFllYXIAZ2V0VVRDRnVsbFllYXIAZ2V0TW9udGgAZ2V0VVRDTW9udGgAZ2V0RGF0ZQBnZXRVVENEYXRlAGdldEhvdXJzAGdldFVUQ0hvdXJzAGdldE1pbnV0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b2JhbCBpZGVudGlmaWVyIGluIG1vZHVsZSBjb2RlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGdsb2JhbCBpZGVudGlmaWVyAG1pc3NpbmcgZm9ybWFsIHBhcmFtZXRlcgBpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGdldHRlciBvciBzZXR0ZXIAJyVzJyBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgbGV4aWNhbCBpZGVudGlmaWVyAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIHBhcmFtZXRlciBuYW1lAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUAdW5leHBlY3RlZCBlbmQgb2YgcmVnZXhwAHVuZXhwZWN0ZWQgbGluZSB0ZXJtaW5hdG9yIGluIHJlZ2V4cAB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAGFzc2lnbm1lbnQgcmVzdCBwcm9wZXJ0eSBtdXN0IGJlIGxhc3QAaW52YWxpZCBkZXN0cnVjdHVyaW5nIHRhcmdldABtaXNzaW5nIGJpbmRpbmcgcGF0dGVybi4uLgByZXN0IGVsZW1lbnQgY2Fubm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlAHJlc3QgZWxlbWVudCBtdXN0IGJlIHRoZSBsYXN0IG9uZQBpbnZhbGlkIGFzc2lnbm1lbnQgc3ludGF4AHRvbyBjb21wbGljYXRlZCBkZXN0cnVjdHVyaW5nIGV4cHJlc3Npb24AUmVnRXhwIGFyZSBub3Qgc3VwcG9ydGVkACdhcmd1bWVudHMnIGlkZW50aWZpZXIgaXMgbm90IGFsbG93ZWQgaW4gY2xhc3MgZmllbGQgaW5pdGlhbGl6ZXIAZXhwZWN0aW5nIHRhcmdldABuZXcudGFyZ2V0IG9ubHkgYWxsb3dlZCB3aXRoaW4gZnVuY3Rpb25zAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAJ3N1cGVyJyBpcyBvbmx5IHZhbGlkIGluIGEgbWV0aG9kAGludmFsaWQgdXNlIG9mICdzdXBlcicAbWV0YSBleHBlY3RlZABpbXBvcnQubWV0YSBvbmx5IHZhbGlkIGluIG1vZHVsZSBjb2RlAGludmFsaWQgdXNlIG9mICdpbXBvcnQoKScAdW5leHBlY3RlZCB0b2tlbiBpbiBleHByZXNzaW9uOiAnJS4qcycAdGVtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAFRvbyBtYW55IGNhbGwgYXJndW1lbnRzAHByaXZhdGUgY2xhc3MgZmllbGQgZm9yYmlkZGVuIGFmdGVyIHN1cGVyAGV4cGVjdGluZyBmaWVsZCBuYW1lAGV4cGVjdGVkICd9JyBhZnRlciB0ZW1wbGF0ZSBleHByZXNzaW9uAGNsYXNzIHN0YXRlbWVudCByZXF1aXJlcyBhIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAcHJvcGVydHkgY29uc3RydWN0b3IgYXBwZWFycyBtb3JlIHRoYW4gb25jZQBwcml2YXRlIGNsYXNzIGZpZWxkIGlzIGFscmVhZHkgZGVmaW5lZAA8c2V0PgBmZC0+Ynl0ZV9jb2RlLmJ1ZltkZWZpbmVfY2xhc3NfcG9zXSA9PSBPUF9kZWZpbmVfY2xhc3MAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkACgpe3N1cGVyKC4uLmFyZ3VtZW50cyk7fQAoKXt9AGR1cGxpY2F0ZSBfX3Byb3RvX18gcHJvcGVydHkgbmFtZQB1bmV4cGVjdGVkICd5aWVsZCcga2V5d29yZAB5aWVsZCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AmpucnZ6goaKtrq+fY2Fubm90IG1peCA/PyB3aXRoICYmIG9yIHx8AHVuZXhwZWN0ZWQgJ2F3YWl0JyBrZXl3b3JkAGF3YWl0IGluIGRlZmF1bHQgZXhwcmVzc2lvbgB1bnBhcmVudGhlc2l6ZWQgdW5hcnkgZXhwcmVzc2lvbiBjYW4ndCBhcHBlYXIgb24gdGhlIGxlZnQtaGFuZCBzaWRlIG9mICcqKicAY2Fubm90IGRlbGV0ZSBhIGRpcmVjdCByZWZlcmVuY2UgaW4gc3RyaWN0IG1vZGUAY2Fubm90IGRlbGV0ZSBhIHByaXZhdGUgY2xhc3MgZmllbGQAaW52YWxpZCBsdmFsdWUgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCBmb3IgaW4vb2YgbGVmdCBoYW5kLXNpZGUAaW52YWxpZCBpbmNyZW1lbnQvZGVjcmVtZW50IG9wZXJhbmQAaW52YWxpZCBhc3NpZ25tZW50IGxlZnQtaGFuZCBzaWRlAGxhYmVsID49IDAgJiYgbGFiZWwgPCBzLT5sYWJlbF9jb3VudAB1cGRhdGVfbGFiZWwAbHMtPnJlZl9jb3VudCA+PSAwAGludmFsaWQgcHJvcGVydHkgbmFtZQBkdXBsaWNhdGUgcGFyYW1ldGVyIG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dAB5aWVsZCBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAaW52YWxpZCB2YXJpYWJsZSBuYW1lIGluIHN0cmljdCBtb2RlAGludmFsaWQgbGV4aWNhbCB2YXJpYWJsZSBuYW1lAHNwZWNpYWwgPT0gUFVUX0xWQUxVRV9OT0tFRVAgfHwgc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUF9ERVBUSABwdXRfbHZhbHVlAHNldF9vYmplY3RfbmFtZQAidXNlIHN0cmljdCIgbm90IGFsbG93ZWQgaW4gZnVuY3Rpb24gd2l0aCBkZWZhdWx0IG9yIGRlc3RydWN0dXJpbmcgcGFyYW1ldGVyAGludmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgY29kZQBpbnZhbGlkIGFyZ3VtZW50IG5hbWUgaW4gc3RyaWN0IGNvZGUAZHVwbGljYXRlIGFyZ3VtZW50IG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dABpZGVudGlmaWVyIGV4cGVjdGVkAGludmFsaWQgZXhwb3J0IHN5bnRheABmcm9tIGNsYXVzZSBleHBlY3RlZAAnbGV0JyBpcyBub3QgYSB2YWxpZCBsZXhpY2FsIGlkZW50aWZpZXIAbWlzc2luZyBpbml0aWFsaXplciBmb3IgY29uc3QgdmFyaWFibGUAdmFyaWFibGUgbmFtZSBleHBlY3RlZABleHBlY3RpbmcgJ2FzJwBpbnZhbGlkIGltcG9ydCBiaW5kaW5nAGR1cGxpY2F0ZSBpbXBvcnQgYmluZGluZwB0b28gbWFueSBjbG9zdXJlIHZhcmlhYmxlcwBkdXBsaWNhdGUgbGFiZWwgbmFtZQByZXR1cm4gbm90IGluIGEgZnVuY3Rpb24AbGluZSB0ZXJtaW5hdG9yIG5vdCBhbGxvd2VkIGFmdGVyIHRocm93AGxleGljYWwgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAZm9yIGF3YWl0IGlzIG9ubHkgdmFsaWQgaW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9ucwBkdXBsaWNhdGUgZGVmYXVsdABpbnZhbGlkIHN3aXRjaCBzdGF0ZW1lbnQAZXhwZWN0aW5nIGNhdGNoIG9yIGZpbmFsbHkAaW52YWxpZCBrZXl3b3JkOiB3aXRoAGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGNsYXNzIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0ACdmb3IgYXdhaXQnIGxvb3Agc2hvdWxkIGJlIHVzZWQgd2l0aCAnb2YnAGEgZGVjbGFyYXRpb24gaW4gdGhlIGhlYWQgb2YgYSBmb3ItJXMgbG9vcCBjYW4ndCBoYXZlIGFuIGluaXRpYWxpemVyAG9mAGluAGV4cGVjdGVkICdvZicgb3IgJ2luJyBpbiBmb3IgY29udHJvbCBleHByZXNzaW9uAGNvbnRpbnVlIG11c3QgYmUgaW5zaWRlIGxvb3AAYnJlYWsgbXVzdCBiZSBpbnNpZGUgbG9vcCBvciBzd2l0Y2gAYnJlYWsvY29udGludWUgbGFiZWwgbm90IGZvdW5kAHVuc3VwcG9ydGVkIGtleXdvcmQ6ICVzAGNwb29sX2lkeCA+PSAwAGpzX2NyZWF0ZV9mdW5jdGlvbgBzLT5pc19ldmFsIHx8IHMtPmNsb3N1cmVfdmFyX2NvdW50ID09IDAAYWRkX2V2YWxfdmFyaWFibGVzAGV4cG9ydGVkIHZhcmlhYmxlICclcycgZG9lcyBub3QgZXhpc3QAcmVzb2x2ZV92YXJpYWJsZXMAbGFiMSA+PSAwICYmIGxhYjEgPCBzLT5sYWJlbF9jb3VudABiY19idWZbcG9zXSA9PSBPUF9sYWJlbABvcHRpbWl6ZV9zY29wZV9tYWtlX3JlZgBvcHRpbWl6ZV9zY29wZV9tYWtlX2dsb2JhbF9yZWYAdmFyX2tpbmQgIT0gSlNfVkFSX05PUk1BTAByZXNvbHZlX3Njb3BlX3ByaXZhdGVfZmllbGQAdmFyX2tpbmQgPT0gSlNfVkFSX1BSSVZBVEVfU0VUVEVSAHVuZGVmaW5lZCBwcml2YXRlIGZpZWxkICclcycAcy0+bGFiZWxfc2xvdHNbbGFiZWxdLmZpcnN0X3JlbG9jID09IE5VTEwAc2tpcF9kZWFkX2NvZGUAcmVzb2x2ZV9sYWJlbHMAbHMtPmFkZHIgPT0gLTEAZGlmZiA9PSAoaW50MTZfdClkaWZmAGRpZmYgPT0gKGludDhfdClkaWZmAGxhYmVsX3Nsb3RzW2ldLmZpcnN0X3JlbG9jID09IE5VTEwAZmluZF9qdW1wX3RhcmdldABpbnZhbGlkIG9wY29kZSAob3A9JWQsIHBjPSVkKQBieXRlY29kZSBidWZmZXIgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgdW5kZXJmbG93IChvcD0lZCwgcGM9JWQpAHN0YWNrIG92ZXJmbG93IChvcD0lZCwgcGM9JWQpAHVuY29uc2lzdGVudCBzdGFjayBzaXplOiAlZCAlZCAocGM9JWQpAG5hbWUAbWVzc2FnZQAAAADcJwAAAwAAAAAAAACjAAAA0E0AAAMDAABuDgAAAAAAANVNAAADAwAAvgoAAAAAAAA6IABpbnZhbGlkIHByb3BlcnR5IGFjY2VzcwBwcm94eSBwcmV2ZW50RXh0ZW5zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAGNyZWF0ZQBnZXRQcm90b3R5cGVPZgBzZXRQcm90b3R5cGVPZgBkZWZpbmVQcm9wZXJ0eQBkZWZpbmVQcm9wZXJ0aWVzAGdldE93blByb3BlcnR5TmFtZXMAZ2V0T3duUHJvcGVydHlTeW1ib2xzAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycwBpcwBhc3NpZ24Ac2VhbABmcmVlemUAaXNT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AQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAAAAAAKAAkADgAgACEAoAChAIAWgRYAIAsgKCAqIC8gMCBfIGAgADABMP/+AP8AQdTfAQuRBBAAAAD+//+H/v//BwAAAAAQAP8D/v//h/7//wdleHRyYW5lb3VzIGNoYXJhY3RlcnMgYXQgdGhlIGVuZAB0b28gbWFueSBpbWJyaWNhdGVkIHF1YW50aWZpZXJzAHN0YWNrIG92ZXJmbG93AHN5bnRheCBlcnJvcgBub3RoaW5nIHRvIHJlcGVhdABpbnZhbGlkIGdyb3VwIG5hbWUAZHVwbGljYXRlIGdyb3VwIG5hbWUAaW52YWxpZCBncm91cAB0b28gbWFueSBjYXB0dXJlcwBleHBlY3RpbmcgZ3JvdXAgbmFtZQBncm91cCBuYW1lIG5vdCBkZWZpbmVkAGludmFsaWQgZGVjaW1hbCBlc2NhcGUgaW4gcmVndWxhciBleHByZXNzaW9uAGJhY2sgcmVmZXJlbmNlIG91dCBvZiByYW5nZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AaW52YWxpZCByZXBldGl0aW9uIGNvdW50AGV4cGVjdGluZyAnJWMnAGludmFsaWQgY2xhc3MgcmFuZ2UAXiRcLiorPygpW117fXwvAGludmFsaWQgZXNjYXBlIHNlcXVlbmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgB1bmV4cGVjdGVkIGVuZABtYWxmb3JtZWQgdW5pY29kZSBjaGFyAAAA4HEAAKBvAADwcQAAAQAwADoAQfDjAQvFAwQAMAA6AEEAWwBfAGAAYQB7AGV4cGVjdGluZyAneycgYWZ0ZXIgXHAAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAGV4cGVjdGluZyAnfScAU2NyaXB0AHNjAFNjcmlwdF9FeHRlbnNpb25zAHVua25vd24gdW5pY29kZSBzY3JpcHQAR2VuZXJhbF9DYXRlZ29yeQBnYwB1bmtub3duIHVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQB0b28gbWFueSByYW5nZXMAAAAAAAEDBQEBAQEFBQUBAgIDBQUBAQECAgMDBQUBBQERb3V0IG9mIG1lbW9yeQBvcGNvZGUgPCBSRU9QX0NPVU5UAC90bXAvcXVpY2tqcy9saWJyZWdleHAuYwBjb21wdXRlX3N0YWNrX3NpemUAKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgBzdGFja19zaXplID4gMAB2YWwgPCBzLT5jYXB0dXJlX2NvdW50AGxyZV9leGVjX2JhY2t0cmFjawB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABBwOcBC6QLMJogAACaMABzgVoAMBdgADAHbACzgW8AABdwAAAHfAAAgX8AQDCAAMMBmACQgZgAQAaZAECQnAC0gaQAQC6lADABvABAhrwAcIG/AAABwAAwgcAAQATBADABwwBAgsMAMILEAECCxQAwAccAMIHHADAByABAgsgAMIHJADABygAAgcoAMAHLADCBywBAAswAAAHNADABzgAwgc4AAAHPADCBzwBABtAAMAHTAECC0wAwgdQAQALWADAB1wBAgtcAMILYAECE2QAwgdsAQALcAEAC3gAAgd8AUAPiAFCD4wBQA+UAQJDmAACB7gBAEu8AtAH4AFCD+ABAAvoAMAH7ADCB+wBAKPwAMAEQAUASEQExAR0BQIIdATCBHgExAR8BAYIfAUCCIAEwgSEBMAEiATCBIgFACiMBAQEoAQGBKAEBASkBAIEpAQABKgEAAisBAIEsAQCBLQEBAS4BAAEwAQGBMAEAgTEBAYEyAQEBMwEAATQBAIE0AQEBNQEBgTUBAQE2AQCBNwEBgTgBAAE5AQCBOgEBgT4BAAFAAQEBQQEAgUEBAYFDAQABRAEAgUQBAAJFAQABRgEAAUkBAYFOAQEBTwFzgaIBQAS4AUACuwEAg70BMIG/ATABwwEwA8QBMAHGATACxwHQAcgBMJHIATCJ0QEAAdYBAIPWAdMB2AEAkdgBcwHhAQCJ4QEAAeYBAILmATCB5wFzAegBc4HoAXOB6gFzAesBAIHrAUAY7AFzAfgBc4H4AQAB+QEAgfkBoAH6AXOB+gFAgvsBMIH8AUAC/QEwg/4BMBAAAjAgCAIAIBgCABAoAkAiMAJANkUC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LFp5eXkAQ29wdGljLENvcHQsUWFhYwBDdW5laWZvcm0sWHN1eABDeXByaW90LENwcnQAQ3lyaWxsaWMsQ3lybABEZXNlcmV0LERzcnQARGV2YW5hZ2FyaSxEZXZhAERpdmVzX0FrdXJ1LERpYWsARG9ncmEsRG9ncgBEdXBsb3lhbixEdXBsAEVneXB0aWFuX0hpZXJvZ2x5cGhzLEVneXAARWxiYXNhbixFbGJhAEVseW1haWMsRWx5bQBFdGhpb3BpYyxFdGhpAEdlb3JnaWFuLEdlb3IAR2xhZ29saXRpYyxHbGFnAEdvdGhpYyxHb3RoAEdyYW50aGEsR3JhbgBHcmVlayxHcmVrAEd1amFyYXRpLEd1anIAR3VuamFsYV9Hb25kaSxHb25nAEd1cm11a2hpLEd1cnUASGFuLEhhbmkASGFuZ3VsLEhhbmcASGFuaWZpX1JvaGluZ3lhLFJvaGcASGFudW5vbyxIYW5vAEhhdHJhbixIYXRyAEhlYnJldyxIZWJyAEhpcmFnYW5hLEhpcmEASW1wZXJpYWxfQXJhbWFpYyxBcm1pAEluaGVyaXRlZCxaaW5oLFFhYWkASW5zY3JpcHRpb25hbF9QYWhsYXZpLFBobGkASW5zY3JpcHRpb25hbF9QYXJ0aGlhbixQcnRpAEphdmFuZXNlLEphdmEAS2FpdGhpLEt0aGkAS2FubmFkYSxLbmRhAEthdGFrYW5hLEthbmEAS2F5YWhfTGksS2FsaQBLaGFyb3NodGhpLEtoYXIAS2htZXIsS2htcgBLaG9qa2ksS2hvagBLaGl0YW5fU21hbGxfU2NyaXB0LEtpdHMAS2h1ZGF3YWRpLFNpbmQATGFvLExhb28ATGF0aW4sTGF0bgBMZXBjaGEsTGVwYwBMaW1idSxMaW1iAExpbmVhcl9BLExpbmEATGluZWFyX0IsTGluYgBMaXN1LExpc3UATHljaWFuLEx5Y2kATHlkaWFuLEx5ZGkATWFrYXNhcixNYWthAE1haGFqYW5pLE1haGoATWFsYXlhbGFtLE1seW0ATWFuZGFpYyxNYW5kAE1hbmljaGFlYW4sTWFuaQBNYXJjaGVuLE1hcmMATWFzYXJhbV9Hb25kaSxHb25tAE1lZGVmYWlkcmluLE1lZGYATWVldGVpX01heWVrLE10ZWkATWVuZGVfS2lrYWt1aSxNZW5kAE1lcm9pdGljX0N1cnNpdmUsTWVyYwBNZXJvaXRpY19IaWVyb2dseXBocyxNZXJvAE1pYW8sUGxyZABNb2RpLE1vZGkATW9uZ29saWFuLE1vbmcATXJvLE1yb28ATXVsdGFuaSxNdWx0AE15YW5tYXIsTXltcgBOYWJhdGFlYW4sTmJhdABOYW5kaW5hZ2FyaSxOYW5kAE5ld19UYWlfTHVlLFRhbHUATmV3YSxOZXdhAE5rbyxOa29vAE51c2h1LE5zaHUATnlpYWtlbmdfUHVhY2h1ZV9IbW9uZyxIbW5wAE9naGFtLE9nYW0AT2xfQ2hpa2ksT2xjawBPbGRfSHVuZ2FyaWFuLEh1bmcAT2xkX0l0YWxpYyxJdGFsAE9sZF9Ob3J0aF9BcmFiaWFuLE5hcmIAT2xkX1Blcm1pYyxQZXJtAE9sZF9QZXJzaWFuLFhwZW8AT2xkX1NvZ2RpYW4sU29nbwBPbGRfU291dGhfQXJhYmlhbixTYXJiAE9sZF9UdXJraWMsT3JraABPcml5YSxPcnlhAE9zYWdlLE9zZ2UAT3NtYW55YSxPc21hAFBhaGF3aF9IbW9uZyxIbW5nAFBhbG15cmVuZSxQYWxtAFBhdV9DaW5fSGF1LFBhdWMAUGhhZ3NfUGEsUGhhZwBQaG9lbmljaWFuLFBobngAUHNhbHRlcl9QYWhsYXZpLFBobHAAUmVqYW5nLFJqbmcAUnVuaWMsUnVucgBTYW1hcml0YW4sU2FtcgBTYXVyYXNodHJhLFNhdXIAU2hhcmFkYSxTaHJkAFNoYXZpYW4sU2hhdwBTaWRkaGFtLFNpZGQAU2lnbldyaXRpbmcsU2dudwBTaW5oYWxhLFNpbmgAU29nZGlhbixTb2dkAFNvcmFfU29tcGVuZyxTb3JhAFNveW9tYm8sU295bwBTdW5kYW5lc2UsU3VuZABTeWxvdGlfTmFncmksU3lsbwBTeXJpYWMsU3lyYwBUYWdhbG9nLFRnbGcAVGFnYmFud2EsVGFnYgBUYWlfTGUsVGFsZQBUYWlfVGhhbSxMYW5hAFRhaV9WaWV0LFRhdnQAVGFrcmksVGFrcgBUYW1pbCxUYW1sAFRhbmd1dCxUYW5nAFRlbHVndSxUZWx1AFRoYWFuYSxUaGFhAFRoYWksVGhhaQBUaWJldGFuLFRpYnQAVGlmaW5hZ2gsVGZuZwBUaXJodXRhLFRpcmgAVWdhcml0aWMsVWdhcgBWYWksVmFpaQBXYW5jaG8sV2NobwBXYXJhbmdfQ2l0aSxXYXJhAFllemlkaSxZZXppAFlpLFlpaWkAWmFuYWJhemFyX1NxdWFyZSxaYW5iAEGAnwILsRTAGZlFhRmZRa4ZgEWOGYBFhBmWRYAZnkWAGeFgRaYZhEWEGYENkxngDzeDK4AZgisBgyuAGYArA4ArgBmAK4AZgisAgCsAkysAviuNGo8r4CQdgTfgSB0ApQUBsQUBggUAtjQHmjQDhTQKhASAGYUEgBmNBIAZgAQAgASAGZ8EgBmJBIo3mQSAN+ALBIAZoQSNhwC7hwGCh68EsZENumMBgmOtewGOewCbUAGAUACKhzSUBACRBAqOBIAZnATQH4M3jh+BGZkfgwsAhwsBgQsBlQsAhgsAgAsCgwsBiAsBgQsBgwsHgAsDgQsAhAsBmAsBgi4AhS4DgS4BlS4Ahi4AgS4AgS4AgS4BgC4AhC4DgS4Bgi4CgC4Ggy4AgC4GkC4JgiwAiCwAgiwAlSwAhiwAgSwAhCwBiSwAgiwAgiwBgCwOgywBiywGhiwAgnAAh3ABgXABlXAAhnAAgXAAhHABiHABgXABgnAGgnADgXAAhHABkXAJgY4AhY4Cgo4Ag44CgY4AgI4AgY4CgY4Cgo4Ci44DhI4Cgo4Ag44BgI4FgI4NlI4EjJAAgpAAlpAAj5ACh5AAgpAAg5AGgZAAgpAEg5ABiZAGiJCMPACCPACWPACJPACEPAGIPACCPACDPAaBPAaAPACDPAGJPACBPAyMTwCCTwCyTwCCTwCFTwOPTwGZTwCCgQCRgQKXgQCIgQCAgQGGgQKAgQOFgQCAgQCHgQWJgQGCgQu5kgOAGZuSJIFEAIBEAIREAJdEAIBEAJZEAYREAIBEAIVEAYlEAYNEH8eTAKOTA6aTAKOTAI6TAIaTgxmBkyTgP16lJwCAJwSAJwGqJ4AZgyfgnzDIJgCDJgGGJgCAJgCDJgGoJgCDJgGgJgCDJgGGJgCAJgCDJgGOJgC4JgCDJgHCJgGfJgKZJgXVFwGFFwHiHxKcZgLKeoIZinoGjIgAhogKlDKBGQiTEQuMiQCCiQCBiQvdQAGJQAWJQAWBW4EZgFuAGYhbAIlbBdhbBqpbBMUSCZ5HAItHA4tHA4BHAotHnYoBhIoKq2EDmWEFimECgWGfQJsQAYEQvosAnIsBiosFiYsFjYsBkDc+ywcDrAcCv4WzCgeDCrdGAo5GAoJGr2eIHQaqJwGCJ4eFB4I3gBmMN4AZhjeDGYA3hRmAN4IZgTeAGQSlRYQrgB2wRYQrg0WEK4xFgB3FRYAruTcAhDfgn0WVKwGFKwGlKwGFKwGHKwCAKwCAKwCAKwCeKwG0KwCOKwCNKwGFKwCSKwGCKwCIKwCLGYE31hkAihmARQGKGYBFjhkAjEUCnxkPoDcOpRmAK4IZgUWFGYBFmhmARZAZqEWCGQPiNhkYihkU4z8Z4J8P4hMZAZ8ZAOAIGa4oAK4oAJ9F4BMaBIYapScAgCcEgCcBt5QGgZQNgJSWJgiGJgCGJgCGJgCGJgCGJgCGJgCGJgCGJgCfHdIZLJkvANgvC+B1LxmLGQOEGYAvgBmAL5gZiC+DN4EwhxmDL4MZANU1AYE3gRmCNYAZ2T2BGYI9BKoNAN0wAI8Znw2jGQuPPZ4wAL8ZnjDQGa49gBnXPeBHGfAJXy+/GfBBnC8C5CybArabCK9K4MuXE98d1wgHoRngBUWCGbRFAYhFKYpFrIYCiRkFt3YHxXwHi3wFnx+tPoAZgD6jeQqAeZwwAs06AIAZiToDgTqeXgC2FgiNFgGJFgGDFp9ewowXhIyWVQmFJgGFJgGFJgiGJgCGJgCqRYAZiEWAK4NFgRkDzxetVQGJVQXwG0MwC5YwA7AwcBCj4Q0vAeAJLyWGRQuEBQSZNACENACANACBNACBNACJNOARBBDhCgSBGQ+/BAG1BCeNBAGPN4kZBY03gR2iGQCSGQCDGQOEBADgJgQBgBkAnxmZRYUZmUWKGYk9gBmsPYEZnjAChTABhTABhTABgjAChhkAhhkJhBkBi0kAmUkAkkkAgUkAjkkBjUkh4BpJBIIZA6wZAogZzisAjBkCgCsurBmAN2AhnEsCsBMOgDeaGQOjaQiCaZopBKprBJ2WAICWo2wDjWwpzx6vfp1yAYlyBaNxA6NxA6ckB7MUCoAUYC/g1kgIlUgJh0hgN4UcAYAcAKscAIEcAoAcAYAclTYAiDafdJ5fB4hfL5IzAIEzBIQzm3cCgHeZTASATD+fWJdXA5NXAa1Xgz8AgT8Ehz8Agj8AnD8Bgj8DiT8GiD8Gn26fah+mUQOLUQi1BgKGBpU5AYc5kjgEhziReAaDeAuGeE/IbzayaAyyaAaFaKcxB4kxYMWeBACpmgCCmgGBmk2nbQepglWbGBOWJQjNDgOdDg6ADsE7CoA7AZiDBomDBbQVAJEVB6ZOCN99AJOBCpFBAKtBQIZdAIBdAINdAI5dAIpdBbpDBIlDBYMqAIcqAYEqAZUqAIYqAIEqAIQqAIA3iCoBgSoBgioBgCoFgCoEhioBhioChCpgKttiAIRiHceVB4mVYEW1fwGlfyHEWgqJWgWMWxK4jQaJjTWaAgGOAgOPAmBfuyFgA9KZC4CZhiABgCABhyAAgSAAnSAAgSABiyAIiSBFh2ABrWABimAax5wH0oQcuHVgpogMAKwMAI0MCZwMAp9SAZVSAI1SSIZTAIFTAKtTAoBTAIFTAIhTB4lTBYUtAIEtAKQtAIEtAIUtBoktYNWYTWBWgEoOsY4MgI7jORtgBeAOGwCEGwrgYxtqW+POIwCII29m4eYDcBFY4dgIBp5cAIlcA4FcX50JAYUJCcVzCYlzAIZzAJRzBJJzYk/aVGAEylkDuFkGkFk/gI+AZIEZgEIKgS8N8AeXjwfin4/hdUIpiI9wEpaAPeC9NTCCNRCDPQfhK2Roo+AKIgSMIgKIIgaJIgGDIoMZcAL74JUZCaYZAb0ZgjeQGYc3gRmGN50Zgze6GRbFK2A5kxkL1hkImBlgJtQZAMYZAIEZAYAZAYEZAYMZAIsZAIAZAIYZAMAZAIMZAYcZAIYZAJsZAIMZAIQZAIAZAoYZAODzGQHgwxkBsRniK4AOhIAAjoBk74YoAJAoAYYoAIEoAIQoYHSsZQKNZQGJZQOBZWEPuZgEgJhkn+BkVgGPVijLAQOJAQOBAWKwwxlLvBlgYYMEAJoEAIEEAIAEAYAEAIkEAIMEAIAEAIAEBYAEA4AEAIAEAIAEAIIEAIEEAIAEAYAEAIAEAIAEAIAEAIAEAIEEAIAEAYMEAIYEAIMEAIMEAIAEAIkEAJAEBIIEAIQEAJAEM4EEYK2rGQPgAxkLjhkBjhkAjhkApBkJ4E0ZN5kZgDWBGQyrGQOIGQaBGQ2FGWA543cZB4wZAowZAuATGQvYGQaLGROLGQO3GQeJGQWnGQedGQGBGU3gGBkA0RkA4CYZC40ZAYQZAoIZBIYZCJgZBoYZCIIZDIYZKOAyGQC2GSSJGWOl8JZ9LyHv1C8K4H0vAfAGIS8N8AzQL2u+4b0vZYHwAuovetxVgBkd3xlgH+CPNwBBwLMCC7ILgsEAAAErAQAAASscAAwBRYCSAAACHWsAAh0oAQIdRQACHSiBAwAABQQxh5GaDQAABQQxh5GaAAMEh5EBAAAFBDGHkZofAAAIAQRQUXgxgocJAAoCBIcJAAkDBJGaBQAAAgSHYgAAAgQxgfsAAA0LHyosLjxFT3B9jpCVAAwLHyosLjxFT3COkJUQAAAUCx8hLVMqLC48Tk9gcEOBho2OkJUAFQsfIS1TKiwuPEdOT2BwQ4GGjY6QlQkEHyE7TnUACQMLFYZ1AAkCLl11AAkCLEGAdQANAiqOgHEACQI8YILPAAkDFV6KgDAAAAInRYW4AAEEETKJiIBKAAECW3YAAAACW3aESQAABAsfKjwAAR8ABAsfKjwAAh8qAAEfAQILHwACH30AAgsfAAIffQAGHzxPcI6QAAEfAQIffQEBHwACH30AAgsfBgEfAAIfYAACCx8BAR8AAgsfAwEfAAgLHyo8YHCQlQACHyoAAx8qPAECCx8AAQsBAh8qAAFggEQAAQErNQAAAh2HgbUAAAJFW4A/AAADHypFjNEAAAIdKIE8AAEGDTAvNT2bAAUNMC81PQEAAAEvAAAJBg0wLzU9mwAAAAUNMC81PQcGDTAvNT2bAwUNMC81PQkAAwINLwEAAAUNMC81PQQCNT0AAAAFDTAvNT0DAAEDLzU9AQEvWAADAjU9AgAAAjU9WQAABg0wLzU9mwACNT2AEgAPAS8fACMBLzsAJwEvNwAwAS8OAAsBLzIAAAEvVwAYAS8JAAQBL18AHgEvwDHvAAACHSiADwAHAi9FgKcAAg4fISwuQTw7Tk9aYEONlQINHyEsLkE8O05aYEONlQMLHyEsLkE7TlpDjZWANgAAAgsfAAAAAh+OOQAAAz5FXoAfAAACEDrAE6EAAAIEkQkAAAIEkUYAAQUNMC81PYCZAAQGDTAvNT2bCQAAAjU9LAABAjU9gN8AAgIcSQMALAMcSEkCAAgCHEmBHwAbAgQaj4QAAAIqjgAAAAIqjjYAAQIqjowSAAECKo4AAAACKo7AXEsAAwEiljsAEQEvnl0AAQEvzs0tAABDbixVbmFzc2lnbmVkAEx1LFVwcGVyY2FzZV9MZXR0ZXIATGwsTG93ZXJjYXNlX0xldHRlcgBMdCxUaXRsZWNhc2VfTGV0dGVyAExtLE1vZGlmaWVyX0xldHRlcgBMbyxPdGhlcl9MZXR0ZXIATW4sTm9uc3BhY2luZ19NYXJrAE1jLFNwYWNpbmdfTWFyawBNZSxFbmNsb3NpbmdfTWFyawBOZCxEZWNpbWFsX051bWJlcixkaWdpdABObCxMZXR0ZXJfTnVtYmVyAE5vLE90aGVyX051bWJlcgBTbSxNYXRoX1N5bWJvbABTYyxDdXJyZW5jeV9TeW1ib2wAU2ssTW9kaWZpZXJfU3ltYm9sAFNvLE90aGVyX1N5bWJvbABQYyxDb25uZWN0b3JfUHVuY3R1YXRpb24AUGQsRGFzaF9QdW5jdHVhdGlvbgBQcyxPcGVuX1B1bmN0dWF0aW9uAFBlLENsb3NlX1B1bmN0dWF0aW9uAFBpLEluaXRpYWxfUHVuY3R1YXRpb24AUGYsRmluYWxfUHVuY3R1YXRpb24AUG8sT3RoZXJfUHVuY3R1YXRpb24AWnMsU3BhY2VfU2VwYXJhdG9yAFpsLExpbmVfU2VwYXJhdG9yAFpwLFBhcmFncmFwaF9TZXBhcmF0b3IAQ2MsQ29udHJvbCxjbnRybABDZixGb3JtYXQAQ3MsU3Vycm9nYXRlAENvLFByaXZhdGVfVXNlAExDLENhc2VkX0xldHRlcgBMLExldHRlcgBNLE1hcmssQ29tYmluaW5nX01hcmsATixOdW1iZXIAUyxTeW1ib2wAUCxQdW5jdHVhdGlvbixwdW5jdABaLFNlcGFyYXRvcgBDLE90aGVyAEGAvwILsAgOAAAAPgAAAMABAAAADgAAAPAAAAAAfwAAAIADAQAAPEFTQ0lJX0hleF9EaWdpdCxBSGV4AEJpZGlfQ29udHJvbCxCaWRpX0MARGFzaABEZXByZWNhdGVkLERlcABEaWFjcml0aWMsRGlhAEV4dGVuZGVyLEV4dABIZXhfRGlnaXQsSGV4AElEU19CaW5hcnlfT3BlcmF0b3IsSURTQgBJRFNfVHJpbmFyeV9PcGVyYXRvcixJRFNUAElkZW9ncmFwaGljLElkZW8ASm9pbl9Db250cm9sLEpvaW5fQwBMb2dpY2FsX09yZGVyX0V4Y2VwdGlvbixMT0UATm9uY2hhcmFjdGVyX0NvZGVfUG9pbnQsTkNoYXIAUGF0dGVybl9TeW50YXgsUGF0X1N5bgBQYXR0ZXJuX1doaXRlX1NwYWNlLFBhdF9XUwBRdW90YXRpb25fTWFyayxRTWFyawBSYWRpY2FsAFJlZ2lvbmFsX0luZGljYXRvcixSSQBTZW50ZW5jZV9UZXJtaW5hbCxTVGVybQBTb2Z0X0RvdHRlZCxTRABUZXJtaW5hbF9QdW5jdHVhdGlvbixUZXJtAFVuaWZpZWRfSWRlb2dyYXBoLFVJZGVvAFZhcmlhdGlvbl9TZWxlY3RvcixWUwBXaGl0ZV9TcGFjZSxzcGFjZQBCaWRpX01pcnJvcmVkLEJpZGlfTQBFbW9qaQBFbW9qaV9Db21wb25lbnQsRUNvbXAARW1vamlfTW9kaWZpZXIsRU1vZABFbW9qaV9Nb2RpZmllcl9CYXNlLEVCYXNlAEVtb2ppX1ByZXNlbnRhdGlvbixFUHJlcwBFeHRlbmRlZF9QaWN0b2dyYXBoaWMsRXh0UGljdABEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50LERJAElEX1N0YXJ0LElEUwBDYXNlX0lnbm9yYWJsZSxDSQBBU0NJSQBBbHBoYWJldGljLEFscGhhAEFueQBBc3NpZ25lZABDYXNlZABDaGFuZ2VzX1doZW5fQ2FzZWZvbGRlZCxDV0NGAENoYW5nZXNfV2hlbl9DYXNlbWFwcGVkLENXQ00AQ2hhbmdlc19XaGVuX0xvd2VyY2FzZWQsQ1dMAENoYW5nZXNfV2hlbl9ORktDX0Nhc2Vmb2xkZWQsQ1dLQ0YAQ2hhbmdlc19XaGVuX1RpdGxlY2FzZWQsQ1dUAENoYW5nZXNfV2hlbl9VcHBlcmNhc2VkLENXVQBHcmFwaGVtZV9CYXNlLEdyX0Jhc2UAR3JhcGhlbWVfRXh0ZW5kLEdyX0V4dABJRF9Db250aW51ZSxJREMATG93ZXJjYXNlLExvd2VyAE1hdGgAVXBwZXJjYXNlLFVwcGVyAFhJRF9Db250aW51ZSxYSURDAFhJRF9TdGFydCxYSURTAEHAxwILtCCBACgAlwAqAIGAKgCXwCsAFYEsAJcALQCBQC0AlwAuABVBLgCZAS8AFiAwAEIIQABCikQAQgRKAJYATAAXgUwAQgJNAEJDTgAvwU8AQsNQAL9AUgBCA1MAQglVAEIIWgCWAF4AQkNe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ANEA1wDdAOAA5gD4AAgBCgFzABABEgEUASABLAFEAU0BUwFiAWgBagF2AZIBlAGpAbsBxwHRAdUBuQLXATsA2QHbAbcA4QH8AQwCGAIdAiMCJwKjAzMCPwJCAksCTgJRAl0CYAJpAmwCbwJ1AngCgQKKApwCnwKjAq8CuQLFAskCzQLRAtUC5wLtAvEC9QL5Av0CBQMJAw0DEwMXAxsDIwMnAysDLwM1Az0DQQNJA00DUQMLD1cDWwNfA2MDZwNrA28DcwN5A30DgQOFA4kDjQORA5UDmQOdA6ED3BClA8kDzQPZA90D4QPvA/EDPQRPBJkE8AQCBUoFZAVsBXAFcwWaBfoF/gUHBgsGFAYYBh4GIgYoBo4GlAaYBp4GogarBqwD8watA/YGrgP5Bq8D/AbMA/8GzQMCB84DBQcJBw0HEQeGAzIHNQe5AzcHOweIA1MHiQNWB5ADaweKA3cHsAOJB44DmQefB6MHjAO4B48Duwe0AL4HwAfCBxAgywcuAM0HzwcgANIH1gfbB98H5AfqB/AHIAD2BxIiAQgFCAcIHQglCCcIQwAtCDAIkAE2CDkITgBFCEcITAhOCFEIWgCpA1oAUwhXCGAIaQBiCGUIbwh0CHoIfgiiCEkApAimCKkIVgCrCK0IsAi0CFgAtgi4CLsIwAjCCMUIdgDHCMkIzAjQCHgA0gjUCNcI2wjeCOQI5wjwCPMI9gj5CAIJBgkLCQ8JFAkXCRoJIwksCTsJPglBCUQJRwlKCVYJXAlgCWIJZAloCWoJcAl4CXwJgAmGCYkJjwmRCTAAkwmZCZwJngmhCaQJYS3Na5+fpgmxCbwJxwmVCqEKFQsgACcLMQuNC6ELpQupC60LsQu1C7kLvQvBC8ULIQw1DDkMPQxBDEUMSQxNDFEMVQxZDG8McQxzDKAMvAzcDOQM7Az0DPwMBA0MDRQNIg0uDXoNgg2FDYkNjQ2dDbENtQ28DcINxg0oDiwOMA4yDjYOPA4+DkEOQw5GDncOew6JDo4OlA6cDqMOqQ60Dr4Oxg7KDs8O2Q7dDuQO7A7zDvgOBA8KDxUPGw8iDygPMw89D0UPTA9RD1cPXg9jD2kPcA92D30Pgg+JD40Png+kD6kPrQ+4D74PyQ/QD9YP2g/hD+UP7w/6DwAQBBAJEA8QExAaEB8QIxApEC8QMhA2EDkQPxBFEFkQYRB5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";if(!S(T)){var ka=T;T=b.locateFile?b.locateFile(ka,t):t+ka;}function la(){var a=T;try{if(a==T&&v)return new Uint8Array(v);if(S(a))try{var c=ma(a.slice(37)),d=new Uint8Array(c.length);for(a=0;a<c.length;++a)d[a]=c.charCodeAt(a);var e=d;}catch(g){throw Error("Converting base64 string to bytes failed.");}else e=void 0;var f=e;if(f)return f;throw"both async and sync fetching of the wasm failed";}catch(g){w(g);}}function na(){return v||"function"!==typeof fetch?Promise.resolve().then(function(){return la();}):fetch(T,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+T+"'";return a.arrayBuffer();}).catch(function(){return la();});}function V(a){for(;0<a.length;){var c=a.shift();if("function"==typeof c)c(b);else{var d=c.B;"number"===typeof d?void 0===c.A?O.get(d)():O.get(d)(c.A):d(void 0===c.A?null:c.A);}}}function W(a){var c=L(a)+1,d=M(c);D(a,E,d,c);return d;}function oa(){}var pa=[null,[],[]];function qa(){function a(k){return(k=k.toTimeString().match(/\(([A-Za-z ]+)\)$/))?k[1]:"GMT";}if(!ra){ra=!0;var c=new Date().getFullYear(),d=new Date(c,0,1),e=new Date(c,6,1);c=d.getTimezoneOffset();var f=e.getTimezoneOffset(),g=Math.max(c,f);N[sa()>>2]=60*g;N[ta()>>2]=Number(c!=f);d=a(d);e=a(e);d=ba(d);e=ba(e);f<c?(N[X()>>2]=d,N[X()+4>>2]=e):(N[X()>>2]=e,N[X()+4>>2]=d);}}var ra;oa=(a,c,d)=>{a=H(a);c=null!==c?JSON.parse(H(c)):[];try{const e=b.externalCall(a,c);return e?W(e):null;}catch(e){return b.HEAPU8[d]=1,W(e.message);}};var ma="function"===typeof atob?atob:function(a){var c="",d=0;a=a.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));e=e<<2|f>>4;f=(f&15)<<4|g>>2;var m=(g&3)<<6|k;c+=String.fromCharCode(e);64!==g&&(c+=String.fromCharCode(f));64!==k&&(c+=String.fromCharCode(m));}while(d<a.length);return c;},ua={a:function(a,c,d,e){w("Assertion failed: "+H(a)+", at: "+[c?H(c):"unknown filename",d,e?H(e):"unknown function"]);},b:function(){w();},g:oa,f:function(a,c){a=H(a);let d;try{d=window.JSON.parse(a);}catch(e){d=a;}0!==c?window.alert(a):window.console.log("DUMP",d);},e:function(a){var c=E.length;a>>>=0;if(2147483648<a)return!1;for(var d=1;4>=d;d*=2){var e=c*(1+.2/d);e=Math.min(e,a+100663296);e=Math.max(a,e);0<e%65536&&(e+=65536-e%65536);a:{try{x.grow(Math.min(2147483648,e)-ca.byteLength+65535>>>16);da();var f=1;break a;}catch(g){}f=void 0;}if(f)return!0;}return!1;},d:function(a,c,d,e){for(var f=0,g=0;g<d;g++){for(var k=N[c+8*g>>2],m=N[c+(8*g+4)>>2],y=0;y<m;y++){var l=E[k+y],p=pa[a];0===l||10===l?((1===a?aa:u)(K(p,0)),p.length=0):p.push(l);}f+=m;}N[e>>2]=f;return 0;},c:function(a){var c=Date.now();N[a>>2]=c/1E3|0;N[a+4>>2]=c%1E3*1E3|0;return 0;},h:function(a,c){qa();a=new Date(1E3*N[a>>2]);N[c>>2]=a.getSeconds();N[c+4>>2]=a.getMinutes();N[c+8>>2]=a.getHours();N[c+12>>2]=a.getDate();N[c+16>>2]=a.getMonth();N[c+20>>2]=a.getFullYear()-1900;N[c+24>>2]=a.getDay();var d=new Date(a.getFullYear(),0,1);N[c+28>>2]=(a.getTime()-d.getTime())/864E5|0;N[c+36>>2]=-(60*a.getTimezoneOffset());var e=new Date(a.getFullYear(),6,1).getTimezoneOffset();d=d.getTimezoneOffset();a=(e!=d&&a.getTimezoneOffset()==Math.min(d,e))|0;N[c+32>>2]=a;a=N[X()+(a?4:0)>>2];N[c+40>>2]=a;return c;},i:function(a){a=H(a);window.console.log(a);},j:function(a,c,d,e){a=H(a);c=H(c);d=H(d);d=`Quickjs -- ${a}: ${c}\n${d}`;0!==e?window.alert(d):window.console.error(d);}};(function(){function a(f){b.asm=f.exports;x=b.asm.k;da();O=b.asm.t;fa.unshift(b.asm.l);P--;b.monitorRunDependencies&&b.monitorRunDependencies(P);0==P&&(null!==Q&&(clearInterval(Q),Q=null),R&&(f=R,R=null,f()));}function c(f){a(f.instance);}function d(f){return na().then(function(g){return WebAssembly.instantiate(g,e);}).then(f,function(g){u("failed to asynchronously prepare wasm: "+g);w(g);});}var e={a:ua};P++;b.monitorRunDependencies&&b.monitorRunDependencies(P);if(b.instantiateWasm)try{return b.instantiateWasm(e,a);}catch(f){return u("Module.instantiateWasm callback failed with error: "+f),!1;}(function(){return v||"function"!==typeof WebAssembly.instantiateStreaming||S(T)||"function"!==typeof fetch?d(c):fetch(T,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(c,function(g){u("wasm streaming compile failed: "+g);u("falling back to ArrayBuffer instantiation");return d(c);});});})().catch(n);return{};})();b.___wasm_call_ctors=function(){return(b.___wasm_call_ctors=b.asm.l).apply(null,arguments);};b._evalInSandbox=function(){return(b._evalInSandbox=b.asm.m).apply(null,arguments);};b._nukeSandbox=function(){return(b._nukeSandbox=b.asm.n).apply(null,arguments);};b._init=function(){return(b._init=b.asm.o).apply(null,arguments);};b._commFun=function(){return(b._commFun=b.asm.p).apply(null,arguments);};b._dumpMemoryUse=function(){return(b._dumpMemoryUse=b.asm.q).apply(null,arguments);};var M=b._malloc=function(){return(M=b._malloc=b.asm.r).apply(null,arguments);};b._free=function(){return(b._free=b.asm.s).apply(null,arguments);};var X=b.__get_tzname=function(){return(X=b.__get_tzname=b.asm.u).apply(null,arguments);},ta=b.__get_daylight=function(){return(ta=b.__get_daylight=b.asm.v).apply(null,arguments);},sa=b.__get_timezone=function(){return(sa=b.__get_timezone=b.asm.w).apply(null,arguments);},G=b.stackSave=function(){return(G=b.stackSave=b.asm.x).apply(null,arguments);},I=b.stackRestore=function(){return(I=b.stackRestore=b.asm.y).apply(null,arguments);},C=b.stackAlloc=function(){return(C=b.stackAlloc=b.asm.z).apply(null,arguments);};b.ccall=B;b.cwrap=function(a,c,d,e){d=d||[];var f=d.every(function(g){return"number"===g;});return"string"!==c&&f&&!e?A(a):function(){return B(a,c,d,arguments,e);};};b.stringToNewUTF8=W;var Y;R=function va(){Y||Z();Y||(R=va);};function Z(){function a(){if(!Y&&(Y=!0,b.calledRun=!0,!z)){V(fa);V(ha);h(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for("function"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var c=b.postRun.shift();ia.unshift(c);}V(ia);}}if(!(0<P)){if(b.preRun)for("function"==typeof b.preRun&&(b.preRun=[b.preRun]);b.preRun.length;)ja();V(ea);0<P||(b.setStatus?(b.setStatus("Running..."),setTimeout(function(){setTimeout(function(){b.setStatus("");},1);a();},1)):a());}}b.run=Z;if(b.preInit)for("function"==typeof b.preInit&&(b.preInit=[b.preInit]);0<b.preInit.length;)b.preInit.pop()();Z();return Module.ready;};}();var _default=Module;exports["default"]=_default;
+Object.defineProperty(exports, "__esModule", ({value:true}));exports["default"]=void 0;var Module=(()=>{var _scriptDir=typeof document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return function(Module){Module=Module||{};var b;b||(b=typeof Module!=='undefined'?Module:{});var h=Object.assign,n,q;b.ready=new Promise(function(a,c){n=a;q=c;});var r=h({},b),t="";"undefined"!==typeof document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf("blob:")?t=t.substr(0,t.replace(/[?#].*/,"").lastIndexOf("/")+1):t="";var aa=b.print||console.log.bind(console),u=b.printErr||console.warn.bind(console);h(b,r);r=null;var v;b.wasmBinary&&(v=b.wasmBinary);var noExitRuntime=b.noExitRuntime||!0;"object"!==typeof WebAssembly&&x("no native wasm support detected");var y,z=!1;function A(a,c,d,e){var f={string:function(l){var p=0;if(null!==l&&void 0!==l&&0!==l){var T=(l.length<<2)+1;p=B(T);C(l,D,p,T);}return p;},array:function(l){var p=B(l.length);E.set(l,p);return p;}};a=b["_"+a];var g=[],k=0;if(e)for(var m=0;m<e.length;m++){var w=f[d[m]];w?(0===k&&(k=F()),g[m]=w(e[m])):g[m]=e[m];}d=a.apply(null,g);return d=function(l){0!==k&&G(k);return"string"===c?H(l):"boolean"===c?!!l:l;}(d);}var I="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function J(a,c,d){var e=c+d;for(d=c;a[d]&&!(d>=e);)++d;if(16<d-c&&a.subarray&&I)return I.decode(a.subarray(c,d));for(e="";c<d;){var f=a[c++];if(f&128){var g=a[c++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|g);else{var k=a[c++]&63;f=224==(f&240)?(f&15)<<12|g<<6|k:(f&7)<<18|g<<12|k<<6|a[c++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023));}}else e+=String.fromCharCode(f);}return e;}function H(a){return a?J(D,a,void 0):"";}function C(a,c,d,e){if(0<e){e=d+e-1;for(var f=0;f<a.length;++f){var g=a.charCodeAt(f);if(55296<=g&&57343>=g){var k=a.charCodeAt(++f);g=65536+((g&1023)<<10)|k&1023;}if(127>=g){if(d>=e)break;c[d++]=g;}else{if(2047>=g){if(d+1>=e)break;c[d++]=192|g>>6;}else{if(65535>=g){if(d+2>=e)break;c[d++]=224|g>>12;}else{if(d+3>=e)break;c[d++]=240|g>>18;c[d++]=128|g>>12&63;}c[d++]=128|g>>6&63;}c[d++]=128|g&63;}}c[d]=0;}}function K(a){for(var c=0,d=0;d<a.length;++d){var e=a.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:c+4;}return c;}function L(a){var c=K(a)+1,d=M(c);d&&C(a,E,d,c);return d;}var ba,E,D,N;function ca(){var a=y.buffer;ba=a;b.HEAP8=E=new Int8Array(a);b.HEAP16=new Int16Array(a);b.HEAP32=N=new Int32Array(a);b.HEAPU8=D=new Uint8Array(a);b.HEAPU16=new Uint16Array(a);b.HEAPU32=new Uint32Array(a);b.HEAPF32=new Float32Array(a);b.HEAPF64=new Float64Array(a);}var O,da=[],ea=[],fa=[];function ha(){var a=b.preRun.shift();da.unshift(a);}var P=0,Q=null,R=null;b.preloadedImages={};b.preloadedAudios={};function x(a){if(b.onAbort)b.onAbort(a);a="Aborted("+a+")";u(a);z=!0;a=new WebAssembly.RuntimeError(a+". Build with -s ASSERTIONS=1 for more info.");q(a);throw a;}function S(a){return a.startsWith("data:application/octet-stream;base64,");}var U;U="data:application/octet-stream;base64,AGFzbQEAAAABxQZsYAR/fn9/AX5gA39/fwF/YAJ/fwF/YAJ/fwBgAX8Bf2AFf35/f38BfmADf39/AGABfAF8YAF/AGACf34BfmACf34AYAR/f39/AX9gAn9/AX5gAn9+AX9gA39/fgF/YAN/fn8BfmABfgF/YAN/fn8AYAZ/fn9/f38BfmADf35/AX9gBX9/f39/AX9gBn9+fn9/fwF+YAN/fn4BfmAEf39+fwF/YAN/f38BfmAEf39/fwBgBH9/f38BfmAGf39/f39/AX9gBX9+fn5+AGABfwF+YAN/fn4Bf2ACfHwBfGABfgF+YAV/fn9+fwF/YAV/fn5/fwF+YAd/fn9+fn5/AX9gAAF/YAAAYAV/f39/fwBgBH9+fn8AYAV/fn5+fwF/YAd/f39/f39/AX9gBn9+f35+fwF/YAR/fn9+AX5gAn5/AX9gBH9+fn8Bf2ACfn8AYAl/f39/f39/f38Bf2AEf35+fwF+YAZ/f39/f38BfmADf35+AGAEf35/fwF/YAV/fn5/fwBgB39+f39/f38BfmADf39+AGAEf35/fwBgBH9+f34Bf2AEf35+fgF/YAR/f39+AX9gCH9/f39/f39/AX9gB39/f39/f38AYAJ8fwF8YAN+f38Bf2ADfHx/AXxgAn5+AX5gBH9/fn8AYAR/fn5+AX5gBn98f39/fwF/YAV/fn9+fwF+YAF8AX5gAX4BfGAFf39+f38Bf2AGf39+fn5+AX9gBn9/f39/fwBgAn98AGAEf39+fwF+YAR/fn9+AGAFf39/f34BfmAHf35+fn9/fwF+YAR+fn5+AX9gCn9/f39/f39/f38Bf2AHf39/f39/fgF+YAd8f39/f39/AGADf39+AX5gBX9/f39/AX5gBX9+f39/AGAFf3x/f38BfmAGf35+fn5/AX9gBH98f38Bf2ACf38BfGAGf35/f39/AX9gBX9/fn5/AX9gBX9+f39/AX9gBn9/fn5/fwF/YAV/fn5+fgF/YAR/f35+AX9gBX9/fn5+AX5gB39/f35+fn8Bf2ADfn5+AX9gBH9/f34BfmACfH8Bf2ACfHwBf2AIf35+fn5/fn4BfmADf358AX5gAAF+YAJ+fgF8YAF/AXxgA39/fAACPQoBYQFhABkBYQFiACUBYQFjAAIBYQFkAAsBYQFlAAQBYQFmAAMBYQFnAAEBYQFoAAIB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Rw8LIAGnDwsgAacpAgQhBCAAIAEQCiAEQv////8Hg0IAUg8LIAGnLQAFIQIgACABEAogAkF/c0GAAXFBB3YPCyADQQdrQW1NBEAgARBJIgVEAAAAAAAAAABiIAW9Qv///////////wCDQoGAgICAgID4/wBUcQ8LIAAgARAKQQEhAgsgAgsZACAAKAIQIAEQ5gEiAUUEQCAAEMcBCyABCz8BAX8jAEEQayICJAACfyABIAAoAhBHBEAgAiABNgIAIABBtf0AIAIQE0F/DAELIAAQDwshACACQRBqJAAgAAsiACAALQAHQYABcQRAIAAgAUEBdGovARAPCyAAIAFqLQAQCygBAX8jAEEQayICJAAgAiABOwEOIAAgAkEOakECEIgBGiACQRBqJAALCwAgACABQQEQ4wUL5QoCBX8PfiMAQeAAayIFJAAgBEL///////8/gyINQg+GIANCMYiEIQ4gAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiC0IgiCEPIA1CEYghECAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgxCgICAgICAwP//AFQgDEKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEKDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQogAyEBDAILIAEgDEKAgICAgIDA//8AhYRQBEAgAiADhFAEQEKAgICAgIDg//8AIQpCACEBDAMLIApCgICAgICAwP//AIQhCkIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQCABIAyEIQJCACEBIAJQBEBCgICAgICA4P//ACEKDAMLIApCgICAgICAwP//AIQhCgwCCyABIAyEUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyAMQv///////z9YBEAgBUHQAGogASALIAEgCyALUCIGG3kgBkEGdK18pyIGQQ9rEHFBECAGayEGIAUpA1giC0IgiCEPIAUpA1AhAQsgAkL///////8/Vg0AIAVBQGsgAyANIAMgDSANUCIIG3kgCEEGdK18pyIIQQ9rEHEgBiAIa0EQaiEGIAUpA0giAkIPhiAFKQNAIgNCMYiEIQ4gAkIRiCEQCyADQg+GQoCA/v8PgyICIAFCIIgiBH4iEiADQhGIQv////8PgyIMIAFC/////w+DIgF+fCIRQiCGIg0gASACfnwiAyANVK0gAiALQv////8PgyILfiIVIAQgDH58IhMgDkL/////D4MiDSABfnwiFCARIBJUrUIghiARQiCIhHwiESACIA9CgIAEhCIOfiIWIAsgDH58Ig8gBCANfnwiEiAQQv////8Hg0KAgICACIQiAiABfnwiEEIghnwiF3whASAHIAlqIAZqQf//AGshBgJAIAsgDX4iGCAMIA5+fCIMIBhUrSAMIAIgBH58IgQgDFStfCACIA5+fCAEIAQgEyAVVK0gEyAUVq18fCIEVq18IAIgC34iCyANIA5+fCICIAtUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiACIBAgElStIA8gFlStIA8gElatfHxCIIYgEEIgiIR8IgJWrXwgAiACIBEgFFStIBEgF1atfHwiAlatfCIEQoCAgICAgMAAg1BFBEAgBkEBaiEGDAELIANCP4ghCyAEQgGGIAJCP4iEIQQgAkIBhiABQj+IhCECIANCAYYhAyALIAFCAYaEIQELIAZB//8BTgRAIApCgICAgICAwP//AIQhCkIAIQEMAQsCfiAGQQBMBEBBASAGayIHQYABTwRAQgAhAQwDCyAFQTBqIAMgASAGQf8AaiIGEHEgBUEgaiACIAQgBhBxIAVBEGogAyABIAcQoAIgBSACIAQgBxCgAiAFKQMwIAUpAziEQgBSrSAFKQMgIAUpAxCEhCEDIAUpAyggBSkDGIQhASAFKQMAIQIgBSkDCAwBCyAEQv///////z+DIAatQjCGhAsgCoQhCiADUCABQgBZIAFCgICAgICAgICAf1EbRQRAIAogAkIBfCIBIAJUrXwhCgwBCyADIAFCgICAgICAgICAf4WEUEUEQCACIQEMAQsgCiACIAJCAYN8IgEgAlStfCEKCyAAIAE3AwAgACAKNwMIIAVB4ABqJAALagECfwJAIAAoAtgCIgNFDQAgACgC4AIiBCAAKALcAk4NACAAKALoAiABSw0AIAAoAuQCIAJGDQAgAyAEQQN0aiIDIAI2AgQgAyABNgIAIAAgATYC6AIgACAEQQFqNgLgAiAAIAI2AuQC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AkACQAJAIAJBA0wEQAJAAkACQAJAAkACQAJAAkACQCABQdgAaw4JAAECAwQFBgcICgsgACACQT1rQf8BcRAODwsgACACQTlrQf8BcRAODwsgACACQTVrQf8BcRAODwsgACACQTFrQf8BcRAODwsgACACQS1rQf8BcRAODwsgACACQSlrQf8BcRAODwsgACACQSVrQf8BcRAODwsgACACQSFrQf8BcRAODwsgACACQR1rQf8BcRAODwsgAkH/AUsNAQJAAkACQCABQdgAaw4DAAECBAsgAEHAARAODAULIABBwQEQDgwECyAAQcIBEA4MAwsgAUEiRg0BCyAAIAFB/wFxEA4gACACQf//A3EQMA8LIAAgAkEUa0H/AXEQDg8LIAAgAkH/AXEQDgsbAQF/IAAgARA6BH9BAAUgAEGiNkEAEBRBfwsLGQEBfyABIAIQPyIDRQRAIAAgAhCdAwsgAwsmAQF/IwBBEGsiAiQAIAJBADYCDCAAQQEgAUEAEP0BIAJBEGokAAsZACAAKAIQIAEQmwIiAUUEQCAAEMcBCyABC20BAX8jAEGAAmsiBSQAIARBgMAEcSACIANMckUEQCAFIAFB/wFxIAIgA2siAkGAAiACQYACSSIBGxBFGiABRQRAA0AgACAFQYACEGUgAkGAAmsiAkH/AUsNAAsLIAAgBSACEGULIAVBgAJqJAALDwAgACgCQEGAAmogARAOC28CAX4BfyAAIQQCQAJAIAEQEA0AIAAgAUE7IAFBABASIgMQCwRAIAMPCyADECANASAAIAMQCiAAIAEQjwMiBA0AQoCAgIDgAA8LIAQoAiggAkEDdGopAwAQDSEDCyAAIAMgAhBQIQEgACADEAogAQsxACAAIAEgAkKAgICACHxC/////w9YBH4gAkL/////D4MFIAK5EBULIANBh4ABEMwCCxAAIAAgADYCBCAAIAA2AgALdQEBfiAAIAEgBH4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC/////w+DIgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCABIAJ+IANC/////w+DfCIBQiCIfDcDCCAAIAVC/////w+DIAFCIIaENwMAC1ABAX4CQCADQcAAcQRAIAEgA0FAaq2GIQJCACEBDAELIANFDQAgAiADrSIEhiABQcAAIANrrYiEIQIg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IAooAgwoAgBBGnZBPXEgBkECcXIQoAMNAwtBf0EBIAAgCSAKQQxqIAZBCHZBBXEiAEF/cyAKKAIMKAIAQRp2cSAAIAZxchCgAxshBwwCCyAAIAZBv9EAEHchBwwBC0F/IQcLIApBEGokACAHC0wBAn8jAEEQayIDJAACQCABQYCAAXFFBEAgAUGAgAJxRQ0BIAAQ+gFFDQELIANBADYCDCAAQQQgAkEAEP0BQX8hBAsgA0EQaiQAIAQLzAEBAn8CQCABQoCAgIBwWgRAIAGnIQMDQAJAIAMtAAVBBHFFDQAgACgCECgCRCADLwEGQRhsaigCFCIERQ0AIAQoAhBFDQAgACADrUKAgICAcIQQDSIBIAIgBCgCEBETACECIAAgARAKIAIPCyADrUKAgICAcIQQDSEBIABBACADIAIQUyEEIAAgARAKIAQNAgJAIAMvAQZBFWtB//8DcUEISw0AIAAgAhCmAyIERQ0AIARBH3UPCyADKAIQKAIsIgMNAAsLQQAhBAsgBAsaACAAIAEgAkEATgR+IAKtBSACuBAVCxCfAQsLACAAQf////8HcQu/CQIEfgR/IwBB8ABrIgokACAEQv///////////wCDIQUCQAJAIAFQIgkgAkL///////////8AgyIGQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIAZQG0UEQCADQgBSIAVCgICAgICAwP//AH0iB0KAgICAgIDAgIB/ViAHQoCAgICAgMCAgH9RGw0BCyAJIAZCgICAgICAwP//AFQgBkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAFQoCAgICAgMD//wBUIAVCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIAZCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIJGyEEQgAgASAJGyEDDAILIAMgBUKAgICAgIDA//8AhYRQDQEgASAGhFAEQCADIAWEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAWEUEUNACABIQMgAiEEDAELIAMgASABIANUIAUgBlYgBSAGURsiCxshBSAEIAIgCxsiB0L///////8/gyEGIAIgBCALGyICQjCIp0H//wFxIQwgB0IwiKdB//8B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IQgMAgsgAEHwABAMQcoAIQgMAQsgACAIEAwLIAEgCDYCACACIAs2AgAgAyAKNgIAIAQgBzYCACAFBEAgBSAMNgIAC0EAC1oBA38jAEEQayIBJAACQCAAKAIQIgNBqn9GDQAgA0E7RwRAIANB/QBGDQEgACgCMA0BIAFBOzYCACAAQbX9ACABEBNBfyECDAELIAAQDyECCyABQRBqJAAgAgsZACABIAJBD3E6AAQgAUEIaiAAQdAAahBLC7UBAQV/IwBBIGsiBSQAAn4CQCACQoCAgIBwg0KAgICAkH9SBEAgACACEDwiAhALDQELIAAgBUEIaiABEEIiByADEEIiCGogAqciBigCBCIEQf////8HcWogBEEfdhCrAw0AIAVBCGoiBCABIAcQnAIaIAQgBkEAIAYoAgRB/////wdxEFcaIAQgAyAIEJwCGiAAIAIQCiAEEDcMAQsgACACEApCgICAgOAACyECIAVBIGokACACCzsAAn8gACABQYCABE8Ef0F/IAAgAUGAgARrQQp2QYCwA2oQlAENARogAUH/B3FBgLgDcgUgAQsQlAELC1EAIABB/wBNBEAgAEEDdkH8////AXFB4OABaigCACAAdkEBcQ8LIABBfnFBjMAARiAAELcEBH9BAQUgAEHggQJB4IYCQRQQ4AJBAEcLQQBHcgtTAQF/IAFCgICAgHBaBH8gAacvAQYiAkEpRgRAAn9BACABQSkQPyICRQ0AGiACLQARBEAgABDKAkF/DAELIAAgAikDABDAAQsPCyACQQJGBUEACwvJAgIBfgJ/IwBBEGsiBSQAAkAgAUKAgICAcFQEQCABIQMMAQsgAkFvcSEEAkACQAJAIAJBEHENACAAIAFBwgEgAUEAEBIiAxALDQEgAxAQDQAgAxAmDQAgBSAAQcYAQRYgBEEBRhtByAAgBBsQMTcDCCAAIAMgAUEBIAVBCGoQNSEDIAAgBSkDCBAKIAMQCw0BIAAgARAKIANCgICAgHBUDQMgACADEAogAEH0yABBABAUDAILIARBAEchBEEAIQIDQCACQQJHBEAgACABQTdBOSACIARGGyABQQAQEiIDEAsNAgJAIAAgAxA6RQ0AIAAgAyABQQBBABA1IgMQCw0DIANC/////29WDQAgACABEAoMBQsgACADEAogAkEBaiECDAELCyAAQfTIAEEAEBQLIAAgARAKC0KAgICA4AAhAwsgBUEQaiQAIAMLVwECfyMAQRBrIgMkAEF/IQQgACADQQhqIAIQjQRFBEBBACEEIAEgAykDCCICQoCAgICAgIAQWgR+IABBvw4QaUF/IQRCAAUgAgs3AwALIANBEGokACAECw0AIAAgASACEA0QzgULzAECAX8BfAJ/A0ACQAJAAn8CQAJAIAIQVA4IAAAAAAQEBAEECyACpwwBCyACEEkiBL0iAkI0iKdB/w9xIgNBnQhLDQEgBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLIQBBAAwDC0EAIQBBACADQdIISw0CGiACQv////////8Hg0KAgICAgICACIQgA0GTCGuthkIgiKciAEEAIABrIAJCAFkbIQBBAAwCCyAAIAIQngEiAhALRQ0AC0EAIQBBfwshAyABIAA2AgAgAwsLACAAIAEgAhCSAgsvAQF/IwBB0ABrIgMkACADIAAgA0EQaiABEIcBNgIAIAAgAiADEBQgA0HQAGokAAssAQF/IAAoAhAiAS0AiAFFBEAgAUEBOgCIASAAQdoLQQAQTSABQQA6AIgBCwsNACAAIAEgARBCEK0DCxYAIAAgASACIAMgBCAFIAApAzAQigILGwAgACABQf8BcRAOIAAgAiAAKAIEa0EEaxAcC44BAQJ/IwBBEGsiAiQAAn8gAQRAIABBIGogACAAQcEAa0EaSRsgAEH/AE0NARogAkEEaiAAQQIQtwMaIAIoAgQMAQsgAEEgayAAIABB4QBrQRpJGyAAQf8ATQ0AGiACQQRqIABBABC3AyEBIAIoAgQiAyAAIANB/wBLGyAAIAFBAUYbCyEAIAJBEGokACAAC2YBAX8Cf0EAIAAoAggiAiABTw0AGkF/IAAoAgwNABogACgCFCAAKAIAIAJBA2xBAXYiAiABIAEgAkkbIgEgACgCEBEBACICRQRAIABBATYCDEF/DwsgACABNgIIIAAgAjYCAEEACwtVAQJ/AkAgAUKAgICAcFQNACABpyIDLwEGIgRBCktBASAEdEHwCXFFcg0AIAAgAykDIBAKIAMgAjcDIA8LIAAgAhAKIAEQC0UEQCAAQaXMAEEAEBQLCycAIAAgACkDwAEgAiABEA0iAUEDEOsBGiAAIAEgAxDuBSAAIAEQCgsgAQF+IAAgACACIAEgA0EEQQAQyQEiBSABIAQQzgEgBQuNAgECfyMAQTBrIgUkAAJ/IAIgASgCAE8EQCAFIAI2AiQgBSADNgIgIABBkPgAIAVBIGoQTUF/DAELAkAgASgCBCAETg0AIAEgBDYCBCAEQf//A0gNACAFIAI2AgQgBSADNgIAIABBuPgAIAUQTUF/DAELIAEoAgggAkEBdGoiAy8BACIGQf//A0cEQEEAIAQgBkYNARogBSACNgIYIAUgBDYCFCAFIAY2AhAgAEHp9wAgBUEQahBNQX8MAQsgAyAEOwEAQX8gACABQQxqQQQgAUEUaiABKAIQQQFqEH4NABogASABKAIQIgBBAWo2AhAgASgCDCAAQQJ0aiACNgIAQQALIQMgBUEwaiQAIAMLawEBfgJAIAJFIAFCgICAgHCDQoCAgICQf1JyDQAgARANIQMgACgCACADpxCkBCICRQ0AIAIQXA0AIABBBBAMIAAgAhA4QQAPCyAAIAEQDRDTAyICQQBIBEBBfw8LIABBAhAMIAAgAhA4QQAL+AIAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQccAaw4EAQ0NAgALIAFBPEcEQCABQbwBRwRAIAFBtgFGDQcgAUHBAEcNDgtBFSEEAkAgBQ4FBgYFBAAOC0EbIQQMBAsgACgCACADEBEgACAEEB0LQbEBIQQCQAJAAkAgBQ4FBQYAAQIOC0EWIQQMBAtBGSEEDAMLQR0hBAwCC0EXIQECQCAFDgUKCgkIAAsLQR8hAQwIC0EYIQQLIAAgBBAMCwJAIAFBxwBrDgQDCAgHAAsgAUE8Rg0DIAFBwQBGDQggAUG8AUYNASABQbYBRw0HCyAFQQJPDQggAEG7AUG3ASAGGxAMDAkLIABBvgEQDAwICyAAQckAEAwPCyAAQT0QDA8LQRohAQsgACABEAwLIABBywAQDA8LEAEACyAAQcMAEAwgACADEDgPC0HO6wBBt+MAQbe5AUGAyQAQAAALIAAgAxA4IAAgAkH//wNxEBYLzRIBCn8jAEFAaiIGJAAgBEEASARAIAAgBkEoakEAEKYBGiAGKAIoQQJxIQQLIAAQNCEKIAAQNCELIAAoAkAoAoQCIQ0CQCADBEAgAEEREAwgAEEGEAwgAEGrARAMIABB6gAgChAbGiAAIAsQHQwBCyAAQesAIAoQGxogACALEB0gAEEREAwLIAAoAkAoAoQCIQ4CQAJAAkACQAJAIAAoAhAiB0HbAEcEQCAHQfsARgRAQX8hByAAEA8NBiAAQe8AEAwgBARAIABBCxAMIABBGxAMCyABQUlGIAFBUUZyIQwgAUGxf0chDwNAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIQIgdBpX9HBEAgB0H9AEYNCyAAIAZBOGpBAEEBQQAQ0gMiB0EASA0SIAZBtgE2AjAgBkEANgI0IAAoAkAiCSgCvAEhCCAGQX82AjwgBiAINgIsIAZBADYCCCAHDQIgABAPRQ0BIAYoAjghBwwGCyAERQRAIAAoAgBB8zpBABBNDBILQX8hByAAEA8NEgJAIAEEQCAGIAAgAhDRAyIINgI0IAhFDRQgBkG2ATYCMCAAKAJAKAK8ASEHIAZBfzYCPCAGIAc2AiwgBkEANgIIDAELIAAQsgINEyAAIAZBMGogBkEsaiAGQTRqIAZBPGogBkEIakEAQfsAELoBDRMLIAAoAhBB/QBGDQIgAEH/FEEAEBMMEAsCQCAAKAIQQSByQfsARw0AIAAgBkEoakEAEKYBIgdBLEYgB0H9AEZyRSAHQT1HcQ0AAkAgBigCOCIHRQRAIAQEQCAAQfAAEAwgAEEYEAwgAEEHEAwgAEHRABAMIABBGBAMCyAAQcgAEAwMAQsgBARAIABBGxAMIABBBxAMIABBzAAQDCAAIAcQGiAAQRsQDAsgAEHCABAMIAAgBxA4C0F/IQcgACABIAJBAUF/QQEQ0wFBAEgNEiAAKAIQQf0ARg0KIABBLBAuRQ0LDBILAkACfyAGKAI4IgdFBEAgAEHxABAMIARFBEBBEiEIDAMLQRghCSAAQRgQDCAAQQcQDCAAQdEAEAxBEgwBCyAERQRAQREhCAwCC0EbIQkgAEEbEAwgAEEHEAwgAEHMABAMIAAgBxAaQRELIQggACAJEAwLIAAgCBAMIAEEQCAGIAAgAhDRAyIINgI0IAhFDQUgB0UNBAwGCyAAELICDQQMAgsCQCACBH8gACAGKAI4IgcQ7QQNBSAAKAJABSAJCy0AbkEBcUUNACAGKAI4IgdBzQBHIAdBOkdxDQAgAEH5GkEAEBMMBAsgBARAIABBGxAMIABBBxAMIABBzAAQDCAAIAYoAjgQGiAAQRsQDAsgAUEAIA8bRQRAIABBERAMIABBtgEQDCAAIAYoAjgiBxAaIAAgACgCQC8BvAEQFgwCCyAGIAAoAgAgBigCOBAXIgc2AjQgAEHCABAMIAAgBxA4DAYLIABBCxAMIABB0wAQDCAAIAYoAggiB0ECdEEEaiAHQQV0QUBrckH8AXEQbAwECyAAIAZBMGogBkEsaiAGQTRqIAZBPGogBkEIakEAQfsAELoBDQEgBigCCCEIAkACQCAHRQRAQR4hBwJAIAhBAWsOAwMCAAQLQSAhByAAQSAQDAwCCyAIQQFrIghBA08NBCAAIAhBAXRBG2pB/wFxEAwMBAtBHCEHCyAAIAcQDAsgAEHHABAMDAILIAAoAgAgBxARDAoLIABBwQAQDCAAIAcQOAsgAUUNASAGKAI0IQcLIAAgByABELUCDQcgBiAAKAJAKAK8ATYCLAsCQCAAKAIQQT1HBEAgBigCMCEHDAELIABBERAMIABBBhAMIABBqwEQDCAAQekAQX8QGyEIIAAQDw0HIABBDhAMIAAQYA0HIAYoAjAiB0G2AUcgB0E8R3FFBEAgACAGKAI0EKoBCyAAIAgQHQsgACAHIAYoAiwgBigCNCAGKAI8QQEgDBDSASAAKAIQQf0ARg0AQX8hByAAQSwQLkUNAQwICwsgAEEOEAwgBARAIABBDhAMC0F/IQcgABAPRQ0CDAYLIABBog9BABATDAQLIAAQDw0DIAAoAkAgBkEIakEAQX9Bf0ECEKgBIAZBATYCJCAAQf0AEAwgAUFJRiABQVFGciEMA0ACQCAAKAIQIgdB3QBGDQAgByIEQaV/RyIJRQRAIAAQDw0GQfL1ACEIIAAoAhAiBEEsRiAEQd0ARnINBAsCQAJAIARB+wBGIARB2wBGckUEQCAEQSxHDQEgAEGAARAMIABBABBsIABBDhAMIABBDhAMDAILIAAgBkEoakEAEKYBIgRBLEYgBEHdAEZyRSAEQT1HcQ0AAkAgCUUEQCAEQT1GBEBBqskAIQgMCAsgAEEAEOwEDAELIABBgAEQDCAAQQAQbCAAQQ4QDAsgACABIAJBASAGKAIoQQJxQQEQ0wFBAEgNBwwBCyAGQQA2AjggBkEANgI0AkAgAQRAIAYgACACENEDIgQ2AjQgBEUNByAAIAQgARC1Ag0HIAZBtgE2AjAgBiAAKAJAKAK8ATYCLAwBCyAAELICDQcgACAGQTBqIAZBLGogBkE0aiAGQTxqIAZBOGpBAEHbABC6AQ0HCwJAIAlFBEAgACAGKAI4EOwEDAELIABBgAEQDCAAIAYtADgQbCAAQQ4QDCAAKAIQQT1HDQAgAEEREAwgAEEGEAwgAEGrARAMIABB6QBBfxAbIQQgABAPDQYgAEEOEAwgABBgDQYgBigCMCIIQbYBRyAIQTxHcUUEQCAAIAYoAjQQqgELIAAgBBAdCyAAIAYoAjAgBigCLCAGKAI0IAYoAjxBASAMENIBCyAAKAIQQd0ARg0AIAdBpX9GBEBBx8wAIQgMBAsgAEEsEC5FDQEMBQsLIABBgwEQDCAAKAJAEKcBIAAQDw0DCwJAIAVFDQAgACgCEEE9Rw0AQX8hByAAQesAQX8QGyEBIAAQDw0EIAAgChAdIAMEQCAAQQ4QDAsgABBgDQQgAEHrACALEBsaIAAgARAdQQEhBwwECyADRQRAIABB+ThBABATDAMLIAAoAkAoAoACIA1qQbEBIA4gDWsQRRogACgCQCgCpAIgCkEUbGoiACAAKAIAQQFrNgIAQQAhBwwDCyAAIAhBABATDAELIAAoAgAgBigCNBARC0F/IQcLIAZBQGskACAHCysAIAAoAkAoAqQBQQBOBEAgAEEGEAwgAEHZABAMIAAgACgCQC8BpAEQFgsLEgAgAEGDf0YgAEHVAGpBLklyCxMAIAAgASACIAMgBEEAQQAQiQILpQECAX8BfiAAKQIEIgSnQf////8HcSEDAkACQCAEQoCAgIAIg1BFBEAgAiADIAIgA0obIQMDQCACIANGDQIgACACQQF0ai8BECABRg0DIAJBAWohAgwACwALIAFB/wFLDQAgAiADIAIgA0obIQMgAEEQaiEAIAFB/wFxIQEDQCACIANGDQEgACACai0AACABRg0CIAJBAWohAgwACwALQX8hAgsgAguNAQEBfyMAQRBrIgMkACADIAI3AwgCQCAAIAFBhgEgAUEAEBIiAhALDQAgACACEDoEQCAAIAIgAUEBIANBCGoQNSICEAsNASACECANASACECYNASAAIAIQCiAAQcM8QQAQFEKAgICA4AAhAgwBCyAAIAIQCiAAIAFBASADQQhqEJAFIQILIANBEGokACACC6MBAgN/AX4gASgCACECAkAgACkCBCIFQoCAgIAIg1BFBEAgACACQQF0ai8BECIDQYD4A3FBgLADRyACQQFqIgQgBadB/////wdxTnINASAAIARBAXRqLwEQIgBBgPgDcUGAuANHDQEgA0EKdEGA+D9xIABB/wdxckGAgARqIQMgAkECaiEEDAELIAJBAWohBCAAIAJqLQAQIQMLIAEgBDYCACADCygAIAAgAkEwIAJBABASIgIQCwRAIAFBADYCAEF/DwsgACABIAIQ6QMLMwEBfwJAIAFCgICAgHBUDQAgAaciAy8BBkESRw0AIANBIGoPCyACBEAgAEESEJ0DC0EAC10BAX9BfyEEAkAgACABECkiARALDQAgACABpyACEJMEIQQgACABEAogBA0AIANBgIABcUUEQEEAIQQgA0GAgAJxRQ0BIAAQ+gFFDQELIABBiApBABAUQX8hBAsgBAvWAgIDfwJ8IAEQVCEGIAIQVCEEAkACQAJ8AkACQAJAAkACQAJAAkACQCAGQQhqDhACAQoKCgoKAwQACQkKCgoFCgsgBEEBRw0JIAGnIAKnRg8LIARBeUcNCCABpyACpxCUAkUhBQwICyABpyACp0YgBEF4RnEhBQwHCyAEQX9HDQYgAacgAqdGIQUMBgsgAae3IQcgBEEHRg0BIAQNBSACp7cMAwsgARBJIQcgBEUNASAEQQdHDQQLIAIQSQwBCyACp7cLIQgCQCADBEAgCL1C////////////AIMiAUKBgICAgICA+P8AVCAHvUL///////////8AgyICQoCAgICAgID4/wBYcUUEQCACQoGAgICAgID4/wBUIAFCgICAgICAgPj/AFZzDwsgA0ECRw0BCyAHIAhhDwsgB70gCL1RDwsgBCAGRiEFCyAAIAEQCiAAIAIQCiAFCzQBAX8CQCABQYCAAXFFBEAgAUGAgAJxRQ0BIAAQ+gFFDQELIAAgAkGqDBDGAUF/IQMLIAMLkAUBBH8jAEEQayIIJAACQAJAAkACQCABQoCAgIBwVCACQv////8PVnINACACpyEGAkACQAJAAkACQAJAAkACQAJAIAGnIgUvAQYiB0EIaw4WCAkJCQkJCQkJCQkJCQYFBQQEAwMCAQALIAdBAkcNCCAFKAIoIgcgBksNCSAGIAdHDQggBS0ABUEJcUEJRw0IIAUoAhAhBgNAAkAgBigCLCIHBEAgBygCECEGAkAgBy8BBkEBaw4CAAIMCyAGLQARRQ0CDAsLIAAgBSADIAQQlgQhBwwNCyAHLQAFQQhxDQALDAgLQX8hByAAIAhBCGogAxBZDQogBSgCKCAGTQ0FIAUoAiQgBkEDdGogCCsDCDkDAAwJC0F/IQcgACAIQQhqIAMQWQ0JIAUoAiggBk0NBCAFKAIkIAZBAnRqIAgrAwi2OAIADAgLQX8hByAAIAhBBGogAxDEAQ0IIAUoAiggBk0NAyAFKAIkIAZBAnRqIAgoAgQ2AgAMBwtBfyEHIAAgCEEEaiADEMQBDQcgBSgCKCAGTQ0CQQEhByAFKAIkIAZBAXRqIAgoAgQ7AQAMBwtBfyEHIAAgCEEEaiADEMQBDQYgBSgCKCAGTQ0BIAUoAiQgBmogCCgCBDoAAAwFC0F/IQcgACAIQQRqIAMQ1QUNBSAFKAIoIAZNDQAgBSgCJCAGaiAIKAIEOgAADAQLIAAgBEHTDhB3IQcMBAsgBSgCKCAGTQ0AIAAgBSgCJCAGQQN0aiADEB4MAgsgACACEDkhBSAAIAIQCiAFRQRAIAAgAxAKQX8hBwwDCyAAIAEgBSADIAQQlgIhByAAIAUQEQwCCyAAIAUoAiQgBkEDdGogAxAeC0EBIQcLIAhBEGokACAHCzwBAX8jAEHQAGsiAiQAIAIgAQR/IAAgAkEQaiABEIcBBUGu0gALNgIAIABBgd0AIAIQ0QIgAkHQAGokAAuaogEDIH8FfgJ8IwBB4ABrIgohEyAKJAAgACgCECEYQoCAgIDgACEnAkAgABCAAQ0AAn8CfwJAAkACQAJAAkAgAUL/////b1gEQCAGQQRxRQ0BIAGnIgoiBigCPCEHIAooAhgiGigCJCEVIBooAiAiEigCMCEJIBIvASohCCAGQQA2AjwgCiAYKAKMATYCECAKKAIgIRcgCigCMCEGIAooAiQhFCAYIApBEGoiFjYCjAEgFyEZIAYhCyAUIAhBA3RqIhsgCigCDEUNBhoMBAsgAaciGi8BBiIHQQ1GDQIgGCgCRCAHQRhsaigCECIHDQELIABBojZBABAUDAYLIAAgASACIAQgBSAGIAcRFQAhJwwFCyAaKAIgIhIvAS4hCCASLwEqIQcgEi8BKCEXIBMgEi0AEDYCWCATIAE3AzggEyAENgJUIBNByABqEG8gGigCJCEVIAogFyAXQQAgBCAXSBsgBkECcUEBdhsiCiAHIAhqakEDdEEPakHw//8BcWsiGSQAIAUhFyAKRQ0BIAQgEi8BKBCxASIGQQAgBkEAShshBwNAIAcgFEYEQCAHIBIvASgiCCAHIAhLGyEGA0AgBiAHRwRAIBkgB0EDdGpCgICAgDA3AwAgB0EBaiEHDAELCyATIAg2AlQgGSEXDAMFIBkgFEEDdCIGaiAFIAZqKQMAEA03AwAgFEEBaiEUDAELAAsAC0EBDAILIBMgFzYCQCATIBkgCkEDdGoiFDYCRCASLwEqIQhBACEHA0AgByAIRwRAIBQgB0EDdGpCgICAgDA3AwAgB0EBaiEHDAELCyASKAIUIQYgEyAYKAKMATYCMCAYIBNBMGoiFjYCjAEgEigCMCEJIBQgCEEDdGoiBwshG0EACyEIA0ACQAJAAkACQCAIRQRAIBRBCGohHCAUQRBqIR0gFEEYaiEeIBdBCGohHyAXQRBqISAgF0EYaiEhIBtBGGohIyACQiCIpyIkQX5xISUgE0EwaiEmIBNBIGohIiAHIQgCQANAAkAgBkEBaiELQgAhJ0KAgICAMCEBAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAYtAAAiD0EBaw7zAdQBACQIkQEJCgsMDQ4PEBESExQXFRYYGRobICEiIxwfHR4oJiYpKSor2AHjASwtLi/XATAxMjM0NTY3ODg5OTqeAaEBPDs9jgGPAZABkgGTAZQBnAGdAaABnwGiAZUBlgGXAZgBmQGjAaQBpQGaAZoBmwGbAT4/QEFCQ2tsbXFyc3Rub3B1fHt4f4ABgQHIAckBygHLAcsBywHLAcsBywF2dnZ3ggGEAYYBgwGFAYgBhwGJAYoBiwGMAdcB1QHWAdYB4gGuAa0BsAGvAbEBsQGzAbIBpwG0AY0BxQHGAccBqQGqAasBpgGoAawBtQG3AbYBuwG8Ab0BvgHEAcMBvwHAAcEBwgG4AboBuQHRAdwBAQEBAQEBAQEBAgMEBQZERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWoHfn16eSUlJSXMAc0BzgHPAdMBCyAHIBIoAjQgCygAAEEDdGopAwAQDTcDACAGQQVqIQsgB0EIaiEIDNsBCyAHIA9BswFrrTcDACAHQQhqIQgM2gELIAcgCywAAK03AwAgBkECaiELIAdBCGohCAzZAQsgByALLgAArTcDACAGQQNqIQsgB0EIaiEIDNgBCyAHIBIoAjQgBi0AAUEDdGopAwAQDTcDACAHQQhqIQggBkECaiELDNcBCyAHIAkgEigCNCAGLQABQQN0aikDABANIBUgFhCMBCIBNwMAIAdBCGohCCAGQQJqIQsgARALRQ3WAQzYAQsgByAJQS8QMTcDACAHQQhqIQgM1QELIAkgB0EIayIIKQMAIgFBMCABQQAQEiIBEAsN2AEgCSAIKQMAEAogCCABNwMADNMBCyAHIAkgCygAABBeNwMAIAZBBWohCyAHQQhqIQgM0wELIAdCgICAgDA3AwAgB0EIaiEIDNIBCyAHQoCAgIAgNwMAIAdBCGohCAzRAQsCQAJAAn4gAiAkQX9GDQAaIAIgEi0AEEEBcQ0AGiAlQQJHDQEgCSkDwAELEA0hJwwBCyAJIAIQKSInEAsN1QELIAcgJzcDACAHQQhqIQgM0AELIAdCgICAgBA3AwAgB0EIaiEIDM8BCyAHQoGAgIAQNwMAIAdBCGohCAzOAQsgByAJEDsiATcDACAHQQhqIQggARALRQ3NAQzPAQsgBkECaiELAkACQAJAAkACQAJAAkACQCAGLQABDgcAAQIDBAUGBwsgBwJ+QQAhCEEAIRAgCSAJKAIoKQMIQQgQUCInEAtFBEAgCSAnpyIMQTBBAxCBASAErTcDAAJAIARBAEwNACAJIARBA3QQLSIQBEADQCAEIAhGDQIgECAIQQN0IgpqIAUgCmopAwAQDTcDACAIQQFqIQgMAAsACyAJICcQCkKAgICA4AAMAgsgDCAENgIoIAwgEDYCJCAJICdBwwEgCSkDqAEQDUEDEBkaIAkgJ0HOAEKAgICAMCAJKQOwASIBIAFBgDAQdhoLICcLIgE3AwAgB0EIaiEIIAEQC0UN0wEM1QELIAcCfiAEIBIvASgQsQEhCEEAIRACQCAJIAkoAigpAwhBCRBQIgEQCw0AIAkgAaciDUEwQQMQgQEgBK03AwAgCEEAIAhBAEobIQwDQAJAAkACQCAMIBBGBEAgCCAEIAQgCEgbIQwDQCAIIAxGDQQgCSABIAggBSAIQQN0aikDABANQQcQnQEhCiAIQQFqIQggCkEATg0ACwwBCyAJIBYgEEEBEIkEIg5FDQAgCSANIBAQkwFBJxCBASIKDQEgCSgCECAOEPkBCyAJIAEQCkKAgICA4AAhAQwDCyAKIA42AgAgEEEBaiEQDAELCyAJIAFBwwEgCSkDqAEQDUEDEBkaIAkgAUHOACAJKAIQKAKMASkDCBANQQMQGRogAQwBCyABCyIBNwMAIAdBCGohCCABEAtFDdIBDNQBCyAHIBYpAwgQDTcDACAHQQhqIQgM0QELIAcgAxANNwMAIAdBCGohCAzQAQsgByAaKAIoIgYEfiAGrUKAgICAcIQQDQVCgICAgDALNwMAIAdBCGohCAzPAQsgByAJQoCAgIAgEFIiATcDACAHQQhqIQggARALRQ3OAQzQAQsgBwJ+AkAgCRC+BSIKBEAgCSAKELwFIQggCSAKEBEgCA0BCyAJQZoTQQAQFEKAgICA4AAMAQsCfiAIKQNoIgEQEARAQoCAgIDgACAJQoCAgIAgEFIiARALDQEaIAggATcDaAsgARANCwsiATcDACAHQQhqIQggARALRQ3NAQzPAQsQAQALIAsvAAAhCwJAIAkQTiIBEAsNACAEIAsgBCALShshDSALIQgDQCAIIA1GDQEgCCALayEMIAhBA3QhCiAIQQFqIQggCSABIAwgBSAKaikDABANQQcQnQFBAE4NAAsgCSABEApCgICAgOAAIQELIAcgATcDACAHQQhqIQggBkEDaiELIAEQC0UNywEMzQELIAkgB0EIayIIKQMAEAoMygELIAkgB0EQayIGKQMAEAogBiAHQQhrIggpAwA3AwAMyQELIAkgB0EYayIGKQMAEAogBiAHQRBrIgYpAwA3AwAgBiAHQQhrIggpAwA3AwAMyAELIAcgB0EIaykDABANNwMAIAdBCGohCAzHAQsgByAHQRBrKQMAEA03AwAgByAHQQhrKQMAEA03AwggB0EQaiEIDMYBCyAHIAdBGGspAwAQDTcDACAHIAdBEGspAwAQDTcDCCAHIAdBCGspAwAQDTcDECAHQRhqIQgMxQELIAcgB0EIayIGKQMANwMAIAYgB0EQaykDABANNwMAIAdBCGohCAzEAQsgByAHQQhrIgYpAwAiATcDACAGIAdBEGsiBikDADcDACAGIAEQDTcDACAHQQhqIQgMwwELIAcgB0EIayIIKQMAIic3AwAgB0EQayIGKQMAIQEgBiAHQRhrIgYpAwA3AwAgCCABNwMAIAYgJxANNwMAIAdBCGohCAzCAQsgByAHQQhrIggpAwAiJzcDACAHQRBrIgYpAwAhASAGIAdBGGsiBikDADcDACAIIAE3AwAgBiAHQSBrIgYpAwA3AwAgBiAnEA03AwAgB0EIaiEIDMEBCyAHQRBrIgYpAwAhASAGIAdBGGsiBikDADcDACAGIAE3AwAMvwELIAdBGGsiBikDACEnIAYgB0EQayIIKQMANwMAIAdBCGsiBikDACEBIAYgJzcDACAIIAE3AwAMvgELIAdBIGsiBikDACEnIAYgB0EYayIIKQMANwMAIAdBEGsiBikDACEBIAYgB0EIayIGKQMANwMAIAggATcDACAGICc3AwAMvQELIAdBKGsiBikDACEnIAYgB0EgayIIKQMANwMAIAdBGGsiBikDACEBIAYgB0EQayIGKQMANwMAIAggATcDACAGIAdBCGsiBikDADcDACAGICc3AwAMvAELIAdBCGsiBikDACEnIAYgB0EQayIIKQMANwMAIAdBGGsiBikDACEBIAYgJzcDACAIIAE3AwAMuwELIAdBEGsiBikDACEnIAYgB0EYayIIKQMANwMAIAdBIGsiBikDACEBIAYgJzcDACAIIAE3AwAMugELIAdBEGsiBikDACEnIAYgB0EYayIIKQMANwMAIAdBIGsiBikDACEBIAYgB0EoayIGKQMANwMAIAgg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HgwoCyAGQQJqIQsgFCAGLQABQQN0aiIIKQMAIgFC/////w9WIAGnQYCAgIB4RnJFBEAgCCABQgF9Qv////8PgzcDAAwoCyATIAEQDTcDGCAJICJBjgEQkQINLCAJIAggEykDGBAeDCcLIAdBCGsiCCkDACIBQv////8PWARAIAggAUL/////D4U3AwAgByEIDCgLIAchCCMAQRBrIg0kACAJIA1BDGogB0EIayIKKQMAEMQBIQwgCkKAgICAMCANNQIMQv////8PhSAMGzcDACANQRBqJABBf0EAIAwbRQ0nDCsLIAdBCGsiCCkDACInIAdBEGsiCikDACIBhEL/////D1gEQCAKIAGnICendK03AwAMJwsgCSAHQaABEMcCRQ0mDCoLIAdBCGsiCCkDACInIAdBEGsiCikDACIBhEL/////D1gEQCAKAn4gAacgJ6d2IgZBAE4EQCAGrQwBCyAGuBAVCzcDAAwmCyMAQRBrIg0kACAHQQhrIgopAwAhAQJ/AkAgCSANQQxqIAdBEGsiDCkDABDpAwRAIAkgARAKDAELIAkgDUEIaiABEOkDDQAgDAJ+IA0oAgwgDSgCCHYiCkEATgRAIAqtDAELIAq4EBULNwMAQQAMAQsgDEKAgICAMDcDACAKQoCAgIAwNwMAQX8LIQogDUEQaiQAIApFDSUMKQsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogAacgJ6d1rTcDAAwlCyAJIAdBoQEQxwJFDSQMKAsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogASAngzcDAAwkCyAJIAdBrQEQxwJFDSMMJwsgB0EIayIIKQMAIAdBEGsiCikDAIQiAUL/////D1gEQCAKIAE3AwAMIwsgCSAHQa8BEMcCRQ0iDCYLIAdBCGsiCCkDACInIAdBEGsiCikDACIBhEL/////D1gEQCAKIAEgJ4VC/////w+DNwMADCILIAkgB0GuARDHAkUNIQwlCyAHQQhrIggpAwAiJyAHQRBrIgopAwAiAYRC/////w9YBEAgCiABpyAnp0itQoCAgIAQhDcDAAwhCyAJIAdBowEQlwNFDSAMJAsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogAacgJ6dMrUKAgICAEIQ3AwAMIAsgCSAHQaQBEJcDRQ0fDCMLIAdBCGsiCCkDACInIAdBEGsiCikDACIBhEL/////D1gEQCAKIAGnICenSq1CgICAgBCENwMADB8LIAkgB0GlARCXA0UNHgwiCyAHQQhrIggpAwAiJyAHQRBrIgopAwAiAYRC/////w9YBEAgCiABpyAnp06tQoCAgIAQhDcDAAweCyAJIAdBpgEQlwNFDR0MIQsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogAacgJ6dGrUKAgICAEIQ3AwAMHQsgCSAHQQAQwwVFDRwMIAsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogAacgJ6dHrUKAgICAEIQ3AwAMHAsgCSAHQQEQwwVFDRsMHwsgB0EIayIIKQMAIicgB0EQayIGKQMAIgGEQv////8PWARAIAYgAacgJ6dGrUKAgICAEIQ3AwAMGwsgCSAHQQAQwgUMGgsgB0EIayIIKQMAIicgB0EQayIGKQMAIgGEQv////8PWARAIAYgAacgJ6dHrUKAgICAEIQ3AwAMGgsgCSAHQQEQwgUMGQsCfyAHQQhrKQMAIidC/////29YBEAgCUHj2wBBABAUQX8MAQtBfyEIAkAgCSAHQRBrIgopAwAiARA5Ig1FDQAgCSAnIA0QeCEMIAkgDRARIAxBAEgNACAJIAEQCiAJICcQCiAKIAxBAEetQoCAgIAQhDcDAEEAIQgLIAgLDRwgB0EIayEIDBgLAn8gCSAHQRBrIggpAwAiJyAHQQhrKQMAIgEQ2wUiCkEASARAIAoMAQsgCSAnEAogCSABEAogCCAKQQBHrUKAgICAEIQ3AwBBAAsNGyAHQQhrIQgMFwsgCSAHQQhrIggpAwAiARCGBCEGIAkgARAKIAggCSAGEDE3AwAgByEIDBYLIAdBEGsiCikDACEnQX8hCAJAIAkgB0EIaykDACIBEDkiDUUNACAJICcgDUGAgAIQ3AEhDCAJIA0QESAMQQBIDQAgCSAnEAogCSABEAogCiAMQQBHrUKAgICAEIQ3AwBBACEICyAIDRkgB0EIayEIDBULIAsoAAAhCCAGQQVqIQsgCSAJKQPAASAIQQAQ3AEiCEEASA0YIAcgCEEAR61CgICAgBCENwMAIAdBCGohCAwUCyAHQQhrIggpAwAiAUL/////b1YNEiAJIAEQKSIBEAsNFyAJIAgpAwAQCiAIIAE3AwAgByEIDBMLIAdBCGsiCikDACIBQiCIp0EIaiIIQQhNQQBBASAIdEGDAnEbDREgCSABEJcEIgEQCw0WIAkgCikDABAKIAogATcDACAHIQgMEgsCQCAHQRBrKQMAIgEQEEUEQCABECZFDQELIAlB8glBABAUDBYLIAdBCGsiCikDACIBQiCIp0EIaiIIQQhNQQBBASAIdEGDAnEbDRAgCSABEJcEIgEQCw0VIAkgCikDABAKIAogATcDACAHIQgMEQsgBkEKaiEKIAYoAAUhDSAGLQAJIQwgCSAHQQhrIggpAwAiJyALKAAAIg4QeCILQQBIDQ4CQCALRQ0AIAwEQEEAIREgCSAnQc0BICdBABASIgEQCwR/QX8FIAEQIARAIAkgCSABIA4gAUEAEBIQLCERCyAJIAEQCiARCyILQQBIDRAgCw0BCwJAAkACQAJAAkACQAJAIA9B8gBrDgYAAQIDBAUGCyAJICcgDiAnQQAQEiIBEAsNFSAJIAggARAeDAULIAkgJyAOIAdBEGsiBykDAEGAgAIQlgIhCyAJIAgpAwAQCiALQQBIDRQMBAsgCSAnIA5BABDcASILQQBIDRMgCSAIKQMAEAogCCALQQBHrUKAgICAEIQ3AwAMAwsgByAJIA4QXjcDACAHQQhqIQcMAgsgCSAnIA4gJ0EAEBIiARALDREgByABNwMAIAdBCGohBwwBCyAJICcgDiAnQQAQEiIBEAsNECAJIAgpAwAQCiAIQoCAgIAwNwMAIAcgATcDACAHQQhqIQcLIAogDWpBBWshCyAHIQgMEQsgCSAIKQMAEAogCiELDBALIAdBCGspAwAiJ0KAgICAcINCgICAgDBRDQwMBQsgB0EIaykDACInQoCAgIBwg0KAgICAIFENCwwECyAJIAdBCGspAwAiJxCGBEHFAEYNAQwDCyAJIAdBCGspAwAiJxCGBEEbRw0CCyAJICcQCgwICyAHQQhrKQMAIidCgICAgGCDQoCAgIAgUQ0HCyAJICcQCiAHQQhrQoCAgIAQNwMAIAchCAwJCyASKAIUIQggEyAPNgIEIBMgCEF/cyALajYCACAJQccPIBMQTQwMCyAHIAs1AAA3AwAgBkEFaiELIAdBCGohCAwHC0IBIScMDAtCAiEnDAsLQoCAgIAwIScMCgsgB0EIayIHKQMAIQEMCgsgB0EIa0KBgICAEDcDACAHIQgMAgsgCiELDAULIAchCAtBAAshCiAIIQcgCyEGIApFDQELCyAIIQcLQQEhCAwFC0EAIQhBACEGAkAgGCkDgAEiAUKAgICAcFQNACABpyIKLwEGQQNHDQAgCigCECIKIAooAhhBf3NBAnRBqH5yaigCACEGIAoQJyEMA0ACQCAGRQRAQQAhBgwBCyAGQQN0IAxqIgpBCGshBiAKQQRrKAIAQTVGDQAgBigCAEH///8fcSEGDAELCyAGRSEGCyAGBEAgFiALNgIgIAkgAUEAQQBBABDGAiAYKQOAASEBCwJAIAFCgICAgHBUDQAgAaciBi8BBkEDRw0AIAYtAAVBBXZBAXEhCAsCQCAIDQAgByEGA0AgBiIHIBtNDQEgCSAHQQhrIgYpAwAiARAKIAFCgICAgHCDQoCAgIDQAFINACABpyIIDQUgCSAHQRBrIgYpAwAQCiAJIAdBGGspAwBBARCwARoMAAsAC0KAgICA4AAhJ0KAgICA4AAhASASLQARQTBxRQ0BCyAWIAc2AiwgFiALNgIgDAELIBZBGGoQ5wNFBEAgGCAWEMEFCwN+IAcgGU0EfiABBSAJIBkpAwAQCiAZQQhqIRkMAQsLIScLIBggFigCADYCjAEMAgsgBiAYKQOAATcDACAYQoCAgIAgNwOAASASKAIUIAhqIQZBACEIDAALAAsgE0HgAGokACAnC4gBAQJ/IAEoAhAiAy0AEEUEQEEADwsCQCADKAIAQQFHBEAgAgR/IAIoAgAgAxAna0EDdQVBAAshBCAAIAMQ0gUiA0UEQEF/DwsgACgCECABKAIQEJ0CIAEgAzYCECACRQ0BIAIgAxAnIARBA3RqNgIAQQAPCyAAKAIQIAMQkAQgA0EAOgAQC0EACxAAIABBAnQgAUEDdGpBMGoLrAECAn8BfiAAIAApAzBBDxBQIggQC0UEQCAAIARBA3RBCGoQLSIGRQRAIAAgCBAKQoCAgIDgAA8LIAYgAzsBBiAGIAQ6AAUgBiACOgAEIAYgATYCAEEAIQEgBEEAIARBAEobIQMgBkEIaiEEA0AgASADRkUEQCAEIAFBA3QiB2ogBSAHaikDABANNwMAIAFBAWohAQwBCwsgCCAGEIsBIAAgCEEvIAIQqgMLIAgLEwAgAEEQaiABIAIgACgCCBEBAAsRACAAQRBqIAEgACgCABECAAvMDAEHfwJAIABFDQAgAEEIayIDIABBBGsoAgAiAUF4cSIAaiEFAkAgAUEBcQ0AIAFBA3FFDQEgAyADKAIAIgFrIgNBqLgEKAIASQ0BIAAgAWohACADQay4BCgCAEcEQCABQf8BTQRAIAMoAggiAiABQQN2IgRBA3RBwLgEakYaIAIgAygCDCIBRgRAQZi4BEGYuAQoAgBBfiAEd3E2AgAMAwsgAiABNgIMIAEgAjYCCAwCCyADKAIYIQYCQCADIAMoAgwiAUcEQCADKAIIIgIgATYCDCABIAI2AggMAQsCQCADQRRqIgIoAgAiBA0AIANBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAQJAIAMgAygCHCICQQJ0Qci6BGoiBCgCAEYEQCAEIAE2AgAgAQ0BQZy4BEGcuAQoAgBBfiACd3E2AgAMAwsgBkEQQRQgBigCECADRhtqIAE2AgAgAUUNAgsgASAGNgIYIAMoAhAiAgRAIAEgAjYCECACIAE2AhgLIAMoAhQiAkUNASABIAI2AhQgAiABNgIYDAELIAUoAgQiAUEDcUEDRw0AQaC4BCAANgIAIAUgAUF+cTYCBCADIABBAXI2AgQgACADaiAANgIADwsgAyAFTw0AIAUoAgQiAUEBcUUNAAJAIAFBAnFFBEAgBUGwuAQoAgBGBEBBsLgEIAM2AgBBpLgEQaS4BCgCACAAaiIANgIAIAMgAEEBcjYCBCADQay4BCgCAEcNA0GguARBADYCAEGsuARBADYCAA8LIAVBrLgEKAIARgRAQay4BCADNgIAQaC4BEGguAQoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgAUF4cSAAaiEAAkAgAUH/AU0EQCAFKAIIIgIgAUEDdiIEQQN0QcC4BGpGGiACIAUoAgwiAUYEQEGYuARBmLgEKAIAQX4gBHdxNgIADAILIAIgATYCDCABIAI2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgFHBEAgBSgCCCICQai4BCgCAEkaIAIgATYCDCABIAI2AggMAQsCQCAFQRRqIgIoAgAiBA0AIAVBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAAJAIAUgBSgCHCICQQJ0Qci6BGoiBCgCAEYEQCAEIAE2AgAgAQ0BQZy4BEGcuAQoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAE2AgAgAUUNAQsgASAGNgIYIAUoAhAiAgRAIAEgAjYCECACIAE2AhgLIAUoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIABBAXI2AgQgACADaiAANgIAIANBrLgEKAIARw0BQaC4BCAANgIADwsgBSABQX5xNgIEIAMgAEEBcjYCBCAAIANqIAA2AgALIABB/wFNBEAgAEEDdiIBQQN0QcC4BGohAAJ/QZi4BCgCACICQQEgAXQiAXFFBEBBmLgEIAEgAnI2AgAgAAwBCyAAKAIICyECIAAgAzYCCCACIAM2AgwgAyAANgIMIAMgAjYCCA8LQR8hAiADQgA3AhAgAEH///8HTQRAIABBCHYiASABQYD+P2pBEHZBCHEiAXQiAiACQYDgH2pBEHZBBHEiAnQiBCAEQYCAD2pBEHZBAnEiBHRBD3YgASACciAEcmsiAUEBdCAAIAFBFWp2QQFxckEcaiECCyADIAI2AhwgAkECdEHIugRqIQECQAJAAkBBnLgEKAIAIgRBASACdCIHcUUEQEGcuAQgBCAHcjYCACABIAM2AgAgAyABNgIYDAELIABBAEEZIAJBAXZrIAJBH0YbdCECIAEoAgAhAQNAIAEiBCgCBEF4cSAARg0CIAJBHXYhASACQQF0IQIgBCABQQRxaiIHQRBqKAIAIgENAAsgByADNgIQIAMgBDYCGAsgAyADNgIMIAMgAzYCCAwBCyAEKAIIIgAgAzYCDCAEIAM2AgggA0EANgIYIAMgBDYCDCADIAA2AggLQbi4BEG4uAQoAgBBAWsiAEF/IAAbNgIACwuoAQACQCABQYAITgRAIABEAAAAAAAA4H+iIQAgAUH/D0kEQCABQf8HayEBDAILIABEAAAAAAAA4H+iIQAgAUH9FyABQf0XSRtB/g9rIQEMAQsgAUGBeEoNACAARAAAAAAAAGADoiEAIAFBuHBLBEAgAUHJB2ohAQwBCyAARAAAAAAAAGADoiEAIAFB8GggAUHwaEsbQZIPaiEBCyAAIAFB/wdqrUI0hr+iC0cAIAAgAUkEQCAAIAEgAhAjGg8LIAIEQCAAIAJqIQAgASACaiEBA0AgAEEBayIAIAFBAWsiAS0AADoAACACQQFrIgINAAsLC0QBAX9BfyEDIAAgACgCBCACahDMAQR/QX8FIAAoAgAgAWoiAyACaiADIAAoAgQgAWsQ6QEgACAAKAIEIAJqNgIEQQALCx8AIAAgASAAIAIQyAEiAiADIAQQGSEEIAAgAhARIAQLYAAgBEHyACADQcQAayADQbUBRhtB/wFxEA4gBCAAIAIQFxAcIAUgASAFKAIAENADIgA2AgAgBCAAEBwgBCAGQf8BcRAOIAEgBSgCAEEBEHIaIAEgASgC0AJBAWo2AtACC/MHAgR/AX4jAEEQayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCECICQc0Aag4DBAEDAAsgAkHsAGpBAkkNAQJAIAJBK2sOAwEGAQALIAJBWEYNBCACQf4ARg0AIAJBIUcNBQtBfyEEIAAQDw0MIABBEBDtAQ0MQYwBIQQCQAJAIAJBK2sOAwcBCQALIAJBtH9HBEAgAkEhRg0IIAJB/gBHDQFBlQEhBAwJCyAAQQ4QDEEGIQQMCAsQAQALIAAQDw0IIABBABDtAQ0IIAAgA0EMaiADQQhqIAMgA0EEakEAQQEgAhC6AQ0IIAAgAkEGa0H/AXEQDCAAIAMoAgwgAygCCCADKAIAIAMoAgRBAkEAENIBDAcLQX8hBCAAEA8NCiAAQRAQ7QENCkGXASEEIAAoAkAiARClAUG2AUcNBSABKAKAAiABKAKYAmpBtQE6AAAMBQtBfyEEAn8gACgCQCEBQX8hAgJAIAAQDw0AIABBEBDtAQ0AAkACQAJAAkACQAJAAkACQCABEKUBIgJBxwBrDgQBBgYFAAsgAkG8AUYNAyACQbYBRg0CIAJBwQBHDQUgASgCmAIiAiABKAKAAmooAAEhBSABQX82ApgCIAEgAjYChAIgACAAKAIAIAUQXiIGQQEQ0QEhAiAAKAIAIAYQCiAAKAIAIAUQESACRQ0BDAcLIAEoApgCIQIgAUF/NgKYAiABIAI2AoQCCyAAQZgBEAwMBAsgASgCgAIgASgCmAJqIgIoAAEiBUEIRiAFQfEARnINAiABLQBuQQFxBEAgAEHi0wBBABATQX8MBgsgAkG4AToAAAwDCyAAQb3cAEEAEBNBfwwECyAAQTAQDCAAQQAQGiAAQQMQbEEADAMLIABBDhAMIABBChAMC0EAIQILIAILRQ0IDAkLIAAoAkAiAS0AbEECcUUEQCAAQcvYAEEAEBMMBgsgASgCZEUEQCAAQYQ3QQAQEwwGC0F/IQQgABAPDQggAEEQEO0BDQhBiwEhBAwDC0F/IQQgACABQQRxQQJyEM8DDQcgACgCMA0DIAAoAhAiAkF+cUGUf0cNAyAAIANBDGogA0EIaiADIANBBGpBAEEBIAIQugENByAAIAJBBGtB/wFxEAwgACADKAIMIAMoAgggAygCACADKAIEQQNBABDSASAAEA9FDQMMBwtBjQEhBAwBC0GWASEECyAAIAQQDAwDC0EAIQQgAUEYcUUNAyAAKAIQQaN/Rw0DIAFBEHFFDQEgACgCAEHE/QBBABDSAgtBfyEEDAILQX8hBCAAEA8NASAAQQgQ7QENASAAQZ8BEAwLQQAhBAsgA0EQaiQAIAQLfAECfyAAKAJAIgEEQCABKAK8ASECIABBswEQDCAAIAJB//8DcRAWIAEgASgCzAEgAkEDdGooAgAiADYCvAEDQAJAIABBAEgEQEF/IQAMAQsgASgCzAEgAEEDdGoiAigCBCIAQQBODQAgAigCACEADAELCyABIAA2AsABCws2AQF/IwBB0ABrIgEkACABIAAoAgAgAUEQaiAAKAIgEIcBNgIAIABB6TAgARATIAFB0ABqJAALmSYBFH8jAEEwayIIJAAgACgCACEOAkAgACICKAIQQYN/Rw0AIAIoAigNACACQQAQiQFBOkYhAwsCQAJAAkACQAJAIANFBEAgAigCECEDDAELIA4gAigCIBAXIQsgAigCQEGwAmohAAJAA0AgACgCACIARQ0BIAAoAgQgC0cNAAsgAkGNzwBBABATDAILIAIQDw0BIAJBOhAuDQEgAigCECIDQccAakEDSQ0AIAIQNCEDQQAhACACKAJAIAhBEGogCyADQX9BABCoASACIAFBHnRBH3VBAEEDIAIoAkAtAG5BAXEbcRDwAQ0BIAIgAxAdIAIoAkAQpwEMAwsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgA0HSAGoOJAMRAR0RERERERERBQQGBwcIERECCRERDBALDxwSEhIRERERHAALIANBg39GDQwgA0E7Rg0JIANB+wBHDRAgAhD2Ag0dDB4LIAIoAkAoAiAEQCACQbE2QQAQEwwdCyACEA8NHEEAIQAgAgJ/QQAgAigCECIBQTtGDQAaQQAgAUH9AEYNABpBACACKAIwDQAaIAIQlwENHUEBCxD1AiACELsBDRwMHgsgAhAPDRsgAigCMARAIAJBiBBBABATDBwLIAIQlwENGyACQS8QDCACELsBRQ0cDBsLIAIQDw0aIAIQgwEaIAIQ1AEgAhCHAg0aIAJB6QBBfxAbIQAgAiACKAJALQBuQX9zQQFxIgEQ8AENGgJAIAIoAhBBr39HBEAgACEDDAELIAJB6wBBfxAbIQMgAhAPDRsgAiAAEB0gAiABEPABDRsLIAIgAxAdDBcLIAIQNCEAIAIQNCEBIAIoAkAgCEEQaiALIAEgAEEAEKgBIAIQDw0ZIAIQ1AEgAiAAEB0gAhCHAg0ZIAJB6QAgARAbGiACELYCDRkgAkHrACAAEBsaIAIgARAdIAIoAkAQpwEMGgsgAhA0IQAgAhA0IQEgAhA0IQMgAigCQCAIQRBqIAsgASAAQQAQqAEgAhAPDRggAiADEB0gAhDUASACELYCDRggAiAAEB0gAkG6fxAuDRggAhCHAg0YIAIoAhBBO0YEQCACEA8NGQsgAkHqACADEBsaIAIgARAdIAIoAkAQpwEMGQsgAhAPDRcgAhDUAUEAIQEgCEEANgIMAkAgAigCECIAQVhHBEAgAEEoRw0BIAIgCEEMakEAEKYBGgwBCyACKAJALQBsQQJxRQRAIAJB8CFBABATDBkLIAIQDw0YQQEhAQsgAkEoEC4NFyAILQAMQQFxRQRAIAEhBCMAQUBqIgUkACACKAIAIQwgAigCQCIPKAK8ASEQIAIQNCEDIAIQNCERIAIQNCESIAIQNCETIAIQgwEaQQEhCSACKAJAIAVBEGogCyASIANBARCoASAFIBA2AiggAkHrAEF/EBshFSACKAJAKAKEAiENIAIgExAdIAIoAhAhAEFRIQFBfyEHAkACQAJAAkACQAJAAkACQAJAIAJBBBDWAw4CAAEICyAAQUlGIQogAEFRRiIBIQkgASAAQbF/RnJFIABBSUdxDQEgACEBCyACEA8NBAJAIAIoAhAiAEH7AEYgAEHbAEZyRQRAIABBg39GBEAgAigCKEUNAgsgAkGL3wBBABATDAYLQQEhCSACIAFBAEEBQX9BABDTAUEASA0HIAVBADYCPAwDCyAFIAwgAigCIBAXIgY2AjwgAhAPBEAgAigCACAGEBEMBQsgAiAGIAEQtQJFDQEgAigCACAGEBEMBAsCQAJAIAIoAhBBIHJB+wBHDQAgAiAFQQxqQQAQpgEiAUFZRyABQbd/R3ENACACQQBBAEEBIAUoAgxBAnFBARDTAUEATg0BDAULIAIQsgINBCACIAVBOGogBUE0aiAFQTxqIAVBCGpBAEEAQbt/ELoBDQQgAiAFKAI4IAUoAjQgBSgCPCAFKAIIQQRBABDSAQsgBUEANgI8QQAhCQwCCyACQbsBQbsBQbcBIAkbIAobEAwgAiAGEBogAiAPLwG8ARAWQQAhCQsgASEACyACQesAIBEQGxogAigCQCgChAIhFCACIBUQHUEBIQcCQCACKAIQQT1HDQACQCACEA9FBEBBACEHIAJBABC5AUUNAQsgDCAGEBEMAgsgBkUNACACQbcBEAwgAiAGEBogAiAPLwG8ARAWCyAMIAYQEQJAAkACQCACQcMAEFEEQCAFQQE2AiwgBSAFKAIgQQJqNgIgQfzFACEKQQAhASAHRQ0BDAMLIAIoAhBBt39HDQEgBARAIAJBi/0AQQAQEwwEC0EBIQEgBw0CQbg6IQogAEGxf0cNACAPLQBuQQFxRSAJQX9zcQ0CCyAFIAo2AgAgAkG6LCAFEBMMAgsgAkHJOEEAEBMMAQsgAhAPDQACQCABRQRAIAIQYEUNAQwCCyACEJcBDQELIAIgAigCQCgCvAEgEBC0AiACQfwAQf4AQf0AIAQbIAEbEAwgAkHrACADEBsaIAJBKRAuRQ0BC0F/IQcMAQsgAigCQCIAQYACaiIHIAAoAoQCIgkgFCANayIGahDMARogByAAKAKAAiANaiAGEIgBGiAAKAKAAiANakGxASAGEEUaIAIoAkAiBiAAKAKEAkEFazYCmAIgAyAGKAKsAiIAIAAgA0gbIQogCSANayEJIAMhAANAIAAgCkcEQCAGKAKkAiAAQRRsaiIMKAIEIgcgDUggByAUTnJFBEAgDCAHIAlqNgIECyAAQQFqIQAMAQsLIAIgERAdQX8hByACELYCDQAgAiACKAJAKAK8ASAQELQCIAIgAxAdAn8gAUUEQCAEBEAgAkEUEAwgAkEOEAwgAkEkEAwgAkEAEBYgAkGLARAMIAJBggEQDEGDAQwCCyACQYABEAwgAkEAEGxBgwEMAQsgAkH/ABAMQQ4LIQAgAkHpACATEBsaIAJBDhAMIAIgEhAdIAIgABAMIAIoAkAQpwEgAhDuAUEAIQcLIAVBQGskACAHRQ0ZDBgLIAIoAkAoArwBIQYgAhCDARogAigCECIAQTtGDRNBUSEDAkAgAkEEENYDDgIAEhgLIABBsX9GIABBUUZyDRAgACIDQUlGDREgAkEAEPMEDRcgAkEOEAwMEgsgAhAPDRYgA0HEAGohAUEAIQACQCACKAIwDQAgAigCEEGDf0cNACACKAIoDQAgAigCICEACwJ/IAIoAkAiBEGwAmohAyAEKAK8ASEFAkADQCADKAIAIgMEQCACIAUgAygCGBC0AiADKAIYIQUCQCABBEAgAygCDCIEQX9GDQEgAARAIAMoAgQgAEcNAgsMBAsgAygCCCIEQX9GDQAgAARAIAMoAgQgAEcNAQsMAwsgAygCHAR/IAJBgwEQDEEDBUEACyEEA0AgAygCECAESgRAIAJBDhAMIARBAWohBAwBCwsgAygCFEF/Rg0BIAJBBhAMIAJB7QAgAygCFBAbGiACQQ4QDAwBCwsCQCAARQRAIAEEQCACQfozQQAQEwwCCyACQcHCAEEAEBMMAQsgAkGC2gBBABATC0F/DAELIAJB6wAgBBAbGkEACw0WIAAEQCACEA8NFwsgAhC7AUUNFwwWCyACEA8NFSACENQBIAIQhwINFSACEIMBGiACEDQhBEF/IQEgAigCQCAIQRBqIAsgBEF/QQEQqAEgAkH7ABAuDRVBfyEDAkADQAJAAkACQCACKAIQIgBBwQBqDgIAAQILIAFBAEgEf0F/BSACQesAQX8QGwshACACIAEQHQNAIAIQDw0aIAJBERAMIAIQlwENGiACQToQLg0aIAJBqwEQDCACKAIQQb9/RgRAIAJB6gAgABAbIQAMAQsLIAJB6QBBfxAbIQEgAiAAEB0MAgsgAhAPDRggAkE6EC4NGCADQQBOBEAgAkGZGUEAEBMMGQsgAUEASARAIAJB6wBBfxAbIQELIAJBtAEQDCACQQAQOCACKAJAKAKEAkEEayEDDAELAkACQCAAQf0ARwRAIAFBAE4NASACQfcYQQAQEwwaCyACQf0AEC4NGSADQQBIDQEgAigCQCgCgAIgA2ogARBbIAIoAkAoAqQCIAFBFGxqIANBBGo2AgQMAwsgAkEHEPABRQ0BDBgLCyACIAEQHQsgAiAEEB0gAkEOEAwgAigCQBCnAQwSCyACENQBIAIQDw0UIAIQNCEBIAIQNCEAIAIQNCEDIAIQNCEEIAJB7AAgARAbGiACKAJAIAhBEGpBAEF/QX9BARCoASAIIAM2AiQgAhD2Ag0UIAIoAkAQpwEgAhD0AgRAIAJBDhAMIAJBBhAMIAJB7QAgAxAbGiACQQ4QDCACQesAIAQQGxoLAkACQAJAIAIoAhBBPWoOAgAPAQsgAhAPDRYgAhCDARogAiABEB0gAigCEEH7AEYEQCACQQ4QDAwOCyACQSgQLg0WIAIoAhAiAUH7AEYgAUHbAEZyDQECQCABQYN/RgRAIAIoAihFDQELIAJBoN4AQQAQEwwXCyAOIAIoAiAQFyEBAkAgAhAPRQRAIAIgAUFDELUCQQBODQELIA4gARARDBcLIAJBtwEQDCACIAEQOCACIAIoAkAvAbwBEBYMDAsgAkG8DEEAEBMMFQsgAkFRQQBBAUF/QQEQ0wFBAE4NCgwUCyACEA9FDRQMEwsgAigCQC0AbkEBcQRAIAJB/8AAQQAQEwwTCyACEA8NEiACEIcCDRIgAhCDARogAiACKAJAQdQAQQAQqQEiAEEASA0SIAJB7wAQDCACQdkAEAwgAiAAQf//A3EQFiACENQBIAIQtgINEgwPCyABQQFxRQ0BIAFBBHENBiACQQAQiQFBKkYNAQwGCyACKAIoBEAgAhDvAQwRC0FRIQMCQCACIAEQ1gMOAgAPEQsgAkGFARBRRQ0DIAJBARCJAUFFRw0DIAFBBHENBQsgAkGyEUEAEBMMDwsgAUEEcUUEQCACQfYQQQAQEwwPC0F/IQFBACEAIAJBAEEAEPkCRQ0QDBELIAIQDw0NIAIQuwFFDQ4MDQsgAhCXAQ0MAkAgAigCQCgCpAFBAE4EQCACQdkAEAwgAiACKAJALwGkARAWDAELIAJBDhAMCyACELsBRQ0NDAwLIAIoAiAhASMAQdAAayIAJAAgACACKAIAIABBEGogARCHATYCACACQb0oIAAQEyAAQdAAaiQADAsLQQAhACACQQFBACACKAIYIAIoAhQQ1gENCgwMCyACQSkQLg0JCyACQewAIAAQGxogAhCDARogAigCQCAIQRBqQQBBf0F/QQEQqAEgCCADNgIkIAIQ9gINCCACKAJAEKcBIAIQ7gEgAhDuASACEPQCBEAgAkEOEAwgAkEGEAwgAkHtACADEBsaIAJBDhAMIAJB6wAgBBAbGgsgACEBCyACIAEQHSACQe0AIAMQGxogAkEvEAwgAiADEB0gAigCEEFERgRAIAIQDw0IQQAhACACKAJAIAhBEGpBAEF/QX9BAhCoASACKAJAIgEoAqQBQQBOBEAgAigCACABQdEAEFYiAEEASA0JIAJB2AAQDCACIAIoAkAvAaQBEBYgAkHZABAMIAIgAEH//wNxEBYgAhDUAQsgAhD2Ag0IIAIoAkAiASgCpAFBAE4EfyACQdgAEAwgAiAAQf//A3EQFiACQdkAEAwgAiACKAJALwGkARAWIAIoAkAFIAELEKcBCyACQe4AEAwgAiAEEB0MCAsgACEDCyACEA8NBSACQQAgA0EAENgDDQULIAIgAigCQCgCvAEgBhC0AgsgAkE7EC4NAyACEDQhBCACEDQhACACEDQhAyACEDQhBSACKAJAIAhBEGogCyAFIABBABCoASADIQEgAigCEEE7RwRAIAIgBBAdIAIQlwENBCACQekAIAUQGxogBCEBCyACQTsQLg0DAkAgAigCEEEpRgRAIAggATYCHEEAIQQgASEADAELIAJB6wAgAxAbGiACKAJAKAKEAiEEIAIgABAdIAIQlwENBCACQQ4QDCABIANGDQAgAkHrACABEBsaCyACQSkQLg0DIAIoAkAoAoQCIQcgAiADEB0gAhC2Ag0DIAIgAigCQCgCvAEgBhC0AgJAIAEgA0YgACABRnJFBEAgAigCQCIBQYACaiIGIAEoAoQCIgkgByAEayIDahDMARogBiABKAKAAiAEaiADEIgBGiABKAKAAiAEakGxASADEEUaIAIoAkAiAyABKAKEAkEFazYCmAIgACADKAKsAiIBIAAgAUobIQYgCSAEayEJA0AgACAGRg0CIAMoAqQCIABBFGxqIgooAgQiASAESCABIAdOckUEQCAKIAEgCWo2AgQLIABBAWohAAwACwALIAJB6wAgABAbGgsgAiAFEB0gAigCQBCnAQsgAhDuAQwDCyAB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AQsCQCAEDQAgAykDACIFQSoQP0UNACAAIAVBPCAFQQAQEiIFEAsNASAAIAUgARBYIQYgACAFEAogBkUNACADKQMAEA0hBQwBCyAAIAIgARDCAiIBEAtFBEAgACACIARBA3RqKQMAQoCAgIAwQQEgAxAiIQUgACACKQMAEAogACACKQMIEAogBRALBEAgACABEAoMAgsgACAFEAoLIAEhBQsgAkEQaiQAIAULDAAgACABEAogARALC0QBAn8CQCAAQoCAgIBwVA0AIACnIgMvAQZBAkcNACADLQAFQQhxRQ0AIAIgAygCKDYCACABIAMoAiQ2AgBBASEECyAEC3gBAX8CQAJAAkACQAJAIAEoAgAiAkH/AGoOBAAAAwECCyAAKAIAIAEpAxAQCg8LIAAoAgAgASkDEBAKIAAoAgAgASkDGBAKDwsgAkGpf0cNAQsgACgCACABKAIQEBEPCyACQdUAakEtTQRAIAAoAgAgASgCEBARCwsNACAAIAEgAkEAEKAECw4AIAEgACgCEEErEOYCC9MBAwF/AX4BfCMAQRBrIgMkAAJ/IAAgA0EIaiABQQhrIgEpAwAQWQRAQoCAgIAwIQRBfwwBCwJ8AkACQAJAAkACQCACQYwBaw4EAgQBAAMLIAMrAwhEAAAAAAAA8D+gDAQLIAMrAwhEAAAAAAAA8L+gDAMLIAMrAwiaDAILEAEACyADKwMICyIFvQJ/IAWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyIAt71RBEAgAK0hBEEADAELIAUQFSEEQQALIQAgASAENwMAIANBEGokACAACw0AIAAgASACEA0QxAELSQECfyACQv////8HWARAIAAgASACpxCTAUGAgAEQ3AEPCyAAIAIQngMiA0UEQEF/DwsgACABIANBgIABENwBIQQgACADEBEgBAtKAQF/AkAgACABIAAoAgRB/////wdxIgIgASgCBEH/////B3EiARCxARDlBSIADQBBACEAIAEgAkYNAEF/QQEgASACSxshAAsgAAsgACAAIAEgAkEATgR+IAKtBSACuBAVCyADQYCAARDfAQvHCgIHfwF+IwBBIGsiCSQAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAIAFCIIinQQFqDgUDAgIAAQILIAAgAxAKIAAgAkGfPRDGAUF/IQUMCgsgACADEAog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EGogBUEBdBAjGiADIAMpAgQiCSAEKQIEfEL/////B4MgCUKAgICAeIOENwIEDAILIANBEGoiBSAGaiAEQRBqIAcQIxogAyADKQIEIgkgBCkCBHxC/////weDIgogCUKAgICAeIOENwIEIAUgCqdqQQA6AAAMAQsCfgJAAkAgBCkCBCIJp0H/////B3EgAykCBCIKp0H/////B3FqIgZBgICAgARPBEAgAEGTwwBBABBNDAELIAAgBiAJIAqEpyIHQR92EPwBIgUNAQtCgICAgOAADAELAkAgB0EATgRAIAVBEGogA0EQaiADKAIEQf////8HcRAjIgcgAygCBEH/////B3FqIARBEGogBCgCBEH/////B3EQIxogBiAHakEAOgAADAELIAVBEGoiBiADIAMoAgRB/////wdxEJQFIAYgAygCBEEBdGogBCAEKAIEQf////8HcRCUBQsgBa1CgICAgJB/hAshCSAAIAEQCgwBCyABIQkLIAAgAhAKIAkLQAAgAAJ/An8gAwRAIAEoAiQgAkEDdGpBBGoMAQtBACABKAIgIgNFDQEaIAMgAS8BKCACakEEdGoLKAIACxDgAQsLACAAQZ8JQQAQFAuBDAINfwR+IwBBgAFrIgskACALIQUjAEHgAWsiCCQAAkAgAb0iEkKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIBJC////////////AINCgYCAgICAgPj/AFoEQCAFQc7CuQI2AAAMAgsgAUQAAAAAAAAAAGMEQCAFQS06AAAgBUEBaiEFCyAFQdkLLQAAOgAIIAVB0QspAAA3AAAMAQsCQCAERQRAAn4gAZlEAAAAAAAA4ENjBEAgAbAMAQtCgICAgICAgICAfwsiE0KAgICAgICAEH1CgYCAgICAgGBUIBO5IAFicg0BIAhB1QFqIgNBADoAACATIBNCP4ciEnwgEoUhEiACrSEUA0AgAyICQQFrIgNBMEHXACASIBIgFIAiFSAUfn2nIgRBCkgbIARqOgAAIBIgFFohBCAVIRIgBA0ACyATQgBTBEAgAkECayIDQS06AAALIAUgAxCABgwCC0QAAAAAAAAAACABIAFEAAAAAAAAAABhGyEBIARBAkcNACMAQYACayICJAACQCACQYABaiABIANBAWoiBEEAEIcDIAJqLQB/QTVHDQAgAkGAAWogASAE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k8MAQQAQTQwBCyABIAAoAgxBA2xBAm0QSkH/////AxCxASEBIAAoAhAiBCACQYACSHJFBEAgACABEO4DIQMMAwsgACgCACAAKAIEIAEgBHQgBGtBEWogBUEMahC0ASICDQELIAAQigMMAQsgACgCECEDIAUoAgwhBCAAIAI2AgQgACAEIAN2IAFqQf////8DELEBNgIMQQAhAwsgBUEQaiQAIAMLgQECAn8BfgJAIAEpAgQiBEL//////////79/VgRAIAEoAgwhAAwBCyAAKAI0IARCIIinIAAoAiRBAWtxQQJ0aiECIAAoAjghAwNAIAMgAigCACIAQQJ0aigCACICIAFGDQEgAkEMaiECIAANAAtBzvUAQbfjAEH4FEGtDhAAAAsgAAvzBgIGfwF+AkACQAJAAn8gAkECTARAIAIgASkCBCIJQj6Ip0YEQCAAIAEQ1QIiAxDxAUUNBSABIAEoAgBBAWs2AgAgAw8LIAAoAjQgACgCJEEBayABIAIQ5gVB/////wNxIgdxIghBAnRqIQMgCadB/////wdxIQUDQCACIAMoAgAiA0UNAhoCQCAAKAI4IANBAnRqKAIAIgQpAgQiCUIgiKdB/////wNxIAdHIAlCPoinIAJHciAJp0H/////B3EgBUdyDQAgBCABIAUQ5QUNACADEPEBDQQgBCAEKAIAQQFqNgIADAQLIARBDGohAwwACwALIAJBA0chB0EDCyEFAkAgACgCPA0AQQAhA0HTASAAKAIsQQNsQQJtEEoiBEH/////A0sNASAAIAAoAjggBEECdBDlASIGRQ0BIAAoAiwiAkUEQCAAQRAQmwIiAkUEQCAAIAYQHwwDCyACQQE2AgAgAiACKQIEQoCAgICAgICAQIQ3AgQgBiACNgIAIAAgACgCKEEBajYCKEEBIQILIAAgAjYCPCAAIAY2AjggACAENgIsIARBAWshBgNAIAIgBE8NASAAKAI4IAJBAnRqQQAgAkEBaiIDIAIgBkYbEOQFNgIAIAMhAgwACwALAkAgAQRAIAEpAgQiCUL//////////z9YBEAgASAJIAWtQj6GhDcCBAwCCyAAIAmnIgJBH3UgAkH/////B3EgAkEfdnRqQRFqEOYBIgJFBEBBACEDDAQLIAJBATYCACACIAIpAgRC/////3eDIAEpAgRCgICAgAiDhCIJNwIE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cFQEQEEADwsgAaciAi8BBkEpRgRAIwBBEGsiBCQAAkACQCAAIARBCGogAUHiABCFASICRQ0AIAQpAwgiARAQBEAgACACKQMAEJgEIQMMAgsgACABIAIpAwhBASACEDUiARALDQAgACABECwiA0UEQEEAIQMMAgsgACACKQMAEKABIgJBAEgNACACRQ0BIABB6iJBABAUC0F/IQMLIARBEGokACADDwsgAiACLQAFQf4BcToABUEBCy4BAX8gAKcpAyAiAEKAgICAcINCgICAgJB/UQR/IACnKAIEQf////8HcQVBAAsLCgAgACgCAEF8cQszACAAIAJBARD8ASIARQRAQoCAgIDgAA8LIABBEGogASACQQF0ECMaIACtQoCAgICQf4QLZQICfwF+QQQhAkKAgICAICEEAkACQAJAAkACQAJAIAEQVCIDQQhqDgoDAgUFBQUFBQQBAAsgA0EHRg0DDAQLQQYhAgwCC0EFIQIMAQtBByECCyAAKAIoIAJBA3RqKQMAIQQLIAQLYAEBfCAAKQIEQv//////////P1gEQCABIAErAwhEAAAAAAAA8D8gACgCALciAqOgOQMIIAEgASsDECAAKAIEIgBBH3UgAEH/////B3EgAEEfdnRqQRFquCACo6A5AxALC+kGAQV/AkACQAJAAkACQAJAAkACQAJAIAEtAARBD3EOBgABBAIDBgULIAAgASgCECIHIAIRAwAgBxAnIQUDQCAHKAIgIANKBEACQCAFKAIERQ0AIAEoAhQgA0EDdGohBAJAAkACQAJAIAUoAgBBHnZBAWsOAwABAgMLIAQoAgAiBgRAIAAgBiACEQMACyAEKAIEIgRFDQMgACAEIAIRAwAMAwsgBCgCACIELQAFQQFxRQ0CIAAgBCACEQMADAILIAAgBBCaBCACEQMADAELIAAgBCkDACACECELIANBAWohAyAFQQhqIQUMAQsLIAEvAQYiA0EBRg0GIAAoAkQgA0EYbGooAgwiA0UNBiAAIAGtQoCAgIBwhCACIAMREQAPCwNAIAEoAjggA0oEQCAAIAEoAjQgA0EDdGopAwAgAhAhIANBAWohAwwBCwsgASgCMCIBRQ0FIAAgASACEQMADwsgAS0ABUEBcUUNBSAAIAEoAhApAwAgAhAhDwsgASgCIARAIAAgAUEoaiACEO8DCyAAIAEpAxAgAhAhIAAgASkDGCACECEPCyABKAIsIgFFDQIgACABIAIRAwAPCxABAAsgAUHkAWohAyABQeABaiEHA0AgByADKAIAIgVHBEAgBUEIayEDQQAhBANAIAMoAiAgBEoEQAJAIAMoAhwgBEEUbGoiBigCCA0AIAYoAgQiBkUNACAAIAYgAhEDAAsgBEEBaiEEDAELCyAAIAMpA0AgAhAhIAAgAykDSCACECEgACADKQNgIAIQISAAIAMpA2ggAhAhIAVBBGohAwwBCwsgACABKQPAASACECEgACABKQPIASACECEgACABKQOwASACECEgACABKQO4ASACECEgACABKQOoASACECFBACEDA0AgA0EIRgRAQQAhAwNAIAAoAkAgA0oEQCAAIAEoAiggA0EDdGopAwAgAhAhIANBAWohAwwBCwsgACABKQOYASACECEgACABKQOgASACECEgACABKQNQIAIQISAAIAEpA0AgAhAhIAAgASkDSCACECEgACABKQM4IAIQISAAIAEpAzAgAhAhIAEoAiQiAQRAIAAgASACEQMACwUgACABIANBA3RqKQNYIAIQISADQQFqIQMMAQsLCw8LQZLiAEG34wBBjixByzoQAAALiAICAX4CfyMAQTBrIgQkAEHD5gAhBUKAgICA4AAhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABEFRBCGoOEAUGCQkJCQoEAAECAwkJCwgJCyAEIAE+AgAgBEEQaiIFQSBBleMAIAQQVRoMCQsgAEEDQQIgAacbEDEhAwwJCyAAQQEQMSEDDAgLIABBxQAQMSEDDAcLIAAgAUEAEJwDIgEQCwRAIAEhAwwHCyAAIAEgAhCfBCEDIAAgARAKDAYLIAJFDQELIAEQDSEDDAQLIABBvMMAQQAQFAwDCyAAIAEQSUEKQQBBABDLAiEDDAILQbDmACEFCyAAIAUQdCEDCyAEQTBqJAAgAwusBAIJfwF+AkACQAJAAkAgAkKAgICAcINCgICAgJB/UgRAIAAgAhArIgIQC0UNAQwCCyACEA0hAgsgAqciCykCBCINp0H/////B3EhBgJAIA1CgICAgAiDUARAIAtBEGohBUEAIQMDQCAEIAZGRQRAIAMgBCAFai0AAEEHdmohAyAEQQFqIQQMAQsLIANFBEAgBSEJIAENBAwFCyAAIAMgBmpBABD8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ACgCACAQaiIGIAJqIAYgAyAQaxDpASAAKAIAIgYgEGogAyAGaiACECMaDAALAAsJACABIAIQ8QULlQEBA34gAb0iAkL///////////8AgyEDIAC9IgRC////////////AINCgYCAgICAgPj/AFoEQCADQoGAgICAgID4/wBUDwsCf0F/IANCgICAgICAgPj/AFYgACABY3INABpBASAAIAFkDQAaQQAgAEQAAAAAAAAAAGINABogBEIAUwRAIAJCP4enQX9zDwsgAkI/iKcLC6MBAQF+AkACQCACRQRAIABBLxAxIQQgARAQIQIMAQsgAykDACEEAn4CQCABEBAiAkUNACAEEPYDRQ0AIABB0PkAIAAgACgCECAEpxDVAhAxQcL5ABC9AQwBCyAAIAQQKwsiBBALDQELIAINACAAIAFBBRBtIgEQC0UEQCAAIAEgBBDNASAAIAFBMCAEpykCBEL/////B4NBABAZGgsgASEECyAEC0oCAX8BfkKAgICA4AAhBCAAIAEgAhCZASIDBH4gAxCYAQRAIAJFBEBCAA8LIAAQc0KAgICA4AAPCyADKAIgNQIQBUKAgICA4AALCyoAIAAgASACEJkBIgBFBEBCgICAgOAADwsgACgCIDUCDEKAgICAcIQQDQtGAQF/AkAgACgCCCACaiIDIAAoAgxKBEAgACADIAEQ1AINAQsDQCACQQBMBEBBAA8LIAJBAWshAiAAIAEQlAFFDQALC0F/C3gBBX8gASgCBEH/////B3EiA0UEQCACDwsgACgCBEH/////B3EhBSADQQFrIQYgAUEAEC8hBwJAA0AgAiADaiAFSg0BIAAgByACENcBIgRBAEggAyAEaiAFSnINASAAIAEgBEEBaiICQQEgBhDCAw0ACyAEDwtBfwuCAQECfwJAAkAgACABEIIEIgNBAEgNACADRQ0BIAAgAUHtACABQQAQEiIBEAsNAEGJHCECAkAgARAQDQAgARAmDQAgACABEDwiARALDQFBACECIAGnQecAQQAQ1wEhAyAAIAEQCiADQQBODQJB3sUAIQILIAAgAkEAEBQLQX8hAgsgAgtcAQF/AkACQAJAAkAgAUIgiKdBAWoOAwECAAILIAEQDQ8LIAGnIgIvAQZBBkcNACACKQMgIgFCgICAgHCDQoCAgIAQUQ0BCyAAQc87QQAQFEKAgICA4AAhAQsgAQsQAEG3/gAgAEELEKQCQQBHC10BAn9Bqv4AIQMCQAJAIAEoAgRB/////wdxIgQgAkwNACABIAIQL0ElRw0AQbEZIQMgAkECaiAETg0AIAEgAkEBakECEMMDIgJBAE4NAQsgACADEMQDQX8hAgsgAgtUACMAQRBrIgIkACAAIAJBCGogAykDABBHBH5CgICAgOAABSACKQMIQoCAgICAgID4/wCDQoCAgICAgID4/wBSrUKAgICAEIQLIQEgAkEQaiQAIAELVAAjAEEQayICJAAgACACQQhqIAMpAwAQRwR+QoCAgIDgAAUgAikDCEL///////////8Ag0KAgICAgICA+P8AVq1CgICAgBCECyEBIAJBEGokACABC/gCAgN/A34jAEEwayIIJAAgA0IAIANCAFUbIQ0gBUEBayEKIAVBAEwhBUIAIQMDQAJAIAMgDVEEQCAEIQwMAQtCfyEMIAAgAiADIAhBKGoQigEiCUEASA0AAkAgCUUNACAGEBBFBEAgCCAIKQMoNwMAIAMhCyADQoCAgIAIWgRAIAO5EBUhCwsgCCACNwMQIAggCzcDCCAIIAAgBiAHQQMgCBAiIgs3AyggACAIKQMAEAogACAIKQMIEAogCxALDQILAkACQAJAIAUNACAAIAgpAygiCxDAASIJQQBIDQEgCUUNACAAIAhBIGogCxBAQQBIDQEgACABIAsgCCkDICAEIApCgICAgDBCgICAgDAQ0gQiBEIAUw0BIAAgCxAKDAMLIARC/////////w9TDQEgAEGEwwBBABAUIAgpAyghCwsgACALEAoMAgsgACABIAQgCCkDKBBuQQBIDQEgBEIBfCEECyADQgF8IQMMAQsLIAhBMGokACAMCwwAIABCACAAQgBVGwsoAAJAIAEQEEUEQCABECZFDQELIAAgARA8DwsgACABQThBAEEAELoCC6MCAgZ/AX4jAEEwayICJAACQAJAIAMpAwAiARAgRQ0AQoCAgIDgACELIAAgARCYBCIDQQBIDQEgA0UEQCAAQdbKAEEAEBQMAgsgACACQSxqIAJBKGogAaciCUEDEJABDQEgAigCLCEGIAIoAighB0EAIQMCQANAIAMgB0cEQCAGIANBA3RqKAIEIQhBgIIBIQUCQCAERQ0AIAAgAkEIaiAJIAgQUyIKQQBIDQMgCkUNACAC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wP8AgyAAQjiGhCAAQhiGQoCAgICA4D+DIABCCIZCgICAgPAfg4SEIABCCIhCgICA+A+DIABCGIhCgID8B4OEIABCKIhCgP4DgyAAQjiIhISEC10BBH8gASEDAkADQCACIANNIARBBEtyDQEgAy0AACIGQf8AcSAEQQdsdCAFciEFIARBAWohBCADQQFqIQMgBkGAAXENAAsgACAFNgIAIAMgAWsPCyAAQQA2AgBBfwteAQF/AkAgAS0AB0GAAXEEQCAAIAFBEGogAkEBdBAjGgwBCyACQQAgAkEAShshAiABQRBqIQEDQCACIANGDQEgACADQQF0aiABIANqLQAAOwEAIANBAWohAwwACwALC7ABAQJ/IwBBEGsiBiQAAkACQCACECBFDQAgAqciBy8BBkEMRw0AIActAClBDEcNACAAIAEgAyADBH8gBAUgBkKAgICAMDcDCCAGQQhqCyAFIAcuASogBygCJBESACECDAELAkAgACACIAEgAyAEECIiAhALRQRAIAIQIA0BIAAgAhAKIABBgh1BABAUCyAFQQA2AgBCgICAgOAAIQIMAQsgBUECNgIACyAGQRBqJAAgAgsUAQF+IAAgARApIQIgACABEAogAgscAQF/IABCgICAgHBaBH8gAKctAAVBB3YFQQALCw0AIAAgASACQQAQ3QELQwACfCABvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRARAAAAAAAAPh/IACZRAAAAAAAAPA/YQ0BGgsgACABEIEGCwt7AQF+AkACfiAEQQRxBEBBJiECIAAgARBhDAELQSUhAiAAIAEQKQsiARALDQAgACACEKIBIgUQCw0AIABBEBAtIgIEQCACQQA2AgwgAiAEQQNxNgIIIAIgATcDACAFIAIQiwEgBQ8LIAAgBRAKCyAAIAEQCkKAgICA4AALlQECAn4BfyAAIAEQMSEDAkAgARBcDQBBACAAKAIQKAI4IAFBAnRqKAIAKQIEIgJCgICAgICAgIBAg0KAgICAgICAgIB/UiACQoCAgIDw////P4NQIAJC//////////+/f1ZxGw0AIAKnQX9zQR92QQEgAkL/////B4NQGyEECyAEBH4gAEH95gAgA0H75gAQvQEFIAMLC6cBAQV/IACnIgMoAhAiASABKAIYQX9zQQJ0QaR+cmooAgAhAiABECchAQNA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gICAMCEFAkACQCAAIAJBCGogACABECkiARBADQACQCACKQMIIgdCAFcEQAwBCyAHQgF9IQYCQAJAAkACQCABIAJBBGogAhCNAkUNACAHIAIoAgAiCK1SDQAgAachCSACKAIEIQMgBEUNASADKQMAIQUgAyADQQhqIAhBA3RBCGsQ6QEMAgsCQCAEBEAgACABQgAQYiIFEAsNBiAAIAFCAEIBIAZBARCCA0UNAQwGCyAAIAEgBhBiIgUQCw0FCyAAIAEgBhCTAkEATg0CDAQLIAhBA3QgA2pBCGspAwAhBQsgCSAJKAIoQQFrNgIoCyAHQoGAgIAIVA0AIAa5EBUhBgsgACABQTAgBhBIQQBODQELIAAgBRAKQoCAgIDgACEFCyAAIAEQCiACQRBqJAAgBQsQACAAIAMpAwBBESAEEIEDC94EAgV+A38jAEEQayILJAACfgJAAkACQCAAIAEQKSIGQoCAgIBwVA0AIAanIgovAQZBAkcNACAKLQAFQQlxQQlHDQAgCigCEBAnLQADQQhxRQ0AIAooAhQpAwAiAUL/////D1YNACALIAFCIIZCIIciBzcDCCAHIAo1AihSDQAgByACrHwiBUL/////B1UNACAKNQIgIAVTBEAgACAKIAWnENMFDQMLAn8gBEUgAkEATHJFBEAgCigCJCIEIAJBA3RqIAQgAadBA3QQ6QFBAAwBCyABpwshDEEAIQQgAkEAIAJBAEobIQIDQCACIARGRQRAIAMgBEEDdGopAwAQDSEBIAooAiQgBCAMakEDdGogATcDACAEQQFqIQQMAQsLIAogBT4CKCAKKAIUIAVC/////w+DNwMAIAVCgICAgAh8IQEMAQsgACALQQhqIAYQQA0BIAspAwgiASACrCIIfCIFQoCAgICAgIAQWQRAIABBo8MAQQAQFAwCCwJAIARFIAJBAExyRQRAQgAhByAAIAYgCEIAIAFBfxCCAw0DDAELIAEhBwsgAkEAIAJBAEobrSEIQgAhAQNAIAEgCFIEQCABIAd8IQkgAachAiABQgF8IQEgACAGIAkgAyACQQN0aikDABANEI8BQQBODQEMAwsLIAAgBkEwIAVCgICAgAh8IgFC/////w9YBH4gBUL/////D4MFIAW5EBULEEhBAEgNAQsgACAGEAogBUL/////D4MgAUL/////D1gNARogBbkQFQwBCyAAIAYQCkKAgICA4AALIQEgC0EQaiQAIAELPAAgAUEAQdAAEEUiASAENgIMIAEgADYCACABIAIgA2o2AjwgASACNgI4IAFBATYCCCABQqCAgIAQNwMQC38BBH8gAS0AAEHbAEYEQCABQQFqIgMQQkEBayECIAAoAhAoAjghBEHCASEBA0AgAUHPAUcEQAJAIAQgAUECdGooAgAiBSgCBEH/////B3EgAkcNACAFQRBqIAMgAhB1DQAgACABEBcPCyABQQFqIQEMAQsLEAEACyAAIAEQyAELFwAgACAAKQPAASABIAIgA0EAQX8QtwULNQEBfyAAKALsASIHRQRAIABB0t0AQQAQFEKAgICA4AAPCyAAIAEgAiADIAQgBSAGIAcRNQALxgICAn4Cf0KAgICAMCECAkACQCABKQJUIgNCGIZCOIenDQAgA0IghkI4h6cEQCADQhCGQjiHp0UNASAAIAEpA2AQDRCSAUKAgICA4AAPCyABIANC/////49gg0KAgICAEIQ3AlQDQCABKAIUIARKBEAgASgCECAEQQN0aigCBCIFKQJUQhiGQjiHp0UEQCAAIAUQuAUiAhALDQQgACACEAoLIARBAWohBAwBCwsCQCABKAJQIgQEQEKAgICA4ABCgICAgDAgACABIAQRAgBBAEgbIQIMAQsgACABKQNIQoCAgIAwQQBBABA1IQIgAUKAgICAMDcDSAsgAhALBEAgAUEBOgBZIAEgACgCECkDgAEQDTcDYAsgASABKQJUQv///4eAYINCgICACIQ3AlQLIAIPCyABIAEpAlRC/////49ggzcCVCACC8AFAgd/AX4jAEEQayIFJAACQCABKQJUIglCKIZCOIenDQAgASAJQv//g3iDQoCABIQ3AlQDQAJAIAEoAhQgA0wEQEEAIQMDQCABKAIgIANKBEACQCABKAIcIgQgA0EUbGoiAigCCEEBRw0AIAIoAgwiB0H9AEYNACAAIAVBCGogBUEMaiABKAIQIAIoAgBBA3RqKAIEIAcQ7AMiAkUNACAAIAIgASAEIANBFGxqKAIQEOsDDAQLIANBAWohAwwBCwtBACECIAEoAlANAyABKAJIKAIkIQhBACEDQQAhBANAAkAgASgCOCAETARAA0AgAyABKAIgTg0CIAEoAhwgA0EUbGoiAigCCEUEQCAIIAIoAgBBAnRqKAIAIgQgBCgCAEEBajYCACACIAQ2AgQLIANBAWohAwwACwALIAEoAhAgASgCNCAEQQxsaiIHKAIIQQN0aigCBCECAkACQCAHKAIEIgZB/QBGBEAgACACEIkDIgkQC0UNAQwGCyAAIAVBCGogBUEMaiACIAYQ7AMiBgRAIAAgBiACIAcoAgQQ6wMMBgsCQCAFKAIMIgYoAgxB/QBGBEAgACAFKAIIKAIQIAYoAgBBA3RqKAIEEIkDIgkQCw0HIABBARDmAyICRQRAIAAgCRAKDAgLIAAgAkEYaiAJEB4MAQsgBigCBCICRQRAIAUoAggoAkgoAiQgBigCAEECdGooAgAhAgsgAiACKAIAQQFqNgIACyAIIAcoAgBBAnRqIAI2AgAMAQsgACAIIAcoAgBBAnRqKAIAQRhqIAkQHgsgBEEBaiEEDAELC0F/IQIgACABKQNIQoGAgIAQQQBBABAiIgkQCw0DIAAgCRAKQQAhAgwDCyADQQN0IQRBfyECIANBAWohAyAAIAQgASgCEGooAgQQuQVBAE4NAQwCCwtBfyECCyAFQRBqJAAgAgv/AgIGfwJ+AkAgASkCVEIwhkI4h6cNAAJAIAEoAlAEQANAIAIgASgCIE4NAiABKAIcIAJBFGxqIgMoAghFBEAgAEEAEOYDIgRFBEBBfw8LIAMgBDYCBAsgAkEBaiECDAALAAtBfyEEIAEpA0ghCEF/IQcgACAAKQMwQQ0QUCIJEAtFBEAgCaciAyAIpyICNgIgIAIgAigCAEEBajYCACADQgA3AiQCQAJAAkAgAigCPCIFRQ0AIAAgBUECdBBqIgVFDQEgAyAFNgIkQQAhAwNAIAMgAigCPE4NASACKAIkIANBA3RqLQAAIgZBAXEEQCAAIAZBA3ZBAXEQ5gMiBkUNAyAFIANBAnRqIAY2AgALIANBAWohAwwACwALIAEgCTcDSEEAIQcMAQsgCSEICyAAIAgQCgsgBw0BCyABQQE6AFVBACECA0AgASgCFCACTARAQQAPCyACQQN0IQNBfyEEIAJBAWohAiAAIAMgASgCEGooAgQQugVBAE4NAAsLIAQLiwEAAkACQAJAAkACQCABQiCIp0EDag4CAQACCyAAIAAgASADIAQQjAQgAkEAQQAQNQ8LIAAgARAKAkAgACABpyIDELoFQQBIDQAgACADELkFQQBIDQAgACADELgFIgEQC0UNAwsgAEECEKUEDAELIAAgARAKIABBtN4AQQAQFAtCgICAgOAAIQELIAELRAEBfyAAQeQBaiECIABB4AFqIQADfyAAIAIoAgAiAkYEQEEADwsgASACQQRrKAIARgR/IAJBCGsFIAJBBGohAgwBCwsLqAMBBH8jAEEQayIFJAACfyAAKAIQIgYoAqgBIgNFBEACfyACLQAAQS5HBEAgACACIAIQQhCkAwwBCyABEP4FIQMgACACEEIgAyABa0EAIAMbIgNqQQJqEC0iBAR/IAMgBCABIAMQIyIBakEAOgAAAkADQAJAIAItAABBLkcNAEECIQMCQAJAIAItAAFBLmsOAgABAgsgAi0AAkEvRw0BIAEtAABFDQMgARD+BSIDQQFqIAEgAxsiA0GL9gAQrARFDQEgA0GK9gAQrARFDQEgAyABIANJa0EAOgAAQQMhAwsgAiADaiECDAELCyABLQAARQ0AIAEQQiABakEvOwAACyABEEIgAWogAhCABiABBUEACwsMAQsgACABIAIgBigCsAEgAxELAAshA0EAIQICQCADRQ0AAkAgACADEMgBIgRFDQAgACAEELwFIgEEQCAAIAMQGCAAIAQQESABIQIMAgsgACAEEBEgBigCrAEiAUUEQCAFIAM2AgAgAEH/+wAgBRDRAgwBCyAAIAMgBigCsAEgAREBACECCyAAIAMQGAsgBUEQaiQAIAILbwIDfwF+AkAgACgCECgCjAEiAkUNAANAIAFBAEoEQCABQQFrIQEgAigCACICDQEMAgsLIAIpAwgiBEKAgICAcFQNACAEpyIBLwEGEPcBRQ0AIAEoAiAiAS0AEkEEcUUNACAAIAEoAkAQFyEDCyADC1IBBH8gACgCICICQQAgAkEAShshBEEAIQIDQAJAIAIgBEcEfyAAKAIcIgUgAkEUbGooAhAgAUcNASAFIAJBFGxqBUEACw8LIAJBAWohAgwACwAL2AEBBn9BfyECIAEgAUEBa3FFBEAgACABQQJ0EJsCIgUEfyABQf////8DakH/////A3EhBgNAIAMgACgCJE9FBEAgACgCNCADQQJ0aigCACECA0AgAgRAIAAoAjggAkECdGooAgAiBCgCDCEHIAQgBSAGIAQoAghxQQJ0aiIEKAIANgIMIAQgAjYCACAHIQIMAQsLIANBAWoh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ACAIIAsQZEEAIQkMAQsgACAIIAsQZAsgB0EwaiQAIAkLUwECfwJAAkAgARAgRQ0AIAEQnAUNAEF/IQMgACACEDkiBEUNASAAIAQQmwUhAiAAIAQQESACEAsNASAAIAFBNiACQQEQGUEASA0BC0EAIQMLIAMLMgACQCACRQ0AIAEQIEUNACABEJwFDQAgACABQTYgACACEDFBARAZQQBODQBBfw8LQQALaAEBfyAAKAIQIQICQCABEFxFBEAgAigCLCABTQ0BIAIoAjggAUECdGooAgAiAa1CgICAgJB/hBANGiAAIAFBBBD1Aw8LQYf3AEG34wBBzhdBhDwQAAALQZDIAEG34wBBzxdBhDwQAAAL1gEBBH8gACgCyAEiBigCECIEIAQoAhggAXFBf3NBAnRqKAIAIQUgBBAnIQQCQANAIAVFDQEgASAEIAVBAWsiB0EDdGoiBSgCBEcEQCAFKAIAQf///x9xIQUMAQsLIAYoAhQgB0EDdGohBAJAIANBAUYNACAEKQMAEIQBBEAgACACEAogACAFKAIEEOABQX8PCyAFLQADQQhxDQAgACACEAogAEGAgAEgARDeAQ8LIAAgBCACEB5BAA8LIAAgACkDwAEgASACQYCABkGAgAIgABD6ARsQlgILfQEBfwJAIAJCgICAgHCDQoCAgICQf1EgA0KAgICAcINCgICAgJB/UXFFBEAgAEHP3gBBABAUDAELIAAgAUESEG0iARALDQAgAaciBCACPgIgIAQgAz4CJCAAIAFB1QBCAEECEBkaIAEPCyAAIAMQCiAAIAIQCkKAgICA4AALDQAgACABQeP6ABCWAwvSAQMBfgF8AX8DQAJAQX8hBQJAAkACQCACEFQOCAAAAAACAgMBAgsgAkIghkIghyEDQQAhBQwCC0EAIQUgAhBJIgS9Qv///////////wCDQoCAgICAgID4/wBWDQFCgICAgICAgICAfyEDIAREAAAAAAAA4MNjDQFC////////////ACEDIAREAAAAAAAA4ENkDQEgBJlEAAAAAAAA4ENjBEAgBLAhAwwCC0KAgICAgICAgIB/IQMMAQsgACACEJ4BIgIQC0UNAQsLIAEgAzcDACAFC7wBAgJ/AXwDQAJAQX8hBAJAAkACQCACEFQOCAAAAAACAgMBAgsgAqchA0EAIQQMAgtBACEEIAIQSSIF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IAAgCCAKrSAGQYCAARCrAUEASA0BIApBAWohCgwACwALIAAgCRAKIAAgARAKIAAgCBAKQoCAgIDgACEICyALQRBqJAAgCCEBIAAgBRAKIAEQCw0CIAMgAzUCBCIFNwMIDAELIAAgA0EIaiAGEEANASAGEA0hASADKQMIIQULIABCgICAgDAgBSAEQeWKAWoxAACGEIwDIgYQCw0AIAAgByAGQgAgBRDzAw0AQQAhBANAIAcgBK0gBVkNAhogACABIAQQeSIGEAsNASAAIAcgBCAGEJUCIQogBEEBaiEEIApBAE4NAAsLIAAgARAKIAchAUKAgICA4AALIQUgACABEAoLIANBEGokACAFIQcMAwsgAykDABANIQUMAQsgABBzDAELAkAgACABIAQQbSIHEAsEQCAAIAUQCgwBCyAAIAcgBSAGIAgQ8wNFDQEgACAHEAoLQoCAgIDgACEHCyACQRBqJAAgBwvYAwICfgJ/IwBBIGsiBCQAAkAgAUL///////////8AgyIDQoCAgICAgMCAPH0gA0KAgICAgIDA/8MAfVQEQCABQgSGIABCPIiEIQMgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIANCgYCAgICAgIDAAHwhAgwCCyADQoCAgICAgICAQH0hAiAAQoCAgICAgICACIVCAFINASACIANCAYN8IQIMAQsgAFAgA0KAgICAgIDA//8AVCADQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiADQv///////7//wwBWDQBCACECIANCMIinIgVBkfcASQ0AIARBEGogACABQv///////z+DQoCAgICAgMAAhCICIAVBgfcAaxBxIAQgACACQYH4ACAFaxCgAiAEKQMIQgSGIAQpAwAiAEI8iIQhAiAEKQMQIAQpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyAAQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIARBIGokACACIAFCgICAgICAgICAf4OEvwsPACAAIAEgAkEAQQMQgQILrw8CBX8OfiMAQdACayIFJAAgBEL///////8/gyELIAJC////////P4MhCiACIASFQoCAgICAgICAgH+DIQ0gBEIwiKdB//8BcSEIAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgCEH//wFrQYGAfksNAQsgAVAgAkL///////////8AgyIMQoCAgICAgMD//wBUIAxCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhDQwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCENIAMhAQwCCyABIAxCgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhDQwDCyANQoCAgICAgMD//wCEIQ1CACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgDIRQBEBCgICAgICA4P//ACANIAIgA4RQGyENQgAhAQwCCyACIAOEUARAIA1CgICAgICAwP//AIQhDUIAIQEMAgsgDEL///////8/WARAIAVBwAJqIAEgCiABIAogClAiBht5IAZBBnStfKciBkEPaxBxQRAgBmshBiAFKQPIAiEKIAUpA8ACIQELIAJC////////P1YNACAFQbACaiADIAsgAyALIAtQIgcbeSAHQQZ0rXynIgdBD2sQcSAGIAdqQRBrIQYgBSkDuAIhCyAFKQOwAiEDCyAFQaACaiALQoCAgICAgMAAhCISQg+GIANCMYiEIgJCAEKAgICAsOa8gvUAIAJ9IgRCABBwIAVBkAJqQgAgBSkDqAJ9QgAgBEIAEHAgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQcCAFQfABaiAEQgBCACAFKQOIAn1CABBwIAVB4AFqIAUpA/gBQgGGIAUpA/ABQj+IhCIEQgAgAkIAEHAgBUHQAWogBEIAQgAgBSkD6AF9QgAQcCAFQcABaiAFKQPYAUIBhiAFKQPQAUI/iIQiBEIAIAJCABBwIAVBsAFqIARCAEIAIAUpA8gBfUIAEHAgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQcCAFQZABaiADQg+GQgAgAkIAEHAgBUHwAGogAkIAQgAgBSkDqAEgBSkDoAEiDCAFKQOYAXwiBCAMVK18IARCAVatfH1CABBwIAVBgAFqQgEgBH1C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QiB9IhVBACAOa61VBEBByK4EQcQANgIAIANBoAFqIAAQggEgA0GQAWogAykDoAEgAykDqAFCf0L///////+///8AEDIgA0GAAWogAykDkAEgAykDmAFCf0L///////+///8AEDIgAykDgAEhFyADKQOIAQwBCyAOQeIBa6wgFVcEQCAFQQBOBEADQCADQaADaiAXIBlCAEKAgICAgIDA/79/EHsgFyAZQoCAgICAgID/PxCnBCECIANBkANqIBcgGSAXIAMpA6ADIAJBAEgiBhsgGSADKQOoAyAGGxB7IBVCAX0hFSADKQOYAyEZIAMpA5ADIRcgBUEBdCACQQBOciIFQQBODQALCwJ+IBUgDqx9QiB8IhanIgJBACACQQBKGyANIBYgDa1TGyICQfEATgRAIANBgANqIAAQggEgAykDiAMhGCADKQOAAyEaQgAMAQsgA0HgAmpEAAAAAAAA8D9BkAEgAmsQ6AEQtQEgA0HQAmogABCCASADQfACaiADKQPgAiADKQPoAiADKQPQAiIaIAMpA9gCIhgQ/QUgAykD+AIhGyADKQPwAgshFiADQcACaiAFIAVBAXFFIBcgGUIAQgAQ/wFBAEcgAkEgSHFxIgBqEKECIANBsAJqIBogGCADKQPAAiADKQPIAhAyIANBkAJqIAMpA7ACIAMpA7gCIBYgGxB7IANBoAJqIBogGEIAIBcgABtCACAZIAAbEDIgA0GAAmogAykDoAIgAykDqAIgAykDkAIgAykDmAIQeyADQfABaiADKQOAAiADKQOIAiAWIBsQpgQgAykD8AEiFiADKQP4ASIYQgBCABD/AUUEQEHIrgRBxAA2AgALIANB4AFqIBYgGCAVpxD8BSADKQPgASEXIAMpA+gBDAELQciuBEHEADYCACADQdABaiAAEIIBIANBwAFqIAMpA9ABIAMpA9gBQgBCgICAgICAwAAQMiADQbABaiADKQPAASADKQPIAUIAQoCAgICAgMAAEDIgAykDsAEhFyADKQO4AQshFSAMIBc3AxAgDCAVNwMYIANBsANqJAAgDCkDGCEVIAwpAxAhFgwFCyACKQNwQgBTDQAgAiACKAIEQQFrNgIECyACIQUgAyECIAAhCEEAIQMjAEGQxgBrIgEkAEEAIA0gDmoiE2shFAJAAn8DQCACQTBHBEACQCACQS5HDQQgBSgC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AAJ/IARC////////P4MhCQJ/IARCMIinQf//AXEiBkH//wFHBEBBBCAGDQEaQQJBAyADIAmEUBsMAgsgAyAJhFALCyEHIAJCMIinIghB//8BcSIGQf//AUYNACAHDQELIAVBEGogASACIAMgBBAyIAUgBSkDECIBIAUpAxgiAiABIAIQ7wUgBSkDCCECIAUpAwAhBAwBCyABIAJC////////P4MgBq1CMIaEIgogAyAEQv///////z+DIARCMIinQf//AXEiB61CMIaEIgkQ/wFBAEwEQCABIAogAyAJEP8BBEAgASEEDAILIAVB8ABqIAEgAkIAQgAQMiAFKQN4IQIgBSkDcCEEDAELIAYEfiABBSAFQeAAaiABIApCAEKAgICAgIDAu8AAEDIgBSkDaCIKQjCIp0H4AGshBiAFKQNgCyEEIAdFBEAgBUHQAGogAyAJQgBCgICAgICAwLvAABAyIAUpA1giCUIwiKdB+ABrIQcgBSkDUCEDCyAJQv///////z+DQoCAgICAgMAAhCEJIApC////////P4NCgICAgICAwACEIQogBiAHSgRAA0ACfiAKIAl9IAMgBFatfSILQgBZBEAgCyAEIAN9IgSEUARAIAVBIGogASACQgBCABAyIAUpAyghAiAFKQMgIQQMBQsgC0IBhiAEQj+IhAwBCyAKQgGGIARCP4iECyEKIARCAYYhBCAGQQFrIgYgB0oNAAsgByEGCwJAIAogCX0gAyAEVq19IglCAFMEQCAKIQkMAQsgCSAEIAN9IgSEQgBSDQAgBUEwaiABIAJCAEIAEDIgBSkDOCECIAUpAzAhBAwBCyAJQv///////z9YBEADQCAEQj+IIQEgBkEBayEGIARCAYYhBCABIAlCAYaEIglCgICAgICAwABUDQALCyAIQYCAAnEhByAGQQBMBEAgBUFAayAEIAlC////////P4MgBkH4AGogB3KtQjCGhEIAQoCAgICAgMDDPxAyIAUpA0ghAiAFKQNAIQQMAQsgCUL///////8/gyAGIAdyrUIwhoQhAgsgACAENwMAIAAgAjcDCCAFQYABaiQAC78CAQF/IwBB0ABrIgQkAAJAIANBgIABTgRAIARBIGogASACQgBCgICAgICAgP//ABAyIAQpAyghAiAEKQMgIQEgA0H//wFJBEAgA0H//wBrIQMMAgsg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ayIBJAAgAUEKOgAPAkACQCAAKAIQIgIEfyACBSAAEK4EDQIgACgCEAsgACgCFCICRg0AIAAoAlBBCkYNACAAIAJBAWo2AhQgAkEKOgAADAELIAAgAUEPakEBIAAoAiQRAQBBAUcNACABLQAPGgsgAUEQaiQAC4kEAgR+An8CQCABvSIEQgGGIgNQIARC////////////AINCgICAgICAgPj/AFZyRQRAIAC9IgVCNIinQf8PcSIGQf8PRw0BCyAAIAGiIgAgAKMPCyADIAVCAYYiAloEQCAARAAAAAAAAAAAoiAAIAIgA1EbDwsgBEI0iKdB/w9xIQcCfiAGRQRAQQAhBiAFQgyGIgJCAFkEQANAIAZBAWshBiACQgGGIgJCAFkNAAsLIAVBASAGa62GDAELIAVC/////////weDQoCAgICAgIAIhAshAgJ+IAdFBEBBACEHIARCDIYiA0IAWQRAA0AgB0EBayEHIANCAYYiA0IAWQ0ACwsgBEEBIAdrrYYMAQsgBEL/////////B4NCgICAgICAgAiECyEEIAYgB0oEQANAAkAgAiAEfSIDQgBTDQAgAyICQgBSDQAgAEQAAAAAAAAAAKIPCyACQgGGIQIgBkEBayIGIAdKDQALIAchBgsCQCACIAR9IgNCAFMNACADIgJCAFINACAARAAAAAAAAAAAog8LAkAgAkL/////////B1YEQCACIQMMAQsDQCAGQQFrIQYgAkKAgICAgICABFQhByACQgGGIgMhAiAHDQALCyAFQoCAgICAgICAgH+DIQIgBkEASgR+IANCgICAgICAgAh9IAatQjSGhAUgA0EBIAZrrYgLIAKEvwvVAQEEfyAAKAJUIQMCQCAAKAIUIAAoAhwiBWsiBgRAIAAgBTYCFCAAIAUgBhCHBiAGSQ0BCwJAIAMoAhBB4QBHBEAgAygCACEEDAELIAMgAygCBCIENgIACyADKAIMIARqIAEgAygCCCAEayIBIAIgASACSRsiBBAjGiADIAMoAgAgBGoiATYCACABIAMoAgRNDQAgAyABNgIEAn8gAygCCCICIAFLBEAgAygCDCABagwBCyAALQAAQQRxRSACRXINASACIAMoAgxqQQFrC0EAOgAACyAECxgBAX8jAEEQayIBIAA5AwggASsDCCAAogufAQECfgJAIAMpAwAiBEKAgICA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IA43A3ggACAPuSAOuaM5A4gBIABB88wANgJwIAJBmoEBIABB8ABqELYBCyAHKQOgASIOUEUEQCAAIA43A2ggAEHeIjYCYCACQYiAASAAQeAAahCjAQsCQCAHKQOoASIOUA0AIAAgDjcDWCAAQdQeNgJQIAJBiIABIABB0ABqEKMBIAcpA7ABIg5QDQAgACAONwNIIABBzR42AkAgAkGIgAEgAEFAaxCjASAHKQOwASEPIAAgBykDuAEiDkIDhjcDMCAAIA65IA+5ozkDOCAAIA43AyggAEHWHzYCICACQciAASAAQSBqELYBCyAHKQPAASIOUEUEQCAAIAcpA8gBNwMQIAAgDjcDCCAAQfofNgIAIAJBlYABIAAQowELIABBsAZqJAAgAigCTBogAhCzAxogAiACKAIMEQQAGiACLQAAQQFxRQRAIAIoAjQiAARAIAAgAigCODYCOAsgAigCOCIBBEAgASAANgI0CyACQZivBCgCAEYEQEGYrwQgATYCAAsgAigCYBDnASACEOcBCyAMEAggDBDnAQsgB0HQAWokAAv8AgIEfwR+IwBBIGsiAiQAQoCAgIAwIQgCQAJAIAAgARCWASIEQQBIDQAgACACQQxqIAMpAwAgBCAEEGMNACACIAQ2AgggAykDCCIJEBAEfyAEBSAAIAJBCGogCSAEIAQQYw0BIAIoAggLIAIoAgwiBWtBABBKIQMgACABQQAQmQEiBEUNACAELwEGIQcgAiADrSIKNwMYIAIgATcDECAAQQIgAkEQahDrAiIIEAsNACADQQBMDQEgACABEOcCDQAgACAIEOcCDQACQCAAIAhBABCZASIGRQ0AIAQvAQYgBi8BBkcNACAGEJEEIANJDQAgBBCRBCADIAVqSQ0AIAYoAiQgBCgCJCAFIAdB5YoBai0AACIAdGogAyAAdBAjGgwCC0IAIQkDQCAJIApRDQIgACABIAUgCadqrRCfASILEAsNASAAIAggCSALQYCAARDfASEDIAlCAXwhCSADQQBODQALCyAAIAgQCkKAgICA4AAhCAsgAkEgaiQAIAgLzQIBAX4gACABEJYBIgJBAEgEQEKAgICA4AAPCwJAIAJFDQACQAJAAkACQAJAIAGnIgAvAQZB5YoBai0AAA4EAAECAwQLIAAoAiQiACACaiECA0AgACACQQFrIgJPDQUgAC0A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NgIAIAIgAzYCFCAAIAJBCGoQwQIhASACQQE2AgAgARALBEAgACACEMADIAEPCyACKAJEQQhrIgMpAwAhBiADQoCAgIAwNwMAIAFC/////w9YBEAgAadBAkYEQCACQQI2AgAgBEECNgIAIAYPCyAEQQA2AgAgBg8LIAAgARAKIAAgAhDAAyAGDwsgAykDABANDwsgACADKQMAEA0QkgEMAQsgAEHRKkEAEBQLQoCAgIDgACEBCyABC2UBAX4gAykDACIBEPYDRQRAIABBrzxBABAUQoCAgIDgAA8LQoCAgIAwIQQgAacpAgRCgICAgICAgIBAg0KAgICAgICAgIB/UQR+IAFC/////w+DQoCAgICQf4QQDQVCgICAgDALCy8BAX5CgICAgOAAIQEgACADKQMAECsiBBALBH5CgICAgOAABSAAIASnQQIQ9QMLC0kCAX4BfyAAIAEQwQMiARALBEAgAQ8LQoCAgIAwIQIgAaciAygCBEGAgICAeEcEQCAAIAAoAhAgAxDVAhAxIQILIAAgARAKIAILCQAgACABEMEDC04BAX4jAEEQayICJAAgAiAAIAEQwQMiATcDCAJAIAEQCwRAIAEhBAwBCyAAQoCAgIAwQQEgAkEIahDHBCEEIAAgARAKCyACQRBqJAAgBAstAEKAgICA4AAgACADKQMAIAMpAwhBABCaAiIAQQBHrUKAgICAEIQgAEEASBsLhgEBA34gAykDACIBIQQgAkEETgRAIAMpAxghBAsgAUL/////b1gEQCAAEChCgICAgOAADwsgAykDECEGQoCAgIDgACEFAkAgACADKQMIEDkiAkUNACAAIAEgAiAGEA0gBEEAEIcEIQMgACACEBEgA0EASA0AIANBAEetQoCAgIAQhCEFCyAFCyoAIAMpAwAiAUL/////b1gEQCAAEChCgICAgOAADwsgACABQQNBABCBAwtjAQF+IAMpAwAiBEL/////b1gEQCAAEChCgICAgOAADwtCgICAgOAAIQECQCAAIAMpAwgQOSICRQ0AIAAgBCACEHghAyAAIAIQESADQQBIDQAgA0EAR61CgICAgBCEIQELIAELYwECfgJAAkAgAykDACIBQv////9vWARAIAAQKAwBCyADKQMIIQUgASEEIAJBA04EQCADKQMQIQQLIAAgBRA5IgINAQtCgICAgOAADwsgACABIAIgBEEAEBIhASAAIAIQESABC2YBAX4gAykDACIEQv////9vWARAIAAQKEKAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBA5IgJFDQAgACAEIAJBABDcASEDIAAgAhARIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQuKAQIBfwJ+IwBBEGsiBCQAIAMpAwghBSADKQMAIgYhAQJAAkACQAJAIAJBA0gNACADKQMQIgEQsgENACAAQd8pQQAQFAwBCyAAIARBDGogBRCKBCICDQELQoCAgIDgACEBDAELIAAgBiABIAQoAgwiAyACEJADIQEgACACIAMQmQMLIARBEGokACABCxwAIAAgAykDAEEAIAJBAWsQSiADQQhqQQIQmwMLQwAjAEEQayICJAACfkKAgICA4AAgACACQQxqIAMpAwAQxQENABpCICACKAIMIgBFDQAaIABnrQshASACQRBqJAAgAQtQACMAQRBrIgIkAEKAgICA4AAhAQJAIAAgAkEMaiADKQMAEJICDQAgACACQQhqIAMpAwgQkgINACACKAIIIAIoAgxsrSEBCyACQRBqJAAgAQsGACAAtrsLUAAgACAAKQPQASIBQgyIIAGFIgFCGYYgAYUiAUIbiCABhSIBNwPQASABQp26s/uUkv2iJX5CDIhCgICAgICAgPg/hL9EAAAAAAAA8L+gEBUL9QMDA3wFfwN+IwBBEGsiCCQAIAhCADcDCAJAAkAgAkEATA0AQoCAgIDgACEBIAAgCEEIaiADKQMAEEcNAUEBIQkgCCsDCCEEIAJBAUcEQANAIAIgCUYNAiAAIAggAyAJQQN0aikDABBHDQMgCUEBaiEJIAgrAwAhBSMAQSBrIgckACAEvUL///////////8AgyINIAW9Qv///////////wCDIgwgDCANVhsiDr8hBAJAIA5CNIinIgpB/w9GDQAgDSAMIAwgDVQbIgy/IQUCQCAOUA0AIAxCNIinIgtB/w9GDQAgCyAKa0HBAE4EQCAFIASgIQQMAgsCfCALQf4LTwRAIAREAAAAAAAAMBSiIQQgBUQAAAAAAAAwFKIhBUQAAAAAAACwawwBC0QAAAAAAADwPyAKQbwESw0AGiAERAAAAAAAALBroiEEIAVEAAAAAAAAsGuiIQVEAAAAAAAAMBQLIQYgB0EYaiAHQRBqIAUQgwYgB0EIaiAHIAQQgwYgBiAHKwMAIAcrAxCgIAcrAwigIAcrAxign6IhBAwBCyAFIQQLIAdBIGokAAwACwALIASZIQQLIAS9An8gBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLIgC3vVEEQCAArSEBDAELIAQQFSEBCyAIQRBqJAAgAQtOACAAIABEAAAAAAAA8L9EAAAAAAAA8D8gAEQAAAAAAAAAAGMbIAC9Qv///////////wCDQoCAgICAgID4/wBWGyAARAAAAAAAAAAAYRsLgwECAn4BfyAAvSIBQjSIp0H/D3EiA0H+B00EQCABQoCAgICAgICAgH+DIQIgA0H+B0cgAUKAgICAgICA8L9/UXJFBEAgAkKAgICAgICA+D+Evw8LIAK/DwsgA0GyCE0EfCABQj+HIAF8QgFBswggA2uthiIBQgGIfEIAIAF9g78FIAALC90EAgJ8BX8jAEEQayIIJAACfiACRQRARAAAAAAAAPD/RAAAAAAAAPB/IAQbEBUMAQsCfCADKQMAIgFC/////w9YBEAgAkEBIAJBAUobIQsgAachCUEBIQcDQCAHIAtHBEAgCbcgAyAHQQN0aikDACIBQoCAgIAQWg0DGiABpyEKAn8gBARAIAkgChBKDAELIAkgChCxAQshCSAHQQFqIQcMAQsLIAmtDAILQoCAgIDgACAAIAhBCGogARBHDQEaQQEhByAIKwMICyEFIAcgAiACIAdIGyECA0AgAiAHRwRAQoCAgIDgACAAIAggAyAHQQN0aikDABBHDQIaAkAgBb1C////////////AINCgICAgICAgPj/AFYNACAIKwMAIga9Qv///////////wCDQoCAgICAgID4/wBWBEAgBiEFDAELIAQEQCAFIAUgBqUgBr1C////////////AINCgICAgICAgPj/AFYbIAYgBb1C////////////AINCgICAgICAgPj/AFgbIAa9IAW9g78gBUQAAAAAAAAAAGIgBkQAAAAAAAAAAGJyGyEFDAELIAUgBSAGpCAGvUL///////////8Ag0KAgICAgICA+P8AVhsgBiAFvUL///////////8Ag0KAgICAgICA+P8AWBsgBr0gBb2EvyAFRAAAAAAAAAAAYiAGRAAAAAAAAAAAYnIbIQULIAdBAWohBwwBCwsgBb0CfyAFmUQA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DAELIAAgAkEIaiADIARsIAZBH3YQqwMNAAJAIARBAUcEQANAIANBAEwNAiACQQhqIAVBACAEEFcaIANBAWshAwwACwALIAJBCGogBUEAEC8gAxDKBBoLIAAgARAKIAJBCGoQNyEBDAELIAAgARAKQoCAgIDgACEBCyACQSBqJAAgAQulAQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3EiBCAEEGMNACACIAQ2AgggAykDCCIHEBBFBEAgACACQQhqIAcgBCAEEGMNASACKAIIIQQLIAAgBSACKAIMIgMgBCADEEoQmwEhBgsgACABEAoLIAJBEGokACAGC6cBAgN/An4jAEEQayICJAACQCAAIAEQYSIBEAsEQCABIQcMAQtCgICAgOAAIQcCQCAAIAJBDGogAykDACABpyIGKAIEQf////8HcSIEIAQQYw0AIAIgBCACKAIMIgVrIgQ2AgggACAGIAUgAykDCCIIEBAEfyAEBSAAIAJBCGogCCAEQQAQYw0BIAIoAggLIAVqEJsBIQcLIAAgARAKCyACQRBqJAAgBwu6AQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3FBABBjDQAgAiAFKAIEQf////8HcSIENgIIIAMpAwgiBxAQRQRAIAAgAkEIaiAHIARBABBjDQEgAigCCCEECyAAIAUgAigCDCIDIAQgAyAESCIFGyAEIAMgBRsQmwEhBgsgACABEAoLIAJBEGokACAGC5IEAgl+A38jAEEQayINJAAgAykDCCEHIAMpAwAhBAJAAkACQCABEBBFBEAgARAmRQ0BCyAAQYkcQQAQFAwBCwJAIAQQECICDQAgBBAmDQBCgICAgOAAIQUgACAEQcgBIARBABASIggQCw0CIAgQEA0AIAgQJg0AIA0gBzcDCCANIAE3AwAgACAIIARBAiANEDUhBQwCC0KAgICAMCEKAkAgACABECsiDBALBEBCgICAgDAhBQwBCyAAEE4iBRALDQACQCAHEBAEQCANQX82AgAMAQsgACANIAcQxQFBAEgNAQsgDKciDikCBCEBIAAgBBArIgoQCw0AAkAgDSgCACIDRQ0AIAGnQf////8HcSEPAkAgAgRADAELIAqnIgIpAgRC/////weDIQsgDwRAIAFC/////weDIAt9IAtQrSIEfSEHIAOtIQgDQAJAIAQgCXwiASAHVQ0AIA4gAiABpxDLBCIDQQBIDQAgACAOIAmnIAMQmwEiARALDQUgACAFIAYgAUEAEKsBQQBIDQUgCyADrHwhCSAGQgF8IgYgCFINAQwECwsgBkL/////D4MhBgwBCyALUA0BCyAAIA4gCacgDxCbASIBEAsNASAAIAUgBiABQQAQqwFBAEgNAQsgACAMEAogACAKEAoMAgsgACAFEAogACAMEAogACAKEAoLQoCAgIDgACEFCyANQRBqJAAgBQvSAgEDfiMAQTBrIgIkACACIAE3AyggAykDACEFAkACQCABEBBFBEAgARAmRQ0BCyAAQYkcQQAQFEKAgICA4AAhBwwBCwJAIAUQEA0AIAUQJg0AQoCAgIDgACEHIAAgBSAEIAVBABASIgYQCw0BAkAgBEHFAUcNACAAIAUQzARBAE4NACAAIAYQCgwCCyAGEBANACAGECYNACAAIAYgBUEBIAJBKGoQNSEHDAELIAIgACABECsiBjcDCEKAgICA4AAhByAGEAsNACACIAU3AxACQAJAAn8gBEHFAUcEQEKAgICAMCEBQQEMAQsgAEH6xQAQdCIBEAsNASACIAE3AxhBAgshAyAAIAApA0ggAyACQRBqEK8BIQUgACABEAogBRALRQ0BCyAAIAYQCgwBCyAAIAUgBEEBIAJBCGoQugIhByAAIAIpAwgQCgsgAkEwaiQAIAcL+QICBX8DfiMAQRBrIgUkAAJAIAAgARBhIgoQCwRAIAohAQwBCwJAIAAgAykDABCCBCIGBEBCgICAgOAAIQFCgICAgDAhCyAGQQBMDQEgAEG+3QBBABAUDAELQoCAgIDgACEBIAAgAykDABArIgsQCw0AIAunIgcoAgQhCCAFIAqnIgkoAgRB/////wdxIgZBACAEQQJGGzYCDAJAIAJBAkgNACADKQMIIgwQEA0AIAAgBUEMaiAMIAZBABBjDQELIAYgCEH/////B3EiBmshAgJAAkACQAJAIAQOAgABAgsgBSgCDCEDDAILIAUoAgwiAyACSiEEQoCAgIAQIQEgAyECIARFDQEMAgsgBSAFKAIMIAZrIgM2AgwgAyECC0KAgICAECEBIANBAEggAiADSHINAANAIAkgByADQQAgBhDCA0UEQEKBgICAECEBDAILIAIgA0chBCADQQFqIQMgBA0ACwsgACAKEAogACALEAoLIAVBEGokACABC68DAQV+IAEQEARAIAAQgQQhAQsgACABQTsgAUEAEBIiBRALBEAgBQ8LAkACQCAFECBFBEAgACAFEAogACABEI8DIgJFDQECfyAEQQBIBEAgAigCKEEYagwBCyACIARBA3RqQdgAagspAwAQDSEFCyAAIAVBAxBQIQEgACAFEAogARALDQECQCADIARBB0ZBA3RqKQMAIgUQEEUEQCAAIAUQKyIFEAsNASAAIAFBMyAFQQMQGRoLIARBB0YEQCADKQMAIQYjAEEQayICJABCgICAgDAhBQJAAkAgACAGQQAQ9QEiBhALBEBCgICAgDAhCAwBCyAAIAZB6gAgBkEAEBIiCBALDQAgABBOIgUQCw0AA0AgACAGIAggAkEMahCsASIJEAtFBEAgAigCDA0DIAAgBSAHIAkQbiEDIAdCAXwhByADQQBODQELCyAAIAZBARCwARoLIAAgBRAKQoCAgIDgACEFCyAAIAgQCiAAIAYQCiACQRBqJAAgBRALDQEgACABQTQgBUEDEBkaCyAAIAFBAEEAQQEQxgIgAQ8LIAAgARAKC0KAgICA4AAhAQsgAQuNAwMHfwF8AX4jAEEQayIFJAACQCAAIAEQYSIBEAsNAAJAAkAgACADKQMAECsiDRALDQAgDaciCigCBEH/////B3EhBiABpyILKAIEQf////8HcSEHAkAgBARAIAcgBmshBEF/IQggAkECSA0BIAAgBSADKQMIEEcNAiAFKwMAIgy9Qv///////////wCDQoCAgICAgID4/wBWDQEgBQJ/QQAgDEQAAAAAAAAAAGUNABogDCAEt2NFDQIgDJlEAAAAAAAA4EFjBEAgDKoMAQtBgICAgHgLIgQ2AgwMAQtBACEEIAVBADYCDCACQQJOBEAgACAFQQxqIAMpAwggB0EAEGMNAiAFKAIMIQQLIAcgBmshCUEBIQgLQX8hAyAJIARrIAhsQQBIIAYgB0tyDQEDQCALIAogBEEAIAYQwgNFBEAgBCEDDAMLIAQgCUYNAiAEIAhqIQQMAAsACyAAIAEQCiAAIA0QCkKAgICA4AAhAQwBCyAAIAEQCiAAIA0QCiADrSEBCyAFQRBqJAAgAQuGAQIBfgF/IwBBEGsiAiQAAkAgACABEGEiBBALBEAgBCEBDAELQoCAgIDgACEBAkAgACACQQxqIAMpAwAQwwENAEKAgICAMCEBIAIoAgwiA0EASA0AIAMgBKciBSgCBEH/////B3FPDQAgBSACQQxqENkBrSEBCyAAIAQQCgsgAkEQaiQAIAELTAEBfyACQQAgAkEAShshAiAAIAEQYSEBA0ACQCACIARGDQAgARALDQAgACABIAMgBEEDdGopAwAQDRDIAiEBIARBAWohBAwBCwsgAQu0AQIBfgF/IwBBEGsiAiQAAkAgACABEGEiBBALBEAgBCEBDAELAn5CgICAgOAAIAAgAkEMaiADKQMAEMMBDQAaAkAgAigCDCIDQQBOBEAgAyAEpyIFKQIEIgGnQf////8HcUkNAQsgAEEAQQAQ1wIMAQsgAAJ/IAFCgICAgAiDUEUEQCAFIANBAXRqLwEQDAELIAMgBWotABALQf//A3EQpwMLIQEgACAEEAoLIAJBEGokACABC6QBAgJ+AX8jAEEQayICJAACQCAAIAEQYSIEEAsEQCAEIQEMAQtCgICAgOAAIQECQCAAIAJBDGogAykDABDDAQ0AQoCAgIDAfiEBIAIoAgwiA0EASA0AIAMgBKciBikCBCIFp0H/////B3FPDQAgBUKAgICACINQRQRAIAYgA0EBdGozARAhAQwBCyADIAZqMQAQIQELIAAgBBAKCyACQRBqJAAgAQuRAgIBfwZ+IwBBIGsiBCQAIAAgBEEIakEAEEEaQoCAgIAwIQUCfgJAAkAgACADKQMAECkiBhALDQAgACAAIAZB8AAgBkEAEBIQlgUiBRALDQAgACAEIAUQQEEASA0AQgAhASAEKQMAIgdCACAHQgBVGyEIIAdCAX0hByACrCEJA0AgASAIUQ0CIAAgACAFIAEQYhA8IgoQCw0BIARBCGogChCNARogASAHWSECIAFCAXwhASABIAlZIAJyDQAgBEEIaiADIAGnQQN0aikDABCaAUUNAAsLIAAgBhAKIAAgBRAKIARBCGoQQ0KAgICA4AAMAQsgACAGEAogACAFEAogBEEIahA3CyEBIARBIGokACABC+sBAgN/AXwjAEEgayIEJAACfgJAIAAgBCACEEENACACQQAgAkEAShshBgJAA0AgBSAGRwRAAkAgAyAFQQN0aikDACIBQv////8PWARAIAGnIgJB///DAE0NAQwECyAAIARBGGogARBHDQQgBCsDGCIHRAAAAAAAAAAAYyAHRAAAAAD//zBBZHINAyAHAn8gB5lEAAAAAAAA4EFjBEAgB6oMAQtBgICAgHgLIgK3Yg0DCyAFQQFqIQUgBCACEL4BRQ0BDAMLCyAEEDcMAgsgAEGJGBBpCyAEEENCgICAgOAACyEBIARBIGokACABC4oBAQJ/IwBBIGsiBCQAIAAgBEEIaiACEEEaIAJBACACQQBKGyECAn4DQCACIAVHBEACQCAAIARBBGogAyAFQQN0aikDABCSAkUEQCAEQQhqIAQvAQQQlAFFDQELIARBCGoQQ0KAgICA4AAMAwsgBUEBaiEFDAELCyAEQQhqEDcLIQEgBEEgaiQAIAELCQAgACABEM0ECx8AIAAgARDNBCIBEAsEfiABBSAAQQNBAiABpxsQMQsLgQEBAXwjAEEQayICJAACfkKAgICAECADKQMAIgEQjgFFDQAaQoCAgIDgACAAIAJBCGogARBHDQAaIAIrAwgiBL1CgICAgICAgPj/AINCgICAgICAgPj/AFIgBJwgBGFxIASZRP///////z9DZXGtQoCAgIAQhAshASACQRBqJAAgAQsmAEKAgICA4AAgACADKQMAENQFIgBBAEetQoCAgIAQhCAAQQBIGwsgACADKQMAEI4BRQRAQoCAgIAQDwsgACABIAIgAxDQBAsgACADKQMAEI4BRQRAQoCAgIAQDwsgACABIAIgAxDRBAsJACAAIAEQrQILxQECAX8BfiMAQRBrIgIkAAJ+IAAgARCtAiIBEAsEQCABDAELQQohBQJAAkAgBA0AIAMpAwAiBhAQDQAjAEEQayIDJABBfyEEAkAgACADQQxqIAYQwwENACADKAIMIgRBJWtBXEsNACAAQabwABBpQX8hBAsgA0EQaiQAIAQiBUEASA0BC0KAgICA4AAgACACQQhqIAEQWQ0BGiAAIAIrAwggBUEAQQAQywIMAQsgACABEApCgICAgOAACyEBIAJBEGokACABC8MBAgF+AXwjAEEQayICJAACQCAAIAEQrQIiBBALBEAgBCEBDAELQoCAgIDgACEBIAAgAiAEEFkNAAJAAkAg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CyAAIAUQCkKAgICA4AAhBQwDBSADQQFqIQMMAQsACwALIAAgBRAKIAAgAUH/AEECIAJBEGoQxQIhBSAAIAIpAxAQCiAAIAIpAxgQCgsgAkEgaiQAIAULOQAjAEEQayICJAAgAkKAgICAMDcDACACIAMpAwA3AwggACABQf8AQQIgAhDFAiEBIAJBEGokACABC6UBAgF/A34jAEEQayICJABCgICAgOAAIQUCQCAAIAFBKhBoRQ0AIAAgAUKAgICAMBDyASIGEAsEQCAGIQUMAQsgACACIAYQwgIhByAAIAYQCgJAIAcQCw0AIAAgASADIAIQuwIhAwNAIARBAkZFBEAgACACIARBA3RqKQMAEAogBEEBaiEEDAELCyADRQ0AIAAgBxAKDAELIAchBQsgAkEQaiQAIAUL4AECA34BfyMAQRBrIgYkACABQQVGBEAgAikDECEDIAAgAikDGBD4ASEBIAYgAikDICIENwMIIAYCfiADEBAEQCAEEA0iAyABRQ0BGiAAIAMQkgFCgICAgOAADAELIAAgA0KAgICAMEEBIAZBCGoQIgsiAzcDACADEAsiAQRAIAYgABCRASIDNwMAC0KAgICAMCEEIAAgAiABQQN0aikDACIFEBAEfiADBSAAIAVCgICAgDBBASAGECIhBCAGKQMACxAKIAZBEGokACAEDwtB6/AAQbfjAEHX6QJBheQAEAAAC4EBAQN/AkAgAUEyED8iBEUNACAEQcwAaiEDIARByABqIQUDQCADKAIAIgMgBUZFBEAgACADKQMQIAIQISAAIAMpAxggAhAhIAAgAykDICACECEgACADKQMoIAIQISADQQRqIQMMAQsLIAQoAgRBfnFBBEYNACAAIARBCGogAhDvAwsLFgEBfyABQTIQPyICBEAgACACEK0FCwslAQF/IAFBMBA/IgMEQCAAIAMpAwAgAhAhIAAgAykDCCACECELCycBAX8gAUEwED8iAgRAIAAgAikDABAlIAAgAikDCBAlIAAgAhAfCwsWAQF/IAGnKAIgIgIEQCAAIAIQrgULCygBAX8gAacoAiAiAgRAIAAgAigCCBCFBSAAIAIpAwAQJSAAIAIQHwsLgAEBBX8gAUEqED8iBQRAIAVBBGohBgNAIARBAkZFBEAgBiAEQQN0aiIHQQRqIQMDQCADKAIAIgMgB0ZFBEAgACAD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KAIoIgNBAWo2AiggBCADQQN0aiAPNwMAQQALIQMgB0EQaiQAIAsgA0EASCIDcgRAQQJBBCADGwwECyAAIBEQCiAAIAAgD0IAEGIQPCIREAsNACAREPYBRQ0CIAAgAkHgAGogACABQdUAIAFBABASEK0BQQBODQELQoCAgIAwIQ9CgICAgDAhEgwGCyAAIAFB1QACfiAGIAIpA2AgBRCDAyIPQoCAgIAIfEL/////D1gEQCAPQv////8PgwwBCyAPuRAVCxBIIgNBAE4NACADQR52QQJxDAELQQALIQNCgICAgDAhD0KAgICAMCESIAMOBQEFAwUABQsLQQAhBUEAIQRCgICAgDAhD0KAgICAMCESA0AgAigCOCAESgRAIAAgAkEMaiACKAIUIARBA3RqKQMAIhYQ2gFBAEgNAyAAIBEQCiAAIAAgFkIAEGIQPCIREAsNAyAAIAIgACAWQdcAIBZBABASEK0BDQMCQCACKQMAIhAgBikCBEL/////B4MiAVUEQCACIAE3AwAgASEQDAELIBBCAFkNAEIAIRAgAkIANwMACyAAIBIQCiAAEE4iEhALDQMgACASQgAgERANIhEQbkEASA0DIAIoAgwiA0EBIANBAUsbIgOtIRpCASEBA0AgASAaUgRAIAAgFiABEGIiGBALDQUgGBAQRQRAIAAgGBA8IhgQCw0GCyAAIBIgASAYEG4hByABQgF8IQEgB0EATg0BDAULCyAAIBQQCiAAIBZBhwEgFkEAEBIiFBALDQMCQCAKBEAgACASIBogEEL/////D4MQbkEASA0FIAAgEiADQQFqrSAVEA0QbkEASA0FAkAgFBAQDQAgACASIANBAmqtIBQQDSIBEG5BAE4NACABIRQMBgsgAiASNwNoIAJCgICAgDA3A2AgACAPEAogACAAIBlBAiACQeAAakEAEJsDEDwhDwwBC0KAgICAMCEBIBQQEEUEQCAAIBQQKSIBEAsNBQsgAiAXNwOIASACIAE3A4ABIAIgEjcDeCACIBU3A2ggAiARNwNgIAIgEEL/////D4M3A3AgACAPEAogACACQeAAahCPBSEPIAAgARAKCyAPEAsNAyAFrCAQVwRAIAJByABqIgMgBiAFIBCnEFcaIAMgDxCaARogEacpAgRC/////weDIBB8pyEFCyAEQQFqIQQMAQsLIAJByABqIgMgBiAFIAYoAgRB/////wdxEFcaIAMQNyETDAILQoCAgIAwIQ9CgICAgDAhEkKAgICAMCERCyACQcgAahBDCyACQRBqEI4FIAAgFxAKIAAgERAKIAAgEhAKIAAgDxAKIAAgFBAKIAAgFRAKCyACQZABaiQAIBMLjQEAIwBBIGsiAiQAAn4CQCABECBFBEAgABAoDAELIAAgAkEIaiIDQQAQQRogA0EvED0aAkAgAyAAIAFB7AAgAUEAEBIQjQENACACQQhqIgNBLxA9GiADIAAgAUHtACABQQAQEhCNAQ0AIAJBCGoQNwwCCyACQQhqEEMLQoCAgIDgAAshASACQSBqJAAgAQs/AQF+QoCAgIDgACEEIAAgASADKQMAENgBIgEQCwR+QoCAgIDgAAUgARAmIQIgACABEAogAkWtQoCAgIAQhAsLgAIBA34CQCAAIAFBARDbASICRQ0AIAMpAwghBgJAAkAgACADKQMAIgRBABDbASIDBEAgBhAQRQRAIABB4OAAQQAQFEKAgICA4AAPCyADNQIAQoCAgICQf4QQDSEEIAM1AgRCgICAgJB/hBANIQUMAQtCgICAgDAhBQJ+IAQQEARAIABBLxAxDAELIAAgBBArCyIEEAsNASAAIAQgBhCDBCIFEAsNAQsgACACNQIAQoCAgICQf4QQCiAAIAI1AgRCgICAgJB/hBAKIAIgBT4CBCACIAQ+AgAgACABQdUAQgAQSEEASA0BIAEQDQ8LIAAgBBAKIAAgBRAKC0KAgICA4AALawEBfyABQv////9vWARAIAAQKEKAgICA4AAPCwJ+IAAgAUEAENsBIgNFBEBCgICAgDAgACABIAAoAigpA5ABEFgNARogAEESEJ0DQoCAgIDgAA8LIAIgAygCBC0AEHFBAEetQoCAgIAQhAsLxgMBB38jAEEgayIFJAACQAJAAkACQAJAIAFC/////29YBEAgABAoDAELIAAgASAAKAIoKQOQARBYDQIgACABQQEQ2wEiAg0BC0KAgICA4AAhAQwDCyACKAIAIgcoAgQiAkH/////B3EiAw0BCyAAQZP5ABB0IQEMAQsgACAFQQhqIAMgAkEfdhCrAxogBygCBEH/////B3EhCEEAIQADQAJAAkAgACAISARAIABBAWohAkF/IQYCQAJ/AkACQAJAAkACQAJAAkAgByAAEC8iA0HbAGsOAwMBAgALIAIhAAJAIANBCmsOBAQLCwUACyADQS9HDQcgBEUNBUEBIQRBLyEDDAcLQdwAIQMgAiAITg0GIABBAmohACAHIAIQLyEGDAkLQQAhBEHdACEDDAULQdsAIQMgBCACIAhOcg0GIABBAmogAiAHIAIQL0HdAEYiAhshAEHdAEF/IAIbIQZBASEEDAcLQe4ADAILQfIADAELQQAhBEEvCyEGQdwAIQMLIAIhAAwCCyAFQQhqEDchAQwDCyACIQBBASEECyAFQQhqIAMQlAEaIAZBAEgNACAFQQhqIAYQlAEaDAALAAsgBUEgaiQAIAEL1QICA38BfiMAQRBrIgQkAAJAIAFC/////29YBEAgABAoQoCAgIDgACEFDAELQoCAgIDgACEFIAAgACABQe4AIAFBABASECwiAkEASA0AIAIEfyAEQecAOgAIIARBCWoFIARBCGoLIQIgACAAIAFBycsAEM4CECwiA0EASA0AIAMEQCACQekAOgAAIAJBAWohAgsgACAAIAFB6cwAEM4CECwiA0EASA0AIAMEQCACQe0AOgAAIAJBAWohAgsgACAAIAFBrT4QzgIQLCIDQQBIDQAgAwRAIAJB8wA6AAAgAkEBaiECCyAAIAAgAUHvACABQQAQEhAsIgNBAEgNACADBEAgAkH1ADoAACACQQFqIQILIAAgACABQdcMEM4CECwiA0EASA0AIAAgBEEIaiIAIAMEfyACQfkAOgAAIAJBAWoFIAILIABrEP4BIQULIARBEGokACAFC+0KAhF/AX4jAEEQayIHJAACQCAAIAEQYSIBEAsNACMAQRBrIgkkAEF/IQQCQCAAIgYgARArIhUQCw0AIAYgFaciCygCBEH/////B3EiCEEBEEpBAnQQLSIARQRAIAYgFRAKIAdBADYCCAwBCyAJQQA2AgxBACEEA0AgCCAKSgRAIAAgBEECdGogCyAJQQxqENkBNgIAIARBAWohBCAJKAIMIQoMAQsLIAYgFRAKIAcgADYCCAsgCUEQaiQAIAYgARAKQoCAgIDgACEBIAQiAEEASA0AAkAgAkUNACADKQMAIhUQEA0AAkAgBiAHQQxqIBUQjwIiAgRAAkAgAi0AAEHOAEcNACACLQABQcYARw0AIAJBA0ECIAItAAJBywBGIgMbai0AACIEQcMAa0H/AXFBAUsNACAHKAIMIAJBA2ogAkECaiADGyACa0EBakYNAgsgBiACEDYgBkHtOxBpCyAGIAcoAggQGAwCCyAGIAIQNiAEIANBAXRqQcMAayEFCyAHKAIIIQsgBigCECECIwBBIGsiCSQAIAlBCGoiAyACQSsQ5gICQAJAAkACQCADIABBAnQiAxDMAUUEQCAFRQRAQQAhAiAAQQAgAEEAShshBANAIAIgBEYNBCACQQJ0IQggAkEBaiECIAggC2ooAgBB/wFNDQALCyAJQQhqIgIgCyAAIAVBAXYQtgQgAigCDEUNAQsgB0EANgIEQX8hAAwDCyAJKAIIIQhBACECIAkoAgwiDkECdiIAQQFrIQ8DQAJAAkAgACACSgRAIAggAiIDQQJ0aigCABCmAkUNAQNAIAMgD0YEQCAAIQIMAwsgCCADQQFqIgRBAnRqKAIAIhAQpgIiDARAA0ACQCACIANKDQAgCCADQQJ0aiIKKAIAEKYCIAxMDQAgCiAKKAIANgIEIANBAWshAwwBCwsgA0ECdCAIaiAQNgIEIAQhAwwBBSAEIQIMAwsACwALDAELIAJBAWohAgwBCwsgBUEBcSAOQQhJcg0BIABBASAAQQFLGyESQQEhBEEBIQADQCAEIBJGDQIgCCAEQQJ0aiIPKAIAEKYCIQMgACECAkACQANAIAJBAEwNASAIIAJBAWsiAkECdGoiECgCABCmAiIFBEAgAyAFSiEFQYACIQMgBQ0BDAILCwJ/QQAhBSAQKAIAIgJBzARsIA8oAgAiCkEcbGpBnI2hAWsgAkGAImtBEksgCkHhImtBFEtyRQ0AGgJAIAJBgNgCayIDQaPXAEsNACADQf//A3FBHHAgCkGnI2siA0EbS3INACACIANqDAELIwBBEGsiAyQAQbAHIQ4DQAJAIAUgDkoEQEEAIQwMAQsgA0EIaiAFIA5qQQJtIhFBAXRBsLEDai8BACIMQQZ2IhNBAnRB0MECaigCACINQQ52IhQgDEE/cWoiDCATIBQgDUEHdkH/AHEgDUEBdkE/cRCLBhogAiADKAIIayINIAogAygCDGsgDRsiDUEASARAIBFBAWshDgwCCyANRQ0AIBFBAWohBQwBCwsgA0EQaiQAIAwLIgJFDQAgECACNgIADAELIAggAEECdGogDygCADYCACAAQQFqIQALIARBAWohBAwACwALIAcgCSgCCCALIAMQIzYCBAwBCyAHIAg2AgQLIAlBIGokACAGIAsQGCAAQQBIDQAgBygCBCEDIwBBIGsiAiQAAkAgBiACQQhqIAAQQQ0AQQAhBSAAQQAgAEEAShshAAJAA0AgACAFRg0BIAVBAnQhBCAFQQFqIQUgAkEIaiADIARqKAIAEL4BRQ0ACyACQQhqEEMMAQsgAkEIahA3IQELIAJBIGokACAGIAcoAgQQGAsgB0EQaiQAIAELuwECA38BfgJAAkAgAhBcRQ0AIAIQeiEHIAGnKQMgIgpCgICAgHCDQoCAgICQf1INACAHIAqnIggoAgRB/////wdxTw0AAkBBBCAGEKIDRQ0AQQEhAiAGQYDAAHFFDQIgA0KAgICAcINCgICAgJB/Ug0AIAOnIgkpAgRC/////weDQgFSDQAgCCAHEC8gCUEAEC9GDQILIAAgBkG/0QAQdw8LIAAgASACIAMgBCAFIAZBgIAIchB2IQILIAILHQACfyACEFwEQEEAIAIQeiABEJkESQ0BGgtBAQsLpwEBAn8CQCADEFxFDQAgAqcpAyAiAkKAgICAcINCgICAgJB/Ug0AIAMQeiIDIAKnIgUpAgQiAqdB/////wdxTw0AQQEhBCABRQ0AAn8gAkKAgICACINQRQRAIAUgA0EBdGovARAMAQsgAyAFai0AEAshAyABQQQ2AgAgACADQf//A3EQpwMhAiABQoCAgIAwNwMYIAFCgICAgDA3AxAgASACNwMICyAEC2gBAn8gAacoAhAiAyADKAIYIAJxQX9zQQJ0aigCACEAIAMQJyEDA0ACQCAARQRAQQAhAAwBCyAAQQN0IANqIgRBCGshACAEQQRrKAIAIAJGDQAgACgCAEH///8fcSEADAELCyAAQQBHC94CAQJ+IwBBIGsiBSQAAkACQCAAIAFBJRBoIgJFDQACQCACKQMAIgEQEEUEQAJAAkAgAaciAy8BBkEVa0H//wNxQQhNBEAgAxCYAUUNASAAEHMMBQsgACAFQRxqIAEQ2gENBCAFKAIcIQMMAQsgBSADKAIoIgM2AhwLIAMgAigCDCIDSw0BIAAgAikDABAKIAJCgICAgDA3AwALIARBATYCAEKAgICAMCEBDAILIAIgA0EBajYCDCAEQQA2AgAgAigCCEUEQCADQQBOBEAgA60hAQwDCyADuBAVIQEMAgtCgICAgOAAIQEgACACKQMAIAMQeSIGEAsNASACKAIIQQFGBEAgBiEBDAILIANBAE4EfiADrQUgA7gQFQshByAFIAY3AwggBSAHNwMAIABBAiAFEJIDIQEgACAGEAogACAHEAoMAQsgBEEANgIAQoCAgIDgACEBCyAFQSBqJAAgAQuxAgIEfwJ+IwBBEGsiASQAIAIpAxghBwJAAkAgAikDECIIEJwBRQRAIABBmPkAQQAQFAwBCyAAIAgQtwEiBEUEQEEAIQQMAQsgACAHELcBIgVFDQACfwJAIAAgBCAFEL0FIgNFDQAgACADEIUEQQBIBEAgAEEBEKUEQQAMAgsgACADrUKAgICAUIQQDSAAKQPAAUEAQQAQuwUiBxALDQAgACAHEAogAyEGCyAGCyEDIAAgBRA2IANFDQAgASAAIAMQiQMiBzcDACAHEAsNACAAIAAgAikDAEKAgICAMEEBIAEQIhAKIAAgASkDABAKDAELIAEgABCRATcDCCAAIAAgAikDCEKAgICAMEEBIAFBCGoQIhAKIAAgASkDCBAKCyAAIAQQNiABQRBqJABCgICAgDALaQECfyMAQRBrIgckAAJ/AkAgAaciCC0ABUEIcUUNACAAIAdBDGogAhCzAUUNACAHKAIMIAgoAihPDQBBfyAAIAgQoQMNARoLIAAgASACIAMgBCAFIAZBgIAIchB2CyEAIAdBEGokACAAC0YBAn4gAiAAKAIAEDEhA0EAIQAgAiABKAIAEDEhBAJAIAMQCw0AIAQQCw0AIAOnIASnEJQCIQALIAIgAxAKIAIgBBAKIAALawEBfgJAAkACQAJAAkAgAy0ABSIBDgQDAgIAAQsgACADKAIIEPQEDwsgAUEIRg0CCxABAAsgACADKAIMIAMoAgAgAy0ACCADLQAJIAMuAQYQyQEPCyAAIAAQOyIEIAMoAgggAygCDBAkIAQLCQAgACADEIkDCzwBAX4gABA7IgQQC0UEQCAAIARBPCABrUKAgICAcIQQDUEDEBlBAE4EQCAEDwsgACAEEAoLQoCAgIDgAAtfAQF/AkAgAUUEQCACRQ0BIAAgAhClBQ8LIAJFBEAgACAAKAIAQQFrNgIAIAAgACgCBEEIazYCBCABEOcBDAELIAAoAgggACgCBCACak8EfyABIAIQ8QUFQQALDwtBAAsmACABBEAgACAAKAIAQQFrNgIAIAAgACgCBEEIazYCBCABEOcBCwsoAQF/AkAgAacoAiAiA0UNACADKAIAQQRGDQAgACADQQhqIAIQ7wMLCxwBAX8gAUEoED8iAgRAIAAgAhDtAyAAIAIQHwsLJQEBfyABpygCICIDBEAgACADKQMAIAIQISAAIAMpAwggAhAhCwsnAQF/IAGnKAIgIgIEQCAAIAIpAwAQJSAAIAIpAwgQJSAAIAIQHwsLHgEBfyABpygCICICBEAgACACKQMAECUgACACEB8LC0MBAn8gAacoAiAiAgRAAkAgAikDACIBEN4FRQ0AIAIoAgwiA0UNACAAIAMQ8QMgAikDACEBCyAAIAEQJSAAIAIQHwsLWAEDfwJAIAGnKAIgIgRFDQAgBEEIaiEDIARBBGohBQNAIAMoAgAiAyAFRg0BIAQoAgBFBEAgACADKQMQIAIQIQsgACADKQMYIAIQISADQQRqIQMMAAsACwuBAQEFfyABpygCICIDBEAgA0EEaiEFIAMoAgghAgNAIAIgBUcEQCACKAIEIQYgAkEQayEEIAJBDGsoAgBFBEACQCADKAIABEAgBBCmBQwBCyAAIAIpAxAQJQsgACACKQMYECULIAAgBBAfIAYhAgwBCwsgACADKAIQEB8gACADEB8LCyEBAX8gAacoAiAiAwRAIAAgAzUCDEKAgICAcIQgAhAhCwtAAQF/IAGnKAIgIgIEQCAAIAI1AgxCgICAgHCEIgEQ3gUEfiACEEYgAjUCDEKAgICAcIQFIAELECUgACACEB8LC1sBAn8gAacoAiAiAgRAAkACQCACLQAFRQ0AIAAoArwBIgNFDQAgACgCxAEgAigCCCADEQMADAELIAIoAhgiA0UNACAAIAIoAhQgAigCCCADEQYACyAAIAIQHwsLKQEBfyAAIAGnIgI1AiRCgICAgJB/hBAlIAAgAjUCIEKAgICAkH+EECULEQAgACABpygCICkDACACECELGQEBfyAAIAGnKAIgIgIpAwAQJSAAIAIQHwtBAQN/AkAgAUEPED8iBEUNACAEQQhqIQUDQCADIAQtAAVPDQEgACAFIANBA3RqKQMAIAIQISADQQFqIQMMAAsACwtDAQN/IAFBDxA/IgMEQCADQQhqIQQDQCACIAMtAAVPRQRAIAAgBCACQQN0aikDABAlIAJBAWohAgwBCwsgACADEB8LC0kBAn8gACABpygCICIEKQMAIAIQISAAIAQpAwggAhAhA0AgAyAEKAIQTkUEQCAAIAQgA0EDdGopAxggAhAhIANBAWohAwwBCwsLSQECfyAAIAGnKAIgIgIpAwAQJSAAIAIpAwgQJQNAIAMgAigCEE5FBEAgACACIANBA3RqKQMYECUgA0EBaiEDDAELCyAAIAIQHwuOAQEEfyABpyIDKAIkIQUgAygCICEEIAMoAigiAwRAIAAgA61CgICAgHCEIAIQIQsgBARAAkAgBUUNAEEAIQMDQCADIAQoAjxODQECQCAFIANBAnRqKAIAIgZFDQAgBi0ABUEBcUUNACAAIAYgAhEDAAsgA0EBaiEDDAALAAsgACAErUKAgICAYIQgAhAhCwtzAQN/IAGnIgIoAigiAwRAIAAgA61CgICAgHCEECULIAIoAiAiAwRAIAIoAiQiBARAQQAhAgNAIAIgAygCPE5FBEAgACAEIAJBAnRqKAIAEPkBIAJBAWohAgwBCwsgACAEEB8LIAAgA61CgICAgGCEECULCxIAIAGnKAIgIgAEQCAAEK4DCwsOACAAIAGnKQMgIAIQIQsZACAAIAGnIgApAyAQJSAAQoCAgIAwNwMgCzUBAn8gAachBANAIAMgBCgCKE9FBEAgACAEKAIkIANBA3RqKQMAIAIQISADQQFqIQMMAQsLCzwBAn8gAachAwNAIAIgAygCKE9FBEAgACADKAIkIAJBA3RqKQMAECUgAkEBaiECDAELCyAAIAMoAiQQHwsIACAAIAIQHwu4AQIBfwJ+IwBBIGsiAyQAIAFBA0YEQCACKQMQIQQgAikDCCEFAkAgACADQRBqIAIpAwAQrAVBAEgEQEKAgICA4AAhBAwBCyAAIAQgBUECIANBEGoQIiIEEAsEQCADIAAQkQE3AwggACADKQMYQoCAgIAwQQEgA0EIahAiIQQgACADKQMIEAoLIAAgAykDEBAKIAAgAykDGBAKCyADQSBqJAAgBA8LQYvxAEG34wBBu+oCQZrkABAAAAvoAQEIfyMAIgchCyABpygCICIIKAIQIglBACAJQQBKGyEMIAcgAyAJaiIKQQN0QQ9qQXBxayIHJAADfiAGIAxGBH5BACEGIANBACADQQBKGyEDA0AgAyAGRkUEQCAHIAYgCWpBA3RqIAQgBkEDdGopAwA3AwAgBkEBaiEGDAELCwJ+IAVBAXEEQCAAIAEgAhBYIQMgACAIKQMAIgEgASACIAMbIAogBxCQAwwBCyAAIAgpAwAgCCkDCCAKIAcQIgshASALJAAgAQUgByAGQQN0Ig1qIAggDWopAxg3AwAgBkEBaiEGDAELCwuHAQIBfgF/QoCAgIDgACEGAkAgAEHIABBqIgUEQCAFQQA2AgAgACAFQQhqIgcgASACIAMgBBDyAwRAIAVBBDYCAAwCCyAAIAcQwQIiAhALDQEgACACEAogACABQSgQbSIGEAsNASAGIAUQiwELIAYPCyAAKAIQIAUQ7QMgACAFEBhCgICAgOAAC+oFAgl/AXwjAEFAaiIGJAAgAaciCC0AKSELIAgtACghCSAGIAAoAhAiDCgCjAE2AhAgDCAGQRBqNgKMASAIKAIgIQcgBiADNgI0IAYgATcDGCAGQQA2AjgCQCADIAlOBEAgBCEADAELIANBACADQQBKGyENIAYgCUEDdEEPakHwH3FrIgAkAANAIAogDUYEQCADIQQDQCAEIAlGRQRAIAAgBEEDdGpCgICAgDA3AwAgBEEBaiEEDAELCyAGIAk2AjQFIAAgCkEDdCIOaiAEIA5qKQMANwMAIApBAWohCgwBCwsLIAYgADYCICAIKAIkIQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCw4NCwIAAQABBwgDBAUGCQoLIAVBAXENCkKAgICAMCECIAtBAkcNCgwLCyAFQQFxDQBCgICAgDAhAiALQQNGDQoLIAcgAiADIAAgCC4BKiAEEQUAIQEMCwsgByACIAQRCQAhAQwKCyAHIAIgACkDACAEERYAIQEMCQsgByACIAguASogBBEPACEBDAgLIAcgAiAAKQMAIAguASogBBEwACEBDAcLIAcgBkEIaiAAKQMAEEcNBSAGKwMIIAQRBwAiD70CfyAPmUQAAAAAAADgQWMEQCAPqgwBC0GAgICAeAsiALe9UQRAIACtIQEMBwsgDxAVIQEMBgtCgICAgOAAIQEgByAGQQhqIAApAwAQRw0FIAcgBiAAKQMIEEcNBSAGKwMIIAYrAwAgBBEfACIPvQJ/IA+ZRAAAAAAAAOBBYwRAIA+qDAELQYCAgIB4CyIAt71RBEAgAK0hAQwGCyAPEBUhAQwFCyAHIAIgAyAAIAZBCGogCC4BKiAEERIAIgEQCw0EIAYoAggiAEECRg0EIAcgASAAEJQDIQEMBAsQAQALIAcgAiADIAAgBBEAACEBDAILIAdBxxBBABAUC0KAgICA4AAhAQsgDCAGKAIQNgKMASAGQUBrJAAgAQu5AQEFfyMAIgUhCCAAIAIgAyADIAFBDxA/IgYtAAQiB0gEf0EAIQAgA0EAIANBAEobIQkgBSAHQQN0QQ9qQfAfcWsiBSQAA38gACAJRgR/IAMhBAN/IAQgB0YEfyAFBSAFIARBA3RqQoCAgIAwNwMAIARBAWohBAwBCwsFIAUgAEEDdCIKaiAEIApqKQMANwMAIABBAWohAAwBCwsFIAQLIAYvAQYgBkEIaiAGKAIAERIAIQEgCCQAIAELaAEBfyMAQRBrIgMkACABKAIEIQEgAiADQQxqIAAoAgQQswFBACACIANBCGogARCzARtFBEBBjTFBt+MAQYM6QZw0EAAACyADKAIIIQAgAygCDCEBIANBEGokAEF/IAAgAUcgACABSxsLDwAgASABKAIAQQFqNgIACzkBAX8gASABKAIAIgJBAWo2AgAgAkUEQCABQQhqIgIQRiACIABB0ABqEEsgASABLQAEQQ9xOgAECwtYAQF/IAEoAgAiAkEASgRAIAEgAkEBayICNgIAAkAgAg0AIAEtAARB8AFxQRBHDQAgAUEIaiIBEEYgASAAQeAAahBLCw8LQZDzAEG34wBBsCxBkdwAEAAAC4sCAgN/AX4jAEEgayIFJAACQCABpyIHKAIgIgZFDQAgBigCCCIIKAIEDQAgCEEBNgIEIAcvAQZBK2shByADQQBMBH5CgICAgDAFIAQpAwALIQECQAJAIAcNACABECBFDQACQAJAIAAgASAGKQMAEFgEQCAAQfo0QQAQFAwBCyAAIAFB/wAgAUEAEBIiAhALRQ0BCyAAEJEBIQEgACAGKQMAIAFBARCwBSAAIAEQCgwDCyAAIAIQOg0BIAAgAhAKCyAAIAYpAwAgASAHELAFDAELIAYpAwAhCSAFIAI3AxAgBSABNwMIIAUgCTcDACAAQSZBAyAFEIQDIAAgAhAKCyAFQSBqJABCgICAgDALoQEBAX4gAEHoABBqIgVFBEBCgICAgOAADwsgBUEBNgIAIAAoAhAgBUEEELwBIAVCgICAgDA3AxggBUKAgICAMDcDECAFQQA2AiACQAJAIAAgBUEQahCRAyIGEAtFBEAgACAFQShqIAEgAiADIAQQ8gNFDQELIAAgBhAKQoCAgIDgACEGDAELIAVBATYCICAAIAUQrwULIAAoAhAgBRCuBSAGC2YBAX8gAaciBS8BBkEuayEGIAUoAiAhBSADQQBMBH5CgICAgDAFIAQpAwALIQEgBSAGNgI0IAEQDSEBAkAgBgRAIAAgARCSAQwBCyAFKAJkQQhrIAE3AwALIAAgBRCvBUKAgICAMAuQAQIBfwF+QoCAgIDgACEHAkAgAEHQABBqIgYEQCAGQQA2AgQgBkHIAGoQbyAAIAZBCGoiBSABIAIgAyAEEPIDBEAgBkEFNgIEDAILIAAgBRDBAiICEAsNASAAIAIQCiAAIAFBMhBtIgcQCw0BIAYgBz4CACAHIAYQiwELIAcPCyAAKAIQIAYQrQVCgICAgOAAC+MCAgR/A34jAEEQayIEJABCgICAgOAAIQkCQAJ/AkAgAykDACIKQoCAgIBwWgRAIAqnIgUvAQZBE2tB//8DcUECSQ0BCyAAQRMQnQNBAAwBCyAFKAIgCyIFRQ0AIARCADcDCCACQQJOBEAgACAEQQhqIAMpAwgQwgENAQsgBS0ABARAIAAQcwwBCyAEKQMIIgggBSgCACIGrFYEQCAAQfsZEGkMAQsgBiAIpyIHayEGAkAgAkEDSA0AIAMpAxAiCBAQDQAgACAEIAgQwgENASAEKQMAIgggBq1WBEAgAEGAwgAQaQwCCyAIpyEGCyAAIAFBHhBtIgEQCw0AAkACQCAFLQAEBEAgABBzDAELIABBGBAtIgINAQsgACABEAoMAQsgAiABpyIANgIIIAoQDSEJIAIgBjYCFCACIAc2AhAgAiAJPgIMIAIgBUEMahBLIAAgAjYCICABIQkLIARBEGokACAJCxAAIwAgAGtBcHEiACQAIAALBgAgACQACwQAIwALEwAgAEHp4QBBABAUQoCAgIDgAAupAQEEfyAAKAJUIgMoAgQiBSAAKAIUIAAoAhwiBmsiBCAEIAVLGyIEBEAgAygCACAGIAQQIxogAyADKAIAIARqNgIAIAMgAygCBCAEayIFNgIECyADKAIAIQQgBSACIAIgBUsbIgUEQCAEIAEgBRAjGiADIAMoAgAgBWoiBDYCACADIAMoAgQgBWs2AgQLIARBADoAACAAIAAoAiwiATYCHCAAIAE2AhQgAgspACABIAEoAgBBB2pBeHEiAUEQajYCACAAIAEpAwAgASkDCBDtBTkDAAuuGAMSfwF8An4jAEGwBGsiCyQAIAtBADYCLAJAIAG9IhlCAFMEQEEBIRBB9Q8hEyABmiIBvSEZDAELIARBgBBxBEBBASEQQfgPIRMMAQtB+w9B9g8gBEEBcSIQGyETIBBFIRULAkAgGUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIABBICACIBBBA2oiAyAEQf//e3EQayAAIBMgEBBlIABByztB5OkAIAVBIHEiBRtB/8UAQcDsACAFGyABIAFiG0EDEGUgAEEgIAIgAyAEQYDAAHMQayACIAMgAiADShshCQwBCyALQRBqIRECQAJ/AkAgASALQSxqEPcFIgEgAaAiAUQAAAAAAAAAAGIEQCALIAsoAiwiBkEBazYCLCAFQSByIg5B4QBHDQEMAwsgBUEgciIOQeEARg0CIAsoAiwhCkEGIAMgA0EASBsMAQsgCyAGQR1rIgo2AiwgAUQAAAAAAACwQaIhAUEGIAMgA0EASBsLIQwgC0EwaiALQdACaiAKQQBIGyINIQcDQCAHAn8gAUQAAAAAAADwQWMgAUQAAAAAAAAAAGZxBEAgAasMAQtBAAsiAzYCACAHQQRqIQcgASADuKFEAAAAAGXNzUGiIgFEAAAAAAAAAABiDQALAkAgCkEATARAIAohAyAHIQYgDSEIDAELIA0hCCAKIQMDQCADQR0gA0EdSRshAwJAIAdBBGsiBiAISQ0AIAOtIRpCACEZA0AgBiAZQv////8PgyAGNQIAIBqGfCIZIBlCgJTr3AOAIhlCgJTr3AN+fT4CACAGQQRrIgYgCE8NAAsgGaciBkUNACAIQQRrIgggBjYCAAsDQCAIIAciBkkEQCAGQQRrIgcoAgBFDQELCyALIAsoAiwgA2siAzYCLCAGIQcgA0EASg0ACwsgDEEZakEJbiEHIANBAEgEQCAHQQFqIQ8gDkHmAEYhEgNAQQAgA2siA0EJIANBCUkbIQkCQCAGIAhLBEBBgJTr3AMgCXYhFEF/IAl0QX9zIRZBACEDIAghBwNAIAcgAyAHKAIAIhcgCXZqNgIAIBYgF3EgFGwhAyAHQQRqIgcgBkkNAAsgCCgCACEHIANFDQEgBiADNgIAIAZBBGohBgwBCyAIKAIAIQcLIAsgCygCLCAJaiIDNgIsIA0gCCAHRUECdGoiCCASGyIHIA9BAnRqIAYgBiAHa0ECdSAPShshBiADQQBIDQALC0EAIQMCQCAGIAhNDQAgDSAIa0ECdUEJbCEDQQohByAIKAIAIglBCkkNAANAIANBAWohAyAJIAdBCmwiB08NAAsLIAxBACADIA5B5gBGG2sgDkHnAEYgDEEAR3FrIgcgBiANa0ECdUEJbEEJa0gEQEEEQaQCIApBAEgbIAtqIAdBgMgAaiIJQQltIg9BAnRqQdAfayEKQQohByAJIA9BCWxrIglBB0wEQANAIAdBCmwhByAJQQFqIglBCEcNAAsLAkAgCigCACISIBIgB24iDyAHbGsiCUUgCkEEaiIUIAZGcQ0AAkAgD0EBcUUEQEQAAAAAAABAQyEBIAdBgJTr3ANHIAggCk9yDQEgCkEEay0AAEEBcUUNAQtEAQAAAAAAQEMhAQtEAAAAAAAA4D9EAAAAAAAA8D9EAAAAAAAA+D8gBiAURhtEAAAAAAAA+D8gCSAHQQF2IhRGGyAJIBRJGyEYAkAgFQ0AIBMtAABBLUcNACAYmiEYIAGaIQELIAogEiAJayIJNgIAIAEgGKAgAWENACAKIAcgCWoiAzYCACADQYCU69wDTwRAA0AgCkEANgIAIAggCkEEayIKSwRAIAhBBGsiCEEANgIACyAKIAooAgBBAWoiAzYCACADQf+T69wDSw0ACwsgDSAIa0ECdUEJbCEDQQohByAIKAIAIglBCkkNAANAIANBAWohAyAJIAdBCmwiB08NAAsLIApBBGoiByAGIAYgB0sbIQYLA0AgBiIHIAhNIglFBEAgB0EEayIGKAIARQ0BCwsCQCAOQecARwRAIARBCHEhCgwBCyADQX9zQX8gDEEBIAwbIgYgA0ogA0F7SnEiChsgBmohDEF/QX4gChsgBWohBSAEQQhxIgoNAEF3IQYCQCAJDQAgB0EEaygCACIORQ0AQQohCUEAIQYgDkEKcA0AA0AgBiIKQQFqIQYgDiAJQQpsIglwRQ0ACyAKQX9zIQYLIAcgDWtBAnVBCWwhCSAFQV9xQcYARgRAQQAhCiAMIAYgCWpBCWsiBkEAIAZBAEobIgYgBiAMShshDAwBC0EAIQogDCADIAlqIAZqQQlrIgZBACAGQQBKGyIGIAYgDEobIQwLQX8hCSAMQf3///8HQf7///8HIAogDHIiEhtKDQEgDCASQQBHakEBaiEOAkAgBUFfcSIVQcYARgRAIANB/////wcgDmtKDQMgA0EAIANBAEobIQYMAQsgESADIANBH3UiBmogBnOtIBEQowIiBmtBAUwEQANAIAZBAWsiBkEwOgAAIBEgBmtBAkgNAAsLIAZBAmsiDyAFOgAAIAZBAWtBLUErIANBAEgbOgAAIBEgD2siBkH/////ByAOa0oNAgsgBiAOaiIDIBBB/////wdzSg0BIABBICACIAMgEGoiBSAEEGsgACATIBAQZSAAQTAgAiAFIARBgIAEcxBrAkACQAJAIBVBxgBGBEAgC0EQaiIGQQhyIQMgBkEJciEKIA0gCCAIIA1LGyIJIQgDQCAINQIAIAoQowIhBgJAIAggCUcEQCAGIAtBEGpNDQEDQCAGQQFrIgZBMDoAACAGIAtBEGpLDQALDAELIAYgCkcNACALQTA6ABggAyEGCyAAIAYgCiAGaxBlIAhBBGoiCCANTQ0ACyASBEAgAEGL9gBBARBlCyAMQQBMIAcgCE1yDQEDQCAINQIAIAoQowIiBiALQRBqSwRAA0AgBkEBayIGQTA6AAAgBiALQRBqSw0ACwsgACAGIAxBCSAMQQlIGxBlIAxBCWshBiAIQQRqIgggB08NAyAMQQlKIQMgBiEMIAMNAAsMAgsCQCAMQQBIDQAgByAIQQRqIAcgCEsbIQkgC0EQaiIDQQlyIQ0gA0EIciEDIAghBwNAIA0gBzUCACANEKMCIgZGBEAgC0EwOgAYIAMhBgsCQCAHIAhHBEAgBiALQRBqTQ0BA0AgBkEBayIGQTA6AAAgBiALQRBqSw0ACwwBCyAAIAZBARBlIAZBAWohBiAKIAxyRQ0AIABBi/YAQQEQZQsgACAGIA0gBmsiBiAMIAYgDEgbEGUgDCAGayEMIAdBBGoiByAJTw0BIAxBAE4NAAsLIABBMCAMQRJqQRJBABBrIAAgDyARIA9rEGUMAgsgDCEGCyAAQTAgBkEJakEJQQAQawsgAEEgIAIgBSAEQYDAAHMQayACIAUgAiAFShshCQwBCyATIAVBGnRBH3VBCXFqIQwCQCADQQtLDQBBDCADayEGRAAAAAAAADBAIRgDQCAYRAAAAAAAADBAoiEYIAZBAWsiBg0ACyAMLQAAQS1GBEAgGCABmiAYoaCaIQEMAQsgASAYoCAYoSEBCyARIAsoAiwiBiAGQR91IgZqIAZzrSAREKMCIgZGBEAgC0EwOgAPIAtBD2ohBgsgEEECciEKIAVBIHEhCCALKAIsIQcgBkECayINIAVBD2o6AAAgBkEBa0EtQSsgB0EASBs6AAAgBEEIcSEGIAtBEGohBwNAIAciBQJ/IAGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4CyIHQfCrBGotAAAgCHI6AAAgBiADQQBKckUgASAHt6FEAAAAAAAAMECiIgFEAAAAAAAAAABhcSAFQQFqIgcgC0EQamtBAUdyRQRAIAVBLjoAASAFQQJqIQcLIAFEAAAAAAAAAABiDQALQX8hCUH9////ByAKIBEgDWsiBWoiBmsgA0gNACAAQSAgAiAGAn8CQCADRQ0AIAcgC0EQamsiCEECayADTg0AIANBAmoMAQsgByALQRBqayIICyIHaiIDIAQQayAAIAwgChBlIABBMCACIAMgBEGAgARzEGsgACALQRBqIAgQZSAAQTAgByAIa0EAQQAQayAAIA0gBRBlIABBICACIAMgBEGAwABzEGsgAiADIAIgA0obIQkLIAtBsARqJAAgCQtCAQF+IwBBEGsiAiQAQoCAgIDgACEEIAAgAkEIaiADKQMAEMIBRQRAIAAgASACKQMIQRQQ9AMhBAsgAkEQaiQAIAQLBQAgAJ0L3gECAX8CfiAAvSICQv///////////wCDIgO/IQACQCADQiCIpyIBQeunhv8DTwRAIAFBgYDQgQRPBEBEAAAAAAAAAIAgAKNEAAAAAAAA8D+gIQAMAgtEAAAAAAAA8D9EAAAAAAAAAEAgACAAoBClAkQAAAAAAAAAQKCjoSEADAELIAFBr7HB/gNPBEAgACAAoBClAiIAIABEAAAAAAAAAECgoyEADAELIAFBgIDAAEkNACAARAAAAAAAAADAohClAiIAmiAARAAAAAAAAABAoKMhAAsgACAAmiACQgBZGwuEAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H/////B3EiAkH7w6T/A00EQCACQYCAgPIDSQ0BIABEAAAAAAAAAABBABD4BSEADAELIAJBgIDA/wdPBEAgACAAoSEADAELIAAgARCwBCECIAErAwAgASsDCCACQQFxEPgFIQALIAFBEGokACAAC0ABAX4jAEEQayICJABCgICAgOAAIQQgACACQQhqIAMpAwAQwgFFBEAgACABIAIpAwgQjAMhBAsgAkEQaiQAIAQLBABCAAvRAgEHfyMAQSBrIgMkACADIAAoAhwiBDYCECAAKAIUIQUgAyACNgIcIAMgATYCGCADIAUgBGsiATYCFCABIAJqIQRBAiEHIANBEGohAQJ/AkACQCAAKAI8IAFBAiADQQxqEAMQ8wVFBEADQCAEIAMoAgwiBUYNAiAFQQBIDQMgASAFIAEoAgQiCEsiBkEDdGoiCSAFIAhBACAGG2siCCAJKAIAajYCACABQQxBBCAGG2oiCSAJKAIAIAhrNgIAIAQgBWshBCAAKAI8IAFBCGogASAGGyIBIAcgBmsiByADQQxqEAMQ8wVFDQALCyAEQX9HDQELIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwBCyAAQQA2AhwgAEIANwMQIAAgACgCAEEgcjYCAEEAIAdBAkYNABogAiABKAIEawshBCADQSBqJAAgBAsFACAAnwudAQMCfAF/AX5EAAAAAAAA4D8gAKYhAiAAvUL///////////8AgyIEvyEBAkAgBEIgiKciA0HB3JiEBE0EQCABEKUCIQEgA0H//7//A00EQCADQYCAwPIDSQ0CIAIgASABoCABIAGiIAFEAAAAAAAA8D+go6GiDwsgAiABIAEgAUQAAAAAAADwP6CjoKIPCyABIAIgAqAQigYhAAsgAAvLAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H/////B3EiAkH7w6T/A00EQCACQYCAwPIDSQ0BIABEAAAAAAAAAABBABDaAiEADAELIAJBgIDA/wdPBEAgACAAoSEADAELAkACQAJAAkAgACABELAEQQNxDgMAAQIDCyABKwMAIAErAwhBARDaAiEADAMLIAErAwAgASsDCBDbAiEADAILIAErAwAgASsDCEEBENoCmiEADAELIAErAwAgASsDCBDbApohAAsgAUEQaiQAIAAL6AQCA38HfiMAQSBrIgUkAEKAgICA4AAhDQJAIAAgASAEQR9qEG0iARALDQBCgICAgDAhCAJAIABBHBBqIgZFBEBCgICAgDAhC0KAgICAMCEKDAELIAZBBGoQbyAGIARBAXZBAXE2AgAgASAGEIsBIAZBATYCFCAGIABBCBAtIgc2AhBCgICAgDAhC0KAgICAMCEKIAdFDQAgBxBvIAZBBDYCGAJAIAJBAEwEfkKAgICAMAUgAykDAAsiCBAQDQAgCBAmDQACQCAAIAFB6ABBwgAgBEEBcSICGyABQQAQEiIKEAsNACAAIAoQOkUEQCAAQZc2QQAQFAwBCyAAIAhBABD1ASIIEAsNAiAAIAhB6gAgCEEAEBIiCxALDQICQANAIAUgACAIIAsgBUEUahCsASIJNwMYIAkQCw0EIAUoAhRFBEACQCACBEAgACAKIAFBASAFQRhqECIiDhALRQ0BIAAgBSkDGBAKDAcLAkACQCAJECBFBEAgABAoQoCAgIAwIQkMAQsgACAJQQAQeSIJEAtFDQELQoCAgIAwIQwMBAsgACAFKQMYQQEQeSIMEAsNAyAFIAw3AwggBSAJNwMAIAAgCiABQQIgBRAiIg4QCw0DIAAgCRAKIAAgDBAKCyAAIA4QCiAAIAUpAxgQCgwBCwsgACAJEAogACALEAogACAIEAogACAKEAoMAgsgACAFKQMYEAogACAJEAogACAMEAoMAgtCgICAgDAhCAwBCyABIQ0MAQsgCBAgBEAgACAIQQEQsAEaCyAAIAsQCiAAIAgQCiAAIAoQCiAAIAEQCgsgBUEgaiQAIA0LBgBBkK8ECwYAQYyvBAsGAEGErwQLzQMDBXwBfgN/AkACQAJAAkAgAL0iBkIAWQRAIAZCIIinIgdB//8/Sw0BCyAGQv///////////wCDUARARAAAAAAAAPC/IAAgAKKjDwsgBkIAWQ0BIAAgAKFEAAAAAAAAAACjDwsgB0H//7//B0sNAkGAgMD/AyEIQYF4IQkgB0GAgMD/A0cEQCAHIQgMAgsgBqcNAUQAAAAAAAAAAA8LIABEAAAAAAAAUEOivSIGQiCIpyEIQct3IQkLIAZC/////w+DIAhB4r4laiIHQf//P3FBnsGa/wNqrUIghoS/RAAAAAAAAPC/oCIAIAAgAEQAAAAAAADgP6KiIgOhvUKAgICAcIO/IgREAAAgZUcV9z+iIgEgCSAHQRR2arciAqAiBSABIAIgBaGgIAAgAEQAAAAAAAAAQKCjIgEgAyABIAGiIgIgAqIiASABIAFEn8Z40Amawz+iRK94jh3Fccw/oKJEBPqXmZmZ2T+goiACIAEgASABRERSPt8S8cI/okTeA8uWZEbHP6CiRFmTIpQkSdI/oKJEk1VVVVVV5T+goqCgoiAAIAShIAOhoCIAIASgRACi7y78Bec9oiAARAAAIGVHFfc/oqCgoCEACyAAC+YDAwZ8AX4DfwJAAkACQAJAIAC9IgdCAFkEQCAHQiCIpyIIQf//P0sNAQsgB0L///////////8Ag1AEQEQAAAAAAADwvyAAIACiow8LIAdCAFkNASAAIAChRAAAAAAAAAAAow8LIAhB//+//wdLDQJBgIDA/wMhCUGBeCEKIAhBgIDA/wNHBEAgCCEJDAILIAenDQFEAAAAAAAAAAAPCyAARAAAAAAAAFBDor0iB0IgiKchCUHLdyEKCyAKIAlB4r4laiIIQRR2arciBUQAYJ9QE0TTP6IiASAHQv////8PgyAIQf//P3FBnsGa/wNqrUIghoS/RAAAAAAAAPC/oCIAIAAgAEQAAAAAAADgP6KiIgOhvUKAgICAcIO/IgREAAAgFXvL2z+iIgKgIgYgAiABIAahoCAAIABEAAAAAAAAAECgoyIBIAMgASABoiICIAKiIgEgASABRJ/GeNAJmsM/okSveI4dxXHMP6CiRAT6l5mZmdk/oKIgAiABIAEgAUREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU/oKKgoKIgACAEoSADoaAiAEQAACAVe8vbP6IgBUQ2K/ER8/5ZPaIgACAEoETVrZrKOJS7PaKgoKCgIQALIAALoQEBBH8gAkEAIAAoAlQiAygCBCIEIAMoAgAiBWsiBiAEIAZJGyIESwRAIAAgACgCAEEQcjYCACAEIQILIAEgAygCDCAFaiACECMaIAMgAygCACACaiIFNgIAIAAgACgCLCIBNgIEIAAgASAAKAIwIgAgBCACayIEIAAgBEkbIgBqNgIIIAEgAygCDCAFaiAAECMaIAMgAygCACAAajYCACACC4sBAQF/IwBBEGsiAyQAAn4CQCACQQNPDQAgACgCVCEAIANBADYCBCADIAAoAgA2AgggAyAAKAIENgIMQQAgA0EEaiACQQJ0aigCACICa6wgAVUNACAAKAIIIAJrrCABUw0AIAAgAiABp2oiADYCACAArQwBC0HIrgRBHDYCAEJ/CyEBIANBEGokACABCwUAIACcCwUAIACZC6QBAgF/AX4gAL1C////////////AIMiAr8hAAJ8IAJCIIinIgFBwdyY/wNNBEBEAAAAAAAA8D8gAUGAgMDyA0kNARogABClAiIAIACiIABEAAAAAAAA8D+gIgAgAKCjRAAAAAAAAPA/oA8LIAFBwdyYhARNBEAgABCvBCIARAAAAAAAAPA/IACjoEQAAAAAAADgP6IPCyAARAAAAAAAAPA/EIoGCwvHAQECfyMAQRBrIgEkAAJ8IAC9QiCIp0H/////B3EiAkH7w6T/A00EQEQAAAAAAADwPyACQZ7BmvIDSQ0BGiAARAAAAAAAAAAAENsCDAELIAAgAKEgAkGAgMD/B08NABoCQAJAAkACQCAAIAEQsARBA3EOAwABAgMLIAErAwAgASsDCBDbAgwDCyABKwMAIAErAwhBARDaApoMAgsgASsDACABKwMIENsCmgwBCyABKwMAIAErAwhBARDaAgshACABQRBqJAAgAAsFACAAmwuDAgMCfAJ/AX4gAL0iBUIgiKdB/////wdxIgNBgIDA/wdPBEAgACAAoA8LQZPx/dQCIQQCQCADQf//P00EQEGT8f3LAiEEIABEAAAAAAAAUEOivSIFQiCIp0H/////B3EiA0UNAQsgBUKAgICAgICAgIB/gyADQQNuIARqrUIghoS/IgIgAqIgAiAAo6IiASABIAGioiABRNft5NQAsMI/okTZUee+y0Tov6CiIAEgAUTC1klKYPH5P6JEICTwkuAo/r+gokSS5mEP5gP+P6CgIAKivUKAgICACHxCgICAgHyDvyIBIAAgASABoqMiACABoSABIAGgIACgo6IgAaAhAAsgAAucAwIDfgJ/IwBBIGsiCSQAAkAgBUEBcQRAIwBBIGsiCiQAQoCAgIDgACEIAkAgACAKQRhqIAFB3gAQhQEiBUUNACAFKQMAIgEQsgFFBEAgAEHfKUEAEBQMAQsgCikDGCIGEBAEQCAAIAEgAiADIAQQkAMhCAwBCwJAIAAgAyAEEJIDIgcQCw0AIAUpAwAhASAKIAI3AxAgCiAHNwMIIAogATcDACAAIAYgBSkDCEEDIAoQIiIBEAsgAUL/////b1ZyRQRAIAAgARAKIAAQKAwBCyABIQgLIAAgBhAKIAAgBxAKCyAKQSBqJAAgCCEGDAELQoCAgIDgACEGIAAgCUEYaiABQdoAEIUBIgVFDQAgCSkDGCEHIAUtABBFBEAgACAHEAogAEGiNkEAEBQMAQsgBxAQBEAgACAFKQMAIAIgAyAEECIhBgwBCyAAIAMgBBCSAyIIEAtFBEAgBSkDACEBIAkgCDcDECAJIAI3AwggCSABNwMAIAAgByAFKQMIQQMgCRAiIQYLIAAgBxAKIAAgCBAKCyAJQSBqJAAgBguHAQMBfgF/AXwgAL0iAUL///////////8Ag78hAAJAAnwgAUI0iKdB/w9xIgJB/QdNBEAgAkHfB0kNAiAAIACgIgMgAyAAokQAAAAAAADwPyAAoaOgDAELIABEAAAAAAAA8D8gAKGjIgAgAKALELEDRAAAAAAAAOA/oiEACyAAIACaIAFCAFkbC6kDAgV/AX4gAL1C////////////AINCgYCAgICAgPj/AFQgAb1C////////////AINCgICAgICAgPj/AFhxRQRAIAAgAaAPCyABvSIHQiCIpyICQYCAwP8DayAHpyIFckUEQCAAELEEDwsgAkEedkECcSIGIAC9IgdCIIinIgNBH3ZyIQQCQCADQf////8HcSIDIAenckUEQAJAAkAgBEECaw4CAAEDC0QYLURU+yEJQA8LRBgtRFT7IQnADwsgAkH/////B3EiAiAFckUEQEQYLURU+yH5PyAApg8LAkAgAkGAgMD/B0YEQCADQYCAwP8HRw0BIARBA3RB0P8DaisDAA8LIANBgIDA/wdHIAJBgICAIGogA09xRQRARBgtRFT7Ifk/IACmDwsCfCAGBEBEAAAAAAAAAAAgA0GAgIAgaiACSQ0BGgsgACABo5kQsQQLIQACQAJAAkAgBA4DBAABAgsgAJoPC0QYLURU+yEJQCAARAdcFDMmpqG8oKEPCyAARAdcFDMmpqG8oEQYLURU+yEJwKAPCyAEQQN0QfD/A2orAwAhAAsgAAuyAQMBfgF/AXwgAL0iAUL///////////8Ag78hAAJAIAFCNIinQf8PcSICQZkITwRAIAAQ2QJE7zn6/kIu5j+gIQAMAQsgAkGACE8EQCAAIACgRAAAAAAAAPA/IAAgAKJEAAAAAAAA8D+gnyAAoKOgENkCIQAMAQsgAkHlB0kNACAAIACiIgMgA0QAAAAAAADwP6CfRAAAAAAAAPA/oKMgAKAQsQMhAAsgACAAmiABQgBZGwu5AgMBfwN8AX4gAL0iBUIgiKdB/////wdxIgFBgIDA/wNPBEAgBacgAUGAgMD/A2tyRQRAIABEGC1EVPsh+T+iRAAAAAAAAHA4oA8LRAAAAAAAAAAAIAAgAKGjDwsCQCABQf////4DTQRAIAFBgIBAakGAgIDyA0kNASAAIAAgAKIQ3AKiIACgDwtEAAAAAAAA8D8gAJmhRAAAAAAAAOA/oiIDnyEAIAMQ3AIhBAJ8IAFBs+a8/wNPBEBEGC1EVPsh+T8gACAEoiAAoCIAIACgRAdcFDMmppG8oKEMAQtEGC1EVPsh6T8gAL1CgICAgHCDvyICIAKgoSAAIACgIASiRAdcFDMmppE8IAMgAiACoqEgACACoKMiACAAoKGhoUQYLURU+yHpP6ALIgAgAJogBUIAWRshAAsgAAt2AQF/IAC9QjSIp0H/D3EiAUH/B00EQCAARAAAAAAAAPC/oCIAIAAgAKIgACAAoKCfoBCxAw8LIAFBmAhNBEAgACAAoEQAAAAAAADwvyAAIACiRAAAAAAAAPC/oJ8gAKCjoBDZAg8LIAAQ2QJE7zn6/kIu5j+gC64CAwF8AX4BfyAAvSICQiCIp0H/////B3EiA0GAgMD/A08EQCACpyADQYCAwP8Da3JFBEBEAAAAAAAAAABEGC1EVPshCUAgAkIAWRsPC0QAAAAAAAAAACAAIAChow8LAnwgA0H////+A00EQEQYLURU+yH5PyADQYGAgOMDSQ0BGkQHXBQzJqaRPCAAIAAgAKIQ3AKioSAAoUQYLURU+yH5P6APCyACQgBTBEBEGC1EVPsh+T8gAEQAAAAAAADwP6BEAAAAAAAA4D+iIgCfIgEgASAAENwCokQHXBQzJqaRvKCgoSIAIACgDwtEAAAAAAAA8D8gAKFEAAAAAAAA4D+iIgCfIgEgABDcAqIgACABvUKAgICAcIO/IgAgAKKhIAEgAKCjoCAAoCIAIACgCwtaAgF/AX4CQEGwrgQoAgAEQEG0rgQoAgAhAgwBC0GwrgQQ1wUiAjYCAEG0rgQgAhDfBCICNgIACyACIAAgABBCQabvABC2BSIDIAEQqAMaQbSuBCgCACADEAoLC42hBFQAQYAIC9V7KCl7fQAoKXtzdXBlciguLi5hcmd1bWVudHMpO30AKCkgewogICAgW25hdGl2ZSBjb2RlXQp9AGNhbm5vdCBtaXggPz8gd2l0aCAmJiBvciB8fABwcm94eTogcHJvcGVydHkgbm90IHByZXNlbnQgaW4gdGFyZ2V0IHdlcmUgcmV0dXJuZWQgYnkgbm9uIGV4dGVuc2libGUgcHJveHkAcmV2b2tlZCBwcm94eQBQcm94eQBhZGRfcHJvcGVydHkAcHJveHk6IGNhbm5vdCBzZXQgcHJvcGVydHkAbm8gc2V0dGVyIGZvciBwcm9wZXJ0eQB2YWx1ZSBoYXMgbm8gcHJvcGVydHkAY291bGQgbm90IGRlbGV0ZSBwcm9wZXJ0eQBwcm94eTogZHVwbGljYXRlIHByb3BlcnR5AEpTX0RlZmluZUF1dG9Jbml0UHJvcGVydHkAaGFzT3duUHJvcGVydHkAcHJveHk6IGluY29uc2lzdGVudCBkZWxldGVQcm9wZXJ0eQBwcm94eTogaW5jb25zaXN0ZW50IGRlZmluZVByb3BlcnR5AEpTX0RlZmluZVByb3BlcnR5ACFtci0+ZW1wdHkAaW5maW5pdHkASW5maW5pdHkAb3V0IG9mIG1lbW9yeQB1bmtub3duIHVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeQBHZW5lcmFsX0NhdGVnb3J5AGV2ZXJ5AGFueQBhcHBseQAnJXMnIGlzIHJlYWQtb25seQBleHBlY3RpbmcgY2F0Y2ggb3IgZmluYWxseQBzdGlja3kAc3RyaW5naWZ5AHN1YmFycmF5AGVtcHR5IGFycmF5AG5vbiBpbnRlZ2VyIGluZGV4IGluIHR5cGVkIGFycmF5AG5lZ2F0aXZlIGluZGV4IGluIHR5cGVkIGFycmF5AG91dC1vZi1ib3VuZCBpbmRleCBpbiB0eXBlZCBhcnJheQBjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAaXNBcnJheQBUeXBlZEFycmF5AGdldERheQBnZXRVVENEYXkAanNfZ2V0X2F0b21faW5kZXgAaW52YWxpZCBhcnJheSBpbmRleABvdXQtb2YtYm91bmQgbnVtZXJpYyBpbmRleABKU19BdG9tSXNBcnJheUluZGV4AGZpbmRJbmRleABpbnZhbGlkIGV4cG9ydCBzeW50YXgAaW52YWxpZCBhc3NpZ25tZW50IHN5bnRheABtYXgAXHUlMDR4AGludmFsaWQgb3Bjb2RlOiBwYz0ldSBvcGNvZGU9MHglMDJ4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAbGluZSB0ZXJtaW5hdG9yIG5vdCBhbGxvd2VkIGFmdGVyIHRocm93AHBvdwBub3cAc3RhY2sgb3ZlcmZsb3cAbXVzdCBiZSBjYWxsZWQgd2l0aCBuZXcAaXNWaWV3AERhdGFWaWV3AHJhdwAldQBjbGFzcyBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABmdW5jdGlvbiBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABsZXhpY2FsIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGR1cGxpY2F0ZSBhcmd1bWVudCBuYW1lcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQAZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQAaW1wb3J0Lm1ldGEgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGNvbnRleHQASlNfRnJlZUNvbnRleHQASlNDb250ZXh0AGpzX21hcF9pdGVyYXRvcl9uZXh0AGpzX2FzeW5jX2dlbmVyYXRvcl9yZXN1bWVfbmV4dAB1bmV4cGVjdGVkIGVuZCBvZiBpbnB1dAB0dABleHBvcnRlZCB2YXJpYWJsZSAnJXMnIGRvZXMgbm90IGV4aXN0AHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBkb2VzIG5vdCBleGlzdAB0ZXN0AGFzc2lnbm1lbnQgcmVzdCBwcm9wZXJ0eSBtdXN0IGJlIGxhc3QAc3FydABzb3J0AGNicnQAdHJpbVN0YXJ0AHBhZFN0YXJ0AHVua25vd24gdW5pY29kZSBzY3JpcHQAU2NyaXB0AGh5cG90AGZyZWVfemVyb19yZWZjb3VudABzdHJfaW5kZXggPT0gbnVtX2tleXNfY291bnQgKyBzdHJfa2V5c19jb3VudABudW1faW5kZXggPT0gbnVtX2tleXNfY291bnQAc3ltX2luZGV4ID09IGF0b21fY291bnQAbGFiZWwgPj0gMCAmJiBsYWJlbCA8IHMtPmxhYmVsX2NvdW50AGxhYjEgPj0gMCAmJiBsYWIxIDwgcy0+bGFiZWxfY291bnQAdmFsIDwgcy0+Y2FwdHVyZV9jb3VudAB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABpbnZhbGlkIHJlcGVhdCBjb3VudABpbnZhbGlkIHJlcGV0aXRpb24gY291bnQAZm9udABpbnZhbGlkIGNvZGUgcG9pbnQAZnJvbUNvZGVQb2ludABpbnZhbGlkIGhpbnQAZW5jb2RlVVJJQ29tcG9uZW50AGRlY29kZVVSSUNvbXBvbmVudAB1bmV4cGVjdGVkIGVuZCBvZiBjb21tZW50AGludmFsaWQgc3dpdGNoIHN0YXRlbWVudABwYXJzZUludABkdXBsaWNhdGUgZGVmYXVsdABzcGxpdABleHBlY3RpbmcgaGV4IGRpZ2l0AHRyaW1SaWdodAByZWR1Y2VSaWdodAB1bnNoaWZ0AHRyaW1MZWZ0AGludmFsaWQgb2Zmc2V0AGludmFsaWQgYnl0ZU9mZnNldABnZXRUaW1lem9uZU9mZnNldAByZXNvbHZpbmcgZnVuY3Rpb24gYWxyZWFkeSBzZXQAcHJveHk6IGluY29uc2lzdGVudCBzZXQAZmluZF9qdW1wX3RhcmdldABleHBlY3RpbmcgdGFyZ2V0AGludmFsaWQgZGVzdHJ1Y3R1cmluZyB0YXJnZXQAcHJveHk6IGluY29uc2lzdGVudCBnZXQAV2Vha1NldABjb25zdHJ1Y3QASlNfRnJlZUF0b21TdHJ1Y3QAdXNlIHN0cmljdABSZWZsZWN0AHJlamVjdABub3QgYW4gQXN5bmNHZW5lcmF0b3Igb2JqZWN0AGNhbm5vdCBjb252ZXJ0IHRvIG9iamVjdABpbnZhbGlkIGJyYW5kIG9uIG9iamVjdABvcGVyYW5kICdwcm90b3R5cGUnIHByb3BlcnR5IGlzIG5vdCBhbiBvYmplY3QAcmVjZWl2ZXIgaXMgbm90IGFuIG9iamVjdABpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAbm90IGEgRGF0ZSBvYmplY3QAbm90IGEgb2JqZWN0AEpTT2JqZWN0AHBhcnNlRmxvYXQAZmxhdABub3RoaW5nIHRvIHJlcGVhdABjb25jYXQAY29kZVBvaW50QXQAY2hhckF0AGNoYXJDb2RlQXQAa2V5cwBwcm94eTogdGFyZ2V0IHByb3BlcnR5IG11c3QgYmUgcHJlc2VudCBpbiBwcm94eSBvd25LZXlzACAgZmFzdCBhcnJheXMAZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycgaXMgYW1iaWd1b3VzAHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBhbHJlYWR5IGV4aXN0cwB0b28gbWFueSBhcmd1bWVudHMAVG9vIG1hbnkgY2FsbCBhcmd1bWVudHMAICBlbGVtZW50cwBpbnZhbGlkIG51bWJlciBvZiBkaWdpdHMAYmluYXJ5IG9iamVjdHMAaW52YWxpZCBwcm9wZXJ0eSBhY2Nlc3MAanNfb3BfZGVmaW5lX2NsYXNzAGZkLT5ieXRlX2NvZGUuYnVmW2RlZmluZV9jbGFzc19wb3NdID09IE9QX2RlZmluZV9jbGFzcwBfX2dldENsYXNzAHNldEhvdXJzAGdldEhvdXJzAHNldFVUQ0hvdXJzAGdldFVUQ0hvdXJzAGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMAdG9vIG1hbnkgaW1icmljYXRlZCBxdWFudGlmaWVycwB1bmljb2RlX3Byb3Bfb3BzAGFjb3MAZm9yIGF3YWl0IGlzIG9ubHkgdmFsaWQgaW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9ucwBuZXcudGFyZ2V0IG9ubHkgYWxsb3dlZCB3aXRoaW4gZnVuY3Rpb25zAGJ5dGVjb2RlIGZ1bmN0aW9ucwBDIGZ1bmN0aW9ucwBwcm94eTogaW5jb25zaXN0ZW50IHByZXZlbnRFeHRlbnNpb25zAFNjcmlwdF9FeHRlbnNpb25zAGF0b21zAHByb3h5OiBwcm9wZXJ0aWVzIG11c3QgYmUgc3RyaW5ncyBvciBzeW1ib2xzAGdldE93blByb3BlcnR5U3ltYm9scwByZXNvbHZlX2xhYmVscwBKU19FdmFsVGhpcwBzdHJpbmdzAGludmFsaWQgZGVzY3JpcHRvciBmbGFncwBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncwB2YWx1ZXMAc2V0TWludXRlcwBnZXRNaW51dGVzAHNldFVUQ01pbnV0ZXMAZ2V0VVRDTWludXRlcwB0b28gbWFueSBjYXB0dXJlcwAgIHNoYXBlcwBnZXRPd25Qcm9wZXJ0eU5hbWVzAGdjX2ZyZWVfY3ljbGVzAGFkZF9ldmFsX3ZhcmlhYmxlcwByZXNvbHZlX3ZhcmlhYmxlcwB0b28gbWFueSBsb2NhbCB2YXJpYWJsZXMAdG9vIG1hbnkgY2xvc3VyZSB2YXJpYWJsZXMAY29tcGFjdF9wcm9wZXJ0aWVzACAgcHJvcGVydGllcwBkZWZpbmVQcm9wZXJ0aWVzAGVudHJpZXMAZnJvbUVudHJpZXMAdG9vIG1hbnkgcmFuZ2VzAGluY2x1ZGVzAHNldE1pbGxpc2Vjb25kcwBnZXRNaWxsaXNlY29uZHMAc2V0VVRDTWlsbGlzZWNvbmRzAGdldFVUQ01pbGxpc2Vjb25kcwBzZXRTZWNvbmRzAGdldFNlY29uZHMAc2V0VVRDU2Vjb25kcwBnZXRVVENTZWNvbmRzAGl0YWxpY3MAYWJzAHByb3h5OiBpbmNvbnNpc3RlbnQgaGFzACUuKnMAICglcwBzZXQgJXMAZ2V0ICVzACAgICBhdCAlcwBub3QgYSAlcwB1bnN1cHBvcnRlZCBrZXl3b3JkOiAlcwBzdWJzdHIAcHJveHk6IGluY29uc2lzdGVudCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAc3VwZXIoKSBpcyBvbmx5IHZhbGlkIGluIGEgZGVyaXZlZCBjbGFzcyBjb25zdHJ1Y3RvcgBwYXJlbnQgY2xhc3MgbXVzdCBiZSBjb25zdHJ1Y3RvcgBub3QgYSBjb25zdHJ1Y3RvcgBBcnJheSBJdGVyYXRvcgBTZXQgSXRlcmF0b3IATWFwIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAbm90IGFuIEFzeW5jLWZyb20tU3luYyBJdGVyYXRvcgBjYW5ub3QgaW52b2tlIGEgcnVubmluZyBnZW5lcmF0b3IAbm90IGEgZ2VuZXJhdG9yAEFzeW5jR2VuZXJhdG9yAHN5bnRheCBlcnJvcgBTeW50YXhFcnJvcgBFdmFsRXJyb3IASW50ZXJuYWxFcnJvcgBBZ2dyZWdhdGVFcnJvcgBUeXBlRXJyb3IAUmFuZ2VFcnJvcgBSZWZlcmVuY2VFcnJvcgBVUklFcnJvcgBmbG9vcgBmb250Y29sb3IAYW5jaG9yAGZvcgBrZXlGb3IAZXhwZWN0aW5nIHN1cnJvZ2F0ZSBwYWlyAGEgZGVjbGFyYXRpb24gaW4gdGhlIGhlYWQgb2YgYSBmb3ItJXMgbG9vcCBjYW4ndCBoYXZlIGFuIGluaXRpYWxpemVyACdhcmd1bWVudHMnIGlkZW50aWZpZXIgaXMgbm90IGFsbG93ZWQgaW4gY2xhc3MgZmllbGQgaW5pdGlhbGl6ZXIAaW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBnZXR0ZXIgb3Igc2V0dGVyAGludmFsaWQgc2V0dGVyAGludmFsaWQgZ2V0dGVyAGZpbHRlcgBtaXNzaW5nIGZvcm1hbCBwYXJhbWV0ZXIAInVzZSBzdHJpY3QiIG5vdCBhbGxvd2VkIGluIGZ1bmN0aW9uIHdpdGggZGVmYXVsdCBvciBkZXN0cnVjdHVyaW5nIHBhcmFtZXRlcgBpbnZhbGlkIGNoYXJhY3RlcgB1bmV4cGVjdGVkIGNoYXJhY3RlcgBwcml2YXRlIGNsYXNzIGZpZWxkIGZvcmJpZGRlbiBhZnRlciBzdXBlcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBsZXhpY2FsIGlkZW50aWZpZXIAJ2xldCcgaXMgbm90IGEgdmFsaWQgbGV4aWNhbCBpZGVudGlmaWVyAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGdsb2JhbCBpZGVudGlmaWVyAHlpZWxkIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgAnJXMnIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgBvdGhlcgBhdG9tMV9pc19pbnRlZ2VyICYmIGF0b20yX2lzX2ludGVnZXIAaXNJbnRlZ2VyAGlzU2FmZUludGVnZXIAYnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAGNhbm5vdCB1c2UgaWRlbnRpY2FsIEFycmF5QnVmZmVyAGNhbm5vdCBjb252ZXJ0IHN5bWJvbCB0byBudW1iZXIAbm90IGEgbnVtYmVyAGxpbmVOdW1iZXIAbWFsZm9ybWVkIHVuaWNvZGUgY2hhcgBjbGVhcgBzZXRZZWFyAGdldFllYXIAc2V0RnVsbFllYXIAZ2V0RnVsbFllYXIAc2V0VVRDRnVsbFllYXIAZ2V0VVRDRnVsbFllYXIAdW5leHBlY3RlZCBsaW5lIHRlcm1pbmF0b3IgaW4gcmVnZXhwAHVuZXhwZWN0ZWQgZW5kIG9mIHJlZ2V4cABSZWdFeHAAc3VwAGludmFsaWQgZ3JvdXAAcG9wAGNvbnRpbnVlIG11c3QgYmUgaW5zaWRlIGxvb3AAZHVtcABudW1fa2V5c19jbXAAdXNlIHN0cmlwAG1hcABmbGF0TWFwAFdlYWtNYXAAZXhwZWN0aW5nICd7JyBhZnRlciBccABsb2cxcABpdGVyYXRvcl9jbG9zZV9yZXR1cm4AcHJvbWlzZSBzZWxmIHJlc29sdXRpb24Ab3V0IG9mIG1lbW9yeSBpbiByZWdleHAgZXhlY3V0aW9uAGRlc2NyaXB0aW9uAHByb3h5OiBkZWZpbmVQcm9wZXJ0eSBleGNlcHRpb24AanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc29sdmVfZnVuY3Rpb24AanNfY3JlYXRlX2Z1bmN0aW9uAHNldC9hZGQgaXMgbm90IGEgZnVuY3Rpb24AcmV0dXJuIG5vdCBpbiBhIGZ1bmN0aW9uAEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AY2FsbEV4dGVybmFsRnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBhd2FpdCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AeWllbGQgaW4gZGVmYXVsdCBleHByZXNzaW9uAGludmFsaWQgZGVjaW1hbCBlc2NhcGUgaW4gcmVndWxhciBleHByZXNzaW9uAGJhY2sgcmVmZXJlbmNlIG91dCBvZiByYW5nZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgaW4gcmVndWxhciBleHByZXNzaW9uAGV4cGVjdGVkICdvZicgb3IgJ2luJyBpbiBmb3IgY29udHJvbCBleHByZXNzaW9uAHRvbyBjb21wbGljYXRlZCBkZXN0cnVjdHVyaW5nIGV4cHJlc3Npb24AZXhwZWN0ZWQgJ30nIGFmdGVyIHRlbXBsYXRlIGV4cHJlc3Npb24AdG9QcmVjaXNpb24AYXNpbgBqb2luAG1pbgBjb3B5V2l0aGluAHRlbXBsYXRlIGxpdGVyYWwgY2Fubm90IGFwcGVhciBpbiBhbiBvcHRpb25hbCBjaGFpbgBjaXJjdWxhciBwcm90b3R5cGUgY2hhaW4AYXNzaWduAGlzRnJvemVuAG1hcmtfY2hpbGRyZW4AKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAHRoZW4Ac2V0dGVyIGlzIGZvcmJpZGRlbgBudWxsIG9yIHVuZGVmaW5lZCBhcmUgZm9yYmlkZGVuAGF0YW4AbmFuAG5vdCBhIGJvb2xlYW4AQm9vbGVhbgBnY19zY2FuAGJhZCBub3JtYWxpemF0aW9uIGZvcm0ASlNfTmV3U3ltYm9sRnJvbUF0b20AZnJvbQByYW5kb20AdHJpbQBpbXVsAG5vdCBhIHN5bWJvbABTeW1ib2wAUmVnRXhwIGV4ZWMgbWV0aG9kIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsAHBhcmVudCBwcm90b3R5cGUgbXVzdCBiZSBhbiBvYmplY3Qgb3IgbnVsbABjYW5ub3Qgc2V0IHByb3BlcnR5ICclcycgb2YgbnVsbABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIG51bGwATnVsbABmaWxsAG5ldyBBcnJheUJ1ZmZlciBpcyB0b28gc21hbGwAVHlwZWRBcnJheSBsZW5ndGggaXMgdG9vIHNtYWxsAGNhbGwAZG90QWxsAG1hdGNoQWxsAHJlcGxhY2VBbGwAY2VpbAB1cGRhdGVfbGFiZWwAYmNfYnVmW3Bvc10gPT0gT1BfbGFiZWwAZXZhbABpbnZhbGlkIG51bWJlciBsaXRlcmFsAG1hbGZvcm1lZCBlc2NhcGUgc2VxdWVuY2UgaW4gc3RyaW5nIGxpdGVyYWwASlNfU2V0UHJvcGVydHlJbnRlcm5hbABKU19HZXRPd25Qcm9wZXJ0eU5hbWVzSW50ZXJuYWwAX19KU19FdmFsSW50ZXJuYWwAdG9FeHBvbmVudGlhbABzZWFsAGdsb2JhbABibGluawBfX2RhdGVfY2xvY2sAc3RhY2sAbHJlX2V4ZWNfYmFja3RyYWNrAHMtPmlzX3dlYWsAaQBzZXRNb250aABnZXRNb250aABzZXRVVENNb250aABnZXRVVENNb250aABpbnZhbGlkIGtleXdvcmQ6IHdpdGgAc3RhcnRzV2l0aABlbmRzV2l0aABwcm9wID09IEpTX0FUT01fbGVuZ3RoAGludmFsaWQgYXJyYXkgbGVuZ3RoAGludmFsaWQgYXJyYXkgYnVmZmVyIGxlbmd0aABpbnZhbGlkIGxlbmd0aABpbnZhbGlkIGJ5dGVMZW5ndGgATWF0aABwdXNoAGFjb3NoAEpTX1Jlc2l6ZUF0b21IYXNoAGFzaW5oAGF0YW5oAGJyZWFrIG11c3QgYmUgaW5zaWRlIGxvb3Agb3Igc3dpdGNoAG1hdGNoAGNhdGNoAHNlYXJjaABmb3JFYWNoAGxvZwBBcnJheSB0b28gbG9uZwBzdHJpbmcgdG9vIGxvbmcAQXJyYXkgbG9vIGxvbmcAc3Vic3RyaW5nAGNhbm5vdCBjb252ZXJ0IHN5bWJvbCB0byBzdHJpbmcAdW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nAG5vdCBhIHN0cmluZwBpbnZhbGlkIGNoYXJhY3RlciBpbiBhIEpTT04gc3RyaW5nAHRvU3RyaW5nAHRvRGF0ZVN0cmluZwB0b0xvY2FsZURhdGVTdHJpbmcAdG9UaW1lU3RyaW5nAHRvTG9jYWxlVGltZVN0cmluZwB0b0xvY2FsZVN0cmluZwB0b0dNVFN0cmluZwBKU1N0cmluZwB0b0lTT1N0cmluZwB0b1VUQ1N0cmluZwBkdXBsaWNhdGUgaW1wb3J0IGJpbmRpbmcAaW52YWxpZCBpbXBvcnQgYmluZGluZwBiaWcAcmVnZXhwIG11c3QgaGF2ZSB0aGUgJ2cnIGZsYWcAb2YAaW5mAGRpZmYgPT0gKGludDhfdClkaWZmAGRpZmYgPT0gKGludDE2X3QpZGlmZgBocmVmAGdjX2RlY3JlZgBmcmVlX3Zhcl9yZWYAb3B0aW1pemVfc2NvcGVfbWFrZV9nbG9iYWxfcmVmAHJlc2V0X3dlYWtfcmVmAGRlbGV0ZV93ZWFrX3JlZgBvcHRpbWl6ZV9zY29wZV9tYWtlX3JlZgBpbmRleE9mAGxhc3RJbmRleE9mAHZhbHVlT2YAc2V0UHJvdG90eXBlT2YAZ2V0UHJvdG90eXBlT2YAaXNQcm90b3R5cGVPZgAlLipmAGZvbnRzaXplAG5ld19zaXplIDw9IHNoLT5wcm9wX3NpemUAZGVzY3IgPCBydC0+YXRvbV9zaXplAGF0b20gPCBydC0+YXRvbV9zaXplAGNvbXB1dGVfc3RhY2tfc2l6ZQBuIDwgYnVmX3NpemUAbm9ybWFsaXplAGZyZWV6ZQByZXNvbHZlAHRvUHJpbWl0aXZlAHB1dF9sdmFsdWUAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAHJlc3QgZWxlbWVudCBjYW5ub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUAaW52YWxpZCByZXQgdmFsdWUAX19KU19BdG9tVG9WYWx1ZQBfX3F1b3RlAGlzRmluaXRlAGRlbGV0ZQBjcmVhdGUAc2V0RGF0ZQBnZXREYXRlAHNldFVUQ0RhdGUAZ2V0VVRDRGF0ZQBJbnZhbGlkIERhdGUAcmV2ZXJzZQBwYXJzZQBwcm94eSBwcmV2ZW50RXh0ZW5zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAFByb21pc2UAdG9Mb3dlckNhc2UAdG9Mb2NhbGVMb3dlckNhc2UAdG9VcHBlckNhc2UAdG9Mb2NhbGVVcHBlckNhc2UAaWdub3JlQ2FzZQBsb2NhbGVDb21wYXJlAHByb3h5OiBpbmNvbnNpc3RlbnQgcHJvdG90eXBlAHByb3h5OiBiYWQgcHJvdG90eXBlAG5vdCBhIHByb3RvdHlwZQBpbnZhbGlkIG9iamVjdCB0eXBlAHVuZXNjYXBlAG5vbmUAcmVzdCBlbGVtZW50IG11c3QgYmUgdGhlIGxhc3Qgb25lAG11bHRpbGluZQAgIHBjMmxpbmUAc29tZQBKU19GcmVlUnVudGltZQBKU1J1bnRpbWUAc2V0VGltZQBnZXRUaW1lAHNldF9vYmplY3RfbmFtZQBleHBlY3RpbmcgcHJvcGVydHkgbmFtZQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQBpbnZhbGlkIHByb3BlcnR5IG5hbWUAZHVwbGljYXRlIF9fcHJvdG9fXyBwcm9wZXJ0eSBuYW1lAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIHBhcmFtZXRlciBuYW1lAGV4cGVjdGluZyBncm91cCBuYW1lAGR1cGxpY2F0ZSBncm91cCBuYW1lAGludmFsaWQgZ3JvdXAgbmFtZQBkdXBsaWNhdGUgbGFiZWwgbmFtZQBpbnZhbGlkIGZpcnN0IGNoYXJhY3RlciBvZiBwcml2YXRlIG5hbWUAaW52YWxpZCBsZXhpY2FsIHZhcmlhYmxlIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBleHBlY3RpbmcgZmllbGQgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAY2xhc3Mgc3RhdGVtZW50IHJlcXVpcmVzIGEgbmFtZQBmaWxlTmFtZQBjb21waWxlAG9iamVjdCBpcyBub3QgZXh0ZW5zaWJsZQBwcm94eTogaW5jb25zaXN0ZW50IGlzRXh0ZW5zaWJsZQBjYW5ub3QgaGF2ZSBzZXR0ZXIvZ2V0dGVyIGFuZCB2YWx1ZSBvciB3cml0YWJsZQBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlAHZhbHVlIGlzIG5vdCBpdGVyYWJsZQBwcm9wZXJ0eUlzRW51bWVyYWJsZQBtaXNzaW5nIGluaXRpYWxpemVyIGZvciBjb25zdCB2YXJpYWJsZQBsZXhpY2FsIHZhcmlhYmxlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUAcmV2b2NhYmxlAHN0cmlrZQBpbnZhbGlkIGNsYXNzIHJhbmdlAG1lc3NhZ2UAYXN5bmNfZnVuY19mcmVlAGludmFsaWQgbHZhbHVlIGluIHN0cmljdCBtb2RlAGludmFsaWQgdmFyaWFibGUgbmFtZSBpbiBzdHJpY3QgbW9kZQBjYW5ub3QgZGVsZXRlIGEgZGlyZWN0IHJlZmVyZW5jZSBpbiBzdHJpY3QgbW9kZQBvY3RhbCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZQBvY3RhbCBsaXRlcmFscyBhcmUgZGVwcmVjYXRlZCBpbiBzdHJpY3QgbW9kZQB1bmljb2RlACAgYnl0ZWNvZGUASlNGdW5jdGlvbkJ5dGVjb2RlAHNraXBfZGVhZF9jb2RlAGludmFsaWQgYXJndW1lbnQgbmFtZSBpbiBzdHJpY3QgY29kZQBpbnZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IGNvZGUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgZ2xvYmFsIGlkZW50aWZpZXIgaW4gbW9kdWxlIGNvZGUAaW1wb3J0Lm1ldGEgb25seSB2YWxpZCBpbiBtb2R1bGUgY29kZQBmcm9tQ2hhckNvZGUAaW52YWxpZCBmb3IgaW4vb2YgbGVmdCBoYW5kLXNpZGUAaW52YWxpZCBhc3NpZ25tZW50IGxlZnQtaGFuZCBzaWRlAHJlZHVjZQBzb3VyY2UAJ3RoaXMnIGNhbiBiZSBpbml0aWFsaXplZCBvbmx5IG9uY2UAcHJvcGVydHkgY29uc3RydWN0b3IgYXBwZWFycyBtb3JlIHRoYW4gb25jZQBpbnZhbGlkIFVURi04IHNlcXVlbmNlAGNpcmN1bGFyIHJlZmVyZW5jZQBzbGljZQBzcGxpY2UAcmFjZQByZXBsYWNlACUrLiplAHVuZXhwZWN0ZWQgJ2F3YWl0JyBrZXl3b3JkAHVuZXhwZWN0ZWQgJ3lpZWxkJyBrZXl3b3JkAG1hcF9kZWNyZWZfcmVjb3JkAGl0ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSB0aHJvdyBtZXRob2QAb2JqZWN0IG5lZWRzIHRvSVNPU3RyaW5nIG1ldGhvZAAnc3VwZXInIGlzIG9ubHkgdmFsaWQgaW4gYSBtZXRob2QAZnJvdW5kAGJyZWFrL2NvbnRpbnVlIGxhYmVsIG5vdCBmb3VuZABvdXQgb2YgYm91bmQAZmluZABiaW5kAGludmFsaWQgaW5kZXggZm9yIGFwcGVuZABleHRyYW5lb3VzIGNoYXJhY3RlcnMgYXQgdGhlIGVuZAB1bmV4cGVjdGVkIGRhdGEgYXQgdGhlIGVuZAB1bmV4cGVjdGVkIGVuZABpbnZhbGlkIGluY3JlbWVudC9kZWNyZW1lbnQgb3BlcmFuZABpbnZhbGlkICdpbnN0YW5jZW9mJyByaWdodCBvcGVyYW5kAGludmFsaWQgJ2luJyBvcGVyYW5kAHRyaW1FbmQAcGFkRW5kAGJvbGQAJWxsZABnY19kZWNyZWZfY2hpbGQAcmVzb2x2ZV9zY29wZV9wcml2YXRlX2ZpZWxkAGNhbm5vdCBkZWxldGUgYSBwcml2YXRlIGNsYXNzIGZpZWxkAGV4cGVjdGluZyA8YnJhbmQ+IHByaXZhdGUgZmllbGQAJXMgaXMgbm90IGluaXRpYWxpemVkAGZpeGVkAHRvRml4ZWQAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkAHJlZ2V4IG5vdCBzdXBwb3J0ZWQAZXZhbCBpcyBub3Qgc3VwcG9ydGVkAFJlZ0V4cCBhcmUgbm90IHN1cHBvcnRlZABpbnRlcnJ1cHRlZAAlcyBvYmplY3QgZXhwZWN0ZWQAaWRlbnRpZmllciBleHBlY3RlZABieXRlY29kZSBmdW5jdGlvbiBleHBlY3RlZABzdHJpbmcgZXhwZWN0ZWQAZnJvbSBjbGF1c2UgZXhwZWN0ZWQAZnVuY3Rpb24gbmFtZSBleHBlY3RlZAB2YXJpYWJsZSBuYW1lIGV4cGVjdGVkAG1ldGEgZXhwZWN0ZWQAcmVqZWN0ZWQAbWVtb3J5IGFsbG9jYXRlZABtZW1vcnkgdXNlZABkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2Fubm90IHNldCBwcm9wZXJ0eSAnJXMnIG9mIHVuZGVmaW5lZABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIHVuZGVmaW5lZABmbGFncyBtdXN0IGJlIHVuZGVmaW5lZABVbmRlZmluZWQAcHJpdmF0ZSBjbGFzcyBmaWVsZCBpcyBhbHJlYWR5IGRlZmluZWQAJyVzJyBpcyBub3QgZGVmaW5lZABncm91cCBuYW1lIG5vdCBkZWZpbmVkAGFsbFNldHRsZWQAZnVsZmlsbGVkAGNhbm5vdCBiZSBjYWxsZWQAaXNTZWFsZWQAIXNoLT5pc19oYXNoZWQAdmFyX3JlZi0+aXNfZGV0YWNoZWQAQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWQAYWRkACUrMDdkACUwNGQAJTAyZCUwMmQAJTAyZC8lMDJkLyUwKmQAJS4zcyAlLjNzICUwMmQgJTAqZAA6JWQAaW52YWxpZCB0aHJvdyB2YXIgdHlwZSAlZABzYwBqc19kZWZfbWFsbG9jAHRydW5jAGdjAGV4ZWMAL3RtcC9xdWlja2pzL3F1aWNranMuYwAvdG1wL3F1aWNranMvbGlicmVnZXhwLmMAL3RtcC9xdWlja2pzL2xpYnVuaWNvZGUuYwBzdWIAcHJvbWlzZV9yZWFjdGlvbl9qb2IAanNfcHJvbWlzZV9yZXNvbHZlX3RoZW5hYmxlX2pvYgByd2EAX19sb29rdXBTZXR0ZXJfXwBfX2RlZmluZVNldHRlcl9fAF9fbG9va3VwR2V0dGVyX18AX19kZWZpbmVHZXR0ZXJfXwBfX3Byb3RvX18AW1N5bWJvbC5zcGxpdF0AW1N5bWJvbC5zcGVjaWVzXQBbU3ltYm9sLml0ZXJhdG9yXQBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdAFtTeW1ib2wubWF0Y2hBbGxdAFtTeW1ib2wubWF0Y2hdAFtTeW1ib2wuc2VhcmNoXQBbU3ltYm9sLnRvU3RyaW5nVGFnXQBbU3ltYm9sLnRvUHJpbWl0aXZlXQBbdW5zdXBwb3J0ZWQgdHlwZV0AW2Z1bmN0aW9uIGJ5dGVjb2RlXQBbU3ltYm9sLmhhc0luc3RhbmNlXQBbU3ltYm9sLnJlcGxhY2VdAFsAJTAyZDolMDJkOiUwMmQuJTAzZFoAUE9TSVRJVkVfSU5GSU5JVFkATkVHQVRJVkVfSU5GSU5JVFkAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkAc3RhY2tfbGVuIDwgUE9QX1NUQUNLX0xFTl9NQVgALSUwMmQtJTAyZFQASlNfQXRvbUdldFN0clJUAG9wY29kZSA8IFJFT1BfQ09VTlQAQllURVNfUEVSX0VMRU1FTlQAJTAyZDolMDJkOiUwMmQgR01UAEpTX1ZBTFVFX0dFVF9UQUcoc2YtPmN1cl9mdW5jKSA9PSBKU19UQUdfT0JKRUNUAHZhcl9raW5kID09IEpTX1ZBUl9QUklWQVRFX1NFVFRFUgBNQVhfU0FGRV9JTlRFR0VSAE1JTl9TQUZFX0lOVEVHRVIAaXNOYU4ARGF0ZSB2YWx1ZSBpcyBOYU4AdG9KU09OAEVQU0lMT04ATkFOACUwMmQ6JTAyZDolMDJkICVjTQBzLT5sYWJlbF9zbG90c1tsYWJlbF0uZmlyc3RfcmVsb2MgPT0gTlVMTABsYWJlbF9zbG90c1tpXS5maXJzdF9yZWxvYyA9PSBOVUxMAHBycyAhPSBOVUxMAHNmLT5jdXJfc3AgIT0gTlVMTABzZiAhPSBOVUxMAG1yMSAhPSBOVUxMAHZhcl9raW5kICE9IEpTX1ZBUl9OT1JNQUwAYi0+ZnVuY19raW5kID09IEpTX0ZVTkNfTk9STUFMAGVuY29kZVVSSQBkZWNvZGVVUkkAUEkAc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUCB8fCBzcGVjaWFsID09IFBVVF9MVkFMVUVfTk9LRUVQX0RFUFRIAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9FWEVDVVRJTkcASU5GADAxMjM0NTY3ODlBQkNERUYAU0laRQBNQVhfVkFMVUUATUlOX1ZBTFVFAE5BTUUAZXZhbF90eXBlID09IEpTX0VWQUxfVFlQRV9HTE9CQUwgfHwgZXZhbF90eXBlID09IEpTX0VWQUxfVFlQRV9NT0RVTEUAcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfSlNfT0JKRUNUIHx8IHAtPmdjX29ial90eXBlID09IEpTX0dDX09CSl9UWVBFX0ZVTkNUSU9OX0JZVEVDT0RFAExPRzJFAExPRzEwRQBzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQVdBSVRJTkdfUkVUVVJOIHx8IHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9DT01QTEVURUQAVVRDADxpbnB1dD4APGluaXRTY3JpcHQ+ADxldmFsU2NyaXB0PgA8c2V0PgA8YW5vbnltb3VzPgA8Y29tbUZ1bj4APGNhbGxFeHRlcm5hbEZ1bmN0aW9uPgA8bnVsbD4AJnF1b3Q7AHNldFVpbnQ4AGdldFVpbnQ4AHNldEludDgAZ2V0SW50OABtYWxmb3JtZWQgVVRGLTgAcmFkaXggbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2AHNldFVpbnQxNgBnZXRVaW50MTYAc2V0SW50MTYAZ2V0SW50MTYAYXJnYyA9PSA1AHNldEZsb2F0NjQAZ2V0RmxvYXQ2NABhcmdjID09IDMAYXRhbjIAbG9nMgBTUVJUMV8yAFNRUlQyAExOMgBjbHozMgBzZXRVaW50MzIAZ2V0VWludDMyAHNldEludDMyAGdldEludDMyAHNldEZsb2F0MzIAZ2V0RmxvYXQzMgBzdGFja19sZW4gPj0gMgBKU19BdG9tSXNOdW1lcmljSW5kZXgxAGpzX2ZjdnQxAGV4cG0xAGxzLT5hZGRyID09IC0xAHN0YWNrX2xlbiA+PSAxAHAtPnNoYXBlLT5oZWFkZXIucmVmX2NvdW50ID09IDEAc3RhY2tfbGVuID09IDEAanNfZnJlZV9zaGFwZTAAbG9nMTAATE4xMABwLT5yZWZfY291bnQgPiAwAHZhcl9yZWYtPmhlYWRlci5yZWZfY291bnQgPiAwAHN0YWNrX3NpemUgPiAwAGNwb29sX2lkeCA+PSAwAHJ0LT5hdG9tX2NvdW50ID49IDAAbHMtPnJlZl9jb3VudCA+PSAwAHMtPmlzX2V2YWwgfHwgcy0+Y2xvc3VyZV92YXJfY291bnQgPT0gMABwLT5yZWZfY291bnQgPT0gMABjdHgtPmhlYWRlci5yZWZfY291bnQgPT0gMABzaC0+aGVhZGVyLnJlZl9jb3VudCA9PSAwAHAtPm1hcmsgPT0gMAAocHItPnUuaW5pdC5yZWFsbV9hbmRfaWQgJiAzKSA9PSAwAChuZXdfaGFzaF9zaXplICYgKG5ld19oYXNoX3NpemUgLSAxKSkgPT0gMABpICE9IDAAc2l6ZSAhPSAwAF4kXC4qKz8oKVtde318LwA8LwBtaXNzaW5nIGJpbmRpbmcgcGF0dGVybi4uLgBhc3luYyBmdW5jdGlvbiAqAAp9KQBsaXN0X2VtcHR5KCZydC0+Z2Nfb2JqX2xpc3QpAGogPT0gKHNoLT5wcm9wX2NvdW50IC0gc2gtPmRlbGV0ZWRfcHJvcF9jb3VudCkASlNfSXNVbmRlZmluZWQoZnVuY19yZXQpACFfX0pTX0F0b21Jc1RhZ2dlZEludChkZXNjcikAIWF0b21faXNfZnJlZShwKQAobnVsbCkAIChuYXRpdmUpAGpzX2NsYXNzX2hhc19ieXRlY29kZShwLT5jbGFzc19pZCkAdW5jb25zaXN0ZW50IHN0YWNrIHNpemU6ICVkICVkIChwYz0lZCkAYnl0ZWNvZGUgYnVmZmVyIG92ZXJmbG93IChvcD0lZCwgcGM9JWQpAHN0YWNrIG92ZXJmbG93IChvcD0lZCwgcGM9JWQpAHN0YWNrIHVuZGVyZmxvdyAob3A9JWQsIHBjPSVkKQBpbnZhbGlkIG9wY29kZSAob3A9JWQsIHBjPSVkKQAoPzopAG5vIGZ1bmN0aW9uIGZpbGVuYW1lIGZvciBpbXBvcnQoKQAtXy4hfionKCkAIGFub255bW91cygAU3ltYm9sKABleHBlY3RpbmcgJ30nAGNsYXNzIGNvbnN0cnVjdG9ycyBtdXN0IGJlIGludm9rZWQgd2l0aCAnbmV3JwBleHBlY3RpbmcgJ2FzJwB1bmV4cGVjdGVkIHRva2VuIGluIGV4cHJlc3Npb246ICclLipzJwB1bmV4cGVjdGVkIHRva2VuOiAnJS4qcycAcmVkZWNsYXJhdGlvbiBvZiAnJXMnAGR1cGxpY2F0ZSBleHBvcnRlZCBuYW1lICclcycAY2lyY3VsYXIgcmVmZXJlbmNlIHdoZW4gbG9va2luZyBmb3IgZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycAQ291bGQgbm90IGZpbmQgZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycAY291bGQgbm90IGxvYWQgbW9kdWxlICclcycAY2Fubm90IGRlZmluZSB2YXJpYWJsZSAnJXMnAHVuZGVmaW5lZCBwcml2YXRlIGZpZWxkICclcycAdW5zdXBwb3J0ZWQgcmVmZXJlbmNlIHRvICdzdXBlcicAaW52YWxpZCB1c2Ugb2YgJ3N1cGVyJwAnZm9yIGF3YWl0JyBsb29wIHNob3VsZCBiZSB1c2VkIHdpdGggJ29mJwBleHBlY3RpbmcgJyVjJwB1bnBhcmVudGhlc2l6ZWQgdW5hcnkgZXhwcmVzc2lvbiBjYW4ndCBhcHBlYXIgb24gdGhlIGxlZnQtaGFuZCBzaWRlIG9mICcqKicAaW52YWxpZCB1c2Ugb2YgJ2ltcG9ydCgpJwBleHBlY3RpbmcgJSUAOy8/OkAmPSskLCMAPSIAc2V0IABnZXQgAFtvYmplY3QgAGFzeW5jIGZ1bmN0aW9uIABib3VuZCAAJS4zcywgJTAyZCAlLjNzICUwKmQgAGFzeW5jIAA6IAAgICAgICAgICAgAAopIHsKAApKU09iamVjdCBjbGFzc2VzCgAlLTIwcyAlOHMgJThzCgAgICU1ZCAgJTIuMGQgJXMKACAgJTN1ICsgJS0ydSAgJXMKACAgbWFsbG9jX3VzYWJsZV9zaXplIHVuYXZhaWxhYmxlCgAlLTIwcyAlOGxs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bmVkAG51bWJlcgBib29sZWFuAHN0cmluZwBvYmplY3QAc3ltYm9sAGludGVnZXIAdW5rbm93bgBhcmd1bWVudHMAY2FsbGVlAGNhbGxlcgA8ZXZhbD4APHJldD4APHZhcj4APGFyZ192YXI+ADx3aXRoPgBsYXN0SW5kZXgAdGFyZ2V0AGluZGV4AGlucHV0AGRlZmluZVByb3BlcnRpZXMAYXBwbHkAam9pbgBjb25jYXQAc3BsaXQAY29uc3RydWN0AGdldFByb3RvdHlwZU9mAHNldFByb3RvdHlwZU9mAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBoYXMAZGVsZXRlUHJvcGVydHkAZGVmaW5lUHJvcGVydHkAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAG93bktleXMAYWRkAGRvbmUAbmV4dAB2YWx1ZXMAc291cmNlAGZsYWdzAGdsb2JhbAB1bmljb2RlAHJhdwBuZXcudGFyZ2V0AHRoaXMuYWN0aXZlX2Z1bmMAPGhvbWVfb2JqZWN0PgA8Y29tcHV0ZWRfZmllbGQ+ADxzdGF0aWNfY29tcHV0ZWRfZmllbGQ+ADxjbGFzc19maWVsZHNfaW5pdD4APGJyYW5kPgAjY29uc3RydWN0b3IAYXMAZnJvbQBtZXRhACpkZWZhdWx0KgAqAE1vZHVsZQB0aGVuAHJlc29sdmUAcmVqZWN0AHByb21pc2UAcHJveHkAcmV2b2tlAGFzeW5jAGV4ZWMAZ3JvdXBzAHN0YXR1cwByZWFzb24AZ2xvYmFsVGhpcwB0b0pTT04AT2JqZWN0AEFycmF5AEVycm9yAE51bWJlcgBTdHJpbmcAQm9vbGVhbgBTeW1ib2wAQXJndW1lbnRzAE1hdGgASlNPTgBEYXRlAEZ1bmN0aW9uAEdlbmVyYXRvckZ1bmN0aW9uAEZvckluSXRlcmF0b3IAUmVnRXhwAEFycmF5QnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAFVpbnQ4Q2xhbXBlZEFycmF5AEludDhBcnJheQBVaW50OEFycmF5AEludDE2QXJyYXkAVWludDE2QXJyYXkASW50MzJBcnJheQBVaW50MzJBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AE1hcABTZXQAV2Vha01hcABXZWFrU2V0AE1hcCBJdGVyYXRvcgBTZXQgSXRlcmF0b3IAQXJyYXkgSXRlcmF0b3IAU3RyaW5nIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAR2VuZXJhdG9yAFByb3h5AFByb21pc2UAUHJvbWlzZVJlc29sdmVGdW5jdGlvbgBQcm9taXNlUmVqZWN0RnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBBc3luY0Z1bmN0aW9uUmVzb2x2ZQBBc3luY0Z1bmN0aW9uUmVqZWN0AEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AQXN5bmNHZW5lcmF0b3IARXZhbEVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAU3ludGF4RXJyb3IAVHlwZUVycm9yAFVSSUVycm9yAEludGVybmFsRXJyb3IAPGJyYW5kPgBTeW1ib2wudG9QcmltaXRpdmUAU3ltYm9sLml0ZXJhdG9yAFN5bWJvbC5tYXRjaABTeW1ib2wubWF0Y2hBbGwAU3ltYm9sLnJlcGxhY2UAU3ltYm9sLnNlYXJjaABTeW1ib2wuc3BsaXQAU3ltYm9sLnRvU3RyaW5nVGFnAFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUAU3ltYm9sLmhhc0luc3RhbmNlAFN5bWJvbC5zcGVjaWVzAFN5bWJvbC51bnNjb3BhYmxlcwBTeW1ib2wuYXN5bmNJdGVyYXRvcgAAAAAAAQAAAAUAARQFAAEVBQABFQUAARcFAAEXAQABAAEAAQABAAEAAQABAAEAAQABAAEAAgABBQMAAQoBAQAAAQIBAAEDAgABAQIAAQIDAAECBAABAwYAAQIDAAEDBAABBAUAAQMDAAEEBAABBQUAAQICAAEEBAABAwMAAQMDAAEEBAABBQUAAwIBDQMBAQ0DAQANAwIBDQMCAA0DAAENAwMBCgEBAAABAAAAAQECAAEAAAABAgIAAQIAAAEBAAABAQAABgAAGAUBAQ8DAgEKAQIBAAEBAQABAQEABQABFwUAARcFAAEXBQEAFwUBABcFAgAXAQIDAAEDAAAGAAAYBgAAGAYBABgFAQEXBQECFwUCABcBAgEAAQMAAAEDAQABAgEAAQICAAEDAAABAwEAAQQAAAUCARcFAQEXAQICAAECAQABAgIAAQMCAAEDAgACAwMFBgIBGAIDAQUGAgIYBgMDGAMAARADAQAQAwEBEAMAAREDAQARAwEBEQMAARIDAQASAwEBEgMAABADAAEQAwEAEAMBABADAAESAwEAEgMBABIDAAAQBQEAFgUBABYFAAAWBQABFgUAABYBAQAAAQEBAAEBAQABAgIACgEAGgoCARoKAQAaCgEAGgoBABoKAQAaBwACGQcAAhkHAAIZBQACFwEBAQABAQMAAQEDAAEBAwACAwUFAQEBAAEBAgABAwAAAQQEAAEEBAACBAUFAQAAAAEBAgABAQIAAQECAAEBAQABAQEAAQEBAAEBAQABAQEAAQECAAEBAgACAAAHAgAABwIBAAcBAQEAAQEBAAEBAQABAgEABQABFwECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAQEAAQAAAAMAAAoDAAAKBQAAFgcAARkHAAEZBwEAGQcAARkLAAIbBwACGQcAAhkHAQEZBwECGQcBARkFAQETBQAAEwEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQIAAQYDAAELAgABCAIAAQgBAAEAAgABBwIBAAcCAQEHAQABAgEAAQIBAAECAQABAgEBAAIBAQACAQEAAgEBAAIBAQECAQEBAgEBAQIBAQECAQABAwEAAQMBAAEDAQABAwEBAAMBAQADAQEAAwEBAAMBAQEDAQEBAwEBAQMBAQEDAQABBAEAAQQBAAEEAQABBAEBAAQBAQAEAQEABAEBAAQBAQEEAQEBBAEBAQQBAQEEAQEBAAIBAAkCAQAJAgAACQMAAAwBAQEOAQEBDgEBAQ4BAQEOAQEBAAEBAQABAQEAAQEBAHEAAAByAAAAcwAAAG4AZgBpAG4AaQB0AHkADQAQAC0AMQAAAFskAAADAAAAAAAAAHQAAABCEgAAAQEAAHUAAAAAAAAAqisAAAEBAAB2AAAAAAAAABUgAAABAgEAdwAAAAAAAADJJQAAAQICAHcAAAAAAAAAaSYAAAECBAB3AAAAAAAAAC0fAAABAggAdwAAAAAAAAB1KgAAAQIQAHcAAAAAAAAAVwYAAAECIAB3AAAAAAAAALIxAAADAAAAAQAAADAAAABNKAAAAwAAAAIAAAB4AAAAegoAAAMAAAABAAAAeQAAACUiAAADAAAAAAAAAHoAAABsMwAAAwAAAAIAAAB7AAAA5zIAAAMAAAABAAAAfAAAANUyAAADAAAAAQAAAH0AAAD2MgAAAwAAAAEAAAB+AAAAjDIAAAMAAAACAAAAfwAAAJsyAAABAQAAgAAAAAAAAAAMCgAAAwAAAAAMAACBAAAABjMAAAEDAAAaFQAAAAAAANc0AAADCAAAwFIAAAMAAABQJQAAAwAAAAIAAACCAAAAXgYAAAMAAAADAAAAgwAAAAYzAAABAwAA1zQAAAAAAABiKQAAAwAAAAIAAACEAAAAUw0AAAMAAAACAQAAhQAAAKoNAAADAAAAAQEAAIYAAAAOFAAAAwAAAAEBAACHAAAAByUAAAMAAAABAQAAiAAAAFMZAAADAAAAAAEAAIkAAABWJAAAAQIAAIoAAAAAAAAAeCEAAAMAAAABAQAAiwAAAEgSAAADAAQAAAEAAIwAAAAQDwAAAwAAAAABAACMAAAASRMAAAMACAAAAQAAjAAAAKwyAAADCQAASRMAAP////8GMwAAAQMAAEMaAAAAAAAAPzEAAAMAAQABAQAAhQAAAA4UAAADAAEAAQEAAIcAAAAHJQAAAwABAAEBAACIAAAAUxkAAAMAAQAAAQAAiQAAAFYkAAABAgEAigAAAAAAAAB4IQAAAwABAAEBAACLAAAASBIAAAMAAQAAAQAAjAAAABAPAAADCQAASBIAAP////+sMgAAAwkAAEgSAAD/////SRMAAAMACQAAAQAAjAAAAAYzAAABAwAAsg0AAAAAAABTDQAAAwACAAIBAACFAAAAqg0AAAMAAgABAQAAhgAAAA4UAAADAAIAAQEAAIcAAAAHJQAAAwACAAEBAACIAAAABjMAAAEDAAA/GgAAAAAAAD8xAAADAAMAAQEAAIUAAAAOFAAAAwADAAEBAACHAAAAByUAAAMAAwABAQAAiAAAAAYzAAABAwAArg0AAAAAAAAMCgAAAwAAAAAMAACNAAAABjMAAAEDAAANFQAAAAAAAAwKAAADAAEAAAwAAI0AAAAGMwAAAQMAAAAVAAAAAAAAmzIAAAEBAACAAAAAAAAAAI0dAAADAAAAAgAAAI4AAABrIQAAAwAAAAEAAACPAAAATwYAAAMAAAABAAAAkAAAAAYzAAABAwAAhSUAAAAAAABsJAAAAwAAAAEBAACRAAAA5Q0AAAMAAQABAQAAkQAAACkfAAADAAAAAQEAAJIAAADUMAAAAwABAAEBAACSAAAAIAYAAAMAAgABAQAAkgAAADgsAAADAAAAAQAAAJMAAACbMgAAAQEAAIAAAAAAAAAABjMAAAEDAAB2GwAAAAAAAL4yAAADAAAAAAAAAJQAAAAMCgAAAwAAAAEBAACVAAAAcxoAAAMAAQABAQAAlQAAACoIAAADAAIAAQEAAJUAAAAMCgAAAwAAAAEBAACWAAAAcxoAAAMAAQABAQAAlgAAACoIAAADAAIAAQEAAJYAAAAGMwAAAQMAAIMVAAAAAAAABjMAAAEDAABKGwAAAAAAALQjAAADAAAAAAAAAJcAAAAlIgAAAwATAAABAACYAAAAGzMAAAMAAAABAAAAmQAAAJ4iAAADAAMAAAEAAJgAAAB9IgAAAwkAAJ4iAAD/////kiIAAAMAIwAAAQAAmAAAAC4iAAADABEAAAEAAJgAAABOIgAAAwASAAABAACYAAAAbiIAAAMAMwAAAQAAmAAAADsiAAADADEAAAEAAJgAAABbIgAAAwAyAAABAACYAAAADg0AAAMAAAAAAAAAmgAAAKMmAAADAAAAAAAAAJcAAABhGQAAAwABAQABAACbAAAAdRkAAAMAAQAAAQAAmwAAAJAZAAADAAAAAAEAAJsAAABeIAAAAwARAAABAACbAAAAcyAAAAMAEAAAAQAAmwAAAB0lAAADACEAAAEAAJsAAAAwJQAAAwAgAAABAACbAAAAfxAAAAMAMQAAAQAAmwAAAJQQAAADADAAAAEAAJsAAABaEgAAAwBBAAABAACbAAAAcxIAAAMAQAAAAQAAmwAAAMcTAAADAFEAAAEAAJsAAADgEwAAAwBQAAABAACbAAAAhhMAAAMAYQAAAQAAmwAAAKkTAAADAGAAAAEAAJsAAAAcBwAAAwBxAAABAACbAAAAIwcAAAMAcAAAAQAAmwAAAJsmAAADAAAAAQAAAJwAAAB2EwAAAwBxBgEBAACdAAAAlhMAAAMAcAYBAQAAnQAAALwTAAADAHEFAgEAAJ0AAADSEwAAAwBwBQIBAACdAAAATxIAAAMAcQQDAQAAnQAAAGUSAAADAHAEAwEAAJ0AAAB2EAAAAwBxAwQBAACdAAAAiBAAAAMAcAMEAQAAnQAAABUlAAADADECAQEAAJ0AAAAlJQAAAwAwAgEBAACdAAAAVSAAAAMAMQECAQAAnQAAAGcgAAADADABAgEAAJ0AAABZGQAAAwAAAAEAAACeAAAAaRkAAAMAMQADAQAAnQAAAIEZAAADADAAAwEAAJ0AAADVNAAAAwAAAAEAAACfAAAAU3VuTW9uVHVlV2VkVGh1RnJpU2F0AEGwswELJEphbkZlYk1hckFwck1heUp1bkp1bEF1Z1NlcE9jdE5vdkRlYwBB4LMBC9YMHwAAABwAAAAfAAAAHgAAAB8AAAAeAAAAHwAAAB8AAAAeAAAAHwAAAB4AAAAfAAAANAgAAAMAAAAAAAAAoAAAAFAlAAADAAAAAQAAAKEAAACNNwAAAwAAAAcAAACiAAAAmpucnZ6goaKtrq+fAAAAACUiAAADAAAAAAAAAKMAAAA/KAAAAwMAAPkVAAAAAAAAhykAAAMDAADVQQAAAAAAAA4lAAADAAAAAgAAAKQAAADLIwAAAwAAAAEBAAClAAAAvCMAAAMAAAACAAAApgAAAJwFAAADAAAAAwEAAKcAAAA4EwAAAwAAAAIAAACoAAAAnBIAAAMAAAABAAAAqQAAANURAAADAAAAAQAAAKoAAAAQDwAAAwAAAAEBAACrAAAASBIAAAMAAQABAQAAqwAAAEkTAAADAAIAAQEAAKsAAACCKAAAAwAAAAEBAACsAAAAfhEAAAMAAAABAQAArQAAAHAUAAADAAAAAgEAAK4AAACgEAAAAwAAAAEAAACvAAAAAxIAAAMAAAACAAAAsAAAADsdAAADAAAAAgAAALEAAAAQIAAAAwAAAAEBAACyAAAAZSQAAAMAAQABAQAAsgAAAPowAAADAAAAAQEAALMAAABCHQAAAwABAAEBAACzAAAAaxAAAAMAAAABAAAAtAAAAFETAAADAAAAAQAAALUAAAAlIgAAAwAAAAAAAAC2AAAAbiIAAAMAAAAAAAAAtwAAALQjAAADAAAAAAAAALgAAABWBQAAAwAAAAEAAAC5AAAA2iMAAAMAAAABAAAAugAAAPIoAAADAAAAAQAAALsAAACCMgAAAQEAALwAAAC9AAAAcTIAAAMAAAACAQAAvgAAAE8yAAADAAEAAgEAAL4AAABgMgAAAwAAAAEBAAC/AAAAPjIAAAMAAQABAQAAvwAAACgfAAADAAAAAQAAAMAAAAAkBgAAAwAAAAIBAADBAAAAMy0AAAMAAAABAAAAwgAAACUiAAADAAAAAAAAAMMAAABXMwAAAwAAAAEAAADEAAAARCgAAAEBAADFAAAAAAAAADEZAAABAQAAxgAAAAAAAACsMgAAAwAAAAAAAACUAAAA6w4AAAMAAAABAAAAxwAAABoGAAADAAAAAQEAAMgAAAB9JgAAAwABAAEBAADIAAAAeCEAAAMAAgABAQAAyAAAADMaAAADAAMAAQEAAMgAAAAPFwAAAwAEAAEBAADIAAAAoysAAAMAAAABAQAAyQAAAM8MAAADAAEAAQEAAMkAAADnHgAAAwAAAAEAAADKAAAALi0AAAMAAAABAQAAywAAAIIHAAADAAEAAQEAAMsAAACgIwAAAwAAAAEAAADMAAAAqCMAAAMAAAABAAAAzQAAAG0TAAADAAAAAQAAAM4AAADaHAAAAwAAAAEBAADPAAAAJSIAAAMAAAAAAAAA0AAAAG4iAAADAAEAAAEAAM8AAAD2GQAAAwAAAAABAADRAAAAGCEAAAMAAAABAQAA0gAAAN0MAAADAAEAAAEAANEAAADbDAAAAwABAAEBAADSAAAASCUAAAMAAAAAAAAA0wAAAKoKAAADAAAAAQAAANQAAAArLAAAAwAAAAIBAADVAAAAMSwAAAMAAQACAQAA1QAAAOMcAAADAAAAAgAAANYAAAA3GgAAAwABAAEBAADXAAAA1A4AAAMAAAAAAQAA1wAAAEgSAAADAAEAAAEAACkAAACsMgAAAwkAAEgSAAD/////EA8AAAMAAAAAAQAAKQAAAEkTAAADAAIAAAEAACkAAAAJBwAAAwAAAAEAAADYAAAAGR4AAAMAAAABAAAA2QAAAPwiAAADAAAAAAAAANoAAACbMgAAAQEAAIAAAAAAAAAADAoAAAMAAAAADAAAKgAAAAYzAAABAwAA8RQAAAAAAACQDAAAAwAAAAIAAADbAAAAyQ4AAAMAAAABAAAA3AAAAL00AAADAAAAAQAAAN0AAAD+JAAAAwAAAAEAAADeAAAAwTUAAAMAAAABAQAA3wAAAEoMAAADAAEAAQEAAN8AAAC3NQAAAwAAAAEBAADgAAAANwwAAAMAAQABAQAA4AAAADsmAAADAAAAAQAAAOEAAAA5JgAAAwAAAAEAAADiAAAA0QUAAAAGAAAAAAAAAADwf9E0AAAABgAAAAAAAAAA+H9uMAAAAAcAQcDAAQt1IiAAAAMAAAAAAAAA4wAAAGEbAAADAAAAAgAAAOQAAAAXGgAAAwAAAAIAAADlAAAAQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlAKl8rLS4vAEHAwQELlgMCIAAAAwAAAAEAAADmAAAAnS4AAAMAAAABAAAA5wAAAMkcAAADAAAAAQAAAOgAAAAlIgAAAwAAAAEBAADpAAAAbiIAAAMAAQAAAQAA6QAAALQjAAADAAAAAAAAAOoAAACQDAAAAwkAAJAMAAAAAAAAyQ4AAAMJAADJDgAAAAAAAL00AAADAAAAAQAAAOsAAAD+JAAAAwAAAAEAAADsAAAAshgAAAMAAAABAAAA7QAAALwYAAADAAAAAQAAAO4AAABaNgAAAAYAAP///////+9/ZDYAAAAGAAABAAAAAAAAANE0AAAABgAAAAAAAAAA+H+mMwAAAAYAAAAAAAAAAPD/lDMAAAAGAAAAAAAAAADwf9w0AAAABgAAAAAAAAAAsDybNAAAAAYAAP///////z9DrDQAAAAGAAD///////8/wyUiAAADAAAAAAAAAO8AAAC0IwAAAwAAAAAAAADwAAAAUysAAAMAAAABAAAA8QAAABwMAAADAAAAAQAAAPIAAABvCAAAAwAAAAEAAADzAAAA+SAAAAEEAEHgxAEL4gYFDwAAAwAAAAEAAAD0AAAA/g4AAAMAAAABAAAA9QAAAOsOAAADAAAAAQAAAPYAAADyDgAAAwAAAAEAAAD3AAAAoCMAAAMAAAABAQAA+AAAAKgjAAADAAEAAQEAAPgAAABtEwAAAwAAAAEBAAD5AAAAoCAAAAMAAgABAQAA+QAAAJUgAAADAAEAAQEAAPkAAABlIQAAAwDEAAEBAAD6AAAANB8AAAMAxQABAQAA+gAAAHEhAAADAMcAAQEAAPoAAACrDAAAAwAAAAIAAAD7AAAAsiEAAAMAAAACAAAA/AAAAFUUAAADAAAAAgAAAP0AAAArLAAAAwAAAAIAAAD+AAAA5A4AAAMAAAABAAAA/wAAAD0sAAADAAAAAgEAAAABAAA9HwAAAwABAAIBAAAAAQAAAC4AAAMAAQABAQAAAQEAAL4KAAADAAAAAQEAAAEBAAAlHgAAAwADAAABAAACAQAA+C0AAAMAAgAAAQAAAgEAAMUMAAADCQAA+C0AAP////+0CgAAAwABAAABAAACAQAA4wwAAAMJAAC0CgAA/////yUiAAADAAAAAAAAAAMBAAC0IwAAAwAAAAAAAAADAQAA9iQAAAMAAAABAAAABAEAANQlAAADAAAAAQAAAAUBAACNJQAAAwABAAABAAAGAQAAqyUAAAMAAAAAAQAABgEAAJklAAADAAEAAAEAAAYBAAC3JQAAAwAAAAABAAAGAQAArDIAAAMABQAAAQAAKQAAAA8WAAADAAAAAQEAAAcBAADaIgAAAwABAAABAAAHAQAAHCAAAAMAAgAAAQAABwEAAAcuAAADAAMAAAEAAAcBAACXLgAAAwAEAAABAAAHAQAABRYAAAMABQABAQAABwEAAO0jAAADAAYAAQEAAAcBAADuEwAAAwAHAAABAAAHAQAAHSAAAAMACAABAQAABwEAACIfAAADAAkAAAEAAAcBAABsKQAAAwAKAAABAAAHAQAAATIAAAMACwAAAQAABwEAAOQZAAADAAwAAAEAAAcBAAA8MgAAPygAANoiAAAAAAAAHCAAAAAAAAA4MgAAAAAAACkKAAAAAAAABAwAAAkWAAAEDAAAViQAAFMgAAAAAAAAPDIAAC4jAAAiHwAAAAAAAGwpAAAAAAAAATIAAAAAAADkGQBB0MsBC7ESDAoAAAMAAAAADAAACAEAAAYzAAABAwAAIRUAAAAAAAATIQAAAwgAAABmAAAsAAAA3xwAAAMAAAACAQAACQEAALwHAAADAAEAAgEAAAkBAAD2EwAAAwAAAAEGAAAKAQAA/xUAAAMAAAABBgAACwEAAEgfAAADAAAAAQYAAAwBAAD8LAAAAwAAAAEGAAANAQAApQoAAAMAAAABBgAADgEAAOsQAAADAAAAAQYAAA8BAADVHAAAAwAAAAEGAAAQAQAAxh0AAAMAAAABBgAAEQEAAJU4AAADAAAAAgcAABIBAADsEAAAAwAAAAEGAAATAQAA2RkAAAMAAAABBgAAFAEAAIAhAAADAAAAAQYAABUBAAAwCAAAAwAAAAIHAAAWAQAA1hwAAAMAAAABBgAAFwEAAMcdAAADAAAAAQYAABgBAACpMQAAAwAAAAEGAAAZAQAAPR0AAAMAAAABBgAAGgEAAB4hAAADAAAAAQYAABsBAAA2IQAAAwAAAAEGAAAcAQAAPCEAAAMAAAABBgAAHQEAAB0hAAADAAAAAQYAAB4BAAA1IQAAAwAAAAEGAAAfAQAAOyEAAAMAAAABBgAAIAEAACM5AAADAAAAAQYAACEBAABeGgAAAwAAAAEGAAAiAQAAmzgAAAMAAAABBgAAIwEAAIU5AAADAAAAAQYAACQBAACvCgAAAwAAAAEGAAAlAQAA5QoAAAMAAAACAAAAJgEAAB4eAAADAAAAAAAAACcBAAD7LAAAAwAAAAEGAAAoAQAAKh4AAAMAAAACAAAAKQEAALI4AAADAAAAAQAAACoBAAAGMwAAAQMAABMhAAAAAAAAJDcAAAAGAABpVxSLCr8FQIs5AAAABgAAFlW1u7FrAkCuOAAAAAYAAO85+v5CLuY/GTcAAAAGAAD+gitlRxX3Px83AAAABgAADuUmFXvL2z/LNQAAAAYAABgtRFT7IQlAoDgAAAAGAADNO39mnqDmP6g4AAAABgAAzTt/Zp6g9j/dDQAAAwgAANBoAAAOAAAAJAYAAAMAAAADAAAAKwEAALYNAAADAAAAAgAAACwBAACcBQAAAwABAAMBAACnAAAAeQUAAAMAAAACAAAALQEAAKoNAAADAAAAAgAAAC4BAABwFAAAAwABAAIBAACuAAAAyyMAAAMAAQABAQAApQAAAA4UAAADAAAAAgAAAC8BAACCKAAAAwABAAEBAACsAAAARQ8AAAMAAAABAAAAMAEAAH4RAAADAAEAAQEAAK0AAABTDQAAAwAAAAMAAAAxAQAAvCMAAAMAAAACAAAAMgEAAAYzAAABAwAA3Q0AAAAAAAAlIgAAAwAAAAAAAAAzAQAAtCMAAAMAAAAAAAAANAEAABszAAADAAAAAQAAADQBAAAGMwAAAQMAADweAAAAAAAAtBoAAAEBAAA1AQAAAAAAABYWAAADAAAAAQAAADYBAAAaFgAAAwAAAAEAAAA3AQAADAoAAAMAAAABDAAAOAEAAHMaAAADAAEAAQwAADgBAAAqCAAAAwACAAEMAAA4AQAABjMAAAEDAACIFQAAAAAAAAYzAAABAwAATxsAAAAAAAAIIQAAAQITADkBAAAAAAAAKywAAAMAEwACAQAAOgEAAAYzAAABAwAA+BgAAAAAAABfCAAAAwAAAAEAAAA7AQAAmzIAAAEBAACAAAAAAAAAAAghAAABAhQAOQEAAAAAAAArLAAAAwAUAAIBAAA6AQAABjMAAAEDAADRGAAAAAAAAJsyAAABAQAAgAAAAAAAAAD5IAAAAQEAADwBAAAAAAAAyhgAAAECAAA9AQAAAAAAAAghAAABAgAAPgEAAAAAAAADDQAAAQIAAD8BAAAAAAAAUw0AAAMAAAABAAAAQAEAAEgSAAADAAEAAAEAAEEBAACsMgAAAwkAAEgSAAD/////EA8AAAMAAAAAAQAAQQEAAEkTAAADAAIAAAEAAEEBAAAGMwAAAQEAAEIBAAAAAAAA4xwAAAMAAAACAAAAQwEAABoGAAADAAgAAQEAAMgAAAB9JgAAAwAJAAEBAADIAAAAeCEAAAMACgABAQAAyAAAADMaAAADAAsAAQEAAMgAAAAPFwAAAwAMAAEBAADIAAAAoysAAAMACAABAQAAyQAAAM8MAAADAAkAAQEAAMkAAADnHgAAAwAAAAEAAABEAQAALi0AAAMAAAABAQAARQEAAIIHAAADAAEAAQEAAEUBAABIJQAAAwAAAAAAAABGAQAAKywAAAMAAAACAAAARwEAAGgGAAADAAAAAgAAAEgBAACqCgAAAwAAAAEAAABJAQAA2hwAAAMAAAABAQAASgEAAG4iAAADAAEAAAEAAEoBAACgIwAAAwAAAAEBAABLAQAAqCMAAAMAAQABAQAASwEAAG0TAAADAP//AQEAAEsBAAAZHgAAAwAAAAEAAABMAQAA/CIAAAMAAAAAAAAATQEAAJsyAAABAQAAgAAAAAAAAADKGAAAAQIBAD0BAAAAAAAACCEAAAECAQA+AQAAAAAAAAMNAAABAgEAPwEAAAAAAAAOOAAAAwAWAAEBAABOAQAA/TcAAAMAFwABAQAATgEAAGI4AAADABgAAQEAAE4BAABPOAAAAwAZAAEBAABOAQAA1TgAAAMAGgABAQAATgEAAMI4AAADABsAAQEAAE4BAADpOAAAAwAcAAEBAABOAQAAgDgAAAMAHQABAQAATgEAAAY4AAADABYAAgEAAE8BAAD0NwAAAwAXAAIBAABPAQAAWTgAAAMAGAACAQAATwEAAEU4AAADABkAAgEAAE8BAADMOAAAAwAaAAIBAABPAQAAuDgAAAMAGwACAQAATwEAAN44AAADABwAAgEAAE8BAAB1OAAAAwAdAAIBAABPAQAABjMAAAEDAABmCAAAAAAAAAEAAAACAAAAAQAAAAQAAAABAAAAAQAAAAgAAAAQAAAAAQAAACAAAAAAAAAAAgAAAAAAAAABAAAAAQAAAAEAAAAtAAAALQAAAFQAAAA6AAAAOgAAAC4AAAATOwAAWT8AAA07AABQAQAAUQEAAFABAABSAQAAUwEAAFQBAABVAQAAVgEAAFcBAABYAQAAWQEAAFgBAABaAQAAWwEAAFwBAABdAQAAXgEAAF8BAAAfDwcDAQBBkN4BC7oCgAAAAAAIAAAAAAEAAAAgAAAAAAQBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAAAAAAKAAkADgAgACEAoAChAIAWgRYAIAsgKCAqIC8gMCBfIGAgADABMP/+AP8AQdTgAQstEAAAAP7//4f+//8HAAAAABAA/wP+//+H/v//B3xwAAAgcAAAkHAAAAEAMAA6AEGQ4QELEQQAMAA6AEEAWwBfAGAAYQB7AEGw4QELxAsBAwUBAQEBBQUFAQICAwUFAQEBAgIDAwUFAQUBEQAAADCaIAAAmjAAc4FaADAXYAAwB2wAs4FvAAAXcAAAB3wAAIF/AEAwgADDAZgAkIGYAEAGmQBAkJwAtIGkAEAupQAwAbwAQIa8AHCBvwAAAcAAMIHAAEAEwQAwAcMAQILDADCCxABAgsUAMAHHADCBxwAwAcgAQILIADCByQAwAcoAAIHKADABywAwgcsAQALMAAABzQAwAc4AMIHOAAABzwAwgc8AQAbQADAB0wBAgtMAMIHUAEAC1gAwAdcAQILXADCC2ABAhNkAMIHbAEAC3ABAAt4AAIHfAFAD4gBQg+MAUAPlAECQ5gAAge4AQBLvALQB+ABQg/gAQAL6ADAB+wAwgfsAQCj8ADABEAFAEhEBMQEdAUCCHQEwgR4BMQEfAQGCHwFAgiABMIEhATABIgEwgSIBQAojAQEBKAEBgSgBAQEpAQCBKQEAASoBAAIrAQCBLAEAgS0BAQEuAQABMAEBgTABAIExAQGBMgEBATMBAAE0AQCBNAEBATUBAYE1AQEBNgEAgTcBAYE4AQABOQEAgToBAYE+AQABQAEBAUEBAIFBAQGBQwEAAUQBAIFEAQACRQEAAUYBAAFJAQGBTgEBAU8Bc4GiAUAEuAFAArsBAIO9ATCBvwEwAcMBMAPEATABxgEwAscB0AHIATCRyAEwidEBAAHWAQCD1gHTAdgBAJHYAXMB4QEAieEBAAHmAQCC5gEwgecBcwHoAXOB6AFzgeoBcwHrAQCB6wFAGOwBcwH4AXOB+AEAAfkBAIH5AaAB+gFzgfoBQIL7ATCB/AFAAv0BMIP+ATAQAAIwIAgCACAYAgAQKAJAIjACQDZFAjABYAJAjmACAIFnAkBgaAIwppgCAKawArWBwwIxJlAIMYFjCDGBZggAK2gIAIN+CBFQ0AkQBvgJIAb8CXQBQA50gUAOdAFBDnSBQQ50AUIOdIFCDnQBQw6AgUMOgAFEDjArSA4wg14OAYG8DgGBvg4BAccOQH4AD0AYPw+1AUsPtoFLD7YBTA+2gUwPtwFND4CBTQ8wAU8PQGBQDwAIgA8wCIQPAAaIDzAGjA8ACJAPMAiUDwAImA8wCJwPAAagDzAGpA+wAagPAIGoD9MBqQ8AgakP0wGqDwCBqg/TAasPAIGrDzCBrA8wga0PMIGuDzCBrw8ACLAPMAi0DwACuA8ABLkPAAK7DwECvA8BAr0PAQK+D7cIwA9nCMQPuAjID2gIzA+4CNAPaAjUDwAC2A+5AdkPsYHZD7kB2g+xAdsP14HbDzAC3A8wAt0PYQHeD3MB3w+5AeEPsoHhD7oB4g+yAeMP2IHjDzAE5A9iAeYPAALoD9AB6Q/QgekPsAHrD9CB6w8wAuwPMALtDwEC8A/TAfEP04HxD7oB8g8BgfIPsAHzD9OB8w8wAvQPMAL1DzEB9g+6AfkPsoH5D7sB+g+yAfsP2YH7DzAC/A8wAv0PYgH+D6ABkxCgAZUQoIGVEDEBmRABAacQMRCwEAEQuBBAgsEQMRpbEgEaaBIxLwAWAS8YFkACMBYwATEW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DgE4EiHBFSHlGSGqHSGM0UFK4SHwAQ4AAAAAQWRsYW0sQWRsbQBBaG9tLEFob20AQW5hdG9saWFuX0hpZXJvZ2x5cGhzLEhsdXcAQXJhYmljLEFyYWIAQXJtZW5pYW4sQXJtbgBBdmVzdGFuLEF2c3QAQmFsaW5lc2UsQmFsaQBCYW11bSxCYW11AEJhc3NhX1ZhaCxCYXNzAEJhdGFrLEJhdGsAQmVuZ2FsaSxCZW5nAEJoYWlrc3VraSxCaGtzAEJvcG9tb2ZvLEJvcG8AQnJhaG1pLEJyYWgAQnJhaWxsZSxCcmFpAEJ1Z2luZXNlLEJ1Z2kAQnVoaWQsQnVoZABDYW5hZGlhbl9BYm9yaWdpbmFsLENhbnMAQ2FyaWFuLENhcmkAQ2F1Y2FzaWFuX0FsYmFuaWFuLEFnaGIAQ2hha21hLENha20AQ2hhbSxDaGFtAENoZXJva2VlLENoZXIAQ2hvcmFzbWlhbixDaHJzAENvbW1vbixaeXl5AENvcHRpYyxDb3B0LFFhYWMAQ3VuZWlmb3JtLFhzdXgAQ3lwcmlvdCxDcHJ0AEN5cmlsbGljLEN5cmwARGVzZXJldCxEc3J0AERldmFuYWdhcmksRGV2YQBEaXZlc19Ba3VydSxEaWFrAERvZ3JhLERvZ3IARHVwbG95YW4sRHVwbABFZ3lwdGlhbl9IaWVyb2dseXBocyxFZ3lwAEVsYmFzYW4sRWxiYQBFbHltYWljLEVseW0ARXRoaW9waWMsRXRoaQBHZW9yZ2lhbixHZW9yAEdsYWdvbGl0aWMsR2xhZwBHb3RoaWMsR290aABHcmFudGhhLEdyYW4AR3JlZWssR3JlawBHdWphcmF0aSxHdWpyAEd1bmphbGFfR29uZGksR29uZwBHdXJtdWtoaSxHdXJ1AEhhbixIYW5pAEhhbmd1bCxIYW5nAEhhbmlmaV9Sb2hpbmd5YSxSb2hnAEhhbnVub28sSGFubwBIYXRyYW4sSGF0cgBIZWJyZXcsSGVicgBIaXJhZ2FuYSxIaXJhAEltcGVyaWFsX0FyYW1haWMsQXJtaQBJbmhlcml0ZWQsWmluaCxRYWFpAEluc2NyaXB0aW9uYWxfUGFobGF2aSxQaGxpAEluc2NyaXB0aW9uYWxfUGFydGhpYW4sUHJ0aQBKYXZhbmVzZSxKYXZhAEthaXRoaSxLdGhpAEthbm5hZGEsS25kYQBLYXRha2FuYSxLYW5hAEtheWFoX0xpLEthbGkAS2hhcm9zaHRoaSxLaGFyAEtobWVyLEtobXIAS2hvamtpLEtob2oAS2hpdGFuX1NtYWxsX1NjcmlwdCxLaXRzAEtodWRhd2FkaSxTaW5kAExhbyxMYW9vAExhdGluLExhdG4ATGVwY2hhLExlcGMATGltYnUsTGltYgBMaW5lYXJfQSxMaW5hAExpbmVhcl9CLExpbmIATGlzdSxMaXN1AEx5Y2lhbixMeWNpAEx5ZGlhbixMeWRpAE1ha2FzYXIsTWFrYQBNYWhhamFuaSxNYWhqAE1hbGF5YWxhbSxNbHltAE1hbmRhaWMsTWFuZABNYW5pY2hhZWFuLE1hbmkATWFyY2hlbixNYXJjAE1hc2FyYW1fR29uZGksR29ubQBNZWRlZmFpZHJpbixNZWRmAE1lZXRlaV9NYXllayxNdGVpAE1lbmRlX0tpa2FrdWksTWVuZABNZXJvaXRpY19DdXJzaXZlLE1lcmMATWVyb2l0aWNfSGllcm9nbHlwaHMsTWVybwBNaWFvLFBscmQATW9kaSxNb2RpAE1vbmdvbGlhbixNb25nAE1ybyxNcm9vAE11bHRhbmksTXVsdABNeWFubWFyLE15bXIATmFiYXRhZWFuLE5iYXQATmFuZGluYWdhcmksTmFuZABOZXdfVGFpX0x1ZSxUYWx1AE5ld2EsTmV3YQBOa28sTmtvbwBOdXNodSxOc2h1AE55aWFrZW5nX1B1YWNodWVfSG1vbmcsSG1ucABPZ2hhbSxPZ2FtAE9sX0NoaWtpLE9sY2sAT2xkX0h1bmdhcmlhbixIdW5nAE9sZF9JdGFsaWMsSXRhbABPbGRfTm9ydGhfQXJhYmlhbixOYXJiAE9sZF9QZXJtaWMsUGVybQBPbGRfUGVyc2lhbixYcGVvAE9sZF9Tb2dkaWFuLFNvZ28AT2xkX1NvdXRoX0FyYWJpYW4sU2FyYgBPbGRfVHVya2ljLE9ya2gAT3JpeWEsT3J5YQBPc2FnZSxPc2dlAE9zbWFueWEsT3NtYQBQYWhhd2hfSG1vbmcsSG1uZwBQYWxteXJlbmUsUGFsbQBQYXVfQ2luX0hhdSxQYXVjAFBoYWdzX1BhLFBoYWcAUGhvZW5pY2lhbixQaG54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ZXR0ZXIATSxNYXJrLENvbWJpbmluZ19NYXJrAE4sTnVtYmVyAFMsU3ltYm9sAFAsUHVuY3R1YXRpb24scHVuY3QAWixTZXBhcmF0b3IAQyxPdGhlcgBBkLkCC7AIDgAAAD4AAADAAQAAAA4AAADwAAAAAH8AAACAAwEAADxBU0NJSV9IZXhfRGlnaXQsQUhleABCaWRpX0NvbnRyb2wsQmlkaV9DAERhc2gARGVwcmVjYXRlZCxEZXAARGlhY3JpdGljLERpYQBFeHRlbmRlcixFeHQASGV4X0RpZ2l0LEhleABJRFNfQmluYXJ5X09wZXJhdG9yLElEU0IASURTX1RyaW5hcnlfT3BlcmF0b3IsSURTVABJZGVvZ3JhcGhpYyxJZGVvAEpvaW5fQ29udHJvbCxKb2luX0MATG9naWNhbF9PcmRlcl9FeGNlcHRpb24sTE9FAE5vbmNoYXJhY3Rlcl9Db2RlX1BvaW50LE5DaGFyAFBhdHRlcm5fU3ludGF4LFBhdF9TeW4AUGF0dGVybl9XaGl0ZV9TcGFjZSxQYXRfV1MAUXVvdGF0aW9uX01hcmssUU1hcmsAUmFkaWNhbABSZWdpb25hbF9JbmRpY2F0b3IsUkkAU2VudGVuY2VfVGVybWluYWwsU1Rlcm0AU29mdF9Eb3R0ZWQsU0QAVGVybWluYWxfUHVuY3R1YXRpb24sVGVybQBVbmlmaWVkX0lkZW9ncmFwaCxVSWRlbwBWYXJpYXRpb25fU2VsZWN0b3IsVlMAV2hpdGVfU3BhY2Usc3BhY2UAQmlkaV9NaXJyb3JlZCxCaWRpX00ARW1vamkARW1vamlfQ29tcG9uZW50LEVDb21wAEVtb2ppX01vZGlmaWVyLEVNb2QARW1vamlfTW9kaWZpZXJfQmFzZSxFQmFzZQBFbW9qaV9QcmVzZW50YXRpb24sRVByZXMARXh0ZW5kZWRfUGljdG9ncmFwaGljLEV4dFBpY3QARGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCxESQBJRF9TdGFydCxJRFMAQ2FzZV9JZ25vcmFibGUsQ0kAQVNDSUkAQWxwaGFiZXRpYyxBbHBoYQBBbnkAQXNzaWduZWQAQ2FzZWQAQ2hhbmdlc19XaGVuX0Nhc2Vmb2xkZWQsQ1dDRgBDaGFuZ2VzX1doZW5f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dR+NlXUfDZx1H42idQMBqXWfCKp1gUCudZ+DrnWBQLB1n4ywdYHAtnUtA7d1n4i4dYHAvHWfA711gcC+dZ8Mv3WBQMV1LYPFdZ8Ix3WBQMt1n4PLdYFAzXWfjM11gcDTdS0D1HWfiNV1gcDZdZ8D2nWBwNt1nwzcdYFA4nUtg+J1nwjkdYFA6HWfg+h1gUDqdZ+M6nWBwPB1LQTxdR+F83UfBfZ1H4X4dR8F+3Ufhf11LQKAe61NgXsDQoh7gcCJey1FinsDBI17gYCQewPckXstBaB7rciie4NEqHutyKp7lwBAfCFFQHwlDUR8h4BKfBXBSnwXQUt8Hw1MfBeCUnyZgFN8l8BTfJeBWnyXAGR8LwGAfIGAgHwDFoR8wQSQfAMBlHwfBfx+rAEAvhDRAL6sRwm+EDkNviyHKb4sAi2+kDcuvpD/Sb4QvGm+AAAAAAAAAAAgAAAAYQACAAQABgC8AwgACgAMABUAlQClALkAwQDDAMcAywDRANcA3QDgAOYA+AAIAQoBcwAQARIBFAEgASwBRAFNAVMBYgFoAWoBdgGSAZQBqQG7AccB0QHVAbkC1wE7ANkB2wG3AOEB/AEMAhgCHQIjAicCowMzAj8CQgJLAk4CUQJdAmACaQJsAm8CdQJ4AoECigKcAp8CowKvArkCxQLJAs0C0QLVAucC7QLxAvUC+QL9AgUDCQMNAxMDFwMbAyMDJwMrAy8DNQM9A0EDSQNNA1EDCw9XA1sDXwNjA2cDawNvA3MDeQN9A4EDhQOJA40DkQOVA5kDnQOhA9wQpQPJA80D2QPdA+ED7wPxAz0ETwSZBPAEAgVKBWQFbAVwBXMFmgX6Bf4FBwYLBhQGGAYeBiIGKAaOBpQGmAaeBqIGqwasA/MGrQP2Bq4D+QavA/wGzAP/Bs0DAgfOAwUHCQcNBxEHhgMyBzUHuQM3BzsHiANTB4kDVgeQA2sHigN3B7ADiQeOA5kHnwejB4wDuAePA7sHtAC+B8AHwgcQIMsHLgDNB88HIADSB9YH2wffB+QH6gfwByAA9gcSIgEIBQgHCB0IJQgnCEMALQgwCJABNgg5CE4ARQhHCEwITghRCFoAqQNaAFMIVwhgCGkAYghlCG8IdAh6CH4IoghJAKQIpgipCFYAqwitCLAItAhYALYIuAi7CMAIwgjFCHYAxwjJCMwI0Ah4ANII1AjX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";if(!S(U)){var ia=U;U=b.locateFile?b.locateFile(ia,t):t+ia;}function ja(){var a=U;try{if(a==U&&v)return new Uint8Array(v);if(S(a))try{var c=ka(a.slice(37)),d=new Uint8Array(c.length);for(a=0;a<c.length;++a)d[a]=c.charCodeAt(a);var e=d;}catch(g){throw Error("Converting base64 string to bytes failed.");}else e=void 0;var f=e;if(f)return f;throw"both async and sync fetching of the wasm failed";}catch(g){x(g);}}function la(){return v||"function"!==typeof fetch?Promise.resolve().then(function(){return ja();}):fetch(U,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+U+"'";return a.arrayBuffer();}).catch(function(){return ja();});}function V(a){for(;0<a.length;){var c=a.shift();if("function"==typeof c)c(b);else{var d=c.B;"number"===typeof d?void 0===c.A?O.get(d)():O.get(d)(c.A):d(void 0===c.A?null:c.A);}}}function W(a){var c=K(a)+1,d=M(c);C(a,D,d,c);return d;}function ma(){}var na=[null,[],[]];function oa(){function a(k){return(k=k.toTimeString().match(/\(([A-Za-z ]+)\)$/))?k[1]:"GMT";}var c=new Date().getFullYear(),d=new Date(c,0,1),e=new Date(c,6,1);c=d.getTimezoneOffset();var f=e.getTimezoneOffset(),g=Math.max(c,f);N[pa()>>2]=60*g;N[qa()>>2]=Number(c!=f);d=a(d);e=a(e);d=L(d);e=L(e);f<c?(N[X()>>2]=d,N[X()+4>>2]=e):(N[X()>>2]=e,N[X()+4>>2]=d);}var ra;ma=(a,c,d)=>{a=H(a);c=null!==c?JSON.parse(H(c)):[];try{const e=b.externalCall(a,c);return e?W(e):null;}catch(e){return b.HEAPU8[d]=1,W(e.message);}};var ka="function"===typeof atob?atob:function(a){var c="",d=0;a=a.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));e=e<<2|f>>4;f=(f&15)<<4|g>>2;var m=(g&3)<<6|k;c+=String.fromCharCode(e);64!==g&&(c+=String.fromCharCode(f));64!==k&&(c+=String.fromCharCode(m));}while(d<a.length);return c;},sa={a:function(a,c,d,e){x("Assertion failed: "+H(a)+", at: "+[c?H(c):"unknown filename",d,e?H(e):"unknown function"]);},b:function(){x("");},g:ma,f:function(a,c){a=H(a);let d;try{d=window.JSON.parse(a);}catch(e){d=a;}0!==c?window.alert(a):window.console.log("DUMP",d);},e:function(a){var c=D.length;a>>>=0;if(2147483648<a)return!1;for(var d=1;4>=d;d*=2){var e=c*(1+.2/d);e=Math.min(e,a+100663296);e=Math.max(a,e);0<e%65536&&(e+=65536-e%65536);a:{try{y.grow(Math.min(2147483648,e)-ba.byteLength+65535>>>16);ca();var f=1;break a;}catch(g){}f=void 0;}if(f)return!0;}return!1;},d:function(a,c,d,e){for(var f=0,g=0;g<d;g++){var k=N[c>>2],m=N[c+4>>2];c+=8;for(var w=0;w<m;w++){var l=D[k+w],p=na[a];0===l||10===l?((1===a?aa:u)(J(p,0)),p.length=0):p.push(l);}f+=m;}N[e>>2]=f;return 0;},c:function(a){var c=Date.now();N[a>>2]=c/1E3|0;N[a+4>>2]=c%1E3*1E3|0;return 0;},h:function(a,c){ra||(ra=!0,oa());a=new Date(1E3*N[a>>2]);N[c>>2]=a.getSeconds();N[c+4>>2]=a.getMinutes();N[c+8>>2]=a.getHours();N[c+12>>2]=a.getDate();N[c+16>>2]=a.getMonth();N[c+20>>2]=a.getFullYear()-1900;N[c+24>>2]=a.getDay();var d=new Date(a.getFullYear(),0,1);N[c+28>>2]=(a.getTime()-d.getTime())/864E5|0;N[c+36>>2]=-(60*a.getTimezoneOffset());var e=new Date(a.getFullYear(),6,1).getTimezoneOffset();d=d.getTimezoneOffset();a=(e!=d&&a.getTimezoneOffset()==Math.min(d,e))|0;N[c+32>>2]=a;a=N[X()+(a?4:0)>>2];N[c+40>>2]=a;return c;},i:function(a){a=H(a);window.console.log(a);},j:function(a,c,d,e){a=H(a);c=H(c);d=H(d);d=`Quickjs -- ${a}: ${c}\n${d}`;0!==e?window.alert(d):window.console.error(d);}};(function(){function a(f){b.asm=f.exports;y=b.asm.k;ca();O=b.asm.t;ea.unshift(b.asm.l);P--;b.monitorRunDependencies&&b.monitorRunDependencies(P);0==P&&(null!==Q&&(clearInterval(Q),Q=null),R&&(f=R,R=null,f()));}function c(f){a(f.instance);}function d(f){return la().then(function(g){return WebAssembly.instantiate(g,e);}).then(function(g){return g;}).then(f,function(g){u("failed to asynchronously prepare wasm: "+g);x(g);});}var e={a:sa};P++;b.monitorRunDependencies&&b.monitorRunDependencies(P);if(b.instantiateWasm)try{return b.instantiateWasm(e,a);}catch(f){return u("Module.instantiateWasm callback failed with error: "+f),!1;}(function(){return v||"function"!==typeof WebAssembly.instantiateStreaming||S(U)||"function"!==typeof fetch?d(c):fetch(U,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(c,function(g){u("wasm streaming compile failed: "+g);u("falling back to ArrayBuffer instantiation");return d(c);});});})().catch(q);return{};})();b.___wasm_call_ctors=function(){return(b.___wasm_call_ctors=b.asm.l).apply(null,arguments);};b._evalInSandbox=function(){return(b._evalInSandbox=b.asm.m).apply(null,arguments);};b._nukeSandbox=function(){return(b._nukeSandbox=b.asm.n).apply(null,arguments);};b._init=function(){return(b._init=b.asm.o).apply(null,arguments);};b._commFun=function(){return(b._commFun=b.asm.p).apply(null,arguments);};b._dumpMemoryUse=function(){return(b._dumpMemoryUse=b.asm.q).apply(null,arguments);};var M=b._malloc=function(){return(M=b._malloc=b.asm.r).apply(null,arguments);};b._free=function(){return(b._free=b.asm.s).apply(null,arguments);};var X=b.__get_tzname=function(){return(X=b.__get_tzname=b.asm.u).apply(null,arguments);},qa=b.__get_daylight=function(){return(qa=b.__get_daylight=b.asm.v).apply(null,arguments);},pa=b.__get_timezone=function(){return(pa=b.__get_timezone=b.asm.w).apply(null,arguments);},F=b.stackSave=function(){return(F=b.stackSave=b.asm.x).apply(null,arguments);},G=b.stackRestore=function(){return(G=b.stackRestore=b.asm.y).apply(null,arguments);},B=b.stackAlloc=function(){return(B=b.stackAlloc=b.asm.z).apply(null,arguments);};b.ccall=A;b.cwrap=function(a,c,d,e){d=d||[];var f=d.every(function(g){return"number"===g;});return"string"!==c&&f&&!e?b["_"+a]:function(){return A(a,c,d,arguments,e);};};b.stringToNewUTF8=W;var Y;R=function ta(){Y||Z();Y||(R=ta);};function Z(){function a(){if(!Y&&(Y=!0,b.calledRun=!0,!z)){V(ea);n(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for("function"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var c=b.postRun.shift();fa.unshift(c);}V(fa);}}if(!(0<P)){if(b.preRun)for("function"==typeof b.preRun&&(b.preRun=[b.preRun]);b.preRun.length;)ha();V(da);0<P||(b.setStatus?(b.setStatus("Running..."),setTimeout(function(){setTimeout(function(){b.setStatus("");},1);a();},1)):a());}}b.run=Z;if(b.preInit)for("function"==typeof b.preInit&&(b.preInit=[b.preInit]);0<b.preInit.length;)b.preInit.pop()();Z();return Module.ready;};})();var _default=Module;exports["default"]=_default;
/***/ }),
/* 2 */
@@ -215,8 +215,8 @@ var _pdfSandboxExternal = __w_pdfjs_require__(2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-const pdfjsVersion = '2.12.313';
-const pdfjsBuild = 'a2ae56f39';
+const pdfjsVersion = '2.13.216';
+const pdfjsBuild = '399a0ec60';
class SandboxSupport extends _pdfSandboxExternal.SandboxSupportBase {
exportValueToSandbox(val) {
@@ -242,7 +242,7 @@ class Sandbox {
}
create(data) {
- const code = ['(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === \'object\' && typeof module === \'object\')\n\t\tmodule.exports = factory();\n\telse if(typeof define === \'function\' && define.amd)\n\t\tdefine("pdfjs-dist/build/pdf.scripting", [], factory);\n\telse if(typeof exports === \'object\')\n\t\texports["pdfjs-dist/build/pdf.scripting"] = factory();\n\telse\n\t\troot.pdfjsScripting = factory();\n})(this, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t"use strict";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.initSandbox = initSandbox;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _field = __w_pdfjs_require__(3);\n\nvar _aform = __w_pdfjs_require__(8);\n\nvar _app = __w_pdfjs_require__(9);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _console = __w_pdfjs_require__(13);\n\nvar _doc = __w_pdfjs_require__(14);\n\nvar _proxy = __w_pdfjs_require__(16);\n\nvar _util = __w_pdfjs_require__(17);\n\nfunction initSandbox(params) {\n delete globalThis.pdfjsScripting;\n const externalCall = globalThis.callExternalFunction;\n delete globalThis.callExternalFunction;\n\n const globalEval = code => globalThis.eval(code);\n\n const send = data => externalCall("send", [data]);\n\n const proxyHandler = new _proxy.ProxyHandler();\n const {\n data\n } = params;\n const doc = new _doc.Doc({\n send,\n globalEval,\n ...data.docInfo\n });\n const _document = {\n obj: doc,\n wrapped: new Proxy(doc, proxyHandler)\n };\n const app = new _app.App({\n send,\n globalEval,\n externalCall,\n _document,\n calculationOrder: data.calculationOrder,\n proxyHandler,\n ...data.appInfo\n });\n const util = new _util.Util({\n externalCall\n });\n const appObjects = app._objects;\n\n if (data.objects) {\n const annotations = [];\n\n for (const [name, objs] of Object.entries(data.objects)) {\n annotations.length = 0;\n let container = null;\n\n for (const obj of objs) {\n if (obj.type !== "") {\n annotations.push(obj);\n } else {\n container = obj;\n }\n }\n\n let obj = container;\n\n if (annotations.length > 0) {\n obj = annotations[0];\n obj.send = send;\n }\n\n obj.globalEval = globalEval;\n obj.doc = _document;\n obj.fieldPath = name;\n obj.appObjects = appObjects;\n let field;\n\n switch (obj.type) {\n case "radiobutton":\n {\n const otherButtons = annotations.slice(1);\n field = new _field.RadioButtonField(otherButtons, obj);\n break;\n }\n\n case "checkbox":\n {\n const otherButtons = annotations.slice(1);\n field = new _field.CheckboxField(otherButtons, obj);\n break;\n }\n\n case "text":\n if (annotations.length <= 1) {\n field = new _field.Field(obj);\n break;\n }\n\n obj.siblings = annotations.map(x => x.id).slice(1);\n field = new _field.Field(obj);\n break;\n\n default:\n field = new _field.Field(obj);\n }\n\n const wrapped = new Proxy(field, proxyHandler);\n\n doc._addField(name, wrapped);\n\n const _object = {\n obj: field,\n wrapped\n };\n\n for (const object of objs) {\n appObjects[object.id] = _object;\n }\n\n if (container) {\n appObjects[container.id] = _object;\n }\n }\n }\n\n const color = new _color.Color();\n globalThis.event = null;\n globalThis.global = Object.create(null);\n globalThis.app = new Proxy(app, proxyHandler);\n globalThis.color = new Proxy(color, proxyHandler);\n globalThis.console = new Proxy(new _console.Console({\n send\n }), proxyHandler);\n globalThis.util = new Proxy(util, proxyHandler);\n globalThis.border = _constants.Border;\n globalThis.cursor = _constants.Cursor;\n globalThis.display = _constants.Display;\n globalThis.font = _constants.Font;\n globalThis.highlight = _constants.Highlight;\n globalThis.position = _constants.Position;\n globalThis.scaleHow = _constants.ScaleHow;\n globalThis.scaleWhen = _constants.ScaleWhen;\n globalThis.style = _constants.Style;\n globalThis.trans = _constants.Trans;\n globalThis.zoomtype = _constants.ZoomType;\n globalThis.ADBE = {\n Reader_Value_Asked: true,\n Viewer_Value_Asked: true\n };\n const aform = new _aform.AForm(doc, app, util, color);\n\n for (const name of Object.getOwnPropertyNames(_aform.AForm.prototype)) {\n if (name !== "constructor" && !name.startsWith("_")) {\n globalThis[name] = aform[name].bind(aform);\n }\n }\n\n for (const [name, value] of Object.entries(_constants.GlobalConstants)) {\n Object.defineProperty(globalThis, name, {\n value,\n writable: false\n });\n }\n\n Object.defineProperties(globalThis, {\n ColorConvert: {\n value: color.convert.bind(color),\n writable: true\n },\n ColorEqual: {\n value: color.equal.bind(color),\n writable: true\n }\n });\n const properties = Object.create(null);\n\n for (const name of Object.getOwnPropertyNames(_doc.Doc.prototype)) {\n if (name === "constructor" || name.startsWith("_")) {\n continue;\n }\n\n const descriptor = Object.getOwnPropertyDescriptor(_doc.Doc.prototype, name);\n\n if (descriptor.get) {\n properties[name] = {\n get: descriptor.get.bind(doc),\n set: descriptor.set.bind(doc)\n };\n } else {\n properties[name] = {\n value: _doc.Doc.prototype[name].bind(doc)\n };\n }\n }\n\n Object.defineProperties(globalThis, properties);\n const functions = {\n dispatchEvent: app._dispatchEvent.bind(app),\n timeoutCb: app._evalCallback.bind(app)\n };\n return (name, args) => {\n try {\n functions[name](args);\n } catch (error) {\n const value = `${error.toString()}\\n${error.stack}`;\n send({\n command: "error",\n value\n });\n }\n };\n}\n\n/***/ }),\n/* 2 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ZoomType = exports.Trans = exports.Style = exports.ScaleWhen = exports.ScaleHow = exports.Position = exports.Highlight = exports.GlobalConstants = exports.Font = exports.Display = exports.Cursor = exports.Border = void 0;\nconst Border = Object.freeze({\n s: "solid",\n d: "dashed",\n b: "beveled",\n i: "inset",\n u: "underline"\n});\nexports.Border = Border;\nconst Cursor = Object.freeze({\n visible: 0,\n hidden: 1,\n delay: 2\n});\nexports.Cursor = Cursor;\nconst Display = Object.freeze({\n visible: 0,\n hidden: 1,\n noPrint: 2,\n noView: 3\n});\nexports.Display = Display;\nconst Font = Object.freeze({\n Times: "Times-Roman",\n TimesB: "Times-Bold",\n TimesI: "Times-Italic",\n TimesBI: "Times-BoldItalic",\n Helv: "Helvetica",\n HelvB: "Helvetica-Bold",\n HelvI: "Helvetica-Oblique",\n HelvBI: "Helvetica-BoldOblique",\n Cour: "Courier",\n CourB: "Courier-Bold",\n CourI: "Courier-Oblique",\n CourBI: "Courier-BoldOblique",\n Symbol: "Symbol",\n ZapfD: "ZapfDingbats",\n KaGo: "HeiseiKakuGo-W5-UniJIS-UCS2-H",\n KaMi: "HeiseiMin-W3-UniJIS-UCS2-H"\n});\nexports.Font = Font;\nconst Highlight = Object.freeze({\n n: "none",\n i: "invert",\n p: "push",\n o: "outline"\n});\nexports.Highlight = Highlight;\nconst Position = Object.freeze({\n textOnly: 0,\n iconOnly: 1,\n iconTextV: 2,\n textIconV: 3,\n iconTextH: 4,\n textIconH: 5,\n overlay: 6\n});\nexports.Position = Position;\nconst ScaleHow = Object.freeze({\n proportional: 0,\n anamorphic: 1\n});\nexports.ScaleHow = ScaleHow;\nconst ScaleWhen = Object.freeze({\n always: 0,\n never: 1,\n tooBig: 2,\n tooSmall: 3\n});\nexports.ScaleWhen = ScaleWhen;\nconst Style = Object.freeze({\n ch: "check",\n cr: "cross",\n di: "diamond",\n ci: "circle",\n st: "star",\n sq: "square"\n});\nexports.Style = Style;\nconst Trans = Object.freeze({\n blindsH: "BlindsHorizontal",\n blindsV: "BlindsVertical",\n boxI: "BoxIn",\n boxO: "BoxOut",\n dissolve: "Dissolve",\n glitterD: "GlitterDown",\n glitterR: "GlitterRight",\n glitterRD: "GlitterRightDown",\n random: "Random",\n replace: "Replace",\n splitHI: "SplitHorizontalIn",\n splitHO: "SplitHorizontalOut",\n splitVI: "SplitVerticalIn",\n splitVO: "SplitVerticalOut",\n wipeD: "WipeDown",\n wipeL: "WipeLeft",\n wipeR: "WipeRight",\n wipeU: "WipeUp"\n});\nexports.Trans = Trans;\nconst ZoomType = Object.freeze({\n none: "NoVary",\n fitP: "FitPage",\n fitW: "FitWidth",\n fitH: "FitHeight",\n fitV: "FitVisibleWidth",\n pref: "Preferred",\n refW: "ReflowWidth"\n});\nexports.ZoomType = ZoomType;\nconst GlobalConstants = Object.freeze({\n IDS_GREATER_THAN: "Invalid value: must be greater than or equal to % s.",\n IDS_GT_AND_LT: "Invalid value: must be greater than or equal to % s " + "and less than or equal to % s.",\n IDS_LESS_THAN: "Invalid value: must be less than or equal to % s.",\n IDS_INVALID_MONTH: "** Invalid **",\n IDS_INVALID_DATE: "Invalid date / time: please ensure that the date / time exists.Field",\n IDS_INVALID_DATE2: " should match format ",\n IDS_INVALID_VALUE: "The value entered does not match the format of the field",\n IDS_AM: "am",\n IDS_PM: "pm",\n IDS_MONTH_INFO: "January[1] February[2] March[3] April[4] May[5] " + "June[6] July[7] August[8] September[9] October[10] " + "November[11] December[12] Sept[9] Jan[1] Feb[2] Mar[3] " + "Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] Nov[11] Dec[12]",\n IDS_STARTUP_CONSOLE_MSG: "** ^ _ ^ **",\n RE_NUMBER_ENTRY_DOT_SEP: ["[+-]?\\\\d*\\\\.?\\\\d*"],\n RE_NUMBER_COMMIT_DOT_SEP: ["[+-]?\\\\d+(\\\\.\\\\d+)?", "[+-]?\\\\.\\\\d+", "[+-]?\\\\d+\\\\."],\n RE_NUMBER_ENTRY_COMMA_SEP: ["[+-]?\\\\d*,?\\\\d*"],\n RE_NUMBER_COMMIT_COMMA_SEP: ["[+-]?\\\\d+([.,]\\\\d+)?", "[+-]?[.,]\\\\d+", "[+-]?\\\\d+[.,]"],\n RE_ZIP_ENTRY: ["\\\\d{0,5}"],\n RE_ZIP_COMMIT: ["\\\\d{5}"],\n RE_ZIP4_ENTRY: ["\\\\d{0,5}(\\\\.|[- ])?\\\\d{0,4}"],\n RE_ZIP4_COMMIT: ["\\\\d{5}(\\\\.|[- ])?\\\\d{4}"],\n RE_PHONE_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}", "\\\\(\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "011(\\\\.|[- \\\\d])*"],\n RE_PHONE_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\d{3}(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\(\\\\d{3}\\\\)(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "011(\\\\.|[- \\\\d])*"],\n RE_SSN_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,2}(\\\\.|[- ])?\\\\d{0,4}"],\n RE_SSN_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{2}(\\\\.|[- ])?\\\\d{4}"]\n});\nexports.GlobalConstants = GlobalConstants;\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.RadioButtonField = exports.Field = exports.CheckboxField = void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Field extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this.alignment = data.alignment || "left";\n this.borderStyle = data.borderStyle || "";\n this.buttonAlignX = data.buttonAlignX || 50;\n this.buttonAlignY = data.buttonAlignY || 50;\n this.buttonFitBounds = data.buttonFitBounds;\n this.buttonPosition = data.buttonPosition;\n this.buttonScaleHow = data.buttonScaleHow;\n this.ButtonScaleWhen = data.buttonScaleWhen;\n this.calcOrderIndex = data.calcOrderIndex;\n this.charLimit = data.charLimit;\n this.comb = data.comb;\n this.commitOnSelChange = data.commitOnSelChange;\n this.currentValueIndices = data.currentValueIndices;\n this.defaultStyle = data.defaultStyle;\n this.defaultValue = data.defaultValue;\n this.doNotScroll = data.doNotScroll;\n this.doNotSpellCheck = data.doNotSpellCheck;\n this.delay = data.delay;\n this.display = data.display;\n this.doc = data.doc.wrapped;\n this.editable = data.editable;\n this.exportValues = data.exportValues;\n this.fileSelect = data.fileSelect;\n this.hidden = data.hidden;\n this.highlight = data.highlight;\n this.lineWidth = data.lineWidth;\n this.multiline = data.multiline;\n this.multipleSelection = !!data.multipleSelection;\n this.name = data.name;\n this.password = data.password;\n this.print = data.print;\n this.radiosInUnison = data.radiosInUnison;\n this.readonly = data.readonly;\n this.rect = data.rect;\n this.required = data.required;\n this.richText = data.richText;\n this.richValue = data.richValue;\n this.rotation = data.rotation;\n this.style = data.style;\n this.submitName = data.submitName;\n this.textFont = data.textFont;\n this.textSize = data.textSize;\n this.type = data.type;\n this.userName = data.userName;\n this._actions = (0, _common.createActionsMap)(data.actions);\n this._browseForFileToSubmit = data.browseForFileToSubmit || null;\n this._buttonCaption = null;\n this._buttonIcon = null;\n this._children = null;\n this._currentValueIndices = data.currentValueIndices || 0;\n this._document = data.doc;\n this._fieldPath = data.fieldPath;\n this._fillColor = data.fillColor || ["T"];\n this._isChoice = Array.isArray(data.items);\n this._items = data.items || [];\n this._page = data.page || 0;\n this._strokeColor = data.strokeColor || ["G", 0];\n this._textColor = data.textColor || ["G", 0];\n this._value = data.value || "";\n this._kidIds = data.kidIds || null;\n this._fieldType = (0, _common.getFieldType)(this._actions);\n this._siblings = data.siblings || null;\n this._globalEval = data.globalEval;\n this._appObjects = data.appObjects;\n this.valueAsString = data.valueAsString || this._value;\n }\n\n get currentValueIndices() {\n if (!this._isChoice) {\n return 0;\n }\n\n return this._currentValueIndices;\n }\n\n set currentValueIndices(indices) {\n if (!this._isChoice) {\n return;\n }\n\n if (!Array.isArray(indices)) {\n indices = [indices];\n }\n\n if (!indices.every(i => typeof i === "number" && Number.isInteger(i) && i >= 0 && i < this.numItems)) {\n return;\n }\n\n indices.sort();\n\n if (this.multipleSelection) {\n this._currentValueIndices = indices;\n this._value = [];\n indices.forEach(i => {\n this._value.push(this._items[i].displayValue);\n });\n } else {\n if (indices.length > 0) {\n indices = indices.splice(1, indices.length - 1);\n this._currentValueIndices = indices[0];\n this._value = this._items[this._currentValueIndices];\n }\n }\n\n this._send({\n id: this._id,\n indices\n });\n }\n\n get fillColor() {\n return this._fillColor;\n }\n\n set fillColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._fillColor = color;\n }\n }\n\n get bgColor() {\n return this.fillColor;\n }\n\n set bgColor(color) {\n this.fillColor = color;\n }\n\n get numItems() {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n return this._items.length;\n }\n\n set numItems(_) {\n throw new Error("field.numItems is read-only");\n }\n\n get strokeColor() {\n return this._strokeColor;\n }\n\n set strokeColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._strokeColor = color;\n }\n }\n\n get borderColor() {\n return this.strokeColor;\n }\n\n set borderColor(color) {\n this.strokeColor = color;\n }\n\n get page() {\n return this._page;\n }\n\n set page(_) {\n throw new Error("field.page is read-only");\n }\n\n get textColor() {\n return this._textColor;\n }\n\n set textColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._textColor = color;\n }\n }\n\n get fgColor() {\n return this.textColor;\n }\n\n set fgColor(color) {\n this.textColor = color;\n }\n\n get value() {\n return this._value;\n }\n\n set value(value) {\n if (value === "") {\n this._value = "";\n } else if (typeof value === "string") {\n switch (this._fieldType) {\n case _common.FieldType.number:\n case _common.FieldType.percent:\n value = parseFloat(value);\n\n if (!isNaN(value)) {\n this._value = value;\n }\n\n break;\n\n default:\n this._value = value;\n }\n } else {\n this._value = value;\n }\n\n if (this._isChoice) {\n if (this.multipleSelection) {\n const values = new Set(value);\n this._currentValueIndices.length = 0;\n\n this._items.forEach(({\n displayValue\n }, i) => {\n if (values.has(displayValue)) {\n this._currentValueIndices.push(i);\n }\n });\n } else {\n this._currentValueIndices = this._items.findIndex(({\n displayValue\n }) => value === displayValue);\n }\n }\n }\n\n get valueAsString() {\n if (this._valueAsString === undefined) {\n this._valueAsString = this._value ? this._value.toString() : "";\n }\n\n return this._valueAsString;\n }\n\n set valueAsString(val) {\n this._valueAsString = val ? val.toString() : "";\n }\n\n browseForFileToSubmit() {\n if (this._browseForFileToSubmit) {\n this._browseForFileToSubmit();\n }\n }\n\n buttonGetCaption(nFace = 0) {\n if (this._buttonCaption) {\n return this._buttonCaption[nFace];\n }\n\n return "";\n }\n\n buttonGetIcon(nFace = 0) {\n if (this._buttonIcon) {\n return this._buttonIcon[nFace];\n }\n\n return null;\n }\n\n buttonImportIcon(cPath = null, nPave = 0) {}\n\n buttonSetCaption(cCaption, nFace = 0) {\n if (!this._buttonCaption) {\n this._buttonCaption = ["", "", ""];\n }\n\n this._buttonCaption[nFace] = cCaption;\n }\n\n buttonSetIcon(oIcon, nFace = 0) {\n if (!this._buttonIcon) {\n this._buttonIcon = [null, null, null];\n }\n\n this._buttonIcon[nFace] = oIcon;\n }\n\n checkThisBox(nWidget, bCheckIt = true) {}\n\n clearItems() {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n this._items = [];\n\n this._send({\n id: this._id,\n clear: null\n });\n }\n\n deleteItemAt(nIdx = null) {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n if (!this.numItems) {\n return;\n }\n\n if (nIdx === null) {\n nIdx = Array.isArray(this._currentValueIndices) ? this._currentValueIndices[0] : this._currentValueIndices;\n nIdx = nIdx || 0;\n }\n\n if (nIdx < 0 || nIdx >= this.numItems) {\n nIdx = this.numItems - 1;\n }\n\n this._items.splice(nIdx, 1);\n\n if (Array.isArray(this._currentValueIndices)) {\n let index = this._currentValueIndices.findIndex(i => i >= nIdx);\n\n if (index !== -1) {\n if (this._currentValueIndices[index] === nIdx) {\n this._currentValueIndices.splice(index, 1);\n }\n\n for (const ii = this._currentValueIndices.length; index < ii; index++) {\n --this._currentValueIndices[index];\n }\n }\n } else {\n if (this._currentValueIndices === nIdx) {\n this._currentValueIndices = this.numItems > 0 ? 0 : -1;\n } else if (this._currentValueIndices > nIdx) {\n --this._currentValueIndices;\n }\n }\n\n this._send({\n id: this._id,\n remove: nIdx\n });\n }\n\n getItemAt(nIdx = -1, bExportValue = false) {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n if (nIdx < 0 || nIdx >= this.numItems) {\n nIdx = this.numItems - 1;\n }\n\n const item = this._items[nIdx];\n return bExportValue ? item.exportValue : item.displayValue;\n }\n\n getArray() {\n if (this._kidIds) {\n return this._kidIds.map(id => this._appObjects[id].wrapped);\n }\n\n if (this._children === null) {\n this._children = this._document.obj._getChildren(this._fieldPath);\n }\n\n return this._children;\n }\n\n getLock() {\n return undefined;\n }\n\n isBoxChecked(nWidget) {\n return false;\n }\n\n isDefaultChecked(nWidget) {\n return false;\n }\n\n insertItemAt(cName, cExport = undefined, nIdx = 0) {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n if (!cName) {\n return;\n }\n\n if (nIdx < 0 || nIdx > this.numItems) {\n nIdx = this.numItems;\n }\n\n if (this._items.some(({\n displayValue\n }) => displayValue === cName)) {\n return;\n }\n\n if (cExport === undefined) {\n cExport = cName;\n }\n\n const data = {\n displayValue: cName,\n exportValue: cExport\n };\n\n this._items.splice(nIdx, 0, data);\n\n if (Array.isArray(this._currentValueIndices)) {\n let index = this._currentValueIndices.findIndex(i => i >= nIdx);\n\n if (index !== -1) {\n for (const ii = this._currentValueIndices.length; index < ii; index++) {\n ++this._currentValueIndices[index];\n }\n }\n } else if (this._currentValueIndices >= nIdx) {\n ++this._currentValueIndices;\n }\n\n this._send({\n id: this._id,\n insert: {\n index: nIdx,\n ...data\n }\n });\n }\n\n setAction(cTrigger, cScript) {\n if (typeof cTrigger !== "string" || typeof cScript !== "string") {\n return;\n }\n\n if (!(cTrigger in this._actions)) {\n this._actions[cTrigger] = [];\n }\n\n this._actions[cTrigger].push(cScript);\n }\n\n setFocus() {\n this._send({\n id: this._id,\n focus: true\n });\n }\n\n setItems(oArray) {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n this._items.length = 0;\n\n for (const element of oArray) {\n let displayValue, exportValue;\n\n if (Array.isArray(element)) {\n displayValue = element[0]?.toString() || "";\n exportValue = element[1]?.toString() || "";\n } else {\n displayValue = exportValue = element?.toString() || "";\n }\n\n this._items.push({\n displayValue,\n exportValue\n });\n }\n\n this._currentValueIndices = 0;\n\n this._send({\n id: this._id,\n items: this._items\n });\n }\n\n setLock() {}\n\n signatureGetModifications() {}\n\n signatureGetSeedValue() {}\n\n signatureInfo() {}\n\n signatureSetSeedValue() {}\n\n signatureSign() {}\n\n signatureValidate() {}\n\n _isButton() {\n return false;\n }\n\n _reset() {\n this.value = this.valueAsString = this.defaultValue;\n }\n\n _runActions(event) {\n const eventName = event.name;\n\n if (!this._actions.has(eventName)) {\n return false;\n }\n\n const actions = this._actions.get(eventName);\n\n try {\n for (const action of actions) {\n this._globalEval(action);\n }\n } catch (error) {\n event.rc = false;\n throw error;\n }\n\n return true;\n }\n\n}\n\nexports.Field = Field;\n\nclass RadioButtonField extends Field {\n constructor(otherButtons, data) {\n super(data);\n this.exportValues = [this.exportValues];\n this._radioIds = [this._id];\n this._radioActions = [this._actions];\n\n for (const radioData of otherButtons) {\n this.exportValues.push(radioData.exportValues);\n\n this._radioIds.push(radioData.id);\n\n this._radioActions.push((0, _common.createActionsMap)(radioData.actions));\n\n if (this._value === radioData.exportValues) {\n this._id = radioData.id;\n }\n }\n }\n\n get value() {\n return this._value;\n }\n\n set value(value) {\n if (value === null || value === undefined) {\n this._value = "";\n }\n\n const i = this.exportValues.indexOf(value);\n\n if (0 <= i && i < this._radioIds.length) {\n this._id = this._radioIds[i];\n this._value = value;\n } else if (value === "Off" && this._radioIds.length === 2) {\n const nextI = (1 + this._radioIds.indexOf(this._id)) % 2;\n this._id = this._radioIds[nextI];\n this._value = this.exportValues[nextI];\n }\n }\n\n checkThisBox(nWidget, bCheckIt = true) {\n if (nWidget < 0 || nWidget >= this._radioIds.length || !bCheckIt) {\n return;\n }\n\n this._id = this._radioIds[nWidget];\n this._value = this.exportValues[nWidget];\n\n this._send({\n id: this._id,\n value: this._value\n });\n }\n\n isBoxChecked(nWidget) {\n return nWidget >= 0 && nWidget < this._radioIds.length && this._id === this._radioIds[nWidget];\n }\n\n isDefaultChecked(nWidget) {\n return nWidget >= 0 && nWidget < this.exportValues.length && this.defaultValue === this.exportValues[nWidget];\n }\n\n _getExportValue(state) {\n const i = this._radioIds.indexOf(this._id);\n\n return this.exportValues[i];\n }\n\n _runActions(event) {\n const i = this._radioIds.indexOf(this._id);\n\n this._actions = this._radioActions[i];\n return super._runActions(event);\n }\n\n _isButton() {\n return true;\n }\n\n}\n\nexports.RadioButtonField = RadioButtonField;\n\nclass CheckboxField extends RadioButtonField {\n get value() {\n return this._value;\n }\n\n set value(value) {\n if (!value || value === "Off") {\n this._value = "Off";\n } else {\n super.value = value;\n }\n }\n\n _getExportValue(state) {\n return state ? super._getExportValue(state) : "Off";\n }\n\n isBoxChecked(nWidget) {\n if (this._value === "Off") {\n return false;\n }\n\n return super.isBoxChecked(nWidget);\n }\n\n isDefaultChecked(nWidget) {\n if (this.defaultValue === "Off") {\n return this._value === "Off";\n }\n\n return super.isDefaultChecked(nWidget);\n }\n\n checkThisBox(nWidget, bCheckIt = true) {\n if (nWidget < 0 || nWidget >= this._radioIds.length) {\n return;\n }\n\n this._id = this._radioIds[nWidget];\n this._value = bCheckIt ? this.exportValues[nWidget] : "Off";\n\n this._send({\n id: this._id,\n value: this._value\n });\n }\n\n}\n\nexports.CheckboxField = CheckboxField;\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.FieldType = void 0;\nexports.createActionsMap = createActionsMap;\nexports.getFieldType = getFieldType;\nconst FieldType = {\n none: 0,\n number: 1,\n percent: 2,\n date: 3,\n time: 4\n};\nexports.FieldType = FieldType;\n\nfunction createActionsMap(actions) {\n const actionsMap = new Map();\n\n if (actions) {\n for (const [eventType, actionsForEvent] of Object.entries(actions)) {\n actionsMap.set(eventType, actionsForEvent);\n }\n }\n\n return actionsMap;\n}\n\nfunction getFieldType(actions) {\n let format = actions.get("Format");\n\n if (!format) {\n return FieldType.none;\n }\n\n format = format[0];\n format = format.trim();\n\n if (format.startsWith("AFNumber_")) {\n return FieldType.number;\n }\n\n if (format.startsWith("AFPercent_")) {\n return FieldType.percent;\n }\n\n if (format.startsWith("AFDate_")) {\n return FieldType.date;\n }\n\n if (format.startsWith("AFTime__")) {\n return FieldType.time;\n }\n\n return FieldType.none;\n}\n\n/***/ }),\n/* 5 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Color = void 0;\n\nvar _scripting_utils = __w_pdfjs_require__(6);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Color extends _pdf_object.PDFObject {\n constructor() {\n super({});\n this.transparent = ["T"];\n this.black = ["G", 0];\n this.white = ["G", 1];\n this.red = ["RGB", 1, 0, 0];\n this.green = ["RGB", 0, 1, 0];\n this.blue = ["RGB", 0, 0, 1];\n this.cyan = ["CMYK", 1, 0, 0, 0];\n this.magenta = ["CMYK", 0, 1, 0, 0];\n this.yellow = ["CMYK", 0, 0, 1, 0];\n this.dkGray = ["G", 0.25];\n this.gray = ["G", 0.5];\n this.ltGray = ["G", 0.75];\n }\n\n static _isValidSpace(cColorSpace) {\n return typeof cColorSpace === "string" && (cColorSpace === "T" || cColorSpace === "G" || cColorSpace === "RGB" || cColorSpace === "CMYK");\n }\n\n static _isValidColor(colorArray) {\n if (!Array.isArray(colorArray) || colorArray.length === 0) {\n return false;\n }\n\n const space = colorArray[0];\n\n if (!Color._isValidSpace(space)) {\n return false;\n }\n\n switch (space) {\n case "T":\n if (colorArray.length !== 1) {\n return false;\n }\n\n break;\n\n case "G":\n if (colorArray.length !== 2) {\n return false;\n }\n\n break;\n\n case "RGB":\n if (colorArray.length !== 4) {\n return false;\n }\n\n break;\n\n case "CMYK":\n if (colorArray.length !== 5) {\n return false;\n }\n\n break;\n\n default:\n return false;\n }\n\n return colorArray.slice(1).every(c => typeof c === "number" && c >= 0 && c <= 1);\n }\n\n static _getCorrectColor(colorArray) {\n return Color._isValidColor(colorArray) ? colorArray : ["G", 0];\n }\n\n convert(colorArray, cColorSpace) {\n if (!Color._isValidSpace(cColorSpace)) {\n return this.black;\n }\n\n if (cColorSpace === "T") {\n return ["T"];\n }\n\n colorArray = Color._getCorrectColor(colorArray);\n\n if (colorArray[0] === cColorSpace) {\n return colorArray;\n }\n\n if (colorArray[0] === "T") {\n return this.convert(this.black, cColorSpace);\n }\n\n return _scripting_utils.ColorConverters[`${colorArray[0]}_${cColorSpace}`](colorArray.slice(1));\n }\n\n equal(colorArray1, colorArray2) {\n colorArray1 = Color._getCorrectColor(colorArray1);\n colorArray2 = Color._getCorrectColor(colorArray2);\n\n if (colorArray1[0] === "T" || colorArray2[0] === "T") {\n return colorArray1[0] === "T" && colorArray2[0] === "T";\n }\n\n if (colorArray1[0] !== colorArray2[0]) {\n colorArray2 = this.convert(colorArray2, colorArray1[0]);\n }\n\n return colorArray1.slice(1).every((c, i) => c === colorArray2[i + 1]);\n }\n\n}\n\nexports.Color = Color;\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ColorConverters = void 0;\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0");\n}\n\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n\n static G_CMYK([g]) {\n return ["CMYK", 0, 0, 0, 1 - g];\n }\n\n static G_RGB([g]) {\n return ["RGB", g, g, g];\n }\n\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G([r, g, b]) {\n return ["G", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_HTML([r, g, b]) {\n const R = makeColorComp(r);\n const G = makeColorComp(g);\n const B = makeColorComp(b);\n return `#${R}${G}${B}`;\n }\n\n static T_HTML() {\n return "#00000000";\n }\n\n static CMYK_RGB([c, y, m, k]) {\n return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n\n static CMYK_HTML(components) {\n return this.RGB_HTML(this.CMYK_RGB(components));\n }\n\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return ["CMYK", c, m, y, k];\n }\n\n}\n\nexports.ColorConverters = ColorConverters;\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.PDFObject = void 0;\n\nclass PDFObject {\n constructor(data) {\n this._expandos = Object.create(null);\n this._send = data.send || null;\n this._id = data.id || null;\n }\n\n}\n\nexports.PDFObject = PDFObject;\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.AForm = void 0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nclass AForm {\n constructor(document, app, util, color) {\n this._document = document;\n this._app = app;\n this._util = util;\n this._color = color;\n this._dateFormats = ["m/d", "m/d/yy", "mm/dd/yy", "mm/yy", "d-mmm", "d-mmm-yy", "dd-mmm-yy", "yy-mm-dd", "mmm-yy", "mmmm-yy", "mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yy HH:MM"];\n this._timeFormats = ["HH:MM", "h:MM tt", "HH:MM:ss", "h:MM:ss tt"];\n this._emailRegex = new RegExp("^[a-zA-Z0-9.!#$%&\'*+\\\\/=?^_`{|}~-]+" + "@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?" + "(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$");\n }\n\n _mkTargetName(event) {\n return event.target ? `[ ${event.target.name} ]` : "";\n }\n\n _parseDate(cFormat, cDate) {\n const ddate = Date.parse(cDate);\n\n if (isNaN(ddate)) {\n try {\n return this._util.scand(cFormat, cDate);\n } catch (error) {\n return null;\n }\n } else {\n return new Date(ddate);\n }\n }\n\n AFMergeChange(event = globalThis.event) {\n if (event.willCommit) {\n return event.value.toString();\n }\n\n return this._app._eventDispatcher.mergeChange(event);\n }\n\n AFParseDateEx(cString, cOrder) {\n return this._parseDate(cOrder, cString);\n }\n\n AFExtractNums(str) {\n if (typeof str === "number") {\n return [str];\n }\n\n if (!str || typeof str !== "string") {\n return null;\n }\n\n const first = str.charAt(0);\n\n if (first === "." || first === ",") {\n str = `0${str}`;\n }\n\n const numbers = str.match(/(\\d+)/g);\n\n if (numbers.length === 0) {\n return null;\n }\n\n return numbers;\n }\n\n AFMakeNumber(str) {\n if (typeof str === "number") {\n return str;\n }\n\n if (typeof str !== "string") {\n return null;\n }\n\n str = str.trim().replace(",", ".");\n const number = parseFloat(str);\n\n if (isNaN(number) || !isFinite(number)) {\n return null;\n }\n\n return number;\n }\n\n AFMakeArrayFromList(string) {\n if (typeof string === "string") {\n return string.split(/, ?/g);\n }\n\n return string;\n }\n\n AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n let value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n event.value = "";\n return;\n }\n\n const sign = Math.sign(value);\n const buf = [];\n let hasParen = false;\n\n if (sign === -1 && bCurrencyPrepend && negStyle === 0) {\n buf.push("-");\n }\n\n if ((negStyle === 2 || negStyle === 3) && sign === -1) {\n buf.push("(");\n hasParen = true;\n }\n\n if (bCurrencyPrepend) {\n buf.push(strCurrency);\n }\n\n sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\n buf.push("%,", sepStyle, ".", nDec.toString(), "f");\n\n if (!bCurrencyPrepend) {\n buf.push(strCurrency);\n }\n\n if (hasParen) {\n buf.push(")");\n }\n\n if (negStyle === 1 || negStyle === 3) {\n event.target.textColor = sign === 1 ? this._color.black : this._color.red;\n }\n\n if ((negStyle !== 0 || bCurrencyPrepend) && sign === -1) {\n value = -value;\n }\n\n const formatStr = buf.join("");\n event.value = this._util.printf(formatStr, value);\n }\n\n AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n const event = globalThis.event;\n let value = this.AFMergeChange(event);\n\n if (!value) {\n return;\n }\n\n value = value.trim();\n let pattern;\n\n if (sepStyle > 1) {\n pattern = event.willCommit ? /^[+-]?(\\d+(,\\d*)?|,\\d+)$/ : /^[+-]?\\d*,?\\d*$/;\n } else {\n pattern = event.willCommit ? /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)$/ : /^[+-]?\\d*\\.?\\d*$/;\n }\n\n if (!pattern.test(value)) {\n if (event.willCommit) {\n const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} ${this._mkTargetName(event)}`;\n\n this._app.alert(err);\n }\n\n event.rc = false;\n }\n\n if (event.willCommit && sepStyle > 1) {\n event.value = parseFloat(value.replace(",", "."));\n }\n }\n\n AFPercent_Format(nDec, sepStyle, percentPrepend = false) {\n if (typeof nDec !== "number") {\n return;\n }\n\n if (typeof sepStyle !== "number") {\n return;\n }\n\n if (nDec < 0) {\n throw new Error("Invalid nDec value in AFPercent_Format");\n }\n\n const event = globalThis.event;\n\n if (nDec > 512) {\n event.value = "%";\n return;\n }\n\n nDec = Math.floor(nDec);\n sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\n let value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n event.value = "%";\n return;\n }\n\n const formatStr = `%,${sepStyle}.${nDec}f`;\n value = this._util.printf(formatStr, value * 100);\n\n if (percentPrepend) {\n event.value = `%${value}`;\n } else {\n event.value = `${value}%`;\n }\n }\n\n AFPercent_Keystroke(nDec, sepStyle) {\n this.AFNumber_Keystroke(nDec, sepStyle, 0, 0, "", true);\n }\n\n AFDate_FormatEx(cFormat) {\n const event = globalThis.event;\n const value = event.value;\n\n if (!value) {\n return;\n }\n\n const date = this._parseDate(cFormat, value);\n\n if (date !== null) {\n event.value = this._util.printd(cFormat, date);\n }\n }\n\n AFDate_Format(pdf) {\n if (pdf >= 0 && pdf < this._dateFormats.length) {\n this.AFDate_FormatEx(this._dateFormats[pdf]);\n }\n }\n\n AFDate_KeystrokeEx(cFormat) {\n const event = globalThis.event;\n\n if (!event.willCommit) {\n return;\n }\n\n const value = this.AFMergeChange(event);\n\n if (!value) {\n return;\n }\n\n if (this._parseDate(cFormat, value) === null) {\n const invalid = _constants.GlobalConstants.IDS_INVALID_DATE;\n const invalid2 = _constants.GlobalConstants.IDS_INVALID_DATE2;\n const err = `${invalid} ${this._mkTargetName(event)}${invalid2}${cFormat}`;\n\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFDate_Keystroke(pdf) {\n if (pdf >= 0 && pdf < this._dateFormats.length) {\n this.AFDate_KeystrokeEx(this._dateFormats[pdf]);\n }\n }\n\n AFRange_Validate(bGreaterThan, nGreaterThan, bLessThan, nLessThan) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n const value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n return;\n }\n\n bGreaterThan = !!bGreaterThan;\n bLessThan = !!bLessThan;\n\n if (bGreaterThan) {\n nGreaterThan = this.AFMakeNumber(nGreaterThan);\n\n if (nGreaterThan === null) {\n return;\n }\n }\n\n if (bLessThan) {\n nLessThan = this.AFMakeNumber(nLessThan);\n\n if (nLessThan === null) {\n return;\n }\n }\n\n let err = "";\n\n if (bGreaterThan && bLessThan) {\n if (value < nGreaterThan || value > nLessThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_GT_AND_LT, nGreaterThan, nLessThan);\n }\n } else if (bGreaterThan) {\n if (value < nGreaterThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_GREATER_THAN, nGreaterThan);\n }\n } else if (value > nLessThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_LESS_THAN, nLessThan);\n }\n\n if (err) {\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFSimple(cFunction, nValue1, nValue2) {\n const value1 = this.AFMakeNumber(nValue1);\n\n if (value1 === null) {\n throw new Error("Invalid nValue1 in AFSimple");\n }\n\n const value2 = this.AFMakeNumber(nValue2);\n\n if (value2 === null) {\n throw new Error("Invalid nValue2 in AFSimple");\n }\n\n switch (cFunction) {\n case "AVG":\n return (value1 + value2) / 2;\n\n case "SUM":\n return value1 + value2;\n\n case "PRD":\n return value1 * value2;\n\n case "MIN":\n return Math.min(value1, value2);\n\n case "MAX":\n return Math.max(value1, value2);\n }\n\n throw new Error("Invalid cFunction in AFSimple");\n }\n\n AFSimple_Calculate(cFunction, cFields) {\n const actions = {\n AVG: args => args.reduce((acc, value) => acc + value, 0) / args.length,\n SUM: args => args.reduce((acc, value) => acc + value, 0),\n PRD: args => args.reduce((acc, value) => acc * value, 1),\n MIN: args => args.reduce((acc, value) => Math.min(acc, value), Number.MAX_VALUE),\n MAX: args => args.reduce((acc, value) => Math.max(acc, value), Number.MIN_VALUE)\n };\n\n if (!(cFunction in actions)) {\n throw new TypeError("Invalid function in AFSimple_Calculate");\n }\n\n const event = globalThis.event;\n const values = [];\n\n for (const cField of cFields) {\n const field = this._document.getField(cField);\n\n const number = this.AFMakeNumber(field.value);\n\n if (number !== null) {\n values.push(number);\n }\n }\n\n if (values.length === 0) {\n event.value = cFunction === "PRD" ? 1 : 0;\n return;\n }\n\n const res = actions[cFunction](values);\n event.value = Math.round(1e6 * res) / 1e6;\n }\n\n AFSpecial_Format(psf) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n psf = this.AFMakeNumber(psf);\n\n if (psf === null) {\n throw new Error("Invalid psf in AFSpecial_Format");\n }\n\n let formatStr = "";\n\n switch (psf) {\n case 0:\n formatStr = "99999";\n break;\n\n case 1:\n formatStr = "99999-9999";\n break;\n\n case 2:\n if (this._util.printx("9999999999", event.value).length >= 10) {\n formatStr = "(999) 999-9999";\n } else {\n formatStr = "999-9999";\n }\n\n break;\n\n case 3:\n formatStr = "999-99-9999";\n break;\n\n default:\n throw new Error("Invalid psf in AFSpecial_Format");\n }\n\n event.value = this._util.printx(formatStr, event.value);\n }\n\n AFSpecial_KeystrokeEx(cMask) {\n if (!cMask) {\n return;\n }\n\n const event = globalThis.event;\n const value = this.AFMergeChange(event);\n const checkers = new Map([["9", char => char >= "0" && char <= "9"], ["A", char => "a" <= char && char <= "z" || "A" <= char && char <= "Z"], ["O", char => "a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= char && char <= "9"], ["X", char => true]]);\n\n function _checkValidity(_value, _cMask) {\n for (let i = 0, ii = value.length; i < ii; i++) {\n const mask = _cMask.charAt(i);\n\n const char = _value.charAt(i);\n\n const checker = checkers.get(mask);\n\n if (checker) {\n if (!checker(char)) {\n return false;\n }\n } else if (mask !== char) {\n return false;\n }\n }\n\n return true;\n }\n\n if (!value) {\n return;\n }\n\n const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} = "${cMask}"`;\n\n if (value.length > cMask.length) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n if (event.willCommit) {\n if (value.length < cMask.length) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n if (!_checkValidity(value, cMask)) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n event.value += cMask.substring(value.length);\n return;\n }\n\n if (value.length < cMask.length) {\n cMask = cMask.substring(0, value.length);\n }\n\n if (!_checkValidity(value, cMask)) {\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFSpecial_Keystroke(psf) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n psf = this.AFMakeNumber(psf);\n\n if (psf === null) {\n throw new Error("Invalid psf in AFSpecial_Keystroke");\n }\n\n let formatStr;\n\n switch (psf) {\n case 0:\n formatStr = "99999";\n break;\n\n case 1:\n formatStr = "99999-9999";\n break;\n\n case 2:\n const finalLen = event.value.length + event.change.length + event.selStart - event.selEnd;\n\n if (finalLen >= 8) {\n formatStr = "(999) 999-9999";\n } else {\n formatStr = "999-9999";\n }\n\n break;\n\n case 3:\n formatStr = "999-99-9999";\n break;\n\n default:\n throw new Error("Invalid psf in AFSpecial_Keystroke");\n }\n\n this.AFSpecial_KeystrokeEx(formatStr);\n }\n\n AFTime_FormatEx(cFormat) {\n this.AFDate_FormatEx(cFormat);\n }\n\n AFTime_Format(pdf) {\n if (pdf >= 0 && pdf < this._timeFormats.length) {\n this.AFDate_FormatEx(this._timeFormats[pdf]);\n }\n }\n\n AFTime_KeystrokeEx(cFormat) {\n this.AFDate_KeystrokeEx(cFormat);\n }\n\n AFTime_Keystroke(pdf) {\n if (pdf >= 0 && pdf < this._timeFormats.length) {\n this.AFDate_KeystrokeEx(this._timeFormats[pdf]);\n }\n }\n\n eMailValidate(str) {\n return this._emailRegex.test(str);\n }\n\n}\n\nexports.AForm = AForm;\n\n/***/ }),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.App = void 0;\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _event = __w_pdfjs_require__(10);\n\nvar _fullscreen = __w_pdfjs_require__(11);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nvar _thermometer = __w_pdfjs_require__(12);\n\nconst VIEWER_TYPE = "PDF.js";\nconst VIEWER_VARIATION = "Full";\nconst VIEWER_VERSION = 21.00720099;\nconst FORMS_VERSION = 21.00720099;\n\nclass App extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._constants = null;\n this._focusRect = true;\n this._fs = null;\n this._language = App._getLanguage(data.language);\n this._openInPlace = false;\n this._platform = App._getPlatform(data.platform);\n this._runtimeHighlight = false;\n this._runtimeHighlightColor = ["T"];\n this._thermometer = null;\n this._toolbar = false;\n this._document = data._document;\n this._proxyHandler = data.proxyHandler;\n this._objects = Object.create(null);\n this._eventDispatcher = new _event.EventDispatcher(this._document, data.calculationOrder, this._objects);\n this._timeoutIds = new WeakMap();\n\n if (typeof FinalizationRegistry !== "undefined") {\n this._timeoutIdsRegistry = new FinalizationRegistry(this._cleanTimeout.bind(this));\n } else {\n this._timeoutIdsRegistry = null;\n }\n\n this._timeoutCallbackIds = new Map();\n this._timeoutCallbackId = 0;\n this._globalEval = data.globalEval;\n this._externalCall = data.externalCall;\n this._document = data._document;\n }\n\n _dispatchEvent(pdfEvent) {\n this._eventDispatcher.dispatch(pdfEvent);\n }\n\n _registerTimeoutCallback(cExpr) {\n const id = this._timeoutCallbackId++;\n\n this._timeoutCallbackIds.set(id, cExpr);\n\n return id;\n }\n\n _unregisterTimeoutCallback(id) {\n this._timeoutCallbackIds.delete(id);\n }\n\n _evalCallback({\n callbackId,\n interval\n }) {\n const expr = this._timeoutCallbackIds.get(callbackId);\n\n if (!interval) {\n this._unregisterTimeoutCallback(callbackId);\n }\n\n if (expr) {\n this._globalEval(expr);\n }\n }\n\n _registerTimeout(callbackId, interval) {\n const timeout = Object.create(null);\n const id = {\n callbackId,\n interval\n };\n\n this._timeoutIds.set(timeout, id);\n\n if (this._timeoutIdsRegistry) {\n this._timeoutIdsRegistry.register(timeout, id);\n }\n\n return timeout;\n }\n\n _unregisterTimeout(timeout) {\n if (this._timeoutIdsRegistry) {\n this._timeoutIdsRegistry.unregister(timeout);\n }\n\n const data = this._timeoutIds.get(timeout);\n\n if (!data) {\n return;\n }\n\n this._timeoutIds.delete(timeout);\n\n this._cleanTimeout(data);\n }\n\n _cleanTimeout({\n callbackId,\n interval\n }) {\n this._unregisterTimeoutCallback(callbackId);\n\n if (interval) {\n this._externalCall("clearInterval", [callbackId]);\n } else {\n this._externalCall("clearTimeout", [callbackId]);\n }\n }\n\n static _getPlatform(platform) {\n if (typeof platform === "string") {\n platform = platform.toLowerCase();\n\n if (platform.includes("win")) {\n return "WIN";\n } else if (platform.includes("mac")) {\n return "MAC";\n }\n }\n\n return "UNIX";\n }\n\n static _getLanguage(language) {\n const [main, sub] = language.toLowerCase().split(/[-_]/);\n\n switch (main) {\n case "zh":\n if (sub === "cn" || sub === "sg") {\n return "CHS";\n }\n\n return "CHT";\n\n case "da":\n return "DAN";\n\n case "de":\n return "DEU";\n\n case "es":\n return "ESP";\n\n case "fr":\n return "FRA";\n\n case "it":\n return "ITA";\n\n case "ko":\n return "KOR";\n\n case "ja":\n return "JPN";\n\n case "nl":\n return "NLD";\n\n case "no":\n return "NOR";\n\n case "pt":\n if (sub === "br") {\n return "PTB";\n }\n\n return "ENU";\n\n case "fi":\n return "SUO";\n\n case "SV":\n return "SVE";\n\n default:\n return "ENU";\n }\n }\n\n get activeDocs() {\n return [this._document.wrapped];\n }\n\n set activeDocs(_) {\n throw new Error("app.activeDocs is read-only");\n }\n\n get calculate() {\n return this._document.obj.calculate;\n }\n\n set calculate(calculate) {\n this._document.obj.calculate = calculate;\n }\n\n get constants() {\n if (!this._constants) {\n this._constants = Object.freeze({\n align: Object.freeze({\n left: 0,\n center: 1,\n right: 2,\n top: 3,\n bottom: 4\n })\n });\n }\n\n return this._constants;\n }\n\n set constants(_) {\n throw new Error("app.constants is read-only");\n }\n\n get focusRect() {\n return this._focusRect;\n }\n\n set focusRect(val) {\n this._focusRect = val;\n }\n\n get formsVersion() {\n return FORMS_VERSION;\n }\n\n set formsVersion(_) {\n throw new Error("app.formsVersion is read-only");\n }\n\n get fromPDFConverters() {\n return [];\n }\n\n set fromPDFConverters(_) {\n throw new Error("app.fromPDFConverters is read-only");\n }\n\n get fs() {\n if (this._fs === null) {\n this._fs = new Proxy(new _fullscreen.FullScreen({\n send: this._send\n }), this._proxyHandler);\n }\n\n return this._fs;\n }\n\n set fs(_) {\n throw new Error("app.fs is read-only");\n }\n\n get language() {\n return this._language;\n }\n\n set language(_) {\n throw new Error("app.language is read-only");\n }\n\n get media() {\n return undefined;\n }\n\n set media(_) {\n throw new Error("app.media is read-only");\n }\n\n get monitors() {\n return [];\n }\n\n set monitors(_) {\n throw new Error("app.monitors is read-only");\n }\n\n get numPlugins() {\n return 0;\n }\n\n set numPlugins(_) {\n throw new Error("app.numPlugins is read-only");\n }\n\n get openInPlace() {\n return this._openInPlace;\n }\n\n set openInPlace(val) {\n this._openInPlace = val;\n }\n\n get platform() {\n return this._platform;\n }\n\n set platform(_) {\n throw new Error("app.platform is read-only");\n }\n\n get plugins() {\n return [];\n }\n\n set plugins(_) {\n throw new Error("app.plugins is read-only");\n }\n\n get printColorProfiles() {\n return [];\n }\n\n set printColorProfiles(_) {\n throw new Error("app.printColorProfiles is read-only");\n }\n\n get printerNames() {\n return [];\n }\n\n set printerNames(_) {\n throw new Error("app.printerNames is read-only");\n }\n\n get runtimeHighlight() {\n return this._runtimeHighlight;\n }\n\n set runtimeHighlight(val) {\n this._runtimeHighlight = val;\n }\n\n get runtimeHighlightColor() {\n return this._runtimeHighlightColor;\n }\n\n set runtimeHighlightColor(val) {\n if (_color.Color._isValidColor(val)) {\n this._runtimeHighlightColor = val;\n }\n }\n\n get thermometer() {\n if (this._thermometer === null) {\n this._thermometer = new Proxy(new _thermometer.Thermometer({\n send: this._send\n }), this._proxyHandler);\n }\n\n return this._thermometer;\n }\n\n set thermometer(_) {\n throw new Error("app.thermometer is read-only");\n }\n\n get toolbar() {\n return this._toolbar;\n }\n\n set toolbar(val) {\n this._toolbar = val;\n }\n\n get toolbarHorizontal() {\n return this.toolbar;\n }\n\n set toolbarHorizontal(value) {\n this.toolbar = value;\n }\n\n get toolbarVertical() {\n return this.toolbar;\n }\n\n set toolbarVertical(value) {\n this.toolbar = value;\n }\n\n get viewerType() {\n return VIEWER_TYPE;\n }\n\n set viewerType(_) {\n throw new Error("app.viewerType is read-only");\n }\n\n get viewerVariation() {\n return VIEWER_VARIATION;\n }\n\n set viewerVariation(_) {\n throw new Error("app.viewerVariation is read-only");\n }\n\n get viewerVersion() {\n return VIEWER_VERSION;\n }\n\n set viewerVersion(_) {\n throw new Error("app.viewerVersion is read-only");\n }\n\n addMenuItem() {}\n\n addSubMenu() {}\n\n addToolButton() {}\n\n alert(cMsg, nIcon = 0, nType = 0, cTitle = "PDF.js", oDoc = null, oCheckbox = null) {\n if (typeof cMsg === "object") {\n nType = cMsg.nType;\n cMsg = cMsg.cMsg;\n }\n\n cMsg = (cMsg || "").toString();\n nType = typeof nType !== "number" || isNaN(nType) || nType < 0 || nType > 3 ? 0 : nType;\n\n if (nType >= 2) {\n return this._externalCall("confirm", [cMsg]) ? 4 : 3;\n }\n\n this._externalCall("alert", [cMsg]);\n\n return 1;\n }\n\n beep() {}\n\n beginPriv() {}\n\n browseForDoc() {}\n\n clearInterval(oInterval) {\n this._unregisterTimeout(oInterval);\n }\n\n clearTimeOut(oTime) {\n this._unregisterTimeout(oTime);\n }\n\n endPriv() {}\n\n execDialog() {}\n\n execMenuItem(item) {\n switch (item) {\n case "SaveAs":\n case "FirstPage":\n case "LastPage":\n case "NextPage":\n case "PrevPage":\n case "ZoomViewIn":\n case "ZoomViewOut":\n this._send({\n command: item\n });\n\n break;\n\n case "FitPage":\n this._send({\n command: "zoom",\n value: "page-fit"\n });\n\n break;\n\n case "Print":\n this._send({\n command: "print"\n });\n\n break;\n }\n }\n\n getNthPlugInName() {}\n\n getPath() {}\n\n goBack() {}\n\n goForward() {}\n\n hideMenuItem() {}\n\n hideToolbarButton() {}\n\n launchURL() {}\n\n listMenuItems() {}\n\n listToolbarButtons() {}\n\n loadPolicyFile() {}\n\n mailGetAddrs() {}\n\n mailMsg() {}\n\n newDoc() {}\n\n newCollection() {}\n\n newFDF() {}\n\n openDoc() {}\n\n openFDF() {}\n\n popUpMenu() {}\n\n popUpMenuEx() {}\n\n removeToolButton() {}\n\n response(cQuestion, cTitle = "", cDefault = "", bPassword = "", cLabel = "") {\n if (typeof cQuestion === "object") {\n cDefault = cQuestion.cDefault;\n cQuestion = cQuestion.cQuestion;\n }\n\n cQuestion = (cQuestion || "").toString();\n cDefault = (cDefault || "").toString();\n return this._externalCall("prompt", [cQuestion, cDefault || ""]);\n }\n\n setInterval(cExpr, nMilliseconds = 0) {\n if (typeof cExpr === "object") {\n nMilliseconds = cExpr.nMilliseconds || 0;\n cExpr = cExpr.cExpr;\n }\n\n if (typeof cExpr !== "string") {\n throw new TypeError("First argument of app.setInterval must be a string");\n }\n\n if (typeof nMilliseconds !== "number") {\n throw new TypeError("Second argument of app.setInterval must be a number");\n }\n\n const callbackId = this._registerTimeoutCallback(cExpr);\n\n this._externalCall("setInterval", [callbackId, nMilliseconds]);\n\n return this._registerTimeout(callbackId, true);\n }\n\n setTimeOut(cExpr, nMilliseconds = 0) {\n if (typeof cExpr === "object") {\n nMilliseconds = cExpr.nMilliseconds || 0;\n cExpr = cExpr.cExpr;\n }\n\n if (typeof cExpr !== "string") {\n throw new TypeError("First argument of app.setTimeOut must be a string");\n }\n\n if (typeof nMilliseconds !== "number") {\n throw new TypeError("Second argument of app.setTimeOut must be a number");\n }\n\n const callbackId = this._registerTimeoutCallback(cExpr);\n\n this._externalCall("setTimeout", [callbackId, nMilliseconds]);\n\n return this._registerTimeout(callbackId, false);\n }\n\n trustedFunction() {}\n\n trustPropagatorFunction() {}\n\n}\n\nexports.App = App;\n\n/***/ }),\n/* 10 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.EventDispatcher = exports.Event = void 0;\n\nclass Event {\n constructor(data) {\n this.change = data.change || "";\n this.changeEx = data.changeEx || null;\n this.commitKey = data.commitKey || 0;\n this.fieldFull = data.fieldFull || false;\n this.keyDown = data.keyDown || false;\n this.modifier = data.modifier || false;\n this.name = data.name;\n this.rc = true;\n this.richChange = data.richChange || [];\n this.richChangeEx = data.richChangeEx || [];\n this.richValue = data.richValue || [];\n this.selEnd = data.selEnd || -1;\n this.selStart = data.selStart || -1;\n this.shift = data.shift || false;\n this.source = data.source || null;\n this.target = data.target || null;\n this.targetName = "";\n this.type = "Field";\n this.value = data.value || "";\n this.willCommit = data.willCommit || false;\n }\n\n}\n\nexports.Event = Event;\n\nclass EventDispatcher {\n constructor(document, calculationOrder, objects) {\n this._document = document;\n this._calculationOrder = calculationOrder;\n this._objects = objects;\n this._document.obj._eventDispatcher = this;\n }\n\n mergeChange(event) {\n let value = event.value;\n\n if (typeof value !== "string") {\n value = value.toString();\n }\n\n const prefix = event.selStart >= 0 ? value.substring(0, event.selStart) : "";\n const postfix = event.selEnd >= 0 && event.selEnd <= value.length ? value.substring(event.selEnd) : "";\n return `${prefix}${event.change}${postfix}`;\n }\n\n dispatch(baseEvent) {\n const id = baseEvent.id;\n\n if (!(id in this._objects)) {\n let event;\n\n if (id === "doc" || id === "page") {\n event = globalThis.event = new Event(baseEvent);\n event.source = event.target = this._document.wrapped;\n event.name = baseEvent.name;\n }\n\n if (id === "doc") {\n this._document.obj._dispatchDocEvent(event.name);\n } else if (id === "page") {\n this._document.obj._dispatchPageEvent(event.name, baseEvent.actions, baseEvent.pageNumber);\n } else if (id === "app" && baseEvent.name === "ResetForm") {\n for (const fieldId of baseEvent.ids) {\n const obj = this._objects[fieldId];\n\n if (obj) {\n obj.obj._reset();\n }\n }\n }\n\n return;\n }\n\n const name = baseEvent.name;\n const source = this._objects[id];\n const event = globalThis.event = new Event(baseEvent);\n let savedChange;\n\n if (source.obj._isButton()) {\n source.obj._id = id;\n event.value = source.obj._getExportValue(event.value);\n\n if (name === "Action") {\n source.obj._value = event.value;\n }\n }\n\n switch (name) {\n case "Keystroke":\n savedChange = {\n value: event.value,\n change: event.change,\n selStart: event.selStart,\n selEnd: event.selEnd\n };\n break;\n\n case "Blur":\n case "Focus":\n Object.defineProperty(event, "value", {\n configurable: false,\n writable: false,\n enumerable: true,\n value: event.value\n });\n break;\n\n case "Validate":\n this.runValidation(source, event);\n return;\n\n case "Action":\n this.runActions(source, source, event, name);\n\n if (this._document.obj.calculate) {\n this.runCalculate(source, event);\n }\n\n return;\n }\n\n this.runActions(source, source, event, name);\n\n if (name === "Keystroke") {\n if (event.rc) {\n if (event.willCommit) {\n this.runValidation(source, event);\n } else if (event.change !== savedChange.change || event.selStart !== savedChange.selStart || event.selEnd !== savedChange.selEnd) {\n source.wrapped.value = this.mergeChange(event);\n }\n } else if (!event.willCommit) {\n source.obj._send({\n id: source.obj._id,\n value: savedChange.value,\n selRange: [savedChange.selStart, savedChange.selEnd]\n });\n }\n }\n }\n\n runValidation(source, event) {\n const hasRan = this.runActions(source, source, event, "Validate");\n\n if (event.rc) {\n if (hasRan) {\n source.wrapped.value = event.value;\n source.wrapped.valueAsString = event.value;\n } else {\n source.obj.value = event.value;\n source.obj.valueAsString = event.value;\n }\n\n if (this._document.obj.calculate) {\n this.runCalculate(source, event);\n }\n\n event.value = source.obj.value;\n this.runActions(source, source, event, "Format");\n source.wrapped.valueAsString = event.value;\n }\n }\n\n runActions(source, target, event, eventName) {\n event.source = source.wrapped;\n event.target = target.wrapped;\n event.name = eventName;\n event.targetName = target.obj.name;\n event.rc = true;\n return target.obj._runActions(event);\n }\n\n calculateNow() {\n if (!this._calculationOrder) {\n return;\n }\n\n const first = this._calculationOrder[0];\n const source = this._objects[first];\n globalThis.event = new Event({});\n this.runCalculate(source, globalThis.event);\n }\n\n runCalculate(source, event) {\n if (!this._calculationOrder) {\n return;\n }\n\n for (const targetId of this._calculationOrder) {\n if (!(targetId in this._objects)) {\n continue;\n }\n\n if (!this._document.obj.calculate) {\n continue;\n }\n\n event.value = null;\n const target = this._objects[targetId];\n this.runActions(source, target, event, "Calculate");\n\n if (!event.rc) {\n continue;\n }\n\n if (event.value !== null) {\n target.wrapped.value = event.value;\n }\n\n event.value = target.obj.value;\n this.runActions(target, target, event, "Validate");\n\n if (!event.rc) {\n continue;\n }\n\n event.value = target.obj.value;\n this.runActions(target, target, event, "Format");\n\n if (event.value !== null) {\n target.wrapped.valueAsString = event.value;\n }\n }\n }\n\n}\n\nexports.EventDispatcher = EventDispatcher;\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.FullScreen = void 0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass FullScreen extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._backgroundColor = [];\n this._clickAdvances = true;\n this._cursor = _constants.Cursor.hidden;\n this._defaultTransition = "";\n this._escapeExits = true;\n this._isFullScreen = true;\n this._loop = false;\n this._timeDelay = 3600;\n this._usePageTiming = false;\n this._useTimer = false;\n }\n\n get backgroundColor() {\n return this._backgroundColor;\n }\n\n set backgroundColor(_) {}\n\n get clickAdvances() {\n return this._clickAdvances;\n }\n\n set clickAdvances(_) {}\n\n get cursor() {\n return this._cursor;\n }\n\n set cursor(_) {}\n\n get defaultTransition() {\n return this._defaultTransition;\n }\n\n set defaultTransition(_) {}\n\n get escapeExits() {\n return this._escapeExits;\n }\n\n set escapeExits(_) {}\n\n get isFullScreen() {\n return this._isFullScreen;\n }\n\n set isFullScreen(_) {}\n\n get loop() {\n return this._loop;\n }\n\n set loop(_) {}\n\n get timeDelay() {\n return this._timeDelay;\n }\n\n set timeDelay(_) {}\n\n get transitions() {\n return ["Replace", "WipeRight", "WipeLeft", "WipeDown", "WipeUp", "SplitHorizontalIn", "SplitHorizontalOut", "SplitVerticalIn", "SplitVerticalOut", "BlindsHorizontal", "BlindsVertical", "BoxIn", "BoxOut", "GlitterRight", "GlitterDown", "GlitterRightDown", "Dissolve", "Random"];\n }\n\n set transitions(_) {\n throw new Error("fullscreen.transitions is read-only");\n }\n\n get usePageTiming() {\n return this._usePageTiming;\n }\n\n set usePageTiming(_) {}\n\n get useTimer() {\n return this._useTimer;\n }\n\n set useTimer(_) {}\n\n}\n\nexports.FullScreen = FullScreen;\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Thermometer = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Thermometer extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._cancelled = false;\n this._duration = 100;\n this._text = "";\n this._value = 0;\n }\n\n get cancelled() {\n return this._cancelled;\n }\n\n set cancelled(_) {\n throw new Error("thermometer.cancelled is read-only");\n }\n\n get duration() {\n return this._duration;\n }\n\n set duration(val) {\n this._duration = val;\n }\n\n get text() {\n return this._text;\n }\n\n set text(val) {\n this._text = val;\n }\n\n get value() {\n return this._value;\n }\n\n set value(val) {\n this._value = val;\n }\n\n begin() {}\n\n end() {}\n\n}\n\nexports.Thermometer = Thermometer;\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Console = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Console extends _pdf_object.PDFObject {\n clear() {\n this._send({\n id: "clear"\n });\n }\n\n hide() {}\n\n println(msg) {\n if (typeof msg === "string") {\n this._send({\n command: "println",\n value: "PDF.js Console:: " + msg\n });\n }\n }\n\n show() {}\n\n}\n\nexports.Console = Console;\n\n/***/ }),\n/* 14 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Doc = void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nvar _print_params = __w_pdfjs_require__(15);\n\nvar _constants = __w_pdfjs_require__(2);\n\nclass InfoProxyHandler {\n static get(obj, prop) {\n return obj[prop.toLowerCase()];\n }\n\n static set(obj, prop, value) {\n throw new Error(`doc.info.${prop} is read-only`);\n }\n\n}\n\nclass Doc extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._expandos = globalThis;\n this._baseURL = data.baseURL || "";\n this._calculate = true;\n this._delay = false;\n this._dirty = false;\n this._disclosed = false;\n this._media = undefined;\n this._metadata = data.metadata || "";\n this._noautocomplete = undefined;\n this._nocache = undefined;\n this._spellDictionaryOrder = [];\n this._spellLanguageOrder = [];\n this._printParams = null;\n this._fields = new Map();\n this._fieldNames = [];\n this._event = null;\n this._author = data.Author || "";\n this._creator = data.Creator || "";\n this._creationDate = this._getDate(data.CreationDate) || null;\n this._docID = data.docID || ["", ""];\n this._documentFileName = data.filename || "";\n this._filesize = data.filesize || 0;\n this._keywords = data.Keywords || "";\n this._layout = data.layout || "";\n this._modDate = this._getDate(data.ModDate) || null;\n this._numFields = 0;\n this._numPages = data.numPages || 1;\n this._pageNum = data.pageNum || 0;\n this._producer = data.Producer || "";\n this._securityHandler = data.EncryptFilterName || null;\n this._subject = data.Subject || "";\n this._title = data.Title || "";\n this._URL = data.URL || "";\n this._info = new Proxy({\n title: this._title,\n author: this._author,\n authors: data.authors || [this._author],\n subject: this._subject,\n keywords: this._keywords,\n creator: this._creator,\n producer: this._producer,\n creationdate: this._creationDate,\n moddate: this._modDate,\n trapped: data.Trapped || "Unknown"\n }, InfoProxyHandler);\n this._zoomType = _constants.ZoomType.none;\n this._zoom = data.zoom || 100;\n this._actions = (0, _common.createActionsMap)(data.actions);\n this._globalEval = data.globalEval;\n this._pageActions = new Map();\n }\n\n _dispatchDocEvent(name) {\n if (name === "Open") {\n const dontRun = new Set(["WillClose", "WillSave", "DidSave", "WillPrint", "DidPrint", "OpenAction"]);\n\n for (const actionName of this._actions.keys()) {\n if (!dontRun.has(actionName)) {\n this._runActions(actionName);\n }\n }\n\n this._runActions("OpenAction");\n } else {\n this._runActions(name);\n }\n }\n\n _dispatchPageEvent(name, actions, pageNumber) {\n if (name === "PageOpen") {\n if (!this._pageActions.has(pageNumber)) {\n this._pageActions.set(pageNumber, (0, _common.createActionsMap)(actions));\n }\n\n this._pageNum = pageNumber - 1;\n }\n\n actions = this._pageActions.get(pageNumber)?.get(name);\n\n if (actions) {\n for (const action of actions) {\n this._globalEval(action);\n }\n }\n }\n\n _runActions(name) {\n const actions = this._actions.get(name);\n\n if (actions) {\n for (const action of actions) {\n this._globalEval(action);\n }\n }\n }\n\n _addField(name, field) {\n this._fields.set(name, field);\n\n this._fieldNames.push(name);\n\n this._numFields++;\n }\n\n _getDate(date) {\n if (!date || date.length < 15 || !date.startsWith("D:")) {\n return date;\n }\n\n date = date.substring(2);\n const year = date.substring(0, 4);\n const month = date.substring(4, 6);\n const day = date.substring(6, 8);\n const hour = date.substring(8, 10);\n const minute = date.substring(10, 12);\n const o = date.charAt(12);\n let second, offsetPos;\n\n if (o === "Z" || o === "+" || o === "-") {\n second = "00";\n offsetPos = 12;\n } else {\n second = date.substring(12, 14);\n offsetPos = 14;\n }\n\n const offset = date.substring(offsetPos).replaceAll("\'", "");\n return new Date(`${year}-${month}-${day}T${hour}:${minute}:${second}${offset}`);\n }\n\n get author() {\n return this._author;\n }\n\n set author(_) {\n throw new Error("doc.author is read-only");\n }\n\n get baseURL() {\n return this._baseURL;\n }\n\n set baseURL(baseURL) {\n this._baseURL = baseURL;\n }\n\n get bookmarkRoot() {\n return undefined;\n }\n\n set bookmarkRoot(_) {\n throw new Error("doc.bookmarkRoot is read-only");\n }\n\n get calculate() {\n return this._calculate;\n }\n\n set calculate(calculate) {\n this._calculate = calculate;\n }\n\n get creator() {\n return this._creator;\n }\n\n set creator(_) {\n throw new Error("doc.creator is read-only");\n }\n\n get dataObjects() {\n return [];\n }\n\n set dataObjects(_) {\n throw new Error("doc.dataObjects is read-only");\n }\n\n get delay() {\n return this._delay;\n }\n\n set delay(delay) {\n this._delay = delay;\n }\n\n get dirty() {\n return this._dirty;\n }\n\n set dirty(dirty) {\n this._dirty = dirty;\n }\n\n get disclosed() {\n return this._disclosed;\n }\n\n set disclosed(disclosed) {\n this._disclosed = disclosed;\n }\n\n get docID() {\n return this._docID;\n }\n\n set docID(_) {\n throw new Error("doc.docID is read-only");\n }\n\n get documentFileName() {\n return this._documentFileName;\n }\n\n set documentFileName(_) {\n throw new Error("doc.documentFileName is read-only");\n }\n\n get dynamicXFAForm() {\n return false;\n }\n\n set dynamicXFAForm(_) {\n throw new Error("doc.dynamicXFAForm is read-only");\n }\n\n get external() {\n return true;\n }\n\n set external(_) {\n throw new Error("doc.external is read-only");\n }\n\n get filesize() {\n return this._filesize;\n }\n\n set filesize(_) {\n throw new Error("doc.filesize is read-only");\n }\n\n get hidden() {\n return false;\n }\n\n set hidden(_) {\n throw new Error("doc.hidden is read-only");\n }\n\n get hostContainer() {\n return undefined;\n }\n\n set hostContainer(_) {\n throw new Error("doc.hostContainer is read-only");\n }\n\n get icons() {\n return undefined;\n }\n\n set icons(_) {\n throw new Error("doc.icons is read-only");\n }\n\n get info() {\n return this._info;\n }\n\n set info(_) {\n throw new Error("doc.info is read-only");\n }\n\n get innerAppWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set innerAppWindowRect(_) {\n throw new Error("doc.innerAppWindowRect is read-only");\n }\n\n get innerDocWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set innerDocWindowRect(_) {\n throw new Error("doc.innerDocWindowRect is read-only");\n }\n\n get isModal() {\n return false;\n }\n\n set isModal(_) {\n throw new Error("doc.isModal is read-only");\n }\n\n get keywords() {\n return this._keywords;\n }\n\n set keywords(_) {\n throw new Error("doc.keywords is read-only");\n }\n\n get layout() {\n return this._layout;\n }\n\n set layout(value) {\n if (typeof value !== "string") {\n return;\n }\n\n if (value !== "SinglePage" && value !== "OneColumn" && value !== "TwoColumnLeft" && value !== "TwoPageLeft" && value !== "TwoColumnRight" && value !== "TwoPageRight") {\n value = "SinglePage";\n }\n\n this._send({\n command: "layout",\n value\n });\n\n this._layout = value;\n }\n\n get media() {\n return this._media;\n }\n\n set media(media) {\n this._media = media;\n }\n\n get metadata() {\n return this._metadata;\n }\n\n set metadata(metadata) {\n this._metadata = metadata;\n }\n\n get modDate() {\n return this._modDate;\n }\n\n set modDate(_) {\n throw new Error("doc.modDate is read-only");\n }\n\n get mouseX() {\n return 0;\n }\n\n set mouseX(_) {\n throw new Error("doc.mouseX is read-only");\n }\n\n get mouseY() {\n return 0;\n }\n\n set mouseY(_) {\n throw new Error("doc.mouseY is read-only");\n }\n\n get noautocomplete() {\n return this._noautocomplete;\n }\n\n set noautocomplete(noautocomplete) {\n this._noautocomplete = noautocomplete;\n }\n\n get nocache() {\n return this._nocache;\n }\n\n set nocache(nocache) {\n this._nocache = nocache;\n }\n\n get numFields() {\n return this._numFields;\n }\n\n set numFields(_) {\n throw new Error("doc.numFields is read-only");\n }\n\n get numPages() {\n return this._numPages;\n }\n\n set numPages(_) {\n throw new Error("doc.numPages is read-only");\n }\n\n get numTemplates() {\n return 0;\n }\n\n set numTemplates(_) {\n throw new Error("doc.numTemplates is read-only");\n }\n\n get outerAppWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set outerAppWindowRect(_) {\n throw new Error("doc.outerAppWindowRect is read-only");\n }\n\n get outerDocWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set outerDocWindowRect(_) {\n throw new Error("doc.outerDocWindowRect is read-only");\n }\n\n get pageNum() {\n return this._pageNum;\n }\n\n set pageNum(value) {\n if (typeof value !== "number" || value < 0 || value >= this._numPages) {\n return;\n }\n\n this._send({\n command: "page-num",\n value\n });\n\n this._pageNum = value;\n }\n\n get pageWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set pageWindowRect(_) {\n throw new Error("doc.pageWindowRect is read-only");\n }\n\n get path() {\n return "";\n }\n\n set path(_) {\n throw new Error("doc.path is read-only");\n }\n\n get permStatusReady() {\n return true;\n }\n\n set permStatusReady(_) {\n throw new Error("doc.permStatusReady is read-only");\n }\n\n get producer() {\n return this._producer;\n }\n\n set producer(_) {\n throw new Error("doc.producer is read-only");\n }\n\n get requiresFullSave() {\n return false;\n }\n\n set requiresFullSave(_) {\n throw new Error("doc.requiresFullSave is read-only");\n }\n\n get securityHandler() {\n return this._securityHandler;\n }\n\n set securityHandler(_) {\n throw new Error("doc.securityHandler is read-only");\n }\n\n get selectedAnnots() {\n return [];\n }\n\n set selectedAnnots(_) {\n throw new Error("doc.selectedAnnots is read-only");\n }\n\n get sounds() {\n return [];\n }\n\n set sounds(_) {\n throw new Error("doc.sounds is read-only");\n }\n\n get spellDictionaryOrder() {\n return this._spellDictionaryOrder;\n }\n\n set spellDictionaryOrder(spellDictionaryOrder) {\n this._spellDictionaryOrder = spellDictionaryOrder;\n }\n\n get spellLanguageOrder() {\n return this._spellLanguageOrder;\n }\n\n set spellLanguageOrder(spellLanguageOrder) {\n this._spellLanguageOrder = spellLanguageOrder;\n }\n\n get subject() {\n return this._subject;\n }\n\n set subject(_) {\n throw new Error("doc.subject is read-only");\n }\n\n get templates() {\n return [];\n }\n\n set templates(_) {\n throw new Error("doc.templates is read-only");\n }\n\n get title() {\n return this._title;\n }\n\n set title(_) {\n throw new Error("doc.title is read-only");\n }\n\n get URL() {\n return this._URL;\n }\n\n set URL(_) {\n throw new Error("doc.URL is read-only");\n }\n\n get viewState() {\n return undefined;\n }\n\n set viewState(_) {\n throw new Error("doc.viewState is read-only");\n }\n\n get xfa() {\n return this._xfa;\n }\n\n set xfa(_) {\n throw new Error("doc.xfa is read-only");\n }\n\n get XFAForeground() {\n return false;\n }\n\n set XFAForeground(_) {\n throw new Error("doc.XFAForeground is read-only");\n }\n\n get zoomType() {\n return this._zoomType;\n }\n\n set zoomType(type) {\n if (typeof type !== "string") {\n return;\n }\n\n switch (type) {\n case _constants.ZoomType.none:\n this._send({\n command: "zoom",\n value: 1\n });\n\n break;\n\n case _constants.ZoomType.fitP:\n this._send({\n command: "zoom",\n value: "page-fit"\n });\n\n break;\n\n case _constants.ZoomType.fitW:\n this._send({\n command: "zoom",\n value: "page-width"\n });\n\n break;\n\n case _constants.ZoomType.fitH:\n this._send({\n command: "zoom",\n value: "page-height"\n });\n\n break;\n\n case _constants.ZoomType.fitV:\n this._send({\n command: "zoom",\n value: "auto"\n });\n\n break;\n\n case _constants.ZoomType.pref:\n case _constants.ZoomType.refW:\n break;\n\n default:\n return;\n }\n\n this._zoomType = type;\n }\n\n get zoom() {\n return this._zoom;\n }\n\n set zoom(value) {\n if (typeof value !== "number" || value < 8.33 || value > 6400) {\n return;\n }\n\n this._send({\n command: "zoom",\n value: value / 100\n });\n }\n\n addAnnot() {}\n\n addField() {}\n\n addIcon() {}\n\n addLink() {}\n\n addRecipientListCryptFilter() {}\n\n addRequirement() {}\n\n addScript() {}\n\n addThumbnails() {}\n\n addWatermarkFromFile() {}\n\n addWatermarkFromText() {}\n\n addWeblinks() {}\n\n bringToFront() {}\n\n calculateNow() {\n this._eventDispatcher.calculateNow();\n }\n\n closeDoc() {}\n\n colorConvertPage() {}\n\n createDataObject() {}\n\n createTemplate() {}\n\n deletePages() {}\n\n deleteSound() {}\n\n embedDocAsDataObject() {}\n\n embedOutputIntent() {}\n\n encryptForRecipients() {}\n\n encryptUsingPolicy() {}\n\n exportAsFDF() {}\n\n exportAsFDFStr() {}\n\n exportAsText() {}\n\n exportAsXFDF() {}\n\n exportAsXFDFStr() {}\n\n exportDataObject() {}\n\n exportXFAData() {}\n\n extractPages() {}\n\n flattenPages() {}\n\n getAnnot() {}\n\n getAnnots() {}\n\n getAnnot3D() {}\n\n getAnnots3D() {}\n\n getColorConvertAction() {}\n\n getDataObject() {}\n\n getDataObjectContents() {}\n\n getField(cName) {\n if (typeof cName === "object") {\n cName = cName.cName;\n }\n\n if (typeof cName !== "string") {\n throw new TypeError("Invalid field name: must be a string");\n }\n\n const searchedField = this._fields.get(cName);\n\n if (searchedField) {\n return searchedField;\n }\n\n const parts = cName.split("#");\n let childIndex = NaN;\n\n if (parts.length === 2) {\n childIndex = Math.floor(parseFloat(parts[1]));\n cName = parts[0];\n }\n\n for (const [name, field] of this._fields.entries()) {\n if (name.endsWith(cName)) {\n if (!isNaN(childIndex)) {\n const children = this._getChildren(name);\n\n if (childIndex < 0 || childIndex >= children.length) {\n childIndex = 0;\n }\n\n if (childIndex < children.length) {\n this._fields.set(cName, children[childIndex]);\n\n return children[childIndex];\n }\n }\n\n this._fields.set(cName, field);\n\n return field;\n }\n }\n\n return null;\n }\n\n _getChildren(fieldName) {\n const len = fieldName.length;\n const children = [];\n const pattern = /^\\.[^.]+$/;\n\n for (const [name, field] of this._fields.entries()) {\n if (name.startsWith(fieldName)) {\n const finalPart = name.slice(len);\n\n if (finalPart.match(pattern)) {\n children.push(field);\n }\n }\n }\n\n return children;\n }\n\n getIcon() {}\n\n getLegalWarnings() {}\n\n getLinks() {}\n\n getNthFieldName(nIndex) {\n if (typeof nIndex === "object") {\n nIndex = nIndex.nIndex;\n }\n\n if (typeof nIndex !== "number") {\n throw new TypeError("Invalid field index: must be a number");\n }\n\n if (0 <= nIndex && nIndex < this.numFields) {\n return this._fieldNames[Math.trunc(nIndex)];\n }\n\n return null;\n }\n\n getNthTemplate() {\n return null;\n }\n\n getOCGs() {}\n\n getOCGOrder() {}\n\n getPageBox() {}\n\n getPageLabel() {}\n\n getPageNthWord() {}\n\n getPageNthWordQuads() {}\n\n getPageNumWords() {}\n\n getPageRotation() {}\n\n getPageTransition() {}\n\n getPrintParams() {\n if (!this._printParams) {\n this._printParams = new _print_params.PrintParams({\n lastPage: this._numPages - 1\n });\n }\n\n return this._printParams;\n }\n\n getSound() {}\n\n getTemplate() {}\n\n getURL() {}\n\n gotoNamedDest() {}\n\n importAnFDF() {}\n\n importAnXFDF() {}\n\n importDataObject() {}\n\n importIcon() {}\n\n importSound() {}\n\n importTextData() {}\n\n importXFAData() {}\n\n insertPages() {}\n\n mailDoc() {}\n\n mailForm() {}\n\n movePage() {}\n\n newPage() {}\n\n openDataObject() {}\n\n print(bUI = true, nStart = 0, nEnd = -1, bSilent = false, bShrinkToFit = false, bPrintAsImage = false, bReverse = false, bAnnotations = true, printParams = null) {\n if (typeof bUI === "object") {\n nStart = bUI.nStart;\n nEnd = bUI.nEnd;\n bSilent = bUI.bSilent;\n bShrinkToFit = bUI.bShrinkToFit;\n bPrintAsImage = bUI.bPrintAsImage;\n bReverse = bUI.bReverse;\n bAnnotations = bUI.bAnnotations;\n printParams = bUI.printParams;\n bUI = bUI.bUI;\n }\n\n if (printParams) {\n nStart = printParams.firstPage;\n nEnd = printParams.lastPage;\n }\n\n if (typeof nStart === "number") {\n nStart = Math.max(0, Math.trunc(nStart));\n } else {\n nStart = 0;\n }\n\n if (typeof nEnd === "number") {\n nEnd = Math.max(0, Math.trunc(nEnd));\n } else {\n nEnd = -1;\n }\n\n this._send({\n command: "print",\n start: nStart,\n end: nEnd\n });\n }\n\n removeDataObject() {}\n\n removeField() {}\n\n removeIcon() {}\n\n removeLinks() {}\n\n removeRequirement() {}\n\n removeScript() {}\n\n removeTemplate() {}\n\n removeThumbnails() {}\n\n removeWeblinks() {}\n\n replacePages() {}\n\n resetForm(aFields = null) {\n if (aFields && !Array.isArray(aFields) && typeof aFields === "object") {\n aFields = aFields.aFields;\n }\n\n let mustCalculate = false;\n\n if (aFields) {\n for (const fieldName of aFields) {\n if (!fieldName) {\n continue;\n }\n\n const field = this.getField(fieldName);\n\n if (!field) {\n continue;\n }\n\n field.value = field.defaultValue;\n field.valueAsString = field.value;\n mustCalculate = true;\n }\n } else {\n mustCalculate = this._fields.size !== 0;\n\n for (const field of this._fields.values()) {\n field.value = field.defaultValue;\n field.valueAsString = field.value;\n }\n }\n\n if (mustCalculate) {\n this.calculateNow();\n }\n }\n\n saveAs() {}\n\n scroll() {}\n\n selectPageNthWord() {}\n\n setAction() {}\n\n setDataObjectContents() {}\n\n setOCGOrder() {}\n\n setPageAction() {}\n\n setPageBoxes() {}\n\n setPageLabels() {}\n\n setPageRotations() {}\n\n setPageTabOrder() {}\n\n setPageTransitions() {}\n\n spawnPageFromTemplate() {}\n\n submitForm() {}\n\n syncAnnotScan() {}\n\n}\n\nexports.Doc = Doc;\n\n/***/ }),\n/* 15 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.PrintParams = void 0;\n\nclass PrintParams {\n constructor(data) {\n this.binaryOk = true;\n this.bitmapDPI = 150;\n this.booklet = {\n binding: 0,\n duplexMode: 0,\n subsetFrom: 0,\n subsetTo: -1\n };\n this.colorOverride = 0;\n this.colorProfile = "";\n this.constants = Object.freeze({\n bookletBindings: Object.freeze({\n Left: 0,\n Right: 1,\n LeftTall: 2,\n RightTall: 3\n }),\n bookletDuplexMode: Object.freeze({\n BothSides: 0,\n FrontSideOnly: 1,\n BasicSideOnly: 2\n }),\n colorOverrides: Object.freeze({\n auto: 0,\n gray: 1,\n mono: 2\n }),\n fontPolicies: Object.freeze({\n everyPage: 0,\n jobStart: 1,\n pageRange: 2\n }),\n handling: Object.freeze({\n none: 0,\n fit: 1,\n shrink: 2,\n tileAll: 3,\n tileLarge: 4,\n nUp: 5,\n booklet: 6\n }),\n interactionLevel: Object.freeze({\n automatic: 0,\n full: 1,\n silent: 2\n }),\n nUpPageOrders: Object.freeze({\n Horizontal: 0,\n HorizontalReversed: 1,\n Vertical: 2\n }),\n printContents: Object.freeze({\n doc: 0,\n docAndComments: 1,\n formFieldsOnly: 2\n }),\n flagValues: Object.freeze({\n applyOverPrint: 1,\n applySoftProofSettings: 1 << 1,\n applyWorkingColorSpaces: 1 << 2,\n emitHalftones: 1 << 3,\n emitPostScriptXObjects: 1 << 4,\n emitFormsAsPSForms: 1 << 5,\n maxJP2KRes: 1 << 6,\n setPageSize: 1 << 7,\n suppressBG: 1 << 8,\n suppressCenter: 1 << 9,\n suppressCJKFontSubst: 1 << 10,\n suppressCropClip: 1 << 1,\n suppressRotate: 1 << 12,\n suppressTransfer: 1 << 13,\n suppressUCR: 1 << 14,\n useTrapAnnots: 1 << 15,\n usePrintersMarks: 1 << 16\n }),\n rasterFlagValues: Object.freeze({\n textToOutline: 1,\n strokesToOutline: 1 << 1,\n allowComplexClip: 1 << 2,\n preserveOverprint: 1 << 3\n }),\n subsets: Object.freeze({\n all: 0,\n even: 1,\n odd: 2\n }),\n tileMarks: Object.freeze({\n none: 0,\n west: 1,\n east: 2\n }),\n usages: Object.freeze({\n auto: 0,\n use: 1,\n noUse: 2\n })\n });\n this.downloadFarEastFonts = false;\n this.fileName = "";\n this.firstPage = 0;\n this.flags = 0;\n this.fontPolicy = 0;\n this.gradientDPI = 150;\n this.interactive = 1;\n this.lastPage = data.lastPage;\n this.npUpAutoRotate = false;\n this.npUpNumPagesH = 2;\n this.npUpNumPagesV = 2;\n this.npUpPageBorder = false;\n this.npUpPageOrder = 0;\n this.pageHandling = 0;\n this.pageSubset = 0;\n this.printAsImage = false;\n this.printContent = 0;\n this.printerName = "";\n this.psLevel = 0;\n this.rasterFlags = 0;\n this.reversePages = false;\n this.tileLabel = false;\n this.tileMark = 0;\n this.tileOverlap = 0;\n this.tileScale = 1.0;\n this.transparencyLevel = 75;\n this.usePrinterCRD = 0;\n this.useT1Conversion = 0;\n }\n\n}\n\nexports.PrintParams = PrintParams;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ProxyHandler = void 0;\n\nclass ProxyHandler {\n constructor() {\n this.nosend = new Set(["delay"]);\n }\n\n get(obj, prop) {\n if (prop in obj._expandos) {\n const val = obj._expandos[prop];\n\n if (typeof val === "function") {\n return val.bind(obj);\n }\n\n return val;\n }\n\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n const val = obj[prop];\n\n if (typeof val === "function") {\n return val.bind(obj);\n }\n\n return val;\n }\n\n return undefined;\n }\n\n set(obj, prop, value) {\n if (obj._kidIds) {\n obj._kidIds.forEach(id => {\n obj._appObjects[id].wrapped[prop] = value;\n });\n }\n\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n const old = obj[prop];\n obj[prop] = value;\n\n if (!this.nosend.has(prop) && obj._send && obj._id !== null && typeof old !== "function") {\n const data = {\n id: obj._id\n };\n data[prop] = obj[prop];\n\n if (!obj._siblings) {\n obj._send(data);\n } else {\n data.siblings = obj._siblings;\n\n obj._send(data);\n }\n }\n } else {\n obj._expandos[prop] = value;\n }\n\n return true;\n }\n\n has(obj, prop) {\n return prop in obj._expandos || typeof prop === "string" && !prop.startsWith("_") && prop in obj;\n }\n\n getPrototypeOf(obj) {\n return null;\n }\n\n setPrototypeOf(obj, proto) {\n return false;\n }\n\n isExtensible(obj) {\n return true;\n }\n\n preventExtensions(obj) {\n return false;\n }\n\n getOwnPropertyDescriptor(obj, prop) {\n if (prop in obj._expandos) {\n return {\n configurable: true,\n enumerable: true,\n value: obj._expandos[prop]\n };\n }\n\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n return {\n configurable: true,\n enumerable: true,\n value: obj[prop]\n };\n }\n\n return undefined;\n }\n\n defineProperty(obj, key, descriptor) {\n Object.defineProperty(obj._expandos, key, descriptor);\n return true;\n }\n\n deleteProperty(obj, prop) {\n if (prop in obj._expandos) {\n delete obj._expandos[prop];\n }\n }\n\n ownKeys(obj) {\n const fromExpandos = Reflect.ownKeys(obj._expandos);\n const fromObj = Reflect.ownKeys(obj).filter(k => !k.startsWith("_"));\n return fromExpandos.concat(fromObj);\n }\n\n}\n\nexports.ProxyHandler = ProxyHandler;\n\n/***/ }),\n/* 17 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Util = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Util extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._scandCache = new Map();\n this._months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];\n this._days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];\n this.MILLISECONDS_IN_DAY = 86400000;\n this.MILLISECONDS_IN_WEEK = 604800000;\n this._externalCall = data.externalCall;\n }\n\n printf(...args) {\n if (args.length === 0) {\n throw new Error("Invalid number of params in printf");\n }\n\n if (typeof args[0] !== "string") {\n throw new TypeError("First argument of printf must be a string");\n }\n\n const pattern = /%(,[0-4])?([+ 0#]+)?(\\d+)?(\\.\\d+)?(.)/g;\n const PLUS = 1;\n const SPACE = 2;\n const ZERO = 4;\n const HASH = 8;\n let i = 0;\n return args[0].replace(pattern, function (match, nDecSep, cFlags, nWidth, nPrecision, cConvChar) {\n if (cConvChar !== "d" && cConvChar !== "f" && cConvChar !== "s" && cConvChar !== "x") {\n const buf = ["%"];\n\n for (const str of [nDecSep, cFlags, nWidth, nPrecision, cConvChar]) {\n if (str) {\n buf.push(str);\n }\n }\n\n return buf.join("");\n }\n\n i++;\n\n if (i === args.length) {\n throw new Error("Not enough arguments in printf");\n }\n\n const arg = args[i];\n\n if (cConvChar === "s") {\n return arg.toString();\n }\n\n let flags = 0;\n\n if (cFlags) {\n for (const flag of cFlags) {\n switch (flag) {\n case "+":\n flags |= PLUS;\n break;\n\n case " ":\n flags |= SPACE;\n break;\n\n case "0":\n flags |= ZERO;\n break;\n\n case "#":\n flags |= HASH;\n break;\n }\n }\n }\n\n cFlags = flags;\n\n if (nWidth) {\n nWidth = parseInt(nWidth);\n }\n\n let intPart = Math.trunc(arg);\n\n if (cConvChar === "x") {\n let hex = Math.abs(intPart).toString(16).toUpperCase();\n\n if (nWidth !== undefined) {\n hex = hex.padStart(nWidth, cFlags & ZERO ? "0" : " ");\n }\n\n if (cFlags & HASH) {\n hex = `0x${hex}`;\n }\n\n return hex;\n }\n\n if (nPrecision) {\n nPrecision = parseInt(nPrecision.substring(1));\n }\n\n nDecSep = nDecSep ? nDecSep.substring(1) : "0";\n const separators = {\n 0: [",", "."],\n 1: ["", "."],\n 2: [".", ","],\n 3: ["", ","],\n 4: ["\'", "."]\n };\n const [thousandSep, decimalSep] = separators[nDecSep];\n let decPart = "";\n\n if (cConvChar === "f") {\n if (nPrecision !== undefined) {\n decPart = Math.abs(arg - intPart).toFixed(nPrecision);\n } else {\n decPart = Math.abs(arg - intPart).toString();\n }\n\n if (decPart.length > 2) {\n decPart = `${decimalSep}${decPart.substring(2)}`;\n } else if (cFlags & HASH) {\n decPart = ".";\n } else {\n decPart = "";\n }\n }\n\n let sign = "";\n\n if (intPart < 0) {\n sign = "-";\n intPart = -intPart;\n } else if (cFlags & PLUS) {\n sign = "+";\n } else if (cFlags & SPACE) {\n sign = " ";\n }\n\n if (thousandSep && intPart >= 1000) {\n const buf = [];\n\n while (true) {\n buf.push((intPart % 1000).toString().padStart(3, "0"));\n intPart = Math.trunc(intPart / 1000);\n\n if (intPart < 1000) {\n buf.push(intPart.toString());\n break;\n }\n }\n\n intPart = buf.reverse().join(thousandSep);\n } else {\n intPart = intPart.toString();\n }\n\n let n = `${intPart}${decPart}`;\n\n if (nWidth !== undefined) {\n n = n.padStart(nWidth - sign.length, cFlags & ZERO ? "0" : " ");\n }\n\n return `${sign}${n}`;\n });\n }\n\n iconStreamFromIcon() {}\n\n printd(cFormat, oDate) {\n switch (cFormat) {\n case 0:\n return this.printd("D:yyyymmddHHMMss", oDate);\n\n case 1:\n return this.printd("yyyy.mm.dd HH:MM:ss", oDate);\n\n case 2:\n return this.printd("m/d/yy h:MM:ss tt", oDate);\n }\n\n const handlers = {\n mmmm: data => {\n return this._months[data.month];\n },\n mmm: data => {\n return this._months[data.month].substring(0, 3);\n },\n mm: data => {\n return (data.month + 1).toString().padStart(2, "0");\n },\n m: data => {\n return (data.month + 1).toString();\n },\n dddd: data => {\n return this._days[data.dayOfWeek];\n },\n ddd: data => {\n return this._days[data.dayOfWeek].substring(0, 3);\n },\n dd: data => {\n return data.day.toString().padStart(2, "0");\n },\n d: data => {\n return data.day.toString();\n },\n yyyy: data => {\n return data.year.toString();\n },\n yy: data => {\n return (data.year % 100).toString().padStart(2, "0");\n },\n HH: data => {\n return data.hours.toString().padStart(2, "0");\n },\n H: data => {\n return data.hours.toString();\n },\n hh: data => {\n return (1 + (data.hours + 11) % 12).toString().padStart(2, "0");\n },\n h: data => {\n return (1 + (data.hours + 11) % 12).toString();\n },\n MM: data => {\n return data.minutes.toString().padStart(2, "0");\n },\n M: data => {\n return data.minutes.toString();\n },\n ss: data => {\n return data.seconds.toString().padStart(2, "0");\n },\n s: data => {\n return data.seconds.toString();\n },\n tt: data => {\n return data.hours < 12 ? "am" : "pm";\n },\n t: data => {\n return data.hours < 12 ? "a" : "p";\n }\n };\n const data = {\n year: oDate.getFullYear(),\n month: oDate.getMonth(),\n day: oDate.getDate(),\n dayOfWeek: oDate.getDay(),\n hours: oDate.getHours(),\n minutes: oDate.getMinutes(),\n seconds: oDate.getSeconds()\n };\n const patterns = /(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t|\\\\.)/g;\n return cFormat.replace(patterns, function (match, pattern) {\n if (pattern in handlers) {\n return handlers[pattern](data);\n }\n\n return pattern.charCodeAt(1);\n });\n }\n\n printx(cFormat, cSource) {\n const handlers = [x => x, x => x.toUpperCase(), x => x.toLowerCase()];\n const buf = [];\n let i = 0;\n const ii = cSource.length;\n let currCase = handlers[0];\n let escaped = false;\n\n for (const command of cFormat) {\n if (escaped) {\n buf.push(command);\n escaped = false;\n continue;\n }\n\n if (i >= ii) {\n break;\n }\n\n switch (command) {\n case "?":\n buf.push(currCase(cSource.charAt(i++)));\n break;\n\n case "X":\n while (i < ii) {\n const char = cSource.charAt(i++);\n\n if ("a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= char && char <= "9") {\n buf.push(currCase(char));\n break;\n }\n }\n\n break;\n\n case "A":\n while (i < ii) {\n const char = cSource.charAt(i++);\n\n if ("a" <= char && char <= "z" || "A" <= char && char <= "Z") {\n buf.push(currCase(char));\n break;\n }\n }\n\n break;\n\n case "9":\n while (i < ii) {\n const char = cSource.charAt(i++);\n\n if ("0" <= char && char <= "9") {\n buf.push(char);\n break;\n }\n }\n\n break;\n\n case "*":\n while (i < ii) {\n buf.push(currCase(cSource.charAt(i++)));\n }\n\n break;\n\n case "\\\\":\n escaped = true;\n break;\n\n case ">":\n currCase = handlers[1];\n break;\n\n case "<":\n currCase = handlers[2];\n break;\n\n case "=":\n currCase = handlers[0];\n break;\n\n default:\n buf.push(command);\n }\n }\n\n return buf.join("");\n }\n\n scand(cFormat, cDate) {\n if (cDate === "") {\n return new Date();\n }\n\n switch (cFormat) {\n case 0:\n return this.scand("D:yyyymmddHHMMss", cDate);\n\n case 1:\n return this.scand("yyyy.mm.dd HH:MM:ss", cDate);\n\n case 2:\n return this.scand("m/d/yy h:MM:ss tt", cDate);\n }\n\n if (!this._scandCache.has(cFormat)) {\n const months = this._months;\n const days = this._days;\n const handlers = {\n mmmm: {\n pattern: `(${months.join("|")})`,\n action: (value, data) => {\n data.month = months.indexOf(value);\n }\n },\n mmm: {\n pattern: `(${months.map(month => month.substring(0, 3)).join("|")})`,\n action: (value, data) => {\n data.month = months.findIndex(month => month.substring(0, 3) === value);\n }\n },\n mm: {\n pattern: `(\\\\d{2})`,\n action: (value, data) => {\n data.month = parseInt(value) - 1;\n }\n },\n m: {\n pattern: `(\\\\d{1,2})`,\n action: (value, data) => {\n data.month = parseInt(value) - 1;\n }\n },\n dddd: {\n pattern: `(${days.join("|")})`,\n action: (value, data) => {\n data.day = days.indexOf(value);\n }\n },\n ddd: {\n pattern: `(${days.map(day => day.substring(0, 3)).join("|")})`,\n action: (value, data) => {\n data.day = days.findIndex(day => day.substring(0, 3) === value);\n }\n },\n dd: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.day = parseInt(value);\n }\n },\n d: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.day = parseInt(value);\n }\n },\n yyyy: {\n pattern: "(\\\\d{4})",\n action: (value, data) => {\n data.year = parseInt(value);\n }\n },\n yy: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.year = 2000 + parseInt(value);\n }\n },\n HH: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n H: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n hh: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n h: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n MM: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.minutes = parseInt(value);\n }\n },\n M: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.minutes = parseInt(value);\n }\n },\n ss: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.seconds = parseInt(value);\n }\n },\n s: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.seconds = parseInt(value);\n }\n },\n tt: {\n pattern: "([aApP][mM])",\n action: (value, data) => {\n const char = value.charAt(0);\n data.am = char === "a" || char === "A";\n }\n },\n t: {\n pattern: "([aApP])",\n action: (value, data) => {\n data.am = value === "a" || value === "A";\n }\n }\n };\n const escapedFormat = cFormat.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, "\\\\$&");\n const patterns = /(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t)/g;\n const actions = [];\n const re = escapedFormat.replace(patterns, function (match, patternElement) {\n const {\n pattern,\n action\n } = handlers[patternElement];\n actions.push(action);\n return pattern;\n });\n\n this._scandCache.set(cFormat, [re, actions]);\n }\n\n const [re, actions] = this._scandCache.get(cFormat);\n\n const matches = new RegExp(re, "g").exec(cDate);\n\n if (!matches || matches.length !== actions.length + 1) {\n return null;\n }\n\n const data = {\n year: 0,\n month: 0,\n day: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n am: null\n };\n actions.forEach((action, i) => action(matches[i + 1], data));\n\n if (data.am !== null) {\n data.hours = data.hours % 12 + (data.am ? 0 : 12);\n }\n\n return new Date(data.year, data.month, data.day, data.hours, data.minutes, data.seconds);\n }\n\n spansToXML() {}\n\n stringFromStream() {}\n\n xmlToSpans() {}\n\n}\n\nexports.Util = Util;\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\nvar exports = __webpack_exports__;\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nObject.defineProperty(exports, "initSandbox", ({\n enumerable: true,\n get: function () {\n return _initialization.initSandbox;\n }\n}));\n\nvar _initialization = __w_pdfjs_require__(1);\n\nconst pdfjsVersion = \'2.12.313\';\nconst pdfjsBuild = \'a2ae56f39\';\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});'];
+ const code = ['(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === \'object\' && typeof module === \'object\')\n\t\tmodule.exports = factory();\n\telse if(typeof define === \'function\' && define.amd)\n\t\tdefine("pdfjs-dist/build/pdf.scripting", [], factory);\n\telse if(typeof exports === \'object\')\n\t\texports["pdfjs-dist/build/pdf.scripting"] = factory();\n\telse\n\t\troot.pdfjsScripting = factory();\n})(this, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t"use strict";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.initSandbox = initSandbox;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _field = __w_pdfjs_require__(3);\n\nvar _aform = __w_pdfjs_require__(8);\n\nvar _app = __w_pdfjs_require__(9);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _console = __w_pdfjs_require__(13);\n\nvar _doc = __w_pdfjs_require__(14);\n\nvar _proxy = __w_pdfjs_require__(16);\n\nvar _util = __w_pdfjs_require__(17);\n\nfunction initSandbox(params) {\n delete globalThis.pdfjsScripting;\n const externalCall = globalThis.callExternalFunction;\n delete globalThis.callExternalFunction;\n\n const globalEval = code => globalThis.eval(code);\n\n const send = data => externalCall("send", [data]);\n\n const proxyHandler = new _proxy.ProxyHandler();\n const {\n data\n } = params;\n const doc = new _doc.Doc({\n send,\n globalEval,\n ...data.docInfo\n });\n const _document = {\n obj: doc,\n wrapped: new Proxy(doc, proxyHandler)\n };\n const app = new _app.App({\n send,\n globalEval,\n externalCall,\n _document,\n calculationOrder: data.calculationOrder,\n proxyHandler,\n ...data.appInfo\n });\n const util = new _util.Util({\n externalCall\n });\n const appObjects = app._objects;\n\n if (data.objects) {\n const annotations = [];\n\n for (const [name, objs] of Object.entries(data.objects)) {\n annotations.length = 0;\n let container = null;\n\n for (const obj of objs) {\n if (obj.type !== "") {\n annotations.push(obj);\n } else {\n container = obj;\n }\n }\n\n let obj = container;\n\n if (annotations.length > 0) {\n obj = annotations[0];\n obj.send = send;\n }\n\n obj.globalEval = globalEval;\n obj.doc = _document;\n obj.fieldPath = name;\n obj.appObjects = appObjects;\n let field;\n\n switch (obj.type) {\n case "radiobutton":\n {\n const otherButtons = annotations.slice(1);\n field = new _field.RadioButtonField(otherButtons, obj);\n break;\n }\n\n case "checkbox":\n {\n const otherButtons = annotations.slice(1);\n field = new _field.CheckboxField(otherButtons, obj);\n break;\n }\n\n case "text":\n if (annotations.length <= 1) {\n field = new _field.Field(obj);\n break;\n }\n\n obj.siblings = annotations.map(x => x.id).slice(1);\n field = new _field.Field(obj);\n break;\n\n default:\n field = new _field.Field(obj);\n }\n\n const wrapped = new Proxy(field, proxyHandler);\n\n doc._addField(name, wrapped);\n\n const _object = {\n obj: field,\n wrapped\n };\n\n for (const object of objs) {\n appObjects[object.id] = _object;\n }\n\n if (container) {\n appObjects[container.id] = _object;\n }\n }\n }\n\n const color = new _color.Color();\n globalThis.event = null;\n globalThis.global = Object.create(null);\n globalThis.app = new Proxy(app, proxyHandler);\n globalThis.color = new Proxy(color, proxyHandler);\n globalThis.console = new Proxy(new _console.Console({\n send\n }), proxyHandler);\n globalThis.util = new Proxy(util, proxyHandler);\n globalThis.border = _constants.Border;\n globalThis.cursor = _constants.Cursor;\n globalThis.display = _constants.Display;\n globalThis.font = _constants.Font;\n globalThis.highlight = _constants.Highlight;\n globalThis.position = _constants.Position;\n globalThis.scaleHow = _constants.ScaleHow;\n globalThis.scaleWhen = _constants.ScaleWhen;\n globalThis.style = _constants.Style;\n globalThis.trans = _constants.Trans;\n globalThis.zoomtype = _constants.ZoomType;\n globalThis.ADBE = {\n Reader_Value_Asked: true,\n Viewer_Value_Asked: true\n };\n const aform = new _aform.AForm(doc, app, util, color);\n\n for (const name of Object.getOwnPropertyNames(_aform.AForm.prototype)) {\n if (name !== "constructor" && !name.startsWith("_")) {\n globalThis[name] = aform[name].bind(aform);\n }\n }\n\n for (const [name, value] of Object.entries(_constants.GlobalConstants)) {\n Object.defineProperty(globalThis, name, {\n value,\n writable: false\n });\n }\n\n Object.defineProperties(globalThis, {\n ColorConvert: {\n value: color.convert.bind(color),\n writable: true\n },\n ColorEqual: {\n value: color.equal.bind(color),\n writable: true\n }\n });\n const properties = Object.create(null);\n\n for (const name of Object.getOwnPropertyNames(_doc.Doc.prototype)) {\n if (name === "constructor" || name.startsWith("_")) {\n continue;\n }\n\n const descriptor = Object.getOwnPropertyDescriptor(_doc.Doc.prototype, name);\n\n if (descriptor.get) {\n properties[name] = {\n get: descriptor.get.bind(doc),\n set: descriptor.set.bind(doc)\n };\n } else {\n properties[name] = {\n value: _doc.Doc.prototype[name].bind(doc)\n };\n }\n }\n\n Object.defineProperties(globalThis, properties);\n const functions = {\n dispatchEvent: app._dispatchEvent.bind(app),\n timeoutCb: app._evalCallback.bind(app)\n };\n return (name, args) => {\n try {\n functions[name](args);\n } catch (error) {\n const value = `${error.toString()}\\n${error.stack}`;\n send({\n command: "error",\n value\n });\n }\n };\n}\n\n/***/ }),\n/* 2 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ZoomType = exports.Trans = exports.Style = exports.ScaleWhen = exports.ScaleHow = exports.Position = exports.Highlight = exports.GlobalConstants = exports.Font = exports.Display = exports.Cursor = exports.Border = void 0;\nconst Border = Object.freeze({\n s: "solid",\n d: "dashed",\n b: "beveled",\n i: "inset",\n u: "underline"\n});\nexports.Border = Border;\nconst Cursor = Object.freeze({\n visible: 0,\n hidden: 1,\n delay: 2\n});\nexports.Cursor = Cursor;\nconst Display = Object.freeze({\n visible: 0,\n hidden: 1,\n noPrint: 2,\n noView: 3\n});\nexports.Display = Display;\nconst Font = Object.freeze({\n Times: "Times-Roman",\n TimesB: "Times-Bold",\n TimesI: "Times-Italic",\n TimesBI: "Times-BoldItalic",\n Helv: "Helvetica",\n HelvB: "Helvetica-Bold",\n HelvI: "Helvetica-Oblique",\n HelvBI: "Helvetica-BoldOblique",\n Cour: "Courier",\n CourB: "Courier-Bold",\n CourI: "Courier-Oblique",\n CourBI: "Courier-BoldOblique",\n Symbol: "Symbol",\n ZapfD: "ZapfDingbats",\n KaGo: "HeiseiKakuGo-W5-UniJIS-UCS2-H",\n KaMi: "HeiseiMin-W3-UniJIS-UCS2-H"\n});\nexports.Font = Font;\nconst Highlight = Object.freeze({\n n: "none",\n i: "invert",\n p: "push",\n o: "outline"\n});\nexports.Highlight = Highlight;\nconst Position = Object.freeze({\n textOnly: 0,\n iconOnly: 1,\n iconTextV: 2,\n textIconV: 3,\n iconTextH: 4,\n textIconH: 5,\n overlay: 6\n});\nexports.Position = Position;\nconst ScaleHow = Object.freeze({\n proportional: 0,\n anamorphic: 1\n});\nexports.ScaleHow = ScaleHow;\nconst ScaleWhen = Object.freeze({\n always: 0,\n never: 1,\n tooBig: 2,\n tooSmall: 3\n});\nexports.ScaleWhen = ScaleWhen;\nconst Style = Object.freeze({\n ch: "check",\n cr: "cross",\n di: "diamond",\n ci: "circle",\n st: "star",\n sq: "square"\n});\nexports.Style = Style;\nconst Trans = Object.freeze({\n blindsH: "BlindsHorizontal",\n blindsV: "BlindsVertical",\n boxI: "BoxIn",\n boxO: "BoxOut",\n dissolve: "Dissolve",\n glitterD: "GlitterDown",\n glitterR: "GlitterRight",\n glitterRD: "GlitterRightDown",\n random: "Random",\n replace: "Replace",\n splitHI: "SplitHorizontalIn",\n splitHO: "SplitHorizontalOut",\n splitVI: "SplitVerticalIn",\n splitVO: "SplitVerticalOut",\n wipeD: "WipeDown",\n wipeL: "WipeLeft",\n wipeR: "WipeRight",\n wipeU: "WipeUp"\n});\nexports.Trans = Trans;\nconst ZoomType = Object.freeze({\n none: "NoVary",\n fitP: "FitPage",\n fitW: "FitWidth",\n fitH: "FitHeight",\n fitV: "FitVisibleWidth",\n pref: "Preferred",\n refW: "ReflowWidth"\n});\nexports.ZoomType = ZoomType;\nconst GlobalConstants = Object.freeze({\n IDS_GREATER_THAN: "Invalid value: must be greater than or equal to % s.",\n IDS_GT_AND_LT: "Invalid value: must be greater than or equal to % s " + "and less than or equal to % s.",\n IDS_LESS_THAN: "Invalid value: must be less than or equal to % s.",\n IDS_INVALID_MONTH: "** Invalid **",\n IDS_INVALID_DATE: "Invalid date / time: please ensure that the date / time exists.Field",\n IDS_INVALID_DATE2: " should match format ",\n IDS_INVALID_VALUE: "The value entered does not match the format of the field",\n IDS_AM: "am",\n IDS_PM: "pm",\n IDS_MONTH_INFO: "January[1] February[2] March[3] April[4] May[5] " + "June[6] July[7] August[8] September[9] October[10] " + "November[11] December[12] Sept[9] Jan[1] Feb[2] Mar[3] " + "Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] Nov[11] Dec[12]",\n IDS_STARTUP_CONSOLE_MSG: "** ^ _ ^ **",\n RE_NUMBER_ENTRY_DOT_SEP: ["[+-]?\\\\d*\\\\.?\\\\d*"],\n RE_NUMBER_COMMIT_DOT_SEP: ["[+-]?\\\\d+(\\\\.\\\\d+)?", "[+-]?\\\\.\\\\d+", "[+-]?\\\\d+\\\\."],\n RE_NUMBER_ENTRY_COMMA_SEP: ["[+-]?\\\\d*,?\\\\d*"],\n RE_NUMBER_COMMIT_COMMA_SEP: ["[+-]?\\\\d+([.,]\\\\d+)?", "[+-]?[.,]\\\\d+", "[+-]?\\\\d+[.,]"],\n RE_ZIP_ENTRY: ["\\\\d{0,5}"],\n RE_ZIP_COMMIT: ["\\\\d{5}"],\n RE_ZIP4_ENTRY: ["\\\\d{0,5}(\\\\.|[- ])?\\\\d{0,4}"],\n RE_ZIP4_COMMIT: ["\\\\d{5}(\\\\.|[- ])?\\\\d{4}"],\n RE_PHONE_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}", "\\\\(\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "011(\\\\.|[- \\\\d])*"],\n RE_PHONE_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\d{3}(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\(\\\\d{3}\\\\)(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "011(\\\\.|[- \\\\d])*"],\n RE_SSN_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,2}(\\\\.|[- ])?\\\\d{0,4}"],\n RE_SSN_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{2}(\\\\.|[- ])?\\\\d{4}"]\n});\nexports.GlobalConstants = GlobalConstants;\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.RadioButtonField = exports.Field = exports.CheckboxField = void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Field extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this.alignment = data.alignment || "left";\n this.borderStyle = data.borderStyle || "";\n this.buttonAlignX = data.buttonAlignX || 50;\n this.buttonAlignY = data.buttonAlignY || 50;\n this.buttonFitBounds = data.buttonFitBounds;\n this.buttonPosition = data.buttonPosition;\n this.buttonScaleHow = data.buttonScaleHow;\n this.ButtonScaleWhen = data.buttonScaleWhen;\n this.calcOrderIndex = data.calcOrderIndex;\n this.charLimit = data.charLimit;\n this.comb = data.comb;\n this.commitOnSelChange = data.commitOnSelChange;\n this.currentValueIndices = data.currentValueIndices;\n this.defaultStyle = data.defaultStyle;\n this.defaultValue = data.defaultValue;\n this.doNotScroll = data.doNotScroll;\n this.doNotSpellCheck = data.doNotSpellCheck;\n this.delay = data.delay;\n this.display = data.display;\n this.doc = data.doc.wrapped;\n this.editable = data.editable;\n this.exportValues = data.exportValues;\n this.fileSelect = data.fileSelect;\n this.hidden = data.hidden;\n this.highlight = data.highlight;\n this.lineWidth = data.lineWidth;\n this.multiline = data.multiline;\n this.multipleSelection = !!data.multipleSelection;\n this.name = data.name;\n this.password = data.password;\n this.print = data.print;\n this.radiosInUnison = data.radiosInUnison;\n this.readonly = data.readonly;\n this.rect = data.rect;\n this.required = data.required;\n this.richText = data.richText;\n this.richValue = data.richValue;\n this.rotation = data.rotation;\n this.style = data.style;\n this.submitName = data.submitName;\n this.textFont = data.textFont;\n this.textSize = data.textSize;\n this.type = data.type;\n this.userName = data.userName;\n this._actions = (0, _common.createActionsMap)(data.actions);\n this._browseForFileToSubmit = data.browseForFileToSubmit || null;\n this._buttonCaption = null;\n this._buttonIcon = null;\n this._children = null;\n this._currentValueIndices = data.currentValueIndices || 0;\n this._document = data.doc;\n this._fieldPath = data.fieldPath;\n this._fillColor = data.fillColor || ["T"];\n this._isChoice = Array.isArray(data.items);\n this._items = data.items || [];\n this._page = data.page || 0;\n this._strokeColor = data.strokeColor || ["G", 0];\n this._textColor = data.textColor || ["G", 0];\n this._value = data.value || "";\n this._kidIds = data.kidIds || null;\n this._fieldType = (0, _common.getFieldType)(this._actions);\n this._siblings = data.siblings || null;\n this._globalEval = data.globalEval;\n this._appObjects = data.appObjects;\n this.valueAsString = data.valueAsString || this._value;\n }\n\n get currentValueIndices() {\n if (!this._isChoice) {\n return 0;\n }\n\n return this._currentValueIndices;\n }\n\n set currentValueIndices(indices) {\n if (!this._isChoice) {\n return;\n }\n\n if (!Array.isArray(indices)) {\n indices = [indices];\n }\n\n if (!indices.every(i => typeof i === "number" && Number.isInteger(i) && i >= 0 && i < this.numItems)) {\n return;\n }\n\n indices.sort();\n\n if (this.multipleSelection) {\n this._currentValueIndices = indices;\n this._value = [];\n indices.forEach(i => {\n this._value.push(this._items[i].displayValue);\n });\n } else {\n if (indices.length > 0) {\n indices = indices.splice(1, indices.length - 1);\n this._currentValueIndices = indices[0];\n this._value = this._items[this._currentValueIndices];\n }\n }\n\n this._send({\n id: this._id,\n indices\n });\n }\n\n get fillColor() {\n return this._fillColor;\n }\n\n set fillColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._fillColor = color;\n }\n }\n\n get bgColor() {\n return this.fillColor;\n }\n\n set bgColor(color) {\n this.fillColor = color;\n }\n\n get numItems() {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n return this._items.length;\n }\n\n set numItems(_) {\n throw new Error("field.numItems is read-only");\n }\n\n get strokeColor() {\n return this._strokeColor;\n }\n\n set strokeColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._strokeColor = color;\n }\n }\n\n get borderColor() {\n return this.strokeColor;\n }\n\n set borderColor(color) {\n this.strokeColor = color;\n }\n\n get page() {\n return this._page;\n }\n\n set page(_) {\n throw new Error("field.page is read-only");\n }\n\n get textColor() {\n return this._textColor;\n }\n\n set textColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._textColor = color;\n }\n }\n\n get fgColor() {\n return this.textColor;\n }\n\n set fgColor(color) {\n this.textColor = color;\n }\n\n get value() {\n return this._value;\n }\n\n set value(value) {\n if (value === "") {\n this._value = "";\n } else if (typeof value === "string") {\n switch (this._fieldType) {\n case _common.FieldType.number:\n case _common.FieldType.percent:\n value = parseFloat(value);\n\n if (!isNaN(value)) {\n this._value = value;\n }\n\n break;\n\n default:\n this._value = value;\n }\n } else {\n this._value = value;\n }\n\n if (this._isChoice) {\n if (this.multipleSelection) {\n const values = new Set(value);\n this._currentValueIndices.length = 0;\n\n this._items.forEach(({\n displayValue\n }, i) => {\n if (values.has(displayValue)) {\n this._currentValueIndices.push(i);\n }\n });\n } else {\n this._currentValueIndices = this._items.findIndex(({\n displayValue\n }) => value === displayValue);\n }\n }\n }\n\n get valueAsString() {\n if (this._valueAsString === undefined) {\n this._valueAsString = this._value ? this._value.toString() : "";\n }\n\n return this._valueAsString;\n }\n\n set valueAsString(val) {\n this._valueAsString = val ? val.toString() : "";\n }\n\n browseForFileToSubmit() {\n if (this._browseForFileToSubmit) {\n this._browseForFileToSubmit();\n }\n }\n\n buttonGetCaption(nFace = 0) {\n if (this._buttonCaption) {\n return this._buttonCaption[nFace];\n }\n\n return "";\n }\n\n buttonGetIcon(nFace = 0) {\n if (this._buttonIcon) {\n return this._buttonIcon[nFace];\n }\n\n return null;\n }\n\n buttonImportIcon(cPath = null, nPave = 0) {}\n\n buttonSetCaption(cCaption, nFace = 0) {\n if (!this._buttonCaption) {\n this._buttonCaption = ["", "", ""];\n }\n\n this._buttonCaption[nFace] = cCaption;\n }\n\n buttonSetIcon(oIcon, nFace = 0) {\n if (!this._buttonIcon) {\n this._buttonIcon = [null, null, null];\n }\n\n this._buttonIcon[nFace] = oIcon;\n }\n\n checkThisBox(nWidget, bCheckIt = true) {}\n\n clearItems() {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n this._items = [];\n\n this._send({\n id: this._id,\n clear: null\n });\n }\n\n deleteItemAt(nIdx = null) {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n if (!this.numItems) {\n return;\n }\n\n if (nIdx === null) {\n nIdx = Array.isArray(this._currentValueIndices) ? this._currentValueIndices[0] : this._currentValueIndices;\n nIdx = nIdx || 0;\n }\n\n if (nIdx < 0 || nIdx >= this.numItems) {\n nIdx = this.numItems - 1;\n }\n\n this._items.splice(nIdx, 1);\n\n if (Array.isArray(this._currentValueIndices)) {\n let index = this._currentValueIndices.findIndex(i => i >= nIdx);\n\n if (index !== -1) {\n if (this._currentValueIndices[index] === nIdx) {\n this._currentValueIndices.splice(index, 1);\n }\n\n for (const ii = this._currentValueIndices.length; index < ii; index++) {\n --this._currentValueIndices[index];\n }\n }\n } else {\n if (this._currentValueIndices === nIdx) {\n this._currentValueIndices = this.numItems > 0 ? 0 : -1;\n } else if (this._currentValueIndices > nIdx) {\n --this._currentValueIndices;\n }\n }\n\n this._send({\n id: this._id,\n remove: nIdx\n });\n }\n\n getItemAt(nIdx = -1, bExportValue = false) {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n if (nIdx < 0 || nIdx >= this.numItems) {\n nIdx = this.numItems - 1;\n }\n\n const item = this._items[nIdx];\n return bExportValue ? item.exportValue : item.displayValue;\n }\n\n getArray() {\n if (this._kidIds) {\n return this._kidIds.map(id => this._appObjects[id].wrapped);\n }\n\n if (this._children === null) {\n this._children = this._document.obj._getChildren(this._fieldPath);\n }\n\n return this._children;\n }\n\n getLock() {\n return undefined;\n }\n\n isBoxChecked(nWidget) {\n return false;\n }\n\n isDefaultChecked(nWidget) {\n return false;\n }\n\n insertItemAt(cName, cExport = undefined, nIdx = 0) {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n if (!cName) {\n return;\n }\n\n if (nIdx < 0 || nIdx > this.numItems) {\n nIdx = this.numItems;\n }\n\n if (this._items.some(({\n displayValue\n }) => displayValue === cName)) {\n return;\n }\n\n if (cExport === undefined) {\n cExport = cName;\n }\n\n const data = {\n displayValue: cName,\n exportValue: cExport\n };\n\n this._items.splice(nIdx, 0, data);\n\n if (Array.isArray(this._currentValueIndices)) {\n let index = this._currentValueIndices.findIndex(i => i >= nIdx);\n\n if (index !== -1) {\n for (const ii = this._currentValueIndices.length; index < ii; index++) {\n ++this._currentValueIndices[index];\n }\n }\n } else if (this._currentValueIndices >= nIdx) {\n ++this._currentValueIndices;\n }\n\n this._send({\n id: this._id,\n insert: {\n index: nIdx,\n ...data\n }\n });\n }\n\n setAction(cTrigger, cScript) {\n if (typeof cTrigger !== "string" || typeof cScript !== "string") {\n return;\n }\n\n if (!(cTrigger in this._actions)) {\n this._actions[cTrigger] = [];\n }\n\n this._actions[cTrigger].push(cScript);\n }\n\n setFocus() {\n this._send({\n id: this._id,\n focus: true\n });\n }\n\n setItems(oArray) {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n this._items.length = 0;\n\n for (const element of oArray) {\n let displayValue, exportValue;\n\n if (Array.isArray(element)) {\n displayValue = element[0]?.toString() || "";\n exportValue = element[1]?.toString() || "";\n } else {\n displayValue = exportValue = element?.toString() || "";\n }\n\n this._items.push({\n displayValue,\n exportValue\n });\n }\n\n this._currentValueIndices = 0;\n\n this._send({\n id: this._id,\n items: this._items\n });\n }\n\n setLock() {}\n\n signatureGetModifications() {}\n\n signatureGetSeedValue() {}\n\n signatureInfo() {}\n\n signatureSetSeedValue() {}\n\n signatureSign() {}\n\n signatureValidate() {}\n\n _isButton() {\n return false;\n }\n\n _reset() {\n this.value = this.valueAsString = this.defaultValue;\n }\n\n _runActions(event) {\n const eventName = event.name;\n\n if (!this._actions.has(eventName)) {\n return false;\n }\n\n const actions = this._actions.get(eventName);\n\n try {\n for (const action of actions) {\n this._globalEval(action);\n }\n } catch (error) {\n event.rc = false;\n throw error;\n }\n\n return true;\n }\n\n}\n\nexports.Field = Field;\n\nclass RadioButtonField extends Field {\n constructor(otherButtons, data) {\n super(data);\n this.exportValues = [this.exportValues];\n this._radioIds = [this._id];\n this._radioActions = [this._actions];\n\n for (const radioData of otherButtons) {\n this.exportValues.push(radioData.exportValues);\n\n this._radioIds.push(radioData.id);\n\n this._radioActions.push((0, _common.createActionsMap)(radioData.actions));\n\n if (this._value === radioData.exportValues) {\n this._id = radioData.id;\n }\n }\n }\n\n get value() {\n return this._value;\n }\n\n set value(value) {\n if (value === null || value === undefined) {\n this._value = "";\n }\n\n const i = this.exportValues.indexOf(value);\n\n if (0 <= i && i < this._radioIds.length) {\n this._id = this._radioIds[i];\n this._value = value;\n } else if (value === "Off" && this._radioIds.length === 2) {\n const nextI = (1 + this._radioIds.indexOf(this._id)) % 2;\n this._id = this._radioIds[nextI];\n this._value = this.exportValues[nextI];\n }\n }\n\n checkThisBox(nWidget, bCheckIt = true) {\n if (nWidget < 0 || nWidget >= this._radioIds.length || !bCheckIt) {\n return;\n }\n\n this._id = this._radioIds[nWidget];\n this._value = this.exportValues[nWidget];\n\n this._send({\n id: this._id,\n value: this._value\n });\n }\n\n isBoxChecked(nWidget) {\n return nWidget >= 0 && nWidget < this._radioIds.length && this._id === this._radioIds[nWidget];\n }\n\n isDefaultChecked(nWidget) {\n return nWidget >= 0 && nWidget < this.exportValues.length && this.defaultValue === this.exportValues[nWidget];\n }\n\n _getExportValue(state) {\n const i = this._radioIds.indexOf(this._id);\n\n return this.exportValues[i];\n }\n\n _runActions(event) {\n const i = this._radioIds.indexOf(this._id);\n\n this._actions = this._radioActions[i];\n return super._runActions(event);\n }\n\n _isButton() {\n return true;\n }\n\n}\n\nexports.RadioButtonField = RadioButtonField;\n\nclass CheckboxField extends RadioButtonField {\n get value() {\n return this._value;\n }\n\n set value(value) {\n if (!value || value === "Off") {\n this._value = "Off";\n } else {\n super.value = value;\n }\n }\n\n _getExportValue(state) {\n return state ? super._getExportValue(state) : "Off";\n }\n\n isBoxChecked(nWidget) {\n if (this._value === "Off") {\n return false;\n }\n\n return super.isBoxChecked(nWidget);\n }\n\n isDefaultChecked(nWidget) {\n if (this.defaultValue === "Off") {\n return this._value === "Off";\n }\n\n return super.isDefaultChecked(nWidget);\n }\n\n checkThisBox(nWidget, bCheckIt = true) {\n if (nWidget < 0 || nWidget >= this._radioIds.length) {\n return;\n }\n\n this._id = this._radioIds[nWidget];\n this._value = bCheckIt ? this.exportValues[nWidget] : "Off";\n\n this._send({\n id: this._id,\n value: this._value\n });\n }\n\n}\n\nexports.CheckboxField = CheckboxField;\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.FieldType = void 0;\nexports.createActionsMap = createActionsMap;\nexports.getFieldType = getFieldType;\nconst FieldType = {\n none: 0,\n number: 1,\n percent: 2,\n date: 3,\n time: 4\n};\nexports.FieldType = FieldType;\n\nfunction createActionsMap(actions) {\n const actionsMap = new Map();\n\n if (actions) {\n for (const [eventType, actionsForEvent] of Object.entries(actions)) {\n actionsMap.set(eventType, actionsForEvent);\n }\n }\n\n return actionsMap;\n}\n\nfunction getFieldType(actions) {\n let format = actions.get("Format");\n\n if (!format) {\n return FieldType.none;\n }\n\n format = format[0];\n format = format.trim();\n\n if (format.startsWith("AFNumber_")) {\n return FieldType.number;\n }\n\n if (format.startsWith("AFPercent_")) {\n return FieldType.percent;\n }\n\n if (format.startsWith("AFDate_")) {\n return FieldType.date;\n }\n\n if (format.startsWith("AFTime__")) {\n return FieldType.time;\n }\n\n return FieldType.none;\n}\n\n/***/ }),\n/* 5 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Color = void 0;\n\nvar _scripting_utils = __w_pdfjs_require__(6);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Color extends _pdf_object.PDFObject {\n constructor() {\n super({});\n this.transparent = ["T"];\n this.black = ["G", 0];\n this.white = ["G", 1];\n this.red = ["RGB", 1, 0, 0];\n this.green = ["RGB", 0, 1, 0];\n this.blue = ["RGB", 0, 0, 1];\n this.cyan = ["CMYK", 1, 0, 0, 0];\n this.magenta = ["CMYK", 0, 1, 0, 0];\n this.yellow = ["CMYK", 0, 0, 1, 0];\n this.dkGray = ["G", 0.25];\n this.gray = ["G", 0.5];\n this.ltGray = ["G", 0.75];\n }\n\n static _isValidSpace(cColorSpace) {\n return typeof cColorSpace === "string" && (cColorSpace === "T" || cColorSpace === "G" || cColorSpace === "RGB" || cColorSpace === "CMYK");\n }\n\n static _isValidColor(colorArray) {\n if (!Array.isArray(colorArray) || colorArray.length === 0) {\n return false;\n }\n\n const space = colorArray[0];\n\n if (!Color._isValidSpace(space)) {\n return false;\n }\n\n switch (space) {\n case "T":\n if (colorArray.length !== 1) {\n return false;\n }\n\n break;\n\n case "G":\n if (colorArray.length !== 2) {\n return false;\n }\n\n break;\n\n case "RGB":\n if (colorArray.length !== 4) {\n return false;\n }\n\n break;\n\n case "CMYK":\n if (colorArray.length !== 5) {\n return false;\n }\n\n break;\n\n default:\n return false;\n }\n\n return colorArray.slice(1).every(c => typeof c === "number" && c >= 0 && c <= 1);\n }\n\n static _getCorrectColor(colorArray) {\n return Color._isValidColor(colorArray) ? colorArray : ["G", 0];\n }\n\n convert(colorArray, cColorSpace) {\n if (!Color._isValidSpace(cColorSpace)) {\n return this.black;\n }\n\n if (cColorSpace === "T") {\n return ["T"];\n }\n\n colorArray = Color._getCorrectColor(colorArray);\n\n if (colorArray[0] === cColorSpace) {\n return colorArray;\n }\n\n if (colorArray[0] === "T") {\n return this.convert(this.black, cColorSpace);\n }\n\n return _scripting_utils.ColorConverters[`${colorArray[0]}_${cColorSpace}`](colorArray.slice(1));\n }\n\n equal(colorArray1, colorArray2) {\n colorArray1 = Color._getCorrectColor(colorArray1);\n colorArray2 = Color._getCorrectColor(colorArray2);\n\n if (colorArray1[0] === "T" || colorArray2[0] === "T") {\n return colorArray1[0] === "T" && colorArray2[0] === "T";\n }\n\n if (colorArray1[0] !== colorArray2[0]) {\n colorArray2 = this.convert(colorArray2, colorArray1[0]);\n }\n\n return colorArray1.slice(1).every((c, i) => c === colorArray2[i + 1]);\n }\n\n}\n\nexports.Color = Color;\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ColorConverters = void 0;\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0");\n}\n\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n\n static G_CMYK([g]) {\n return ["CMYK", 0, 0, 0, 1 - g];\n }\n\n static G_RGB([g]) {\n return ["RGB", g, g, g];\n }\n\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G([r, g, b]) {\n return ["G", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_HTML([r, g, b]) {\n const R = makeColorComp(r);\n const G = makeColorComp(g);\n const B = makeColorComp(b);\n return `#${R}${G}${B}`;\n }\n\n static T_HTML() {\n return "#00000000";\n }\n\n static CMYK_RGB([c, y, m, k]) {\n return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n\n static CMYK_HTML(components) {\n return this.RGB_HTML(this.CMYK_RGB(components));\n }\n\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return ["CMYK", c, m, y, k];\n }\n\n}\n\nexports.ColorConverters = ColorConverters;\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.PDFObject = void 0;\n\nclass PDFObject {\n constructor(data) {\n this._expandos = Object.create(null);\n this._send = data.send || null;\n this._id = data.id || null;\n }\n\n}\n\nexports.PDFObject = PDFObject;\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.AForm = void 0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nclass AForm {\n constructor(document, app, util, color) {\n this._document = document;\n this._app = app;\n this._util = util;\n this._color = color;\n this._dateFormats = ["m/d", "m/d/yy", "mm/dd/yy", "mm/yy", "d-mmm", "d-mmm-yy", "dd-mmm-yy", "yy-mm-dd", "mmm-yy", "mmmm-yy", "mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yy HH:MM"];\n this._timeFormats = ["HH:MM", "h:MM tt", "HH:MM:ss", "h:MM:ss tt"];\n this._emailRegex = new RegExp("^[a-zA-Z0-9.!#$%&\'*+\\\\/=?^_`{|}~-]+" + "@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?" + "(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$");\n }\n\n _mkTargetName(event) {\n return event.target ? `[ ${event.target.name} ]` : "";\n }\n\n _parseDate(cFormat, cDate) {\n const ddate = Date.parse(cDate);\n\n if (isNaN(ddate)) {\n try {\n return this._util.scand(cFormat, cDate);\n } catch (error) {\n return null;\n }\n } else {\n return new Date(ddate);\n }\n }\n\n AFMergeChange(event = globalThis.event) {\n if (event.willCommit) {\n return event.value.toString();\n }\n\n return this._app._eventDispatcher.mergeChange(event);\n }\n\n AFParseDateEx(cString, cOrder) {\n return this._parseDate(cOrder, cString);\n }\n\n AFExtractNums(str) {\n if (typeof str === "number") {\n return [str];\n }\n\n if (!str || typeof str !== "string") {\n return null;\n }\n\n const first = str.charAt(0);\n\n if (first === "." || first === ",") {\n str = `0${str}`;\n }\n\n const numbers = str.match(/(\\d+)/g);\n\n if (numbers.length === 0) {\n return null;\n }\n\n return numbers;\n }\n\n AFMakeNumber(str) {\n if (typeof str === "number") {\n return str;\n }\n\n if (typeof str !== "string") {\n return null;\n }\n\n str = str.trim().replace(",", ".");\n const number = parseFloat(str);\n\n if (isNaN(number) || !isFinite(number)) {\n return null;\n }\n\n return number;\n }\n\n AFMakeArrayFromList(string) {\n if (typeof string === "string") {\n return string.split(/, ?/g);\n }\n\n return string;\n }\n\n AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n let value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n event.value = "";\n return;\n }\n\n const sign = Math.sign(value);\n const buf = [];\n let hasParen = false;\n\n if (sign === -1 && bCurrencyPrepend && negStyle === 0) {\n buf.push("-");\n }\n\n if ((negStyle === 2 || negStyle === 3) && sign === -1) {\n buf.push("(");\n hasParen = true;\n }\n\n if (bCurrencyPrepend) {\n buf.push(strCurrency);\n }\n\n sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\n buf.push("%,", sepStyle, ".", nDec.toString(), "f");\n\n if (!bCurrencyPrepend) {\n buf.push(strCurrency);\n }\n\n if (hasParen) {\n buf.push(")");\n }\n\n if (negStyle === 1 || negStyle === 3) {\n event.target.textColor = sign === 1 ? this._color.black : this._color.red;\n }\n\n if ((negStyle !== 0 || bCurrencyPrepend) && sign === -1) {\n value = -value;\n }\n\n const formatStr = buf.join("");\n event.value = this._util.printf(formatStr, value);\n }\n\n AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n const event = globalThis.event;\n let value = this.AFMergeChange(event);\n\n if (!value) {\n return;\n }\n\n value = value.trim();\n let pattern;\n\n if (sepStyle > 1) {\n pattern = event.willCommit ? /^[+-]?(\\d+(,\\d*)?|,\\d+)$/ : /^[+-]?\\d*,?\\d*$/;\n } else {\n pattern = event.willCommit ? /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)$/ : /^[+-]?\\d*\\.?\\d*$/;\n }\n\n if (!pattern.test(value)) {\n if (event.willCommit) {\n const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} ${this._mkTargetName(event)}`;\n\n this._app.alert(err);\n }\n\n event.rc = false;\n }\n\n if (event.willCommit && sepStyle > 1) {\n event.value = parseFloat(value.replace(",", "."));\n }\n }\n\n AFPercent_Format(nDec, sepStyle, percentPrepend = false) {\n if (typeof nDec !== "number") {\n return;\n }\n\n if (typeof sepStyle !== "number") {\n return;\n }\n\n if (nDec < 0) {\n throw new Error("Invalid nDec value in AFPercent_Format");\n }\n\n const event = globalThis.event;\n\n if (nDec > 512) {\n event.value = "%";\n return;\n }\n\n nDec = Math.floor(nDec);\n sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\n let value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n event.value = "%";\n return;\n }\n\n const formatStr = `%,${sepStyle}.${nDec}f`;\n value = this._util.printf(formatStr, value * 100);\n\n if (percentPrepend) {\n event.value = `%${value}`;\n } else {\n event.value = `${value}%`;\n }\n }\n\n AFPercent_Keystroke(nDec, sepStyle) {\n this.AFNumber_Keystroke(nDec, sepStyle, 0, 0, "", true);\n }\n\n AFDate_FormatEx(cFormat) {\n const event = globalThis.event;\n const value = event.value;\n\n if (!value) {\n return;\n }\n\n const date = this._parseDate(cFormat, value);\n\n if (date !== null) {\n event.value = this._util.printd(cFormat, date);\n }\n }\n\n AFDate_Format(pdf) {\n if (pdf >= 0 && pdf < this._dateFormats.length) {\n this.AFDate_FormatEx(this._dateFormats[pdf]);\n }\n }\n\n AFDate_KeystrokeEx(cFormat) {\n const event = globalThis.event;\n\n if (!event.willCommit) {\n return;\n }\n\n const value = this.AFMergeChange(event);\n\n if (!value) {\n return;\n }\n\n if (this._parseDate(cFormat, value) === null) {\n const invalid = _constants.GlobalConstants.IDS_INVALID_DATE;\n const invalid2 = _constants.GlobalConstants.IDS_INVALID_DATE2;\n const err = `${invalid} ${this._mkTargetName(event)}${invalid2}${cFormat}`;\n\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFDate_Keystroke(pdf) {\n if (pdf >= 0 && pdf < this._dateFormats.length) {\n this.AFDate_KeystrokeEx(this._dateFormats[pdf]);\n }\n }\n\n AFRange_Validate(bGreaterThan, nGreaterThan, bLessThan, nLessThan) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n const value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n return;\n }\n\n bGreaterThan = !!bGreaterThan;\n bLessThan = !!bLessThan;\n\n if (bGreaterThan) {\n nGreaterThan = this.AFMakeNumber(nGreaterThan);\n\n if (nGreaterThan === null) {\n return;\n }\n }\n\n if (bLessThan) {\n nLessThan = this.AFMakeNumber(nLessThan);\n\n if (nLessThan === null) {\n return;\n }\n }\n\n let err = "";\n\n if (bGreaterThan && bLessThan) {\n if (value < nGreaterThan || value > nLessThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_GT_AND_LT, nGreaterThan, nLessThan);\n }\n } else if (bGreaterThan) {\n if (value < nGreaterThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_GREATER_THAN, nGreaterThan);\n }\n } else if (value > nLessThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_LESS_THAN, nLessThan);\n }\n\n if (err) {\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFSimple(cFunction, nValue1, nValue2) {\n const value1 = this.AFMakeNumber(nValue1);\n\n if (value1 === null) {\n throw new Error("Invalid nValue1 in AFSimple");\n }\n\n const value2 = this.AFMakeNumber(nValue2);\n\n if (value2 === null) {\n throw new Error("Invalid nValue2 in AFSimple");\n }\n\n switch (cFunction) {\n case "AVG":\n return (value1 + value2) / 2;\n\n case "SUM":\n return value1 + value2;\n\n case "PRD":\n return value1 * value2;\n\n case "MIN":\n return Math.min(value1, value2);\n\n case "MAX":\n return Math.max(value1, value2);\n }\n\n throw new Error("Invalid cFunction in AFSimple");\n }\n\n AFSimple_Calculate(cFunction, cFields) {\n const actions = {\n AVG: args => args.reduce((acc, value) => acc + value, 0) / args.length,\n SUM: args => args.reduce((acc, value) => acc + value, 0),\n PRD: args => args.reduce((acc, value) => acc * value, 1),\n MIN: args => args.reduce((acc, value) => Math.min(acc, value), Number.MAX_VALUE),\n MAX: args => args.reduce((acc, value) => Math.max(acc, value), Number.MIN_VALUE)\n };\n\n if (!(cFunction in actions)) {\n throw new TypeError("Invalid function in AFSimple_Calculate");\n }\n\n const event = globalThis.event;\n const values = [];\n\n for (const cField of cFields) {\n const field = this._document.getField(cField);\n\n const number = this.AFMakeNumber(field.value);\n\n if (number !== null) {\n values.push(number);\n }\n }\n\n if (values.length === 0) {\n event.value = cFunction === "PRD" ? 1 : 0;\n return;\n }\n\n const res = actions[cFunction](values);\n event.value = Math.round(1e6 * res) / 1e6;\n }\n\n AFSpecial_Format(psf) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n psf = this.AFMakeNumber(psf);\n let formatStr;\n\n switch (psf) {\n case 0:\n formatStr = "99999";\n break;\n\n case 1:\n formatStr = "99999-9999";\n break;\n\n case 2:\n if (this._util.printx("9999999999", event.value).length >= 10) {\n formatStr = "(999) 999-9999";\n } else {\n formatStr = "999-9999";\n }\n\n break;\n\n case 3:\n formatStr = "999-99-9999";\n break;\n\n default:\n throw new Error("Invalid psf in AFSpecial_Format");\n }\n\n event.value = this._util.printx(formatStr, event.value);\n }\n\n AFSpecial_KeystrokeEx(cMask) {\n if (!cMask) {\n return;\n }\n\n const event = globalThis.event;\n const value = this.AFMergeChange(event);\n\n if (!value) {\n return;\n }\n\n const checkers = new Map([["9", char => char >= "0" && char <= "9"], ["A", char => "a" <= char && char <= "z" || "A" <= char && char <= "Z"], ["O", char => "a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= char && char <= "9"], ["X", char => true]]);\n\n function _checkValidity(_value, _cMask) {\n for (let i = 0, ii = _value.length; i < ii; i++) {\n const mask = _cMask.charAt(i);\n\n const char = _value.charAt(i);\n\n const checker = checkers.get(mask);\n\n if (checker) {\n if (!checker(char)) {\n return false;\n }\n } else if (mask !== char) {\n return false;\n }\n }\n\n return true;\n }\n\n const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} = "${cMask}"`;\n\n if (value.length > cMask.length) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n if (event.willCommit) {\n if (value.length < cMask.length) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n if (!_checkValidity(value, cMask)) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n event.value += cMask.substring(value.length);\n return;\n }\n\n if (value.length < cMask.length) {\n cMask = cMask.substring(0, value.length);\n }\n\n if (!_checkValidity(value, cMask)) {\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFSpecial_Keystroke(psf) {\n const event = globalThis.event;\n psf = this.AFMakeNumber(psf);\n let formatStr;\n\n switch (psf) {\n case 0:\n formatStr = "99999";\n break;\n\n case 1:\n formatStr = "99999-9999";\n break;\n\n case 2:\n const value = this.AFMergeChange(event);\n\n if (value.length > 8 || value.startsWith("(")) {\n formatStr = "(999) 999-9999";\n } else {\n formatStr = "999-9999";\n }\n\n break;\n\n case 3:\n formatStr = "999-99-9999";\n break;\n\n default:\n throw new Error("Invalid psf in AFSpecial_Keystroke");\n }\n\n this.AFSpecial_KeystrokeEx(formatStr);\n }\n\n AFTime_FormatEx(cFormat) {\n this.AFDate_FormatEx(cFormat);\n }\n\n AFTime_Format(pdf) {\n if (pdf >= 0 && pdf < this._timeFormats.length) {\n this.AFDate_FormatEx(this._timeFormats[pdf]);\n }\n }\n\n AFTime_KeystrokeEx(cFormat) {\n this.AFDate_KeystrokeEx(cFormat);\n }\n\n AFTime_Keystroke(pdf) {\n if (pdf >= 0 && pdf < this._timeFormats.length) {\n this.AFDate_KeystrokeEx(this._timeFormats[pdf]);\n }\n }\n\n eMailValidate(str) {\n return this._emailRegex.test(str);\n }\n\n}\n\nexports.AForm = AForm;\n\n/***/ }),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.App = void 0;\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _event = __w_pdfjs_require__(10);\n\nvar _fullscreen = __w_pdfjs_require__(11);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nvar _thermometer = __w_pdfjs_require__(12);\n\nconst VIEWER_TYPE = "PDF.js";\nconst VIEWER_VARIATION = "Full";\nconst VIEWER_VERSION = 21.00720099;\nconst FORMS_VERSION = 21.00720099;\n\nclass App extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._constants = null;\n this._focusRect = true;\n this._fs = null;\n this._language = App._getLanguage(data.language);\n this._openInPlace = false;\n this._platform = App._getPlatform(data.platform);\n this._runtimeHighlight = false;\n this._runtimeHighlightColor = ["T"];\n this._thermometer = null;\n this._toolbar = false;\n this._document = data._document;\n this._proxyHandler = data.proxyHandler;\n this._objects = Object.create(null);\n this._eventDispatcher = new _event.EventDispatcher(this._document, data.calculationOrder, this._objects);\n this._timeoutIds = new WeakMap();\n\n if (typeof FinalizationRegistry !== "undefined") {\n this._timeoutIdsRegistry = new FinalizationRegistry(this._cleanTimeout.bind(this));\n } else {\n this._timeoutIdsRegistry = null;\n }\n\n this._timeoutCallbackIds = new Map();\n this._timeoutCallbackId = 0;\n this._globalEval = data.globalEval;\n this._externalCall = data.externalCall;\n this._document = data._document;\n }\n\n _dispatchEvent(pdfEvent) {\n this._eventDispatcher.dispatch(pdfEvent);\n }\n\n _registerTimeoutCallback(cExpr) {\n const id = this._timeoutCallbackId++;\n\n this._timeoutCallbackIds.set(id, cExpr);\n\n return id;\n }\n\n _unregisterTimeoutCallback(id) {\n this._timeoutCallbackIds.delete(id);\n }\n\n _evalCallback({\n callbackId,\n interval\n }) {\n const expr = this._timeoutCallbackIds.get(callbackId);\n\n if (!interval) {\n this._unregisterTimeoutCallback(callbackId);\n }\n\n if (expr) {\n this._globalEval(expr);\n }\n }\n\n _registerTimeout(callbackId, interval) {\n const timeout = Object.create(null);\n const id = {\n callbackId,\n interval\n };\n\n this._timeoutIds.set(timeout, id);\n\n if (this._timeoutIdsRegistry) {\n this._timeoutIdsRegistry.register(timeout, id);\n }\n\n return timeout;\n }\n\n _unregisterTimeout(timeout) {\n if (this._timeoutIdsRegistry) {\n this._timeoutIdsRegistry.unregister(timeout);\n }\n\n const data = this._timeoutIds.get(timeout);\n\n if (!data) {\n return;\n }\n\n this._timeoutIds.delete(timeout);\n\n this._cleanTimeout(data);\n }\n\n _cleanTimeout({\n callbackId,\n interval\n }) {\n this._unregisterTimeoutCallback(callbackId);\n\n if (interval) {\n this._externalCall("clearInterval", [callbackId]);\n } else {\n this._externalCall("clearTimeout", [callbackId]);\n }\n }\n\n static _getPlatform(platform) {\n if (typeof platform === "string") {\n platform = platform.toLowerCase();\n\n if (platform.includes("win")) {\n return "WIN";\n } else if (platform.includes("mac")) {\n return "MAC";\n }\n }\n\n return "UNIX";\n }\n\n static _getLanguage(language) {\n const [main, sub] = language.toLowerCase().split(/[-_]/);\n\n switch (main) {\n case "zh":\n if (sub === "cn" || sub === "sg") {\n return "CHS";\n }\n\n return "CHT";\n\n case "da":\n return "DAN";\n\n case "de":\n return "DEU";\n\n case "es":\n return "ESP";\n\n case "fr":\n return "FRA";\n\n case "it":\n return "ITA";\n\n case "ko":\n return "KOR";\n\n case "ja":\n return "JPN";\n\n case "nl":\n return "NLD";\n\n case "no":\n return "NOR";\n\n case "pt":\n if (sub === "br") {\n return "PTB";\n }\n\n return "ENU";\n\n case "fi":\n return "SUO";\n\n case "SV":\n return "SVE";\n\n default:\n return "ENU";\n }\n }\n\n get activeDocs() {\n return [this._document.wrapped];\n }\n\n set activeDocs(_) {\n throw new Error("app.activeDocs is read-only");\n }\n\n get calculate() {\n return this._document.obj.calculate;\n }\n\n set calculate(calculate) {\n this._document.obj.calculate = calculate;\n }\n\n get constants() {\n if (!this._constants) {\n this._constants = Object.freeze({\n align: Object.freeze({\n left: 0,\n center: 1,\n right: 2,\n top: 3,\n bottom: 4\n })\n });\n }\n\n return this._constants;\n }\n\n set constants(_) {\n throw new Error("app.constants is read-only");\n }\n\n get focusRect() {\n return this._focusRect;\n }\n\n set focusRect(val) {\n this._focusRect = val;\n }\n\n get formsVersion() {\n return FORMS_VERSION;\n }\n\n set formsVersion(_) {\n throw new Error("app.formsVersion is read-only");\n }\n\n get fromPDFConverters() {\n return [];\n }\n\n set fromPDFConverters(_) {\n throw new Error("app.fromPDFConverters is read-only");\n }\n\n get fs() {\n if (this._fs === null) {\n this._fs = new Proxy(new _fullscreen.FullScreen({\n send: this._send\n }), this._proxyHandler);\n }\n\n return this._fs;\n }\n\n set fs(_) {\n throw new Error("app.fs is read-only");\n }\n\n get language() {\n return this._language;\n }\n\n set language(_) {\n throw new Error("app.language is read-only");\n }\n\n get media() {\n return undefined;\n }\n\n set media(_) {\n throw new Error("app.media is read-only");\n }\n\n get monitors() {\n return [];\n }\n\n set monitors(_) {\n throw new Error("app.monitors is read-only");\n }\n\n get numPlugins() {\n return 0;\n }\n\n set numPlugins(_) {\n throw new Error("app.numPlugins is read-only");\n }\n\n get openInPlace() {\n return this._openInPlace;\n }\n\n set openInPlace(val) {\n this._openInPlace = val;\n }\n\n get platform() {\n return this._platform;\n }\n\n set platform(_) {\n throw new Error("app.platform is read-only");\n }\n\n get plugins() {\n return [];\n }\n\n set plugins(_) {\n throw new Error("app.plugins is read-only");\n }\n\n get printColorProfiles() {\n return [];\n }\n\n set printColorProfiles(_) {\n throw new Error("app.printColorProfiles is read-only");\n }\n\n get printerNames() {\n return [];\n }\n\n set printerNames(_) {\n throw new Error("app.printerNames is read-only");\n }\n\n get runtimeHighlight() {\n return this._runtimeHighlight;\n }\n\n set runtimeHighlight(val) {\n this._runtimeHighlight = val;\n }\n\n get runtimeHighlightColor() {\n return this._runtimeHighlightColor;\n }\n\n set runtimeHighlightColor(val) {\n if (_color.Color._isValidColor(val)) {\n this._runtimeHighlightColor = val;\n }\n }\n\n get thermometer() {\n if (this._thermometer === null) {\n this._thermometer = new Proxy(new _thermometer.Thermometer({\n send: this._send\n }), this._proxyHandler);\n }\n\n return this._thermometer;\n }\n\n set thermometer(_) {\n throw new Error("app.thermometer is read-only");\n }\n\n get toolbar() {\n return this._toolbar;\n }\n\n set toolbar(val) {\n this._toolbar = val;\n }\n\n get toolbarHorizontal() {\n return this.toolbar;\n }\n\n set toolbarHorizontal(value) {\n this.toolbar = value;\n }\n\n get toolbarVertical() {\n return this.toolbar;\n }\n\n set toolbarVertical(value) {\n this.toolbar = value;\n }\n\n get viewerType() {\n return VIEWER_TYPE;\n }\n\n set viewerType(_) {\n throw new Error("app.viewerType is read-only");\n }\n\n get viewerVariation() {\n return VIEWER_VARIATION;\n }\n\n set viewerVariation(_) {\n throw new Error("app.viewerVariation is read-only");\n }\n\n get viewerVersion() {\n return VIEWER_VERSION;\n }\n\n set viewerVersion(_) {\n throw new Error("app.viewerVersion is read-only");\n }\n\n addMenuItem() {}\n\n addSubMenu() {}\n\n addToolButton() {}\n\n alert(cMsg, nIcon = 0, nType = 0, cTitle = "PDF.js", oDoc = null, oCheckbox = null) {\n if (typeof cMsg === "object") {\n nType = cMsg.nType;\n cMsg = cMsg.cMsg;\n }\n\n cMsg = (cMsg || "").toString();\n nType = typeof nType !== "number" || isNaN(nType) || nType < 0 || nType > 3 ? 0 : nType;\n\n if (nType >= 2) {\n return this._externalCall("confirm", [cMsg]) ? 4 : 3;\n }\n\n this._externalCall("alert", [cMsg]);\n\n return 1;\n }\n\n beep() {}\n\n beginPriv() {}\n\n browseForDoc() {}\n\n clearInterval(oInterval) {\n this._unregisterTimeout(oInterval);\n }\n\n clearTimeOut(oTime) {\n this._unregisterTimeout(oTime);\n }\n\n endPriv() {}\n\n execDialog() {}\n\n execMenuItem(item) {\n switch (item) {\n case "SaveAs":\n case "FirstPage":\n case "LastPage":\n case "NextPage":\n case "PrevPage":\n case "ZoomViewIn":\n case "ZoomViewOut":\n this._send({\n command: item\n });\n\n break;\n\n case "FitPage":\n this._send({\n command: "zoom",\n value: "page-fit"\n });\n\n break;\n\n case "Print":\n this._send({\n command: "print"\n });\n\n break;\n }\n }\n\n getNthPlugInName() {}\n\n getPath() {}\n\n goBack() {}\n\n goForward() {}\n\n hideMenuItem() {}\n\n hideToolbarButton() {}\n\n launchURL() {}\n\n listMenuItems() {}\n\n listToolbarButtons() {}\n\n loadPolicyFile() {}\n\n mailGetAddrs() {}\n\n mailMsg() {}\n\n newDoc() {}\n\n newCollection() {}\n\n newFDF() {}\n\n openDoc() {}\n\n openFDF() {}\n\n popUpMenu() {}\n\n popUpMenuEx() {}\n\n removeToolButton() {}\n\n response(cQuestion, cTitle = "", cDefault = "", bPassword = "", cLabel = "") {\n if (typeof cQuestion === "object") {\n cDefault = cQuestion.cDefault;\n cQuestion = cQuestion.cQuestion;\n }\n\n cQuestion = (cQuestion || "").toString();\n cDefault = (cDefault || "").toString();\n return this._externalCall("prompt", [cQuestion, cDefault || ""]);\n }\n\n setInterval(cExpr, nMilliseconds = 0) {\n if (typeof cExpr === "object") {\n nMilliseconds = cExpr.nMilliseconds || 0;\n cExpr = cExpr.cExpr;\n }\n\n if (typeof cExpr !== "string") {\n throw new TypeError("First argument of app.setInterval must be a string");\n }\n\n if (typeof nMilliseconds !== "number") {\n throw new TypeError("Second argument of app.setInterval must be a number");\n }\n\n const callbackId = this._registerTimeoutCallback(cExpr);\n\n this._externalCall("setInterval", [callbackId, nMilliseconds]);\n\n return this._registerTimeout(callbackId, true);\n }\n\n setTimeOut(cExpr, nMilliseconds = 0) {\n if (typeof cExpr === "object") {\n nMilliseconds = cExpr.nMilliseconds || 0;\n cExpr = cExpr.cExpr;\n }\n\n if (typeof cExpr !== "string") {\n throw new TypeError("First argument of app.setTimeOut must be a string");\n }\n\n if (typeof nMilliseconds !== "number") {\n throw new TypeError("Second argument of app.setTimeOut must be a number");\n }\n\n const callbackId = this._registerTimeoutCallback(cExpr);\n\n this._externalCall("setTimeout", [callbackId, nMilliseconds]);\n\n return this._registerTimeout(callbackId, false);\n }\n\n trustedFunction() {}\n\n trustPropagatorFunction() {}\n\n}\n\nexports.App = App;\n\n/***/ }),\n/* 10 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.EventDispatcher = exports.Event = void 0;\n\nclass Event {\n constructor(data) {\n this.change = data.change || "";\n this.changeEx = data.changeEx || null;\n this.commitKey = data.commitKey || 0;\n this.fieldFull = data.fieldFull || false;\n this.keyDown = data.keyDown || false;\n this.modifier = data.modifier || false;\n this.name = data.name;\n this.rc = true;\n this.richChange = data.richChange || [];\n this.richChangeEx = data.richChangeEx || [];\n this.richValue = data.richValue || [];\n this.selEnd = data.selEnd ?? -1;\n this.selStart = data.selStart ?? -1;\n this.shift = data.shift || false;\n this.source = data.source || null;\n this.target = data.target || null;\n this.targetName = "";\n this.type = "Field";\n this.value = data.value || "";\n this.willCommit = data.willCommit || false;\n }\n\n}\n\nexports.Event = Event;\n\nclass EventDispatcher {\n constructor(document, calculationOrder, objects) {\n this._document = document;\n this._calculationOrder = calculationOrder;\n this._objects = objects;\n this._document.obj._eventDispatcher = this;\n }\n\n mergeChange(event) {\n let value = event.value;\n\n if (typeof value !== "string") {\n value = value.toString();\n }\n\n const prefix = event.selStart >= 0 ? value.substring(0, event.selStart) : "";\n const postfix = event.selEnd >= 0 && event.selEnd <= value.length ? value.substring(event.selEnd) : "";\n return `${prefix}${event.change}${postfix}`;\n }\n\n dispatch(baseEvent) {\n const id = baseEvent.id;\n\n if (!(id in this._objects)) {\n let event;\n\n if (id === "doc" || id === "page") {\n event = globalThis.event = new Event(baseEvent);\n event.source = event.target = this._document.wrapped;\n event.name = baseEvent.name;\n }\n\n if (id === "doc") {\n this._document.obj._dispatchDocEvent(event.name);\n } else if (id === "page") {\n this._document.obj._dispatchPageEvent(event.name, baseEvent.actions, baseEvent.pageNumber);\n } else if (id === "app" && baseEvent.name === "ResetForm") {\n for (const fieldId of baseEvent.ids) {\n const obj = this._objects[fieldId];\n\n if (obj) {\n obj.obj._reset();\n }\n }\n }\n\n return;\n }\n\n const name = baseEvent.name;\n const source = this._objects[id];\n const event = globalThis.event = new Event(baseEvent);\n let savedChange;\n\n if (source.obj._isButton()) {\n source.obj._id = id;\n event.value = source.obj._getExportValue(event.value);\n\n if (name === "Action") {\n source.obj._value = event.value;\n }\n }\n\n switch (name) {\n case "Keystroke":\n savedChange = {\n value: event.value,\n change: event.change,\n selStart: event.selStart,\n selEnd: event.selEnd\n };\n break;\n\n case "Blur":\n case "Focus":\n Object.defineProperty(event, "value", {\n configurable: false,\n writable: false,\n enumerable: true,\n value: event.value\n });\n break;\n\n case "Validate":\n this.runValidation(source, event);\n return;\n\n case "Action":\n this.runActions(source, source, event, name);\n\n if (this._document.obj.calculate) {\n this.runCalculate(source, event);\n }\n\n return;\n }\n\n this.runActions(source, source, event, name);\n\n if (name === "Keystroke") {\n if (event.rc) {\n if (event.willCommit) {\n this.runValidation(source, event);\n } else if (event.change !== savedChange.change || event.selStart !== savedChange.selStart || event.selEnd !== savedChange.selEnd) {\n source.wrapped.value = this.mergeChange(event);\n }\n } else if (!event.willCommit) {\n source.obj._send({\n id: source.obj._id,\n value: savedChange.value,\n selRange: [savedChange.selStart, savedChange.selEnd]\n });\n } else {\n source.obj._send({\n id: source.obj._id,\n value: "",\n selRange: [0, 0]\n });\n }\n }\n }\n\n runValidation(source, event) {\n const hasRan = this.runActions(source, source, event, "Validate");\n\n if (event.rc) {\n if (hasRan) {\n source.wrapped.value = event.value;\n source.wrapped.valueAsString = event.value;\n } else {\n source.obj.value = event.value;\n source.obj.valueAsString = event.value;\n }\n\n if (this._document.obj.calculate) {\n this.runCalculate(source, event);\n }\n\n event.value = source.obj.value;\n this.runActions(source, source, event, "Format");\n source.wrapped.valueAsString = event.value;\n }\n }\n\n runActions(source, target, event, eventName) {\n event.source = source.wrapped;\n event.target = target.wrapped;\n event.name = eventName;\n event.targetName = target.obj.name;\n event.rc = true;\n return target.obj._runActions(event);\n }\n\n calculateNow() {\n if (!this._calculationOrder) {\n return;\n }\n\n const first = this._calculationOrder[0];\n const source = this._objects[first];\n globalThis.event = new Event({});\n this.runCalculate(source, globalThis.event);\n }\n\n runCalculate(source, event) {\n if (!this._calculationOrder) {\n return;\n }\n\n for (const targetId of this._calculationOrder) {\n if (!(targetId in this._objects)) {\n continue;\n }\n\n if (!this._document.obj.calculate) {\n continue;\n }\n\n event.value = null;\n const target = this._objects[targetId];\n this.runActions(source, target, event, "Calculate");\n\n if (!event.rc) {\n continue;\n }\n\n if (event.value !== null) {\n target.wrapped.value = event.value;\n }\n\n event.value = target.obj.value;\n this.runActions(target, target, event, "Validate");\n\n if (!event.rc) {\n continue;\n }\n\n event.value = target.obj.value;\n this.runActions(target, target, event, "Format");\n\n if (event.value !== null) {\n target.wrapped.valueAsString = event.value;\n }\n }\n }\n\n}\n\nexports.EventDispatcher = EventDispatcher;\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.FullScreen = void 0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass FullScreen extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._backgroundColor = [];\n this._clickAdvances = true;\n this._cursor = _constants.Cursor.hidden;\n this._defaultTransition = "";\n this._escapeExits = true;\n this._isFullScreen = true;\n this._loop = false;\n this._timeDelay = 3600;\n this._usePageTiming = false;\n this._useTimer = false;\n }\n\n get backgroundColor() {\n return this._backgroundColor;\n }\n\n set backgroundColor(_) {}\n\n get clickAdvances() {\n return this._clickAdvances;\n }\n\n set clickAdvances(_) {}\n\n get cursor() {\n return this._cursor;\n }\n\n set cursor(_) {}\n\n get defaultTransition() {\n return this._defaultTransition;\n }\n\n set defaultTransition(_) {}\n\n get escapeExits() {\n return this._escapeExits;\n }\n\n set escapeExits(_) {}\n\n get isFullScreen() {\n return this._isFullScreen;\n }\n\n set isFullScreen(_) {}\n\n get loop() {\n return this._loop;\n }\n\n set loop(_) {}\n\n get timeDelay() {\n return this._timeDelay;\n }\n\n set timeDelay(_) {}\n\n get transitions() {\n return ["Replace", "WipeRight", "WipeLeft", "WipeDown", "WipeUp", "SplitHorizontalIn", "SplitHorizontalOut", "SplitVerticalIn", "SplitVerticalOut", "BlindsHorizontal", "BlindsVertical", "BoxIn", "BoxOut", "GlitterRight", "GlitterDown", "GlitterRightDown", "Dissolve", "Random"];\n }\n\n set transitions(_) {\n throw new Error("fullscreen.transitions is read-only");\n }\n\n get usePageTiming() {\n return this._usePageTiming;\n }\n\n set usePageTiming(_) {}\n\n get useTimer() {\n return this._useTimer;\n }\n\n set useTimer(_) {}\n\n}\n\nexports.FullScreen = FullScreen;\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Thermometer = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Thermometer extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._cancelled = false;\n this._duration = 100;\n this._text = "";\n this._value = 0;\n }\n\n get cancelled() {\n return this._cancelled;\n }\n\n set cancelled(_) {\n throw new Error("thermometer.cancelled is read-only");\n }\n\n get duration() {\n return this._duration;\n }\n\n set duration(val) {\n this._duration = val;\n }\n\n get text() {\n return this._text;\n }\n\n set text(val) {\n this._text = val;\n }\n\n get value() {\n return this._value;\n }\n\n set value(val) {\n this._value = val;\n }\n\n begin() {}\n\n end() {}\n\n}\n\nexports.Thermometer = Thermometer;\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Console = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Console extends _pdf_object.PDFObject {\n clear() {\n this._send({\n id: "clear"\n });\n }\n\n hide() {}\n\n println(msg) {\n if (typeof msg === "string") {\n this._send({\n command: "println",\n value: "PDF.js Console:: " + msg\n });\n }\n }\n\n show() {}\n\n}\n\nexports.Console = Console;\n\n/***/ }),\n/* 14 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Doc = void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nvar _print_params = __w_pdfjs_require__(15);\n\nvar _constants = __w_pdfjs_require__(2);\n\nclass InfoProxyHandler {\n static get(obj, prop) {\n return obj[prop.toLowerCase()];\n }\n\n static set(obj, prop, value) {\n throw new Error(`doc.info.${prop} is read-only`);\n }\n\n}\n\nclass Doc extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._expandos = globalThis;\n this._baseURL = data.baseURL || "";\n this._calculate = true;\n this._delay = false;\n this._dirty = false;\n this._disclosed = false;\n this._media = undefined;\n this._metadata = data.metadata || "";\n this._noautocomplete = undefined;\n this._nocache = undefined;\n this._spellDictionaryOrder = [];\n this._spellLanguageOrder = [];\n this._printParams = null;\n this._fields = new Map();\n this._fieldNames = [];\n this._event = null;\n this._author = data.Author || "";\n this._creator = data.Creator || "";\n this._creationDate = this._getDate(data.CreationDate) || null;\n this._docID = data.docID || ["", ""];\n this._documentFileName = data.filename || "";\n this._filesize = data.filesize || 0;\n this._keywords = data.Keywords || "";\n this._layout = data.layout || "";\n this._modDate = this._getDate(data.ModDate) || null;\n this._numFields = 0;\n this._numPages = data.numPages || 1;\n this._pageNum = data.pageNum || 0;\n this._producer = data.Producer || "";\n this._securityHandler = data.EncryptFilterName || null;\n this._subject = data.Subject || "";\n this._title = data.Title || "";\n this._URL = data.URL || "";\n this._info = new Proxy({\n title: this._title,\n author: this._author,\n authors: data.authors || [this._author],\n subject: this._subject,\n keywords: this._keywords,\n creator: this._creator,\n producer: this._producer,\n creationdate: this._creationDate,\n moddate: this._modDate,\n trapped: data.Trapped || "Unknown"\n }, InfoProxyHandler);\n this._zoomType = _constants.ZoomType.none;\n this._zoom = data.zoom || 100;\n this._actions = (0, _common.createActionsMap)(data.actions);\n this._globalEval = data.globalEval;\n this._pageActions = new Map();\n }\n\n _dispatchDocEvent(name) {\n if (name === "Open") {\n const dontRun = new Set(["WillClose", "WillSave", "DidSave", "WillPrint", "DidPrint", "OpenAction"]);\n\n for (const actionName of this._actions.keys()) {\n if (!dontRun.has(actionName)) {\n this._runActions(actionName);\n }\n }\n\n this._runActions("OpenAction");\n } else {\n this._runActions(name);\n }\n }\n\n _dispatchPageEvent(name, actions, pageNumber) {\n if (name === "PageOpen") {\n if (!this._pageActions.has(pageNumber)) {\n this._pageActions.set(pageNumber, (0, _common.createActionsMap)(actions));\n }\n\n this._pageNum = pageNumber - 1;\n }\n\n actions = this._pageActions.get(pageNumber)?.get(name);\n\n if (actions) {\n for (const action of actions) {\n this._globalEval(action);\n }\n }\n }\n\n _runActions(name) {\n const actions = this._actions.get(name);\n\n if (actions) {\n for (const action of actions) {\n this._globalEval(action);\n }\n }\n }\n\n _addField(name, field) {\n this._fields.set(name, field);\n\n this._fieldNames.push(name);\n\n this._numFields++;\n }\n\n _getDate(date) {\n if (!date || date.length < 15 || !date.startsWith("D:")) {\n return date;\n }\n\n date = date.substring(2);\n const year = date.substring(0, 4);\n const month = date.substring(4, 6);\n const day = date.substring(6, 8);\n const hour = date.substring(8, 10);\n const minute = date.substring(10, 12);\n const o = date.charAt(12);\n let second, offsetPos;\n\n if (o === "Z" || o === "+" || o === "-") {\n second = "00";\n offsetPos = 12;\n } else {\n second = date.substring(12, 14);\n offsetPos = 14;\n }\n\n const offset = date.substring(offsetPos).replaceAll("\'", "");\n return new Date(`${year}-${month}-${day}T${hour}:${minute}:${second}${offset}`);\n }\n\n get author() {\n return this._author;\n }\n\n set author(_) {\n throw new Error("doc.author is read-only");\n }\n\n get baseURL() {\n return this._baseURL;\n }\n\n set baseURL(baseURL) {\n this._baseURL = baseURL;\n }\n\n get bookmarkRoot() {\n return undefined;\n }\n\n set bookmarkRoot(_) {\n throw new Error("doc.bookmarkRoot is read-only");\n }\n\n get calculate() {\n return this._calculate;\n }\n\n set calculate(calculate) {\n this._calculate = calculate;\n }\n\n get creator() {\n return this._creator;\n }\n\n set creator(_) {\n throw new Error("doc.creator is read-only");\n }\n\n get dataObjects() {\n return [];\n }\n\n set dataObjects(_) {\n throw new Error("doc.dataObjects is read-only");\n }\n\n get delay() {\n return this._delay;\n }\n\n set delay(delay) {\n this._delay = delay;\n }\n\n get dirty() {\n return this._dirty;\n }\n\n set dirty(dirty) {\n this._dirty = dirty;\n }\n\n get disclosed() {\n return this._disclosed;\n }\n\n set disclosed(disclosed) {\n this._disclosed = disclosed;\n }\n\n get docID() {\n return this._docID;\n }\n\n set docID(_) {\n throw new Error("doc.docID is read-only");\n }\n\n get documentFileName() {\n return this._documentFileName;\n }\n\n set documentFileName(_) {\n throw new Error("doc.documentFileName is read-only");\n }\n\n get dynamicXFAForm() {\n return false;\n }\n\n set dynamicXFAForm(_) {\n throw new Error("doc.dynamicXFAForm is read-only");\n }\n\n get external() {\n return true;\n }\n\n set external(_) {\n throw new Error("doc.external is read-only");\n }\n\n get filesize() {\n return this._filesize;\n }\n\n set filesize(_) {\n throw new Error("doc.filesize is read-only");\n }\n\n get hidden() {\n return false;\n }\n\n set hidden(_) {\n throw new Error("doc.hidden is read-only");\n }\n\n get hostContainer() {\n return undefined;\n }\n\n set hostContainer(_) {\n throw new Error("doc.hostContainer is read-only");\n }\n\n get icons() {\n return undefined;\n }\n\n set icons(_) {\n throw new Error("doc.icons is read-only");\n }\n\n get info() {\n return this._info;\n }\n\n set info(_) {\n throw new Error("doc.info is read-only");\n }\n\n get innerAppWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set innerAppWindowRect(_) {\n throw new Error("doc.innerAppWindowRect is read-only");\n }\n\n get innerDocWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set innerDocWindowRect(_) {\n throw new Error("doc.innerDocWindowRect is read-only");\n }\n\n get isModal() {\n return false;\n }\n\n set isModal(_) {\n throw new Error("doc.isModal is read-only");\n }\n\n get keywords() {\n return this._keywords;\n }\n\n set keywords(_) {\n throw new Error("doc.keywords is read-only");\n }\n\n get layout() {\n return this._layout;\n }\n\n set layout(value) {\n if (typeof value !== "string") {\n return;\n }\n\n if (value !== "SinglePage" && value !== "OneColumn" && value !== "TwoColumnLeft" && value !== "TwoPageLeft" && value !== "TwoColumnRight" && value !== "TwoPageRight") {\n value = "SinglePage";\n }\n\n this._send({\n command: "layout",\n value\n });\n\n this._layout = value;\n }\n\n get media() {\n return this._media;\n }\n\n set media(media) {\n this._media = media;\n }\n\n get metadata() {\n return this._metadata;\n }\n\n set metadata(metadata) {\n this._metadata = metadata;\n }\n\n get modDate() {\n return this._modDate;\n }\n\n set modDate(_) {\n throw new Error("doc.modDate is read-only");\n }\n\n get mouseX() {\n return 0;\n }\n\n set mouseX(_) {\n throw new Error("doc.mouseX is read-only");\n }\n\n get mouseY() {\n return 0;\n }\n\n set mouseY(_) {\n throw new Error("doc.mouseY is read-only");\n }\n\n get noautocomplete() {\n return this._noautocomplete;\n }\n\n set noautocomplete(noautocomplete) {\n this._noautocomplete = noautocomplete;\n }\n\n get nocache() {\n return this._nocache;\n }\n\n set nocache(nocache) {\n this._nocache = nocache;\n }\n\n get numFields() {\n return this._numFields;\n }\n\n set numFields(_) {\n throw new Error("doc.numFields is read-only");\n }\n\n get numPages() {\n return this._numPages;\n }\n\n set numPages(_) {\n throw new Error("doc.numPages is read-only");\n }\n\n get numTemplates() {\n return 0;\n }\n\n set numTemplates(_) {\n throw new Error("doc.numTemplates is read-only");\n }\n\n get outerAppWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set outerAppWindowRect(_) {\n throw new Error("doc.outerAppWindowRect is read-only");\n }\n\n get outerDocWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set outerDocWindowRect(_) {\n throw new Error("doc.outerDocWindowRect is read-only");\n }\n\n get pageNum() {\n return this._pageNum;\n }\n\n set pageNum(value) {\n if (typeof value !== "number" || value < 0 || value >= this._numPages) {\n return;\n }\n\n this._send({\n command: "page-num",\n value\n });\n\n this._pageNum = value;\n }\n\n get pageWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set pageWindowRect(_) {\n throw new Error("doc.pageWindowRect is read-only");\n }\n\n get path() {\n return "";\n }\n\n set path(_) {\n throw new Error("doc.path is read-only");\n }\n\n get permStatusReady() {\n return true;\n }\n\n set permStatusReady(_) {\n throw new Error("doc.permStatusReady is read-only");\n }\n\n get producer() {\n return this._producer;\n }\n\n set producer(_) {\n throw new Error("doc.producer is read-only");\n }\n\n get requiresFullSave() {\n return false;\n }\n\n set requiresFullSave(_) {\n throw new Error("doc.requiresFullSave is read-only");\n }\n\n get securityHandler() {\n return this._securityHandler;\n }\n\n set securityHandler(_) {\n throw new Error("doc.securityHandler is read-only");\n }\n\n get selectedAnnots() {\n return [];\n }\n\n set selectedAnnots(_) {\n throw new Error("doc.selectedAnnots is read-only");\n }\n\n get sounds() {\n return [];\n }\n\n set sounds(_) {\n throw new Error("doc.sounds is read-only");\n }\n\n get spellDictionaryOrder() {\n return this._spellDictionaryOrder;\n }\n\n set spellDictionaryOrder(spellDictionaryOrder) {\n this._spellDictionaryOrder = spellDictionaryOrder;\n }\n\n get spellLanguageOrder() {\n return this._spellLanguageOrder;\n }\n\n set spellLanguageOrder(spellLanguageOrder) {\n this._spellLanguageOrder = spellLanguageOrder;\n }\n\n get subject() {\n return this._subject;\n }\n\n set subject(_) {\n throw new Error("doc.subject is read-only");\n }\n\n get templates() {\n return [];\n }\n\n set templates(_) {\n throw new Error("doc.templates is read-only");\n }\n\n get title() {\n return this._title;\n }\n\n set title(_) {\n throw new Error("doc.title is read-only");\n }\n\n get URL() {\n return this._URL;\n }\n\n set URL(_) {\n throw new Error("doc.URL is read-only");\n }\n\n get viewState() {\n return undefined;\n }\n\n set viewState(_) {\n throw new Error("doc.viewState is read-only");\n }\n\n get xfa() {\n return this._xfa;\n }\n\n set xfa(_) {\n throw new Error("doc.xfa is read-only");\n }\n\n get XFAForeground() {\n return false;\n }\n\n set XFAForeground(_) {\n throw new Error("doc.XFAForeground is read-only");\n }\n\n get zoomType() {\n return this._zoomType;\n }\n\n set zoomType(type) {\n if (typeof type !== "string") {\n return;\n }\n\n switch (type) {\n case _constants.ZoomType.none:\n this._send({\n command: "zoom",\n value: 1\n });\n\n break;\n\n case _constants.ZoomType.fitP:\n this._send({\n command: "zoom",\n value: "page-fit"\n });\n\n break;\n\n case _constants.ZoomType.fitW:\n this._send({\n command: "zoom",\n value: "page-width"\n });\n\n break;\n\n case _constants.ZoomType.fitH:\n this._send({\n command: "zoom",\n value: "page-height"\n });\n\n break;\n\n case _constants.ZoomType.fitV:\n this._send({\n command: "zoom",\n value: "auto"\n });\n\n break;\n\n case _constants.ZoomType.pref:\n case _constants.ZoomType.refW:\n break;\n\n default:\n return;\n }\n\n this._zoomType = type;\n }\n\n get zoom() {\n return this._zoom;\n }\n\n set zoom(value) {\n if (typeof value !== "number" || value < 8.33 || value > 6400) {\n return;\n }\n\n this._send({\n command: "zoom",\n value: value / 100\n });\n }\n\n addAnnot() {}\n\n addField() {}\n\n addIcon() {}\n\n addLink() {}\n\n addRecipientListCryptFilter() {}\n\n addRequirement() {}\n\n addScript() {}\n\n addThumbnails() {}\n\n addWatermarkFromFile() {}\n\n addWatermarkFromText() {}\n\n addWeblinks() {}\n\n bringToFront() {}\n\n calculateNow() {\n this._eventDispatcher.calculateNow();\n }\n\n closeDoc() {}\n\n colorConvertPage() {}\n\n createDataObject() {}\n\n createTemplate() {}\n\n deletePages() {}\n\n deleteSound() {}\n\n embedDocAsDataObject() {}\n\n embedOutputIntent() {}\n\n encryptForRecipients() {}\n\n encryptUsingPolicy() {}\n\n exportAsFDF() {}\n\n exportAsFDFStr() {}\n\n exportAsText() {}\n\n exportAsXFDF() {}\n\n exportAsXFDFStr() {}\n\n exportDataObject() {}\n\n exportXFAData() {}\n\n extractPages() {}\n\n flattenPages() {}\n\n getAnnot() {}\n\n getAnnots() {}\n\n getAnnot3D() {}\n\n getAnnots3D() {}\n\n getColorConvertAction() {}\n\n getDataObject() {}\n\n getDataObjectContents() {}\n\n getField(cName) {\n if (typeof cName === "object") {\n cName = cName.cName;\n }\n\n if (typeof cName !== "string") {\n throw new TypeError("Invalid field name: must be a string");\n }\n\n const searchedField = this._fields.get(cName);\n\n if (searchedField) {\n return searchedField;\n }\n\n const parts = cName.split("#");\n let childIndex = NaN;\n\n if (parts.length === 2) {\n childIndex = Math.floor(parseFloat(parts[1]));\n cName = parts[0];\n }\n\n for (const [name, field] of this._fields.entries()) {\n if (name.endsWith(cName)) {\n if (!isNaN(childIndex)) {\n const children = this._getChildren(name);\n\n if (childIndex < 0 || childIndex >= children.length) {\n childIndex = 0;\n }\n\n if (childIndex < children.length) {\n this._fields.set(cName, children[childIndex]);\n\n return children[childIndex];\n }\n }\n\n this._fields.set(cName, field);\n\n return field;\n }\n }\n\n return null;\n }\n\n _getChildren(fieldName) {\n const len = fieldName.length;\n const children = [];\n const pattern = /^\\.[^.]+$/;\n\n for (const [name, field] of this._fields.entries()) {\n if (name.startsWith(fieldName)) {\n const finalPart = name.slice(len);\n\n if (finalPart.match(pattern)) {\n children.push(field);\n }\n }\n }\n\n return children;\n }\n\n getIcon() {}\n\n getLegalWarnings() {}\n\n getLinks() {}\n\n getNthFieldName(nIndex) {\n if (typeof nIndex === "object") {\n nIndex = nIndex.nIndex;\n }\n\n if (typeof nIndex !== "number") {\n throw new TypeError("Invalid field index: must be a number");\n }\n\n if (0 <= nIndex && nIndex < this.numFields) {\n return this._fieldNames[Math.trunc(nIndex)];\n }\n\n return null;\n }\n\n getNthTemplate() {\n return null;\n }\n\n getOCGs() {}\n\n getOCGOrder() {}\n\n getPageBox() {}\n\n getPageLabel() {}\n\n getPageNthWord() {}\n\n getPageNthWordQuads() {}\n\n getPageNumWords() {}\n\n getPageRotation() {}\n\n getPageTransition() {}\n\n getPrintParams() {\n if (!this._printParams) {\n this._printParams = new _print_params.PrintParams({\n lastPage: this._numPages - 1\n });\n }\n\n return this._printParams;\n }\n\n getSound() {}\n\n getTemplate() {}\n\n getURL() {}\n\n gotoNamedDest() {}\n\n importAnFDF() {}\n\n importAnXFDF() {}\n\n importDataObject() {}\n\n importIcon() {}\n\n importSound() {}\n\n importTextData() {}\n\n importXFAData() {}\n\n insertPages() {}\n\n mailDoc() {}\n\n mailForm() {}\n\n movePage() {}\n\n newPage() {}\n\n openDataObject() {}\n\n print(bUI = true, nStart = 0, nEnd = -1, bSilent = false, bShrinkToFit = false, bPrintAsImage = false, bReverse = false, bAnnotations = true, printParams = null) {\n if (typeof bUI === "object") {\n nStart = bUI.nStart;\n nEnd = bUI.nEnd;\n bSilent = bUI.bSilent;\n bShrinkToFit = bUI.bShrinkToFit;\n bPrintAsImage = bUI.bPrintAsImage;\n bReverse = bUI.bReverse;\n bAnnotations = bUI.bAnnotations;\n printParams = bUI.printParams;\n bUI = bUI.bUI;\n }\n\n if (printParams) {\n nStart = printParams.firstPage;\n nEnd = printParams.lastPage;\n }\n\n if (typeof nStart === "number") {\n nStart = Math.max(0, Math.trunc(nStart));\n } else {\n nStart = 0;\n }\n\n if (typeof nEnd === "number") {\n nEnd = Math.max(0, Math.trunc(nEnd));\n } else {\n nEnd = -1;\n }\n\n this._send({\n command: "print",\n start: nStart,\n end: nEnd\n });\n }\n\n removeDataObject() {}\n\n removeField() {}\n\n removeIcon() {}\n\n removeLinks() {}\n\n removeRequirement() {}\n\n removeScript() {}\n\n removeTemplate() {}\n\n removeThumbnails() {}\n\n removeWeblinks() {}\n\n replacePages() {}\n\n resetForm(aFields = null) {\n if (aFields && !Array.isArray(aFields) && typeof aFields === "object") {\n aFields = aFields.aFields;\n }\n\n let mustCalculate = false;\n\n if (aFields) {\n for (const fieldName of aFields) {\n if (!fieldName) {\n continue;\n }\n\n const field = this.getField(fieldName);\n\n if (!field) {\n continue;\n }\n\n field.value = field.defaultValue;\n field.valueAsString = field.value;\n mustCalculate = true;\n }\n } else {\n mustCalculate = this._fields.size !== 0;\n\n for (const field of this._fields.values()) {\n field.value = field.defaultValue;\n field.valueAsString = field.value;\n }\n }\n\n if (mustCalculate) {\n this.calculateNow();\n }\n }\n\n saveAs() {}\n\n scroll() {}\n\n selectPageNthWord() {}\n\n setAction() {}\n\n setDataObjectContents() {}\n\n setOCGOrder() {}\n\n setPageAction() {}\n\n setPageBoxes() {}\n\n setPageLabels() {}\n\n setPageRotations() {}\n\n setPageTabOrder() {}\n\n setPageTransitions() {}\n\n spawnPageFromTemplate() {}\n\n submitForm() {}\n\n syncAnnotScan() {}\n\n}\n\nexports.Doc = Doc;\n\n/***/ }),\n/* 15 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.PrintParams = void 0;\n\nclass PrintParams {\n constructor(data) {\n this.binaryOk = true;\n this.bitmapDPI = 150;\n this.booklet = {\n binding: 0,\n duplexMode: 0,\n subsetFrom: 0,\n subsetTo: -1\n };\n this.colorOverride = 0;\n this.colorProfile = "";\n this.constants = Object.freeze({\n bookletBindings: Object.freeze({\n Left: 0,\n Right: 1,\n LeftTall: 2,\n RightTall: 3\n }),\n bookletDuplexMode: Object.freeze({\n BothSides: 0,\n FrontSideOnly: 1,\n BasicSideOnly: 2\n }),\n colorOverrides: Object.freeze({\n auto: 0,\n gray: 1,\n mono: 2\n }),\n fontPolicies: Object.freeze({\n everyPage: 0,\n jobStart: 1,\n pageRange: 2\n }),\n handling: Object.freeze({\n none: 0,\n fit: 1,\n shrink: 2,\n tileAll: 3,\n tileLarge: 4,\n nUp: 5,\n booklet: 6\n }),\n interactionLevel: Object.freeze({\n automatic: 0,\n full: 1,\n silent: 2\n }),\n nUpPageOrders: Object.freeze({\n Horizontal: 0,\n HorizontalReversed: 1,\n Vertical: 2\n }),\n printContents: Object.freeze({\n doc: 0,\n docAndComments: 1,\n formFieldsOnly: 2\n }),\n flagValues: Object.freeze({\n applyOverPrint: 1,\n applySoftProofSettings: 1 << 1,\n applyWorkingColorSpaces: 1 << 2,\n emitHalftones: 1 << 3,\n emitPostScriptXObjects: 1 << 4,\n emitFormsAsPSForms: 1 << 5,\n maxJP2KRes: 1 << 6,\n setPageSize: 1 << 7,\n suppressBG: 1 << 8,\n suppressCenter: 1 << 9,\n suppressCJKFontSubst: 1 << 10,\n suppressCropClip: 1 << 1,\n suppressRotate: 1 << 12,\n suppressTransfer: 1 << 13,\n suppressUCR: 1 << 14,\n useTrapAnnots: 1 << 15,\n usePrintersMarks: 1 << 16\n }),\n rasterFlagValues: Object.freeze({\n textToOutline: 1,\n strokesToOutline: 1 << 1,\n allowComplexClip: 1 << 2,\n preserveOverprint: 1 << 3\n }),\n subsets: Object.freeze({\n all: 0,\n even: 1,\n odd: 2\n }),\n tileMarks: Object.freeze({\n none: 0,\n west: 1,\n east: 2\n }),\n usages: Object.freeze({\n auto: 0,\n use: 1,\n noUse: 2\n })\n });\n this.downloadFarEastFonts = false;\n this.fileName = "";\n this.firstPage = 0;\n this.flags = 0;\n this.fontPolicy = 0;\n this.gradientDPI = 150;\n this.interactive = 1;\n this.lastPage = data.lastPage;\n this.npUpAutoRotate = false;\n this.npUpNumPagesH = 2;\n this.npUpNumPagesV = 2;\n this.npUpPageBorder = false;\n this.npUpPageOrder = 0;\n this.pageHandling = 0;\n this.pageSubset = 0;\n this.printAsImage = false;\n this.printContent = 0;\n this.printerName = "";\n this.psLevel = 0;\n this.rasterFlags = 0;\n this.reversePages = false;\n this.tileLabel = false;\n this.tileMark = 0;\n this.tileOverlap = 0;\n this.tileScale = 1.0;\n this.transparencyLevel = 75;\n this.usePrinterCRD = 0;\n this.useT1Conversion = 0;\n }\n\n}\n\nexports.PrintParams = PrintParams;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ProxyHandler = void 0;\n\nclass ProxyHandler {\n constructor() {\n this.nosend = new Set(["delay"]);\n }\n\n get(obj, prop) {\n if (prop in obj._expandos) {\n const val = obj._expandos[prop];\n\n if (typeof val === "function") {\n return val.bind(obj);\n }\n\n return val;\n }\n\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n const val = obj[prop];\n\n if (typeof val === "function") {\n return val.bind(obj);\n }\n\n return val;\n }\n\n return undefined;\n }\n\n set(obj, prop, value) {\n if (obj._kidIds) {\n obj._kidIds.forEach(id => {\n obj._appObjects[id].wrapped[prop] = value;\n });\n }\n\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n const old = obj[prop];\n obj[prop] = value;\n\n if (!this.nosend.has(prop) && obj._send && obj._id !== null && typeof old !== "function") {\n const data = {\n id: obj._id\n };\n data[prop] = obj[prop];\n\n if (!obj._siblings) {\n obj._send(data);\n } else {\n data.siblings = obj._siblings;\n\n obj._send(data);\n }\n }\n } else {\n obj._expandos[prop] = value;\n }\n\n return true;\n }\n\n has(obj, prop) {\n return prop in obj._expandos || typeof prop === "string" && !prop.startsWith("_") && prop in obj;\n }\n\n getPrototypeOf(obj) {\n return null;\n }\n\n setPrototypeOf(obj, proto) {\n return false;\n }\n\n isExtensible(obj) {\n return true;\n }\n\n preventExtensions(obj) {\n return false;\n }\n\n getOwnPropertyDescriptor(obj, prop) {\n if (prop in obj._expandos) {\n return {\n configurable: true,\n enumerable: true,\n value: obj._expandos[prop]\n };\n }\n\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n return {\n configurable: true,\n enumerable: true,\n value: obj[prop]\n };\n }\n\n return undefined;\n }\n\n defineProperty(obj, key, descriptor) {\n Object.defineProperty(obj._expandos, key, descriptor);\n return true;\n }\n\n deleteProperty(obj, prop) {\n if (prop in obj._expandos) {\n delete obj._expandos[prop];\n }\n }\n\n ownKeys(obj) {\n const fromExpandos = Reflect.ownKeys(obj._expandos);\n const fromObj = Reflect.ownKeys(obj).filter(k => !k.startsWith("_"));\n return fromExpandos.concat(fromObj);\n }\n\n}\n\nexports.ProxyHandler = ProxyHandler;\n\n/***/ }),\n/* 17 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Util = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Util extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._scandCache = new Map();\n this._months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];\n this._days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];\n this.MILLISECONDS_IN_DAY = 86400000;\n this.MILLISECONDS_IN_WEEK = 604800000;\n this._externalCall = data.externalCall;\n }\n\n printf(...args) {\n if (args.length === 0) {\n throw new Error("Invalid number of params in printf");\n }\n\n if (typeof args[0] !== "string") {\n throw new TypeError("First argument of printf must be a string");\n }\n\n const pattern = /%(,[0-4])?([+ 0#]+)?(\\d+)?(\\.\\d+)?(.)/g;\n const PLUS = 1;\n const SPACE = 2;\n const ZERO = 4;\n const HASH = 8;\n let i = 0;\n return args[0].replace(pattern, function (match, nDecSep, cFlags, nWidth, nPrecision, cConvChar) {\n if (cConvChar !== "d" && cConvChar !== "f" && cConvChar !== "s" && cConvChar !== "x") {\n const buf = ["%"];\n\n for (const str of [nDecSep, cFlags, nWidth, nPrecision, cConvChar]) {\n if (str) {\n buf.push(str);\n }\n }\n\n return buf.join("");\n }\n\n i++;\n\n if (i === args.length) {\n throw new Error("Not enough arguments in printf");\n }\n\n const arg = args[i];\n\n if (cConvChar === "s") {\n return arg.toString();\n }\n\n let flags = 0;\n\n if (cFlags) {\n for (const flag of cFlags) {\n switch (flag) {\n case "+":\n flags |= PLUS;\n break;\n\n case " ":\n flags |= SPACE;\n break;\n\n case "0":\n flags |= ZERO;\n break;\n\n case "#":\n flags |= HASH;\n break;\n }\n }\n }\n\n cFlags = flags;\n\n if (nWidth) {\n nWidth = parseInt(nWidth);\n }\n\n let intPart = Math.trunc(arg);\n\n if (cConvChar === "x") {\n let hex = Math.abs(intPart).toString(16).toUpperCase();\n\n if (nWidth !== undefined) {\n hex = hex.padStart(nWidth, cFlags & ZERO ? "0" : " ");\n }\n\n if (cFlags & HASH) {\n hex = `0x${hex}`;\n }\n\n return hex;\n }\n\n if (nPrecision) {\n nPrecision = parseInt(nPrecision.substring(1));\n }\n\n nDecSep = nDecSep ? nDecSep.substring(1) : "0";\n const separators = {\n 0: [",", "."],\n 1: ["", "."],\n 2: [".", ","],\n 3: ["", ","],\n 4: ["\'", "."]\n };\n const [thousandSep, decimalSep] = separators[nDecSep];\n let decPart = "";\n\n if (cConvChar === "f") {\n if (nPrecision !== undefined) {\n decPart = Math.abs(arg - intPart).toFixed(nPrecision);\n } else {\n decPart = Math.abs(arg - intPart).toString();\n }\n\n if (decPart.length > 2) {\n decPart = `${decimalSep}${decPart.substring(2)}`;\n } else if (cFlags & HASH) {\n decPart = ".";\n } else {\n decPart = "";\n }\n }\n\n let sign = "";\n\n if (intPart < 0) {\n sign = "-";\n intPart = -intPart;\n } else if (cFlags & PLUS) {\n sign = "+";\n } else if (cFlags & SPACE) {\n sign = " ";\n }\n\n if (thousandSep && intPart >= 1000) {\n const buf = [];\n\n while (true) {\n buf.push((intPart % 1000).toString().padStart(3, "0"));\n intPart = Math.trunc(intPart / 1000);\n\n if (intPart < 1000) {\n buf.push(intPart.toString());\n break;\n }\n }\n\n intPart = buf.reverse().join(thousandSep);\n } else {\n intPart = intPart.toString();\n }\n\n let n = `${intPart}${decPart}`;\n\n if (nWidth !== undefined) {\n n = n.padStart(nWidth - sign.length, cFlags & ZERO ? "0" : " ");\n }\n\n return `${sign}${n}`;\n });\n }\n\n iconStreamFromIcon() {}\n\n printd(cFormat, oDate) {\n switch (cFormat) {\n case 0:\n return this.printd("D:yyyymmddHHMMss", oDate);\n\n case 1:\n return this.printd("yyyy.mm.dd HH:MM:ss", oDate);\n\n case 2:\n return this.printd("m/d/yy h:MM:ss tt", oDate);\n }\n\n const handlers = {\n mmmm: data => {\n return this._months[data.month];\n },\n mmm: data => {\n return this._months[data.month].substring(0, 3);\n },\n mm: data => {\n return (data.month + 1).toString().padStart(2, "0");\n },\n m: data => {\n return (data.month + 1).toString();\n },\n dddd: data => {\n return this._days[data.dayOfWeek];\n },\n ddd: data => {\n return this._days[data.dayOfWeek].substring(0, 3);\n },\n dd: data => {\n return data.day.toString().padStart(2, "0");\n },\n d: data => {\n return data.day.toString();\n },\n yyyy: data => {\n return data.year.toString();\n },\n yy: data => {\n return (data.year % 100).toString().padStart(2, "0");\n },\n HH: data => {\n return data.hours.toString().padStart(2, "0");\n },\n H: data => {\n return data.hours.toString();\n },\n hh: data => {\n return (1 + (data.hours + 11) % 12).toString().padStart(2, "0");\n },\n h: data => {\n return (1 + (data.hours + 11) % 12).toString();\n },\n MM: data => {\n return data.minutes.toString().padStart(2, "0");\n },\n M: data => {\n return data.minutes.toString();\n },\n ss: data => {\n return data.seconds.toString().padStart(2, "0");\n },\n s: data => {\n return data.seconds.toString();\n },\n tt: data => {\n return data.hours < 12 ? "am" : "pm";\n },\n t: data => {\n return data.hours < 12 ? "a" : "p";\n }\n };\n const data = {\n year: oDate.getFullYear(),\n month: oDate.getMonth(),\n day: oDate.getDate(),\n dayOfWeek: oDate.getDay(),\n hours: oDate.getHours(),\n minutes: oDate.getMinutes(),\n seconds: oDate.getSeconds()\n };\n const patterns = /(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t|\\\\.)/g;\n return cFormat.replace(patterns, function (match, pattern) {\n if (pattern in handlers) {\n return handlers[pattern](data);\n }\n\n return pattern.charCodeAt(1);\n });\n }\n\n printx(cFormat, cSource) {\n const handlers = [x => x, x => x.toUpperCase(), x => x.toLowerCase()];\n const buf = [];\n let i = 0;\n const ii = cSource.length;\n let currCase = handlers[0];\n let escaped = false;\n\n for (const command of cFormat) {\n if (escaped) {\n buf.push(command);\n escaped = false;\n continue;\n }\n\n if (i >= ii) {\n break;\n }\n\n switch (command) {\n case "?":\n buf.push(currCase(cSource.charAt(i++)));\n break;\n\n case "X":\n while (i < ii) {\n const char = cSource.charAt(i++);\n\n if ("a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= char && char <= "9") {\n buf.push(currCase(char));\n break;\n }\n }\n\n break;\n\n case "A":\n while (i < ii) {\n const char = cSource.charAt(i++);\n\n if ("a" <= char && char <= "z" || "A" <= char && char <= "Z") {\n buf.push(currCase(char));\n break;\n }\n }\n\n break;\n\n case "9":\n while (i < ii) {\n const char = cSource.charAt(i++);\n\n if ("0" <= char && char <= "9") {\n buf.push(char);\n break;\n }\n }\n\n break;\n\n case "*":\n while (i < ii) {\n buf.push(currCase(cSource.charAt(i++)));\n }\n\n break;\n\n case "\\\\":\n escaped = true;\n break;\n\n case ">":\n currCase = handlers[1];\n break;\n\n case "<":\n currCase = handlers[2];\n break;\n\n case "=":\n currCase = handlers[0];\n break;\n\n default:\n buf.push(command);\n }\n }\n\n return buf.join("");\n }\n\n scand(cFormat, cDate) {\n if (cDate === "") {\n return new Date();\n }\n\n switch (cFormat) {\n case 0:\n return this.scand("D:yyyymmddHHMMss", cDate);\n\n case 1:\n return this.scand("yyyy.mm.dd HH:MM:ss", cDate);\n\n case 2:\n return this.scand("m/d/yy h:MM:ss tt", cDate);\n }\n\n if (!this._scandCache.has(cFormat)) {\n const months = this._months;\n const days = this._days;\n const handlers = {\n mmmm: {\n pattern: `(${months.join("|")})`,\n action: (value, data) => {\n data.month = months.indexOf(value);\n }\n },\n mmm: {\n pattern: `(${months.map(month => month.substring(0, 3)).join("|")})`,\n action: (value, data) => {\n data.month = months.findIndex(month => month.substring(0, 3) === value);\n }\n },\n mm: {\n pattern: `(\\\\d{2})`,\n action: (value, data) => {\n data.month = parseInt(value) - 1;\n }\n },\n m: {\n pattern: `(\\\\d{1,2})`,\n action: (value, data) => {\n data.month = parseInt(value) - 1;\n }\n },\n dddd: {\n pattern: `(${days.join("|")})`,\n action: (value, data) => {\n data.day = days.indexOf(value);\n }\n },\n ddd: {\n pattern: `(${days.map(day => day.substring(0, 3)).join("|")})`,\n action: (value, data) => {\n data.day = days.findIndex(day => day.substring(0, 3) === value);\n }\n },\n dd: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.day = parseInt(value);\n }\n },\n d: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.day = parseInt(value);\n }\n },\n yyyy: {\n pattern: "(\\\\d{4})",\n action: (value, data) => {\n data.year = parseInt(value);\n }\n },\n yy: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.year = 2000 + parseInt(value);\n }\n },\n HH: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n H: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n hh: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n h: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n MM: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.minutes = parseInt(value);\n }\n },\n M: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.minutes = parseInt(value);\n }\n },\n ss: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.seconds = parseInt(value);\n }\n },\n s: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.seconds = parseInt(value);\n }\n },\n tt: {\n pattern: "([aApP][mM])",\n action: (value, data) => {\n const char = value.charAt(0);\n data.am = char === "a" || char === "A";\n }\n },\n t: {\n pattern: "([aApP])",\n action: (value, data) => {\n data.am = value === "a" || value === "A";\n }\n }\n };\n const escapedFormat = cFormat.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, "\\\\$&");\n const patterns = /(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t)/g;\n const actions = [];\n const re = escapedFormat.replace(patterns, function (match, patternElement) {\n const {\n pattern,\n action\n } = handlers[patternElement];\n actions.push(action);\n return pattern;\n });\n\n this._scandCache.set(cFormat, [re, actions]);\n }\n\n const [re, actions] = this._scandCache.get(cFormat);\n\n const matches = new RegExp(re, "g").exec(cDate);\n\n if (!matches || matches.length !== actions.length + 1) {\n return null;\n }\n\n const data = {\n year: 0,\n month: 0,\n day: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n am: null\n };\n actions.forEach((action, i) => action(matches[i + 1], data));\n\n if (data.am !== null) {\n data.hours = data.hours % 12 + (data.am ? 0 : 12);\n }\n\n return new Date(data.year, data.month, data.day, data.hours, data.minutes, data.seconds);\n }\n\n spansToXML() {}\n\n stringFromStream() {}\n\n xmlToSpans() {}\n\n}\n\nexports.Util = Util;\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\nvar exports = __webpack_exports__;\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nObject.defineProperty(exports, "initSandbox", ({\n enumerable: true,\n get: function () {\n return _initialization.initSandbox;\n }\n}));\n\nvar _initialization = __w_pdfjs_require__(1);\n\nconst pdfjsVersion = \'2.13.216\';\nconst pdfjsBuild = \'399a0ec60\';\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});'];
code.push("delete dump;");
let success = false;
let buf = 0;
@@ -269,7 +269,7 @@ class Sandbox {
}
dispatchEvent(event) {
- this.support.callSandboxFunction("dispatchEvent", event);
+ this.support?.callSandboxFunction("dispatchEvent", event);
}
dumpMemoryUse() {
diff --git a/js/pdfjs/build/pdf.sandbox.js.map b/js/pdfjs/build/pdf.sandbox.js.map
index c04ab1b..53c1f1a 100644
--- a/js/pdfjs/build/pdf.sandbox.js.map
+++ b/js/pdfjs/build/pdf.sandbox.js.map
@@ -1 +1 @@
-{"version":3,"file":"pdf.sandbox.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf.sandbox/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.sandbox/external/quickjs/quickjs-eval.js","webpack://pdfjs-dist/build/pdf.sandbox/src/pdf.sandbox.external.js","webpack://pdfjs-dist/build/pdf.sandbox/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.sandbox/src/pdf.sandbox.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.sandbox\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.sandbox\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.sandbox\"] = factory();\n})(this, function() {\nreturn ","\nvar Module = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n \n return (\nfunction(Module) {\n Module = Module || {};\n\n\nvar b;b||(b=typeof Module !== 'undefined' ? Module : {});var h,n;b.ready=new Promise(function(a,c){h=a;n=c});var q={},r;for(r in b)b.hasOwnProperty(r)&&(q[r]=b[r]);var t=\"\";\"undefined\"!==typeof document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf(\"blob:\")?t=t.substr(0,t.lastIndexOf(\"/\")+1):t=\"\";var aa=b.print||console.log.bind(console),u=b.printErr||console.warn.bind(console);for(r in q)q.hasOwnProperty(r)&&(b[r]=q[r]);q=null;var v;\nb.wasmBinary&&(v=b.wasmBinary);var noExitRuntime=b.noExitRuntime||!0;\"object\"!==typeof WebAssembly&&w(\"no native wasm support detected\");var x,z=!1;function A(a){var c=b[\"_\"+a];c||w(\"Assertion failed: Cannot call unknown function \"+(a+\", make sure it is exported\"));return c}\nfunction B(a,c,d,e){var f={string:function(l){var p=0;if(null!==l&&void 0!==l&&0!==l){var U=(l.length<<2)+1;p=C(U);D(l,E,p,U)}return p},array:function(l){var p=C(l.length);F.set(l,p);return p}},g=A(a),k=[];a=0;if(e)for(var m=0;m<e.length;m++){var y=f[d[m]];y?(0===a&&(a=G()),k[m]=y(e[m])):k[m]=e[m]}d=g.apply(null,k);d=function(l){return\"string\"===c?H(l):\"boolean\"===c?!!l:l}(d);0!==a&&I(a);return d}var J=\"undefined\"!==typeof TextDecoder?new TextDecoder(\"utf8\"):void 0;\nfunction K(a,c,d){var e=c+d;for(d=c;a[d]&&!(d>=e);)++d;if(16<d-c&&a.subarray&&J)return J.decode(a.subarray(c,d));for(e=\"\";c<d;){var f=a[c++];if(f&128){var g=a[c++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|g);else{var k=a[c++]&63;f=224==(f&240)?(f&15)<<12|g<<6|k:(f&7)<<18|g<<12|k<<6|a[c++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e}function H(a){return a?K(E,a,void 0):\"\"}\nfunction D(a,c,d,e){if(0<e){e=d+e-1;for(var f=0;f<a.length;++f){var g=a.charCodeAt(f);if(55296<=g&&57343>=g){var k=a.charCodeAt(++f);g=65536+((g&1023)<<10)|k&1023}if(127>=g){if(d>=e)break;c[d++]=g}else{if(2047>=g){if(d+1>=e)break;c[d++]=192|g>>6}else{if(65535>=g){if(d+2>=e)break;c[d++]=224|g>>12}else{if(d+3>=e)break;c[d++]=240|g>>18;c[d++]=128|g>>12&63}c[d++]=128|g>>6&63}c[d++]=128|g&63}}c[d]=0}}\nfunction L(a){for(var c=0,d=0;d<a.length;++d){var e=a.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:c+4}return c}function ba(a){var c=L(a)+1,d=M(c);d&&D(a,F,d,c);return d}var ca,F,E,N;\nfunction da(){var a=x.buffer;ca=a;b.HEAP8=F=new Int8Array(a);b.HEAP16=new Int16Array(a);b.HEAP32=N=new Int32Array(a);b.HEAPU8=E=new Uint8Array(a);b.HEAPU16=new Uint16Array(a);b.HEAPU32=new Uint32Array(a);b.HEAPF32=new Float32Array(a);b.HEAPF64=new Float64Array(a)}var O,ea=[],fa=[],ha=[],ia=[];function ja(){var a=b.preRun.shift();ea.unshift(a)}var P=0,Q=null,R=null;b.preloadedImages={};b.preloadedAudios={};\nfunction w(a){if(b.onAbort)b.onAbort(a);u(a);z=!0;a=new WebAssembly.RuntimeError(\"abort(\"+a+\"). Build with -s ASSERTIONS=1 for more info.\");n(a);throw a;}function S(a){return String.prototype.startsWith?a.startsWith(\"data:application/octet-stream;base64,\"):0===a.indexOf(\"data:application/octet-stream;base64,\")}var T=\"data:application/octet-stream;base64,AGFzbQEAAAABxQZsYAR/fn9/AX5gA39/fwF/YAJ/fwF/YAJ/fwBgAX8Bf2AFf35/f38BfmADf39/AGABfAF8YAF/AGACf34BfmACf34AYAR/f39/AX9gAn9/AX5gAn9+AX9gA39/fgF/YAN/fn8BfmABfgF/YAN/fn8AYAZ/fn9/f38BfmADf35/AX9gBX9/f39/AX9gBn9+fn9/fwF+YAN/fn4BfmAEf39+fwF/YAN/f38BfmAEf39/fwBgBn9/f39/fwF/YAR/f39/AX5gA39+fgF/YAF/AX5gBX9+fn5+AGABfgF+YAJ8fAF8YAABf2AFf35/fn8Bf2AHf35/fn5+fwF/YAV/fn5/fwF+YAAAYAV/f39/fwBgA39+fgBgBH9+fn8AYAd/f39/f39/AX9gBn9+f35+fwF/YAV/fn5+fwF/YAV/fn5/fwBgAn5/AGAJf39/f39/f39/AX9gBH9+f38Bf2AEf35+fwF/YAJ+fwF/YAZ/f39/f38BfmAHf35/f39/fwF+YAR/fn9+AX5gBH9+fn8BfmAHf39/f39/fwBgA39/fgBgBH9/fn8AYAR/fn9/AGAIf39/f39/f38Bf2AEf39/fgF/YAR/fn9+AX9gBH9+fn4Bf2AGf3x/f39/AX9gA35/fwF/YAR/fn5+AX5gAn5+AX5gAnx/AXxgA3x8fwF8YAZ/f39/f38AYAN/f3wAYAV/fn9/fwBgBH9+f34AYAJ/fABgB3x/f39/f38AYAp/f39/f39/f39/AX9gB39/f35+fn8Bf2AFf39+f38Bf2AEf39+fgF/YAV/f35+fwF/YAZ/f35+f38Bf2AGf39+fn5+AX9gBX9+f39/AX9gBn9+f39/fwF/YAV/fn5+fgF/YAZ/fn5+fn8Bf2AEf3x/fwF/YAN+fn4Bf2AEfn5+fgF/YAJ8fwF/YAJ8fAF/YAABfmABfAF+YAV/f39/fwF+YAd/f39/f39+AX5gBX9/f39+AX5gBH9/f34BfmADf39+AX5gBH9/fn8BfmAFf39+fn4BfmAFf35/fn8BfmAHf35+fn9/fwF+YAh/fn5+fn9+fgF+YAN/fnwBfmAFf3x/f38BfmABfwF8YAF+AXxgAn9/AXxgAn5+AXwCPQoBYQFhABkBYQFiACUBYQFjAAIBYQFkAAsBYQFlAAQBYQFmAAMBYQFnAAEBYQFoAAIB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QQBHDwsgAacPCyABpykCBCEEIAAgARAKIARC/////weDQgBSDwsgAactAAUhAiAAIAEQCiACQX9zQYABcUEHdg8LIANBC2pBEk8EQCABEEkiBb1C////////////AINCgYCAgICAgPj/AFQgBUQAAAAAAAAAAGJxDwsgACABEApBASECCyACCxkAIAAoAhAgARDnASIBRQRAIAAQxgELIAELPwEBfyMAQRBrIgIkAAJ/IAEgACgCEEcEQCACIAE2AgAgAEH91gAgAhATQX8MAQsgABAPCyEAIAJBEGokACAACyEAIAAoAgRBf0wEQCAAIAFBAXRqLwEQDwsgACABai0AEAsoAQF/IwBBEGsiAiQAIAIgATsBDiAAIAJBDmpBAhCHARogAkEQaiQACwsAIAAgAUEBEOMFC5oLAgV/D34jAEHgAGsiBSQAIAJCIIYgAUIgiIQhDyAEQi+GIANCEYiEIQwgBEL///////8/gyINQg+GIANCMYiEIRAgAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiC0IgiCERIA1CEYghEiAEQjCIp0H//wFxIQcCQAJ/IAJCMIinQf//AXEiCUEBa0H9/wFNBEBBACAHQQFrQf7/AUkNARoLIAFQIAJC////////////AIMiDkKAgICAgIDA//8AVCAOQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASAOQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgDoQhAkIAIQEgAlAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgDoRQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIA5C////////P1gEQCAFQdAAaiABIAsgASALIAtQIgYbeSAGQQZ0rXynIgZBD2sQciAFKQNYIgtCIIYgBSkDUCIBQiCIhCEPIAtCIIghEUEQIAZrIQYLIAYgAkL///////8/Vg0AGiAFQUBrIAMgDSADIA0gDVAiCBt5IAhBBnStfKciCEEPaxByIAUpA0giAkIPhiAFKQNAIgNCMYiEIRAgAkIvhiADQhGIhCEMIAJCEYghEiAGIAhrQRBqCyEGIAxC/////w+DIgIgAUL/////D4MiAX4iEyADQg+GQoCA/v8PgyIDIA9C/////w+DIg5+fCIEQiCGIg0gASADfnwiDCANVK0gAiAOfiIVIAMgC0L/////D4MiC358IhQgEEL/////D4MiDSABfnwiECAEIBNUrUIghiAEQiCIhHwiEyACIAt+IhYgAyARQoCABIQiD358IgMgDSAOfnwiESABIBJC/////weDQoCAgIAIhCIBfnwiEkIghnwiF3whBCAHIAlqIAZqQf//AGshBgJAIAsgDX4iGCACIA9+fCICIBhUrSACIAIgASAOfnwiAlatfCACIAIgFCAVVK0gECAUVK18fCICVq18IAEgD358IAEgC34iCyANIA9+fCIBIAtUrUIghiABQiCIhHwgAiABQiCGfCIBIAJUrXwgASABIBEgElatIAMgFlStIAMgEVatfHxCIIYgEkIgiIR8IgFWrXwgASAQIBNWrSATIBdWrXx8IgIgAVStfCIBQoCAgICAgMAAg1BFBEAgBkEBaiEGDAELIAxCP4ghAyABQgGGIAJCP4iEIQEgAkIBhiAEQj+IhCECIAxCAYYhDCADIARCAYaEIQQLIAZB//8BTgRAIApCgICAgICAwP//AIQhCkIAIQEMAQsCfiAGQQBMBEBBASAGayIHQYABTwRAQgAhAQwDCyAFQTBqIAwgBCAGQf8AaiIGEHIgBUEgaiACIAEgBhByIAVBEGogDCAEIAcQ1gIgBSACIAEgBxDWAiAFKQMwIAUpAziEQgBSrSAFKQMgIAUpAxCEhCEMIAUpAyggBSkDGIQhBCAFKQMAIQIgBSkDCAwBCyABQv///////z+DIAatQjCGhAsgCoQhCiAMUCAEQn9VIARCgICAgICAgICAf1EbRQRAIAogAkIBfCIBIAJUrXwhCgwBCyAMIARCgICAgICAgICAf4WEUEUEQCACIQEMAQsgCiACIAJCAYN8IgEgAlStfCEKCyAAIAE3AwAgACAKNwMIIAVB4ABqJAALagECfwJAIAAoAtgCIgNFDQAgACgC4AIiBCAAKALcAk4NACAAKALoAiABSw0AIAAoAuQC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AC0AAEEgcUUEQCABIAIgABCnBBoLC64CAAJAAkACQAJAIAJBA0wEQAJAAkACQAJAAkACQAJAAkACQCABQdgAaw4JAAECAwQFBgcICgsgACACQT1rQf8BcRAODwsgACACQTlrQf8BcRAODwsgACACQTVrQf8BcRAODwsgACACQTFrQf8BcRAODwsgACACQS1rQf8BcRAODwsgACACQSlrQf8BcRAODwsgACACQSVrQf8BcRAODwsgACACQSFrQf8BcRAODwsgACACQR1rQf8BcRAODwsgAkH/AUoNAQJAAkACQCABQdgAaw4DAAECBAsgAEHAARAODAULIABBwQEQDgwECyAAQcIBEA4MAwsgAUEiRg0BCyAAIAFB/wFxEA4gACACQf//A3EQMA8LIAAgAkEUa0H/AXEQDg8LIAAgAkH/AXEQDgscAQF/IAAgARA6BH9BAAUgAEGPxABBABAUQX8LCxkBAX8gASACED8iA0UEQCAAIAIQnAMLIAMLJgEBfyMAQRBrIgIkACACQQA2AgwgAEEBIAFBABD9ASACQRBqJAALGQAgACgCECABEJwCIgFFBEAgABDGAQsgAQsPACAAKAJAQYACaiABEA4LbwIBfgF/IAAhBAJAAkAgARAQDQAgACABQTsgAUEAEBIiAxALBEAgAw8LIAMQIA0BIAAgAxAKIAAgARCNAyIEDQBCgICAgOAADwsgBCgCKCACQQN0aikDABANIQMLIAAgAyACEFAhASAAIAMQCiABCzEAIAAgASACQoCAgIAIfEL/////D1gEfiACQv////8PgwUgArkQFQsgA0GHgAEQygILEAAgACAANgIEIAAgADYCAAtjAAJAAkAgAUEASA0AIAAoAqwCIAFMDQAgACgCpAIgAUEUbGoiACAAKAIAIAJqIgA2AgAgAEF/TA0BIAAPC0GeigFBoQ1ByKgBQcOKARAAAAtB0IoBQaENQcuoAUHDigEQAAALDAAgAEG80AFBABAUCw0AIAAgASABEEMQ/gELUAEBfgJAIANBwABxBEAgASADQUBqrYYhAkIAIQEMAQsgA0UNACACIAOtIgSGIAFBwAAgA2utiIQhAiABIASGIQELIAAgATcDACAAIAI3AwgLbQEBfyMAQYACayIFJAAgBEGAwARxIAIgA0xyRQRAIAUgAUH/AXEgAiADayICQYACIAJB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2RcQdiEHDAELQX8hBwsgCkEQaiQAIAcLTAECfyMAQRBrIgMkAAJAIAFBgIABcUUEQCABQYCAAnFFDQEgABD6AUUNAQsgA0EANgIMIABBBCACQQAQ/QFBfyEECyADQRBqJAAgBAvMAQECfwJAAkAgAUKAgICAcFoEQCABpyEDA0ACQCADLQAFQQRxRQ0AIAAoAhAoAkQgAy8BBkEYbGooAhQiBEUNACAEKAIQRQ0AIAAgA61CgICAgHCEEA0iASACIAQoAhAREwAhAiAAIAEQCiACDwsgA61CgICAgHCEEA0hASAAQQAgAyACEFMhBCAAIAEQCiAEDQIgAy8BBkEVa0H//wNxQQhNBEAgACACEKUDIgQNBAsgAygCECgCLCIDDQALC0EAIQQLIAQPCyAEQR91CxoAIAAgASACQQBOBH4gAq0FIAK4EBULEJ4BCwsAIABB/////wdxC80JAgR/BH4jAEHwAGsiBSQAIARC////////////AIMhCgJAAkAgAUIBfSILQn9RIAJC////////////AIMiCSABIAtWrXxCAX0iC0L///////+///8AViALQv///////7///wBRG0UEQCADQgF9IgtCf1IgCiADIAtWrXxCAX0iC0L///////+///8AVCALQv///////7///wBRGw0BCyABUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhBCABIQMMAgsgA1AgCkKAgICAgIDA//8AVCAKQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQQMAgsgASAJQoCAgICAgMD//wCFhFAEQEKAgICAgIDg//8AIAIgASADhSACIASFQoCAgICAgICAgH+FhFAiBhshBEIAIAEgBhshAwwCCyADIApCgICAgICAwP//AIWEUA0BIAEgCYRQBEAgAyAKhEIAUg0CIAEgA4MhAyACIASDIQQMAgsgAyAKhFBFDQAgASEDIAIhBAwBCyADIAEgASADVCAJIApUIAkgClEbIgcbIQogBCACIAcbIgtC////////P4MhCSACIAQgBxsiAkIwiKdB//8BcSEIIAtCMIinQf//AXEiBkUEQCAFQeAAaiAKIAkgCiAJIAlQIgYbeSAGQQZ0rXynIgZBD2sQciAFKQNoIQkgBSkDYCEKQRAgBmshBgsg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LQACENwBDQBBWQwEC0GDfwsMAgtBCgwBCyADCyEAIARBEGokACAAC58BAQJ/AkACQCACQv////8HWARAIAAgASACpxCTARB3IgRBAUgNAUF/IAQgACABIAIQngEiAhALGyEEDAILIAAgAhCdAyIFRQRAQX8hBAwBCwJAIAAgASAFEHciBEEBSARAQoCAgIAwIQIMAQtBfyAEIAAgASAFIAFBABASIgIQCxshBAsgACAFEBEMAQtCgICAgDAhAgsgAyACNwMAIAQLFgAgAEKAgICAcFoEQCAApyABNgIgCwsNACAAIAEgARBDEJ0CC3sBAX9BfyECIAAoAhQEf0F/BSABQoCAgIBwg0KAgICAkH9SBEAgACgCACABECsiARALBEAgABCIA0F/DwsgACABpyICQQAgAigCBEH/////B3EQVyECIAAoAgAgARAKIAIPCyAAIAGnIgBBACAAKAIEQf////8HcRBXCwtqAQF/IAAoAhQEQCAAKAIAIAEQCkF/DwsCQCABQoCAgIBwg0KAgICAkH9RDQAgACgCACABED4iARALRQ0AIAAQiANBfw8LIAAgAaciAkEAIAIoAgRB/////wdxEFchAiAAKAIAIAEQCiACCxYBAX8gAEIgiKciAUUgAUELakERS3ILSgECfyACQv////8HWARAIAAgASACIANBgIABEOABDwsgACACEJ0DIgRFBEAgACADEApBfw8LIAAgASAEIAMQSCEFIAAgBBARIAULggoBEn8jAEEwayIHJAAgAUEANgIAIAJBADYCACAHQQA2AiwgB0EANgIoIARBMHEhDiAEQRBxIREgAygCECIJECchBQJAAkACQAJ/A0AgCSgCICAISgRAAkAgBSgCBCINRQ0AQQAgESAFKAIAQYCAgIABcRsgBCAAIA0QpAMiC3ZBAXFFcg0AAkAgDkUNACAFKAIAQYCAgIB8cUGAgICAeEcNACADKAIUIAhBA3RqKAIAKAIQKQMAEIMBRQ0AIAAgBSgCBBDhAUF/DAQLIAAgB0EkaiANELIBBEAgDEEBaiEMDAELIAtFBEAgD0EBaiEPDAELIApBAWohCgsgBUEIaiEFIAhBAWohCAwBCwtBACEFAkAgAy0ABSIGQQRxRQ0AIAZBCHEEQCAEQQFxRQ0BIAMoAiggDGohDAwBCyADLwEGIgZBBUYEQCAEQQFx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HgAgACABIAJBAE4EfiACrQUgArgQFQsgAyAEEMoCC6wCAQR/IwBBEGsiAiQAAkACQAJAAkACQANAAkACQAJAIAEQVEEIag4QBAIFBQUFBQEIAAAGBQUICAULIAFC/////w+DIQEMBwsgACABQQEQwAEiARALRQ0BDAULCyAAIAJBCGogARCQAiEDIAAgARAKIAMEQCACIAM2AgwgAiADIAMQhgMiBGoiBTYCDEIAIQECQCAEIAIoAghGDQAgACAFIAJBDGpBAEEEEMICIgEQCw0AIAIgAigCDBCGAyACKAIMaiIENgIMIAIoAgggBCADa0YNACAAIAEQCkKAgICAwH4hAQsgACADEDYLIANFDQMMBAsgACABEAogAEGIwwBBABAUDAILIAAgARAKC0KAgICAwH4hAQwBC0KAgICA4AAhAQsgAkEQaiQAIAELzQIBA38CQCABQoCAgIBwVCACQv////8PVnINACACpyIEIAGnIgMoAihPDQACQAJAAkACQAJAAkACQAJAAkACQCADLwEGIgVBCGsOFgEKCgoKCgoKCgoKCgoDAgMEBQYHCAkACyAFQQJHDQkLIAMoAiQgBEEDdGopAwAQDQ8LIAMoAiQgBGowAABC/////w+DDwsgAygCJCAEajEAAA8LIAMoAiQgBEEBdGoyAQBC/////w+DDwsgAygCJCAEQQF0ajMBAA8LIAMoAiQgBEECdGo1AgAPCyADKAIkIARBAnRqKAIAIgBBAE4EQCAArQ8LIAC4EBUPCyADKAIkIARBAnRqKgIAuxAVDwsgAygCJCAEQQN0aisDABAVDwsgACACEDkhAyAAIAIQCiADRQRAQoCAgIDgAA8LIAAgASADIAFBABASIQEgACADEBEgAQuzAQEDfyABQoCAgIBwVARAQQAPCyABpyICLwEGQSlGBEAjAEEQayIEJAACQAJAIAAgBEEIaiABQeEAEIQBIgJFDQAgBCkDCCIBEBAEQCAAIAIpAwAQnwEhAwwCCyAAIAEgAikDCEEBIAIQNSIBEAsNACAAIAEQLCEDIAAgAikDABCfASICQQBIDQAgAiADRg0BIABBgNgAQQAQFAtBfyEDCyAEQRBqJAAgAw8LIAItAAVBAXELHgAgAEKAgICAcINCgICAgJB/UQRAIACnIAEQngQLCxYAIAAgACgCKCABQQN0aikDACAB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LCACTQ0BAn8CQCAAKAI4IAJBAnRqKAIAIgApAgRCgICAgICAgIBAg0KAgICAgICAgMAAUg0AIANBDGogABDoBUUNAEEBIAMoAgwiAEF/Rw0BGgtBACEAQQALIQIgASAANgIACyADQRBqJAAgAg8LQcovQaENQb8YQcI/EAAAC0UAIAAoAhAgASACEOYBIgEgAkVyRQRAIAAQxgEgAQ8LIAMEQCADQQAgACgCECABEKMEIgAgAmsiAiAAIAJJGzYCAAsgAQtpAQN+IAAgAkIgiCIDIAFCIIgiBH4gAkL/////D4MiAiABQv////8PgyIBfiIFQiCIIAIgBH58IgJCIIh8IAEgA34gAkL/////D4N8IgFCIIh8NwMIIAAgBUL/////D4MgAUIghoQ3AwAL+QECA34CfyMAQRBrIgUkAAJ+IAG9IgNC////////////AIMiAkKAgICAgICACH1C/////////+//AFgEQCACQjyGIQQgAkIEiEKAgICAgICAgDx8DAELIAJCgICAgICAgPj/AFoEQCADQjyGIQQgA0IEiEKAgICAgIDA//8AhAwBCyACUARAQgAMAQsgBSACQgAgA6dnQSBqIAJCIIinZyACQoCAgIAQVBsiBkExahByIAUpAwAhBCAFKQMIQoCAgICAgMAAhUGM+AAgBmutQjCGhAshAiAAIAQ3AwAgACACIANCgICAgICAgICAf4OENwMIIAVBEGokAAsqAQF/IwBBEGsiAyQAIAMgAjYCDCAAIAEgAkHuAkEAEK0EGiADQRBqJAALDQAgAEEAIAFBABChBAsbACAAIAFB/wFxEA4gACgCBCEBIAAgAhAcIAELlwwBB38jAEEgayICJAACQAJAAkACQAJAAn8gACgCECIDQYN/RwRAQQAgA0FXRw0BGiAAKAJAIgMtAGxBAXFFBEAgAEHjhgFBABATDAMLIAMoAmRFBEAgAEH+hgFBABATDAMLQX8hBSAAEA8NBQJ/AkACQAJAIAAoAhAiA0Epaw4EAgEBAgALIANB3QBGIANBOmtBAklyIANB/QBGcg0BCyAAKAIwDQAgA0EqRgRAIAAQDw0IQQEhBAsgACABELkBDQcgBEUMAQsgAEEGEAxBAQshAyAAKAJALQBsIQEgA0UEQCAAEDQhBSAAEDQhAyAAQf4AQf0AIAFBA0YbEAwgAEEOEAwg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ACEIDAMLIABB8AAQDCAAQRQQDEHKACEIDAILEAEACwJAAkACQCAIQccAaw4EAQQEAgALIAhBtgFHDQMgABA0IQcgAEG5ARAMIAAgChAaIAAgBxA4IAAgCxAWIAkgB0EBEG8aQTwhCAwDCyAAQfEAEAxBxwAhCAwCCyAAQfAAEAxBygAhCAwBCyAAIAgQDAsgASAINgIAIAIgCzYCACADIAo2AgAgBCAHNgIAIAUEQCAFIAw2AgALQQALWgEDfyMAQRBrIgEkAAJAIAAoAhAiA0Gqf0YNACADQTtHBEAgA0H9AEYNASAAKAIwDQEgAUE7NgIAIABB/dYAIAEQE0F/IQIMAQsgABAPIQILIAFBEGokACACCxkAIAEgAkEPcToABCABQQhqIABB0ABqEEwLvAEBBX8jAEEgayIEJAACfgJAIAJCgICAgHCDQoCAgICQf1IEQCAAIAIQPiICEAsNAQsgACAEQQhqIAEQQyIGIAMQQyIHaiACpyIFKAIEIghB/////wdxaiAIQR92EKoDDQAgBEEIaiABIAYQnQIaIARBCGogBUEAIAUoAgRB/////wdxEFcaIARBCGogAyAHEJ0CGiAAIAIQCiAEQQhqEDcMAQsgACACEApCgICAgOAACyECIARBIGokACACCzsAAn8gACABQYCABE8Ef0F/IAAgAUGAgARrQQp2QYCwA2oQlAENARogAUH/B3FBgLgDcgUgAQsQlAELC1MBAX8gAUKAgICAcFoEfyABpy8BBiICQSlGBEACf0EAIAFBKRA/IgJFDQAaIAItABEEQCAAEMgCQX8MAQsgACACKQMAEL8BCw8LIAJBAkYFQQALC8kCAgF+An8jAEEQayIFJAACQCABQoCAgIBwVARAIAEhAwwBCyACQW9xIQQCQAJAAkAgAkEQcQ0AIAAgAUHCASABQQAQEiIDEAsNASADEBANACADECYNACAFIABBxgBBFiAEQQFGG0HIACAEGxAxNwMIIAAgAyABQQEgBUEIahA1IQMgACAFKQMIEAogAxALDQEgACABEAogA0KAgICAcFQNAyAAIAMQCiAAQajDAEEAEBQMAgsgBEEARyEEQQAhAgNAIAJBAkcEQCAAIAFBN0E5IAIgBEYbIAFBABASIgMQCw0CAkAgACADEDpFDQAgACADIAFBAEEAEDUiAxALDQMgA0L/////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IAJqLQAAIAFGDQIgAkEBaiECDAALAAtBfyECCyACC44BAQF/IwBBEGsiAyQAIAMgAjcDCAJAIAAgAUGGASABQQAQEiICEAsNACAAIAIQOgRAIAAgAiABQQEgA0EIahA1IgIQCw0BIAIQIA0BIAIQJg0BIAAgAhAKIABBj9MAQQAQFEKAgICA4AAhAgwBCyAAIAIQCiAAIAFBASADQQhqEJEFIQILIANBEGokACACC5oBAQN/IAEoAgAhAwJAIAAoAgQiAkF/TARAIAAgA0EBdGovARAiBEGA+ANxQYCwA0cgAkH/////B3EgA0EBaiICTHINASAAIAJBAXRqLwEQIgBBgPgDcUGAuANHDQEgBEEKdEGA+D9xIABB/wdxckGAgARqIQQgA0ECaiECDAELIANBAWohAiAAIANqLQAQIQQLIAEgAjYCACAECygAIAAgAkEwIAJBABASIgIQCwRAIAFBADYCAEF/DwsgACABIAIQ6QMLMwEBfwJAIAFCgICAgHBUDQAgAaciAy8BBkESRw0AIANBIGoPCyACBEAgAEESEJwDC0EACzkAIABB/wBNBEAgAEEDdkH8////AXFB4N8BaigCACAAdkEBcQ8LIABBfnFBjMAARiAAELgEQQBHcgtdAQF/QX8hBAJAIAAgARApIgEQCw0AIAAgAacgAhCUBCEEIAAgARAKIAQNACADQYCAAXFFBEBBACEEIANBgIACcUUNASAAEPoBRQ0BCyAAQfAYQQAQFEF/IQQLIAQL2AICA38CfCABEFQhBiACEFQhBAJAAkACfAJAAkACQAJAAkACQAJAAkAgBkEIag4QAgEKCgoKCgMEAAkJCgoKBQoLIARBAUcNCSABpyACp0YPCyAEQXlHDQggAacgAqcQlQJFIQUMCAsgAacgAqdGIARBeEZxIQUMBwsgBEF/Rw0GIAGnIAKnRiEFDAYLIAGntyEHIARBB0YNASAEDQUgAqe3DAMLIAEQSSEHIARFDQEgBEEHRw0ECyACEEkMAQsgAqe3CyEIAkAgAwRAIAe9Qv///////////wCDIgFCgICAgICAgPj/AFhBACAIvUL///////////8AgyICQoGAgICAgID4/wBUG0UEQCABQoGAgICAgID4/wBUIAJCgICAgICAgPj/AFZzDwsgA0ECRw0BCyAHIAhhDwsgB70gCL1RDwsg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IQ5BASEJIAUCfyAFIAhBAnYgAmwiAWoiByAFIAFBAXRqIgYgBCADEQEAIQAgBiAFIAFBA2xqIgogBCADEQEAIQECQCAAQX9MBEAgAUEASA0BIAogByAHIAogBCADEQEAQQBIGwwCCyABQQBKDQAgByAKIAcgCiAEIAMRAQBBAEgbIQYLIAYLIAIgDREGACAFIAIgCGxqIgohASAKIQYgAiAFaiIPIQBBASERA0ACQAJAIAAgAU8NACAFIAAgBCADEQEAIgdBf0wNACAHDQEgDyAAIAIgDREGACACIA9qIQ8gEUEBaiERDAELAkADQCAAIAEgEGoiAU8NASAFIAEgBCADEQEAIgdBAEwEQCAHDQEgBiAQaiIGIAEgAiANEQYAIAhBAWshCAwBCwsgACABIAIgDREGAAwBCyAFIAAgACAPayIHIA8gBWsiASABIAdLGyIBayABIBIRBgAgACAKIAYgAGsiASAKIAZrIgAgACABSxsiAGsgACASEQYAIAggCWshBiAKIAFrIQECQCAGIAkgEWsiCEkEQCAFIQkgCCEAIAEhBSAGIQgMAQsgASEJIAYhAAsgCyAONgIIIAsgADYCBCALIAk2AgAgC0EMaiELDAMLIAAgAmohACAJQQFqIQkMAAsACwsgACAFaiEGIAUhCQNAIAIgCWoiCSEAIAYgCU0NAQNAIAAgBU0NASAAIBBqIgEgACAEIAMRAQBBAUgNASAAIAEgAiANEQYAIAEhAAwACwALAAsACyAMQeAEaiQAC08BAX8gARCOAQRAIAEQDQ8LAkAgAUKAgICAcFQNACABpyICLwEGQQRHDQAgAikDICIBEI4BRQ0AIAEQDQ8LIABB2bQBQQAQFEKAgICA4AALkAIBAn8jAEEQayIDJAAgAyACNwMIQoCAgIDgACECAkAgACABEL8BIgRBAEgNACAERQRAIABCgICAgDBBASADQQhqEOYCIQIMAQsgACABQTwgAUEAEBIiARALBEAgASECDAELAkACQCABELEBRQ0AIAAgARCNAyIERQ0BIAAgBEYNACAAIAEgBCkDQBBYRQ0AIAAgARAKQoCAgIAwIQELAn4gARAgBEAgACABQcwBIAFBABASIQIgACABEAogAhALDQNCgICAgDAgAiACECYbIQELIAELEBAEQCAAQoCAgIAwQQEgA0EIahDmAiECDAIL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JAAgAAvcBAIGfwJ+AkAgAUKAgICAcINCgICAgJB/UgRAQoCAgIDgACEJIAAgARA+IgEQCw0BCwJAIAJCgICAgHCDQoCAgICQf1ENAEKAgICA4AAhCSAAIAIQPiICEAtFDQAgASECDAELAkAgAqciBCkCBCIJQv////8Hg1ANAAJAIAGnIgMoAgBBAUcNACADKQIEIAmFp0EASA0AIAAoAhAgAxCjBCAEKAIEIgVB/////wdxIgcgAykCBCIJpyIIQf////8HcSIGaiAFQR92dCAIQR92IghrQRFqSQ0AIAgEQCADIAZBAXRqQRBqIARBEGogBUEBdBAjGiADIAQpAgQgCXxC/////weDIAlCgICAgHiDhDcCBAwCCyADQRBqIgUgBmogBEEQaiAHECMaIAMgBCkCBCAJfEL/////B4MiCiAJQoCAgIB4g4Q3AgQgBSAKp2pBADoAAAwBCwJ+AkACQCAEKQIEIgmnQf////8HcSADKQIEIgqnQf////8HcWoiBkGAgICABE8EQCAAQfQNQQAQQQwBCyAAIAYgCSAKhKdBH3YiBxD8ASIFDQELQoCAgIDgAAwBCwJAIAdFBEAgBUEQaiADQRBqIAMoAgRB/////wdxECMiByADKAIEQf////8HcWogBEEQaiAEKAIEQf////8HcRAjGiAGIAdqQQA6AAAMAQsgBUEQaiIGIAMgAygCBEH/////B3EQlQUgBiADKAIEQQF0aiAEIAQoAgRB/////wdxEJUFCyAFrUKAgICAkH+ECyEJIAAgARAKDAELIAEhCQsgACACEAogCQtAACAAAn8CfyADBEAgASgCJCACQQN0akEEagwBC0EAIAEoAiAiA0UNARogAyABLwEoIAJqQQR0agsoAgALEOEBCwsAIABB4ztBABAUC50MAgx/BH4jAEGAAWsiCiQAIAohBSMAQeABayIIJAACQCABvSIRQoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgEUL///////////8Ag0KBgICAgICA+P8AWgRAIAVBzsK5AjYAAAwCCyABRAAAAAAAAAAAYwRAIAVBLToAACAFQQFqIQULIAVBvMMALQAAOgAIIAVBtMMAKQAANwAADAELAkAgBEUEQAJ+IAGZRAAAAAAAAOBDYwRAIAGwDAELQoCAgICAgICAgH8LIhJC/////////w98Qv7///////8fViASuSABYnINASAFAn8gCEHVAWoiA0EAOgAAIBIgEkI/hyIRfCARhSERIAKtIRMDQCADIgJBAWsiA0EwQdcAIBEgESATgCIUIBN+faciBEEKSBsgBGo6AAAgESATWiEEIBQhESAEDQALIBJCf1cEQCACQQJrIgNBLToAAAsgAwsQiQYMAgtEAAAAAAAAAAAgASABRAAAAAAAAAAAYRshASAEQQJHDQAjAEGAAmsiAiQAAkAgAkGAAWogASADQQFqIgRBABCFAyACai0Af0E1Rw0AIAJBgAFqIAEgBEGACBCFAyIGIAIgASAEQYAQEIUDRw0AIAJBgAFqIAIgBhB0DQBBgAhBgBAgAi0AgAFBLUYbIQcLIAUgASADIAcQhQMaIAJBgAJqJAAMAQsgAyECIAhBCGohDSAIQQxqIQ4gCEEQaiELIwBBkANrIgckAAJAIARBA3FBAUYiD0UEQEERIQJBASEMA0AgAiAMTQRAQQAhCQwDCyABIAIgDGpBAXYiCSANIA4gC0EAIAdBkAJqELwCIAdBkAJqEPkFIAFhBEAgCUEBIAlBAUgbIQYDQCAJQQJIBEAgBiECDAMLIAkiAkEBayIQIQkgCyAQai0AAEEwRg0ACwUgCUEBaiEMCwwACwALIAEgAkEBaiIGIAdBDGogB0EIaiAHQZABakEAIAdBkAJqELwCIAdBkAFqIAJqLQAAQTVHDQAgASAGIAdBDGogB0EIaiAHQZABakGACCAHQZACahC8AiABIAYgB0EEaiAHIAdBEGpBgBAgB0GQAmoQvAIgB0GQAWogB0EQaiAGEHQNACAHKAIMIAcoAgRHDQBBgAhBgBAgBygCCBshCQsgASACIA0gDiALIAkgB0GQAmoQvAIgB0GQA2okACAIKAIMBEAgBUEtOgAAIAVBAWohBQsgCCgCCCEGAkAgBEEEcQ0AIAZBAUggBiADQRUgDxtKckUEQCACIAZMBEBBACEEIAYgAmsiA0EAIANBAEobIQMgBSAIQRBqIAIQIyACaiEFA0AgAyAERwRAIAVBMDoAACAEQQFqIQQgBUEBaiEFDAELCyAFQQA6AAAMAwsgBSAIQRBqIAYQIyAGaiIEQS46AABBACEFIAIgBmsiAkEAIAJBAEobIQIDQCAEQQFqIQQgAiAFRwRAIAQgCEEQaiAFIAZqai0AADoAACAFQQFqIQUMAQsLIARBADoAAAwCCyAGQQVqQQVLDQAgBUGw3AA7AABBACEEQQAgBmsiA0EAIANBAEobIQMgBUECaiEFA0AgAyAERwRAIAVBMDoAACAEQQFqIQQgBUEBaiEFDAELCyAFIAhBEGogAhAjIAJqQQA6AAAMAQsgBSAILQAQOgAAAkAgAkECSARAIAVBAWohBAwBCyAFQS46AAEgBUECaiEEQQEhBQNAIAIgBUYNASAEIAhBEGogBWotAAA6AAAgBUEBaiEFIARBAWohBAwACwALIARB5QA6AAAgBkEBayEDIAZBAUgEfyAEQQFqBSAEQSs6AAEgBEECagshAiAIIAM2AgAjAEEQayIEJAAgBCAINgIMIwBBoAFrIgMkACADQQhqQdCdBEGQARAjGiADIAI2AjQgAyACNgIcIANBfiACayIGQf////8HIAZB/////wdJGyIGNgI4IAMgAiAGaiICNgIkIAMgAjYCGCADQQhqQZ4ZIAgQqwQgBgRAIAMoAhwiAiACIAMoAhhGa0EAOgAACyADQaABaiQAIARBEGokAAsgCEHgAWokACAAIAoQcSERIApBgAFqJAAgEQs3AQF/IAAgAhA5IQUgACACEAogBUUEQCAAIAMQCkF/DwsgACABIAUgAyAEEBkhBCAAIAUQESAEC4wCAgJ/AXwjAEEQayIEJAACQAJAAkACQCACQiCIpyIFQQJNBEAgAqciA0EATg0DDAELIAVBC2pBEk8EQAJ/IAIQSSIGRAAAAAAAAPBBYyAGRAAAAAAAAAAAZnEEQCAGqwwBC0EACyIDuCAGYQ0DDAELIAMEQEF/IQMgACACEJ0BIgIQCw0EIAAgBEEMaiACQQEQywINBCAEKAIMIQMMAwsgACAEQQxqIAIQxAEEQCAAIAIQCgwCC0F/IQMgACACEJ0BIgIQCw0DIAAgBEEIaiACQQAQywINAyAEKAIIIgMgBCgCDEYNAgsgAEG9wwAQaQtBfyEDDAELIAEgAzYCAEEAIQMLIARBEGokACADCx8AIAAgASAAIAIQxwEiAiABQQAQEiEBIAAgAhARIAELMQEBfyMAQdAAayICJAAgAiAAIAJBEGogARCGATYCACAAQa4+IAIQzwIgAkHQAGokAAuSAQIBfwF+IwBBEGsiBSQAIAUgBDYCDCAAIAEgBUEMahDjAUUEQCADEJsEIAEgAiADKAIEIAMoAgBBA3FBAnRB1DxqKAIAERsAIQYgAxDZBSAFKAIMIgAgACgCAEH/////A3E2AgAgA0KAgICAMCAGIAYQCyIAGzcDACAFQRBqJABBf0EAIAAbDwsgBUEQaiQAQX8LJgEBfyMAQRBrIgMkACADIAI2AgwgAEECIAEgAhD9ASADQRBqJAALJgEBfyMAQRBrIgMkACADIAI2AgwgAEEDIAEgAhD9ASADQRBqJAALCgAgAEEgIAFrdgvSAQEDfyMAQRBrIgUkAEF/IQMCQCAAKAIUDQACQAJAIAFBgICAgAROBEAgACgCAEH0DUEAEEEMAQsgASAAKAIMQQNsQQJtEEpB/////wMQsAEhASAAKAIQIgQgAkGAAkhyRQRAIAAgARDvAyEDDAMLIAAoAgAgACgCBCABIAR0IARrQRFqIAVBDGoQswEiAg0BCyAAEIgDDAELIAAoAhAhAyAFKAIMIQQgACACNgIEIAAgBCADdiABakH/////AxCwATYCDEEAIQMLIAVBEGokACADC4ABAgJ/AX4CQCABKQIEIgRC//////////+/f1YEQCABKAIMIQAMAQsgACgCNCAEQiCIpyAAKAIkQQFrcUECdGohAiAAKAI4IQMDQCADIAIoAgAiAEECdGooAgAiAiABRg0BIAJBDGohAiAADQALQZkwQaENQfgUQYjAABAAAAsgAAvvBgIGfwF+AkACQAJAAn8gAkECTARAIAIgASkCBCIJQj6Ip0YEQCAAIAEQ0wIiAxDxAUUNBSABIAEoAgBBAWs2AgAgAw8LIAAoAjQgACgCJEEBayABIAIQ5gVB/////wNxIgdxIghBAnRqIQMgCadB/////wdxIQUDQCACIAMoAgAiA0UNAhoCQCAAKAI4IANBAnRqKAIAIgQpAgQiCUIgiKdB/////wNxIAdHIAlCPoinIAJHciAJp0H/////B3EgBUdyDQAgBCABIAUQ5QUNACADEPEBDQQgBCAEKAIAQQFqNgIADAQLIARBDGohAwwACwALIAJBA0chB0EDCyEFAkAgACgCPA0AQQAhA0HTASAAKAIsQQNsQQJtEEoiBEH/////A0sNASAAIAAoAjggBEECdBDmASIGRQ0BIAAoAiwiAkUEQCAAQRAQnAIiAkUEQCAAIAYQHwwDCyACQQE2AgAgAiACKQIEQoCAgICAgICAQIQ3AgQgBiACNgIAIAAgACgCKEEBajYCKEEBIQILIAAgAjYCPCAAIAY2AjggACAENgIsIARBAWshBgNAIAIgBE8NASAAKAI4IAJBAnRqQQAgAkEBaiIDIAIgBkYbEOQFNgIAIAMhAgwACwALAkAgAQRAIAEpAgQiCUL//////////z9YBEAgASAJIAWtQj6GhDcCBAwCCyAAIAmnIgJB/////wdxIAJBH3YiAnQgAmtBEWoQ5wEiAkUEQEEAIQMMBAsgAkEBNgIAIAIgAikCBEL/////d4MgASkCBEKAgICACIOEIgk3AgQgAiAJQoCAgIB4gyABKQIEQv////8Hg4Q3AgQgAkEQaiABQRBqIAEoAgQiA0EfdiIERSADQf////8HcSAEdGoQIxogACABEKQEIAIhAQwBCyAAQRAQ5wEiAUUEQEEADwsgAUKBgICAgICAgIB/NwIACyAAIAAoAjggACgCPCIDQQJ0aiICKAIAQQF2NgI8IAIgATYCACABIAM2AgwgASABNQIEIAetQiCGhCAFrUI+hoQ3AgQgACAAKAIoQQFqNgIoIAVBA0YNAiABIAAoAjQgCEECdGoiASgCADYCDCABIAM2AgAgACgCKCAAKAIwSA0CIAAgACgCJEEBdBDABRoMAgsgAUUNAQsgACABEKQEIAMPCyADC0YAIAJBAEwEQCAAQS8QMQ8LIAAgAkEAEPwBIgBFBEBCgICAgOAADwsgAEEQaiABIAIQIyACakEAOgAAIACtQoCAgICQf4QLUAEBfgJAIANBwABxBEAgAiADQUBqrYghAUIAIQIMAQsgA0UNACACQcAAIANrrYYgASADrSIEiIQhASACIASIIQILIAAgATcDACAAIAI3AwgLwAEBAn8jAEGgAWsiBCQAIARBCGpB0J0EQZABECMaAkACQCABQQFrQf////8HTwRAIAENAUEBIQEgBEGfAWohAAsgBCAANgI0IAQgADYCHCAEQX4gAGsiBSABIAEgBUsbIgE2AjggBCAAIAFqIgA2AiQgBCAANgIYIARBCGogAiADQe4CQe8CEK0EIQAgAUUNASAEKAIcIgEgASAEKAIYRmtBADoAAAwBC0GEpwRBPTYCAEF/IQALIARBoAFqJAAgAAudAwMCfAF+A38CQAJAAkACQCAAvSIDQgBZBEAgA0IgiKciBEH//z9LDQELIANC////////////AINQBEBEAAAAAAAA8L8gACAAoqMPCyADQn9VDQEgACAAoUQAAAAAAAAAAKMPCyAEQf//v/8HSw0CQYCAwP8DIQVBgXghBiAEQYCAwP8DRwRAIAQhBQwCCyADpw0BRAAAAAAAAAAADwsgAEQAAAAAAABQQ6K9IgNCIIinIQVBy3chBgsgBiAFQeK+JWoiBEEUdmq3IgFEAADg/kIu5j+iIANC/////w+DIARB//8/cUGewZr/A2qtQiCGhL9EAAAAAAAA8L+gIgAgAUR2PHk17znqPaIgACAARAAAAAAAAABAoKMiASAAIABEAAAAAAAA4D+ioiICIAEgAaIiASABoiIAIAAgAESfxnjQCZrDP6JEr3iOHcVxzD+gokQE+peZmZnZP6CiIAEgACAAIABERFI+3xLxwj+iRN4Dy5ZkRsc/oKJEWZMilCRJ0j+gokSTVVVVVVXlP6CioKCioCACoaCgIQALIAALkgEBA3xEAAAAAAAA8D8gACAAoiICRAAAAAAAAOA/oiIDoSIERAAAAAAAAPA/IAShIAOhIAIgAiACIAJEkBXLGaAB+j6iRHdRwRZswVa/oKJETFVVVVVVpT+goiACIAKiIgMgA6IgAiACRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAAIAGioaCgC5kBAQN8IAAgAKIiAyADIAOioiADRHzVz1o62eU9okTrnCuK5uVavqCiIAMgA0R9/rFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgIQUgAyAAoiEEIAJFBEAgBCADIAWiRElVVVVVVcW/oKIgAKAPCyAAIAMgAUQAAAAAAADgP6IgBCAFoqGiIAGhIARESVVVVVVVxT+ioKELjQEAIABECff9DeE9Aj+iRIiyAXXg70k/oCAAokQ7j2i1KIKkv6AgAKJEVUSIDlXByT+gIACiRH1v6wMS1tS/oCAAokRVVVVVVVXFP6AgAKIgAESCki6xxbizP6JEWQGNG2wG5r+gIACiRMiKWZzlKgBAoCAAokRLLYocJzoDwKAgAKJEAAAAAAAA8D+gowu9AgEHfwJAIAFFDQADQCACQQNGBEAgAUEBcSIFRSABQQZxRXIhBwNAIARB6QJGDQMCQAJAIAMgBEECdEHA5wFqKAIAIgJBBHZBD3EiBnZBAXFFDQAgAkEPdiEBIAJBCHZB/wBxIQgCQAJAAkAgBkEEaw4CAAECCyAHRQ0BIAEgBWohBkEAIQIDQCACIAhPDQMgAiAGaiEBIAJBAmohAiAAIAEgAUEBahB8RQ0ACwwDCyAHRQ0AIAFBAWohAiAFRQRAIAAgASACEHwNAwsgACACIAFBAmoiAhB8RQRAIAVFDQIgACACIAFBA2oQfEUNAgtBfw8LIAAgASABIAhqEHwNAQsgBEEBaiEEDAELC0F/DwUgASACdkEBcQRAIAJBAnRB1OQDaigCACADciEDCyACQQFqIQIMAQsACwALQQALTQEBfyABIAAoAgQiAkoEQCAAKAIMIAAoAgggASACQQNsQQJtEEoiAUECdCAAKAIQEQEAIgJFBEBBfw8LIAAgATYCBCAAIAI2AggLQQALlAIBAn8jAEEQayIEJAACQCAEQQxqIAAgAiADELsEIgJBAEgNACABIAJqIQIDQCACQQFqIQECQCACLQAAIgNBP00EQCAEKAIMIANBA3ZqQQFqIgIgAEsNAyAEIANBB3EgAmpBAWoiAzYCDCAFQQFzIQUMAQsgA0EYdEEYdUF/TARAIAQgAyAEKAIMakH/AGsiAzYCDAwBCyADQd8ATQRAIAQgBCgCDCACLQABIANBCHRyakH//wBrIgM2AgwgAkECaiEBDAELIAQgBCgCDCACLQACIANBEHQgAi0AAUEIdHJyakH///8CayIDNgIMIAJBA2ohAQsgACADSQ0BIAVBAXMhBSABIQIMAAsACyAEQRBqJAAgBQtMAQJ/IwBBEGsiAyQAAn8gAiABKAIAIgQtAABHBEAgAyACNgIAIABBy+IBIAMQPEF/DAELIAEgBEEBajYCAEEACyECIANBEGokACACCx4AIABBMGtBCkkgAEFfcUHBAGtBGklyIABB3wBGcgvBAQEDfwJAAn8gACgCQBpBAAsEQCAAQbHgAUEAEDwMAQsgACgCBCEDIAAgARDFBA0AQQUgA2shBANAIAAoAhgiAi0AAEH8AEcEQEEADwsgACACQQFqNgIYIAAoAgQhAiAAIANBBRDqAQRAIAAQqQJBfw8LIAAoAgAgA2pBCToAACAAKAIAIANqQQFqIAIgBGoQWyAAQQdBABC4ASECIAAgARDFBA0BIAAoAgAgAmogACgCBCACa0EEaxBbDAALAAtBfwtLAQJ/AkADQCABQQpGDQEgAUECdEECckGg3wFqLwEAIABKDQEgAUEBdCECIAFBAWohASACQQF0QaTfAWovAQAgAEwNAAtBAQ8LQQALtgIBA38CfwJ/IAFB/wBNBEAgACABOgAAIABBAWoMAQsCfyABQf8PTQRAIAAhAiABQQZ2QUByDAELAn8gAUH//wNNBEAgAEEBaiECIAAhBCABQQx2QWByDAELAn8gAUH///8ATQRAIAAhAyABQRJ2QXByDAELAn8gAUH///8fTQRAIABBAWohAyABQRh2QXhyIQIgAAwBC0EAIAFBAEgNBRogACABQR52QfwBcjoAACAAQQJqIQMgAUEYdkE/cUGAf3IhAiAAQQFqCyACOgAAIAFBEnZBP3FBgH9yCyECIAMgAjoAACADQQJqIQIgA0EBaiEEIAFBDHZBP3FBgH9yCyEDIAQgAzoAACABQQZ2QT9xQYB/cgshAyACIAM6AAAgAiABQT9xQYABcjoAASACQQJqCyAAawsLJAAgAEIANwIAIAAgATYCFCAAQgA3AgggACACQeACIAIbNgIQCycBAn8CQCAAIAFBABCZASIDBEAgAxCYAUUNASAAEHALQX8hAgsgAgvJAQIDfwF+IwBBEGsiBSQAAkAgACABQQIQbCIBEAsNAAJAAkAgAkEBRw0AIAMpAwAiBxCOAUUNACAAIAVBDGogBxANQQEQywINASAAIAFBMAJ+IAUoAgwiAkEATgRAIAKtDAELIAK4EBULEEhBf0wNAQwCCyACQQAgAkEAShshAgNAIAIgBEYNAiAAIAEgBCADIARBA3RqKQMAEA0QlgIhBiAEQQFqIQQgBkF/Sg0ACwsgACABEApCgICAgOAAIQELIAVBEGokACABCxEAIAAgASACIAMgBCAFEMkBCzoBAX8CQCAAQTBrIgFBCk8EfyAAQcEAa0EFSw0BIABBN2sFIAELDwsgAEHXAGtBfyAAQeEAa0EGSRsLfAICfgF/IAAgAikDACIDQQAQmQEiBUUEQEKAgICA4AAPCyAAIANCgICAgDAQ8gEiAxALBEAgAw8LIAJBCGohAiABQQFrQQAQSiEBIAMQEARAIABCgICAgDAgASACIAUvAQYQ7AUPCyAAIAMgASACEMUDIQQgACADEAogBAsRACAAIAEgAiADQQBBABDJAQsyACAAQQwQLSIARQRAQQAPCyAAIAM2AgggACACNgIEIAAgASgCEDYCACABIAA2AhAgAAtrAQF/AkAgASgCoAEiA0F/Sg0AIAAgASACEFYiA0EASA0AIAEgAzYCoAEgA0EEdCIAIAEoAnRqIgIgAigCDEGHf3FBIHI2AgwgAS0AbkEBcUUNACABKAJ0IABqIgAgACgCDEEBcjYCDAsgAwsuAQF/AkAgASgCmAEiAkF/Sg0AIAAgAUHNABBWIgJBAEgNACABIAI2ApgBCyACCzIAIAAoAgAgASACIAMQ8AIiAEEATgRAIAEoAnQgAEEEdGoiASABKAIMQQNyNgIMCyAAC3ABAn8gASgCAEF/TARAIAEgABA0NgIACyAAQREQDCAAQbABEAwgAkEAIAJBAEobIQIgAEHpAEF/EBshBANAIAIgA0ZFBEAgAEEOEAwgA0EBaiEDDAELCyAAQQYQDCAAQesAIAEoAgAQGxogACAEEB0LaAAgACABIAIQViIAQQBOBEAgASgCdCAAQQR0aiICIAIoAgxBh39xIANBA3RB+ABxcjYCDCACIAEoArwBIgM2AgQgAiABKALAATYCCCABKALMASADQQN0aiAANgIEIAEgADYCwAELIAALbQEBfyAAIAFB/AFqQRAgAUH4AWogASgC9AFBAWoQfUUEQCABIAEoAvQBIgNBAWo2AvQBIAEoAvwBIANBBHRqIgNBfzYCACADIAMtAARB+AFxOgAEIAMgASgCvAE2AgggAyAAIAIQFzYCDAsgAwtMAQJ/AkAgACgCQBCkASIAQSNrIgJBDU1BAEEBIAJ0QeXwAHEbDQACQAJAIABB6wBrDgQCAQECAAsgAEHqAWtBAkkNAQtBASEBCyABC7EDAQN/IAAoAkBBsAJqIQMDQEEAIQICQANAIAMoAgAiA0UNASADKAIcBEAgAUUEQCAAQQYQDAsgAEGEARAMQYMBIQIgACAAKAJALQBsQQNGBH8gAEEOEAwgAEEOEAwgAEHCABAMIABBBhAaIABBERAMIABBsAEQDCAAQeoAQX8QGyEBIABBJBAMIABBABAWIABBgQEQDCAAQYsBEAwgAEHrAEF/EBshBCAAIAEQHSAAQQ4QDCAAIAQQHUEOBUGDAQsQDEF9IQJBASEBCyADKAIQIAJqIQIgAygCFEF/Rg0AC0EPQQ4gARshBANAIAIEQCAAIAQQDCACQQFrIQIMAQsLIAFFBEAgAEEGEAwLIABB7QAgAygCFBAbGkEBIQEMAQsLIAACfyAAKAJAIgIoAmAEQAJAIAFFBEBBfyECDAELIABBKhAMIABB6QBBfxAbIQIgAEEOEAwLIABBtgEQDCAAQQgQGiAAQQAQFiAAIAIQHUEoDAELIAItAGwiBARAAkAgAUUEQEEGIQMMAQtBiwEhA0EuIARBA0cNAhoLIAAgAxAMQS4MAQtBKEEpIAEbCxAMC0gAAkAgAEH7ABAuDQAgACgCEEH9AEcEQCAAEIIBGgNAIABBBxDwAQ0CIAAoAhBB/QBHDQALIAAQ7gELQX9BACAAEA8bDwtBfwuYAQEEfyABKAIUIgVBACAFQQBKGyEGIAFBEGohBAJAA0AgAyAGRwRAIAQoAgAgA0EDdGooAgAgAkYNAiADQQFqIQMMAQsLQX8hAyAAIARBCCABQRhqIAVBAWoQfQ0AIAEgASgCFCIEQQFqNgIUIAEoAhAhAyAAIAIQFyEBIAMgBEEDdGoiAEEANgIEIAAgATYCACAGIQMLIAMLZQEBfyAAQfoAEFFFBEAgAEHljgFBABATQQAPCwJAIAAQDw0AIAAoAhBBgX9HBEAgAEG4yABBABATQQAPCyAAKAIAIAApAyAQOSIBRQ0AIAAQD0UEQCABDwsgACgCACABEBELQQALhRMBFX8jAEFAaiIDJAAgACgCACEGIAAoAkAhBCADQQA2AjwgACgCGCEQIAQgBC0AbiITQQFyOgBuAn8CQCAAEA8NAAJAAkAgACgCEEGDf0YEQCAAKAIoRQ0BIAAQ7wEMAwsgASACQQJGcg0BIABBs4QBQQAQEwwCCyAGIAAoAiAQFyEJIAAQDw0BCyABRQRAIAYgCUH8ACAJGxAXIQoLIAAQggEaAn8gACgCECIFQUxGBEAgABAPDQIgABCxAg0CQQEMAQsgAEEGEAxBAAshDCAJBEAgACAEIAlBAhCoAUEASA0BCyAAQfsAEC4NACAAEIIBGiAAQQIQDCAEKAKEAiEUIABBABA4IABB1gAQDCAAIAlBFkEvIAobIAkbEBogACAMEGsgBCgCmAIhFUEAIQEDQCABQQJHBEAgA0EQaiABQQR0aiIHQQA2AgggB0IANwMAIAFBAWohAQwBCwsgA0EANgI0IAVBTEYhFgNAAkBBAAJ/An8CQAJAIAAoAhAiBUE7RwRAIAVB/QBGDQVBACAFQVZHDQMaIAAQDw0HIAAoAhBBO2sOAwECAQILIAAQD0UNBQwGCyAGQSwQFxogA0EsNgI8IAAoAhghD0EAIQtBACENQQAhAUEsDAILIABBGxAMQQELIQ0gACgCGCEPIAAgA0E8akEBQQBBARDSAyIBQQBIDQMgBUFWRiELIAMoAjwLIgVB+ABGQQAgAUFvcSIIIAsgBUE8R3IiFxtyRSALIAVBO0ZxG0UEQCAAQdOEAUEAEBMMAwsgAUEQcSEHAkACQAJAAkAgAUFucUECRgRAIAcEQAJAIAQgBSAEKAK8ARDOAyIBQQBOBEAgBCgCdCABQQR0aiIFKAIMIg5BA3ZBD3EiAUEJTUEAQQEgAXRB4ARxGyABIAhBBWpGcg0EIAUgDkGHf3FByAByNgIMDAELIAAgBCAFIAhBBWoQ7gJBf0wNCQsgACADQRBqIA1BBHRqEOkEQQBIDQgLIAAgCEECakEAIA8gACgCFEEAIANBDGoQigINByAHBEAgAygCDEEBNgK4ASAAQdAAEAwgAEG7ARAMIAMoAjwhAQJAIAhBAkcEQCAGIAEQ5wQiAUUNCiAAIAEQGiAAIAQgAUEIEO4CIQUgBiABEBEgBUEATg0BDAoLIAAgARAaCyAAIAAoAkAvAbwBEBYMBQsCQCADKAI8RQRAIABB1QAQDAwBCyAAQdQAEAwgACADKAI8EBoLIAAgCEEBa0H/AXEQawwEC0EGIQ5BASEBQQAhEUEAIRICQAJAAkACQAJAIAgOBwADAwMEAQIDCyAAKAIQQShGDQIgBUE7a0EBTQRAIABB54QBQQAQEwwLCyAHBEAgBCAFIAQoArwBEM4DQX9KDQUgACAEIAVBBRDuAkEASA0LIABBBRAMIAAgAygCPBAaIABBuwEQDCAAIAMoAjwQGiAAIAAoAkAvAbwBEBYLIANBEGogDUEEdGoiBSgCAEUEQCAAIAUQ5gQNCwtBACEBIAMoAjxFBEAgBSgCBCEIIwBBIGsiASQAIAEgCDYCACABQRBqQRBB8Q0gARBVGiAGQfUAQfQAIAsbIAFBEGoQ5AQhCCABQSBqJAAgCCIBRQ0LIAAgBCABQQIQqAFBf0wEQCAGIAEQEQwMCyAAQfAAEAwgAEG7ARAMIAAgARAaIAAgACgCQC8BvAEQFgsgACAFKAIANgJAIABBtgEQDCAAQQgQGiAAQQAQFgJAIAMoAjxFBEAgAEG2ARAMIAAgARAaIAAgACgCQC8BvAEQFiAFIAUoAgRBAWo2AgQgBiABEBEMAQsgB0UNACAAQbYBEAwgACADKAI8EBogACAAKAJALwG8ARAWCwJAIAAoAhBBPUYEQCAAEA8NDCAAEGBFDQEMDAsgAEEGEAwLAkAgBwRAIAAQzQMgAEHGABAMDAELIAMoAjwiAUUEQCAAEM0DIABB0QAQDCAAQQ4QDAwBCyAAIAEQqQEgAEHMABAMIAAgAygCPBAaCyAAIAAoAkAoAgQ2AkAgABC7AUUNBwwKC0ECIQEMAgtBAyEBDAELQQAhASAXDQAgAygCNARAIABB+oQBQQAQEwwICwJ/IBYEQEEIIQ5BASERQQAMAQtBByEOQQELIRILIAcEQCAAIANBEGogDUEEdGoQ6QRBAEgNBwsgACAOIAEgDyAAKAIUQQAgA0E4ahCKAg0GIBEgEnIEQCADIAMoAjg2AjQMBAsgB0UNAiADKAI4QQE2ArgBIAQgAygCPCIBIAQoArwBEM4DQQBIDQELIABBpoUBQQAQEwwFCyAAIAQgAUEGEO4CQQBIDQQgAEHQABAMIABBzQAQDCAAIAMoAjwQGiAAQbsBEAwgACADKAI8EBogACAAKAJALwG8ARAWDAELAkAgAygCPEUEQCAAQdUAEAwMAQsgAEHUABAMIAAgAygCPBAaCyAAQQAQawsgCwRAIABBGxAMCyAGIAMoAjwQESADQQA2AjwMAQsLIAMoAjQiAUUEQCADQTRqIQgjAEEQayIBJAAgACABEPkCIABBo4YBQbyGASAMGyIFNgI4IAAoAjwhCyAAIAVBGEEEIAwbajYCPCAAKAIUIQ1BfyEHIAAQD0UEQCAAQQhBByAMG0EAIAUgDUEAIAgQigIhBwsgACALNgI8IAAgARD4AiEMIAFBEGokACAHIAxyDQEgAygCNCEBCyAEKAKAAiAUaiABKAIIEFsgBC0AbkECcUUEQCAGIAMoAjQoAowDEBggAygCNCAAKAI4IBBrIgE2ApADIAYgECABEKMDIQEgAygCNCABNgKMAyABRQ0BCyAAEA8NACAAIARB9gBBAhCoAUEASA0AAkAgAygCEARAIAAgA0EQahDlBAwBCyAAQQYQDAsgAEG7ARAMIABB9gAQGiAAIAAoAkAvAbwBEBYgAEEOEAwgAygCIARAIABBERAMIAAgA0EgahDlBCAAQSQQDCAAQQAQFiAAQQ4QDAsgCQRAIABBERAMIABBuwEQDCAAIAkQGiAAIAQvAbwBEBYLIAAQ7gEgABDuAQJAIAoEQCAAIAQgCkEBEKgBQQBIDQIgAEG7ARAMIAAgChAaIAAgBC8BvAEQFgwBCyAJDQAgAEG/ARAMIAAgBCgCmAIgFWtBAWoQOAtBACACRQ0BGkEAIAAgBCgClAMgCiAKQRYgAkEBRhtBABCJAg0BGgsgBiADKAI8EBFBfwshACAGIAkQESAGIAoQESAEIBM6AG4gA0FAayQAIAALLgAgACABKAIANgIUIAAgASgCBDYCCCAAIAEoAgw2AjggACABKAIINgIwIAAQDwsqACABIAAoAgQ2AgAgASAAKAIUNgIEIAEgACgCGDYCDCABIAAoAjA2AggLjAECBn8BfiABKAIAIgMgACgCBEH/////B3EiBCADIARKGyADayEGIANBAmohB0EAIQQCQANAIARBAkcEQEF/IQUgBCAGRg0CIAAgAxAvIghBMGtBCUsNAiAEQQFqIQQgA0EBaiEDIAitIAlCCn58QjB9IQkMAQsLIAIgCTcDACABIAc2AgBBACEFCyAFCxgAIAAgACABgSIAIABCP4cgAYN8fSABfwseACAAIAEgACACEA0gAxCSAyICQQAQgQUgACACEAoLZQEDfyABKAIQIgQgASgCFEEBayACEOIDcUEDdCIFakEEaiEDA38gAygCACIDIAQgBWpGBEBBAA8LIAAgAykDCBANIAIQDUECEN4BBH8gA0EYawUgA0EEaiEDIAEoAhAhBAwBCwsLKQACQCAAQiCIp0ELakESSQ0AIAAQSUQAAAAAAAAAAGINAEIAIQALIAAL0wMCCH8DfiMAQTBrIgQkAEKAgICA4AAhDAJAIAAgARApIgEQCw0AQoCAgIAwIQwCQAJAIAAgBEEsaiAEQShqIAGnIgkgAkFvcRCQAQ0AIAAQTiIMEAsNACACQRBxIQogBCgCLCEGIAQoAighByADQQFrIQtBACECA0AgAiAHRg0CIAYgAkEDdGooAgQhAwJAAkAgCgRAIAAgBEEIaiAJIAMQUyIFQQBIBEBBAiEFDAILIAVFBEBBBSEFDAILIAAgBEEIahBNQQUhBSAEKAIIQQRxRQ0BCwJAAkACQAJAAkAgCw4CAQIACyAAIAMQXiINEAtFDQIMBwsgACABIAMgAUEAEBIiDRALRQ0BDAYLIAAQTiINEAsNBSAAIAMQXiIOEAsNASAAIA1CACAOQYCAARCqAUEASA0BIAAgASADIAFBABASIg4QCw0BIAAgDUIBIA5BgIABEKoBQQBIDQELIAAgDCAIrSANQQAQqgFBAEgNBCAIQQFqIQgMAgsgACANEAoMAwsgBUECaw4EAgQEAAQLIAJBAWohAgwACwALIAAgDBAKQoCAgIDgACEMIAQoAighByAEKAIsIQYLIAAgBiAHEGQgACABEAoLIARBMGokACAMC6MBAgN+A38jAEEQayIJJAAgBEIAIARCAFUbIQggBUEASCEKA0ACQCAGIAhRBEBBACEFDAELQX8hBSAAIAEgBkJ/hSAEfCAGIAobIgcgA3wgCUEIahCJASILQQBIDQAgAiAHfCEHAkAgCwRAIAAgASAHIAkpAwgQjwFBAE4NAQwCCyAAIAEgBxCUAkEASA0BCyAGQgF8IQYMAQsLIAlBEGokACAFC2ECAX8BfiMAQRBrIgMkAAJ+AkACQCACRQ0AIAApAgQiBEL/////B4MgAVcNACAEp0EASA0BCyABQgF8DAELIAMgAT4CDCAAIANBDGoQ2QEaIAM0AgwLIQEgA0EQaiQAIAELfwEDfyAAKAIQIQUgACACQQN0QRhqEC0iBEUEQA8LIAQgAjYCECAEIAE2AgwgBCAANgIIQQAhACACQQAgAkEAShshASAEQRhqIQIDQCAAIAFHBEAgAiAAQQN0IgZqIAMgBmopAwAQDTcDACAAQQFqIQAMAQsLIAQgBUGgAWoQTAskACAAQQh0QYCA/AdxIABBGHRyIABBCHZBgP4DcSAAQRh2cnILCQAgACABOwAAC0oAIwBBEGsiAyQAIAMgATkDCCADIAI2AgAgAEGAAUHWwwAgAxBVIgBBgAFOBEBB28MAQaENQYPZAEHowwAQAAALIANBEGokACAAC3ABA38jAEEQayICJAAgACEBA0ACQCABLAAAIgNBAE4EQCADQf8BcUEJayIDQRdLQQEgA3RBn4CABHFFcg0BIAFBAWohAQwCCyABQQYgAkEMahBfEOICRQ0AIAIoAgwhAQwBCwsgAkEQaiQAIAEgAGsL2AQCCX8BfgJ+IAEpA0AiCxAQBEBCgICAgOAAAn4jAEEgayICJAACQCAAQQsQoQEiCxALDQAgAkIANwMYIAJCADcDECACQgA3AwggACACQQhqIAFBABCiBSEEIAAgAigCCBAYAkAgBARAIAIoAhQhBgwBCyALpyEHIAIoAhwiCEEAIAhBAEobIQkgAigCFCEGQQAhBAJAA0AgBCAJRwRAAkACQCAGIARBDGxqIgMoAggiBQRAIAIgATYCAAwBCwJAAkAgACACIAJBBGogASADKAIAEO0DIgUOBAEGBgAGCyADQQA2AgQMAgsgAigCBCEFCyAFKAIMQf0ARgRAIANBAjYCBCADIAIoAgAoAhAgBSgCAEEDdGooAgQ2AggMAQsgA0EBNgIEIAUoAgQiCgRAIAMgCjYCCAwBCyADIAIoAgAoAkgoAiQgBSgCAEECdGooAgA2AggLIARBAWohBAwBCwsgBiAIQQxBLyAAEKsCQQAhBANAIAQgCUcEQAJAAkACQCAGIARBDGxqIgMoAgRBAWsOAgABAgsgAygCCCEFIAAgByADKAIAQSYQgAEiA0UNBSAFIAUoAgBBAWo2AgAgAyAFNgIADAELIAAgCyADKAIAQQEgAygCCEEGEJMDQQBIDQQLIARBAWohBAwBCwsgACAGEBggACALQckBIABB/gAQMUEAEBkaIAcgBy0ABUH+AXE6AAUMAgsgACAFIAEgAygCABDsAwsgACAGEBggACALEApCgICAgOAAIQsLIAJBIGokACALCxALDQEaIAEgCzcDQAsgCxANCwsjACAAKAIAIAAoAgQQGCAAQQA2AgwgAEIANwIEIABBfzYCFAt2AQJ/IAAgAUEQahDBBQJAIAEoAiAiAgRAIAEoAjwiA0UNAQNAIAIgA09FBEAgACACKQMAECUgAkEIaiECIAEoAjwhAwwBCwsgACABKAIgEB8LIAAgASkDGBAlIAAgASkDABAlDwtBsx9BoQ1BiZQBQcYfEAAACw0AIAAgASACQRMQ9QML6AMBA38gAUEQaiEDIAEoAhQhAgNAIAIgA0ZFBEAgAkEYayEEIAIoAgQhAiAAIAQQiwMMAQsLIAAoAhAgASgCgAIgASgChAIgASgCoAIQowUgAUGAAmoQlQEgACABKALMAhAYIAAgASgCpAIQGCAAIAEoAtgCEBhBACECA0AgAiABKAK4Ak5FBEAgACABKAK0AiACQQN0aikDABAKIAJBAWohAgwBCwsgACABKAK0AhAYIAAgASgCcBARQQAhAgNAIAIgASgCfE5FBEAgACABKAJ0IAJBBHRqKAIAEBEgAkEBaiECDAELCyAAIAEoAnQQGEEAIQIDQCACIAEoAogBTkUEQCAAIAEoAoABIAJBBHRqKAIAEBEgAkEBaiECDAELCyAAIAEoAoABEBhBACECA0AgAiABKAL0AU5FBEAgACABKAL8ASACQQR0aigCDBARIAJBAWohAgwBCwsgACABKAL8ARAYQQAhAgNAIAIgASgCwAJORQRAIAAgASgCyAIgAkEDdGooAgQQESACQQFqIQIMAQsLIAAgASgCyAIQGCABKALMASICIAFB0AFqRwRAIAAgAhAYCyAAIAEoAuwCEBEgAUH0AmoQlQEgACABKAKMAxAYIAEoAgQEQCABQRhqEEYLIAAgARAYC+UCAwJ8A38BfgJ/IAArAwgiAkQAAAAAAAAoQBDzBSIDmUQAAAAAAADgQWMEQCADqgwBC0GAgICAeAsiBEEMaiAEIARBAEgbIgRBAEohBiAEQQAgBhshBgJ+IAArAwAgAkQAAAAAAAAoQKOcoCICmUQAAAAAAADgQ2MEQCACsAwBC0KAgICAgICAgIB/CyIHEPwEuSECA0AgBSAGRkUEQCAFQQJ0QcD3AGooAgAhBCAFQQFGBEAgBCAHENsDp2pB7QJrIQQLIAVBAWohBSACIAS3oCECDAELCyACIAArAxBEAAAAAAAA8L+goEQAAAAAcJmUQaIgACsDMCAAKwMYRAAAAABAd0tBoiAAKwMgRAAAAAAATO1AoqAgACsDKEQAAAAAAECPQKKgoKAhAiABBHwgAgJ+IAKZRAAAAAAAAOBDYwRAIAKwDAELQoCAgICAgICAgH8LENwDQeDUA2y3oAUgAgsQ+QMLjAEBAn8CQANAIAFCgICAgHBUDQECQAJAAkACQAJAAkAgAaciAi8BBiIDQQxrDgUFAQMHAQALIANBKUYNASADQS1rDgUABgYGAAYLIAIoAiAoAjAPCyACKAIgIgJFDQQgAi0AEUUNASAAEMgCQQAPCyACKAIgIQILIAIpAwAhAQwBCwsgAigCICEACyAACxEAIAAgASACIAMgBEECEIwECw8AIAAgAUKAgICAMBDBAgttAgN+AX8gABBOIgQQC0UEQCABQQAgAUEAShutIQVBACEBA0AgAyAFUQRAIAQPCyAAIAQgAyACIAFBA3RqKQMAEA1BABCqASEGIANCAXwhAyABQQFqIQEgBkF/Sg0ACyAAIAQQCgtCgICAgOAAC6IGAQZ/IwBBMGsiBiQAIAYgAzYCLAJ/AkAgACgCACAGQRBqQSAQQg0AIAFB4ABHIQoCQANAIAMgACgCPCILTw0BAkAgAy0AACIHQR9LDQAgACgCQEUEQCACRQ0EIABB/9QAQQAQEwwECyAKRQRAIAdBDUcNAUEKIQcgA0EBaiADIAMtAAFBCkYbIQMMAQsgB0EKaw4EAgAAAgALIAYgA0EBaiIJNgIsAkACQAJAAkAgASAHRwRAIAdB3ABGDQEgB0EkRw0CQSQhByAKDQMgCS0AAEH7AEcNAyAGIANBAmo2AixBJCEBCyAEQYF/NgIAIAQgATYCGCAEIAZBEGoQNzcDECAFIAYoAiw2AgBBAAwHCwJAIAYCfwJAAkACQAJAIAktAAAiCEEKaw4EAQUFAwALIAhFDQEgCEEiRiAIQSdGckVBACAIQdwARxsNBCAGIANBAmo2AiwgCCEHDAYLIANBAmoMAgsgCSALTw0HIAYgA0ECajYCLEEAIQcMBAsgA0ECQQEgAy0AAkEKRhtqQQFqCyIDNgIsIAFB4ABGDQQgACAAKAIIQQFqNgIIDAQLAkACQAJAIAhBMGtB/wFxQQlNBEAgACgCQCIHRQ0CIAFB4ABHBEAgBy0AbkEBcUUNAgsCQCAIQTBHDQAgAy0AAkEwa0H/AXFBCkkNACAGIANBAmo2AixBACEHDAYLIAFB4ABGIAhBN0tyDQIgAkUNCSAAQaLVAEEAEBMMCQsgCEEYdEEYdUF/Sg0AIAlBBiAGQQxqEF8iB0GAgMQATw0FIAYgBigCDCIDNgIsIAdBfnFBqMAARg0GDAQLIAZBLGpBARCDAiIHQX9HDQELIAJFDQYgAEHY1QBBABATDAYLIAdBf0oNASAGIAYoAixBAWo2AiwgCCEHDAELIAdBGHRBGHVBf0oNACADQQYgBkEMahBfIgdB///DAEsNASAGIAYoAgw2AiwLIAZBEGogBxC+AQ0DIAYoAiwhAwwBCwsgAkUNASAAQYTWAEEAEBMMAQsgAkUNACAAQZvWAEEAEBMLIAZBEGoQREF/CyEDIAZBMGokACADC2oBAn4CQAJAIAAQPSIDEAsEQCADIQQMAQtCgICAgOAAIQQgACADQcAAIAFBBxAZQQBIBEAgAyEBDAELIAMhASAAIANB6QAgAkEAR61CgICAgBCEQQcQGUF/Sg0BCyAAIAEQCiAEIQMLIAMLvgEBA38CQCABQoCAgIBwWgR/IAGnIggoAhAiByAHKAIYIAJxQX9zQQJ0aigCACEGIAcQJyEHAkADQCAGRQ0BIAIgByAGQQFrQQN0aiIGKAIERwRAIAYoAgBB////H3EhBgwBCwsQAQALIAAgCCACIAVBB3FBMHIQgAEiAkUEQEF/DwsgAiAAEKACIgA2AgAgAEEDcQ0BIAIgBDYCBCACIAAgA3I2AgBBAQVBAAsPC0HxPUGhDUHeyABBlD4QAAALMAEBfyMAQdAAayIDJAAgAyAAIANBEGogARCGATYCACAAIAIgAxDQAiADQdAAaiQACysAIABB/wBNBEAgAEEDdkH8////AXFB0N8BaigCACAAdkEBcQ8LIAAQtQMLjwMCA38CfiMAQRBrIgMkACABQQhrIgUpAwAhBgJ/AkACQCAAIAAgAUEQayIEKQMAQQEQwAEiBxALBH4gBgUgACAGQQEQwAEiBhALRQ0BIAcLEAoMAQsCQCAHQoCAgIBwg0KAgICAkH9SIAZCgICAgHCDQoCAgICQf1JyRQRAIAenIAanEJUCIQEgACAHEAogACAGEAoCQAJAAkACQCACQaMBaw4DAAECAwsgAUEfdiECDAQLIAFBAUghAgwDCyABQQBKIQIMAgsgAUF/SiECDAELAn8CQAJAIAAgA0EIaiAHEFkEQCAAIAYQCgwBCyAAIAMgBhBZRQ0BC0EADAELAn8CQAJAAkACQCACQaMBaw4DAAECAwsgAysDCCADKwMAYwwDCyADKwMIIAMrAwBlDAILIAMrAwggAysDAGQMAQsgAysDCCADKwMAZgshAkEBC0UNAQsgBCACQQBHrUKAgICAEIQ3AwBBAAwBCyAEQoCAgIAwNwMAIAVCgICAgDA3AwBBfwshACADQRBqJAAgAAtTAgJ+An9BfyEFAkAgACABQQhrIgYpAwAiBCACEPUBIgMQCw0AIAAgBBAKIAYgAzcDACAAIANB6gAgA0EAEBIiAxALDQAgASADNwMAQQAhBQsgBQsuAQF/A0AgAiADRkUEQCAAIAEgA0EDdGopAwAQCiADQQFqIQMMAQsLIAAgARAYC2UBAn8jAEEQayIFJAACQCACEJsBRQRAIAIQDSECDAELIAAgBUEMaiACEJACIgZFBEBCgICAgOAAIQIMAQsgACABIAYgBSgCDEGQyAAgAyAEELcFIQIgACAGEDYLIAVBEGokACACC7wBAgN+AX8jAEEQayICJABCgICAgOAAIQUCQCAAIAEQZw0AIAMpAwAhBgJAAkAgAykDCCIHQiCIpyIDQQNHBEAgBEECRg0CIANBAkYNAQwCCyAEQQJGDQELIAAgASAGQQBBABAiIQUMAQsgACACQQxqIAcQiwQiA0UNACACKAIMIQgCfiAEQQFxBEAgACABIAYgCCADEI4DDAELIAAgASAGIAggAxAiCyEFIAAgAyAIEJgDCyACQRBqJAAgBQsNACAAIAEQDSACEMABCxwAIAAgACgCECgCRCABQRhsaigCBEH1wgAQxQELZQEBfyMAQTBrIgIkAAJ/IAFC/////wdYBEAgAacQkwEMAQsgAiABNwMAIAJBEGpBGEGBwQAgAhBVGkEAIAAgAkEQahBxIgEQCw0AGiAAKAIQIAGnQQEQ1AILIQAgAkEwaiQAIAALPAEBfyABIAAoAtQBIAEoAhQgACgCyAEQ0QJBAnRqIgIoAgA2AiggAiABNgIAIAAgACgC0AFBAWo2AtABC0MAAn9BACACKAIAKAIAQRp2IANGDQAaQX8gACABIAIQ4wENABogAigCACIAIAAoAgBB////H3EgA0EadHI2AgBBAAsLqwEBBH9BfyECAkAgACABQQAQ4wENACABKAIoIgQgASgCECIDKAIgaiIFIAMoAhxLBEAgACABQRBqIAEgBRDRBQ0BCyABKAIkIQNBACECA0AgAiAERkUEQCAAIAEgAhCTAUEHEIABIAMpAwA3AwAgAkEBaiECIANBCGohAwwBCwsgACABKAIkEBhBACECIAFBADYCKCABQgA3AyAgASABLQAFQfcBcToABQsgAgt5AQN/AkACQCAAQQFxIgINACABQYECcUGBAkYgAUGACHFBACAAIAFzQQRxG3INASACIAFBgPQAcUVyDQAgAEEwcSICQRBGIAFBgDBxIgRBAEdzDQEgAEECcSABQYIEcUGCBEdyIAJBEEZyDQAgBEUNAQtBASEDCyADC5QBAQF/IwBBEGsiBSQAIAUg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AkACQCAAIARBCGogAUHiABCEASICRQ0AIAQpAwgiARAQBEAgACACKQMAEJkEIQMMAgsgACABIAIpAwhBASACEDUiARALDQAgACABECwiA0UEQEEAIQMMAgsgACACKQMAEJ8BIgJBAEgNACACRQ0BIABBodgAQQAQFAtBfyEDCyAEQRBqJAAgAw8LIAIgAi0ABUH+AXE6AAVBAQsuAQF/IACnKQMgIgBCgICAgHCDQoCAgICQf1EEfyAApygCBEH/////B3EFQQALCwoAIAAoAgBBfHELMwAgACACQQEQ/AEiAEUEQEKAgICA4AAPCyAAQRBqIAEgAkEBdBAjGiAArUKAgICAkH+EC2UCAn8BfkEEIQJCgICAgCAhBAJAAkACQAJAAkACQCABEFQiA0EIag4KAwIFBQUFBQUEAQALIANBB0YNAwwEC0EGIQIMAgtBBSECDAELQQchAgsgACgCKCACQQN0aikDACEECyAEC18BAXwgACkCBEL//////////z9YBEAgASABKwMIRAAAAAAAAPA/IAAoAgC3IgKjoDkDCCABIAErAxAgACgCBCIAQf////8HcSAAQR92IgB0IABrQRFquCACo6A5AxALC+cGAQV/AkACQAJAAkACQAJAAkACQAJAIAEtAARBD3EOBgABBAIDBgULIAAgASgCECIHIAIRAwAgBxAnIQUDQCAHKAIgIANKBEACQCAFKAIERQ0AIAEoAhQgA0EDdGohBAJAAkACQAJAIAUoAgBBHnZBAWsOAwABAgMLIAQoAgAiBgRAIAAgBiACEQMACyAEKAIEIgRFDQMgACAEIAIRAwAMAwsgBCgCACIELQAFQQFxRQ0CIAAgBCACEQMADAILIAAgBBCbBCACEQMADAELIAAgBCkDACACECELIANBAWohAyAFQQhqIQUMAQsLIAEvAQYiA0EBRg0GIAAoAkQgA0EYbGooAgwiA0UNBiAAIAGtQoCAgIBwhCACIAMREQAPCwNAIAEoAjggA0oEQCAAIAEoAjQgA0EDdGopAwAgAhAhIANBAWohAwwBCwsgASgCMCIBRQ0FIAAgASACEQMADwsgAS0ABUEBcUUNBSAAIAEoAhApAwAgAhAhDwsgASgCIARAIAAgAUEoaiACEPADCyAAIAEpAxAgAhAhIAAgASkDGCACECEPCyABKAIsIgFFDQIgACABIAIRAwAPCxABAAsgAUHkAWohAyABQeABaiEHA0AgByADKAIAIgVHBEAgBUEIayEDQQAhBANAIAMoAiAgBEoEQAJAIAMoAhwgBEEUbGoiBigCCA0AIAYoAgQiBkUNACAAIAYgAhEDAAsgBEEBaiEEDAELCyAAIAMpA0AgAhAhIAAgAykDSCACECEgACADKQNgIAIQISAAIAMpA2ggAhAhIAVBBGohAwwBCwsgACABKQPAASACECEgACABKQPIASACECEgACABKQOwASACECEgACABKQO4ASACECEgACABKQOoASACECFBACEDA0AgA0EIRgRAQQAhAwNAIAAoAkAgA0oEQCAAIAEoAiggA0EDdGopAwAgAhAhIANBAWohAwwBCwsgACABKQOYASACECEgACABKQOgASACECEgACABKQNQIAIQISAAIAEpA0AgAhAhIAAgASkDSCACECEgACABKQM4IAIQISAAIAEpAzAgAhAhIAEoAiQiAQRAIAAgASACEQMACwUgACABIANBA3RqKQNYIAIQISADQQFqIQMMAQsLCw8LQbM5QaENQY4sQcg5EAAAC4kCAgF+An8jAEEwayIEJABBoRkhBUKAgICA4AAhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABEFRBCGoOEAUGCQkJCQoEAAECAwkJCwgJCyAEIAE+AgAgBEEQakEgQZ4ZIAQQVRogBEEQaiEFDAkLIABBA0ECIAGnGxAxIQMMCQsgAEEBEDEhAwwICyAAQcUAEDEhAwwHCyAAIAFBABCbAyIBEAsEQCABIQMMBwsgACABIAIQoAQhAyAAIAEQCgwGCyACRQ0BCyABEA0hAwwECyAAQbUZQQAQFAwDCyAAIAEQSUEKQQBBABDJAiEDDAILQdUZIQULIAAgBRBxIQMLIARBMGokACADC6YEAQl/AkACQAJAIAJCgICAgHCDQoCAgICQf1IEQCAAIAIQKyICEAtFDQEMAgsgAhANIQILIAKnIgooAgQiBUH/////B3EhBgJAIAVBAE4EQCAKQRBqIQVBACEDA0AgBCAGRkUEQCADIAQgBWotAABBB3ZqIQMgBEEBaiEEDAELCyADRQRAIAFFDQQgASAGNgIAIAUPCyAAIAMgBmpBABD8ASIHRQ0CQQAhAyAHQRBqIgshBANAIAMgBkYNAgJ/IAMgBWosAAAiCEEATgRAIAQgCDoAACAEQQFqDAELIAQgCEE/cUGAAXI6AAEgBCAIQcABcUEGdkHAAXI6AAAgBEECagshBCADQQFqIQMMAAsACyAAIAZBA2xBABD8ASIHRQ0BQQAhBSAHQRBqIgshBANAIAUiCCAGTg0BIAhBAWohBSAKIAhBAXRqLwEQIglB/wBNBEAgBCAJOgAAIARBAWohBAUCQCADIAUgBk5yIAlBgPgDcUGAsANHcg0AIAogBUEBdGovARAiDEGA+ANxQYC4A0cNACAJQQp0QYD4P3EgDEH/B3FyQYCABGohCSAIQQJqIQULIAQgCRDjAiAEaiEECwwACwALIARBADoAACAHIAQgB2tBEGtB/////wdxrSAHKQIEQoCAgIB4g4Q3AgQgACACEAogAQRAIAEgBygCBEH/////B3E2AgALIAsPCyABRQRAQQAPC0EAIQUgAUEANgIACyAFCyUCAX8BfiAAIAEQMSIDEAtFBEAgACADELcBIQIgACADEAoLIAILDAAgASAAKAIMEQQACz0BAX8gASABKAIAIgJBAWs2AgAgAkEBTARAIAEpAgRCgICAgICAgIDAAFoEQCAAIAEQqwMPCyAAIAEQHwsLVQECfyMAQRBrIgIkACAAKAIQIQACfwJAIAJBDGogARDoBUUNACACKAIMIgNBAEgNACAAIAEQpAQgAxCTAQwBCyAAIAFBARDUAgshASACQRBqJAAgAQtcAQN/IABB4AFqIQQgACgC5AEhAwNAIAQgAyICRwRAIAIoAgQhAwJAAkACQCABDgMCAAEECyACLABMDQMMAQsgAikCTEIghkI4h6cNAgsgACACQQhrEOoFDAELCwu8AQEDfwJAIAEgAigCECIDBH8gAwVBACEDIAIQ8AUNASACKAIQCyACKAIUIgVrSwRAIAIgACABIAIoAiQRAQAPCwJ/IAIsAEtBf0oEQCABIQMDQCABIAMiBEUNAhogACAEQQFrIgNqLQAAQQpHDQALIAIgACAEIAIoAiQRAQAiAyAESQ0CIAAgBGohACACKAIUIQUgASAEawwBCyABCyEDIAUgACADECMaIAIgAigCFCADajYCFCABIQMLIAMLQAEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQeiAAIAUpAwA3AwAgACAFKQMINwMIIAVBEGok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5wBBABDXASEDIAAgARAKIANBf0oNASAAQYbCAUEAEBQLQX8hAgsgAgtdAQF/AkACQAJAAkAgAUIgiKdBAWoOAwECAAILIAEQDQ8LIAGnIgIvAQZBBkcNACACKQMgIgFCgICAgHCDQoCAgIAQUQ0BCyAAQYC4AUEAEBRCgICAgOAAIQELIAELEABB4bEBIABBCxCBAkEARwteAQJ/QcCxASEDAkACQCABKAIEQf////8HcSIEIAJMDQAgASACEC9BJUcNAEHNsQEhAyACQQJqIARODQAgASACQQFqQQIQwwMiAkF/Sg0BCyAAIAMQxANBfyECCyACC1cAIwBBEGsiAiQAAn5CgICAgOAAIAAgAkEIaiADKQMAEEcNABogAisDCL1CgICAgICAgPj/AINCgICAgICAgPj/AFKtQoCAgIAQhAshASACQRBqJAAgAQtXACMAQRBrIgIkAAJ+QoCAgIDgACAAIAJBCGogAykDABBHDQAaIAIrAwi9Qv///////////wCDQoCAgICAgID4/wBWrUKAgICAEIQLIQEgAkEQaiQAIAEL+AICA38DfiMAQTBrIggkACADQgAgA0IAVRshDSAFQQFrIQogBUEBSCEFQgAhAwNAAkAgAyANUQRAIAQhDAwBC0J/IQwgACACIAMgCEEoahCJASIJQQBIDQACQCAJRQ0AIAYQEEUEQCAIIAgpAyg3AwAgAyELIANCgICAgAhaBEAgA7kQFSELCyAIIAI3AxAgCCALNwMIIAggACAGIAdBAyAIECIiCzcDKCAAIAgpAwAQCiAAIAgpAwgQCiALEAsNAgsCQAJAAkAgBQ0AIAAgCCkDKCILEL8BIglBAEgNASAJRQ0AIAAgCEEgaiALEEBBAEgNASAAIAEgCyAIKQMgIAQgCkKAgICAMEKAgICAMBDTBCIEQgBTDQEgACALEAoMAwsgBEL/////////D1MNASAAQfusAUEAEBQgCCkDKCELCyAAIAsQCgwCCyAAIAEgBCAIKQMoEG1BAEgNASAEQgF8IQQLIANCAXwhAwwBCwsgCEEwaiQAIAwLDAAgAEIAIABCAFUbCygAAkAgARAQRQRAIAEQJkUNAQsgACABED4PCyAAIAFBOEEAQQAQuQILowICBn8BfiMAQTBrIgIkAAJAAkAgAykDACIBECBFDQBCgICAgOAAIQsgACAB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ARAKQoCAgIDgAAuYAQICfgF/IAAgARAxIQMCfwJAIAEQXA0AQQAgACgCECgCOCABQQJ0aigCACkCBCICQoCAgICAgICAQINCgICAgICAgICAf1IgAkKAgICA8P///z+DUCACQv//////////v39WcRsNACACp0F/c0EfdkEBIAJC/////weDUBshBAsgBAsEfiAAQcHKACADQcPKABC9AQUgAwsLpwEBBX8gAKciAygCECIBIAEoAhhBf3NBAnRBpH5yaigCACECIAEQJyEBA0AgAkUEQEEADwsgASACQQFrIgRBA3RqIgUoAgAhAiAFKAIEQTZHBEAgAkH///8fcSECDAELC0EBIQECQCACQf////8DSw0AIAMoAhQgBEEDdGopAwAiAEKAgICAcINCgICAgJB/Ug0AIACnKAIEQf////8HcUEARyEBCyABC8wDAQZ/IABB4ABqIgQQbiAAQdAAaiEFIAAoAlQhAgJAAkADQCAFIAIiAUcEQCABQQRrIgMtAABBEE8NAiABKAIEIQIgACABQQhrIgZBBhCfBCADIAMtAABBD3FBEHI6AAAgBigCAA0BIAEQRiABIAQQTAwBCwsMAQtBnDlBoQ1BxCxBqTkQAAALIABB1ABqIQEgAEHQAGohAgJAAkADQCACIAEoAgAiAUcEQCABQQhrIgMoAgBBAEwNAiABQQRrIgQgBC0AAEEPcToAACAAIANBBxCfBCABQQRqIQEMAQsLIABB5ABqIQEgAEHgAGohAgNAIAIgASgCACIBRwRAIAAgAUEIa0EIEJ8EIAFBBGohAQwBCwsMAQtB1jlBoQ1B5yxB9zkQAAALIAAiAkECOgBoIABB2ABqIQMgAEHgAGohAQNAIAEgAigCZCIARwRAIABBBGstAABBDnEEQCAAEEYgACADEEwFIAIgAEEIaxDfBQsMAQsLIAJBADoAaCACKAJcIQACQAJAA0AgACADRwRAIABBBGstAABBDnENAiAAKAIEIQEgAiAAQQhrEB8gASEADAELCyADEG4MAQtB/zlBoQ1BnS1B4DoQAAALCw0AIAAgAUHxyQAQxQELUAIBfwF+AkAgACABQekAIAFBABASIgQQC0UEQCAAIAQQLCEDIAAgAUHAACABQQAQEiIBEAtFDQELQoCAgIDgACEBQQAhAwsgAiADNgIAIAELxAEBBH8gAaciBSACNgIgIAVCADcCJAJAIAIoAjwiBkUNAAJAIAAgBkECdBBqIghFDQAgBSAINgIkQQAhBQNAIAUgAigCPE4NAiACKAIkIAVBA3RqIgcvAQIhBgJAIActAAAiB0EBcQRAIAAgBCAGIAdBAXZBAXEQigQiBg0BDAMLIAMgBkECdGooAgAiBiAGKAIAQQFqNgIACyAIIAVBAnRqIAY2AgAgBUEBaiEFDAALAAsgACABEApCgICAgOAAIQELIAEL8QMBCn8gASgCCCIGQQAgBkEAShshBAJAAkADQCAEIAVGDQEgBUECdCEHIAVBAWohBSAHIAEoAgBqKAIAIAJHDQALQQAhBAwBC0F/IQQgACABQQQgAUEEaiAGQQFqEH0NACABIAEoAggiBEEBajYCCCABKAIAIARBAnRqIAI2AgBBACEFIANBAEchCiABQRBqIQsgAUEMaiEHA0ACQCACKAIgIAVMBEBBACEEQQAhBQNAIAUgAigCLE4NBCAFQQJ0IQMgBUEBaiEFIAAgASACKAIQIAMgAigCKGooAgBBA3RqKAIEQQEQogVFDQALDAELIAogAigCHCIMIAVBFGwiDWoiCSgCECIEQRZGcUUEQAJAAn8Cf0EAIQYgASgCFCIIQQAgCEEAShshCANAAkAgBiAIRgRAQX8hBgwBCyABKAIMIAZBDGxqKAIAIARGDQAgBkEBaiEGDAELCyAGIgRBf0wLBEAgACAHQQwgCyABKAIUQQFqEH0NBCABIAEoAhQiBEEBajYCFCABKAIMIARBDGxqIgQgDCANaiIGKAIQNgIAAkAgA0UEQCAGKAIIRQ0BCyAEQQhqDAILIARBCGohBAwCCyAHKAIAIARBDGxqQQhqCyEEQQAhCQsgBCAJNgIACyAFQQFqIQUMAQsLQX8PCyAEC18BBH8DQCACIAVKBEAgASAFaiIGLQAAIgRBD2ogBCAEQbEBSxsgBCADG0ECdCIEQZAxai0AACEHIARBkzFqLQAAQRdrQQRNBEAgACAGKAABEPMBCyAFIAdqIQUMAQsLC0gBA38gAkEAIAJBAEobIQIDQCACIANGBEBBAA8LIAEgA2ohBCADQQF0IQUgA0EBaiEDIAAgBWovAQAgBC0AAGsiBEUNAAsgBAtVAQJ/IAEEQAJAIAAoAgggACgCBCIDIAFqSQ0AIAEQoQIiAUUNACAAIANBCGo2AgQgACAAKAIAQQFqNgIAIAEhAgsgAg8LQdYfQaENQaINQeAfEAAAC0kBA38gACgCIEEYaiEBAkADQCABIgMoAgAiAkUNASACQQxqIQEgACACRw0ACyADIAAoAgw2AgAPC0H7HkGhDUGj5QJBhx8QAAALGAEBfyABpygCICIDBEAgACADIAIRAwALC510AhN/AX4jAEEQayIUJAAgASgCyAEiB0EAIAdBAEobIQQDQCADIARHBEAgASgCzAEgA0EDdGpBfzYCBCADQQFqIQMMAQsLIAEoAjwEQCABKALMAUF+NgIMC0EAIQMgASgCfCIEQQAgBEEAShshCgJ+AkACQAJAA0AgAyAKRgRAAkBBAiEDIAdBAiAHQQJKGyEHA0ACQCADIAdGBEBBACEDA0AgAyAKRg0CAkAgASgCdCADQQR0aiIEKAIIQX9KDQAgBCgCBCIHQQJIDQAgBCABKALMASIEIAQgB0EDdGooAgBBA3RqKAIENgIICyADQQFqIQMMAAsACyABKALMASIEIANBA3RqIgYoAgRBf0wEQCAGIAQgBigCAEEDdGooAgQ2AgQLIANBAWohAwwBCwsgASgCRARAAkACQCABIgcoAiANACABLQBuQQFxDQAgASAAIAFB0gAQVjYCkAEgASgCPEUNACABIAAgAUHTABBWNgKUAQsCQCABKAJMIgZFDQAgASgCqAFBf0wEQCABIAAgARDKAzYCqAELIAEoAqwBQX9MBEAgASAAIAFB8QAQVjYCrAELAkAgASgCYEUNACABKAKwAUF/Sg0AIAEgACABQfIAEFY2ArABCyABKAIwRQ0AIAEoArQBQX9KDQAgASAAIAFB8wAQVjYCtAELAkAgASgCSCIFRQ0AIAAgARDtAhogASgCPEUNACABLQBuQQFxDQACQCABKAKcAUF/Sg0AIAEoAswBQQxqIQMDQAJAQX8hBCADKAIAIgNBAEgNACABKAJ0IANBBHRqIgooAgRBAUcNACADIQQgCigCAEHNAEYNACAKQQhqIQMMAQsLIARBf0oNACAAIAFBzQAQViIKQQBIDQAgASgCdCAKQQR0aiIEIAEoAswBIgMoAgw2AgggAyAKNgIMIARBATYCBCAEIAQoAgxBAnI2AgwgASAKNgKcAQsLAkAgASgCLEUNACABKAJwIgNFDQAgACABIAMQ7AIaCwJAAkAgASgCIARAIAEhAwwBCyABIQMgBygCwAINAQsDQCADKAIEIgQEQCADKAIMIQoCQCAGDQAgBCgCTEUEQEEAIQYMAQsgBCgCqAFBf0wEQCAEIAAgBBDKAzYCqAELIAQoAqwBQX9MBEAgBCAAIARB8QAQVjYCrAELAkAgBCgCYEUNACAEKAKwAUF/Sg0AIAQgACAEQfIAEFY2ArABC0EBIQYgBCgCMEUNACAEKAK0AUF/Sg0AIAQgACAEQfMAEFY2ArQBCwJAIAUNACAEKAJIRQRAQQAhBQwBCyAAIAQQ7QIaQQEhBQsCQCAEKAIsRQ0AIAQoAnAiA0UNACAAIAQgAxDsAhoLIAQoAswBIApBA3RqQQRqIQMDQCADKAIAIglBAE4EQCAEKAJ0IAlBBHRqIgogCigCDCIDQQRyNgIMIAAgByAEQQAgCSAKKAIAIANBAXEgA0EBdkEBcSADQQN2QQ9xEKMBGiAKQQhqIQMMAQsLAkAgCUF+RwRAQQAhAwNAIAQoAogBIANMBEBBACEDA0AgAyAEKAJ8Tg0EAkAgBCgCdCADQQR0aiIKKAIEDQAgCigCACIKRSAKQdEARnINACAAIAcgBEEAIAMgCkEAQQBBABCjARoLIANBAWohAwwACwALIAQoAoABIANBBHRqKAIAIgoEQCAAIAcgBEEBIAMgCkEAQQBBABCjARoLIANBAWohAwwACwALQQAhAwNAIAMgBCgCfE4NAQJAIAQoAnQgA0EEdGoiCigCBA0AIAoQ+QRFDQAgACAHIARBACADIAooAgBBAEEAQQAQowEaCyADQQFqIQMMAAsACyAEIgMoAiBFDQFBACEDA0AgBCgCwAIgA0wEQCAEIQMMAwUgACAHIARBACAEKALIAiADQQN0aiIKLQAAIglBAXZBAXEgAyAKKAIEIAlBAnZBAXEgCUEDdkEBcSAJQQR2EIYCGiADQQFqIQMMAQsACwALCwwBC0GWlgFBoQ1BtewBQb6WARAAAAsLIAEoApQDBEBBACEDIAEoApQDIQkCQANAAkAgASgC9AEgA0wEQEEAIQdBACEDA0AgAyAJKAIgTg0EIAkoAhwgA0EUbGoiBSgCCEUEQAJ/IAUoAgwiCiEGQQAhDiABKALAAiIEQQAgBEEAShshBANAAkAgBCAORgRAQX8hDgwBCyABKALIAiAOQQN0aigCBCAGRg0AIA5BAWohDgwBCwsgDiIEQX9MCwRAIAAgCkHRlgEQlAMMBAsgBSAENgIACyADQQFqIQMMAAsACyAAIAFBAUEAIAMgASgC/AEgA0EEdGoiBCgCDCAELQAEIgRBAnZBAXEgBEEBdkEBcUEAEMsDIQQgA0EBaiEDIARBAE4NAQsLQX8hBwsgBw0BCyABQRBqIQcgASgCFCEDAkADQCADIAdHBEAgAygCBCEEIANBEGsoAgAhBiAAIANBGGsQqAUiFRALDQMgBkF/TA0CIAEoArQCIAZBA3RqIBU3AwAgBCEDDAELCwJ/QQAhAyMAQZABayILJAAgCyABKAKAAiISNgJQIAsgASgChAIiEzYCVCAAIAtB+ABqEJECIAFBgAJqIREDfyABKAL0ASADTAR/QQAhB0EABUEAIQQgASgCwAIiB0EAIAdBAEobIQogASgC/AEgA0EEdGoiBSEJAkADQCAEIApHBEAgASgCyAIgBEEDdGoiBigCBCIHIAkoAgxGBEAgASgCJEECRw0DIAYtAABBCHFFDQMgC0H4AGpBMBAOIAtB+ABqIAAgCSgCDBAXEBwgC0H4AGpBARAODAMLIAdBfnFB0gBGDQIgBEEBaiEEDAELCyALQfgAakE/EA4gC0H4AGogACAJKAIMEBcQHCALQfgAaiAFLQAEQQZ0IgRBwAByIARBgAFxIAUoAgBBf0obQcABcRAOCyADQQFqIQMMAQsLIQMDQAJAAkACQAJAAkACQAJAAn8CQAJAIBMgByIESgRAIAQgBCASaiIQLQAAIgZBAnRBkDFqLQAAIgJqIQcCQAJAAkACQAJAAkACQAJAAkAgBkGxAWsOEBQFBgQBAQEBAgEBAwMDFAgACyAGQRFrIgRBH0sNDkEBIAR0QYCA0Ix8cQ0PIARFDQYgBEEFRw0OIAtBfzYCGCALQsn6gIDgATcDECALQdAAaiAHIAtBEGoQKkUNESALQfgAaiALLQBgEA4gCygCWCEHIAsoAlwiBEF/RiADIARGcg0TIAEgASgC3AJBAWo2AtwCIAtB+ABqQcABEA4gC0H4AGogBBAcIAQhAwwTCyAAIAEgECgAASIEIBAvAAUgBiALQfgAakEAQQAgBxDiBCEHIAAgBBARDBILIBAoAAEhCiAQLwAJIQQgASgCpAIgECgABUEUbGoiBiAGKAIAQQFrNgIAIAAgASAKIARBuQEgC0H4AGogEiAGIAcQ4gQhByAAIAoQEQwRCwJ/IBAoAAEiCiEPIBAvAAUhCSALQfgAaiEIIwBBEGsiDCQAQX8hDQJAAkACQCAAIAxBCGogDEEMaiABIA8gCRDbBCIOQQBIDQAgDCgCDCIFRQ0BAkACQAJAAkAgBkG8AWsOAwAAAQILAkACQAJAIAVBBWsOBQABAgUCBAsgBkG9AUYEQCAIQREQDgsgCCAMKAIIIA4QrgIgCEHEABAOQQAhDQwFCyAIIAwoAgggDhCuAiAIQSwQDkEAIQ0gBkG9AUYNBCAIQQ8QDgwECyAGQb0BRgRAIAhBERAOCyAIIAwoAgggDhCuAiAIQSwQDiAIQSQQDkEAIQ0gCEEAEDAMAwsCQAJAAkAgBUEFaw4FAAEBAgIDCyAIIAwoAgggDhCuAiAIQcUAEA5BACENDAQLIAhBMBAOIAggACAPEBcQHEEAIQ0gCEEAEA4MAwsgACAPEOcEIgVFDQIgACAMQQhqIAxBDGogASAFIAkQ2wQhBiAAIAUQESAGQQBIDQIgDCgCDEEIRw0EIAggDCgCCCAGEK4CIAhBGxAOIAhBHhAOIAhBLBAOIAhBHRAOIAhBJBAOIAhBARAwQQAhDQwCCxABAAsgCEEwEA4gCCAAIA8QFxAcQQAhDSAIQQAQDgsgDEEQaiQAIA0MAgtB+5cBQaENQZvrAUGVmAEQAAALQbGYAUGhDUHY6wFBlZgBEAAAC0EASARAA0AgBCATTg0IIAtB+ABqIAQgEmoiAyADLQAAQQJ0QZAxai0AACIDEIcBGiADIARqIQQMAAsACyAAIAoQEQwQCyAQKAABIgRBAEgNCCAEIAEoAqwCTg0IIAEoAqQCIARBFGxqIAsoAnwgAmo2AggMDQsgEC8AASIJIAEoAvABRgRAIAtB+ABqIQJBACEGQQAhDwNAAkAgASgCiAEgBkwEQEEAIQYDQCAGIAEoAnxODQICQCABKAJ0IAZBBHRqIgQoAgQNACAELQAPQcAAcQ0AIAJBAxAOIAIgBCgCDEEBdEEIdRAcIAJB2QAQDiACIAZB//8DcRAwCyAGQQFqIQYMAAsACyABKAKAASAGQQR0aiIELQAPQcAAcUUEQCACQQMQDiACIAQoAgxBAXRBCHUQHCACQdwAEA4gAiAGQf//A3EQMAsgBkEBaiEGDAELC0F/IQwgASgClAMEQCABQX8Q0AMhDCACQQgQDiACQekAEA4gAiAMEBwgASAMQQEQbxogASABKALQAkEBajYC0AILA0AgASgC9AEgD0oEQEEAIQYgASgCwAIiBEEAIARBAEobIQQgASgC/AEgD0EEdGoiDSEIIA0tAAQiBUEBcSEOAkACfwNAIAQgBkcEQCABKALIAiAGQQN0aigCBCIKIAgoAgxGBEBBACEOIAYhBEECDAMLIApBfnFB0gBGBEAgAkHeABAOIAIgBkH//wNxEDBBASEOIAYhBEEBDAMFIAZBAWohBgwCCwALCyABKAIkQQBHIQogBUECcSIGIA0oAgBBAEhyRQRAIAJBAxAOIAIgDSgCABAcIAJBwAAQDiACIAAgCCgCDBAXEBwgAiAKEA4MAgsgAkE+EA4gAiAAIAgoAgwQFxAcIAJBgH9Bgn8gBUEEcRtBACAGGyAKckGDAXEQDkEACyEKIA5FQQAgDSgCACIGQQBIGw0AAkAgBkEATgRAIAJBAxAOIAIgDSgCABAcIAgoAgxB/ABHDQEgAkHNABAOIABBFhAXGiACQRYQHAwBCyACQQYQDgsCQAJAAkAgCkEBaw4CAQACCyACQd8AEA4gAiAEQf//A3EQMAwCCyACQcwAEA4gAiAAIAgoAgwQFxAcIAJBDhAODAELIAJBORAOIAIgACAIKAIMEBcQHAsgACAIKAIMEBEgD0EBaiEPDAELCyABKAKUAwRAIAJBKRAOIAJBtAEQDiACIAwQHCABKAKkAiAMQRRsaiACKAIENgIICyAAIAEoAvwBEBggAUIANwL0ASABQQA2AvwBCyABKALMASAJQQN0aigCBCIEQQBIDQ4DQCABKAJ0IARBBHRqIgYoAgQgCUcNDyABKAKcASAERwRAIAtB+ABqIAYoAgxBA3ZBD3FBAWtBAU0EfyALQfgAakEDEA4gC0H4AGogBigCDEEBdEEIdRAcQdkABUHhAAsQDiALQfgAaiAEQf//A3EQMAsgBigCCCIEQX9KDQALDA4LIAEoAswBIBAvAAEiBkEDdGooAgQiBEEASA0NA0AgASgCdCAEQQR0aiIKKAIEIAZHDQ4gCi0ADEEEcQRAIAtB+ABqQegAEA4gC0H4AGogBEH//wNxEDALIAooAggiBEF/Sg0ACwwNCyALQX82AkggC0Lp1IGA4AE3A0AgC0HQAGogByALQUBrECpFDQogCygCaCIFQQBIDQYgBSABKAKsAk4NBiALKAJcIQYgCygCWCEKIAsoAmAhCCAFIQQDQEEAIQwgASIJKAKAAiEPIAEoAqQCIQ4DQAJAIAxBFEYNACAOIARBFGxqKAIEIQkDQCAJIA9qIgQtAAAiDUG0AUYgDUHAAUZyBEAgCUEFaiEJDAEFIA1B6wBHDQIgDEEBaiEMIAQoAAEhBAwDCwALAAsLIAkhBCALQo6AgIBwNwM4IAsgCDYCNCALQRE2AjAgC0HQAGogBCALQTBqECoEQCALKAJoIQQMAQsLIAtBfzYCJCALIAg2AiAgC0HQAGogBCALQSBqECpFDQogASABKALQAkEBajYC0AIgASAFQX8QbxogASALKAJoIgRBARBvGiALQfgAaiAIQf8BcRAOIAtB+ABqIAQQHCAKIQcgBkF/RiADIAZGcg0MIAEgASgC3AJBAWo2AtwCIAtB+ABqQcABEA4gC0H4AGogBhAcIAYhAwwMCyAQKAABIQMgASABKALcAkEBajYC3AIMCQsgERCVASARIAspA4gBNwIQIBEgCykDgAE3AgggESALKQN4NwIAQQAgESgCDEUNAhogABDGAQwBCyAREJUBIBEgCykDiAE3AhAgESALKQOAATcCCCARIAspA3g3AgALQX8LIQMgC0GQAWokACADDAgLQZ6KAUGhDUGM8gFB95YBEAAAC0GJlwFBoQ1B3fIBQfeWARAAAAsCQAJAAkAgBkHpAGsOBgQEAgQBAwALIAZBMUYEQCAQLwABIQYgASAQLwADIgQQ4QQgC0H4AGpBMRAOIAtB+ABqIAYQMCALQfgAaiABKALMASAEQQN0ai8BBEEBakH//wNxEDAMBwsgBkEyRwRAIAZBzQBHDQUgECgAAUUNBwwFCyABIBAvAAEiBBDhBCALQfgAakEyEA4gC0H4AGogASgCzAEgBEEDdGovAQRBAWpB//8DcRAwDAYLIAEgASgC0AJBAWo2AtACIBAoAAEiBEEASA0EIAQgASgCrAJODQQgASgCpAIgBEEUbGoiBigCBCEEIAtC7oCAgHA3AwAgC0HQAGogBCALECpFDQMgBiAGKAIAQQFrNgIADAULIAEgASgC0AJBAWo2AtACCyALQX82AkwgC0H4AGogECACEIcBGiABIBIgEyAHIAtBzABqEK8CIgcgE04NAyALKAJMIgRBAEggAyAERnINAyABIAEoAtwCQQFqNgLcAiALQfgAakHAARAOIAtB+ABqIAQQHCAEIQMMAwsgASABKALQAkEBajYC0AILIAtB+ABqIBAgAhCHARoMAQsLQZ6KAUGhDUG88QFB95YBEAAACw0BAn8jAEHQBWsiAiQAIAEoAqQCIQ4gAiABKALwAjYCyAUgAiABKAKAAiIMNgKIBSACIAEoAoQCIg82AowFIAAgAkGwBWoQkQICQAJ/AkAgASgC0AIiAwRAIAEgASgCACADQQR0EGoiAzYCzAIgA0UNAQsCQCABKALcAiIDRQ0AIAEtAG5BAnENACABIAEoAgAgA0EDdBBqIgM2AtgCIANFDQEgAUEANgLoAiABIAEoAvACNgLkAgsgASgCtAFBAE4EQCACQbAFakEMEA4gAkGwBWpBBBAOIAJBsAVqQdkAIAEoArQBEGYLIAEoArABQQBOBEAgAkGwBWpBDBAOIAJBsAVqQQIQDiACQbAFakHZACABKAKwARBmCyABKAKsAUEATgRAIAJBsAVqQQwQDiACQbAFakEDEA4gAkGwBWpB2QAgASgCrAEQZgsCQCABKAKoAUEASA0AIAEoAmAEQCACQbAFakHhABAOIAJBsAVqIAEvAagBEDAMAQsgAkGwBWpBCBAOIAJBsAVqQdkAIAEoAqgBEGYLIAEoApgBQQBOBEBBACEDIAEtAG5BAXFFBEAgASgCOEEARyEDCyACQbAFakEMEA4gAkGwBWogAxAOIAEoApwBIgNBAE4EQCACQbAFakHaACADEGYLIAJBsAVqQdkAIAEoApgBEGYLIAEoAqABQQBOBEAgAkGwBWpBDBAOIAJBsAVqQQIQDiACQbAFakHZACABKAKgARBmCyABKAKQAUEATgRAIAJBsAVqQQwQDiACQbAFakEFEA4gAkGwBWpB2QAgASgCkAEQZgsgASgClAFBAE4EQCACQbAFakEMEA4gAkGwBWpBBRAOIAJBsAVqQdkAIAEoApQBEGYLIAFBgAJqIQ1BACEDA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAyAPTgRAQQAhAyABKAKsAiIEQQAgBEEAShshBwNAIAMgB0YNAiADQRRsIQQgA0EBaiEDIAQgDmooAhBFDQALQfKZAUGhDUH9+gFBqZkBEAAACyADIAMgDGoiCC0AACIFQQJ0QZAxai0AACIJaiEEAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQdgAaw4gEBIaERIaERIaGhoaGhoaGhoEBAEDAhoaDAwFBQUFBQUACwJAIAVBAWsOFQkKCgsaDQcaCAgaGhoGGhoPGhoaDgALIAVBImsiBkEfSw0YQQEgBnQiB0HA4QFxDRIgB0EFcUUEQCAGQR9HDRkgCCgAAUEwRw0aIABBMBARIAEgAigCtAUgAigCyAUQMyACQbAFakHnARAOIAQhAwwjCyAILwABIQMgAkKogICAcDcDACACQYgFaiAEIAIQKgRAAkAgAigClAUiBEF/TARAIAIoAsgFIQQMAQsgAiAENgLIBQsgASACKAK0BSAEEDMgAkGwBWogBUEBaiADEGYgASAMIA8gAigCkAUgAkHIBWoQrwIhAwwjCyABIAIoArQFIAIoAsgFEDMgAkGwBWogBSADEGYgBCEDDCILIAgoAAEhBSAEIQcMFgtB7QAhBSAIKAABIQYMFAtB7AAhBSAIKAABIQYMEwsgAkGIBWogBCABIAgoAAEgAkHMBWpBABDJAyIGEMgDBEAgASAGQX8QbxogAkGwBWpBDhAOIAQhAwwfCyACQuuAgIBwNwMQIAJBiAVqIAQgAkEQahAqRQ0SIAIoApQFIQogAkGIBWogAigCkAUiByAGEMgDRQ0SIApBAE4EQCACIAo2AsgFCyABIAZBfxBvGiAFQQNzIQUgAigCoAUhBgwcCyAIKAABIQYgCC0ACSEHIAEgCCgABSACQcwFakEAEMkDIglBAEgNDyAJIAEoAqwCTg0PIAEgAigCtAUgAigCyAUQMyABIAEoAtQCIgNBAWo2AtQCIAEoAswCIANBBHRqIgpBBDYCBCAKIAU2AgAgAigCtAUhAyAKIAk2AgwgCiADQQVqNgIIIAJBsAVqIAUQDiACQbAFaiAGEBwgAkGwBWogDiAJQRRsaiIDKAIMIAIoArQFaxAcIAMoAgxBf0YEQCAAIAMgAigCtAVBBGtBBBDrAkUNHQsgAkGwBWogBxAOIAQhAwwdCyACQqmAgIBwNwMgIAJBiAVqIAQgAkEgahAqRQ0TIAQhAyACKAKUBSIEQQBIDRwgAiAENgLIBQwcCyACQquBgIBwNwNQIAJBiAVqIAQgAkHQAGoQKgRAAkAgAigClAUiA0F/TARAIAIoAsgFIQMMAQsgAiADNgLIBQsgASACKAK0BSADEDMgAkGwBWpB8QEQDgwYCyACQX82AkggAkKsgYCAkM0aNwNAIAJBiAVqIAQgAkFAaxAqRQ0AAkAgAigClAUiBUF/TARAIAIoAsgFIQUMAQsgAiAFNgLIBQsgASACKAK0BSAFEDMgAkGwBWpB8QEQDiACKAKYBUEDcyEFDBgLIAJC6dSBgHA3AzAgAkGIBWogBCACQTBqECpFDREgBUEKRiEKDA0LAkAgCCgAASIHQf////8HcUUNACACQoyBgIBwNwOQASACQYgFaiAEIAJBkAFqECpFDQAgAigClAUiA0EATgRAIAIgAzYCyAULIAJCjoCAgHA3A4ABIAJBiAVqIAIoApAFIAJBgAFqECoEQCACKAKUBSIDQQBIDRcgAiADNgLIBQwXCyABIAIoArQFIAIoAsgFEDMgAkGwBWpBACAHaxDHAwwWCyACQo6AgIBwNwNwIAJBiAVqIAQgAkHwAGoQKgRAIAIoApQFIgNBAEgNFiACIAM2AsgFDBYLIAJC6dSBgHA3A2AgAkGIBWogBCACQeAAahAqBEAgB0EARyEKDA0LIAEgAigCtAUgAigCyAUQMyACQbAFaiAHEMcDIAQhAwwZCyAIKAABIgNB/wFKDQ8gASACKAK0BSACKALIBRAzIAJBsAVqIAVBxQBrQf8BcRAOIAJBsAVqIANB/wFxEA4gBCEDDBgLIAgoAAEhAyACQo6AgIBwNwOgASACQYgFaiAEIAJBoAFqECoEQCAAIAMQESACKAKUBSIDQQBIDRQgAiADNgLIBQwUCyADQS9HDQ4gAEEvEBEgASACKAK0BSACKALIBRAzIAJBsAVqQb8BEA4gBCEDDBcLIAJCyYCAgHA3A9gBIAJC2Lb5gnA3A9ABIAJBiAVqIAQiAyACQdABahAqDRYgAkF/NgLIASACQoGEkICQCTcDwAEgAkGIBWogAyACQcABahAqDRYgAkF/NgK4ASACQoaOqMiQCTcDsAEgAkGIBWogBCACQbABahAqDRYMDQsgAkKOgICAcDcDoAIgAkGIBWogBCACQaACahAqBEAgAigClAUiA0EASA0SIAIgAzYCyAUMEgsgAkKogICAcDcDkAIgAkGIBWogBCACQZACahAqBEACQCACKAKUBSIDQX9MBEAgAigCyAUhAwwBCyACIAM2AsgFCyABIAIoArQFIAMQMyACQbAFakEpEA4MEgsgAkLp1IGAcDcDgAJBACEKIAJBiAVqIAQgAkGAAmoQKg0IIAJCq4GAgHA3A/ABIAJBiAVqIAQgAkHwAWoQKgRAAkAgAigClAUiA0F/TARAIAIoAsgFIQMMAQsgAiADNgLIBQsgASACKAK0BSADEDMgAkGwBWpB8AEQDgwSCyACQX82AugBIAJCrIGAgJDNGjcD4AEgAkGIBWogBCACQeABahAqRQ0MAkAgAigClAUiBUF/TARAIAIoAsgFIQUMAQsgAiAFNgLIBQsgASACKAK0BSAFEDMgAkGwBWpB8AEQDiACKAKYBUEDcyEFDBILIAJBfzYCuAIgAkLD9oCA4AE3A7ACIAJBiAVqIAQgAkGwAmoQKkUNCwJAIAIoApQFIgNBf0wEQCACKALIBSEDDAELIAIgAzYCyAULIAEgAigCtAUgAxAzIAJBsAVqIAItAJgFEA4gAkGwBWogAigCqAUQHAwQCyACQX82AugCIAJC2bj9gnA3A+ACIAJBiAVqIAQgAkHgAmoQKkUNCiACKAKUBSIDQQBOBEAgAiADNgLIBQsgAkKOgICAcDcD0AIgAigCmAUiBUEBaiEHAkACf0F/IAJBiAVqIAIoApAFIgMgAkHQAmoQKkUNABogAigClAUiA0EATgRAIAIgAzYCyAULIAIgAigCnAU2AsQCQX8hBCACQX82AsgCIAIgBUEBazYCwAIgAkGIBWogAigCkAUiAyACQcACahAqRQ0BIAIoApAFIQMgAigClAULIQQgByEFCyABIAIoArQFIAIoAsgFEDMgAkGwBWogBSACKAKcBRBmIARBAEgNEyACIAQ2AsgFDBMLIAgvAAEiB0H/AUsNCSACQo6AgIBwNwL8AyACIAc2AvgDIAJCkKOCgJALNwPwAwJAIAJBiAVqIAQgAkHwA2oQKkUEQCACQo6AgIBwNwPgAyACIAc2AtwDIAJB2QA2AtgDIAJCjp+CgJACNwPQAyACQYgFaiAEIAJB0ANqECpFDQELAkAgAigClAUiBUF/TARAIAIoAsgFIQUMAQsgAiAFNgLIBQsgASACKAK0BSAFEDMgAkGwBWpBkwFBkwFBkgEgAigCmAUiA0GRAUYbIANBjwFGGxAOIAJBsAVqIAdB/wFxEA4MDwsgAkKOgICAcDcCxAMgAiAHNgLAAyACQpGAgICQCzcDuAMgAkKEgICA0BM3A7ADIAJBiAVqIAQgAkGwA2oQKgRAAkAgAigClAUiBUF/TARAIAIoAsgFIQUMAQsgAiAFNgLIBQsgASACKAK0BSAFEDMCQCACKAKoBUEvRgRAIABBLxARIAJBsAVqQb8BEA4MAQsgAkGwBWpBBBAOIAJBsAVqIAIoAqgFEBwLIAJBsAVqQZQBEA4gAkGwBWogB0H/AXEQDgwPCyACQo6AgIBwNwKkAyACIAc2AqADIAJCkYCAgJALNwOYAyACQoGAgIDQEzcDkAMgAkGIBWogBCACQZADahAqBEACQCACKAKUBSIFQX9MBEAgAigCyAUhBQwBCyACIAU2AsgFCyABIAIoArQFIAUQMyACQbAFaiACKAKgBRDHAyACQbAFakGUARAOIAJBsAVqIAdB/wFxEA4MDwsgAkKOgICAcDcDiAMgAiAHNgKEAyACQdkANgKAAyACQp2BgICQAjcD+AIgAkLYtvmCcDcD8AIgAkGIBWogBCACQfACahAqBEACQCACKAKUBSIFQX9MBEAgAigCyAUhBQwBCyACIAU2AsgFCyABIAIoArQFIAUQMyACQbAFaiACKAKYBSACKAKcBRBmIAJBsAVqQZQBEA4gAkGwBWogB0H/AXEQDgwPCyABIAIoArQFIAIoAsgFEDMgAkGwBWpB2AAgBxBmIAQhAwwSCyAILwABIQMgASACKAK0BSACKALIBRAzIAJBsAVqIAUgAxBmIAQhAwwRCyACIAgvAAEiAzYClAQgAkF/NgKYBCACIAVBAWs2ApAEIAJBiAVqIAQgAkGQBGoQKgRAAkAgAigClAUiBEF/TARAIAIoAsgFIQQMAQsgAiAENgLIBQsgASACKAK0BSAEEDMgAkGwBWogBUEBaiADEGYMDQsgASACKAK0BSACKALIBRAzIAJBsAVqIAUgAxBmIAQhAwwQCyABIAwgDyAEIAJByAVqEK8CIQQMBgsgASgC1AIhDyABKALMAiEHQQAhCkEAIQ4DQAJAAkACQCAKIA9IBEBBAyEFIAcoAgAiBEHpAGtBA08EQCAEQesBRw0EQQEhBQsgASgCpAIgBygCDEEUbGooAgwgBygCCCIMayIDQYB/SCADIAVB/wBqSnJFBEAgB0EBNgIEIARB6wFGBEBB6gEhAwwDCyAEQf8AaiEDDAILIARB6wBHIANBgIACakH//wNLcg0DIAdC64GAgCA3AgBBAiEFQesBIQMMAgsCQCAORQ0AIAEoAswCIQNBACEFA0AgBSAPTg0BIAEoAqQCIAMoAgxBFGxqKAIMIAMoAggiB2shBAJAAkACQAJAIAMoAgRBAWsOBAABAwIDCyACKAKwBSAHaiAEQf8BcRDfBAwCCyACKAKwBSAHaiAEQf//A3EQhAMMAQsgAigCsAUgB2ogBBBbCyADQRBqIQMgBUEBaiEFIAEoAtQCIQ8MAAsACyAAIAEoAswCEBggAUEANgLMAiAAIAEoAqQCEBggAUEANgKkAkEAIQ5BACEGAkAgAS0AbkECcQ0AIAEoAtgCRQ0AIAEoAvACIQcgASgCACABQfQCaiIJEJECA0AgDiABKALgAk4NAQJAIAEoAtgCIA5BA3RqIgMoAgQiBEEASA0AIAMoAgAiAyAGayIFQQBIDQAgBCAHayIKRQ0AAkACQCAFQTJKDQAgCkEBaiIHQQRLDQAgCSAHIAVBBWxqQQFqQf8BcRAODAELIAlBABAOIAkgBRCSBSAJIApBAXQgCkEfdXMQkgULIAMhBiAEIQcLIA5BAWohDgwACwALIAAgASgC2AIQGCABQQA2AtgCIA0QlQEgDSACKQPABTcCECANIAIpA7gFNwIIIA0gAikDsAU3AgAgAUEBNgKgAkEAIA0oAgxFDRQaIAAQxgEMEwsgByADNgIACyAMIAIoArAFakEBayADOgAAIAcoAgQiBCACKAKwBSAMamoiAyADIAVqIAIoArQFIAUgDGogBGprEOgBIAIgAigCtAUgBWs2ArQFQQAhBCABKAKsAiIDQQAgA0EAShshCSABKAKkAiEDA0AgBCAJRgRAIAEoAtQCIQ8gByEGIAohBANAAkAgDyAEQQFqIgRMBEBBACEDIAEoAuACIgRBACAEQQBKGyEJA0AgAyAJRg0CIAwgASgC2AIgA0EDdGoiBigCACIESQRAIAYgBCAFazYCAAsgA0EBaiEDDAALAAsgBiIDQRBqIQYgAygCGCIJIAxMDQEgAyAJIAVrNgIYDAELCyAOQQFqIQ4MAgsgDCADKAIMIgZIBEAgAyAGIAVrNgIMCyADQRRqIQMgBEEBaiEEDAALAAsgB0EQaiEHIApBAWohCgwACwALQZ6KAUGhDUGs9wFBqZkBEAAACyACKAKUBSIEQQBOBEAgAiAENgLIBQsgAigCoAUhBSACKAKQBSEHIAIoApgFQekAayAKRg0BIAEgBUF/EG8aIAchAwwMCyAEIQcMCQsgAkF/NgKEBSACQYgFaiAHIAEgBSACQcwFaiACQYQFahDJAyIGEMgDBEAgASAGQX8QbxogByEDDAsLIAIoAswFIgpBKGsiBEEHS0EBIAR0QYMBcUVyRQRAIAEgBkF/EG8aIAEgAigCtAUgAigCyAUQMyACQbAFaiAKQf8BcRAOIAEgDCAPIAcgAkHIBWoQrwIhAwwLC0HrACEFDAgLAkAgBUGQAWtBAk8EQCAFQZcBRg0BIAVBtAFHBEAgBUHAAUcNAyACIAgoAAE2AsgFIAQhAwwMCyAIKAABIgNBAEgNAyADIAEoAqwCTg0DIA4gA0EUbGoiCigCDEF/Rw0EIAogAigCtAU2AgwgCigCECEGA0AgBiIDBEAgCigCDCADKAIEIgdrIQUgAygCACEGAkACQAJAAkAgAygCCEEBaw4EAgEDAAMLIAIoArAFIAdqIAUQWwwCCyAFQYCAAmpBgIAETw0JIAIoArAFIAdqIAVB//8DcRCEAwwBCyAFQYABakGAAk8NCSACKAKwBSAHaiAFQf8BcRDfBAsgACADEBgMAQsLIApBADYCECAEIQMMCwsgAkKOgICAcDcD2AQgAkLZuP2CcDcD0AQgAkGIBWogBCACQdAEahAqBEAgAigClAUiA0EATgRAIAIgAzYCyAULIAIgAigCnAUiBzYCxAQgAkF/NgLIBCACIAIoApgFIgRBAWs2AsAEIAJBiAVqIAIoApAFIgMgAkHABGoQKgRAIAIoApQFIgNBAE4EQCACIAM2AsgFCyAEQQFqIQQgAigCkAUhAwsgASACKAK0BSACKALIBRAzIAJBsAVqIAVBAmtB/wFxEA4gAkGwBWogBCAHEGYMCwsgAkKOgICAcDcDuAQgAkKYgICAsOgONwOwBCACQYgFaiAEIAJBsARqECoEQAJAIAIoApQFIgNBf0wEQCACKALIBSEDDAELIAIgAzYCyAULIAEgAigCtAUgAxAzIAJBsAVqIAVBAmtB/wFxEA4gAkGwBWogAi0AmAUQDiACQbAFaiACKAKoBRAcDAcLIAJCjoCAgHA3A6gEIAJCmYCAgJAJNwOgBCACQYgFaiAEIAJBoARqECpFDQECQCACKAKUBSIDQX9MBEAgAigCyAUhAwwBCyACIAM2AsgFCyABIAIoArQFIAMQMyACQbAFaiAFQQJrQf8BcRAOIAJBsAVqQckAEA4MBgsgAkF/NgL4BCACQoSAgICwlevUqn83A/AEIAJBiAVqIAQgAkHwBGoQKkUNACACKAKUBSIHQQBOBEAgAiAHNgLIBQsgAigCmAUhBgJ/QfIBIAIoAqgFIgdBxQBGDQAaIAdBG0cNAUHzAQshByAGQX1xQakBRgRAIAEgAigCtAUgAigCyAUQMyACQbAFaiAHEA4gACACKAKoBRARDAYLIAJC6YCAgHA3A+AEIAJBiAVqIAIoApAFIAJB4ARqECpFDQACQCACKAKUBSIFQX9MBEAgAigCyAUhBQwBCyACIAU2AsgFCyABIAIoArQFIAUQMyACQbAFaiAHEA4gACACKAKoBRARQeoAIQUMBgsgASACKAK0BSACKALIBRAzIAJBsAVqIAggCRCHARogBCEDDAgLQZ6KAUGhDUHj9QFBqZkBEAAAC0G4mQFBoQ1B5fUBQamZARAAAAtBx5kBQaENQfD1AUGpmQEQAAALQd2ZAUGhDUH09QFBqZkBEAAACyACKAKQBSEDDAMLIAIoAqAFIQYgAigCkAUhBwsgASACKAK0BSACKALIBRAzIAVB6wBHIglFBEAgASAMIA8gByACQcgFahCvAiEHCyAGQQBIDQQgBiABKAKsAk4NBCABIAEoAtQCIgRBAWo2AtQCIAEoAswCIARBBHRqIghBBDYCBCAIIAU2AgAgAigCtAUhCiAIIAY2AgwgCCAKQQFqNgIIAkAgDiAGQRRsaiIGKAIMIgRBf0YEQCAGKAIIIANBf3NqIgNB/wBKIAVB6QBrQQJLckUEQCAIQQE2AgQgCCAFQf8AaiIDNgIAIAJBsAVqIANB/wFxEA4gAkGwBWpBABAOIAchAyAAIAYgAigCtAVBAWtBARDrAg0EDAMLIAkgA0H//wFKcg0BIAhBAjYCBCAIQesBNgIAIAJBsAVqQesBEA4gAkGwBWpBABAwIAchAyAAIAYgAigCtAVBAmtBAhDrAg0DDAILIAVB6QBrQQJLIAQgCkF/c2oiBEGAAWpB/wFLckUEQCAIQQE2AgQgCCAFQf8AaiIDNgIAIAJBsAVqIANB/wFxEA4gAkGwBWogBEH/AXEQDiAHIQMMAwsgCSAEQYCAAmpB//8DS3INACAIQQI2AgQgCEHrATYCACACQbAFakHrARAOIAJBsAVqIARB//8DcRAwIAchAwwCCyACQbAFaiAFQf8BcRAOIAJBsAVqIAYoAgwgAigCtAVrEBwgByEDIAYoAgxBf0cNASAAIAYgAigCtAVBBGtBBBDrAg0BCwsgAkGwBWoQlQELQX8LIQMgAkHQBWokACADDAELQZ6KAUGhDUHl9gFBqZkBEAAACw0BQQAhCSMAQdAAayIIJAAgASgCgAIhDiAIIAEoAoQCIgM2AjggCCAAIANBAXQQLSIHNgJAAkAgB0UEQEF/IQQMAQtBACEEIANBACADQQBKGyEDA0AgAyAERwRAIAcgBEEBdGpB//8DOwEAIARBAWohBAwBCwsgCEEANgJMIAhCADcCRCAIQQA2AjwCfwJAIAAgCEE4akEAQQBBABDQAQ0AA0ACQAJAIAgoAkgiA0EBTgRAIAggA0EBayIDNgJIIA4gCCgCRCADQQJ0aigCACINaiIPLQAAIgxBAWtB/wFxQfMBTwRAIAggDTYCBCAIIAw2AgAgAEGmmgEgCBBBDAULIA0gDEEPaiAMIAxBsQFLGyIFQQJ0IgdBkDFqLQAAaiIKIAgoAjhKBEAgCCANNgIUIAggDDYCECAAQcSaASAIQRBqEEEMBQsgCCgCQCANQQF0ai8BACEEIAdBkTFqLQAAIQYCQCAFQSFrIgNBEEtBASADdEG/gARxRXJFBEAgBiAPLwABaiEGDAELIAVB+wFrQQNLDQAgBiAMakHsAWshBgsgBCAGSARAIAggDTYCJCAIIAw2AiAgAEHsmgEgCEEgahBBDAULAkAgB0GSMWotAAAgBmsgBGoiBCAIKAI8TA0AIAggBDYCPCAEQf//A0gNACAIIA02AjQgCCAMNgIwIABBi5sBIAhBMGoQQQwFCwJAAkACQAJAAkACQAJAIAxB6QBrDg8CAgECAwoJCQkEBgQFBQUACyAMQSNrIgNBDUsNB0EBIAN0QeXwAHENCQwHCyANIA8oAAFqQQFqIQoMBwsgACAIQThqIA0gDygAAWpBAWogDCAEENABRQ0GDAgLIAAgCEE4aiANIA8oAAFqQQFqIAwgBEEBahDQAUUNBQwHCyAAIAhBOGogDSAPKAAFakEFaiAMIARBAWoQ0AFFDQQMBgsgACAIQThqIA0gDygABWpBBWogDCAEQQJqENABRQ0DDAULIAAgCEE4aiANIA8oAAVqQQVqIAwgBEEBaxDQAQ0EDAILIAAgCCgCQBAYIAAgCCgCRBAYIAgoAjwhCUEADAQLAkACQAJAIAxB6AFrDgQCAgEAAwsgDSAPLgABakEBaiEKDAILIA1BAWoiAyADIA5qLAAAaiEKDAELIAAgCEE4aiANQQFqIgMgAyAOaiwAAGogDCAEENABDQILIAAgCEE4aiAKIAwgBBDQAUUNAAsLIAAgCCgCQBAYIAAgCCgCRBAYQX8LIQQgFCAJNgIMCyAIQdAAaiQAIARBAEgNAUHAAEHYACABLQBuQQJxIgMbIgogASgCuAJBA3RqIQUgAAJ/IAMEQCAFIAEoAkRFDQEaCyABKAJ8IAEoAogBakEEdCAFagsiBiABKALAAkEDdGoiAyABKAKEAmoQaiIJRQ0BIAlBATYCACAJIAMgCWoiBDYCFCAJIAEoAoQCIgM2AhggBCABKAKAAiADECMaIAAgASgCgAIQGCABQQA2AoACIAkgASgCcDYCHCABKAJ8IgcgASgCiAEiBGpBAUgNBiABLQBuQQJxRQ0EIAEoAkQNBEEAIQMDQCADIAdOBEBBACEDA0AgASgCiAEgA0wEQEEAIQMDQCADIAEoAsACTg0KIAAgA0EDdCIEIAEoAsgCaigCBBARIAEoAsgCIARqQQA2AgQgA0EBaiEDDAALAAUgACABKAKAASADQQR0aigCABARIANBAWohAwwBCwALAAUgACABKAJ0IANBBHRqKAIAEBEgA0EBaiEDIAEoAnwhBwwBCwALAAtB9JUBQaENQYP+AUGDlgEQAAALBSABKAJ0IANBBHRqIgQgASgCzAEgBCgCBEEDdGoiBCgCBDYCCCAEIAM2AgQgA0EBaiEDDAELCyAAIAEQiwNCgICAgOAADAMLIAkgBSAJaiIDNgIgIAMgASgCgAEgBEEEdBAjGiAJKAIgIAEoAogBQQR0aiABKAJ0IAEoAnxBBHQQIxoLIAkgASgCfDsBKiAJIAEoAogBOwEoIAkgASgCjAE7ASwgACABKAKAARAYIAAgASgCdBAYCyAJIAEoArgCIgQ2AjggBARAIAkgCSAKaiIDNgI0IAMgASgCtAIgBEEDdBAjGgsgACABKAK0AhAYIAFBADYCtAIgCSAUKAIMOwEuAkAgAS0AbkECcQRAIAAgASgC7AIQESABQfQCahCVAQwBCyAJIAkvABFBgAhyOwARIAkgASgC7AI2AkAgCSABKALwAjYCRCAJIAAgASgC9AIgASgC+AIQmgIiAzYCUCADRQRAIAkgASgC9AI2AlALIAkgASgC+AI2AkwgCSABKAKMAzYCVCAJIAEoApADNgJICyABKALMASIDIAFB0AFqRwRAIAAgAxAYCyAJIAEoAsACIgQ2AjwgBARAIAkgBiAJaiIDNgIkIAMgASgCyAIgBEEDdBAjGgsgACABKALIAhAYIAFBADYCyAIgCSAJLwARQX5xIAEvATRBAXFyIgM7ABEgCSABLwE4QQF0QQJxIANBfXFyIgM7ABEgCSABLQBuOgAQIAkgAS8BYEECdEEEcSADQXtxciIDOwARIAkgA0FPcSABLwFsQQR0QTBxciIDOwARIAkgASgCtAFBf0wEfyABKAK4AUEAR0EDdAVBCAsgA0F3cXIiAzsAESAJIAEvAVBBBnRBwABxIANBv39xciIDOwARIAkgA0H/fnEgAS8BVEEHdEGAAXFyIgM7ABEgCSADQf99cSABLwFYQQh0QYACcXIiAzsAESAJIANB/3txIAEvAVxBCXRBgARxciIDOwARIAkgA0H/7wNxIAEvAWhBC3RBgBBxcjsAESAJIAAQoAIiADYCMCAAKAIQIAlBARC8ASABKAIEBEAgAUEYahBGCyAAIAEQGCAJrUKAgICAYIQLIRUgFEEQaiQAIBUL9wkDAXwLfwF+IwBB0AJrIgIkAEKAgICA4AAhEQJAIAAgASACQcABaiAEQQR2IgNBAXFBABDdAyIGQQBIDQAgA0EPcSENIAZFBEAgDUECRgRAIABBsvUAEGkMAgsgAEHE9QAQcSERDAELAn8gAisDgAIiBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIQ4CfyACKwP4ASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshDwJ/IAIrA/ABIgWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyEQAn8gAisD6AEiBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIQgCfyACKwPgASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshCQJ/IAIrA9gBIgWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyEHAn8gAisD0AEiBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIQoCfyACKwPIASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshCyAEQQFxIQwCfyACKwPAASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshBkEAIQMCQCAMRQ0AIARBD3EhDAJAAkACQAJAIA0OBAABAgMECyACIAY2AmAgAiAKNgJUIAIgBkEfdkEEcjYCXCACIAtBA2xBkPYAajYCWCACIA9BA2xB8PUAajYCUCACQZACakHAAEHR9QAgAkHQAGoQVSEDDAMLIAIgBjYCgAEgAiAKNgJ4IAIgBkEfdkEEcjYCfCACIAtBA2xBkPYAajYCdCACIA9BA2xB8PUAajYCcCACQZACakHAAEG19gAgAkHwAGoQVSEDIAxBA0cNAiACQZACaiADakEgOgAAIANBAWohAwwCCyACIAY2AqABIAJBkAJqQcAAQcn2AEHO9gAgBkGQzgBJGyACQaABahBVIQMgAiAKNgKUASACIAtBAWo2ApABIAMgAkGQAmpqQcAAIANrQdT2ACACQZABahBVIANqIQMMAQsgAiAKNgK0ASACIAtBAWo2ArABIAIgBjYCvAEgAiAGQR92QQRyNgK4ASACQZACakHAAEHg9gAgAkGwAWoQVSEDIAxBA0cNACACQZACaiADakGswAA7AAAgA0ECaiEDCwJAIARBAnFFDQACQAJAAkACQCANDgQAAQIDBAsgAiAINgIIIAIgCTYCBCACIAc2AgAgAkGQAmogA2pBwAAgA2tB7/YAIAIQVSADaiEDDAMLIAIgCDYCKCACIAk2AiQgAiAHNgIgIAJBkAJqIANqQcAAIANrQe/2ACACQSBqEFUgA2oiAyACQZACampBLUErIA5BAEgbOgAAIAIgDiAOQR91IgRqIARzIgRBPG4iBjYCECACIAQgBkE8bGs2AhQgA0EBaiIEIAJBkAJqakE/IANrQYL3ACACQRBqEFUgBGohAwwCCyACIBA2AjwgAiAINgI4IAIgCTYCNCACIAc2AjAgAkGQAmogA2pBwAAgA2tBi/cAIAJBMGoQVSADaiEDDAELIAIgCDYCSCACIAk2AkQgAkHBAEHQACAHQQxIGzYCTCACIAdBAWpBDG9BAWs2AkAgAkGQAmogA2pBwAAgA2tBoPcAIAJBQGsQVSADaiEDCyAAIAJBkAJqIAMQ/gEhEQsgAkHQAmokACARC8QKAwx/An4BfCMAQaABayICJAAgAkHgAGpBAEE4EEsaIAJCATcDcCACQgE3A2hCgICAgOAAIQEgACADKQMAECsiERALRQRAIAJBADYCDAJAAkACQCARpyIDKAIEQf////8HcUUNAAJAIANBABAvIgdBMGtBCkkNACAHQStrDgMAAQABC0KAgICAwH4hASADIAJBDGogAkHgAGoQ+wQNAiACQZABaiEMQQEhBQNAAkAgAigCDCEEIAVBB0YNACAEIAMoAgRB/////wdxTg0AIAVBAWsiBkEFTQRAIAZBAnRBmNwBaigCACEHCyADIAQQLyAHRw0AIAIgBEEBajYCDAJAIAVBBkYEQEEAIQlBfyELAkAgAigCDCIGIAMoAgRB/////wdxIghODQBB6AchCiAGIQQDQAJAAkAgBCAIRgRAIAghBAwBCyADIAQQLyINQTBrIg5BCkkNASAEIAZGDQMLIAwgCaw3AwAgAiAENgIMQQAhCwwCCyAKQQFGIQ8gDiAKQQptIgpsIAlqIA8gDUE0SnFqIQkgBEEBaiEEDAALAAsgC0UNAQwGCyADIAJBDGogAkHgAGogBUEDdGoQtwINBQsgBUEBaiEFDAELCyACIAIpA2hCAX03A2ggAygCBEH/////B3EiByAETARAIAVBA0shBAwCCwJ+AkACQCADIAQQLyIGQStrDgMBBQEACyAGQdoARw0EIAIgBEEBaiIDNgIMQgAMAQsgAiAEQQFqIgQ2AgwgByAEayIEQX5xQQRHDQMgAyACQQxqIAJBGGoQ+gINAyAEQQVGBEAgAyACKAIMIgQQL0E6Rw0EIAIgBEEBajYCDAsgAyACQQxqIAJBEGoQ+gINAyADKAIEQf////8HcSEHIAIoAgwhA0IAIAIpAxAgAikDGEI8fnwiEH0gECAGQS1GGwshEEEAIQQgAyAHRg0BDAILIAIoAgwhBANAAkAgBCADKAIEQf////8HcU4NACADIAQQL0EgRg0AIAIgBEEBaiIENgIMDAELCyADIAJBDGoQtgJCgICAgMB+IQEgAigCDCIIIAMoAgRB/////wdxTg0BIAJB8ABqIQQgAkHgAGpBCHIhBgJAIAMgCBAvQTBrQQlNBEAgAyACQQxqIAQQtwINAyADIAJBDGogBhD6BEUNAQwDCyADIAJBDGogBhD6BA0CIAMgAkEMahC2AiADIAJBDGogBBC3Ag0CCyADIAJBDGoQtgIgAyACQQxqIAJB4ABqEPsEDQEgAyACQQxqELYCA0AgBUEDRgRAIAMoAgRB/////wdxIQYgAigCDCEFA0BBACEEIAUgBk4NAwJAAkAgAyAFEC8iCEEraw4DAAEAAQsgAiAFQQFqNgIMIAMgAkEMaiACQRhqEPoCDQUgAyACQQxqIAJBEGoQ+gINBUIAIAIpAxAgAikDGEI8fnwiAX0gASAIQS1GGyEQDAQLIAIgBUEBaiIFNgIMDAALAAsgBUEBa0EBTQRAIAIoAgwiBCADKAIEQf////8HcU4NAyADIAQQL0E6Rw0DIAIgBEEBajYCDAsgBUEDdCEEIAVBAWohBSADIAJBDGogAiAEakH4AGoQtwJFDQALDAELQQAhAwNAIANBB0cEQCADQQN0IgYgAkEgamogAkHgAGogBmopAwC5OQMAIANBAWohAwwBCwsgAkEgaiAEEIwDIBBC4NQDfrmhIhK9An8gEplEAAAAAAAA4EFjBEAgEqoMAQtBgICAgHgLIgO3vVEEQCADrSEBDAELIBIQFSEBCyAAIBEQCgsgAkGgAWokACABCzwCAn8BfiMAQRBrIgAkACAAQQhqQQAQAhogADQCCCECIAAoAgwhASAAQRBqJAAgAUHoB22sIAJC6Ad+fAu3AQIEfwF+IABBCBAtIgRFBEBBfw8LIARCATcCAANAAkACQCADQQJGDQAgACAAKQMwIANBK2oQUCIHEAtFBEAgAEEQEC0iBQ0CIAAgBxAKC0F/IQYgA0UNACAAIAEpAwAQCgsgACgCECAEEIYFIAYPCyAEIAQoAgBBAWo2AgAgBSAENgIIIAUgAhANNwMAIAcgBRCKASAAIAdBL0EBEKkDIAEgA0EDdGogBzcDACADQQFqIQMMAAsAC3QBA38gAUHIAGohAyABKAJMIQIDQCACIANGRQRAIAIoAgQhBCAAIAIpAxAQJSAAIAIpAxgQJSAAIAIpAyAQJSAAIAIpAygQJSAAIAIQHyAEIQIMAQsLIAEoAgRBfnFBBEcEQCAAIAFBCGoQiQMLIAAgARAfCz0BAX8gASABKAIAQQFrIgI2AgAgAkUEQCAAIAEQ4QMgACABKQMQECUgACABKQMYECUgARCfAiAAIAEQHwsL1QMCBn8CfiMAQTBrIgIkAAJAIAAgAUEoahDAAiIIEAtFBEAgAiABKAJkQQhrIgQpAwA3AyAgBEKAgICAMDcDACAIEBAEQCAAIAAgASkDEEKAgICAMEEBIAJBIGoQIhAKIAAgAikDIBAKIAAoAhAgARDhAwwCCyAAIAgQCkEAIQQgACAAKQNQQQEgAkEgakEAEIwCIQggACACKQMgEApBAiEFAkAgCBALDQACfyACQRBqIQYDQAJAAkAgA0ECRg0AIAYgA0EDdGogACAAKQMwIANBLmoQUCIJNwMAIAkQC0UNAUF/IQcgA0EBRw0AIAAgBikDABAKCyAHDAILIAEgASgCAEEBajYCACAJpyABNgIgIANBAWohAwwACwALBEAgACAIEAoMAQsgAkKAgICAMDcDCCACQoCAgIAwNwMAIAAgCCACQRBqIAIQugIhAyAAIAgQCgNAIARBAkcEQCAAIAJBEGogBEEDdGopAwAQCiAEQQFqIQQMAQsLIANBAEdBAXQhBSADRSEECyAEIAVFcg0BCyACIAAQkQE3AyggACABKQMYQoCAgIAwQQEgAkEoahAiIQggACACKQMoEAogACgCECABEOEDIAAgCBAKCyACQTBqJAALtwICBX8BfiMAQTBrIgUkAAJAIAFBKhA/IgRFDQAgBCgCAA0AIAAgBEEYaiACEA0iAhAeIAQgA0EBaiIGNgIAAkAgBkECRw0AIAQoAhQNACAAKAIQIgYoApgBIgdFDQAgACABIAJBACAGKAKcASAHESwACyAEQQRqIgcgA0EDdGoiCCgCBCEEIANBAEetQoCAgIAQhCEBA0AgBCAIRkUEQCAEKAIEIQYgBSAEKQMINwMAIAUgBCkDEDcDCCAEKQMYIQkgBSACNwMgIAUgATcDGCAFIAk3AxAgAEEtQQUgBRCCAyAEEEYgACgCECAEELsCIAYhBAwBCwsgB0EBIANrQQN0aiIGKAIEIQQDQCAEIAZGDQEgBCgCBCEDIAQQRiAAKAIQIAQQuwIgAyEEDAALAAsgBUEwaiQAC8ECAgN+An8jAEEQayICJABCgICAgDAhBQJAAkAgACACQQhqIAAgARApIgEQQA0AAkAgAikDCCIHQgFTBEAMAQsgB0IBfSEGAkACQAJAAkAgASACQQRqIAIQjgJFDQAgByACKAIAIgitUg0AIAGnIQkgAigCBCEDIARFDQEgAykDACEFIAMgA0EIaiAIQQN0QQhrEOgBDAILAkAgBARAIAAgAUIAEGIiBRALDQYgACABQgBCASAGQQEQgANFDQEMBgsgACABIAYQYiIFEAsNBQsgACABIAYQlAJBAE4NAgwECyAIQQN0IANqQQhrKQMAIQULIAkgCSgCKEEBazYCKAsgB0KBgICACFQNACAGuRAVIQYLIAAgAUEwIAYQSEF/Sg0BCyAAIAUQCkKAgICA4AAhBQsgACABEAogAkEQaiQAIAULEAAgACADKQMAQREgBBD/AgvqBAIFfgN/IwBBEGsiCyQAAn4CQAJAAkAgACABECkiBkKAgICAcFQNACAGpyIKLwEGQQJHDQAgCi0ABUEJcUEJRw0AIAooAhAQJy0AA0EIcUUNACAKKAIUKQMAIgFC/////w9WDQAgCyABQiCGQiCHIgc3AwggByAKNQIoUg0AIAcgAqx8IgVC/////wdVDQAgCjUCICAFUwRAIAAgCiAFpxDTBQ0DCwJ/IARFIAJBAUhyRQRAIAooAiQiBCACQQN0aiAEIAGnQQN0EOgBQQAMAQsgAacLIQxBACEEIAJBACACQQBKGyECA0AgAiAERkUEQCADIARBA3RqKQMAEA0hASAKKAIkIAQgDGpBA3RqIAE3AwAgBEEBaiEEDAELCyAKIAU+AiggCigCFCAFQv////8PgzcDACAFQoCAgIAIfCEBDAELIAAgC0EIaiAGEEANASALKQMIIgEgAqwiCHwiBUKAgICAgICAEFkEQCAAQZXXAEEAEBQMAgsCQCAERSACQQFIckUEQEIAIQcgACAGIAhCACABQX8QgAMNAwwBCyABIQcLIAJBACACQQBKG60hCEIAIQFBACEEA0AgASAIUgRAIAEgB3whCSAEQQN0IQIgBEEBaiEEIAFCAXwhASAAIAYgCSACIANqKQMAEA0QjwFBAE4NAQwDCwsgACAGQTACfiAFQv////8PgyAFQoCAgIAIfCIBQv////8PWA0AGiAFuRAVCxBIQQBIDQELIAAgBhAKIAVC/////w+DIAFC/////w9YDQEaIAW5EBUMAQsgACAGEApCgICAgOAACyEBIAtBEGokACABCzwAIAFBAEHQABBLIgEgBDYCDCABIAA2AgAgASACIANqNgI8IAEgAjYCOCABQQE2AgggAUKggICAEDcDEAt/AQR/IAEtAABB2wBGBEAgAUEBaiIDEENBAWshAiAAKAIQKAI4IQRBwgEhAQNAIAFBzwFHBEACQCAEIAFBAnRqKAIAIgUoAgRB/////wdxIAJHDQAgBUEQaiADIAIQdA0AIAAgARAXDwsgAUEBaiEBDAELCxABAAsgACABEMcBCxcAIAAgACkDwAEgASACIANBAEF/ELcFCzUBAX8gACgC7AEiB0UEQCAAQdzNAEEAEBRCgICAgOAADwsgACABIAIgAyAEIAUgBiAHETMAC8YCAgJ+An9CgICAgDAhAgJAAkAgASkCVCIDQhiGQjiHpw0AIANCIIZCOIenBEAgA0IQhkI4h6dFDQEgACABKQNgEA0QkgFCgICAgOAADwsgASADQv////+PYINCgICAgBCENwJUA0AgASgCFCAESgRAIAEoAhAgBEEDdGooAgQiBSkCVEIYhkI4h6dFBEAgACAFELgFIgIQCw0EIAAgAhAKCyAEQQFqIQQMAQsLAkAgASgCUCIEBEBCgICAgOAAQoCAgIAwIAAgASAEEQIAQQBIGyECDAELIAAgASkDSEKAgICAMEEAQQAQNSECIAFCgICAgDA3A0gLIAIQCwRAIAFBAToAWSABIAAoAhApA4ABEA03A2ALIAEgASkCVEL///+HgGCDQoCAgAiENwJUCyACDwsgASABKQJUQv////+PYIM3AlQgAgvLBQIHfwF+IwBBEGsiBiQAAn9BACABKQJUIglCKIZCOIenDQAaIAEgCUL//4N4g0KAgASENwJUAkADQAJAIAEoAhQgAkwEQEEAIQIMAQsgAkEDdCEDIAJBAWohAiAAIAMgASgCEGooAgQQuQVBAE4NAQwCCwsCQANAIAIgASgCIE4NAQJAAkAgASgCHCIIIAJBFGxqIgMoAghBAUcNACADKAIMIgVB/QBGDQAgACAGQQhqIAZBDGogASgCECADKAIAQQN0aigCBCAFEO0DIgMNAQsgAkEBaiECDAELCyAAIAMgASAIIAJBFGxqKAIQEOwDDAELQQAgASgCUA0BGiABKAJIKAIkIQhBACECQQAhBQNAAkAgASgCOCAFTARAA0AgAiAB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JCABIARBA3YgAGo2AiBBAAshASADQRBqJAAgAQtfAgF/AXwjAEEQayICJAACf0EAIAEQjgFFDQAaQX8gACACQQhqIAEQRw0AGiACKwMIIgO9QoCAgICAgID4/wCDQoCAgICAgID4/wBSIAOcIANhcQshACACQRBqJAAgAAu7AQEBfCABAn8CfwNAAkACQAJAIAIQVA4IAAAAAAICAgECC0EAIQBBAEH/ASACpxCwARBKDAQLQQAiACACEEkiA71C////////////AINCgICAgICAgPj/AFYgA0QAAAAAAAAAAGNyDQIaQf8BIANEAAAAAADgb0BkDQMaAn8gA54iA5lEAAAAAAAA4EFjBEAgA6oMAQtBgICAgHgLDAMLIAAgAhCdASICEAtFDQALQX8LIQBBAAs2AgAgAAuyBAEIfyMAQRBrIgYkAAJ/QX8gACAGQQxqIAJBABDLAg0AGiABKAIQLQAzQQhxRQRAIAAgA0EwEN8BDAELIAEtAAVBCHEEQCAGKAIMIgMgASgCKCIFSQRAIAMhBANAIAQgBUZFBEAgACABKAIkIARBA3RqKQMAEAogBEEBaiEEDAELCyABIAM2AigLIANBAE4EfiADrQUgA7gQFQshAiABKAIUIAI3AwBBAQwBCyAAIAZBBGogASgCFCkDABDEARogBigCDCIJIQUCQCAGKAIEIgcgCU0NACABKAIQIgsoAiAiBCAHIAlrTwRAA0AgByIFIAlNDQIgACABIAAgBUEBayIHEOcFIgoQlAQhBCAAIAoQESAEDQAMAgsACyAJIQUgCxAnIgchCANAIAQgCkwEQCAGIAU2AgRBACEIA0AgBCAITA0DAkAgBygCBCIERQ0AIAAgBkEIaiAEELIBRQ0AIAYoAgggBUkNACAAIAEgBygCBBCUBBogASgCECILECcgCEEDdGohBwsgB0EIaiEHIAhBAWohCCALKAIgIQQMAAsABQJAIAgoAgQiBEUNACAAIAZBCGogBBCyAUUNACAGKAIIIgQgBUkNACAFIARBAWogCC0AA0EEcRshBQsgCEEIaiEIIApBAWohCiALKAIgIQQMAQsACwALIAAgASgCFCAFQQBOBH4gBa0FIAW4EBULEB5BASAFIAlNDQAaIAAgA0GawAAQdgshBCAGQRBqJAAgBAumBAEKfyMAQRBrIgIkACACQQA2Agwg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ACACQQVqQQtB8Q0gAhBVGiAAIAJBBWoQcSIEEAsNACAAKAIQIASnQQEQ1AIhAwsgAkEQaiQAIAML4QECBn8BfgJAIAEoAgQiBEH/////B3EiAkEBa0EJSw0AAn8gBEF/TARAIAEvARAMAQsgAS0AEAsiAxBFRQ0AAn8CQCADQTBGBEBBACIDIAJBAUcNAhoMAQsgAkEBIAJBAUsbIQUgAUEQaiEGIANBMGshAyAEQX9KIQdBASECA0AgAiAFRg0BAn8gB0UEQCABIAJBAXRqLwEQDAELIAIgBmotAAALIgQQRUUNAyAEQTBrrCADrUIKfnwiCKchAyACQQFqIQIgCEKAgICAEFQNAAsMAgsgACADNgIAQQELDwtBAAssAQF/A0AgASADRkUEQCAAIANqLQAAIAJBhwJsaiECIANBAWohAwwBCwsgAguIAgECfyAAIAEoAgQQEQNAIAIgASgCFE5FBEAgACABKAIQIAJBA3RqKAIAEBEgAkEBaiECDAELCyAAIAEoAhAQGEEAIQIDQCABKAIgIAJKBEAgASgCHCACQRRsaiIDKAIIRQRAIAAoAhAgAygCBBD5AQsgACADKAIQEBEgACADKAIMEBEgAkEBaiECDAELCyAAIAEoAhwQGCAAIAEoAigQGEEAIQIDQCACIAEoAjhORQRAIAAgASgCNCACQQxsaigCBBARIAJBAWohAgwBCwsgACABKAI0EBggACABKQNAEAogACABKQNIEAogACABKQNgEAogACABKQNoEAogAUEIahBGIAAgARAYC68CAgJ/A34jAEEgayICJABCgICAgOAAIQcCQCAAIAMpAwAiBhBnDQAgACABQSoQbCIBEAsNAAJAIABBIBBqIgRFDQBBACEDIARBADYCFCAEQQA2AgAgBEEEaiEFA0AgA0ECRkUEQCAFIANBA3RqEG4gA0EBaiEDDAELCyAEQoCAgIAwNwMYIAEgBBCKASAAIAJBEGogARCsBQ0AAkAgACAGQoCAgIAwQQIgAkEQahAiIggQCwRAIAIgABCRATcDCCAAIAIpAxhCgICAgDBBASACQQhqECIhBiAAIAIpAwgQCiAGEAsNASAAIAYQCgsgACAIEAogACACKQMQEAogACACKQMYEAogASEHDAILIAAgAikDEBAKIAAgAikDGBAKCyAAIAEQCgsgAkEgaiQAIAcL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BSkDeCECIAUpA3AhBAwBCyAGBH4gAQUgBUHgAGogASAKQgBCgICAgICAwLvAABAyIAUpA2giCkIwiKdB+ABrIQYgBSkDYAshBCAHRQRAIAVB0ABqIAMgCUIAQoCAgICAgMC7wAAQMiAFKQNYIglCMIinQfgAayEHIAUpA1AhAwsgCUL///////8/g0KAgICAgIDAAIQhCSAKQv///////z+DQoCAgICAgMAAhCEKIAYgB0oEQANAAn4gCiAJfSADIARWrX0iC0IAWQRAIAsgBCADfSIEhFAEQCAFQSBqIAEgAkIAQgAQMiAFKQMoIQIgBSkDICEEDAULIAtCAYYgBEI/iIQMAQsgCkIBhiAEQj+IhAshCiAEQgGGIQQgBkEBayIGIAdKDQALIAchBgsCQCAKIAl9IAMgBFatfSIJQgBTBEAgCiEJDAELIAkgBCADfSIEhEIAUg0AIAVBMGogASACQgBCABAyIAUpAzghAiAFKQMwIQQMAQsgCUL///////8/WARAA0AgBEI/iCEBIAZBAWshBiAEQgGGIQQgASAJQgGGhCIJQoCAgICAgMAAVA0ACwsgCEGAgAJxIQcgBkEATARAIAVBQGsgBCAJQv///////z+DIAZB+ABqIAdyrUIwhoRCAEKAgICAgIDAwz8QMiAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAuhBAIEfgJ/AkAgAb0iBEIBhiIDUCAEQv///////////wCDQoCAgICAgID4/wBWckUEQCAAvSIFQjSIp0H/D3EiBkH/D0cNAQsgACABoiIAIACjDwsCfgJAIAMgBUIBhiICVARAIARCNIinQf8PcSEHIAZFBEAgBUIMhiICQgBTBEBBACEGDAMLQX8hBgNAIAJCAYYiAkIAUw0DIAZBAWshBgwACwALIAVC/////////weDQoCAgICAgIAIhAwCCyAARAAAAAAAAAAAoiAAIAIgA1EbDwsgBUEBIAZrrYYLIQICfgJAIAdFBEAgBEIMhiIDQgBTBEBBACEHDAILQX8hBwNAIANCAYYiA0IAUw0CIAdBAWshBwwACwALIARC/////////weDQoCAgICAgIAIhAwBCyAEQQEgB2uthgshBCAGIAdKBEADQAJAIAIgBH0i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IAxBA3I2AgQgBSAKaiICIAIoAgRBAXI2AgQgAyAMEPQFCyAFIQILIAILIgIEQCACQQhqDwsgARChAiIFRQRAQQAPCyAFIABBfEF4IABBBGsoAgAiAkEDcRsgAkF4cWoiAiABIAEgAksbECMaIAAQ6QEgBQvYAwICfgJ/IwBBIGsiBCQAAkAgAUL///////////8AgyIDQoCAgICAgMCAPH0gA0KAgICAgIDA/8MAfVQEQCABQgSGIABCPIiEIQMgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIANCgYCAgICAgIDAAHwhAgwCCyADQoCAgICAgICAQH0hAiAAQoCAgICAgICACIVCAFINASACIANCAYN8IQIMAQsgAFAgA0KAgICAgIDA//8AVCADQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiADQv///////7//wwBWDQBCACECIANCMIinIgVBkfcASQ0AIARBEGogACABQv///////z+DQoCAgICAgMAAhCICIAVBgfcAaxByIAQgACACQYH4ACAFaxDWAiAEKQMIQgSGIAQpAwAiAEI8iIQhAiAEKQMQIAQpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyAAQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIARBIGokACACIAFCgICAgICAgICAf4OEvwuCEQIFfwt+IwBBwAFrIgUkACAEQv///////z+DIRIgAkL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhESAEQjCIp0H//wFxIQcCQAJAAkAgAkIwiKdB//8BcSIJQQFrQf3/AU0EQCAHQQFrQf7/AUkNAQsgAVAgAkL///////////8AgyIKQoCAgICAgMD//wBUIApCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhEQwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCERIAMhAQwCCyABIApCgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhEQwDCyARQoCAgICAgMD//wCEIRFCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgCoRQDQIgAiADhFAEQCARQoCAgICAgMD//wCEIRFCACEBDAILIApC////////P1gEQCAFQbABaiABIAwgASAMIAxQIgYbeSAGQQZ0rXynIgZBD2sQckEQIAZrIQYgBSkDuAEhDCAFKQOwASEBCyACQv///////z9WDQAgBUGgAWogAyASIAMgEiASUCIIG3kgCEEGdK18pyIIQQ9rEHIgBiAIakEQayEGIAUpA6gBIRIgBSkDoAEhAwsgBUGQAWogEkKAgICAgIDAAIQiFEIPhiADQjGIhCICQoTJ+c6/5ryC9QAgAn0iBBC0ASAFQYABakIAIAUpA5gBfSAEELQBIAVB8ABqIAUpA4gBQgGGIAUpA4ABQj+IhCIEIAIQtAEgBUHgAGogBEIAIAUpA3h9ELQBIAVB0ABqIAUpA2hCAYYgBSkDYEI/iIQiBCACELQBIAVBQGsgBEIAIAUpA1h9ELQBIAVBMGogBSkDSEIBhiAFKQNAQj+IhCIEIAIQtAEgBUEgaiAEQgAgBSkDOH0QtAEgBUEQaiAFKQMoQgGGIAUpAyBCP4iEIgQgAhC0ASAFIARCACAFKQMYfRC0ASAGIAkgB2tqIQYCfkIAIAUpAwhCAYYgBSkDAEI/iIRCAX0iCkL/////D4MiBCACQiCIIgt+Ig4gCkIgiCIKIAJC/////w+DIg9+fCICQiCIIAIgDlStQiCGhCAKIAt+fCACQiCGIgsgBCAPfnwiAiALVK0gAiACIAQgA0IRiEL/////D4MiDn4iDyAKIANCD4ZCgID+/w+DIg1+fCILQiCGIhAgBCANfnwgEFStIAogDn4gCyAPVK1CIIYgC0IgiIR8fHwiAlatfHwgAkIAUq18fSILQv////8PgyIOIAR+Ig8gCiAOfiINIAQgC0IgiCIQfnwiC0IghnwiDiAPVK0gCiAQfiALIA1UrUIghiALQiCIhHx8IA5CACACfSICQiCIIgsgBH4iDyACQv////8PgyINIAp+fCICQiCGIhAgBCANfnwgEFStIAogC34gAiAPVK1CIIYgAkIgiIR8fHwiAiAOVK18IAJCAn0iDyACVK18QgF9IgtC/////w+DIgIgDEIChiABQj6IhEL/////D4MiBH4iDiABQh6IQv////8PgyIKIAtCIIgiC358Ig0gDlStIA0gDSAPQiCIIg4gDEIeiEL//+//D4NCgIAQhCIMfnwiDVatfCALIAx+fCACIAx+IhMgBCALfnwiECATVK1CIIYgEEIgiIR8IA0gDSAQQiCGfCINVq18IA0gDSAKIA5+IhMgD0L/////D4MiDyAEfnwiECATVK0gECAQIAIgAUIChkL8////D4MiE358IhBWrXx8Ig1WrXwgDSALIBN+IgsgDCAPfnwiDCAEIA5+fCIEIAIgCn58IgJCIIggAiAEVK0gCyAMVq0gBCAMVK18fEIghoR8IgQgDVStfCAEIAQgECAOIBN+IgwgCiAPfnwiCkIgiCAKIAxUrUIghoR8IgogEFStIAogAkIghnwgClStfHwiBFatfCICQv////////8AWARAIAFCMYYgBEIgiCIBIANC/////w+DIgp+Ig0gBEL/////D4MiDCADQiCIIgt+fCIOQiCGIhAgCiAMfnwiDyAQVK19IA9CAFKtfSACQv////8PgyAKfiAMIBJC/////w+DfnwgASALfnwgDSAOVq1CIIYgDkIgiIR8IAQgFEIgiH4gAyACQiCIfnwgAiALfnwgASASfnxCIIZ8fSESIAZBAWshBkIAIA99DAELIARCIYghDCABQjCGIAJCP4YgBEIBiIQiBEL/////D4MiASADQiCIIgp+Ig8gDCACQh+GhCINQv////8PgyIQIANC/////w+DIgx+fCILQiCGIhMgASAMfnwiDiATVK19IA5CAFKtfSAEIBRCIIh+IAMgAkIhiH58IAJCAYgiAiAKfnwgDSASfnxCIIYgCiAQfiACQv////8PgyAMfnwgASASQv////8Pg358IAsgD1StQiCGIAtCIIiEfHx9IRJCACAOfQshASAGQYCAAU4EQCARQoCAgICAgMD//wCEIRFCACEBDAELIAZB//8AaiEHIAZBgYB/TARAAkAgBw0AIAQgAUIBhiADViASQgGGIAFCP4iEIgEgFFYgASAUURutfCIBIARUrSACQv///////z+DfCICQoCAgICAgMAAg1ANACACIBGEIREMAgtCACEBDAELIAQgAUIBhiADWiASQgGGIAFCP4iEIgEgFFogASAUURutfCIBIARUrSACQv///////z+DfCAHrUIwhnwgEYQhEQsgACABNwMAIAAgETcDCCAFQcABaiQADwsgAEIANwMAIABCgICAgICA4P//ACARIAIgA4RQGzcDCCAFQcABaiQAC8QBAgF/An5BfyEDAkAgAEIAUiABQv///////////wCDIgRCgICAgICAwP//AFYgBEKAgICAgIDA//8AURsNAEEAIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBRGw0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQEEAIAEgAlMgASACURsNASAAIAEgAoWEQgBSDwsgAEIAUiABIAJVIAEgAlEbDQAgACABIAKFhEIAUiEDCyADC9wyAxV/B34BfCMAQRBrIhEkACMAQaABayIOJAAgDkEQakEAQZABEEsaIA5BfzYCXCAOIAA2AjwgDkF/NgIYIA4gADYCFCAOQRBqEKoEIA5BEGohAiMAQTBrIg0kAEHgowQoAgAhEEHUowQoAgAhDwNAAn8gAigCBCIAIAIoAmhJBEAgAiAAQQFqNgIEIAAtAAAMAQsgAhBaCyIFEP0FDQALQQEhAAJAAkAgBUEraw4DAAEAAQtBf0EBIAVBLUYbIQAgAigCBCIEIAIoAmhJBEAgAiAEQQFqNgIEIAQtAAAhBQwBCyACEFohBQsCQAJAAkADQCAGQYmjBGosAAAgBUEgckYEQAJAIAZBBksNACACKAIEIgQgAigCaEkEQCACIARBAWo2AgQgBC0AACEFDAELIAIQWiEFCyAGQQFqIgZBCEcNAQwCCwsgBkEDRwRAIAZBCEYNASAGQQRJDQIgBkEIRg0BCyACKAJoIgQEQCACIAIoAgRBAWs2AgQLIAZBBEkNAANAIAQEQCACIAIoAgRBAWs2AgQLIAZBAWsiBkEDSw0ACwsjAEEQayICJAACfiAAskMAAIB/lLwiBEH/////B3EiAEGAgIAEa0H////3B00EQCAArUIZhkKAgICAgICAwD98DAELIAStQhmGQoCAgICAgMD//wCEIABBgICA/AdPDQAaQgAgAEUNABogAiAArUIAIABnIgBB0QBqEHIgAikDACEWIAIpAwhCgICAgICAwACFQYn/ACAAa61CMIaECyEXIA0gFjcDACANIBcgBEGAgICAeHGtQiCGhDcDCCACQRBqJAAgDSkDCCEWIA0pAwAhFwwBCwJAAkACQCAGDQBBACEGA0AgBkGSowRqLAAAIAVBIHJHDQECQCAGQQFLDQAgAigCBCIEIAIoAmhJBEAgAiAEQQFqNgIEIAQtAAAhBQwBCyACEFohBQsgBkEBaiIGQQNHDQALDAELAkACQCAGDgQAAQECAQsCQCAFQTBHDQACfyACKAIEIgQgAigCaEkEQCACIARBAWo2AgQgBC0AAAwBCyACEFoLQV9xQdgARgRAIwBBsANrIgMkAAJ/IAIoAgQiBCACKAJoSQRAIAIgBEEBajYCBCAELQAADAELIAIQWgshBQJAAn8DQCAFQTBHBEACQCAFQS5HDQQgAigCBCIEIAIoAmhPDQAgAiAEQQFqNgIEIAQtAAAMAwsFIAIoAgQiBCACKAJoSQR/QQEhCiACIARBAWo2AgQgBC0AAAVBASEKIAIQWgshBQwBCwsgAhBaCyEFQQEhCCAFQTBHDQADQCAZQgF9IRkCfyACKAIEIgQgAigCaEkEQCACIARBAWo2AgQgBC0AAAwBCyACEFoLIgVBMEYNAAtBASEKC0KAgICAgIDA/z8hFwNAAkAgBUEgciEGAkACQCAFQTBrIgRBCkkNACAFQS5HQQAgBkHhAGtBBUsbDQIgBUEuRw0AIAgNAkEBIQggFiEZDAELIAZB1wBrIAQgBUE5ShshBAJAIBZCB1cEQCAEIAlBBHRqIQkMAQsgFkIcVwRAIANBMGogBBCBASADQSBqIBsgF0IAQoCAgICAgMD9PxAyIANBEGogAykDICIbIAMpAygiFyADKQMwIAMpAzgQMiADIBggGiADKQMQIAMpAxgQeiADKQMIIRogAykDACEYDAELIAwgBEVyDQAgA0HQAGogGyAXQgBCgICAgICAgP8/EDIgA0FAayAYIBogAykDUCADKQNYEHogAykDSCEaQQEhDCADKQNAIRgLIBZCAXwhFkEBIQoLIAIoAgQiBCACKAJoSQR/IAIgBEEBajYCBCAELQAABSACEFoLIQUMAQsLAn4CQCAKRQRAIAIoAmhFDQEgAiACKAIEIgRBAWs2AgQgAiAEQQJrNgIEIAhFDQEgAiAEQQNrNgIEDAELIBZCB1cEQCAWIRcDQCAJQQR0IQkgF0IBfCIXQghSDQALCwJAIAVBX3FB0ABGBEAgAhD6BSIXQoCAgICAgICAgH9SDQFCACEXIAIoAmhFDQEgAiACKAIEQQFrNgIEDAELQgAhFyACKAJoRQ0AIAIgAigCBEEBazYCBAsgCUUEQCADQfAAaiAAt0QAAAAAAAAAAKIQtQEgAykDcCEYIAMpA3gMAgsgGSAWIAgbQgKGIBd8QiB9IhZBACAQa61VBEBBhKcEQcQANgIAIANBoAFqIAAQgQEgA0GQAWogAykDoAEgAykDqAFCf0L///////+///8AEDIgA0GAAWogAykDkAEgAykDmAFCf0L///////+///8AEDIgAykDgAEhGCADKQOIAQwCCyAQQeIBa6wgFlcEQCAJQX9KBEADQCADQaADaiAYIBpCAEKAgICAgIDA/79/EHogGCAaQoCAgICAgID/PxD4BSECIANBkANqIBggGiAYIAMpA6ADIAJBAEgiBBsgGiADKQOoAyAEGxB6IBZCAX0hFiADKQOYAyEaIAMpA5ADIRggCUEBdCACQX9KciIJQX9KDQALCwJ+IBYgEKx9QiB8IhenIgRBACAEQQBKGyAPIBcgD61TGyIEQfEATgRAIANBgANqIAAQgQEgAykDiAMhGSADKQOAAyEbQgAMAQsgA0HgAmpEAAAAAAAA8D9BkAEgBGsQyAEQtQEgA0HQAmogABCBASADQfACaiADKQPgAiADKQPoAiADKQPQAiIbIAMpA9gCIhkQ/AUgAykD+AIhHCADKQPwAgshFyADQcACaiAJIAlBAXFFIBggGkIAQgAQgAJBAEcgBEEgSHFxIgBqEKICIANBsAJqIBsgGSADKQPAAiADKQPIAhAyIANBkAJqIAMpA7ACIAMpA7gCIBcgHBB6IANBoAJqQgAgGCAAG0IAIBogABsgGyAZEDIgA0GAAmogAykDoAIgAykDqAIgAykDkAIgAykDmAIQeiADQfABaiADKQOAAiADKQOIAiAXIBwQqAQgAykD8AEiGSADKQP4ASIXQgBCABCAAkUEQEGEpwRBxAA2AgALIANB4AFqIBkgFyAWpxD7BSADKQPgASEYIAMpA+gBDAILQYSnBEHEADYCACADQdABaiAAEIEBIANBwAFqIAMpA9ABIAMpA9gBQgBCgICAgICAwAAQMiADQbABaiADKQPAASADKQPIAUIAQoCAgICAgMAAEDIgAykDsAEhGCADKQO4AQwBCyADQeAAaiAAt0QAAAAAAAAAAKIQtQEgAykDYCEYIAMpA2gLIRYgDSAYNwMQIA0gFjcDGCADQbADaiQAIA0pAxghFiANKQMQIRcMBQsgAigCaEUNACACIAIoAgRBAWs2AgQLIAAhDEEAIQRBACEGIwBBkMYAayIBJABBACAPIBBqIhRrIRUCQAJ/A0AgBUEwRwRAAkAgBUEuRw0EIAIoAgQiACACKAJoTw0AIAIgAEEBajYCBCAALQAADAMLBSACKAIEIgAgAigCaEkEfyACIABBAWo2AgQgAC0AAAUgAhBaCyEFQQEhBgwBCwsgAhBaCyEFQQEhByAFQTBHDQBCfyEWA38CfyACKAIEIgAgAigCaEkEQCACIABBAWo2AgQgAC0AAAwBCyACEFoLIgVBMEcEf0EBBSAWQgF9IRYMAQsLIQYLIAFBADYCkAYCfgJAAkACQCAFQS5GIghFQQAgBUEwayIAQQlLG0UEQANAAkAgCEEBcQRAIAdFBEAgFyEWQQEhBwwCCyAGRSEIDAQLIBdCAXwhFyAEQfwPTARAIAMgF6cgBUEwRhshAyABQZAGaiAEQQJ0aiIGIAsEfyAFIAYoAgBBCmxqQTBrBSAACzYCAEEBIQZBACALQQFqIgAgAEEJRiIAGyELIAAgBGohBAwBCyAFQTBGDQAgASABKAKARkEBcjYCgEZB3I8BIQMLAn8gAigCBCIAIAIoAmhJBEAgAiAAQQFqNgIEIAAtAAAMAQsgAhBaCyIFQS5GIgggBUEwayIAQQpJcg0ACwsgFiAXIAcbIRYgBkUgBUFfcUHFAEdyRQRAIAIQ+gUiGUKAgICAgICAgIB/UgRAIBYgGXwhFgwECyACKAJoRQ0DIAIgAigCBEEBazYCBAwDCyAGRSEIIAVBAEgNAQsgAigCaEUNACACIAIoAgRBAWs2AgQLIAhFDQBBhKcEQRw2AgBCACEXIAIQqgRCAAwBCyABKAKQBiIARQRAIAEgDLdEAAAAAAAAAACiELUBIAEpAwAhFyABKQMIDAELIBYgF1IgF0IJVXIgD0EeTEEAIAAgD3YbckUEQCABQTBqIAwQgQEgAUEgaiAAEKICIAFBEGogASkDMCABKQM4IAEpAyAgASkDKBAyIAEpAxAhFyABKQMYDAELIBBBfm2tIBZTBEBBhKcEQcQANgIAIAFB4ABqIAwQgQEgAUHQAGogASkDYCABKQNoQn9C////////v///ABAyIAFBQGsgASkDUCABKQNYQn9C////////v///ABAyIAEpA0AhFyABKQNIDAELIBBB4gFrrCAWVQRAQYSnBEHEADYCACABQZABaiAMEIEBIAFBgAFqIAEpA5ABIAEpA5gBQgBCgICAgICAwAAQMiABQfAAaiABKQOAASABKQOIAUIAQoCAgICAgMAAEDIgASkDcCEXIAEpA3gMAQsgCwRAIAtBCEwEQCABQZAGaiAEQQJ0aiICKAIAIQADQCAAQQpsIQAgC0EBaiILQQlHDQALIAIgADYCAAsgBEEBaiEECwJAIAMgFqciB0ogA0EJTnIgB0ERSnINACAHQQlGBEAgAUHAAWogDBCBASABQbABaiABKAKQBhCiAiABQaABaiABKQPAASABKQPIASABKQOwASABKQO4ARAyIAEpA6ABIRcgASkDqAEMAgsgB0EITARAIAFBkAJqIAwQgQEgAUGAAmogASgCkAYQogIgAUHwAWogASkDkAIgASkDmAIgASkDgAIgASkDiAIQMiABQeABakEAIAdrQQJ0QdCjBGooAgAQgQEgAUHQAWogASkD8AEgASkD+AEgASkD4AEgASkD6AEQ9wUgASkD0AEhFyABKQPYAQwCCyAPIAdBfWxqQRtqIgJBHkxBACABKAKQBiIAIAJ2Gw0AIAFB4AJqIAwQgQEgAUHQAmogABCiAiABQcACaiABKQPgAiABKQPoAiABKQPQAiABKQPYAhAyIAFBsAJqIAdBAnRBiKMEaigCABCBASABQaACaiABKQPAAiABKQPIAiABKQOwAiABKQO4AhAyIAEpA6ACIRcgASkDqAIMAQsDQCABQZAGaiAEIgBBAWsiBEECdGooAgBFDQALQQAhCwJAIAdBCW8iBEUEQEEAIQQMAQsgBCAEQQlqIAdBf0obIRICQCAARQRAQQAhBEEAIQAMAQtBgJTr3ANBACASa0ECdEHQowRqKAIAIgltIQpBACEIQQAhBUEAIQQDQCABQZAGaiAFQQJ0aiICIAggAigCACIDIAluIgZqIgI2AgAgBEEBakH/D3EgBCACRSAEIAVGcSICGyEEIAdBCWsgByACGyEHIAogAyAGIAlsa2whCCAFQQFqIgUgAEcNAAsgCEUNACABQZAGaiAAQQJ0aiAINgIAIABBAWohAAsgByASa0EJaiEHCwNAIAFBkAZqIARB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BX0gBSAEGyEFDAELQoCAgICAgICAgH8hBSAAKAJoRQ0AIAAgACgCBEEBazYCBEKAgICAgICAgIB/DwsgBQu/AgEBfyMAQdAAayIEJAACQCADQYCAAU4EQCAEQSBqIAEgAkIAQoCAgICAgID//wAQMiAEKQMoIQIgBCkDICEBIANB//8BSARAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABAyIANB/f8CIANB/f8CSBtB/v8BayEDIAQpAxghAiAEKQMQIQEMAQsgA0GBgH9KDQAgBEFAayABIAJCAEKAgICAgIDAABAyIAQpA0ghAiAEKQNAIQEgA0GDgH5KBEAgA0H+/wBqIQMMAQsgBEEwaiABIAJCAEKAgICAgIDAABAyIANBhoB9IANBhoB9ShtB/P8BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhAyIAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHQAGokAAs1ACAAIAE3AwAgACACQv///////z+DIARCMIinQYCAAnEgAkIwiKdB//8BcXKtQjCGhDcDCAsQACAAQSBGIABBCWtBBUlyC9gBAQR/IAAoAlQhAwJAIAAoAhQgACgCHCIFayIGBEAgACAFNgIUIAAgBSAGEP4FIAZJDQELAkAgAygCEEHhAEcEQCADKAIAIQQMAQsgAyADKAIEIgQ2AgALIAMoAgwgBGogASADKAIIIARrIgEgAiABIAJJGyIEECMaIAMgAygCACAEaiIBNgIAIAEgAygCBE0NACADIAE2AgQgAygCCCICIAFLBEAgAygCDCABakEAOgAAIAQPCyAALQAAQQRxRSACRXINACACIAMoAgxqQQFrQQA6AAALIAQLuwIAAkAgAUEUSw0AAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4KAAECAwQFBgcICQoLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIB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QQBBAEETEKkFIQEgACAEEAoLIAZB0ABqJAAgAQsWACAAIAApA8ABIAMpAwBBA0F/EJkDCzsBAX8DQCACBEAgAC0AACEDIAAgAS0AADoAACABIAM6AAAgAUEBaiEBIABBAWohACACQQFrIQIMAQsLCxoAIAAtAAAhAiAAIAEtAAA6AAAgASACOgAAC0IBAX8gAkEBdiECA0AgAgRAIAAvAQAhAyAAIAEvAQA7AQAgASADOwEAIAFBAmohASAAQQJqIQAgAkEBayECDAELCwsaACAALwEAIQIgACABLwEAOwEAIAEgAjsBAAtCAQF/IAJBAnYhAgNAIAIEQCAAKAIAIQMgACABKAIANgIAIAEgAzYCACABQQRqIQEgAEEEaiEAIAJBAWshAgwBCwsLGgAgACgCACECIAAgASgCADYCACABIAI2AgALQgEBfiACQQN2IQIDQCACBEAgACkDACEDIAAgASkDADcDACABIAM3AwAgAUEIaiEBIABBCGohACACQQFrIQIMAQsLCxwBAX4gACkDACEDIAAgASkDADcDACABIAM3AwALWgECfiACQQR2IQIDQCACBEAgACkDACEDIAAgASkDADcDACAAKQMIIQQgACABKQMINwMIIAEgBDcDCCABIAM3AwAgAUEQaiEBIABBEGohACACQQFrIQIMAQsLCzQBAn4gACkDACEDIAAgASkDADcDACAAKQMIIQQgACABKQMINwMIIAEgBDcDCCABIAM3AwALmwMCA38CfiMAQSBrIgUkAEKAgICA4AAhCAJAIAAgAUEeEGgiB0UNACAAIAVBEGogAykDABDBAQ0AIAMpAwghASAFQQA2AhwCfgJAIARBG0wEQCAAIAVBHGogARDEAQ0DDAELIAAgBUEIaiABEEcNAiAEQRxGBEAgBSAFKwMItjgCHAwBCyAFKQMIDAELQgALIQFBASEGIAJBA04EQCAAIAMpAxAQ+AFBAXMhBgsgBygCDCgCICICLQAEBEAgABBwDAELIAc1AhQgBSkDECIJQQEgBEGZHmotAAB0rHxUBEAgAEGg2wEQaQwBCyAJpyACKAIIIAcoAhBqaiEAAkACQAJAAkACQAJAIARBFmsOCAQEAAABAQECAwsgBSgCHCEDIAYEQCAFIANB//8DcRDkAyIDNgIcCyAAIANB//8DcRCEAwwECyAFKAIcIQMgBgRAIAUgAxCDAyIDNgIcCyAAIAMQWwwDCyAAIAYEfiABEJMFBSABCzcAAAwCCxABAAsgACAFKAIcOgAAC0KAgICAMCEICyAFQSBqJAAgCAunAwIBfgN/IwBBEGsiByQAQoCAgIDgACEFAkAgACABQR4QaCIIRQ0AIAAgB0EIaiADKQMAEMEBDQBBASEGIAJBAk4EQCAAIAMpAwgQ+AFBAXMhBgsgCCgCDCgCICICLQAEBEAgABBwDAELIAg1AhQgBykDCCIBQQEgBEGZHmotAAB0rHxUBEAgAEGg2wEQaQwBCyABpyACKAIIIAgoAhBqaiEAAkACQAJAAkACQAJAAkACQAJAIARBFmsOCAgAAQIDBAUGBwsgADEAACEFDAgLIAAvAAAhACAGBH8gABDkAwUgAAtBEHRBEHWtIQUMBwsgAC8AACEAIAYEfyAAEOQDBSAAC60hBQwGCyAAKAAAIQAgBgR/IAAQgwMFIAALrSEFDAULIAAoAAAhAAJ/IAYEQCAAEIMDIQALIABBAE4LBEAgAK0hBQwFCyAAuBAVIQUMBAsgACgAACEAIAYEfyAAEIMDBSAAC767EBUhBQwDCyAAKQAAIQEgBgR+IAEQkwUFIAELvxAVIQUMAgsQAQALIAAwAABC/////w+DIQULIAdBEGokACAFC4ABAQN/IwBBEGsiBSQAIAUgAq03AwgCQCAAIAFBASAFQQhqEMUDIgEQCw0AIAJBACACQQBKGyECA0AgAiAERg0BIAAgASAEIAMgBEEDdGopAwAQDRCWAiEGIARBAWohBCAGQX9KDQALIAAgARAKQoCAgIDgACEBCyAFQRBqJAAgAQumBQIJfgJ/IwBBMGsiDSQAIAMpAwAhBUKAgICAMCEGIA1CgICAgDA3AxhBASEOAkACQAJAAkACfiACQQJIBEBCgICAgDAhCkKAgICAMAwBCwJAIAMpAwgiChAQDQAgACAKEGcNAkEAIQ4gAkEDSA0AIAMpAxAMAQtCgICAgDALIQsgACAFQcMBIAVBABASIgQQCw0AAkAgBBAQRQRAIAAgBBAKIAAQTiIHEAsEQEKAgICAMCEJQoCAgIAwIQQMBAsgDSAFEA03AxAgACANQRBqQQhyQQAQlwMhAiANKQMYIQkgDSkDECEEIAINA0IAIQUDQCAAIAQgCSANQQRqEKsBIggQC0UEQCANKAIEBEAgBCEIDAQLIAAgByAFIAgQbSECIAVCAXwhBSACQQBODQELCyAEEBANBCAAIARBARCvARoMAwtCgICAgDAhCUKAgICAMCEIQoCAgIAwIQQgACAFECkiBxALDQMLIAAgDUEIaiAHEEBBAEgEQCAIIQQMAgsgDQJ+IA0pAwgiBEKAgICACHxC/////w9YBEAgBEL/////D4MMAQsgBLkQFQsiBTcDICAAIAFBASANQSBqEMUDIQYgACAFEAoCQCAGEAsNAEIAIQUgBEIAIARCAFUbIQwDQCAFIAxRBEAgCCEEDAYLIAAgByAFEGIiBBALDQECQCAOBEAgBCEBDAELIA0gBDcDICANIAVC/////w+DNwMoIAAgCiALQQIgDUEgahAiIQEgACAEEAogARALDQILIAAgBiAFIAEQjwEhAiAFQgF8IQUgAkEATg0ACwsgCCEEDAILQoCAgIAwIQlCgICAgDAhBEKAgICAMCEHCwsgACAGEApCgICAgOAAIQYLIAAgBxAKIAAgBBAKIAAgCRAKIA1BMGokACAGCw8AIAArAwAgASsDABDHBAsJACABKwMAEBULVgEBfyABEBBFBEAgAEHJzABBABAUQoCAgIDgAA8LAn4CQCACRQ0AIAMpAwAiARAQDQBCgICAgOAAIAAgARArIgEQCw0BGiABpyEECyAAIARBAxD2AwsLEQAgACoCALsgASoCALsQxwQLCgAgASoCALsQFQsXACABKAIAIgEgACgCACIASSAAIAFJawsYACABKAIAIgBBAE4EQCAArQ8LIAC4EBULFwAgASgCACIBIAAoAgAiAEggACABSGsLBwAgATUCAAsNACAALwEAIAEvAQBrCwcAIAEzAQALDQAgAC4BACABLgEAawsOACABMgEAQv////8PgwsNACAALQAAIAEtAABrCwcAIAExAAALDQAgACwAACABLAAAawsOACABMAAAQv////8PgwvhCQQEfwF8AX4BfSMAQRBrIgYkAEKAgICA4AAhCgJAIAAgARCWASIIQQBIDQBBfyEFAkACQAJAIAhFDQBBASEHAkACQCAEQQFGBEBBfyEHIAYgCEEBazYCDCACQQJIDQEgACAGIAMpAwgQRw0GIAYrAwAiCb1C////////////AINCgYCAgICAgPj/AFoEQCAGQQA2AgwMAgsgCUQAAAAA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CGoQwAIhASACQQE2AgAgARALBEAgACACEMADIAEPCyACKAJEQQhrIgMpAwAhBiADQoCAgIAwNwMAIAFC/////w9YBEAgAadBAkYEQCACQQI2AgAgBEECNgIAIAYPCyAEQQA2AgAgBg8LIAAgARAKIAAgAhDAAyAGDwsgAykDABANDwsgACADKQMAEA0QkgEMAQsgAEHgzwFBABAUC0KAgICA4AAhAQsgAQtmAQF+IAMpAwAiARD3A0UEQCAAQeTJAEEAEBRCgICAgOAADwtCgICAgDAhBCABpykCBEKAgICAgICAgECDQoCAgICAgICAgH9RBH4gAUL/////D4NCgICAgJB/hBANBUKAgICAMAsLLwEBfkKAgICA4AAhASAAIAMpAwAQKyIEEAsEfkKAgICA4AAFIAAgBKdBAhD2AwsLSQIBfgF/IAAgARDBAyIBEAsEQCABDwtCgICAgDAhAiABpyIDKAIEQYCAgIB4RwRAIAAgACgCECADENMCEDEhAgsgACABEAogAgsJACAAIAEQwQMLTgEBfiMAQRBrIgIkACACIAAgARDBAyIBNwMIAkAgARALBEAgASEEDAELIABCgICAgDBBASACQQhqEMgEIQQgACABEAoLIAJBEGokACAECy0AQoCAgIDgACAAIAMpAwAgAykDCEEAEJsCIgBBAEetQoCAgIAQhCAAQQBIGwuGAQEDfiADKQMAIgEhBCACQQROBEAgAykDGCEECyABQv////9vWARAIAAQKEKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQOSICRQ0AIAAgASACIAYQDSAEQQAQiAQhAyAAIAIQESADQQBIDQAgA0EAR61CgICAgBCEIQULIAULKgAgAykDACIBQv////9vWARAIAAQKEKAgICA4AAPCyAAIAFBA0EAEP8CC2MBAX4gAykDACIEQv////9vWARAIAAQKEKAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBA5IgJFDQAgACAEIAIQdyEDIAAgAhARIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQtjAQJ+AkACQCADKQMAIgFC/////29YBEAgABAoDAELIAMpAwghBSABIQQgAkEDTgRAIAMpAxAhBAsgACAFEDkiAg0BC0KAgICA4AAPCyAAIAEgAiAEQQAQEiEBIAAgAhARIAELZgEBfiADKQMAIgRC/////29YBEAgABAoQoCAgIDgAA8LQoCAgIDgACEBAkAgACADKQMIEDkiAkUNACAAIAQgAkEAEN0BIQMgACACEBEgA0EASA0AIANBAEetQoCAgIAQhCEBCyABC4sBAgF/An4jAEEQayIEJAAgAykDCCEFIAMpAwAiBiEBAkACQAJAAkAgAkEDSA0AIAMpAxAiARCxAQ0AIABBycwAQQAQFAwBCyAAIARBDGogBRCLBCICDQELQoCAgIDgACEBDAELIAAgBiABIAQoAgwiAyACEI4DIQEgACACIAMQmAMLIARBEGokACABCxwAIAAgAykDAEEAIAJBAWsQSiADQQhqQQIQmgMLQwAjAEEQayICJAACfkKAgICA4AAgACACQQxqIAMpAwAQxAENABpCICACKAIMIgBFDQAaIABnrQshASACQRBqJAAgAQtQACMAQRBrIgIkAEKAgICA4AAhAQJAIAAgAkEMaiADKQMAEJMCDQAgACACQQhqIAMpAwgQkwINACACKAIIIAIoAgxsrSEBCyACQRBqJAAgAQsGACAAtrsLUwACfCAAIAApA9ABIgFCDIggAYUiAUIZhiABhSIBQhuIIAGFIgE3A9ABIAFCnbqz+5SS/aIlfkIMiEKAgICAgICA+D+Ev0QAAAAAAADwv6ALEBUL9QMDA3wFfwN+IwBBEGsiCCQAIAhCADcDCAJAAkAgAkEBSA0AQoCAgIDgACEBIAAgCEEIaiADKQMAEEcNAUEBIQkgCCsDCCEEIAJBAUcEQANAIAIgCUYNAiAAIAggAyAJQQN0aikDABBHDQMgCUEBaiEJIAgrAwAhBSMAQSBrIgckACAEvUL///////////8AgyINIAW9Qv///////////wCDIgwgDCANVhsiDr8hBAJAIA5CNIinIgpB/w9GDQAgDSAMIAwgDVQbIgy/IQUCQCAOUA0AIAxCNIinIgtB/w9GDQAgCyAKa0HBAE4EQCAFIASgIQQMAgsCfCALQf4LTwRAIAREAAAAAAAAMBSiIQQgBUQAAAAAAAAwFKIhBUQAAAAAAACwawwBC0QAAAAAAADwPyAKQbwESw0AGiAERAAAAAAAALBroiEEIAVEAAAAAAAAsGuiIQVEAAAAAAAAMBQLIQYgB0EYaiAHQRBqIAUQhgYgB0EIaiAHIAQQhgYgBiAHKwMAIAcrAxCgIAcrAwigIAcrAxign6IhBAwBCyAFIQQLIAdBIGokAAwACwALIASZIQQLIAS9An8gBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLIgC3vVEEQCAArSEBDAELIAQQFSEBCyAIQRBqJAAgAQtbAQF/AkAgAL1C////////////AINCgICAgICAgPj/AFYgAEQAAAAAAAAAAGFyDQAgAEQAAAAAAAAAAGMhAUQAAAAAAADwvyEAIAENAEQAAAAAAADwPyEACyAAC4MBAgJ+AX8gAL0iAUI0iKdB/w9xIgNB/gdNBEAgAUKAgICAgICAgIB/gyECIANB/gdHIAFCgICAgICAgPC/f1FyRQRAIAJCgICAgICAgPg/hL8PCyACvw8LIANBsghNBHwgAUI/hyABfEIBQbMIIANrrYYiAUIBiHxCACABfYO/BSAACwvjBAICfAV/IwBBEGsiCCQAAn4gAkUEQEQAAAAAAADw/0QAAAAAAADwfyAEGxAVDAELAnwgAykDACIBQv////8PWARAIAJBASACQQFKGyELIAGnIQlBASEHA0AgByALRwRAIAm3IAMgB0EDdGopAwAiAUKAgICAEFoNAxogAachCgJ/IAQEQCAJIAoQSgwBCyAJIAoQsAELIQkgB0EBaiEHDAELCyAJrQwCC0KAgICA4AAgACAIQQhqIAEQRw0BGkEBIQcgCCsDCAshBSAHIAIgAiAHSBshAgNAIAIgB0cEQEKAgICA4AAgACAIIAMgB0EDdGopAwAQRw0CGgJAIAW9Qv///////////wCDQoCAgICAgID4/wBWDQAgCCsDACIGvUL///////////8Ag0KAgICAgICA+P8AVgRAIAYhBQwBCyAEBEAgBb1C////////////AINCgICAgICAgPj/AFgEfCAFIAUgBqUgBr1C////////////AINCgICAgICAgPj/AFYbBSAGCyAGvSAFvYO/IAVEAAAAAAAAAABiIAZEAAAAAAAAAABichshBQwBCyAFvUL///////////8Ag0KAgICAgICA+P8AWAR8IAUgBSAGpCAGvUL///////////8Ag0KAgICAgICA+P8AVhsFIAYLIAa9IAW9hL8gBUQAAAAAAAAAAGIgBkQAAAAAAAAAAGJyGyEFCyAHQQFqIQcMAQsL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QANAIANBAUgNAiAFQQhqIAZBACADIAYoAgRB/////wdxELABIgIQVw0DIAUgAyACayIDNgIEDAALAAsgBUEIaiAKIAMQywQNAQsgBEUEQCAFQQhqIAlBACAIEFcNAQsgACALEAogACABEAogBUEIahA3IQwMBAsgBUEIahBECyAAIAsQCgsgACABEAoMAQsgASEMCyAFQSBqJAAgDAv3BAIEfgV/IwBB0ABrIgIkACADKQMIIQggAykDACEFAkACQAJAIAEQEEUEQCABECZFDQELIABBk84AQQAQFAwBCwJAIAUQEA0AIAUQJg0AIAQEQCAAIAUQzQRBAEgNAgtCgICAgOAAIQYgACAFQcYBIAVBABASIgcQCw0CIAcQEA0AIAcQJg0AIAIgCDcDKCACIAE3AyAgACAHIAVBAiACQSBqEDUhBgwCCyAAIAJBCGpBABBCGkKAgICAMCEHAkAgACABECsiBhALBEBCgICAgDAhBQwBCyAAIAUQKyIFEAsNACAAIAgQOiINRQRAIAAgCBArIgcQCw0BCyAGpyEKIAWnIgwpAgQhAQNAAkACQCABQv////8Hg1AEQEEAIQMgC0UNASAJIAooAgRB/////wdxTg0CIAlBAWohAwwBCyAKIAwgCRDMBCIDQX9KDQAgCw0BIAJBCGoQRCAAIAUQCiAAIAcQCgwFCyACIAU3AyACfiANBEAgAiAGNwMwIAIgA603AyggACAAIAhCgICAgDBBAyACQSBqECIQPgwBCyACIAc3A0ggAkKAgICAMDcDQCACQoCAgIAwNwM4IAIgBjcDKCACIAOtNwMwIAAgAkEgahCQBQsiARALDQIgAkEIaiAKIAkgAxBXGiACQQhqIAEQjQEaIAwpAgQiAadB/////wdxIANqIQlBASELIAQNAQsLIAJBCGogCiAJIAooAgRB/////wdxEFcaIAAgBRAKIAAgBxAKIAAgBhAKIAJBCGoQNyEGDAILIAJBCGoQRCAAIAUQCiAAIAcQCiAAIAYQCgtCgICAgOAAIQYLIAJB0ABqJAAgBguDAgIDfwF+IwBBIGsiAiQAAkACQCAAIAEQYSIBEAsNACAAIAIgAykDABCOBA0AIAIpAwAiB0KAgICACFoEQCAAQaTCARBpDAELIAenIgNBAUYNASABpyIFKQIEpyIGQf////8HcSIERQ0BIAcgBK1+QoCAgIAEWQRAIABB9A1BABBBDAELIAAgAkEIaiADIARsIAZBH3YQqgMNAAJAIARBAUcEQANAIANBAUgNAiACQQhqIAVBACAEEFcaIANBAWshAwwACwALIAJBCGogBUEAEC8gAxDLBBoLIAAgARAKIAJBCGoQNyEBDAELIAAgARAKQoCAgIDgACEBCyACQSBqJAAgAQulAQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3EiBCAEEGMNACACIAQ2AgggAykDCCIHEBBFBEAgACACQQhqIAcgBCAEEGMNASACKAIIIQQLIAAgBSACKAIMIgMgBCADEEoQmgEhBgsgACABEAoLIAJBEGokACAGC6cBAgN/An4jAEEQayICJAACQCAAIAEQYSIBEAsEQCABIQcMAQtCgICAgOAAIQcCQCAAIAJBDGogAykDACABpyIGKAIEQf////8HcSIEIAQQYw0AIAIgBCACKAIMIgVrIgQ2AgggACAGIAUgAykDCCIIEBAEfyAEBSAAIAJBCGogCCAEQQAQYw0BIAIoAggLIAVqEJoBIQcLIAAgARAKCyACQRBqJAAgBwu6AQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3FBABBjDQAgAiAFKAIEQf////8HcSIENgIIIAMpAwgiBxAQRQRAIAAgAkEIaiAHIARBABBjDQEgAigCCCEECyAAIAUgAigCDCIDIAQgAyAESCIFGyAEIAMgBRsQmgEhBgsgACABEAoLIAJBEGokACAGC5gEAgl+A38jAEEQayINJAAgAykDCCEHIAMpAwAhBAJAAkACQCABEBBFBEAgARAmRQ0BCyAAQZPOAEEAEBQMAQsCQCAEEBAiAg0AIAQQJg0AQoCAgIDgACEFIAAgBEHIASAEQQAQEiIIEAsNAiAIEBANACAIECYNACANIAc3AwggDSABNwMAIAAgCCAEQQIgDRA1IQUMAgtCgICAgDAhCQJAIAAgARArIgwQCwRAQoCAgIAwIQUMAQsgABBOIgUQCw0AAkAgBxAQBEAgDUF/NgIADAELIAAgDSAHEMQBQQBIDQELIAynIg4pAgQhASAAIAQQKyIJEAsNAAJAIA0oAgAiA0UNACABp0H/////B3EhDyAAIA4CfwJAIAINACAJpyICKQIEQv////8HgyEKAkAgDwRAIAFC/////weDIAp9IApQrSIEfSEHIAOtIQgDQCAEIAt8IgEgB1UNAiAOIAIgAacQzAQiA0EASA0CIAAgDiALpyADEJoBIgEQCw0GIAAgBSAGIAFBABCqAUEASA0GIAogA6x8IQsgBkIBfCIGIAhSDQALDAQLIApQRQ0BDAMLIAZC/////w+DIQYgC6cMAQtBAAsgDxCaASIBEAsNASAAIAUgBiABQQAQqgFBAEgNAQsgACAMEAogACAJEAoMAgsgACAFEAogACAMEAogACAJEAoLQoCAgIDgACEFCyANQRBqJAAgBQvTAgEDfiMAQTBrIgIkACACIAE3AyggAykDACEFAkACQCABEBBFBEAgARAmRQ0BCyAAQZPOAEEAEBRCgICAgOAAIQcMAQsCQCAFEBANACAFECYNAEKAgICA4AAhByAAIAUgBCAFQQAQEiIGEAsNAQJAIARBxQFHDQAgACAFEM0EQX9KDQAgACAGEAoMAgsgBhAQDQAgBhAmDQAgACAGIAVBASACQShqEDUhBwwBCyACIAAgARArIgY3AwhCgICAgOAAIQcgBhALDQAgAiAFNwMQAkACQAJ/IARBxQFHBEBCgICAgDAhAUEBDAELIABBhMIBEHEiARALDQEgAiABNwMYQQILIQMgACAAKQNIIAMgAkEQahCuASEFIAAgARAKIAUQC0UNAQsgACAGEAoMAQsgACAFIARBASACQQhqELkCIQcgACACKQMIEAoLIAJBMGokACAHC/kCAgV/A34jAEEQayIFJAACQCAAIAEQYSIKEAsEQCAKIQEMAQsCQCAAIAMpAwAQgwQiBgRAQoCAgIDgACEBQoCAgIAwIQsgBkEBSA0BIABB8MEBQQAQFAwBC0KAgICA4AAhASAAIAMpAwAQKyILEAsNACALpyIHKAIEIQggBSAKpyIJKAIEQf////8HcSIGQQAgBEECRhs2AgwCQCACQQJIDQAgAykDCCIMEBANACAAIAVBDGogDCAGQQAQYw0BCyAGIAhB/////wdxIgZrIQICQAJAAkACQCAEDgIAAQILIAUoAgwhAwwCCyAFKAIMIgMgAkoh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IQQgACABECkiARALRQRAAn5CgICAgOAAIAAgAUHbACABQQAQEiIEEAsNABogACAEEDpFBEAgACAEEAogACABQQBBABDXBAwBCyAAIAQgAUEAQQAQNQshBCAAIAEQCgsgBAvWAgICfwR+IwBBIGsiBSQAAn4CQCAAIAUgACABECkiCRBADQBBLCEGQoCAgIAwIQgCQCACQQFIIARyRQRAQQAhAiADKQMAIgEQEA0BIAAgARArIggQCw0CQX8hBiAIpyICKAIEQQFHDQEgAi0AECEGDAELQQAhAgsgACAFQQhqQQAQQhpCACEBIAUpAwAiB0IAIAdCAFUbIQoCQANAIAEgClIEQAJAIAFQDQAgBkEATgRAIAVBCGogBhA7GgwBCyAFQQhqIAJBACACKAIEQf////8HcRBXGgsgACAJIAGnEHgiBxALDQICQCAHECYNACAHEBANACAFQQhqIAQEfiAAIAcQ1QQFIAcLEI0BDQMLIAFCAXwhAQwBCwsgACAIEAogACAJEAogBUEIahA3DAILIAVBCGoQRCAAIAgQCgsgACAJEApCgICAgOAACyEBIAVBIGokACABC/MBAgF/An4jAEEgayIEJAACfgJAAkACQCAAIARBEGogACABECkiBRBADQAgBCkDECIGQgFTDQEgBCAGQgF9IgE3AwggAkECTgRAIAAgBEEIaiADKQMIQn8gASAGEH4NASAEKQMIIQELA0AgAUIAUw0CIAAgBSABIARBGGoQiQEiAkEASA0BIAIEQCAAIAMpAwAQDSAEKQMYQQAQ3gENBAsgAUIBfSEBDAALAAsgACAFEApCgICAgOAADAILQn8hAQsgACAFEAogAUL/////D4MgAUKAgICACHxC/////w9YDQAaIAG5EBULIQEgBEEgaiQAIAEL9QICAX8EfiMAQSBrIgQkAAJ+AkACQCAAIARBEGogACABECkiBxBADQBCfyEGIAQpAxAiCEIBUw0BIARCADcDCCACQQJOBEAgACAEQQhqIAMpAwhCACAIIAgQfg0BCwJAIAcgBEEEaiAEEI4CRQRAIAQpAwghAQwBCyAEKQMIIgUgBDUCACIBIAEgBVMbIQEgBCgCBCECA0AgASAFUgRAIAAgAykDABANIAIgBadBA3RqKQMAEA1BABDeAQRAIAUhBgwFBSAFQgF8IQUMAgsACwsgBCABNwMICyABIAggASAIVRshBQNAIAEgBVENAiAAIAcgASAEQRhqEIkBIgJBAEgNAQJAIAJFDQAgACADKQMAEA0gBCkDGEEAEN4BRQ0AIAEhBgwDCyABQgF8IQEMAAsACyAAIAcQCkKAgICA4AAMAQsgACAHEAogBkL/////D4MgBkKAgICACHxC/////w9YDQAaIAa5EBULIQEgBEEgaiQAIAEL3AICCH4BfyMAQTBrIg0kAEKAgICAMCEGAkACQCAAIA1BCGogACABECkiBxBABEBCgICAgDAhBQwBC0KAgICAMCEFIAAgAykDACIKEGcNAEKAgICAMCEJIAJBAk4EQCADKQMIIQkLIA0pAwgiBUIAIAVCAFUbIQsDQCAIIAtSBEACfiAIIgVCgICAgAhaBEAgCLkQFSEFCyAFCxALDQIgACAHIAUQngEiBhALDQIgDSABNwMgIA0gBTcDGCANIAY3AxAgACAKIAlBAyANQRBqECIiDBALDQIgACAMECwEQCAEBEAgACAGEAogACAHEAoMBQsgACAFEAogACAHEAogBiEFDAQFIAAgBhAKIAAgBRAKIAhCAXwhCAwCCwALCyAAIAcQCkL/////D0KAgICAMCAEGyEFDAELIAAgBRAKIAAgBhAKIAAgBxAKQoCAgIDgACEFCyANQTBqJAAgBQv1AQIBfwJ+IwBBIGsiBCQAAkACQCAAIARBGGogACABECkiBhBADQAgBEIANwMQAkAgAkEBTARAIAQgBCkDGCIFNwMIDAELIAQpAxghBSADKQMIIgEQEEUEQCAAIARBEGogAUIAIAUgBRB+DQILIAQgBTcDCCACQQNIDQAgAykDECIBEBANACAAIARBCGogAUIAIAUgBRB+DQEgBCkDCCEFCyAEKQMQIgEgBSABIAVVGyEFA0AgASAFUQ0CIAAgBiABIAMpAwAQDRCPASECIAFCAXwhASACQX9KDQALCyAAIAYQCkKAgICA4AAhBgsgBEEgaiQAIAYL0gQCA38IfiMAQUBqIgUkAEKAgICAMCEKIAVCgICAgDA3AzggBUKAgICAMDcDMAJAAkACQCAEQQhxIgYEQCAFIAAgARANIgsQlgEiB6w3AwggB0EATg0BDAILIAAgBUEIaiAAIAEQKSILEEANAQsgACADKQMAIg0QZw0AAkAgAkEBTARAQgAhASAFKQMI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BgRAQoCAgIAwIQUgAi0AAEEQcQRAIAJBGGogAkEQaiAEGykDABANIQULIAAgAhBNDAMLIAAgARCZAiIBEAsNAiABECYEQEKAgICAMCEFDAMLIAAQf0UNAAsMAQtBACEDCyAAIAMQESAAIAEQCiACQSBqJAAgBQuVAQECfiADKQMIIQUgAykDACEGAkAgACABECkiARALRQRAIAAgBRBnRQRAIAAgBhA5IgINAgsgACABEAoLQoCAgIDgAA8LIAAgASACQoCAgIAwQoCAgIAwIAUgBBsgBUKAgICAMCAEG0GFqgFBhZoBIAQbEHUhAyAAIAEQCiAAIAIQEUKAgICA4ABCgICAgDAgA0EASBsLUgACQCABEBBFBEAgARAmRQ0BCyAAEChCgICAgOAADwsCQCACECANACACECYNAEKAgICAMA8LQoCAgIDgAEKAgICAMCAAIAEgAkEBEJsCQQBIGwslAQF+IAAgARApIgEQCwRAIAEPCyAAIAEQ+wEhAiAAIAEQCiACC5MBAgF+AX8jAEEgayICJABCgICAgOAAIQQCQAJAIAAgARApIgEQCw0AIAAgAykDABA5IgNFDQAgACACIAGnIAMQUyIFQQBIDQEgBUUEQEKAgICAECEEDAILIAI1AgAhBCAAIAIQTSAEQgKIQgGDQoCAgIAQhCEEDAELQQAhAwsgACADEBEgACABEAogAkEgaiQAIAQLhwEBAn4gAykDACIFECBFBEBCgICAgBAPCwJAIAAgARApIgQQC0UEQCAEpyECIAUQDSEBA0AgACABEJkCIgEQC0UEQCABECYiAyACIAGnRnINAyAAEH9FDQELCyAAIAEQCiAAIAQQCgtCgICAgOAADwsgACABEAogACAEEAogA0WtQoCAgIAQhAtlAQF+QoCAgIDgACEEAkAgACADKQMAEDkiAkUNACAAIAEQKSIBEAsEQCAAIAIQESABDwsgAEEAIAGnIAIQUyEDIAAgAhARIAAgARAKIANBAEgNACADQQBHrUKAgICAEIQhBAsgBAsIACAAIAEQKQsPACAAIAFBN0EAQQAQwwILnAIBBX4jAEEQayICJAAgAykDACEFAkAgABA9IgEQCwRAIAEhBQwBC0KAgICAMCEHAkACQCAAIAVBABD1ASIEEAsNACAAIARB6gAgBEEAEBIiBxALDQADQCAAIAQgByACQQxqEKsBIgYQCw0BIAIoAgwEQCABIQUMAwsCQAJAIAYQIEUEQCAAECgMAQsgACAGQQAQeCIIEAsNACAAIAZBARB4IgUQCwRAIAAgCBAKDAELIAAgASAIIAVBh4ABEMoCQX9KDQELIAAgBhAKDAILIAAgBhAKDAALAAtCgICAgOAAIQUgBBAgBEAgACAEQQEQrwEaCyAHIQYgBCEHIAEhBAsgACAGEAogACAHEAogACAEEAoLIAJBEGokACAFC0AAAn4CQCABEKgDIgJFDQAgAi0AEEEBcQ0AQoCAgIAwIAItABFBAXENARoLIAAgAUEAQQAQ3AQaQoCAgIDgAAsLSABBLyECIAAgAykDACIBEFRBf0YEfyABpy8BBiICQSlGBEBBDUEpIAAgARA6GyECCyAAKAIQKAJEIAJBGGxqKAIEBUEvCxAxC/MBAgR/AX4jAEEwayICJAACQCADKQMAIgkQIEUEQEKBgICAECEBDAELQoCAgIDgACEBIAAgAkEsaiACQShqIAmnIghBAxCQAQ0AIAIoAiwhBiACKAIoIQdBACEDAkADQCADIAdHBEAgACACQQhqIAggBiADQQN0aigCBBBTIgVBAEgNAgJAIAVFDQAgACACQQhqEE0gAigCCCIFQQFxRUEAIARFIAVBAnFFchsNAEKAgICAECEBDAMLIANBAWohAwwBCwsgACAJEJ8BIgNBAEgNASADQQFHrUKAgICAEIQhAQsgACAGIAcQZAsgAkEwaiQAIAELnQECAX4Bf0KAgICAMCEBAkACQCAAIAMpAwAQKSIEEAsNACACQQEgAkEBShshBUEBIQIDQCACIAVGDQICQCADIAJBA3RqKQMAIgEQJg0AIAEQEA0AIAAgARApIgEQCw0CIAAgBCABQoCAgIAwQQEQxgUNAiAAIAEQCgsgAkEBaiECDAALAAsgACAEEAogACABEApCgICAgOAAIQQLIAQLGwAgACADKQMAIAMpAwgQWEEAR61CgICAgBCEC5sCAgN+A38jAEEgayICJABCgICAgOAAIQQgACADKQMAECkiBRALRQRAQoCAgIAwIQECfgJAIAAgAkEcaiACQRhqIAWnQQMQkAENACAAED0iARALDQAgAigCHCEHIAIoAhghCEEAIQMDQCADIAhHBEAgACAHIANBA3RqIgkoAgQQXiIGEAsNAiACIAY3AwggAiAFNwMAIABCgICAgDBBAiACQQAQ2AQhBCAAIAYQCiAEEAsNAiAEEBBFBEAgACABIAkoAgQgBEGHgAEQGUF/TA0DCyADQQFqIQMMAQsLIAAgByAIEGQgAQwBCyAAIAIoAhwgAigCGBBkIAAgBRAKIAEhBUKAgICA4AALIQQgACAFEAoLIAJBIGokACAEC20AAn4CQCADKQMAIgFC/////29YBEAgBEUNASAAEChCgICAgOAADwtCgICAgOAAIAAgARCZBCICQQBIDQEaIAQEQCACQQBHrUKAgICAEIQPCyACDQAgAEGrnAFBABAUQoCAgIDgAA8LIAEQDQsLTwACQAJAIAMpAwAiAUL/////b1gEQCAERQRAQoCAgIAQDwsgABAoDAELIAAgARCfASIAQQBODQELQoCAgIDgAA8LIABBAEetQoCAgIAQhAsQACAAIAMpAwBBAkEAEP8CCxAAIAAgAykDAEEBQQAQ/wILLQEBfkKAgICA4AAhASAAIAMpAwAiBCADKQMIENoEBH5CgICAgOAABSAEEA0LC30BAn4gAykDACIBQv////9vWARAIAAQKEKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQOSICRQ0AIAAgASACIAYgBEVBDnQQ2QQhAyAAIAIQESADQQBIDQAgBARAIANBAEetQoCAgIAQhA8LIAEQDSEFCyAFCycAIAAgAykDACIBIAMpAwhBARCbAkEASARAQoCAgIDgAA8LIAEQDQs4ACADKQMAIgFCIIinIgJBf0YgBEVBACACQX5xQQJHG3JFBEAgABAoQoCAgIDgAA8LIAAgARD7AQtiAQF+AkAgAykDACIBECANACABECYNACAAQcChAUEAEBRCgICAgOAADwsCQCAAIAEQUiIBEAtFBEAgAykDCCIEEBANASAAIAEgBBDaBEUNASAAIAEQCgtCgICAgOAADwsgAQu4AQECfiABECBFBEAgABAoQoCAgIDgAA8LQoCAgIDgACEFAn4gACABQTYgAUEAEBIiBBAQBEAgAEGOARAxDAELIAAgBBA+CyIEEAsEfkKAgICA4AAFAn4gACABQTMgAUEAEBIiARAQBEAgAEEvEDEMAQsgACABED4LIgEQCwRAIAAgBBAKQoCAgIDgAA8LAkAgBBD2AQ0AIAEQ9gENACAAQb4V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BUEIaiADIAJBH3YQqgMaIAcoAgRB/////wdxIQhBACEAA0ACQAJAIAAgCEgEQCAAQQFqIQJBfyEGAkACfwJAAkACQAJAAkACQAJAIAcgABAvIgNB2wBrDgMDAQIACyACIQACQCADQQprDgQECwsFAAsgA0EvRw0HIARFDQVBASEEQS8hAwwHC0HcACEDIAIgCE4NBiAAQQJqIQAgByACEC8hBgwJC0EAIQRB3QAhAwwFC0HbACEDIAQgAiAITnINBiAAQQJqIAIgByACEC9B3QBGIgIbIQBB3QBBfyACGyEGQQEhBAwHC0HuAAwCC0HyAAwBC0EAIQRBLwshBkHcACEDCyACIQAMAgsgBUEIahA3IQEMAwsgAiEAQQEhBAsgBUEIaiADEJQBGiAGQQBIDQAgBUEIaiAGEJQBGgwACwALIAVBIGokACABC9gCAgN/AX4jAEEQayIEJAACQCABQv////9vWARAIAAQKEKAgICA4AAhBQwBC0KAgICA4AAhBSAAIAAgAUHuACABQQAQEhAsIgJBAEgNACACBH8gBEHnADoACCAEQQlqBSAEQQhqCyECIAAgACABQZ/PABDMAhAsIgNBAEgNACADBEAgAkHpADoAACACQQFqIQILIAAgACABQarPABDMAhAsIgNBAEgNACADBEAgAkHtADoAACACQQFqIQILIAAgACABQbTPABDMAhAsIgNBAEgNACADBEAgAkHzADoAACACQQFqIQILIAAgACABQe8AIAFBABASECwiA0EASA0AIAMEQCACQfUAOgAAIAJBAWohAgsgACAAIAFBw88AEMwCECwiA0EASA0AIAAgBEEIaiADBH8gAkH5ADoAACACQQFqBSACCyAEQQhqaxD+ASEFCyAEQRBqJAAgBQv6CgIRfwF+IwBBEGsiByQAAkAgACABEGEiARALDQAjAEEQayIFJABBfyEEAkAgACIGIAEQKyIVEAsNACAGIBWnIgooAgRB/////wdxIgBBARBKQQJ0EC0iCUUEQCAGIBUQCiAHQQA2AggMAQtBACEEIAVBADYCDCAAQQBHIQsDQCALBEAgCSAEQQJ0aiAKIAVBDGoQ2QE2AgAgBEEBaiEEIAUoAgwgAEghCwwBCwsgBiAVEAogByAJNgIICyAFQRBqJAAgBiABEApCgICAgOAAIQEgBCIAQQBIDQACQCAC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CyACRQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQwDC0EAIAAoAgggACgCBCACakkNARogASACEPUFDwsgACACEKUFCw8LQQALJgAgAQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQsLKAEBfwJAIAGnKAIgIgNFDQAgAygCAEEERg0AIAAgA0EIaiACEPADCwscAQF/IAFBKBA/IgIEQCAAIAIQ7gMgACACEB8LCyUBAX8gAacoAiAiAwRAIAAgAykDACACECEgACADKQMIIAIQIQsLJwEBfyABpygCICICBEAgACACKQMAECUgACACKQMIECUgACACEB8LCx4BAX8gAacoAiAiAgRAIAAgAikDABAlIAAgAhAfCwtDAQJ/IAGnKAIgIgIEQAJAIAIpAwAiARDeBUUNACACKAIMIgNFDQAgACADEPIDIAIpAwAhAQsgACABECUgACACEB8LC1gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNASAEKAIARQRAIAAgAykDECACECELIAAgAykDGCACECEgA0EEaiEDDAALAAsLgQEBBX8gAacoAiAiAwRAIANBBGohBSADKAIIIQIDQCACIAVHBEAgAigCBCEGIAJBEGshBCACQQxrKAIARQRAAkAgAygCAARAIAQQpgUMAQsgACACKQMQECULIAAgAikDGBAlCyAAIAQQHyAGIQIMAQsLIAAgAygCEBAfIAAgAxAfCwshAQF/IAGnKAIgIgMEQCAAIAM1AgxCgICAgHCEIAIQIQsLQAEBfyABpygCICICBEAgACACNQIMQoCAgIBwhCIBEN4FBH4gAhBGIAI1AgxCgICAgHCEBSABCxAlIAAgAhAfCwtbAQJ/IAGnKAIgIgIEQAJAAkAgAi0ABUUNACAAKAK8ASIDRQ0AIAAoAsQBIAIoAgggAxEDAAwBCyACKAIYIgNFDQAgACACKAIUIAIoAgggAxEGAAsgACACEB8LCykBAX8gACABpyICNQIkQoCAgICQf4QQJSAAIAI1AiBCgICAgJB/hBAlCxEAIAAgAacoAiApAwAgAhAhCxkBAX8gACABpygCICICKQMAECUgACACEB8LQQEDfwJAIAFBDxA/IgRFDQAgBEEIaiEFA0AgAyAELQAFTw0BIAAgBSADQQN0aikDACACECEgA0EBaiEDDAALAAsLQwEDfyABQQ8QPyIDBEAgA0EIaiEEA0AgAiADLQAFT0UEQCAAIAQgAkEDdGopAwAQJSACQQFqIQIMAQsLIAAgAxAfCwtJAQJ/IAAgAacoAiAiBCkDACACECEgACAEKQMIIAIQIQNAIAMgBCgCEE5FBEAgACAEIANBA3RqKQMYIAIQISADQQFqIQMMAQsLC0kBAn8gACABpygCICICKQMAECUgACACKQMIECUDQCADIAIoAhBORQRAIAAgAiADQQN0aikDGBAlIANBAWohAwwBCwsgACACEB8LjgEBBH8gAaciAygCJCEFIAMoAiAhBCADKAIoIgMEQCAAIAOtQoCAgIBwhCACECELIAQEQAJAIAVFDQBBACEDA0AgAyAEKAI8Tg0BAkAgBSADQQJ0aigCACIGRQ0AIAYtAAVBAXFFDQAgACAGIAIRAwALIANBAWohAwwACwALIAAgBK1CgICAgGCEIAIQIQsLcwEDfyABpyICKAIoIgMEQCAAIAOtQoCAgIBwhBAlCyACKAIgIgMEQCACKAIkIgQEQEEAIQIDQCACIAMoAjxORQRAIAAgBCACQQJ0aigCABD5ASACQQFqIQIMAQsLIAAgBBAfCyAAIAOtQoCAgIBghBAlCwsSACABpygCICIABEAgABCtAwsLDgAgACABpykDICACECELGQAgACABpyIAKQMgECUgAEKAgICAMDcDIAs1AQJ/IAGnIQQDQCADIAQoAihPRQRAIAAgBCgCJCADQQN0aikDACACECEgA0EBaiEDDAELCws8AQJ/IAGnIQMDQCACIAMoAihPRQRAIAAgAygCJCACQQN0aikDABAlIAJBAWohAgwBCwsgACADKAIkEB8LCAAgACACEB8LtwECAX8CfiMAQSBrIgMkACABQQNGBEAgAikDECEEIAIpAwghBQJAIAAgA0EQaiACKQMAEKwFQQBIBEBCgICAgOAAIQQMAQsgACAEIAVBAiADQRBqECIiBBALBEAgAyAAEJEBNwMIIAAgAykDGEKAgICAMEEBIANBCGoQIiEEIAAgAykDCBAKCyAAIAMpAxAQCiAAIAMpAxgQCgsgA0EgaiQAIAQPC0H24wBBoQ1Bu+oCQYDkABAAAAvoAQEIfyMAIgchCyABpygCICIIKAIQIglB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TwRAIAAgAKEhAAwBCyAAIAEQsAQhAiABKwMAIAErAwggAkEBcRCEBiEACyABQRBqJAAgAAutAwIBfgV/IAG9Qv///////////wCDQoCAgICAgID4/wBYQQAgAL1C////////////AINCgYCAgICAgPj/AFQbRQRAIAAgAaAPCyABvSICQiCIpyIDQYCAwP8DayACpyIGckUEQCAAEK8EDwsgAkI+iKdBAnEiByAAvSICQj+Ip3IhBAJAAkAgAkIgiKdB/////wdxIgUgAqdyRQRAAkAgBEECaw4CAgADC0QYLURU+yEJwA8LIANB/////wdxIgMgBnJFBEBEGC1EVPsh+T8gAKYPCwJAIANBgIDA/wdGBEAgBUGAgMD/B0cNASAEQQN0QaCcBGorAwAPCyAFQYCAwP8HR0EAIANBgICAIGogBU8bRQRARBgtRFT7Ifk/IACmDwsCfCAHBEBEAAAAAAAAAAAgBUGAgIAgaiADSQ0BGgsgACABo5kQrwQLIQACQAJAAkAgBA4DBQABAgsgAJoPC0QYLURU+yEJQCAARAdcFDMmpqG8oKEPCyAARAdcFDMmpqG8oEQYLURU+yEJwKAPCyAEQQN0QcCcBGorAwAPC0QYLURU+yEJQCEACyAAC8cBAQJ/IwBBEGsiASQAAnwgAL1CIIinQf////8HcSICQfvDpP8DTQRARAAAAAAAAPA/IAJBnsGa8gNJDQEaIABEAAAAAAAAAAAQ2QIMAQsgACAAoSACQYCAwP8HTw0AGgJAAkACQAJAIAAgARCwBEEDcQ4DAAECAwsgASsDACABKwMIENkCDAMLIAErAwAgASsDCEEBENoCmgwCCyABKwMAIAErAwgQ2QKaDAELIAErAwAgASsDCEEBENoCCyEAIAFBEGokACAAC7ACAwF8AX4BfwJAIAC9IgJCIIinQf////8HcSIDQYCAwP8DTwRAIAKnIANBgIDA/wNrckUNAUQAAAAAAAAAACAAIAChow8LAnwgA0H////+A00EQEQYLURU+yH5PyADQYGAgOMDSQ0BGkQHXBQzJqaRPCAAIACiENsCIACioSAAoUQYLURU+yH5P6APCyACQn9XBEBEGC1EVPsh+T8gAEQAAAAAAADwP6BEAAAAAAAA4D+iIgCfIgEgASAAENsCokQHXBQzJqaRvKCgoSIAIACgDwtEAAAAAAAA8D8gAKFEAAAAAAAA4D+iIgCfIgEgABDbAqIgACABvUKAgICAcIO/IgAgAKKhIAEgAKCjoCAAoCIAIACgCw8LRAAAAAAAAAAARBgtRFT7IQlAIAJCf1UbC4cBAwF+AX8BfCAAvSIBQv///////////wCDvyEAAkACfCABQjSIp0H/D3EiAkH9B00EQCACQd8HSQ0CIAAgAKAiAyADIACiRAAAAAAAAPA/IACho6AMAQsgAEQAAAAAAADwPyAAoaMiACAAoAsQsANEAAAAAAAA4D+iIQALIAAgAJogAUJ/VRsLngEDAnwBfwF+RAAAAAAAAOA/IACmIQIgAL1C////////////AIMiBL8hAQJAIARCIIinIgNBwdyYhARNBEAgARCkAiEBIANB//+//wNNBEAgA0GAgMDyA0kNAiACIAEgAaAgASABoiABRAAAAAAAAPA/oKOhog8LIAIgASABIAFEAAAAAAAA8D+go6CiDwsgAiACoCABEIcGoiEACyAACwUAIACZCwUAIACfC94BAgF/An4gAL0iAkL///////////8AgyIDvyEAAkAgA0IgiKciAUHrp4b/A08EQCABQYGA0IEETwRARAAAAAAAAACAIACjRAAAAAAAAPA/oCEADAILRAAAAAAAAPA/RAAAAAAAAABAIAAgAKAQpAJEAAAAAAAAAECgo6EhAAwBCyABQa+xwf4DTwRAIAAgAKAQpAIiACAARAAAAAAAAABAoKMhAAwBCyABQYCAwABJDQAgAEQAAAAAAAAAwKIQpAIiAJogAEQAAAAAAAAAQKCjIQALIAAgAJogAkJ/VRsLgwIDAXwCfwF+IAC9IgRCIIinQf////8HcSICQYCAwP8HTwRAIAAgAKAPC0GT8f3UAiEDAkAgAkH//z9NBEBBk/H9ywIhAyAARAAAAAAAAFBDor0iBEIgiKdB/////wdxIgJFDQELIAAgBEKAgICAgICAgIB/gyACQQNuIANqrUIghoS/IgEgAaIgASAAo6IiACAAIACioiAARNft5NQAsMI/okTZUee+y0Tov6CiIAAgAETC1klKYPH5P6JEICTwkuAo/r+gokSS5mEP5gP+P6CgIAGivUKAgICACHxCgICAgHyDvyIAIACioyIBIAChIAAgAKAgAaCjIACiIACgIQALIAALngMCA34CfyMAQSBrIgkkAAJAIAVBAXEEQCMAQSBrIgokAEKAgICA4AAhCAJAIAAgCkEYaiABQd4AEIQBIgVFDQAgBSkDACIBELEBRQRAIABBycwAQQAQFAwBCyAKKQMYIgYQEARAIAAgASACIAMgBBCOAyEIDAELAkAgACADIAQQkAMiBxALDQAgBSkDACEBIAogAjcDECAKIAc3AwggCiABNwMAIAAgBiAFKQMIQQMgChAiIgEQCyABQv////9vVnJFBEAgACABEAogABAoDAELIAEhCAsgACAGEAogACAHEAoLIApBIGokACAIIQYMAQtCgICAgOAAIQYgACAJQRhqIAFB2gAQhAEiBUUNACAJKQMYIQcgBS0AEEUEQCAAIAcQCiAAQY/EAEEAEBQMAQsgBxAQBEAgACAFKQMAIAIgAyAEECIhBgwBCyAAIAMgBBCQAyIIEAtFBEAgBSkDACEBIAkgCDcDECAJIAI3AwggCSABNwMAIAAgByAFKQMIQQMgCRAiIQYLIAAgBxAKIAAgCBAKCyAJQSBqJAAgBguyAQMBfgF/AXwgAL0iAUL///////////8Ag78hAAJAIAFCNIinQf8PcSICQZkITwRAIAAQ2AJE7zn6/kIu5j+gIQAMAQsgAkGACE8EQCAAIACgRAAAAAAAAPA/IAAgAKJEAAAAAAAA8D+gnyAAoKOgENgCIQAMAQsgAkHlB0kNACAAIACiIgMgA0QAAAAAAADwP6CfRAAAAAAAAPA/oKMgAKAQsAMhAAsgACAAmiABQn9VGwtZAgF/AX4CQEHwpgQoAgAEQEH0pgQoAgAhAgwBC0HwpgQQ1wUiAjYCAEH0pgQgAhDgBCICNgIACyACIAAgABBDQYAIELYFIgMgARCnAxpB9KYEKAIAIAMQCgsLjpcEcABBgAgLQTxldmFsU2NyaXB0PgA8aW5pdFNjcmlwdD4APGNvbW1GdW4+AHcAbmFtZQBzdGFjawBtZXNzYWdlAAAAAAAAAACMAEHMCAsNjQAAADoAAAA7AAAAjgBB5AgLPY8AAAA8AAAAPQAAAJAAAAA8AAAAPQAAAJEAAAA8AAAAPQAAAJIAAAA8AAAAPQAAAJMAAAA6AAAAOwAAAJMAQawJCw2WAAAAPAAAAD0AAACMAEHECQvZApcAAAA+AAAAPwAAAJcAAABAAAAAQQAAAJcAAABCAAAAQwAAAJcAAABEAAAARQAAAJgAAABAAAAAQQAAAJkAAABGAAAARwAAAJoAAABIAAAAAAAAAJsAAABJAAAAAAAAAJwAAABJAAAAAAAAAJ0AAABKAAAASwAAAJ4AAABKAAAASwAAAJ8AAABKAAAASwAAAKAAAABKAAAASwAAAKEAAABKAAAASwAAAKIAAABKAAAASwAAAKMAAABKAAAASwAAAKQAAABKAAAASwAAAKUAAABKAAAASwAAAKYAAABKAAAASwAAAKcAAABMAAAATQAAAKgAAABMAAAATQAAAKkAAABMAAAATQAAAKoAAABMAAAATQAAAKsAAABOAAAATwAAAKwAAABOAAAATwAAAK0AAABQAAAAUQAAAK4AAABQAAAAUQAAAK8AAABSAAAAUwAAALAAAABUAAAAVQBBrAwLAVYAQbwMCw1XAAAAAAAAAFgAAABZAEHoDAsBWgBB9AwL8wFbAAAAXAAAAF0AAAAAAAAAbGlzdF9lbXB0eSgmcnQtPmdjX29ial9saXN0KQAvdG1wL3F1aWNranMvcXVpY2tqcy5jAEpTX0ZyZWVSdW50aW1lAGN0eC0+aGVhZGVyLnJlZl9jb3VudCA9PSAwAEpTX0ZyZWVDb250ZXh0ACV1AHN0cmluZyB0b28gbG9uZwBfX0pTX0ZyZWVWYWx1ZTogdW5rbm93biB0YWc9JWQKAFF1aWNrSlMgbWVtb3J5IHVzYWdlIC0tIDEuMC4wIHZlcnNpb24sICVkLWJpdCwgbWFsbG9jIGxpbWl0OiAlbGxkCgoAQfAOC6UMmAcAAOAAAACiBwAA+AAAAKwHAAAwAAAAtQcAABAAAAC+BwAAWAAAAEpTUnVudGltZQBKU0NvbnRleHQASlNPYmplY3QASlNTdHJpbmcASlNGdW5jdGlvbkJ5dGVjb2RlACAgJTN1ICsgJS0ydSAgJXMKACAgbWFsbG9jX3VzYWJsZV9zaXplIHVuYXZhaWxhYmxlCgAKSlNPYmplY3QgY2xhc3NlcwoAICAlNWQgICUyLjBkICVzCgBub25lAG90aGVyAAoAJS0yMHMgJThzICU4cwoATkFNRQBDT1VOVABTSVpFACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIGJsb2NrKQoAbWVtb3J5IGFsbG9jYXRlZAAlLTIwcyAlOGxsZCAlOGxsZCAgKCVkIG92ZXJoZWFkLCAlMC4xZiBhdmVyYWdlIHNsYWNrKQoAbWVtb3J5IHVzZWQAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgYXRvbSkKAGF0b21zACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIHN0cmluZykKAHN0cmluZ3MAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgb2JqZWN0KQoAb2JqZWN0cwAgIHByb3BlcnRpZXMAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgc2hhcGUpCgAgIHNoYXBlcwAlLTIwcyAlOGxsZCAlOGxsZAoAYnl0ZWNvZGUgZnVuY3Rpb25zACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIGZ1bmN0aW9uKQoAICBieXRlY29kZQAgIHBjMmxpbmUAJS0yMHMgJThsbGQKAEMgZnVuY3Rpb25zAGFycmF5cwAgIGZhc3QgYXJyYXlzACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIGZhc3QgYXJyYXkpCgAgIGVsZW1lbnRzAGJpbmFyeSBvYmplY3RzAG91dCBvZiBtZW1vcnkAaW52YWxpZCAnaW5zdGFuY2VvZicgcmlnaHQgb3BlcmFuZABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIG51bGwAAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiB1bmRlZmluZWQAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkASlNfU2V0UHJvcGVydHlJbnRlcm5hbABwcm9wID09IEpTX0FUT01fbGVuZ3RoAG91dC1vZi1ib3VuZCBudW1lcmljIGluZGV4AG5vdCBhbiBvYmplY3QAb2JqZWN0IGlzIG5vdCBleHRlbnNpYmxlAHBycyAhPSBOVUxMAEpTX0RlZmluZVByb3BlcnR5AHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUAbm9uIGludGVnZXIgaW5kZXggaW4gdHlwZWQgYXJyYXkAbmVnYXRpdmUgaW5kZXggaW4gdHlwZWQgYXJyYXkAb3V0LW9mLWJvdW5kIGluZGV4IGluIHR5cGVkIGFycmF5AGludmFsaWQgZGVzY3JpcHRvciBmbGFncwBjb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5AGludmFsaWQgYXJyYXkgaW5kZXgAJWQAW2Z1bmN0aW9uIGJ5dGVjb2RlXQBjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gc3RyaW5nAFt1bnN1cHBvcnRlZCB0eXBlXQBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX0dMT0JBTCB8fCBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX01PRFVMRQBKU19FdmFsVGhpcwBSZWdFeHAAdW5leHBlY3RlZCBkYXRhIGF0IHRoZSBlbmQAICAgICAgICAgIAAAAIwAAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABQcm94eQBBoBsL0wHALgAAkC8AAFAwAACwMAAAADEAAFAxAAAMCwUEAgIAALIAAABnAAAAaAAAALMAAABpAAAAagAAALQAAABpAAAAagAAALUAAABAAAAAQQAAALYAAABrAAAAbAAAALcAAABrAAAAbAAAAC8AAABtAAAAbgAAALgAAABAAAAAQQAAALkAAABvAAAAcAAAAFByb21pc2UAQXN5bmNGdW5jdGlvbgBBc3luY0dlbmVyYXRvckZ1bmN0aW9uAERhdGUAT2JqZWN0AEZ1bmN0aW9uAEVycm9yAEGAHQslJlMAADBTAAA7UwAASlMAAFZTAABgUwAAaVMAAHdTAABBcnJheQBBsB0LhTFjb3B5V2l0aGluAGVudHJpZXMAZmlsbABmaW5kAGZpbmRJbmRleABmbGF0AGZsYXRNYXAAaW5jbHVkZXMAa2V5cwB2YWx1ZXMAAE51bWJlcgBCb29sZWFuAFN0cmluZwBTeW1ib2wAR2VuZXJhdG9yRnVuY3Rpb24AZXZhbAAAAAABAQICAgNBcnJheUJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBUeXBlZEFycmF5AEJZVEVTX1BFUl9FTEVNRU5UAERhdGFWaWV3AG1yMSAhPSBOVUxMAGRlbGV0ZV93ZWFrX3JlZgBtci0+ZW1wdHkAbWFwX2RlY3JlZl9yZWNvcmQAc2YtPmN1cl9zcCAhPSBOVUxMAGFzeW5jX2Z1bmNfZnJlZQBzaXplICE9IDAAanNfZGVmX21hbGxvYwAAAG51bGwAZmFsc2UAdHJ1ZQBpZgBlbHNlAHJldHVybgB2YXIAdGhpcwBkZWxldGUAdm9pZAB0eXBlb2YAbmV3AGluAGluc3RhbmNlb2YAZG8Ad2hpbGUAZm9yAGJyZWFrAGNvbnRpbnVlAHN3aXRjaABjYXNlAGRlZmF1bHQAdGhyb3cAdHJ5AGNhdGNoAGZpbmFsbHkAZnVuY3Rpb24AZGVidWdnZXIAd2l0aABjbGFzcwBjb25zdABlbnVtAGV4cG9ydABleHRlbmRzAGltcG9ydABzdXBlcgBpbXBsZW1lbnRzAGludGVyZmFjZQBsZXQAcGFja2FnZQBwcml2YXRlAHByb3RlY3RlZABwdWJsaWMAc3RhdGljAHlpZWxkAGF3YWl0AABsZW5ndGgAZmlsZU5hbWUAbGluZU51bWJlcgBtZXNzYWdlAGVycm9ycwBzdGFjawBuYW1lAHRvU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHZhbHVlT2YAZXZhbABwcm90b3R5cGUAY29uc3RydWN0b3IAY29uZmlndXJhYmxlAHdyaXRhYmxlAGVudW1lcmFibGUAdmFsdWUAZ2V0AHNldABvZgBfX3Byb3RvX18AdW5kZWZpbmVkAG51bWJlcgBib29sZWFuAHN0cmluZwBvYmplY3QAc3ltYm9sAGludGVnZXIAdW5rbm93bgBhcmd1bWVudHMAY2FsbGVlAGNhbGxlcgA8ZXZhbD4APHJldD4APHZhcj4APGFyZ192YXI+ADx3aXRoPgBsYXN0SW5kZXgAdGFyZ2V0AGluZGV4AGlucHV0AGRlZmluZVByb3BlcnRpZXMAYXBwbHkAam9pbgBjb25jYXQAc3BsaXQAY29uc3RydWN0AGdldFByb3RvdHlwZU9mAHNldFByb3RvdHlwZU9mAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBoYXMAZGVsZXRlUHJvcGVydHkAZGVmaW5lUHJvcGVydHkAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAG93bktleXMAYWRkAGRvbmUAbmV4dAB2YWx1ZXMAc291cmNlAGZsYWdzAGdsb2JhbAB1bmljb2RlAHJhdwBuZXcudGFyZ2V0AHRoaXMuYWN0aXZlX2Z1bmMAPGhvbWVfb2JqZWN0PgA8Y29tcHV0ZWRfZmllbGQ+ADxzdGF0aWNfY29tcHV0ZWRfZmllbGQ+ADxjbGFzc19maWVsZHNfaW5pdD4APGJyYW5kPgAjY29uc3RydWN0b3IAYXMAZnJvbQBtZXRhACpkZWZhdWx0KgAqAE1vZHVsZQB0aGVuAHJlc29sdmUAcmVqZWN0AHByb21pc2UAcHJveHkAcmV2b2tlAGFzeW5jAGV4ZWMAZ3JvdXBzAHN0YXR1cwByZWFzb24AZ2xvYmFsVGhpcwB0b0pTT04AT2JqZWN0AEFycmF5AEVycm9yAE51bWJlcgBTdHJpbmcAQm9vbGVhbgBTeW1ib2wAQXJndW1lbnRzAE1hdGgASlNPTgBEYXRlAEZ1bmN0aW9uAEdlbmVyYXRvckZ1bmN0aW9uAEZvckluSXRlcmF0b3IAUmVnRXhwAEFycmF5QnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAFVpbnQ4Q2xhbXBlZEFycmF5AEludDhBcnJheQBVaW50OEFycmF5AEludDE2QXJyYXkAVWludDE2QXJyYXkASW50MzJBcnJheQBVaW50MzJBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AE1hcABTZXQAV2Vha01hcABXZWFrU2V0AE1hcCBJdGVyYXRvcgBTZXQgSXRlcmF0b3IAQXJyYXkgSXRlcmF0b3IAU3RyaW5nIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAR2VuZXJhdG9yAFByb3h5AFByb21pc2UAUHJvbWlzZVJlc29sdmVGdW5jdGlvbgBQcm9taXNlUmVqZWN0RnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBBc3luY0Z1bmN0aW9uUmVzb2x2ZQBBc3luY0Z1bmN0aW9uUmVqZWN0AEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AQXN5bmNHZW5lcmF0b3IARXZhbEVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAU3ludGF4RXJyb3IAVHlwZUVycm9yAFVSSUVycm9yAEludGVybmFsRXJyb3IAPGJyYW5kPgBTeW1ib2wudG9QcmltaXRpdmUAU3ltYm9sLml0ZXJhdG9yAFN5bWJvbC5tYXRjaABTeW1ib2wubWF0Y2hBbGwAU3ltYm9sLnJlcGxhY2UAU3ltYm9sLnNlYXJjaABTeW1ib2wuc3BsaXQAU3ltYm9sLnRvU3RyaW5nVGFnAFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUAU3ltYm9sLmhhc0luc3RhbmNlAFN5bWJvbC5zcGVjaWVzAFN5bWJvbC51bnNjb3BhYmxlcwBTeW1ib2wuYXN5bmNJdGVyYXRvcgAAKG5ld19oYXNoX3NpemUgJiAobmV3X2hhc2hfc2l6ZSAtIDEpKSA9PSAwAEpTX1Jlc2l6ZUF0b21IYXNoAGF0b20gPCBydC0+YXRvbV9zaXplAF9fSlNfQXRvbVRvVmFsdWUAc2gtPmhlYWRlci5yZWZfY291bnQgPT0gMABqc19mcmVlX3NoYXBlMABpICE9IDAASlNfRnJlZUF0b21TdHJ1Y3QAcnQtPmF0b21fY291bnQgPj0gMABwLT5yZWZfY291bnQgPT0gMABmcmVlX3plcm9fcmVmY291bnQAcy0+aXNfd2VhawByZXNldF93ZWFrX3JlZgAhbXItPmVtcHR5AAEAAAAFAAEUBQABFQUAARUFAAEXBQABFwEAAQABAAEAAQABAAEAAQABAAEAAQABAAIAAQUDAAEKAQEAAAECAQABAwIAAQECAAECAwABAgQAAQMGAAECAwABAwQAAQQFAAEDAwABBAQAAQUFAAECAgABBAQAAQMDAAEDAwABBAQAAQUFAAMCAQ0DAQENAwEADQMCAQ0DAgANAwABDQMDAQoBAQAAAQAAAAEBAgABAAAAAQICAAECAAABAQAAAQEAAAYAABgFAQEPAwIBCgECAQABAQEAAQEBAAUAARcFAAEXBQABFwUBABcFAQAXBQIAFwECAwABAwAABgAAGAYAABgGAQAYBQEBFwUBAhcFAgAXAQIBAAEDAAABAwEAAQIBAAECAgABAwAAAQMBAAEEAAAFAgEXBQEBFwECAgABAgEAAQICAAEDAgABAwIAAgMDBQYCARgCAwEFBgICGAYDAxgDAAEQAwEAEAMBARADAAERAwEAEQMBAREDAAESAwEAEgMBARIDAAAQAwABEAMBABADAQAQAwABEgMBABIDAQASAwAAEAUBABYFAQAWBQAAFgUAARYFAAAWAQEAAAEBAQABAQEAAQICAAoBABoKAgEaCgEAGgoBABoKAQAaCgEAGgcAAhkHAAIZBwACGQUAAhcBAQEAAQEDAAEBAwABAQMAAgMFBQEBAQABAQIAAQMAAAEEBAABBAQAAgQFBQEAAAABAQIAAQECAAEBAgABAQEAAQEBAAEBAQABAQEAAQEBAAEBAgABAQIAAgAABwIAAAcCAQAHAQEBAAEBAQABAQEAAQIBAAUAARcBAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQEBAAEAAAADAAAKAwAACgUAABYHAAEZBwABGQcBABkHAAEZCwACGwcAAhkHAAIZBwEBGQcBAhkHAQEZBQEBEwUAABMBAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQEAAQECAAEGAwABCwIAAQgCAAEIAQABAAIAAQcCAQAHAgEBBwEAAQIBAAECAQABAgEAAQIBAQACAQEAAgEBAAIBAQACAQEBAgEBAQIBAQECAQEBAgEAAQMBAAEDAQABAwEAAQMBAQADAQEAAwEBAAMBAQADAQEBAwEBAQMBAQEDAQEBAwEAAQQBAAEEAQABBAEAAQQBAQAEAQEABAEBAAQBAQAEAQEBBAEBAQQBAQEEAQEBBAEBAQACAQAJAgEACQIAAAkDAAAMAQEBDgEBAQ4BAQEOAQEBDgEBAQABAQEAAQEBAAEBAQBwLT5tYXJrID09IDAAZ2NfZGVjcmVmAHZhcl9yZWYtPmlzX2RldGFjaGVkAG1hcmtfY2hpbGRyZW4AcC0+cmVmX2NvdW50ID4gMABnY19kZWNyZWZfY2hpbGQAZ2Nfc2NhbgBwLT5nY19vYmpfdHlwZSA9PSBKU19HQ19PQkpfVFlQRV9KU19PQkpFQ1QgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfRlVOQ1RJT05fQllURUNPREUAZ2NfZnJlZV9jeWNsZXMASlNfQXRvbUdldFN0clJUADxudWxsPgAhYXRvbV9pc19mcmVlKHApAGNpcmN1bGFyIHByb3RvdHlwZSBjaGFpbgBwcm94eTogYmFkIHByb3RvdHlwZQBwcm94eTogaW5jb25zaXN0ZW50IHByb3RvdHlwZQByZXZva2VkIHByb3h5AG9wZXJhbmQgJ3Byb3RvdHlwZScgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdABpbnRlcnJ1cHRlZAAlcyBpcyBub3QgaW5pdGlhbGl6ZWQAbGV4aWNhbCB2YXJpYWJsZQAAAHEAAAByAAAAcwAAAENvdWxkIG5vdCBmaW5kIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGNpcmN1bGFyIHJlZmVyZW5jZSB3aGVuIGxvb2tpbmcgZm9yIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnIGlzIGFtYmlndW91cwAocHItPnUuaW5pdC5yZWFsbV9hbmRfaWQgJiAzKSA9PSAwAEpTX0RlZmluZUF1dG9Jbml0UHJvcGVydHkAJyVzJyBpcyBub3QgZGVmaW5lZABudW1faW5kZXggPT0gbnVtX2tleXNfY291bnQASlNfR2V0T3duUHJvcGVydHlOYW1lc0ludGVybmFsAHN0cl9pbmRleCA9PSBudW1fa2V5c19jb3VudCArIHN0cl9rZXlzX2NvdW50AHN5bV9pbmRleCA9PSBhdG9tX2NvdW50AEpTX0F0b21Jc0FycmF5SW5kZXgAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAG51bV9rZXlzX2NtcABqc19nZXRfYXRvbV9pbmRleABub3QgY29uZmlndXJhYmxlAG5vIHNldHRlciBmb3IgcHJvcGVydHkAJyVzJyBpcyByZWFkLW9ubHkAcC0+c2hhcGUtPmhlYWRlci5yZWZfY291bnQgPT0gMQBhZGRfcHJvcGVydHkAJWxsZABjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAdmFyX3JlZi0+aGVhZGVyLnJlZl9jb3VudCA+IDAAZnJlZV92YXJfcmVmAEpTX0F0b21Jc051bWVyaWNJbmRleDEAAG4AZgBpAG4AaQB0AHkAbmZpbml0eQAhc2gtPmlzX2hhc2hlZABjb21wYWN0X3Byb3BlcnRpZXMAbmV3X3NpemUgPD0gc2gtPnByb3Bfc2l6ZQBqID09IChzaC0+cHJvcF9jb3VudCAtIHNoLT5kZWxldGVkX3Byb3BfY291bnQpACVzIG9iamVjdCBleHBlY3RlZABjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gbnVtYmVyAHRvUHJpbWl0aXZlAEluZmluaXR5AGludmFsaWQgYXJyYXkgbGVuZ3RoAE5hTgAlLipmAG4gPCBidWZfc2l6ZQBqc19mY3Z0MQAlKy4qZQBtdXN0IGJlIGNhbGxlZCB3aXRoIG5ldwBub3QgYSBmdW5jdGlvbgBkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2xhc3MgY29uc3RydWN0b3JzIG11c3QgYmUgaW52b2tlZCB3aXRoICduZXcnAHVuc3VwcG9ydGVkIHJlZmVyZW5jZSB0byAnc3VwZXInAGl0ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSB0aHJvdyBtZXRob2QAaW52YWxpZCB0aHJvdyB2YXIgdHlwZSAlZAAndGhpcycgY2FuIGJlIGluaXRpYWxpemVkIG9ubHkgb25jZQBpbnZhbGlkIHJldCB2YWx1ZQBpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAaXRlcmF0b3JfY2xvc2VfcmV0dXJuAHZhbHVlIGhhcyBubyBwcm9wZXJ0eQBpbnZhbGlkIG9wY29kZTogcGM9JXUgb3Bjb2RlPTB4JTAyeAAADQAQAC0AMQBpbXBvcnQubWV0YSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29udGV4dABleHBlY3RpbmcgPGJyYW5kPiBwcml2YXRlIGZpZWxkAGludmFsaWQgYnJhbmQgb24gb2JqZWN0AHJlZGVjbGFyYXRpb24gb2YgJyVzJwA8aW5wdXQ+AG5vdCBhIG9iamVjdAB0b28gbWFueSBhcmd1bWVudHMAc3RyaW5nIGV4cGVjdGVkAG5vIGZ1bmN0aW9uIGZpbGVuYW1lIGZvciBpbXBvcnQoKQBjYW5ub3QgZGVmaW5lIHZhcmlhYmxlICclcycAdmFsdWUgaXMgbm90IGl0ZXJhYmxlACFfX0pTX0F0b21Jc1RhZ2dlZEludChkZXNjcikASlNfTmV3U3ltYm9sRnJvbUF0b20AZGVzY3IgPCBydC0+YXRvbV9zaXplAG5vdCBhIHN5bWJvbABwcml2YXRlIGNsYXNzIGZpZWxkICclcycgZG9lcyBub3QgZXhpc3QAcHJpdmF0ZSBjbGFzcyBmaWVsZCAnJXMnIGFscmVhZHkgZXhpc3RzAFsAXQBnZXQgAHNldCAAcGFyZW50IGNsYXNzIG11c3QgYmUgY29uc3RydWN0b3IAcGFyZW50IHByb3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCBvciBudWxsAGItPmZ1bmNfa2luZCA9PSBKU19GVU5DX05PUk1BTABqc19vcF9kZWZpbmVfY2xhc3MAcmVjZWl2ZXIgaXMgbm90IGFuIG9iamVjdABzZXR0ZXIgaXMgZm9yYmlkZGVuAGludmFsaWQgaW5kZXggZm9yIGFwcGVuZABudWxsIG9yIHVuZGVmaW5lZCBhcmUgZm9yYmlkZGVuAGludmFsaWQgJ2luJyBvcGVyYW5kAG5vdCBhIGNvbnN0cnVjdG9yACAgICBhdCAlcwA6JWQAPGFub255bW91cz4AICglcwAgKG5hdGl2ZSkAZHVwbGljYXRlIGV4cG9ydGVkIG5hbWUgJyVzJwBjb3VsZCBub3QgbG9hZCBtb2R1bGUgJyVzJwAuAC4uAGJ5dGVjb2RlIGZ1bmN0aW9uIGV4cGVjdGVkAGV2YWwgaXMgbm90IHN1cHBvcnRlZABjaXJjdWxhciByZWZlcmVuY2UAZ2V0ICVzAHNldCAlcwBjYW5ub3QgY29udmVydCB0byBvYmplY3QAbm9ybWFsaXplAEHAzgAL9QEsJwAAAwAAAAAAAAB0AAAAYmFkIG5vcm1hbGl6YXRpb24gZm9ybQBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncwAlcwBmbGFncwBzb3VyY2UAZ2xvYmFsAGlnbm9yZUNhc2UAbXVsdGlsaW5lAGRvdEFsbAB1bmljb2RlAHN0aWNreQBleGVjAGNvbXBpbGUAdGVzdAB0b1N0cmluZwBbU3ltYm9sLnJlcGxhY2VdAFtTeW1ib2wubWF0Y2hdAFtTeW1ib2wubWF0Y2hBbGxdAFtTeW1ib2wuc2VhcmNoXQBbU3ltYm9sLnNwbGl0XQBBwNAAC+ADiycAAAEBAAB1AAAAAAAAAJEnAAABAQAAdgAAAAAAAACYJwAAAQIBAHcAAAAAAAAAnycAAAECAgB3AAAAAAAAAKonAAABAgQAdwAAAAAAAAC0JwAAAQIIAHcAAAAAAAAAuycAAAECEAB3AAAAAAAAAMMnAAABAiAAdwAAAAAAAADKJwAAAwAAAAEAAAAwAAAAzycAAAMAAAACAAAAeAAAANcnAAADAAAAAQAAAHkAAADcJwAAAwAAAAAAAAB6AAAA5ScAAAMAAAACAAAAewAAAPYnAAADAAAAAQAAAHwAAAAFKAAAAwAAAAEAAAB9AAAAFygAAAMAAAABAAAAfgAAACcoAAADAAAAAgAAAH8AAAAoPzopAG91dCBvZiBtZW1vcnkgaW4gcmVnZXhwIGV4ZWN1dGlvbgBmbGFncyBtdXN0IGJlIHVuZGVmaW5lZABSZWdFeHAgZXhlYyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwAbm90IGEgc3RyaW5nAHkAW1N5bWJvbC5zcGVjaWVzXQDPKQAAAQEAAIAAAAAAAAAAbmV4dABbU3ltYm9sLnRvU3RyaW5nVGFnXQBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAEGw1AAL1wrwKQAAAwAAAAAMAACBAAAA9SkAAAEDAAAKKgAAAAAAAHVuZXhwZWN0ZWQgZW5kIG9mIGNvbW1lbnQAdW5leHBlY3RlZCBjaGFyYWN0ZXIAaW52YWxpZCBjaGFyYWN0ZXIgaW4gYSBKU09OIHN0cmluZwBvY3RhbCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZQBtYWxmb3JtZWQgZXNjYXBlIHNlcXVlbmNlIGluIHN0cmluZyBsaXRlcmFsAGludmFsaWQgVVRGLTggc2VxdWVuY2UAdW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nAGV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lAHVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0AHVuZXhwZWN0ZWQgdG9rZW46ICclLipzJwBleHBlY3RpbmcgJyVjJwAgAFx1JTA0eABBcnJheSBsb28gbG9uZwBKU09OAAAAAAAAAACkKwAAAwgAANArAAADAAAAcGFyc2UAc3RyaW5naWZ5AMArAAADAAAAAgAAAIIAAADGKwAAAwAAAAMAAACDAAAA9SkAAAEDAACkKwAAAAAAAHByb3h5OiBpbmNvbnNpc3RlbnQgaXNFeHRlbnNpYmxlAHByb3h5OiBpbmNvbnNpc3RlbnQgcHJldmVudEV4dGVuc2lvbnMAcHJveHk6IGluY29uc2lzdGVudCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAaW52YWxpZCBnZXR0ZXIAaW52YWxpZCBzZXR0ZXIAY2Fubm90IGhhdmUgc2V0dGVyL2dldHRlciBhbmQgdmFsdWUgb3Igd3JpdGFibGUAcHJveHk6IHByb3BlcnRpZXMgbXVzdCBiZSBzdHJpbmdzIG9yIHN5bWJvbHMAcHJveHk6IGR1cGxpY2F0ZSBwcm9wZXJ0eQBwcm94eTogdGFyZ2V0IHByb3BlcnR5IG11c3QgYmUgcHJlc2VudCBpbiBwcm94eSBvd25LZXlzAHByb3h5OiBwcm9wZXJ0eSBub3QgcHJlc2VudCBpbiB0YXJnZXQgd2VyZSByZXR1cm5lZCBieSBub24gZXh0ZW5zaWJsZSBwcm94eQBwcm94eTogaW5jb25zaXN0ZW50IGRlbGV0ZVByb3BlcnR5AHByb3h5OiBkZWZpbmVQcm9wZXJ0eSBleGNlcHRpb24AcHJveHk6IGluY29uc2lzdGVudCBkZWZpbmVQcm9wZXJ0eQBwcm94eTogaW5jb25zaXN0ZW50IGhhcwBwcm94eTogaW5jb25zaXN0ZW50IGdldABwcm94eTogaW5jb25zaXN0ZW50IHNldABwcm94eTogY2Fubm90IHNldCBwcm9wZXJ0eQByZXZvY2FibGUAVi4AAAMAAAACAAAAhAAAAHNldABnZXQAaGFzAGRlbGV0ZQBjbGVhcgBzaXplAGZvckVhY2gAdmFsdWVzAGtleXMAZW50cmllcwBbU3ltYm9sLml0ZXJhdG9yXQBNYXAAcC4AAAMAAAACAQAAhQAAAHQuAAADAAAAAQEAAIYAAAB4LgAAAwAAAAEBAACHAAAAfC4AAAMAAAABAQAAiAAAAIMuAAADAAAAAAEAAIkAAACJLgAAAQIAAIoAAAAAAAAAji4AAAMAAAABAQAAiwAAAJYuAAADAAQAAAEAAIwAAACdLgAAAwAAAAABAACMAAAAoi4AAAMACAAAAQAAjAAAAKouAAADCQAAoi4AAP/////1KQAAAQMAALwuAAAAAAAAYWRkAFNldABBkN8AC7cBgC8AAAMAAQABAQAAhQAAAHguAAADAAEAAQEAAIcAAAB8LgAAAwABAAEBAACIAAAAgy4AAAMAAQAAAQAAiQAAAIkuAAABAgEAigAAAAAAAACOLgAAAwABAAEBAACLAAAAli4AAAMAAQAAAQAAjAAAAJ0uAAADCQAAli4AAP////+qLgAAAwkAAJYuAAD/////oi4AAAMACQAAAQAAjAAAAPUpAAABAwAAhC8AAAAAAABXZWFrTWFwAEHQ4AALV3AuAAADAAIAAgEAAIUAAAB0LgAAAwACAAEBAACGAAAAeC4AAAMAAgABAQAAhwAAAHwuAAADAAIAAQEAAIgAAAD1KQAAAQMAAEAwAAAAAAAAV2Vha1NldABBsOEAC4IDgC8AAAMAAwABAQAAhQAAAHguAAADAAMAAQEAAIcAAAB8LgAAAwADAAEBAACIAAAA9SkAAAEDAACgMAAAAAAAAE1hcCBJdGVyYXRvcgAAAADwKQAAAwAAAAAMAACNAAAA9SkAAAEDAADwMAAAAAAAAHMgIT0gTlVMTABqc19tYXBfaXRlcmF0b3JfbmV4dABTZXQgSXRlcmF0b3IAAAAAAPApAAADAAEAAAwAAI0AAAD1KQAAAQMAAD8xAAAAAAAAc2V0L2FkZCBpcyBub3QgYSBmdW5jdGlvbgAAAAAAAADPKQAAAQEAAIAAAAAAAAAAcmVzb2x2aW5nIGZ1bmN0aW9uIGFscmVhZHkgc2V0AHByb21pc2Ugc2VsZiByZXNvbHV0aW9uAGFyZ2MgPT0gNQBwcm9taXNlX3JlYWN0aW9uX2pvYgBhcmdjID09IDMAanNfcHJvbWlzZV9yZXNvbHZlX3RoZW5hYmxlX2pvYgB0aGVuAGNhdGNoAGZpbmFsbHkAQcDkAAtmIDIAAAMAAAACAAAAjgAAACUyAAADAAAAAQAAAI8AAAArMgAAAwAAAAEAAACQAAAA9SkAAAEDAAAsDgAAAAAAAHJlc29sdmUAcmVqZWN0AGFsbABhbGxTZXR0bGVkAGFueQByYWNlAEGw5QAL1gGAMgAAAwAAAAEBAACRAAAAiDIAAAMAAQABAQAAkQAAAI8yAAADAAAAAQEAAJIAAACTMgAAAwABAAEBAACSAAAAnjIAAAMAAgABAQAAkgAAAKIyAAADAAAAAQAAAJMAAADPKQAAAQEAAIAAAAAAAAAAcmVqZWN0ZWQAZnVsZmlsbGVkAGFzeW5jIABmdW5jdGlvbgAgYW5vbnltb3VzKAAKKSB7CgAKfSkAAAAAAAAAAPUpAAABAwAANA4AAAAAAABbU3ltYm9sLmFzeW5jSXRlcmF0b3JdAEGQ5wALkwhwMwAAAwAAAAAAAACUAAAAcmV0dXJuAHRocm93AAAAAPApAAADAAAAAQEAAJUAAACgMwAAAwABAAEBAACVAAAApzMAAAMAAgABAQAAlQAAAG5vdCBhbiBBc3luYy1mcm9tLVN5bmMgSXRlcmF0b3IAQXN5bmNHZW5lcmF0b3IAAPApAAADAAAAAQEAAJYAAACgMwAAAwABAAEBAACWAAAApzMAAAMAAgABAQAAlgAAAPUpAAABAwAAADQAAAAAAABub3QgYW4gQXN5bmNHZW5lcmF0b3Igb2JqZWN0AEpTX0lzVW5kZWZpbmVkKGZ1bmNfcmV0KQBqc19hc3luY19nZW5lcmF0b3JfcmVzdW1lX25leHQAcy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0FXQUlUSU5HX1JFVFVSTiB8fCBzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQ09NUExFVEVEAGpzX2FzeW5jX2dlbmVyYXRvcl9yZXNvbHZlX2Z1bmN0aW9uAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9FWEVDVVRJTkcAAPUpAAABAwAAQg4AAAAAAAB2YWx1ZU9mAFtTeW1ib2wudG9QcmltaXRpdmVdAHRvVVRDU3RyaW5nAHRvR01UU3RyaW5nAHRvSVNPU3RyaW5nAHRvRGF0ZVN0cmluZwB0b1RpbWVTdHJpbmcAdG9Mb2NhbGVTdHJpbmcAdG9Mb2NhbGVEYXRlU3RyaW5nAHRvTG9jYWxlVGltZVN0cmluZwBnZXRUaW1lem9uZU9mZnNldABnZXRUaW1lAGdldFllYXIAZ2V0RnVsbFllYXIAZ2V0VVRDRnVsbFllYXIAZ2V0TW9udGgAZ2V0VVRDTW9udGgAZ2V0RGF0ZQBnZXRVVENEYXRlAGdldEhvdXJzAGdldFVUQ0hvdXJzAGdldE1pbnV0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b2JhbCBpZGVudGlmaWVyIGluIG1vZHVsZSBjb2RlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGdsb2JhbCBpZGVudGlmaWVyAG1pc3NpbmcgZm9ybWFsIHBhcmFtZXRlcgBpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGdldHRlciBvciBzZXR0ZXIAJyVzJyBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgbGV4aWNhbCBpZGVudGlmaWVyAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIHBhcmFtZXRlciBuYW1lAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUAdW5leHBlY3RlZCBlbmQgb2YgcmVnZXhwAHVuZXhwZWN0ZWQgbGluZSB0ZXJtaW5hdG9yIGluIHJlZ2V4cAB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAGFzc2lnbm1lbnQgcmVzdCBwcm9wZXJ0eSBtdXN0IGJlIGxhc3QAaW52YWxpZCBkZXN0cnVjdHVyaW5nIHRhcmdldABtaXNzaW5nIGJpbmRpbmcgcGF0dGVybi4uLgByZXN0IGVsZW1lbnQgY2Fubm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlAHJlc3QgZWxlbWVudCBtdXN0IGJlIHRoZSBsYXN0IG9uZQBpbnZhbGlkIGFzc2lnbm1lbnQgc3ludGF4AHRvbyBjb21wbGljYXRlZCBkZXN0cnVjdHVyaW5nIGV4cHJlc3Npb24AUmVnRXhwIGFyZSBub3Qgc3VwcG9ydGVkACdhcmd1bWVudHMnIGlkZW50aWZpZXIgaXMgbm90IGFsbG93ZWQgaW4gY2xhc3MgZmllbGQgaW5pdGlhbGl6ZXIAZXhwZWN0aW5nIHRhcmdldABuZXcudGFyZ2V0IG9ubHkgYWxsb3dlZCB3aXRoaW4gZnVuY3Rpb25zAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAJ3N1cGVyJyBpcyBvbmx5IHZhbGlkIGluIGEgbWV0aG9kAGludmFsaWQgdXNlIG9mICdzdXBlcicAbWV0YSBleHBlY3RlZABpbXBvcnQubWV0YSBvbmx5IHZhbGlkIGluIG1vZHVsZSBjb2RlAGludmFsaWQgdXNlIG9mICdpbXBvcnQoKScAdW5leHBlY3RlZCB0b2tlbiBpbiBleHByZXNzaW9uOiAnJS4qcycAdGVtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAFRvbyBtYW55IGNhbGwgYXJndW1lbnRzAHByaXZhdGUgY2xhc3MgZmllbGQgZm9yYmlkZGVuIGFmdGVyIHN1cGVyAGV4cGVjdGluZyBmaWVsZCBuYW1lAGV4cGVjdGVkICd9JyBhZnRlciB0ZW1wbGF0ZSBleHByZXNzaW9uAGNsYXNzIHN0YXRlbWVudCByZXF1aXJlcyBhIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAcHJvcGVydHkgY29uc3RydWN0b3IgYXBwZWFycyBtb3JlIHRoYW4gb25jZQBwcml2YXRlIGNsYXNzIGZpZWxkIGlzIGFscmVhZHkgZGVmaW5lZAA8c2V0PgBmZC0+Ynl0ZV9jb2RlLmJ1ZltkZWZpbmVfY2xhc3NfcG9zXSA9PSBPUF9kZWZpbmVfY2xhc3MAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkACgpe3N1cGVyKC4uLmFyZ3VtZW50cyk7fQAoKXt9AGR1cGxpY2F0ZSBfX3Byb3RvX18gcHJvcGVydHkgbmFtZQB1bmV4cGVjdGVkICd5aWVsZCcga2V5d29yZAB5aWVsZCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AmpucnZ6goaKtrq+fY2Fubm90IG1peCA/PyB3aXRoICYmIG9yIHx8AHVuZXhwZWN0ZWQgJ2F3YWl0JyBrZXl3b3JkAGF3YWl0IGluIGRlZmF1bHQgZXhwcmVzc2lvbgB1bnBhcmVudGhlc2l6ZWQgdW5hcnkgZXhwcmVzc2lvbiBjYW4ndCBhcHBlYXIgb24gdGhlIGxlZnQtaGFuZCBzaWRlIG9mICcqKicAY2Fubm90IGRlbGV0ZSBhIGRpcmVjdCByZWZlcmVuY2UgaW4gc3RyaWN0IG1vZGUAY2Fubm90IGRlbGV0ZSBhIHByaXZhdGUgY2xhc3MgZmllbGQAaW52YWxpZCBsdmFsdWUgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCBmb3IgaW4vb2YgbGVmdCBoYW5kLXNpZGUAaW52YWxpZCBpbmNyZW1lbnQvZGVjcmVtZW50IG9wZXJhbmQAaW52YWxpZCBhc3NpZ25tZW50IGxlZnQtaGFuZCBzaWRlAGxhYmVsID49IDAgJiYgbGFiZWwgPCBzLT5sYWJlbF9jb3VudAB1cGRhdGVfbGFiZWwAbHMtPnJlZl9jb3VudCA+PSAwAGludmFsaWQgcHJvcGVydHkgbmFtZQBkdXBsaWNhdGUgcGFyYW1ldGVyIG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dAB5aWVsZCBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAaW52YWxpZCB2YXJpYWJsZSBuYW1lIGluIHN0cmljdCBtb2RlAGludmFsaWQgbGV4aWNhbCB2YXJpYWJsZSBuYW1lAHNwZWNpYWwgPT0gUFVUX0xWQUxVRV9OT0tFRVAgfHwgc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUF9ERVBUSABwdXRfbHZhbHVlAHNldF9vYmplY3RfbmFtZQAidXNlIHN0cmljdCIgbm90IGFsbG93ZWQgaW4gZnVuY3Rpb24gd2l0aCBkZWZhdWx0IG9yIGRlc3RydWN0dXJpbmcgcGFyYW1ldGVyAGludmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgY29kZQBpbnZhbGlkIGFyZ3VtZW50IG5hbWUgaW4gc3RyaWN0IGNvZGUAZHVwbGljYXRlIGFyZ3VtZW50IG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dABpZGVudGlmaWVyIGV4cGVjdGVkAGludmFsaWQgZXhwb3J0IHN5bnRheABmcm9tIGNsYXVzZSBleHBlY3RlZAAnbGV0JyBpcyBub3QgYSB2YWxpZCBsZXhpY2FsIGlkZW50aWZpZXIAbWlzc2luZyBpbml0aWFsaXplciBmb3IgY29uc3QgdmFyaWFibGUAdmFyaWFibGUgbmFtZSBleHBlY3RlZABleHBlY3RpbmcgJ2FzJwBpbnZhbGlkIGltcG9ydCBiaW5kaW5nAGR1cGxpY2F0ZSBpbXBvcnQgYmluZGluZwB0b28gbWFueSBjbG9zdXJlIHZhcmlhYmxlcwBkdXBsaWNhdGUgbGFiZWwgbmFtZQByZXR1cm4gbm90IGluIGEgZnVuY3Rpb24AbGluZSB0ZXJtaW5hdG9yIG5vdCBhbGxvd2VkIGFmdGVyIHRocm93AGxleGljYWwgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAZm9yIGF3YWl0IGlzIG9ubHkgdmFsaWQgaW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9ucwBkdXBsaWNhdGUgZGVmYXVsdABpbnZhbGlkIHN3aXRjaCBzdGF0ZW1lbnQAZXhwZWN0aW5nIGNhdGNoIG9yIGZpbmFsbHkAaW52YWxpZCBrZXl3b3JkOiB3aXRoAGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGNsYXNzIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0ACdmb3IgYXdhaXQnIGxvb3Agc2hvdWxkIGJlIHVzZWQgd2l0aCAnb2YnAGEgZGVjbGFyYXRpb24gaW4gdGhlIGhlYWQgb2YgYSBmb3ItJXMgbG9vcCBjYW4ndCBoYXZlIGFuIGluaXRpYWxpemVyAG9mAGluAGV4cGVjdGVkICdvZicgb3IgJ2luJyBpbiBmb3IgY29udHJvbCBleHByZXNzaW9uAGNvbnRpbnVlIG11c3QgYmUgaW5zaWRlIGxvb3AAYnJlYWsgbXVzdCBiZSBpbnNpZGUgbG9vcCBvciBzd2l0Y2gAYnJlYWsvY29udGludWUgbGFiZWwgbm90IGZvdW5kAHVuc3VwcG9ydGVkIGtleXdvcmQ6ICVzAGNwb29sX2lkeCA+PSAwAGpzX2NyZWF0ZV9mdW5jdGlvbgBzLT5pc19ldmFsIHx8IHMtPmNsb3N1cmVfdmFyX2NvdW50ID09IDAAYWRkX2V2YWxfdmFyaWFibGVzAGV4cG9ydGVkIHZhcmlhYmxlICclcycgZG9lcyBub3QgZXhpc3QAcmVzb2x2ZV92YXJpYWJsZXMAbGFiMSA+PSAwICYmIGxhYjEgPCBzLT5sYWJlbF9jb3VudABiY19idWZbcG9zXSA9PSBPUF9sYWJlbABvcHRpbWl6ZV9zY29wZV9tYWtlX3JlZgBvcHRpbWl6ZV9zY29wZV9tYWtlX2dsb2JhbF9yZWYAdmFyX2tpbmQgIT0gSlNfVkFSX05PUk1BTAByZXNvbHZlX3Njb3BlX3ByaXZhdGVfZmllbGQAdmFyX2tpbmQgPT0gSlNfVkFSX1BSSVZBVEVfU0VUVEVSAHVuZGVmaW5lZCBwcml2YXRlIGZpZWxkICclcycAcy0+bGFiZWxfc2xvdHNbbGFiZWxdLmZpcnN0X3JlbG9jID09IE5VTEwAc2tpcF9kZWFkX2NvZGUAcmVzb2x2ZV9sYWJlbHMAbHMtPmFkZHIgPT0gLTEAZGlmZiA9PSAoaW50MTZfdClkaWZmAGRpZmYgPT0gKGludDhfdClkaWZmAGxhYmVsX3Nsb3RzW2ldLmZpcnN0X3JlbG9jID09IE5VTEwAZmluZF9qdW1wX3RhcmdldABpbnZhbGlkIG9wY29kZSAob3A9JWQsIHBjPSVkKQBieXRlY29kZSBidWZmZXIgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgdW5kZXJmbG93IChvcD0lZCwgcGM9JWQpAHN0YWNrIG92ZXJmbG93IChvcD0lZCwgcGM9JWQpAHVuY29uc2lzdGVudCBzdGFjayBzaXplOiAlZCAlZCAocGM9JWQpAG5hbWUAbWVzc2FnZQAAAADcJwAAAwAAAAAAAACjAAAA0E0AAAMDAABuDgAAAAAAANVNAAADAwAAvgoAAAAAAAA6IABpbnZhbGlkIHByb3BlcnR5IGFjY2VzcwBwcm94eSBwcmV2ZW50RXh0ZW5zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAGNyZWF0ZQBnZXRQcm90b3R5cGVPZgBzZXRQcm90b3R5cGVPZgBkZWZpbmVQcm9wZXJ0eQBkZWZpbmVQcm9wZXJ0aWVzAGdldE93blByb3BlcnR5TmFtZXMAZ2V0T3duUHJvcGVydHlTeW1ib2xzAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycwBpcwBhc3NpZ24Ac2VhbABmcmVlemUAaXNTZWFsZWQAaXNGcm96ZW4AX19nZXRDbGFzcwBmcm9tRW50cmllcwAAAAAAAABaTgAAAwAAAAIAAACkAAAAYU4AAAMAAAABAQAApQAAAHBOAAADAAAAAgAAAKYAAAB/TgAAAwAAAAMBAACnAAAAjk4AAAMAAAACAAAAqAAAAJ9OAAADAAAAAQAAAKkAAACzTgAAAwAAAAEAAACqAAAAnS4AAAMAAAABAQAAqwAAAJYuAAADAAEAAQEAAKsAAACiLgAAAwACAAEBAACrAAAAyU4AAAMAAAABAQAArAAAANZOAAADAAAAAQEAAK0AAADoTgAAAwAAAAIBAACuAAAAAU8AAAMAAAABAAAArwAAABtPAAADAAAAAgAAALAAAAAeTwAAAwAAAAIAAACxAAAAJU8AAAMAAAABAQAAsgAAACpPAAADAAEAAQEAALIAAAAxTwAAAwAAAAEBAACzAAAAOk8AAAMAAQABAQAAswAAAENPAAADAAAAAQAAALQAAABOTwAAAwAAAAEAAAC1AAAAbm90IGEgcHJvdG90eXBlAGhhc093blByb3BlcnR5AGlzUHJvdG90eXBlT2YAcHJvcGVydHlJc0VudW1lcmFibGUAX19wcm90b19fAF9fZGVmaW5lR2V0dGVyX18AX19kZWZpbmVTZXR0ZXJfXwBfX2xvb2t1cEdldHRlcl9fAF9fbG9va3VwU2V0dGVyX18A3CcAAAMAAAAAAAAAtgAAAMs1AAADAAAAAAAAALcAAABwNQAAAwAAAAAAAAC4AAAA0FAAAAMAAAABAAAAuQAAAN9QAAADAAAAAQAAALoAAADtUAAAAwAAAAEAAAC7AAAAAlEAAAEBAAC8AAAAvQAAAAxRAAADAAAAAgEAAL4AAAAdUQAAAwABAAIBAAC+AAAALlEAAAMAAAABAQAAvwAAAD9RAAADAAEAAQEAAL8AAABOdWxsAFVuZGVmaW5lZABbb2JqZWN0IABjYWxsAGFwcGx5AGJpbmQAW1N5bWJvbC5oYXNJbnN0YW5jZV0AZmlsZU5hbWUAbGluZU51bWJlcgBB4KQBC6UCGFIAAAMAAAABAAAAwAAAAB1SAAADAAAAAgEAAMEAAAAjUgAAAwAAAAEAAADCAAAA3CcAAAMAAAAAAAAAwwAAAChSAAADAAAAAQAAAMQAAAA9UgAAAQEAAMUAAAAAAAAARlIAAAEBAADGAAAAAAAAAGJvdW5kIABmdW5jdGlvbiAAZnVuY3Rpb24gKgBhc3luYyBmdW5jdGlvbiAAYXN5bmMgZnVuY3Rpb24gKgAoKSB7CiAgICBbbmF0aXZlIGNvZGVdCn0ARXZhbEVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAU3ludGF4RXJyb3IAVHlwZUVycm9yAFVSSUVycm9yAEludGVybmFsRXJyb3IAQWdncmVnYXRlRXJyb3IAQZCnAQuGBqouAAADAAAAAAAAAJQAAABjb25jYXQAZXZlcnkAc29tZQBtYXAAZmlsdGVyAHJlZHVjZQByZWR1Y2VSaWdodABmaWxsAGZpbmQAZmluZEluZGV4AGluZGV4T2YAbGFzdEluZGV4T2YAaW5jbHVkZXMAam9pbgBwb3AAcHVzaABzaGlmdAB1bnNoaWZ0AHJldmVyc2UAc29ydABzbGljZQBzcGxpY2UAY29weVdpdGhpbgBmbGF0TWFwAGZsYXQAAKBTAAADAAAAAQAAAMcAAACnUwAAAwAAAAEBAADIAAAArVMAAAMAAQABAQAAyAAAAI4uAAADAAIAAQEAAMgAAACyUwAAAwADAAEBAADIAAAAtlMAAAMABAABAQAAyAAAAL1TAAADAAAAAQEAAMkAAADEUwAAAwABAAEBAADJAAAA0FMAAAMAAAABAAAAygAAANVTAAADAAAAAQEAAMsAAADaUwAAAwABAAEBAADLAAAA5FMAAAMAAAABAAAAzAAAAOxTAAADAAAAAQAAAM0AAAD4UwAAAwAAAAEAAADOAAAAAVQAAAMAAAABAQAAzwAAANwnAAADAAAAAAAAANAAAADLNQAAAwABAAABAADPAAAABlQAAAMAAAAAAQAA0QAAAApUAAADAAAAAQEAANIAAAAPVAAAAwABAAABAADRAAAAFVQAAAMAAQABAQAA0gAAAB1UAAADAAAAAAAAANMAAAAlVAAAAwAAAAEAAADUAAAAKlQAAAMAAAACAQAA1QAAADBUAAADAAEAAgEAANUAAAA3VAAAAwAAAAIAAADWAAAAQlQAAAMAAQABAQAA1wAAAEpUAAADAAAAAAEAANcAAACWLgAAAwABAAABAAApAAAAqi4AAAMJAACWLgAA/////50uAAADAAAAAAEAACkAAACiLgAAAwACAAABAAApAAAAVHlwZWRBcnJheSBsZW5ndGggaXMgdG9vIHNtYWxsAGVtcHR5IGFycmF5AEFycmF5IHRvbyBsb25nAGlzQXJyYXkAZnJvbQBBoK0BC9YDilYAAAMAAAABAAAA2AAAAJJWAAADAAAAAQAAANkAAABGSgAAAwAAAAAAAADaAAAAzykAAAEBAACAAAAAAAAAAEFycmF5IEl0ZXJhdG9yAADwKQAAAwAAAAAMAAAqAAAA9SkAAAEDAADgVgAAAAAAAHBhcnNlSW50AHBhcnNlRmxvYXQAaXNOYU4AaXNGaW5pdGUAZGVjb2RlVVJJAGRlY29kZVVSSUNvbXBvbmVudABlbmNvZGVVUkkAZW5jb2RlVVJJQ29tcG9uZW50AGVzY2FwZQB1bmVzY2FwZQB1bmRlZmluZWQAX19kYXRlX2Nsb2NrAGNhbGxFeHRlcm5hbEZ1bmN0aW9uAGR1bXAAAAAQVwAAAwAAAAIAAADbAAAAGVcAAAMAAAABAAAA3AAAACRXAAADAAAAAQAAAN0AAAAqVwAAAwAAAAEAAADeAAAAM1cAAAMAAAABAQAA3wAAAD1XAAADAAEAAQEAAN8AAABQVwAAAwAAAAEBAADgAAAAWlcAAAMAAQABAQAA4AAAAG1XAAADAAAAAQAAAOEAAAB0VwAAAwAAAAEAAADiAAAAtCEAAAAGAAAAAAAAAADwf9IhAAAABgAAAAAAAAAA+H99VwAAAAcAQYCxAQuyAYdXAAADAAAAAAAAAOMAAACUVwAAAwAAAAIAAADkAAAAqVcAAAMAAAACAAAA5QAAAG1hbGZvcm1lZCBVVEYtOABleHBlY3RpbmcgJSUAZXhwZWN0aW5nIGhleCBkaWdpdAA7Lz86QCY9KyQsIwBpbnZhbGlkIGNoYXJhY3RlcgBleHBlY3Rpbmcgc3Vycm9nYXRlIHBhaXIALV8uIX4qJygpADAxMjM0NTY3ODlBQkNERUYAQcCyAQuSAUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5QCpfKy0uLwA8Y2FsbEV4dGVybmFsRnVuY3Rpb24+AGludmFsaWQgb2JqZWN0IHR5cGUAdG9FeHBvbmVudGlhbAB0b0ZpeGVkAHRvUHJlY2lzaW9uAEHgswEL1gSxWQAAAwAAAAEAAADmAAAAv1kAAAMAAAABAAAA5wAAAMdZAAADAAAAAQAAAOgAAADcJwAAAwAAAAEBAADpAAAAyzUAAAMAAQAAAQAA6QAAAHA1AAADAAAAAAAAAOoAAABpbnZhbGlkIG51bWJlciBvZiBkaWdpdHMAbm90IGEgbnVtYmVyAHJhZGl4IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNgBpc0ludGVnZXIAaXNTYWZlSW50ZWdlcgBNQVhfVkFMVUUATUlOX1ZBTFVFAE5FR0FUSVZFX0lORklOSVRZAFBPU0lUSVZFX0lORklOSVRZAEVQU0lMT04ATUFYX1NBRkVfSU5URUdFUgBNSU5fU0FGRV9JTlRFR0VSAAAQVwAAAwkAABBXAAAAAAAAGVcAAAMJAAAZVwAAAAAAACRXAAADAAAAAQAAAOsAAAAqVwAAAwAAAAEAAADsAAAAhVoAAAMAAAABAAAA7QAAAI9aAAADAAAAAQAAAO4AAACdWgAAAAYAAP///////+9/p1oAAAAGAAABAAAAAAAAANIhAAAABgAAAAAAAAAA+H+xWgAAAAYAAAAAAAAAAPD/w1oAAAAGAAAAAAAAAADwf9VaAAAABgAAAAAAAAAAsDzdWgAAAAYAAP///////z9D7loAAAAGAAD///////8/w9wnAAADAAAAAAAAAO8AAABwNQAAAwAAAAAAAADwAAAAbm90IGEgYm9vbGVhbgBTeW1ib2woACkAZnJvbUNoYXJDb2RlAGZyb21Db2RlUG9pbnQAcmF3AEHAuAELpgMYXAAAAwAAAAEAAADxAAAAJVwAAAMAAAABAAAA8gAAADNcAAADAAAAAQAAAPMAAABpbnZhbGlkIGNvZGUgcG9pbnQAbGVuZ3RoAGNoYXJDb2RlQXQAY2hhckF0AGNvZGVQb2ludEF0AGVuZHNXaXRoAHN0YXJ0c1dpdGgAbWF0Y2gAbWF0Y2hBbGwAc2VhcmNoAHNwbGl0AHN1YnN0cmluZwBzdWJzdHIAcmVwZWF0AHJlcGxhY2UAcmVwbGFjZUFsbABwYWRFbmQAcGFkU3RhcnQAdHJpbQB0cmltRW5kAHRyaW1SaWdodAB0cmltU3RhcnQAdHJpbUxlZnQAX19xdW90ZQBsb2NhbGVDb21wYXJlAHRvTG93ZXJDYXNlAHRvVXBwZXJDYXNlAHRvTG9jYWxlTG93ZXJDYXNlAHRvTG9jYWxlVXBwZXJDYXNlAGFuY2hvcgBiaWcAYmxpbmsAYm9sZABmaXhlZABmb250Y29sb3IAZm9udHNpemUAaXRhbGljcwBsaW5rAHNtYWxsAHN0cmlrZQBzdWIAc3VwAINcAAABBABB8LsBC5QIilwAAAMAAAABAAAA9AAAAJVcAAADAAAAAQAAAPUAAACgUwAAAwAAAAEAAAD2AAAAnFwAAAMAAAABAAAA9wAAAORTAAADAAAAAQEAAPgAAADsUwAAAwABAAEBAAD4AAAA+FMAAAMAAAABAQAA+QAAAKhcAAADAAIAAQEAAPkAAACxXAAAAwABAAEBAAD5AAAAvFwAAAMAxAABAQAA+gAAAMJcAAADAMUAAQEAAPoAAADLXAAAAwDHAAEBAAD6AAAA0lwAAAMAAAACAAAA+wAAANhcAAADAAAAAgAAAPwAAADiXAAAAwAAAAIAAAD9AAAAKlQAAAMAAAACAAAA/gAAAOlcAAADAAAAAQAAAP8AAADwXAAAAwAAAAIBAAAAAQAA+FwAAAMAAQACAQAAAAEAAANdAAADAAEAAQEAAAEBAAAKXQAAAwAAAAEBAAABAQAAE10AAAMAAwAAAQAAAgEAABhdAAADAAIAAAEAAAIBAAAgXQAAAwkAABhdAAD/////Kl0AAAMAAQAAAQAAAgEAADRdAAADCQAAKl0AAP/////cJwAAAwAAAAAAAAADAQAAcDUAAAMAAAAAAAAAAwEAAD1dAAADAAAAAQAAAAQBAABFXQAAAwAAAAEAAAAFAQAAU10AAAMAAQAAAQAABgEAAF9dAAADAAAAAAEAAAYBAABrXQAAAwABAAABAAAGAQAAfV0AAAMAAAAAAQAABgEAAKouAAADAAUAAAEAACkAAACPXQAAAwAAAAEBAAAHAQAAll0AAAMAAQAAAQAABwEAAJpdAAADAAIAAAEAAAcBAACgXQAAAwADAAABAAAHAQAApV0AAAMABAAAAQAABwEAAKtdAAADAAUAAQEAAAcBAAC1XQAAAwAGAAEBAAAHAQAAvl0AAAMABwAAAQAABwEAAMZdAAADAAgAAQEAAAcBAADLXQAAAwAJAAABAAAHAQAA0V0AAAMACgAAAQAABwEAANhdAAADAAsAAAEAAAcBAADcXQAAAwAMAAABAAAHAQAAcmVnZXggbm90IHN1cHBvcnRlZABnAHJlZ2V4cCBtdXN0IGhhdmUgdGhlICdnJyBmbGFnAGludmFsaWQgcmVwZWF0IGNvdW50AAAAAAAAAACoYQAA0E0AAJZdAAAAAAAAml0AAAAAAACqYQAAAAAAAKxhAAAAAAAAr2EAALRhAACvYQAAiS4AALphAAAAAAAAqGEAALxhAADLXQAAAAAAANFdAAAAAAAA2F0AAAAAAADcXQAAAAAAAGEAYgB0dABmb250AGNvbG9yAGkAaHJlZgA9IgAmcXVvdDsAPC8AU3RyaW5nIEl0ZXJhdG9yAAAA8CkAAAMAAAAADAAACAEAAPUpAAABAwAAzmEAAAAAAABNYXRoAEGRxAELtgdiAAADCAAAAGMAACwAAABtaW4AbWF4AGFicwBmbG9vcgBjZWlsAHJvdW5kAHNxcnQAYWNvcwBhc2luAGF0YW4AYXRhbjIAY29zAGV4cABsb2cAcG93AHNpbgB0YW4AdHJ1bmMAc2lnbgBjb3NoAHNpbmgAdGFuaABhY29zaABhc2luaABhdGFuaABleHBtMQBsb2cxcABsb2cyAGxvZzEwAGNicnQAaHlwb3QAcmFuZG9tAGZyb3VuZABpbXVsAGNsejMyAEUATE4xMABMTjIATE9HMkUATE9HMTBFAFBJAFNRUlQxXzIAU1FSVDIAACBiAAADAAAAAgEAAAkBAAAkYgAAAwABAAIBAAAJAQAAKGIAAAMAAAABBgAACgEAACxiAAADAAAAAQYAAAsBAAAyYgAAAwAAAAEGAAAMAQAAN2IAAAMAAAABBgAADQEAAD1iAAADAAAAAQYAAA4BAABCYgAAAwAAAAEGAAAPAQAAR2IAAAMAAAABBgAAEAEAAExiAAADAAAAAQYAABEBAABRYgAAAwAAAAIHAAASAQAAV2IAAAMAAAABBgAAEwEAAFtiAAADAAAAAQYAABQBAABfYgAAAwAAAAEGAAAVAQAAY2IAAAMAAAACBwAAFgEAAGdiAAADAAAAAQYAABcBAABrYgAAAwAAAAEGAAAYAQAAb2IAAAMAAAABBgAAGQEAAHViAAADAAAAAQYAABoBAAB6YgAAAwAAAAEGAAAbAQAAf2IAAAMAAAABBgAAHAEAAIRiAAADAAAAAQYAAB0BAACJYgAAAwAAAAEGAAAeAQAAj2IAAAMAAAABBgAAHwEAAJViAAADAAAAAQYAACABAACbYgAAAwAAAAEGAAAhAQAAoWIAAAMAAAABBgAAIgEAAKdiAAADAAAAAQYAACMBAACsYgAAAwAAAAEGAAAkAQAAsmIAAAMAAAABBgAAJQEAALdiAAADAAAAAgAAACYBAAC9YgAAAwAAAAAAAAAnAQAAxGIAAAMAAAABBgAAKAEAAMtiAAADAAAAAgAAACkBAADQYgAAAwAAAAEAAAAqAQAA9SkAAAEDAAAAYgAAAAAAANZiAAAABgAAaVcUiwq/BUDYYgAAAAYAABZVtbuxawJA3WIAAAAGAADvOfr+Qi7mP+FiAAAABgAA/oIrZUcV9z/nYgAAAAYAAA7lJhV7y9s/7mIAAAAGAAAYLURU+yEJQPFiAAAABgAAzTt/Zp6g5j/5YgAAAAYAAM07f2aeoPY/UmVmbGVjdABB0MsBCzDAZQAAAwgAABBmAAAOAAAAY29uc3RydWN0AGRlbGV0ZVByb3BlcnR5AG93bktleXMAQZDMAQvxAx1SAAADAAAAAwAAACsBAADgZQAAAwAAAAIAAAAsAQAAf04AAAMAAQADAQAApwAAAOplAAADAAAAAgAAAC0BAAB0LgAAAwAAAAIAAAAuAQAA6E4AAAMAAQACAQAArgAAAGFOAAADAAEAAQEAAKUAAAB4LgAAAwAAAAIAAAAvAQAAyU4AAAMAAQABAQAArAAAAPllAAADAAAAAQAAADABAADWTgAAAwABAAEBAACtAAAAcC4AAAMAAAADAAAAMQEAAHBOAAADAAAAAgAAADIBAAD1KQAAAQMAAMBlAAAAAAAAZGVzY3JpcHRpb24AAAAAANwnAAADAAAAAAAAADMBAABwNQAAAwAAAAAAAAA0AQAAeDUAAAMAAAABAAAANAEAAPUpAAABAwAAEA8AAAAAAADwZgAAAQEAADUBAAAAAAAAZm9yAGtleUZvcgAAAAAAAFBnAAADAAAAAQAAADYBAABUZwAAAwAAAAEAAAA3AQAAR2VuZXJhdG9yAAAAAAAAAPApAAADAAAAAQwAADgBAACgMwAAAwABAAEMAAA4AQAApzMAAAMAAgABDAAAOAEAAPUpAAABAwAAgGcAAAAAAABub3QgYSBnZW5lcmF0b3IAY2Fubm90IGludm9rZSBhIHJ1bm5pbmcgZ2VuZXJhdG9yAEGQ0AELV/UpAAABAwAAFw8AAAAAAABpbnZhbGlkIGFycmF5IGJ1ZmZlciBsZW5ndGgAQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWQAbm90IGEgJXMAYnl0ZUxlbmd0aABB8NABC3RdaAAAAQITADkBAAAAAAAAKlQAAAMAEwACAQAAOgEAAPUpAAABAwAANw8AAAAAAABjYW5ub3QgdXNlIGlkZW50aWNhbCBBcnJheUJ1ZmZlcgBuZXcgQXJyYXlCdWZmZXIgaXMgdG9vIHNtYWxsAGlzVmlldwBB8NEBC/AE3mgAAAMAAAABAAAAOwEAAM8pAAABAQAAgAAAAAAAAABdaAAAAQIUADkBAAAAAAAAKlQAAAMAFAACAQAAOgEAAPUpAAABAwAAQw8AAAAAAADPKQAAAQEAAIAAAAAAAAAAYnVmZmVyAGJ5dGVPZmZzZXQAc3ViYXJyYXkAAAAAAACDXAAAAQEAADwBAAAAAAAAUGkAAAECAAA9AQAAAAAAAF1oAAABAgAAPgEAAAAAAABXaQAAAQIAAD8BAAAAAAAAcC4AAAMAAAABAAAAQAEAAJYuAAADAAEAAAEAAEEBAACqLgAAAwkAAJYuAAD/////nS4AAAMAAAAAAQAAQQEAAKIuAAADAAIAAAEAAEEBAAD1KQAAAQEAAEIBAAAAAAAAN1QAAAMAAAACAAAAQwEAAKdTAAADAAgAAQEAAMgAAACtUwAAAwAJAAEBAADIAAAAji4AAAMACgABAQAAyAAAALJTAAADAAsAAQEAAMgAAAC2UwAAAwAMAAEBAADIAAAAvVMAAAMACAABAQAAyQAAAMRTAAADAAkAAQEAAMkAAADQUwAAAwAAAAEAAABEAQAA1VMAAAMAAAABAQAARQEAANpTAAADAAEAAQEAAEUBAAAdVAAAAwAAAAAAAABGAQAAKlQAAAMAAAACAAAARwEAAGJpAAADAAAAAgAAAEgBAAAlVAAAAwAAAAEAAABJAQAAAVQAAAMAAAABAQAASgEAAMs1AAADAAEAAAEAAEoBAADkUwAAAwAAAAEBAABLAQAA7FMAAAMAAQABAQAASwEAAPhTAAADAP//AQEAAEsBAABjYW5ub3QgYmUgY2FsbGVkAEHw1gEL5wGSVgAAAwAAAAEAAABMAQAARkoAAAMAAAAAAAAATQEAAM8pAAABAQAAgAAAAAAAAABpbnZhbGlkIG9mZnNldABpbnZhbGlkIGxlbmd0aABnZXRJbnQ4AGdldFVpbnQ4AGdldEludDE2AGdldFVpbnQxNgBnZXRJbnQzMgBnZXRVaW50MzIAZ2V0RmxvYXQzMgBnZXRGbG9hdDY0AHNldEludDgAc2V0VWludDgAc2V0SW50MTYAc2V0VWludDE2AHNldEludDMyAHNldFVpbnQzMgBzZXRGbG9hdDMyAHNldEZsb2F0NjQAQeDYAQuZA1BpAAABAgEAPQEAAAAAAABdaAAAAQIBAD4BAAAAAAAAV2kAAAECAQA/AQAAAAAAAL5rAAADABYAAQEAAE4BAADGawAAAwAXAAEBAABOAQAAz2sAAAMAGAABAQAATgEAANhrAAADABkAAQEAAE4BAADiawAAAwAaAAEBAABOAQAA62sAAAMAGwABAQAATgEAAPVrAAADABwAAQEAAE4BAAAAbAAAAwAdAAEBAABOAQAAC2wAAAMAFgACAQAATwEAABNsAAADABcAAgEAAE8BAAAcbAAAAwAYAAIBAABPAQAAJWwAAAMAGQACAQAATwEAAC9sAAADABoAAgEAAE8BAAA4bAAAAwAbAAIBAABPAQAAQmwAAAMAHAACAQAATwEAAE1sAAADAB0AAgEAAE8BAAD1KQAAAQMAAHIPAAAAAAAAb3V0IG9mIGJvdW5kAGludmFsaWQgYnl0ZU9mZnNldABpbnZhbGlkIGJ5dGVMZW5ndGgAAAEAAAACAAAAAQAAAAQAAAABAAAAAQAAAAgAAAAQAAAAAQAAACAAQYTcAQvGAwIAAAAAAAAAAQAAAAEAAAABAAAALQAAAC0AAABUAAAAOgAAADoAAAAuAAAA4VIAAOxSAAD8UgAAUAEAAFEBAABQAQAAUgEAAFMBAABUAQAAVQEAAFYBAABXAQAAWAEAAFkBAABYAQAAWgEAAFsBAABcAQAAXQEAAF4BAABfAQAAHw8HAwEAAAAAAAAAgAAAAAAIAAAAAAEAAAAgAAAAAAQBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAAAAAAKAAkADgAgACEAoAChAIAWgRYAIAsgKCAqIC8gMCBfIGAgADABMP/+AP8AQdTfAQuRBBAAAAD+//+H/v//BwAAAAAQAP8D/v//h/7//wdleHRyYW5lb3VzIGNoYXJhY3RlcnMgYXQgdGhlIGVuZAB0b28gbWFueSBpbWJyaWNhdGVkIHF1YW50aWZpZXJzAHN0YWNrIG92ZXJmbG93AHN5bnRheCBlcnJvcgBub3RoaW5nIHRvIHJlcGVhdABpbnZhbGlkIGdyb3VwIG5hbWUAZHVwbGljYXRlIGdyb3VwIG5hbWUAaW52YWxpZCBncm91cAB0b28gbWFueSBjYXB0dXJlcwBleHBlY3RpbmcgZ3JvdXAgbmFtZQBncm91cCBuYW1lIG5vdCBkZWZpbmVkAGludmFsaWQgZGVjaW1hbCBlc2NhcGUgaW4gcmVndWxhciBleHByZXNzaW9uAGJhY2sgcmVmZXJlbmNlIG91dCBvZiByYW5nZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AaW52YWxpZCByZXBldGl0aW9uIGNvdW50AGV4cGVjdGluZyAnJWMnAGludmFsaWQgY2xhc3MgcmFuZ2UAXiRcLiorPygpW117fXwvAGludmFsaWQgZXNjYXBlIHNlcXVlbmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgB1bmV4cGVjdGVkIGVuZABtYWxmb3JtZWQgdW5pY29kZSBjaGFyAAAA4HEAAKBvAADwcQAAAQAwADoAQfDjAQvFAwQAMAA6AEEAWwBfAGAAYQB7AGV4cGVjdGluZyAneycgYWZ0ZXIgXHAAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAGV4cGVjdGluZyAnfScAU2NyaXB0AHNjAFNjcmlwdF9FeHRlbnNpb25zAHVua25vd24gdW5pY29kZSBzY3JpcHQAR2VuZXJhbF9DYXRlZ29yeQBnYwB1bmtub3duIHVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQB0b28gbWFueSByYW5nZXMAAAAAAAEDBQEBAQEFBQUBAgIDBQUBAQECAgMDBQUBBQERb3V0IG9mIG1lbW9yeQBvcGNvZGUgPCBSRU9QX0NPVU5UAC90bXAvcXVpY2tqcy9saWJyZWdleHAuYwBjb21wdXRlX3N0YWNrX3NpemUAKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgBzdGFja19zaXplID4gMAB2YWwgPCBzLT5jYXB0dXJlX2NvdW50AGxyZV9leGVjX2JhY2t0cmFjawB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABBwOcBC6QLMJogAACaMABzgVoAMBdgADAHbACzgW8AABdwAAAHfAAAgX8AQDCAAMMBmACQgZgAQAaZAECQnAC0gaQAQC6lADABvABAhrwAcIG/AAABwAAwgcAAQATBADABwwBAgsMAMILEAECCxQAwAccAMIHHADAByABAgsgAMIHJADABygAAgcoAMAHLADCBywBAAswAAAHNADABzgAwgc4AAAHPADCBzwBABtAAMAHTAECC0wAwgdQAQALWADAB1wBAgtcAMILYAECE2QAwgdsAQALcAEAC3gAAgd8AUAPiAFCD4wBQA+UAQJDmAACB7gBAEu8AtAH4AFCD+ABAAvoAMAH7ADCB+wBAKPwAMAEQAUASEQExAR0BQIIdATCBHgExAR8BAYIfAUCCIAEwgSEBMAEiATCBIgFACiMBAQEoAQGBKAEBASkBAIEpAQABKgEAAisBAIEsAQCBLQEBAS4BAAEwAQGBMAEAgTEBAYEyAQEBMwEAATQBAIE0AQEBNQEBgTUBAQE2AQCBNwEBgTgBAAE5AQCBOgEBgT4BAAFAAQEBQQEAgUEBAYFDAQABRAEAgUQBAAJFAQABRgEAAUkBAYFOAQEBTwFzgaIBQAS4AUACuwEAg70BMIG/ATABwwEwA8QBMAHGATACxwHQAcgBMJHIATCJ0QEAAdYBAIPWAdMB2AEAkdgBcwHhAQCJ4QEAAeYBAILmATCB5wFzAegBc4HoAXOB6gFzAesBAIHrAUAY7AFzAfgBc4H4AQAB+QEAgfkBoAH6AXOB+gFAgvsBMIH8AUAC/QEwg/4BMBAAAjAgCAIAIBgCABAoAkAiMAJANkUC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LFp5eXkAQ29wdGljLENvcHQsUWFhYwBDdW5laWZvcm0sWHN1eABDeXByaW90LENwcnQAQ3lyaWxsaWMsQ3lybABEZXNlcmV0LERzcnQARGV2YW5hZ2FyaSxEZXZhAERpdmVzX0FrdXJ1LERpYWsARG9ncmEsRG9ncgBEdXBsb3lhbixEdXBsAEVneXB0aWFuX0hpZXJvZ2x5cGhzLEVneXAARWxiYXNhbixFbGJhAEVseW1haWMsRWx5bQBFdGhpb3BpYyxFdGhpAEdlb3JnaWFuLEdlb3IAR2xhZ29saXRpYyxHbGFnAEdvdGhpYyxHb3RoAEdyYW50aGEsR3JhbgBHcmVlayxHcmVrAEd1amFyYXRpLEd1anIAR3VuamFsYV9Hb25kaSxHb25nAEd1cm11a2hpLEd1cnUASGFuLEhhbmkASGFuZ3VsLEhhbmcASGFuaWZpX1JvaGluZ3lhLFJvaGcASGFudW5vbyxIYW5vAEhhdHJhbixIYXRyAEhlYnJldyxIZWJyAEhpcmFnYW5hLEhpcmEASW1wZXJpYWxfQXJhbWFpYyxBcm1pAEluaGVyaXRlZCxaaW5oLFFhYWkASW5zY3JpcHRpb25hbF9QYWhsYXZpLFBobGkASW5zY3JpcHRpb25hbF9QYXJ0aGlhbixQcnRpAEphdmFuZXNlLEphdmEAS2FpdGhpLEt0aGkAS2FubmFkYSxLbmRhAEthdGFrYW5hLEthbmEAS2F5YWhfTGksS2FsaQBLaGFyb3NodGhpLEtoYXIAS2htZXIsS2htcgBLaG9qa2ksS2hvagBLaGl0YW5fU21hbGxfU2NyaXB0LEtpdHMAS2h1ZGF3YWRpLFNpbmQATGFvLExhb28ATGF0aW4sTGF0bgBMZXBjaGEsTGVwYwBMaW1idSxMaW1iAExpbmVhcl9BLExpbmEATGluZWFyX0IsTGluYgBMaXN1LExpc3UATHljaWFuLEx5Y2kATHlkaWFuLEx5ZGkATWFrYXNhcixNYWthAE1haGFqYW5pLE1haGoATWFsYXlhbGFtLE1seW0ATWFuZGFpYyxNYW5kAE1hbmljaGFlYW4sTWFuaQBNYXJjaGVuLE1hcmMATWFzYXJhbV9Hb25kaSxHb25tAE1lZGVmYWlkcmluLE1lZGYATWVldGVpX01heWVrLE10ZWkATWVuZGVfS2lrYWt1aSxNZW5kAE1lcm9pdGljX0N1cnNpdmUsTWVyYwBNZXJvaXRpY19IaWVyb2dseXBocyxNZXJvAE1pYW8sUGxyZABNb2RpLE1vZGkATW9uZ29saWFuLE1vbmcATXJvLE1yb28ATXVsdGFuaSxNdWx0AE15YW5tYXIsTXltcgBOYWJhdGFlYW4sTmJhdABOYW5kaW5hZ2FyaSxOYW5kAE5ld19UYWlfTHVlLFRhbHUATmV3YSxOZXdhAE5rbyxOa29vAE51c2h1LE5zaHUATnlpYWtlbmdfUHVhY2h1ZV9IbW9uZyxIbW5wAE9naGFtLE9nYW0AT2xfQ2hpa2ksT2xjawBPbGRfSHVuZ2FyaWFuLEh1bmcAT2xkX0l0YWxpYyxJdGFsAE9sZF9Ob3J0aF9BcmFiaWFuLE5hcmIAT2xkX1Blcm1pYyxQZXJtAE9sZF9QZXJzaWFuLFhwZW8AT2xkX1NvZ2RpYW4sU29nbwBPbGRfU291dGhfQXJhYmlhbixTYXJiAE9sZF9UdXJraWMsT3JraABPcml5YSxPcnlhAE9zYWdlLE9zZ2UAT3NtYW55YSxPc21hAFBhaGF3aF9IbW9uZyxIbW5nAFBhbG15cmVuZSxQYWxtAFBhdV9DaW5fSGF1LFBhdWMAUGhhZ3NfUGEsUGhhZwBQaG9lbmljaWFuLFBobngAUHNhbHRlcl9QYWhsYXZpLFBobHAAUmVqYW5nLFJqbmcAUnVuaWMsUnVucgBTYW1hcml0YW4sU2FtcgBTYXVyYXNodHJhLFNhdXIAU2hhcmFkYSxTaHJkAFNoYXZpYW4sU2hhdwBTaWRkaGFtLFNpZGQAU2lnbldyaXRpbmcsU2dudwBTaW5oYWxhLFNpbmgAU29nZGlhbixTb2dkAFNvcmFfU29tcGVuZyxTb3JhAFNveW9tYm8sU295bwBTdW5kYW5lc2UsU3VuZABTeWxvdGlfTmFncmksU3lsbwBTeXJpYWMsU3lyYwBUYWdhbG9nLFRnbGcAVGFnYmFud2EsVGFnYgBUYWlfTGUsVGFsZQBUYWlfVGhhbSxMYW5hAFRhaV9WaWV0LFRhdnQAVGFrcmksVGFrcgBUYW1pbCxUYW1sAFRhbmd1dCxUYW5nAFRlbHVndSxUZWx1AFRoYWFuYSxUaGFhAFRoYWksVGhhaQBUaWJldGFu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dHRlcgBMdCxUaXRsZWNhc2VfTGV0dGVyAExtLE1vZGlmaWVyX0xldHRlcgBMbyxPdGhlcl9MZXR0ZXIATW4sTm9uc3BhY2luZ19NYXJrAE1jLFNwYWNpbmdfTWFyawBNZSxFbmNsb3NpbmdfTWFyawBOZCxEZWNpbWFsX051bWJlcixkaWdpdABObCxMZXR0ZXJfTnVtYmVyAE5vLE90aGVyX051bWJlcgBTbSxNYXRoX1N5bWJvbABTYyxDdXJyZW5jeV9TeW1ib2wAU2ssTW9kaWZpZXJfU3ltYm9sAFNvLE90aGVyX1N5bWJvbABQYyxDb25uZWN0b3JfUHVuY3R1YXRpb24AUGQsRGFzaF9QdW5jdHVhdGlvbgBQcyxPcGVuX1B1bmN0dWF0aW9uAFBlLENsb3NlX1B1bmN0dWF0aW9uAFBpLEluaXRpYWxfUHVuY3R1YXRpb24AUGYsRmluYWxfUHVuY3R1YXRpb24AUG8sT3RoZXJfUHVuY3R1YXRpb24AWnMsU3BhY2VfU2VwYXJhdG9yAFpsLExpbmVfU2VwYXJhdG9yAFpwLFBhcmFncmFwaF9TZXBhcmF0b3IAQ2MsQ29udHJvbCxjbnRybABDZixGb3JtYXQAQ3MsU3Vycm9nYXRlAENvLFByaXZhdGVfVXNlAExDLENhc2VkX0xldHRlcgBMLExldHRlcgBNLE1hcmssQ29tYmluaW5nX01hcmsATixOdW1iZXIAUyxTeW1ib2wAUCxQdW5jdHVhdGlvbixwdW5jdABaLFNlcGFyYXRvcgBDLE90aGVyAEGAvwILsAgOAAAAPgAAAMABAAAADgAAAPAAAAAAfwAAAIADAQAAPEFTQ0lJX0hleF9EaWdpdCxBSGV4AEJpZGlfQ29udHJvbCxCaWRpX0MARGFzaABEZXByZWNhdGVkLERlcABEaWFjcml0aWMsRGlhAEV4dGVuZGVyLEV4dABIZXhfRGlnaXQsSGV4AElEU19CaW5hcnlfT3BlcmF0b3IsSURTQgBJRFNfVHJpbmFyeV9PcGVyYXRvcixJRFNUAElkZW9ncmFwaGljLElkZW8ASm9pbl9Db250cm9sLEpvaW5fQwBMb2dpY2FsX09yZGVyX0V4Y2VwdGlvbixMT0UATm9uY2hhcmFjdGVyX0NvZGVfUG9pbnQsTkNoYXIAUGF0dGVybl9TeW50YXgsUGF0X1N5bgBQYXR0ZXJuX1doaXRlX1NwYWNlLFBhdF9XUwBRdW90YXRpb25fTWFyayxRTWFyawBSYWRpY2FsAFJlZ2lvbmFsX0luZGljYXRvcixSSQBTZW50ZW5jZV9UZXJtaW5hbCxTVGVybQBTb2Z0X0RvdHRlZCxTRABUZXJtaW5hbF9QdW5jdHVhdGlvbixUZXJtAFVuaWZpZWRfSWRlb2dyYXBoLFVJZGVvAFZhcmlhdGlvbl9TZWxlY3RvcixWUwBXaGl0ZV9TcGFjZSxzcGFjZQBCaWRpX01pcnJvcmVkLEJpZGlfTQBFbW9qaQBFbW9qaV9Db21wb25lbnQsRUNvbXAARW1vamlfTW9kaWZpZXIsRU1vZABFbW9qaV9Nb2RpZmllcl9CYXNlLEVCYXNlAEVtb2ppX1ByZXNlbnRhdGlvbixFUHJlcwBFeHRlbmRlZF9QaWN0b2dyYXBoaWMsRXh0UGljdABEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50LERJAElEX1N0YXJ0LElEUwBDYXNlX0lnbm9yYWJsZSxDSQBBU0NJSQBBbHBoYWJldGljLEFscGhhAEFueQBBc3NpZ25lZABDYXNlZABDaGFuZ2VzX1doZW5fQ2FzZWZvbGRlZCxDV0NGAENoYW5nZXNfV2hlbl9DYXNlbWFwcGVkLENXQ00AQ2hhbmdlc19XaGVuX0xvd2VyY2FzZWQsQ1dMAENoYW5nZXNfV2hlbl9ORktDX0Nhc2Vmb2xkZWQsQ1dLQ0YAQ2hhbmdlc19XaGVuX1RpdGxlY2FzZWQsQ1dUAENoYW5nZXNfV2hlbl9VcHBlcmNhc2VkLENXVQBHcmFwaGVtZV9CYXNlLEdyX0Jhc2UAR3JhcGhlbWVfRXh0ZW5kLEdyX0V4dABJRF9Db250aW51ZSxJREMATG93ZXJjYXNlLExvd2VyAE1hdGgAVXBwZXJjYXNlLFVwcGVyAFhJRF9Db250aW51ZSxYSURDAFhJRF9TdGFydCxYSURTAEHAxwILtCCBACgAlwAqAIGAKgCXwCsAFYEsAJcALQCBQC0AlwAuABVBLgCZAS8AFiAwAEIIQABCikQAQgRKAJYATAAXgUwAQgJNAEJDTgAvwU8AQsNQAL9AUgBCA1MAQglVAEIIWgCWAF4AQkNe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ANEA1wDdAOAA5gD4AAgBCgFzABABEgEUASABLAFEAU0BUwFiAWgBagF2AZIBlAGpAbsBxwHRAdUBuQLXATsA2QHbAbcA4QH8AQwCGAIdAiMCJwKjAzMCPwJCAksCTgJRAl0CYAJpAmwCbwJ1AngCgQKKApwCnwKjAq8CuQLFAskCzQLRAtUC5wLtAvEC9QL5Av0CBQMJAw0DEwMXAxsDIwMnAysDLwM1Az0DQQNJA00DUQMLD1cDWwNfA2MDZwNrA28DcwN5A30DgQOFA4kDjQORA5UDmQOdA6ED3BClA8kDzQPZA90D4QPvA/EDPQRPBJkE8AQCBUoFZAVsBXAFcwWaBfoF/gUHBgsGFAYYBh4GIgYoBo4GlAaYBp4GogarBqwD8watA/YGrgP5Bq8D/AbMA/8GzQMCB84DBQcJBw0HEQeGAzIHNQe5AzcHOweIA1MHiQNWB5ADaweKA3cHsAOJB44DmQefB6MHjAO4B48Duwe0AL4HwAfCBxAgywcuAM0HzwcgANIH1gfbB98H5AfqB/AHIAD2BxIiAQgFCAcIHQglCCcIQwAtCDAIkAE2CDkITgBFCEcITAhOCFEIWgCpA1oAUwhXCGAIaQBiCGUIbwh0CHoIfgiiCEkApAimCKkIVgCrCK0IsAi0CFgAtgi4CLsIwAjCCMUIdgDHCMkIzAjQCHgA0gjUCNcI2wjeCOQI5wjwCPMI9gj5CAIJBgkLCQ8JFAkXCRoJIwksCTsJPglBCUQJRwlKCVYJXAlgCWIJZAloCWoJcAl4CXwJgAmGCYkJjwmRCTAAkwmZCZwJngmhCaQJYS3Na5+fpgmxCbwJxwmVCqEKFQsgACcLMQuNC6ELpQupC60LsQu1C7kLvQvBC8ULIQw1DDkMPQxBDEUMSQxNDFEMVQxZDG8McQxzDKAMvAzcDOQM7Az0DPwMBA0MDRQNIg0uDXoNgg2FDYkNjQ2dDbENtQ28DcINxg0oDiwOMA4yDjYOPA4+DkEOQw5GDncOew6JDo4OlA6cDqMOqQ60Dr4Oxg7KDs8O2Q7dDuQO7A7zDvgOBA8KDxUPGw8iDygPMw89D0UPTA9RD1cPXg9jD2kPcA92D30Pgg+JD40Png+kD6kPrQ+4D74PyQ/QD9YP2g/hD+UP7w/6DwAQBBAJEA8QExAaEB8QIxApEC8QMhA2EDkQPxBFEFkQYRB5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\";if(!S(T)){var ka=T;T=b.locateFile?b.locateFile(ka,t):t+ka}\nfunction la(){var a=T;try{if(a==T&&v)return new Uint8Array(v);if(S(a))try{var c=ma(a.slice(37)),d=new Uint8Array(c.length);for(a=0;a<c.length;++a)d[a]=c.charCodeAt(a);var e=d}catch(g){throw Error(\"Converting base64 string to bytes failed.\");}else e=void 0;var f=e;if(f)return f;throw\"both async and sync fetching of the wasm failed\";}catch(g){w(g)}}\nfunction na(){return v||\"function\"!==typeof fetch?Promise.resolve().then(function(){return la()}):fetch(T,{credentials:\"same-origin\"}).then(function(a){if(!a.ok)throw\"failed to load wasm binary file at '\"+T+\"'\";return a.arrayBuffer()}).catch(function(){return la()})}function V(a){for(;0<a.length;){var c=a.shift();if(\"function\"==typeof c)c(b);else{var d=c.B;\"number\"===typeof d?void 0===c.A?O.get(d)():O.get(d)(c.A):d(void 0===c.A?null:c.A)}}}function W(a){var c=L(a)+1,d=M(c);D(a,E,d,c);return d}\nfunction oa(){}var pa=[null,[],[]];function qa(){function a(k){return(k=k.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?k[1]:\"GMT\"}if(!ra){ra=!0;var c=(new Date).getFullYear(),d=new Date(c,0,1),e=new Date(c,6,1);c=d.getTimezoneOffset();var f=e.getTimezoneOffset(),g=Math.max(c,f);N[sa()>>2]=60*g;N[ta()>>2]=Number(c!=f);d=a(d);e=a(e);d=ba(d);e=ba(e);f<c?(N[X()>>2]=d,N[X()+4>>2]=e):(N[X()>>2]=e,N[X()+4>>2]=d)}}var ra;\noa=(a,c,d)=>{a=H(a);c=null!==c?JSON.parse(H(c)):[];try{const e=b.externalCall(a,c);return e?W(e):null}catch(e){return b.HEAPU8[d]=1,W(e.message)}};\nvar ma=\"function\"===typeof atob?atob:function(a){var c=\"\",d=0;a=a.replace(/[^A-Za-z0-9\\+\\/=]/g,\"\");do{var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));var f=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));var g=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));var k=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));e=e<<2|f>>4;\nf=(f&15)<<4|g>>2;var m=(g&3)<<6|k;c+=String.fromCharCode(e);64!==g&&(c+=String.fromCharCode(f));64!==k&&(c+=String.fromCharCode(m))}while(d<a.length);return c},ua={a:function(a,c,d,e){w(\"Assertion failed: \"+H(a)+\", at: \"+[c?H(c):\"unknown filename\",d,e?H(e):\"unknown function\"])},b:function(){w()},g:oa,f:function(a,c){a=H(a);let d;try{d=window.JSON.parse(a)}catch(e){d=a}0!==c?window.alert(a):window.console.log(\"DUMP\",d)},e:function(a){var c=E.length;a>>>=0;if(2147483648<a)return!1;for(var d=1;4>=d;d*=\n2){var e=c*(1+.2/d);e=Math.min(e,a+100663296);e=Math.max(a,e);0<e%65536&&(e+=65536-e%65536);a:{try{x.grow(Math.min(2147483648,e)-ca.byteLength+65535>>>16);da();var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},d:function(a,c,d,e){for(var f=0,g=0;g<d;g++){for(var k=N[c+8*g>>2],m=N[c+(8*g+4)>>2],y=0;y<m;y++){var l=E[k+y],p=pa[a];0===l||10===l?((1===a?aa:u)(K(p,0)),p.length=0):p.push(l)}f+=m}N[e>>2]=f;return 0},c:function(a){var c=Date.now();N[a>>2]=c/1E3|0;N[a+4>>2]=c%1E3*1E3|0;return 0},h:function(a,\nc){qa();a=new Date(1E3*N[a>>2]);N[c>>2]=a.getSeconds();N[c+4>>2]=a.getMinutes();N[c+8>>2]=a.getHours();N[c+12>>2]=a.getDate();N[c+16>>2]=a.getMonth();N[c+20>>2]=a.getFullYear()-1900;N[c+24>>2]=a.getDay();var d=new Date(a.getFullYear(),0,1);N[c+28>>2]=(a.getTime()-d.getTime())/864E5|0;N[c+36>>2]=-(60*a.getTimezoneOffset());var e=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();d=d.getTimezoneOffset();a=(e!=d&&a.getTimezoneOffset()==Math.min(d,e))|0;N[c+32>>2]=a;a=N[X()+(a?4:0)>>2];N[c+40>>2]=a;\nreturn c},i:function(a){a=H(a);window.console.log(a)},j:function(a,c,d,e){a=H(a);c=H(c);d=H(d);d=`Quickjs -- ${a}: ${c}\\n${d}`;0!==e?window.alert(d):window.console.error(d)}};\n(function(){function a(f){b.asm=f.exports;x=b.asm.k;da();O=b.asm.t;fa.unshift(b.asm.l);P--;b.monitorRunDependencies&&b.monitorRunDependencies(P);0==P&&(null!==Q&&(clearInterval(Q),Q=null),R&&(f=R,R=null,f()))}function c(f){a(f.instance)}function d(f){return na().then(function(g){return WebAssembly.instantiate(g,e)}).then(f,function(g){u(\"failed to asynchronously prepare wasm: \"+g);w(g)})}var e={a:ua};P++;b.monitorRunDependencies&&b.monitorRunDependencies(P);if(b.instantiateWasm)try{return b.instantiateWasm(e,\na)}catch(f){return u(\"Module.instantiateWasm callback failed with error: \"+f),!1}(function(){return v||\"function\"!==typeof WebAssembly.instantiateStreaming||S(T)||\"function\"!==typeof fetch?d(c):fetch(T,{credentials:\"same-origin\"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(c,function(g){u(\"wasm streaming compile failed: \"+g);u(\"falling back to ArrayBuffer instantiation\");return d(c)})})})().catch(n);return{}})();\nb.___wasm_call_ctors=function(){return(b.___wasm_call_ctors=b.asm.l).apply(null,arguments)};b._evalInSandbox=function(){return(b._evalInSandbox=b.asm.m).apply(null,arguments)};b._nukeSandbox=function(){return(b._nukeSandbox=b.asm.n).apply(null,arguments)};b._init=function(){return(b._init=b.asm.o).apply(null,arguments)};b._commFun=function(){return(b._commFun=b.asm.p).apply(null,arguments)};b._dumpMemoryUse=function(){return(b._dumpMemoryUse=b.asm.q).apply(null,arguments)};\nvar M=b._malloc=function(){return(M=b._malloc=b.asm.r).apply(null,arguments)};b._free=function(){return(b._free=b.asm.s).apply(null,arguments)};\nvar X=b.__get_tzname=function(){return(X=b.__get_tzname=b.asm.u).apply(null,arguments)},ta=b.__get_daylight=function(){return(ta=b.__get_daylight=b.asm.v).apply(null,arguments)},sa=b.__get_timezone=function(){return(sa=b.__get_timezone=b.asm.w).apply(null,arguments)},G=b.stackSave=function(){return(G=b.stackSave=b.asm.x).apply(null,arguments)},I=b.stackRestore=function(){return(I=b.stackRestore=b.asm.y).apply(null,arguments)},C=b.stackAlloc=function(){return(C=b.stackAlloc=b.asm.z).apply(null,arguments)};\nb.ccall=B;b.cwrap=function(a,c,d,e){d=d||[];var f=d.every(function(g){return\"number\"===g});return\"string\"!==c&&f&&!e?A(a):function(){return B(a,c,d,arguments,e)}};b.stringToNewUTF8=W;var Y;R=function va(){Y||Z();Y||(R=va)};\nfunction Z(){function a(){if(!Y&&(Y=!0,b.calledRun=!0,!z)){V(fa);V(ha);h(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for(\"function\"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var c=b.postRun.shift();ia.unshift(c)}V(ia)}}if(!(0<P)){if(b.preRun)for(\"function\"==typeof b.preRun&&(b.preRun=[b.preRun]);b.preRun.length;)ja();V(ea);0<P||(b.setStatus?(b.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){b.setStatus(\"\")},1);a()},1)):a())}}b.run=Z;\nif(b.preInit)for(\"function\"==typeof b.preInit&&(b.preInit=[b.preInit]);0<b.preInit.length;)b.preInit.pop()();Z();\n\n\n return Module.ready\n}\n);\n})();\nexport default Module;","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// In mozilla-central, this file is loaded as non-module script,\n// so it mustn't have any dependencies.\n\nclass SandboxSupportBase {\n /**\n * @param {DOMWindow} - win\n */\n constructor(win) {\n this.win = win;\n this.timeoutIds = new Map();\n\n // Will be assigned after the sandbox is initialized\n this.commFun = null;\n }\n\n destroy() {\n this.commFunc = null;\n this.timeoutIds.forEach(([_, id]) => this.win.clearTimeout(id));\n this.timeoutIds = null;\n }\n\n /**\n * @param {Object} val - Export a value in the sandbox.\n */\n exportValueToSandbox(val) {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * @param {Object} val - Import a value from the sandbox.\n */\n importValueFromSandbox(val) {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * @param {String} errorMessage - Create an error in the sandbox.\n */\n createErrorForSandbox(errorMessage) {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * @param {String} name - Name of the function to call in the sandbox\n * @param {Array<Object>} args - Arguments of the function.\n */\n callSandboxFunction(name, args) {\n try {\n args = this.exportValueToSandbox(args);\n this.commFun(name, args);\n } catch (e) {\n this.win.console.error(e);\n }\n }\n\n createSandboxExternals() {\n // All the functions in externals object are called\n // from the sandbox.\n const externals = {\n setTimeout: (callbackId, nMilliseconds) => {\n if (\n typeof callbackId !== \"number\" ||\n typeof nMilliseconds !== \"number\"\n ) {\n return;\n }\n const id = this.win.setTimeout(() => {\n this.timeoutIds.delete(callbackId);\n this.callSandboxFunction(\"timeoutCb\", {\n callbackId,\n interval: false,\n });\n }, nMilliseconds);\n this.timeoutIds.set(callbackId, id);\n },\n clearTimeout: id => {\n this.win.clearTimeout(this.timeoutIds.get(id));\n this.timeoutIds.delete(id);\n },\n setInterval: (callbackId, nMilliseconds) => {\n if (\n typeof callbackId !== \"number\" ||\n typeof nMilliseconds !== \"number\"\n ) {\n return;\n }\n const id = this.win.setInterval(() => {\n this.callSandboxFunction(\"timeoutCb\", {\n callbackId,\n interval: true,\n });\n }, nMilliseconds);\n this.timeoutIds.set(callbackId, id);\n },\n clearInterval: id => {\n this.win.clearInterval(this.timeoutIds.get(id));\n this.timeoutIds.delete(id);\n },\n alert: cMsg => {\n if (typeof cMsg !== \"string\") {\n return;\n }\n this.win.alert(cMsg);\n },\n confirm: cMsg => {\n if (typeof cMsg !== \"string\") {\n return false;\n }\n return this.win.confirm(cMsg);\n },\n prompt: (cQuestion, cDefault) => {\n if (typeof cQuestion !== \"string\" || typeof cDefault !== \"string\") {\n return null;\n }\n return this.win.prompt(cQuestion, cDefault);\n },\n parseURL: cUrl => {\n const url = new this.win.URL(cUrl);\n const props = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"origin\",\n \"password\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\",\n \"searchParams\",\n \"username\",\n ];\n\n return Object.fromEntries(\n props.map(name => [name, url[name].toString()])\n );\n },\n send: data => {\n if (!data) {\n return;\n }\n const event = new this.win.CustomEvent(\"updatefromsandbox\", {\n detail: this.importValueFromSandbox(data),\n });\n this.win.dispatchEvent(event);\n },\n };\n Object.setPrototypeOf(externals, null);\n\n return (name, args) => {\n try {\n const result = externals[name](...args);\n return this.exportValueToSandbox(result);\n } catch (error) {\n throw this.createErrorForSandbox(error?.toString() ?? \"\");\n }\n };\n }\n}\n\nif (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n exports.SandboxSupportBase = SandboxSupportBase;\n} else {\n /* eslint-disable-next-line no-unused-vars, no-var */\n var EXPORTED_SYMBOLS = [\"SandboxSupportBase\"];\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport ModuleLoader from \"../external/quickjs/quickjs-eval.js\";\nimport { SandboxSupportBase } from \"./pdf.sandbox.external.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nclass SandboxSupport extends SandboxSupportBase {\n exportValueToSandbox(val) {\n // The communication with the Quickjs sandbox is based on strings\n // So we use JSON.stringfy to serialize\n return JSON.stringify(val);\n }\n\n importValueFromSandbox(val) {\n return val;\n }\n\n createErrorForSandbox(errorMessage) {\n return new Error(errorMessage);\n }\n}\n\nclass Sandbox {\n constructor(win, module) {\n this.support = new SandboxSupport(win, this);\n\n // The \"external\" functions created in pdf.sandbox.external.js\n // are finally used here:\n // https://github.com/mozilla/pdf.js.quickjs/blob/main/src/myjs.js\n // They're called from the sandbox only.\n module.externalCall = this.support.createSandboxExternals();\n\n this._module = module;\n\n // 0 to display error using console.error\n // else display error using window.alert\n this._alertOnError = 0;\n }\n\n create(data) {\n if (PDFJSDev.test(\"!PRODUCTION || TESTING\")) {\n this._module.ccall(\"nukeSandbox\", null, []);\n }\n const code = [PDFJSDev.eval(\"PDF_SCRIPTING_JS_SOURCE\")];\n\n if (PDFJSDev.test(\"!PRODUCTION || TESTING\")) {\n code.push(\n `globalThis.sendResultForTesting = callExternalFunction.bind(null, \"send\");`\n );\n } else {\n code.push(\"delete dump;\");\n }\n\n let success = false;\n let buf = 0;\n try {\n const sandboxData = JSON.stringify(data);\n // \"pdfjsScripting.initSandbox...\" MUST be the last line to be evaluated\n // since the returned value is used for the communication.\n code.push(`pdfjsScripting.initSandbox({ data: ${sandboxData} })`);\n buf = this._module.stringToNewUTF8(code.join(\"\\n\"));\n\n success = !!this._module.ccall(\n \"init\",\n \"number\",\n [\"number\", \"number\"],\n [buf, this._alertOnError]\n );\n } catch (error) {\n console.error(error);\n } finally {\n if (buf) {\n this._module.ccall(\"free\", \"number\", [\"number\"], [buf]);\n }\n }\n\n if (success) {\n this.support.commFun = this._module.cwrap(\"commFun\", null, [\n \"string\",\n \"string\",\n ]);\n } else {\n this.nukeSandbox();\n throw new Error(\"Cannot start sandbox\");\n }\n }\n\n dispatchEvent(event) {\n this.support.callSandboxFunction(\"dispatchEvent\", event);\n }\n\n dumpMemoryUse() {\n if (this._module) {\n this._module.ccall(\"dumpMemoryUse\", null, []);\n }\n }\n\n nukeSandbox() {\n if (this._module !== null) {\n this.support.destroy();\n this.support = null;\n this._module.ccall(\"nukeSandbox\", null, []);\n this._module = null;\n }\n }\n\n evalForTesting(code, key) {\n if (PDFJSDev.test(\"!PRODUCTION || TESTING\")) {\n this._module.ccall(\n \"evalInSandbox\",\n null,\n [\"string\", \"int\"],\n [\n `try {\n sendResultForTesting([{ id: \"${key}\", result: ${code} }]);\n } catch (error) {\n sendResultForTesting([{ id: \"${key}\", result: error.message }]);\n }`,\n this._alertOnError,\n ]\n );\n } else {\n throw new Error(\"Not implemented: evalForTesting\");\n }\n }\n}\n\nfunction QuickJSSandbox() {\n return ModuleLoader().then(module => {\n return new Sandbox(window, module);\n });\n}\n\nexport { QuickJSSandbox };\n"],"names":["Module","_scriptDir","document","b","h","n","q","t","aa","console","u","noExitRuntime","w","z","c","f","string","p","U","C","D","array","l","F","g","A","k","a","m","e","y","d","G","H","I","J","String","K","L","M","x","ca","N","E","ea","fa","ha","ia","P","Q","R","WebAssembly","T","S","ka","ma","Error","la","credentials","O","pa","ra","Math","sa","ta","Number","ba","X","oa","JSON","W","ua","window","da","Date","qa","i","j","v","B","Y","Z","V","ja","setTimeout","constructor","destroy","exportValueToSandbox","importValueFromSandbox","createErrorForSandbox","callSandboxFunction","args","createSandboxExternals","externals","id","interval","clearTimeout","setInterval","clearInterval","alert","cMsg","confirm","prompt","parseURL","cUrl","url","props","name","send","data","event","detail","Object","result","error","exports","pdfjsVersion","pdfjsBuild","module","create","code","success","buf","sandboxData","dispatchEvent","dumpMemoryUse","nukeSandbox","evalForTesting"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"pdf.sandbox.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf.sandbox/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.sandbox/external/quickjs/quickjs-eval.js","webpack://pdfjs-dist/build/pdf.sandbox/src/pdf.sandbox.external.js","webpack://pdfjs-dist/build/pdf.sandbox/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.sandbox/src/pdf.sandbox.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.sandbox\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.sandbox\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.sandbox\"] = factory();\n})(this, function() {\nreturn ","\nvar Module = (() => {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n \n return (\nfunction(Module) {\n Module = Module || {};\n\n\nvar b;b||(b=typeof Module !== 'undefined' ? Module : {});var h=Object.assign,n,q;b.ready=new Promise(function(a,c){n=a;q=c});var r=h({},b),t=\"\";\"undefined\"!==typeof document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf(\"blob:\")?t=t.substr(0,t.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):t=\"\";var aa=b.print||console.log.bind(console),u=b.printErr||console.warn.bind(console);h(b,r);r=null;var v;b.wasmBinary&&(v=b.wasmBinary);\nvar noExitRuntime=b.noExitRuntime||!0;\"object\"!==typeof WebAssembly&&x(\"no native wasm support detected\");var y,z=!1;\nfunction A(a,c,d,e){var f={string:function(l){var p=0;if(null!==l&&void 0!==l&&0!==l){var T=(l.length<<2)+1;p=B(T);C(l,D,p,T)}return p},array:function(l){var p=B(l.length);E.set(l,p);return p}};a=b[\"_\"+a];var g=[],k=0;if(e)for(var m=0;m<e.length;m++){var w=f[d[m]];w?(0===k&&(k=F()),g[m]=w(e[m])):g[m]=e[m]}d=a.apply(null,g);return d=function(l){0!==k&&G(k);return\"string\"===c?H(l):\"boolean\"===c?!!l:l}(d)}var I=\"undefined\"!==typeof TextDecoder?new TextDecoder(\"utf8\"):void 0;\nfunction J(a,c,d){var e=c+d;for(d=c;a[d]&&!(d>=e);)++d;if(16<d-c&&a.subarray&&I)return I.decode(a.subarray(c,d));for(e=\"\";c<d;){var f=a[c++];if(f&128){var g=a[c++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|g);else{var k=a[c++]&63;f=224==(f&240)?(f&15)<<12|g<<6|k:(f&7)<<18|g<<12|k<<6|a[c++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e}function H(a){return a?J(D,a,void 0):\"\"}\nfunction C(a,c,d,e){if(0<e){e=d+e-1;for(var f=0;f<a.length;++f){var g=a.charCodeAt(f);if(55296<=g&&57343>=g){var k=a.charCodeAt(++f);g=65536+((g&1023)<<10)|k&1023}if(127>=g){if(d>=e)break;c[d++]=g}else{if(2047>=g){if(d+1>=e)break;c[d++]=192|g>>6}else{if(65535>=g){if(d+2>=e)break;c[d++]=224|g>>12}else{if(d+3>=e)break;c[d++]=240|g>>18;c[d++]=128|g>>12&63}c[d++]=128|g>>6&63}c[d++]=128|g&63}}c[d]=0}}\nfunction K(a){for(var c=0,d=0;d<a.length;++d){var e=a.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:c+4}return c}function L(a){var c=K(a)+1,d=M(c);d&&C(a,E,d,c);return d}var ba,E,D,N;\nfunction ca(){var a=y.buffer;ba=a;b.HEAP8=E=new Int8Array(a);b.HEAP16=new Int16Array(a);b.HEAP32=N=new Int32Array(a);b.HEAPU8=D=new Uint8Array(a);b.HEAPU16=new Uint16Array(a);b.HEAPU32=new Uint32Array(a);b.HEAPF32=new Float32Array(a);b.HEAPF64=new Float64Array(a)}var O,da=[],ea=[],fa=[];function ha(){var a=b.preRun.shift();da.unshift(a)}var P=0,Q=null,R=null;b.preloadedImages={};b.preloadedAudios={};\nfunction x(a){if(b.onAbort)b.onAbort(a);a=\"Aborted(\"+a+\")\";u(a);z=!0;a=new WebAssembly.RuntimeError(a+\". Build with -s ASSERTIONS=1 for more info.\");q(a);throw a;}function S(a){return a.startsWith(\"data:application/octet-stream;base64,\")}var U;U=\"data:application/octet-stream;base64,AGFzbQEAAAABxQZsYAR/fn9/AX5gA39/fwF/YAJ/fwF/YAJ/fwBgAX8Bf2AFf35/f38BfmADf39/AGABfAF8YAF/AGACf34BfmACf34AYAR/f39/AX9gAn9/AX5gAn9+AX9gA39/fgF/YAN/fn8BfmABfgF/YAN/fn8AYAZ/fn9/f38BfmADf35/AX9gBX9/f39/AX9gBn9+fn9/fwF+YAN/fn4BfmAEf39+fwF/YAN/f38BfmAEf39/fwBgBH9/f38BfmAGf39/f39/AX9gBX9+fn5+AGABfwF+YAN/fn4Bf2ACfHwBfGABfgF+YAV/fn9+fwF/YAV/fn5/fwF+YAd/fn9+fn5/AX9gAAF/YAAAYAV/f39/fwBgBH9+fn8AYAV/fn5+fwF/YAd/f39/f39/AX9gBn9+f35+fwF/YAR/fn9+AX5gAn5/AX9gBH9+fn8Bf2ACfn8AYAl/f39/f39/f38Bf2AEf35+fwF+YAZ/f39/f38BfmADf35+AGAEf35/fwF/YAV/fn5/fwBgB39+f39/f38BfmADf39+AGAEf35/fwBgBH9+f34Bf2AEf35+fgF/YAR/f39+AX9gCH9/f39/f39/AX9gB39/f39/f38AYAJ8fwF8YAN+f38Bf2ADfHx/AXxgAn5+AX5gBH9/fn8AYAR/fn5+AX5gBn98f39/fwF/YAV/fn9+fwF+YAF8AX5gAX4BfGAFf39+f38Bf2AGf39+fn5+AX9gBn9/f39/fwBgAn98AGAEf39+fwF+YAR/fn9+AGAFf39/f34BfmAHf35+fn9/fwF+YAR+fn5+AX9gCn9/f39/f39/f38Bf2AHf39/f39/fgF+YAd8f39/f39/AGADf39+AX5gBX9/f39/AX5gBX9+f39/AGAFf3x/f38BfmAGf35+fn5/AX9gBH98f38Bf2ACf38BfGAGf35/f39/AX9gBX9/fn5/AX9gBX9+f39/AX9gBn9/fn5/fwF/YAV/fn5+fgF/YAR/f35+AX9gBX9/fn5+AX5gB39/f35+fn8Bf2ADfn5+AX9gBH9/f34BfmACfH8Bf2ACfHwBf2AIf35+fn5/fn4BfmADf358AX5gAAF+YAJ+fgF8YAF/AXxgA39/fAACPQoBYQFhABkBYQFiACUBYQFjAAIBYQFkAAsBYQFlAAQBYQFmAAMBYQFnAAEBYQFoAAIB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Rw8LIAGnDwsgAacpAgQhBCAAIAEQCiAEQv////8Hg0IAUg8LIAGnLQAFIQIgACABEAogAkF/c0GAAXFBB3YPCyADQQdrQW1NBEAgARBJIgVEAAAAAAAAAABiIAW9Qv///////////wCDQoGAgICAgID4/wBUcQ8LIAAgARAKQQEhAgsgAgsZACAAKAIQIAEQ5gEiAUUEQCAAEMcBCyABCz8BAX8jAEEQayICJAACfyABIAAoAhBHBEAgAiABNgIAIABBtf0AIAIQE0F/DAELIAAQDwshACACQRBqJAAgAAsiACAALQAHQYABcQRAIAAgAUEBdGovARAPCyAAIAFqLQAQCygBAX8jAEEQayICJAAgAiABOwEOIAAgAkEOakECEIgBGiACQRBqJAALCwAgACABQQEQ4wUL5QoCBX8PfiMAQeAAayIFJAAgBEL///////8/gyINQg+GIANCMYiEIQ4gAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiC0IgiCEPIA1CEYghECAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgxCgICAgICAwP//AFQgDEKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEKDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQogAyEBDAILIAEgDEKAgICAgIDA//8AhYRQBEAgAiADhFAEQEKAgICAgIDg//8AIQpCACEBDAMLIApCgICAgICAwP//AIQhCkIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQCABIAyEIQJCACEBIAJQBEBCgICAgICA4P//ACEKDAMLIApCgICAgICAwP//AIQhCgwCCyABIAyEUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyAMQv///////z9YBEAgBUHQAGogASALIAEgCyALUCIGG3kgBkEGdK18pyIGQQ9rEHFBECAGayEGIAUpA1giC0IgiCEPIAUpA1AhAQsgAkL///////8/Vg0AIAVBQGsgAyANIAMgDSANUCIIG3kgCEEGdK18pyIIQQ9rEHEgBiAIa0EQaiEGIAUpA0giAkIPhiAFKQNAIgNCMYiEIQ4gAkIRiCEQCyADQg+GQoCA/v8PgyICIAFCIIgiBH4iEiADQhGIQv////8PgyIMIAFC/////w+DIgF+fCIRQiCGIg0gASACfnwiAyANVK0gAiALQv////8PgyILfiIVIAQgDH58IhMgDkL/////D4MiDSABfnwiFCARIBJUrUIghiARQiCIhHwiESACIA9CgIAEhCIOfiIWIAsgDH58Ig8gBCANfnwiEiAQQv////8Hg0KAgICACIQiAiABfnwiEEIghnwiF3whASAHIAlqIAZqQf//AGshBgJAIAsgDX4iGCAMIA5+fCIMIBhUrSAMIAIgBH58IgQgDFStfCACIA5+fCAEIAQgEyAVVK0gEyAUVq18fCIEVq18IAIgC34iCyANIA5+fCICIAtUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiACIBAgElStIA8gFlStIA8gElatfHxCIIYgEEIgiIR8IgJWrXwgAiACIBEgFFStIBEgF1atfHwiAlatfCIEQoCAgICAgMAAg1BFBEAgBkEBaiEGDAELIANCP4ghCyAEQgGGIAJCP4iEIQQgAkIBhiABQj+IhCECIANCAYYhAyALIAFCAYaEIQELIAZB//8BTgRAIApCgICAgICAwP//AIQhCkIAIQEMAQsCfiAGQQBMBEBBASAGayIHQYABTwRAQgAhAQwDCyAFQTBqIAMgASAGQf8AaiIGEHEgBUEgaiACIAQgBhBxIAVBEGogAyABIAcQoAIgBSACIAQgBxCgAiAFKQMwIAUpAziEQgBSrSAFKQMgIAUpAxCEhCEDIAUpAyggBSkDGIQhASAFKQMAIQIgBSkDCAwBCyAEQv///////z+DIAatQjCGhAsgCoQhCiADUCABQgBZIAFCgICAgICAgICAf1EbRQRAIAogAkIBfCIBIAJUrXwhCgwBCyADIAFCgICAgICAgICAf4WEUEUEQCACIQEMAQsgCiACIAJCAYN8IgEgAlStfCEKCyAAIAE3AwAgACAKNwMIIAVB4ABqJAALagECfwJAIAAoAtgCIgNFDQAgACgC4AIiBCAAKALcAk4NACAAKALoAiABSw0AIAAoAuQCIAJGDQAgAyAEQQN0aiIDIAI2AgQgAyABNgIAIAAgATYC6AIgACAEQQFqNgLgAiAAIAI2AuQC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AkACQAJAIAJBA0wEQAJAAkACQAJAAkACQAJAAkACQCABQdgAaw4JAAECAwQFBgcICgsgACACQT1rQf8BcRAODwsgACACQTlrQf8BcRAODwsgACACQTVrQf8BcRAODwsgACACQTFrQf8BcRAODwsgACACQS1rQf8BcRAODwsgACACQSlrQf8BcRAODwsgACACQSVrQf8BcRAODwsgACACQSFrQf8BcRAODwsgACACQR1rQf8BcRAODwsgAkH/AUsNAQJAAkACQCABQdgAaw4DAAECBAsgAEHAARAODAULIABBwQEQDgwECyAAQcIBEA4MAwsgAUEiRg0BCyAAIAFB/wFxEA4gACACQf//A3EQMA8LIAAgAkEUa0H/AXEQDg8LIAAgAkH/AXEQDgsbAQF/IAAgARA6BH9BAAUgAEGiNkEAEBRBfwsLGQEBfyABIAIQPyIDRQRAIAAgAhCdAwsgAwsmAQF/IwBBEGsiAiQAIAJBADYCDCAAQQEgAUEAEP0BIAJBEGokAAsZACAAKAIQIAEQmwIiAUUEQCAAEMcBCyABC20BAX8jAEGAAmsiBSQAIARBgMAEcSACIANMckUEQCAFIAFB/wFxIAIgA2siAkGAAiACQYACSSIBGxBFGiABRQRAA0AgACAFQYACEGUgAkGAAmsiAkH/AUsNAAsLIAAgBSACEGULIAVBgAJqJAALDwAgACgCQEGAAmogARAOC28CAX4BfyAAIQQCQAJAIAEQEA0AIAAgAUE7IAFBABASIgMQCwRAIAMPCyADECANASAAIAMQCiAAIAEQjwMiBA0AQoCAgIDgAA8LIAQoAiggAkEDdGopAwAQDSEDCyAAIAMgAhBQIQEgACADEAogAQsxACAAIAEgAkKAgICACHxC/////w9YBH4gAkL/////D4MFIAK5EBULIANBh4ABEMwCCxAAIAAgADYCBCAAIAA2AgALdQEBfiAAIAEgBH4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC/////w+DIgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCABIAJ+IANC/////w+DfCIBQiCIfDcDCCAAIAVC/////w+DIAFCIIaENwMAC1ABAX4CQCADQcAAcQRAIAEgA0FAaq2GIQJCACEBDAELIANFDQAgAiADrSIEhiABQcAAIANrrYiEIQIg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IAooAgwoAgBBGnZBPXEgBkECcXIQoAMNAwtBf0EBIAAgCSAKQQxqIAZBCHZBBXEiAEF/cyAKKAIMKAIAQRp2cSAAIAZxchCgAxshBwwCCyAAIAZBv9EAEHchBwwBC0F/IQcLIApBEGokACAHC0wBAn8jAEEQayIDJAACQCABQYCAAXFFBEAgAUGAgAJxRQ0BIAAQ+gFFDQELIANBADYCDCAAQQQgAkEAEP0BQX8hBAsgA0EQaiQAIAQLzAEBAn8CQCABQoCAgIBwWgRAIAGnIQMDQAJAIAMtAAVBBHFFDQAgACgCECgCRCADLwEGQRhsaigCFCIERQ0AIAQoAhBFDQAgACADrUKAgICAcIQQDSIBIAIgBCgCEBETACECIAAgARAKIAIPCyADrUKAgICAcIQQDSEBIABBACADIAIQUyEEIAAgARAKIAQNAgJAIAMvAQZBFWtB//8DcUEISw0AIAAgAhCmAyIERQ0AIARBH3UPCyADKAIQKAIsIgMNAAsLQQAhBAsgBAsaACAAIAEgAkEATgR+IAKtBSACuBAVCxCfAQsLACAAQf////8HcQu/CQIEfgR/IwBB8ABrIgokACAEQv///////////wCDIQUCQAJAIAFQIgkgAkL///////////8AgyIGQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIAZQG0UEQCADQgBSIAVCgICAgICAwP//AH0iB0KAgICAgIDAgIB/ViAHQoCAgICAgMCAgH9RGw0BCyAJIAZCgICAgICAwP//AFQgBkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAFQoCAgICAgMD//wBUIAVCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIAZCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIJGyEEQgAgASAJGyEDDAILIAMgBUKAgICAgIDA//8AhYRQDQEgASAGhFAEQCADIAWEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAWEUEUNACABIQMgAiEEDAELIAMgASABIANUIAUgBlYgBSAGURsiCxshBSAEIAIgCxsiB0L///////8/gyEGIAIgBCALGyICQjCIp0H//wFxIQwgB0IwiKdB//8B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IQgMAgsgAEHwABAMQcoAIQgMAQsgACAIEAwLIAEgCDYCACACIAs2AgAgAyAKNgIAIAQgBzYCACAFBEAgBSAMNgIAC0EAC1oBA38jAEEQayIBJAACQCAAKAIQIgNBqn9GDQAgA0E7RwRAIANB/QBGDQEgACgCMA0BIAFBOzYCACAAQbX9ACABEBNBfyECDAELIAAQDyECCyABQRBqJAAgAgsZACABIAJBD3E6AAQgAUEIaiAAQdAAahBLC7UBAQV/IwBBIGsiBSQAAn4CQCACQoCAgIBwg0KAgICAkH9SBEAgACACEDwiAhALDQELIAAgBUEIaiABEEIiByADEEIiCGogAqciBigCBCIEQf////8HcWogBEEfdhCrAw0AIAVBCGoiBCABIAcQnAIaIAQgBkEAIAYoAgRB/////wdxEFcaIAQgAyAIEJwCGiAAIAIQCiAEEDcMAQsgACACEApCgICAgOAACyECIAVBIGokACACCzsAAn8gACABQYCABE8Ef0F/IAAgAUGAgARrQQp2QYCwA2oQlAENARogAUH/B3FBgLgDcgUgAQsQlAELC1EAIABB/wBNBEAgAEEDdkH8////AXFB4OABaigCACAAdkEBcQ8LIABBfnFBjMAARiAAELcEBH9BAQUgAEHggQJB4IYCQRQQ4AJBAEcLQQBHcgtTAQF/IAFCgICAgHBaBH8gAacvAQYiAkEpRgRAAn9BACABQSkQPyICRQ0AGiACLQARBEAgABDKAkF/DAELIAAgAikDABDAAQsPCyACQQJGBUEACwvJAgIBfgJ/IwBBEGsiBSQAAkAgAUKAgICAcFQEQCABIQMMAQsgAkFvcSEEAkACQAJAIAJBEHENACAAIAFBwgEgAUEAEBIiAxALDQEgAxAQDQAgAxAmDQAgBSAAQcYAQRYgBEEBRhtByAAgBBsQMTcDCCAAIAMgAUEBIAVBCGoQNSEDIAAgBSkDCBAKIAMQCw0BIAAgARAKIANCgICAgHBUDQMgACADEAogAEH0yABBABAUDAILIARBAEchBEEAIQIDQCACQQJHBEAgACABQTdBOSACIARGGyABQQAQEiIDEAsNAgJAIAAgAxA6RQ0AIAAgAyABQQBBABA1IgMQCw0DIANC/////29WDQAgACABEAoMBQsgACADEAogAkEBaiECDAELCyAAQfTIAEEAEBQL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zQELIAkgB0EIayIIKQMAEAoMygELIAkgB0EQayIGKQMAEAogBiAHQQhrIggpAwA3AwAMyQELIAkgB0EYayIGKQMAEAogBiAHQRBrIgYpAwA3AwAgBiAHQQhrIggpAwA3AwAMyAELIAcgB0EIaykDABANNwMAIAdBCGohCAzHAQsgByAHQRBrKQMAEA03AwAgByAHQQhrKQMAEA03AwggB0EQaiEIDMYBCyAHIAdBGGspAwAQDTcDACAHIAdBEGspAwAQDTcDCCAHIAdBCGspAwAQDTcDECAHQRhqIQgMxQELIAcgB0EIayIGKQMANwMAIAYgB0EQaykDABANNwMAIAdBCGohCAzEAQsgByAHQQhrIgYpAwAiATcDACAGIAdBEGsiBikDADcDACAGIAEQDTcDACAHQQhqIQgMwwELIAcgB0EIayIIKQMAIic3AwAgB0EQayIGKQMAIQEgBiAHQRhrIgYpAwA3AwAgCCABNwMAIAYgJxANNwMAIAdBCGohCAzCAQsgByAHQQhrIggpAwAiJzcDACAHQRBrIgYpAwAhASAGIAdBGGsiBikDADcDACAIIAE3AwAgBiAHQSBrIgYpAwA3AwAgBiAnEA03AwAgB0EIaiEIDMEBCyAHQRBrIgYpAwAhASAGIAdBGGsiBikDADcDACAGIAE3AwAMvwELIAdBGGsiBikDACEnIAYgB0EQayIIKQMANwMAIAdBCGsiBikDACEBIAYgJzcDACAIIAE3AwAMvgELIAdBIGsiBikDACEnIAYgB0EYayIIKQMANwMAIAdBEGsiBikDACEBIAYgB0EIayIGKQMANwMAIAggATcDACAGICc3AwAMvQELIAdBKGsiBikDACEnIAYgB0EgayIIKQMANwMAIAdBGGsiBikDACEBIAYgB0EQayIGKQMANwMAIAggATcDACAGIAdBCGsiBikDADcDACAGICc3AwAMvAELIAdBCGsiBikDACEnIAYgB0EQayIIKQMANwMAIAdBGGsiBikDACEBIAYgJzcDACAIIAE3AwAMuwELIAdBEGsiBikDACEnIAYgB0EYayIIKQMANwMAIAdBIGsiBikDACEBIAYgJzcDACAIIAE3AwAMugELIAdBEGsiBikDACEnIAYgB0EYayIIKQMANwMAIAdBIGsiBikDACEBIAYgB0EoayIGKQMANwMAIAgg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HgwoCyAGQQJqIQsgFCAGLQABQQN0aiIIKQMAIgFC/////w9WIAGnQYCAgIB4RnJFBEAgCCABQgF9Qv////8PgzcDAAwoCyATIAEQDTcDGCAJICJBjgEQkQINLCAJIAggEykDGBAeDCcLIAdBCGsiCCkDACIBQv////8PWARAIAggAUL/////D4U3AwAgByEIDCgLIAchCCMAQRBrIg0kACAJIA1BDGogB0EIayIKKQMAEMQBIQwgCkKAgICAMCANNQIMQv////8PhSAMGzcDACANQRBqJABBf0EAIAwbRQ0nDCsLIAdBCGsiCCkDACInIAdBEGsiCikDACIBhEL/////D1gEQCAKIAGnICendK03AwAMJwsgCSAHQaABEMcCRQ0mDCoLIAdBCGsiCCkDACInIAdBEGsiCikDACIBhEL/////D1gEQCAKAn4gAacgJ6d2IgZBAE4EQCAGrQwBCyAGuBAVCzcDAAwmCyMAQRBrIg0kACAHQQhrIgopAwAhAQJ/AkAgCSANQQxqIAdBEGsiDCkDABDpAwRAIAkgARAKDAELIAkgDUEIaiABEOkDDQAgDAJ+IA0oAgwgDSgCCHYiCkEATgRAIAqtDAELIAq4EBULNwMAQQAMAQsgDEKAgICAMDcDACAKQoCAgIAwNwMAQX8LIQogDUEQaiQAIApFDSUMKQsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogAacgJ6d1rTcDAAwlCyAJIAdBoQEQxwJFDSQMKAsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogASAngzcDAAwkCyAJIAdBrQEQxwJFDSMMJwsgB0EIayIIKQMAIAdBEGsiCikDAIQiAUL/////D1gEQCAKIAE3AwAMIwsgCSAHQa8BEMcCRQ0iDCYLIAdBCGsiCCkDACInIAdBEGsiCikDACIBhEL/////D1gEQCAKIAEgJ4VC/////w+DNwMADCILIAkgB0GuARDHAkUNIQwlCyAHQQhrIggpAwAiJyAHQRBrIgopAwAiAYRC/////w9YBEAgCiABpyAnp0itQoCAgIAQhDcDAAwhCyAJIAdBowEQlwNFDSAMJAsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogAacgJ6dMrUKAgICAEIQ3AwAMIAsgCSAHQaQBEJcDRQ0fDCMLIAdBCGsiCCkDACInIAdBEGsiCikDACIBhEL/////D1gEQCAKIAGnICenSq1CgICAgBCENwMADB8LIAkgB0GlARCXA0UNHgwiCyAHQQhrIggpAwAiJyAHQRBrIgopAwAiAYRC/////w9YBEAgCiABpyAnp06tQoCAgIAQhDcDAAweCyAJIAdBpgEQlwNFDR0MIQsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogAacgJ6dGrUKAgICAEIQ3AwAMHQsgCSAHQQAQwwVFDRwMIAsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogAacgJ6dHrUKAgICAEIQ3AwAMHAsgCSAHQQEQwwVFDRsMHwsgB0EIayIIKQMAIicgB0EQayIGKQMAIgGEQv////8PWARAIAYgAacgJ6dGrUKAgICAEIQ3AwAMGwsgCSAHQQAQwgUMGgsgB0EIayIIKQMAIicgB0EQayIGKQMAIgGEQv////8PWARAIAYgAacgJ6dHrUKAgICAEIQ3AwAMGgsgCSAHQQEQwgUMGQsCfyAHQQhrKQMAIidC/////29YBEAgCUHj2wBBABAUQX8MAQtBfyEIAkAgCSAHQRBrIgopAwAiARA5Ig1FDQAgCSAnIA0QeCEMIAkgDRARIAxBAEgNACAJIAEQCiAJICcQCiAKIAxBAEetQoCAgIAQhDcDAEEAIQgLIAgLDRwgB0EIayEIDBgLAn8gCSAHQRBrIggpAwAiJyAHQQhrKQMAIgEQ2wUiCkEASARAIAoMAQsgCSAnEAogCSABEAogCCAKQQBHrUKAgICAEIQ3AwBBAAsNGyAHQQhrIQgMFwsgCSAHQQhrIggpAwAiARCGBCEGIAkgARAKIAggCSAGEDE3AwAgByEIDBYLIAdBEGsiCikDACEnQX8hCAJAIAkgB0EIaykDACIBEDkiDUUNACAJICcgDUGAgAIQ3AEhDCAJIA0QESAMQQBIDQAgCSAnEAogCSABEAogCiAMQQBHrUKAgICAEIQ3AwBBACEICyAIDRkgB0EIayEIDBULIAsoAAAhCCAGQQVqIQsgCSAJKQPAASAIQQAQ3AEiCEEASA0YIAcgCEEAR61CgICAgBCENwMAIAdBCGohCAwUCyAHQQhrIggpAwAiAUL/////b1YNEiAJIAEQKSIBEAsNFyAJIAgpAwAQCiAIIAE3AwAgByEIDBMLIAdBCGsiCikDACIBQiCIp0EIaiIIQQhNQQBBASAIdEGDAnEbDREgCSABEJcEIgEQCw0WIAkgCikDABAKIAogATcDACAHIQgMEgsCQCAHQRBrKQMAIgEQEEUEQCABECZFDQELIAlB8glBABAUDBYLIAdBCGsiCikDACIBQiCIp0EIaiIIQQhNQQBBASAIdEGDAnEbDRAgCSABEJcEIgEQCw0VIAkgCikDABAKIAogATcDACAHIQgMEQsgBkEKaiEKIAYoAAUhDSAGLQAJIQwgCSAHQQhrIggpAwAiJyALKAAAIg4QeCILQQBIDQ4CQCALRQ0AIAwEQEEAIREgCSAnQc0BICdBABASIgEQCwR/QX8FIAEQIARAIAkgCSABIA4gAUEAEBIQLCERCyAJIAEQCiARCyILQQBIDRAgCw0BCwJAAkACQAJAAkACQAJAIA9B8gBrDgYAAQIDBAUGCyAJICcgDiAnQQAQEiIBEAsNFSAJIAggARAeDAULIAkgJyAOIAdBEGsiBykDAEGAgAIQlgIhCyAJIAgpAwAQCiALQQBIDRQMBAsgCSAnIA5BABDcASILQQBIDRMgCSAIKQMAEAogCCALQQBHrUKAgICAEIQ3AwAMAwsgByAJIA4QXjcDACAHQQhqIQcMAgsgCSAnIA4gJ0EAEBIiARALDREgByABNwMAIAdBCGohBwwBCyAJICcgDiAnQQAQEiIBEAsNECAJIAgpAwAQCiAIQoCAgIAwNwMAIAcgATcDACAHQQhqIQcLIAogDWpBBWshCyAHIQgMEQsgCSAIKQMAEAogCiELDBALIAdBCGspAwAiJ0KAgICAcINCgICAgDBRDQwMBQsgB0EIaykDACInQoCAgIBwg0KAgICAIFENCwwECyAJIAdBCGspAwAiJxCGBEHFAEYNAQwDCyAJIAdBCGspAwAiJxCGBEEbRw0CCyAJICcQCgwICyAHQQhrKQMAIidCgICAgGCDQoCAgIAgUQ0HCyAJICcQCiAHQQhrQoCAgIAQNwMAIAchCAwJCyASKAIUIQggEyAPNgIEIBMgCEF/cyALajYCACAJQccPIBMQTQwMCyAHIAs1AAA3AwAgBkEFaiELIAdBCGohCAwHC0IBIScMDAtCAiEnDAsLQoCAgIAwIScMCgsgB0EIayIHKQMAIQEMCgsgB0EIa0KBgICAEDcDACAHIQgMAgsgCiELDAULIAchCAtBAAshCiAIIQcgCyEGIApFDQELCyAIIQcLQQEhCAwFC0EAIQhBACEGAkAgGCkDgAEiAUKAgICAcFQNACABpyIKLwEGQQNHDQAgCigCECIKIAooAhhBf3NBAnRBqH5yaigCACEGIAoQJyEMA0ACQCAGRQRAQQAhBgwBCyAGQQN0IAxqIgpBCGshBiAKQQRrKAIAQTVGDQAgBigCAEH///8fcSEGDAELCyAGRSEGCyAGBEAgFiALNgIgIAkgAUEAQQBBABDGAiAYKQOAASEBCwJAIAFCgICAgHBUDQAgAaciBi8BBkEDRw0AIAYtAAVBBXZBAXEhCAsCQCAIDQAgByEGA0AgBiIHIBtNDQEgCSAHQQhrIgYpAwAiARAKIAFCgICAgHCDQoCAgIDQAFINACABpyIIDQUgCSAHQRBrIgYpAwAQCiAJIAdBGGspAwBBARCwARoMAAsAC0KAgICA4AAhJ0KAgICA4AAhASASLQARQTBxRQ0BCyAWIAc2AiwgFiALNgIgDAELIBZBGGoQ5wNFBEAgGCAWEMEFCwN+IAcgGU0EfiABBSAJIBkpAwAQCiAZQQhqIRkMAQsLIScLIBggFigCADYCjAEMAgsgBiAYKQOAATcDACAYQoCAgIAgNwOAASASKAIUIAhqIQZBACEIDAALAAsgE0HgAGokACAnC4gBAQJ/IAEoAhAiAy0AEEUEQEEADwsCQCADKAIAQQFHBEAgAgR/IAIoAgAgAxAna0EDdQVBAAshBCAAIAMQ0gUiA0UEQEF/DwsgACgCECABKAIQEJ0CIAEgAzYCECACRQ0BIAIgAxAnIARBA3RqNgIAQQAPCyAAKAIQIAMQkAQgA0EAOgAQC0EACxAAIABBAnQgAUEDdGpBMGoLrAECAn8BfiAAIAApAzBBDxBQIggQC0UEQCAAIARBA3RBCGoQLSIGRQRAIAAgCBAKQoCAgIDgAA8LIAYgAzsBBiAGIAQ6AAUgBiACOgAEIAYgATYCAEEAIQEgBEEAIARBAEobIQMgBkEIaiEEA0AgASADRkUEQCAEIAFBA3QiB2ogBSAHaikDABANNwMAIAFBAWohAQwBCwsgCCAGEIsBIAAgCEEvIAIQqgMLIAgLEwAgAEEQaiABIAIgACgCCBEBAAsRACAAQRBqIAEgACgCABECAAvMDAEHfwJAIABFDQAgAEEIayIDIABBBGsoAgAiAUF4cSIAaiEFAkAgAUEBcQ0AIAFBA3FFDQEgAyADKAIAIgFrIgNBqLgEKAIASQ0BIAAgAWohACADQay4BCgCAEcEQCABQf8BTQRAIAMoAggiAiABQQN2IgRBA3RBwLgEakYaIAIgAygCDCIBRgRAQZi4BEGYuAQoAgBBfiAEd3E2AgAMAwsgAiABNgIMIAEgAjYCCAwCCyADKAIYIQYCQCADIAMoAgwiAUcEQCADKAIIIgIgATYCDCABIAI2AggMAQsCQCADQRRqIgIoAgAiBA0AIANBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAQJAIAMgAygCHCICQQJ0Qci6BGoiBCgCAEYEQCAEIAE2AgAgAQ0BQZy4BEGcuAQoAgBBfiACd3E2AgAMAwsgBkEQQRQgBigCECADRhtqIAE2AgAgAUUNAgsgASAGNgIYIAMoAhAiAgRAIAEgAjYCECACIAE2AhgLIAMoAhQiAkUNASABIAI2AhQgAiABNgIYDAELIAUoAgQiAUEDcUEDRw0AQaC4BCAANgIAIAUgAUF+cTYCBCADIABBAXI2AgQgACADaiAANgIADwsgAyAFTw0AIAUoAgQiAUEBcUUNAAJAIAFBAnFFBEAgBUGwuAQoAgBGBEBBsLgEIAM2AgBBpLgEQaS4BCgCACAAaiIANgIAIAMgAEEBcjYCBCADQay4BCgCAEcNA0GguARBADYCAEGsuARBADYCAA8LIAVBrLgEKAIARgRAQay4BCADNgIAQaC4BEGguAQoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgAUF4cSAAaiEAAkAgAUH/AU0EQCAFKAIIIgIgAUEDdiIEQQN0QcC4BGpGGiACIAUoAgwiAUYEQEGYuARBmLgEKAIAQX4gBHdxNgIADAILIAIgATYCDCABIAI2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgFHBEAgBSgCCCICQai4BCgCAEkaIAIgATYCDCABIAI2AggMAQsCQCAFQRRqIgIoAgAiBA0AIAVBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAAJAIAUgBSgCHCICQQJ0Qci6BGoiBCgCAEYEQCAEIAE2AgAgAQ0BQZy4BEGcuAQoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAE2AgAgAUUNAQsgASAGNgIYIAUoAhAiAgRAIAEgAjYCECACIAE2AhgLIAUoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIABBAXI2AgQgACADaiAANgIAIANBrLgEKAIARw0BQaC4BCAANgIADwsgBSABQX5xNgIEIAMgAEEBcjYCBCAAIANqIAA2AgALIABB/wFNBEAgAEEDdiIBQQN0QcC4BGohAAJ/QZi4BCgCACICQQEgAXQiAXFFBEBBmLgEIAEgAnI2AgAgAAwBCyAAKAIICyECIAAgAzYCCCACIAM2AgwgAyAANgIMIAMgAjYCCA8LQR8hAiADQgA3AhAgAEH///8HTQRAIABBCHYiASABQYD+P2pBEHZBCHEiAXQiAiACQYDgH2pBEHZBBHEiAnQiBCAEQYCAD2pBEHZBAnEiBHRBD3YgASACciAEcmsiAUEBdCAAIAFBFWp2QQFxckEcaiECCyADIAI2AhwgAkECdEHIugRqIQECQAJAAkBBnLgEKAIAIgRBASACdCIHcUUEQEGcuAQgBCAHcjYCACABIAM2AgAgAyABNgIYDAELIABBAEEZIAJBAXZrIAJBH0YbdCECIAEoAgAhAQNAIAEiBCgCBEF4cSAARg0CIAJBHXYhASACQQF0IQIgBCABQQRxaiIHQRBqKAIAIgENAAsgByADNgIQIAMgBDYCGAsgAyADNgIMIAMgAzYCCAwBCyAEKAIIIgAgAzYCDCAEIAM2AgggA0EANgIYIAMgBDYCDCADIAA2AggLQbi4BEG4uAQoAgBBAWsiAEF/IAAbNgIACwuoAQACQCABQYAITgRAIABEAAAAAAAA4H+iIQAgAUH/D0kEQCABQf8HayEBDAILIABEAAAAAAAA4H+iIQAgAUH9FyABQf0XSRtB/g9rIQEMAQsgAUGBeEoNACAARAAAAAAAAGADoiEAIAFBuHBLBEAgAUHJB2ohAQwBCyAARAAAAAAAAGADoiEAIAFB8GggAUHwaEsbQZIPaiEBCyAAIAFB/wdqrUI0hr+iC0cAIAAgAUkEQCAAIAEgAhAjGg8LIAIEQCAAIAJqIQAgASACaiEBA0AgAEEBayIAIAFBAWsiAS0AADoAACACQQFrIgINAAsLC0QBAX9BfyEDIAAgACgCBCACahDMAQR/QX8FIAAoAgAgAWoiAyACaiADIAAoAgQgAWsQ6QEgACAAKAIEIAJqNgIEQQALCx8AIAAgASAAIAIQyAEiAiADIAQQGSEEIAAgAhARIAQLYAAgBEHyACADQcQAayADQbUBRhtB/wFxEA4gBCAAIAIQFxAcIAUgASAFKAIAENADIgA2AgAgBCAAEBwgBCAGQf8BcRAOIAEgBSgCAEEBEHIaIAEgASgC0AJBAWo2AtACC/MHAgR/AX4jAEEQayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCECICQc0Aag4DBAEDAAsgAkHsAGpBAkkNAQJAIAJBK2sOAwEGAQALIAJBWEYNBCACQf4ARg0AIAJBIUcNBQtBfyEEIAAQDw0MIABBEBDtAQ0MQYwBIQQCQAJAIAJBK2sOAwcBCQALIAJBtH9HBEAgAkEhRg0IIAJB/gBHDQFBlQEhBAwJCyAAQQ4QDEEGIQQMCAsQAQALIAAQDw0IIABBABDtAQ0IIAAgA0EMaiADQQhqIAMgA0EEakEAQQEgAhC6AQ0IIAAgAkEGa0H/AXEQDCAAIAMoAgwgAygCCCADKAIAIAMoAgRBAkEAENIBDAcLQX8hBCAAEA8NCiAAQRAQ7QENCkGXASEEIAAoAkAiARClAUG2AUcNBSABKAKAAiABKAKYAmpBtQE6AAAMBQtBfyEEAn8gACgCQCEBQX8hAgJAIAAQDw0AIABBEBDtAQ0AAkACQAJAAkACQAJAAkACQCABEKUBIgJBxwBrDgQBBgYFAAsgAkG8AUYNAyACQbYBRg0CIAJBwQBHDQUgASgCmAIiAiABKAKAAmooAAEhBSABQX82ApgCIAEgAjYChAIgACAAKAIAIAUQXiIGQQEQ0QEhAiAAKAIAIAYQCiAAKAIAIAUQESACRQ0BDAcLIAEoApgCIQIgAUF/NgKYAiABIAI2AoQCCyAAQZgBEAwMBAsgASgCgAIgASgCmAJqIgIoAAEiBUEIRiAFQfEARnINAiABLQBuQQFxBEAgAEHi0wBBABATQX8MBgsgAkG4AToAAAwDCyAAQb3cAEEAEBNBfwwECyAAQTAQDCAAQQAQGiAAQQMQbEEADAMLIABBDhAMIABBChAMC0EAIQILIAILRQ0IDAkLIAAoAkAiAS0AbEECcUUEQCAAQcvYAEEAEBMMBgsgASgCZEUEQCAAQYQ3QQAQEwwGC0F/IQQgABAPDQggAEEQEO0BDQhBiwEhBAwDC0F/IQQgACABQQRxQQJyEM8DDQcgACgCMA0DIAAoAhAiAkF+cUGUf0cNAyAAIANBDGogA0EIaiADIANBBGpBAEEBIAIQugENByAAIAJBBGtB/wFxEAwgACADKAIMIAMoAgggAygCACADKAIEQQNBABDSASAAEA9FDQMMBwtBjQEhBAwBC0GWASEECyAAIAQQDAwDC0EAIQQgAUEYcUUNAyAAKAIQQaN/Rw0DIAFBEHFFDQEgACgCAEHE/QBBABDSAgtBfyEEDAILQX8hBCAAEA8NASAAQQgQ7QENASAAQZ8BEAwLQQAhBAsgA0EQaiQAIAQLfAECfyAAKAJAIgEEQCABKAK8ASECIABBswEQDCAAIAJB//8DcRAWIAEgASgCzAEgAkEDdGooAgAiADYCvAEDQAJAIABBAEgEQEF/IQAMAQsgASgCzAEgAEEDdGoiAigCBCIAQQBODQAgAigCACEADAELCyABIAA2AsABCws2AQF/IwBB0ABrIgEkACABIAAoAgAgAUEQaiAAKAIgEIcBNgIAIABB6TAgARATIAFB0ABqJAALmSYBFH8jAEEwayIIJAAgACgCACEOAkAgACICKAIQQYN/Rw0AIAIoAigNACACQQAQiQFBOkYhAwsCQAJAAkACQAJAIANFBEAgAigCECEDDAELIA4gAigCIBAXIQsgAigCQEGwAmohAAJAA0AgACgCACIARQ0BIAAoAgQgC0cNAAsgAkGNzwBBABATDAILIAIQDw0BIAJBOhAuDQEgAigCECIDQccAakEDSQ0AIAIQNCEDQQAhACACKAJAIAhBEGogCyADQX9BABCoASACIAFBHnRBH3VBAEEDIAIoAkAtAG5BAXEbcRDwAQ0BIAIgAxAdIAIoAkAQpwEMAwsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgA0HSAGoOJAMRAR0RERERERERBQQGBwcIERECCRERDBALDxwSEhIRERERHAALIANBg39GDQwgA0E7Rg0JIANB+wBHDRAgAhD2Ag0dDB4LIAIoAkAoAiAEQCACQbE2QQAQEwwdCyACEA8NHEEAIQAgAgJ/QQAgAigCECIBQTtGDQAaQQAgAUH9AEYNABpBACACKAIwDQAaIAIQlwENHUEBCxD1AiACELsBDRwMHgsgAhAPDRsgAigCMARAIAJBiBBBABATDBwLIAIQlwENGyACQS8QDCACELsBRQ0cDBsLIAIQDw0aIAIQgwEaIAIQ1AEgAhCHAg0aIAJB6QBBfxAbIQAgAiACKAJALQBuQX9zQQFxIgEQ8AENGgJAIAIoAhBBr39HBEAgACEDDAELIAJB6wBBfxAbIQMgAhAPDRsgAiAAEB0gAiABEPABDRsLIAIgAxAdDBcLIAIQNCEAIAIQNCEBIAIoAkAgCEEQaiALIAEgAEEAEKgBIAIQDw0ZIAIQ1AEgAiAAEB0gAhCHAg0ZIAJB6QAgARAbGiACELYCDRkgAkHrACAAEBsaIAIgARAdIAIoAkAQpwEMGgsgAhA0IQAgAhA0IQEgAhA0IQMgAigCQCAIQRBqIAsgASAAQQAQqAEgAhAPDRggAiADEB0gAhDUASACELYCDRggAiAAEB0gAkG6fxAuDRggAhCHAg0YIAIoAhBBO0YEQCACEA8NGQsgAkHqACADEBsaIAIgARAdIAIoAkAQpwEMGQsgAhAPDRcgAhDUAUEAIQEgCEEANgIMAkAgAigCECIAQVhHBEAgAEEoRw0BIAIgCEEMakEAEKYBGgwBCyACKAJALQBsQQJxRQRAIAJB8CFBABATDBkLIAIQDw0YQQEhAQsgAkEoEC4NFyAILQAMQQFxRQRAIAEhBCMAQUBqIgUkACACKAIAIQwgAigCQCIPKAK8ASEQIAIQNCEDIAIQNCERIAIQNCESIAIQNCETIAIQgwEaQQEhCSACKAJAIAVBEGogCyASIANBARCoASAFIBA2AiggAkHrAEF/EBshFSACKAJAKAKEAiENIAIgExAdIAIoAhAhAEFRIQFBfyEHAkACQAJAAkACQAJAAkACQAJAIAJBBBDWAw4CAAEICyAAQUlGIQogAEFRRiIBIQkgASAAQbF/RnJFIABBSUdxDQEgACEBCyACEA8NBAJAIAIoAhAiAEH7AEYgAEHbAEZyRQRAIABBg39GBEAgAigCKEUNAgsgAkGL3wBBABATDAYLQQEhCSACIAFBAEEBQX9BABDTAUEASA0HIAVBADYCPAwDCyAFIAwgAigCIBAXIgY2AjwgAhAPBEAgAigCACAGEBEMBQsgAiAGIAEQtQJFDQEgAigCACAGEBEMBAsCQAJAIAIoAhBBIHJB+wBHDQAgAiAFQQxqQQAQpgEiAUFZRyABQbd/R3ENACACQQBBAEEBIAUoAgxBAnFBARDTAUEATg0BDAULIAIQsgINBCACIAVBOGogBUE0aiAFQTxqIAVBCGpBAEEAQbt/ELoBDQQgAiAFKAI4IAUoAjQgBSgCPCAFKAIIQQRBABDSAQsgBUEANgI8QQAhCQwCCyACQbsBQbsBQbcBIAkbIAobEAwgAiAGEBogAiAPLwG8ARAWQQAhCQsgASEACyACQesAIBEQGxogAigCQCgChAIhFCACIBUQHUEBIQcCQCACKAIQQT1HDQACQCACEA9FBEBBACEHIAJBABC5AUUNAQsgDCAGEBEMAgsgBkUNACACQbcBEAwgAiAGEBogAiAPLwG8ARAWCyAMIAYQEQJAAkACQCACQcMAEFEEQCAFQQE2AiwgBSAFKAIgQQJqNgIgQfzFACEKQQAhASAHRQ0BDAMLIAIoAhBBt39HDQEgBARAIAJBi/0AQQAQEwwEC0EBIQEgBw0CQbg6IQogAEGxf0cNACAPLQBuQQFxRSAJQX9zcQ0CCyAFIAo2AgAgAkG6LCAFEBMMAgsgAkHJOEEAEBMMAQsgAhAPDQACQCABRQRAIAIQYEUNAQwCCyACEJcBDQELIAIgAigCQCgCvAEgEBC0AiACQfwAQf4AQf0AIAQbIAEbEAwgAkHrACADEBsaIAJBKRAuRQ0BC0F/IQcMAQsgAigCQCIAQYACaiIHIAAoAoQCIgkgFCANayIGahDMARogByAAKAKAAiANaiAGEIgBGiAAKAKAAiANakGxASAGEEUaIAIoAkAiBiAAKAKEAkEFazYCmAIgAyAGKAKsAiIAIAAgA0gbIQogCSANayEJIAMhAANAIAAgCkcEQCAGKAKkAiAAQRRsaiIMKAIEIgcgDUggByAUTnJFBEAgDCAHIAlqNgIECyAAQQFqIQAMAQsLIAIgERAdQX8hByACELYCDQAgAiACKAJAKAK8ASAQELQCIAIgAxAdAn8gAUUEQCAEBEAgAkEUEAwgAkEOEAwgAkEkEAwgAkEAEBYgAkGLARAMIAJBggEQDEGDAQwCCyACQYABEAwgAkEAEGxBgwEMAQsgAkH/ABAMQQ4LIQAgAkHpACATEBsaIAJBDhAMIAIgEhAdIAIgABAMIAIoAkAQpwEgAhDuAUEAIQcLIAVBQGskACAHRQ0ZDBgLIAIoAkAoArwBIQYgAhCDARogAigCECIAQTtGDRNBUSEDAkAgAkEEENYDDgIAEhgLIABBsX9GIABBUUZyDRAgACIDQUlGDREgAkEAEPMEDRcgAkEOEAwMEgsgAhAPDRYgA0HEAGohAUEAIQACQCACKAIwDQAgAigCEEGDf0cNACACKAIoDQAgAigCICEACwJ/IAIoAkAiBEGwAmohAyAEKAK8ASEFAkADQCADKAIAIgMEQCACIAUgAygCGBC0AiADKAIYIQUCQCABBEAgAygCDCIEQX9GDQEgAARAIAMoAgQgAEcNAgsMBAsgAygCCCIEQX9GDQAgAARAIAMoAgQgAEcNAQsMAwsgAygCHAR/IAJBgwEQDEEDBUEACyEEA0AgAygCECAESgRAIAJBDhAMIARBAWohBAwBCwsgAygCFEF/Rg0BIAJBBhAMIAJB7QAgAygCFBAbGiACQQ4QDAwBCwsCQCAARQRAIAEEQCACQfozQQAQEwwCCyACQcHCAEEAEBMMAQsgAkGC2gBBABATC0F/DAELIAJB6wAgBBAbGkEACw0WIAAEQCACEA8NFwsgAhC7AUUNFwwWCyACEA8NFSACENQBIAIQhwINFSACEIMBGiACEDQhBEF/IQEgAigCQCAIQRBqIAsgBEF/QQEQqAEgAkH7ABAuDRVBfyEDAkADQAJAAkACQCACKAIQIgBBwQBqDgIAAQILIAFBAEgEf0F/BSACQesAQX8QGwshACACIAEQHQNAIAIQDw0aIAJBERAMIAIQlwENGiACQToQLg0aIAJBqwEQDCACKAIQQb9/RgRAIAJB6gAgABAbIQAMAQsLIAJB6QBBfxAbIQEgAiAAEB0MAgsgAhAPDRggAkE6EC4NGCADQQBOBEAgAkGZGUEAEBMMGQsgAUEASARAIAJB6wBBfxAbIQELIAJBtAEQDCACQQAQOCACKAJAKAKEAkEEayEDDAELAkACQCAAQf0ARwRAIAFBAE4NASACQfcYQQAQEwwaCyACQf0AEC4NGSADQQBIDQEgAigCQCgCgAIgA2ogARBbIAIoAkAoAqQCIAFBFGxqIANBBGo2AgQMAwsgAkEHEPABRQ0BDBgLCyACIAEQHQsgAiAEEB0gAkEOEAwgAigCQBCnAQwSCyACENQBIAIQDw0UIAIQNCEBIAIQNCEAIAIQNCEDIAIQNCEEIAJB7AAgARAbGiACKAJAIAhBEGpBAEF/QX9BARCoASAIIAM2AiQgAhD2Ag0UIAIoAkAQpwEgAhD0AgRAIAJBDhAMIAJBBhAMIAJB7QAgAxAbGiACQQ4QDCACQesAIAQQGxoLAkACQAJAIAIoAhBBPWoOAgAPAQsgAhAPDRYgAhCDARogAiABEB0gAigCEEH7AEYEQCACQQ4QDAwOCyACQSgQLg0WIAIoAhAiAUH7AEYgAUHbAEZyDQECQCABQYN/RgRAIAIoAihFDQELIAJBoN4AQQAQEwwXCyAOIAIoAiAQFyEBAkAgAhAPRQRAIAIgAUFDELUCQQBODQELIA4gARARDBcLIAJBtwEQDCACIAEQOCACIAIoAkAvAbwBEBYMDAsgAkG8DEEAEBMMFQsgAkFRQQBBAUF/QQEQ0wFBAE4NCgwUCyACEA9FDRQMEwsgAigCQC0AbkEBcQRAIAJB/8AAQQAQEwwTCyACEA8NEiACEIcCDRIgAhCDARogAiACKAJAQdQAQQAQqQEiAEEASA0SIAJB7wAQDCACQdkAEAwgAiAAQf//A3EQFiACENQBIAIQtgINEgwPCyABQQFxRQ0BIAFBBHENBiACQQAQiQFBKkYNAQwGCyACKAIoBEAgAhDvAQwRC0FRIQMCQCACIAEQ1gMOAgAPEQsgAkGFARBRRQ0DIAJBARCJAUFFRw0DIAFBBHENBQsgAkGyEUEAEBMMDwsgAUEEcUUEQCACQfYQQQAQEwwPC0F/IQFBACEAIAJBAEEAEPkCRQ0QDBELIAIQDw0NIAIQuwFFDQ4MDQsgAhCXAQ0MAkAgAigCQCgCpAFBAE4EQCACQdkAEAwgAiACKAJALwGkARAWDAELIAJBDhAMCyACELsBRQ0NDAwLIAIoAiAhASMAQdAAayIAJAAgACACKAIAIABBEGogARCHATYCACACQb0oIAAQEyAAQdAAaiQADAsLQQAhACACQQFBACACKAIYIAIoAhQQ1gENCgwMCyACQSkQLg0JCyACQewAIAAQGxogAhCDARogAigCQCAIQRBqQQBBf0F/QQEQqAEgCCADNgIkIAIQ9gINCCACKAJAEKcBIAIQ7gEgAhDuASACEPQCBEAgAkEOEAwgAkEGEAwgAkHtACADEBsaIAJBDhAMIAJB6wAgBBAbGgsgACEBCyACIAEQHSACQe0AIAMQGxogAkEvEAwgAiADEB0gAigCEEFERgRAIAIQDw0IQQAhACACKAJAIAhBEGpBAEF/QX9BAhCoASACKAJAIgEoAqQBQQBOBEAgAigCACABQdEAEFYiAEEASA0JIAJB2AAQDCACIAIoAkAvAaQBEBYgAkHZABAMIAIgAEH//wNxEBYgAhDUAQsgAhD2Ag0IIAIoAkAiASgCpAFBAE4EfyACQdgAEAwgAiAAQf//A3EQFiACQdkAEAwgAiACKAJALwGkARAWIAIoAkAFIAELEKcBCyACQe4AEAwgAiAEEB0MCAsgACEDCyACEA8NBSACQQAgA0EAENgDDQULIAIgAigCQCgCvAEgBhC0AgsgAkE7EC4NAyACEDQhBCACEDQhACACEDQhAyACEDQhBSACKAJAIAhBEGogCyAFIABBABCoASADIQEgAigCEEE7RwRAIAIgBBAdIAIQlwENBCACQekAIAUQGxogBCEBCyACQTsQLg0DAkAgAigCEEEpRgRAIAggATYCHEEAIQQgASEADAELIAJB6wAgAxAbGiACKAJAKAKEAiEEIAIgABAdIAIQlwENBCACQQ4QDCABIANGDQAgAkHrACABEBsaCyACQSkQLg0DIAIoAkAoAoQCIQcgAiADEB0gAhC2Ag0DIAIgAigCQCgCvAEgBhC0AgJAIAEgA0YgACABRnJFBEAgAigCQCIBQYACaiIGIAEoAoQCIgkgByAEayIDahDMARogBiABKAKAAiAEaiADEIgBGiABKAKAAiAEakGxASADEEUaIAIoAkAiAyABKAKEAkEFazYCmAIgACADKAKsAiIBIAAgAUobIQYgCSAEayEJA0AgACAGRg0CIAMoAqQCIABBFGxqIgooAgQiASAESCABIAdOckUEQCAKIAEgCWo2AgQLIABBAWohAAwACwALIAJB6wAgABAbGgsgAiAFEB0gAigCQBCnAQsgAhDuAQwDCyAB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AQsCQCAEDQAgAykDACIFQSoQP0UNACAAIAVBPCAFQQAQEiIFEAsNASAAIAUgARBYIQYgACAFEAogBkUNACADKQMAEA0hBQwBCyAAIAIgARDCAiIBEAtFBEAgACACIARBA3RqKQMAQoCAgIAwQQEgAxAiIQUgACACKQMAEAogACACKQMIEAogBRALBEAgACABEAoMAgsgACAFEAoLIAEhBQsgAkEQaiQAIAULDAAgACABEAogARALC0QBAn8CQCAAQoCAgIBwVA0AIACnIgMvAQZBAkcNACADLQAFQQhxRQ0AIAIgAygCKDYCACABIAMoAiQ2AgBBASEECyAEC3gBAX8CQAJAAkACQAJAIAEoAgAiAkH/AGoOBAAAAwECCyAAKAIAIAEpAxAQCg8LIAAoAgAgASkDEBAKIAAoAgAgASkDGBAKDwsgAkGpf0cNAQsgACgCACABKAIQEBEPCyACQdUAakEtTQRAIAAoAgAgASgCEBARCwsNACAAIAEgAkEAEKAECw4AIAEgACgCEEErEOYCC9MBAwF/AX4BfCMAQRBrIgMkAAJ/IAAgA0EIaiABQQhrIgEpAwAQWQRAQoCAgIAwIQRBfwwBCwJ8AkACQAJAAkACQCACQYwBaw4EAgQBAAMLIAMrAwhEAAAAAAAA8D+gDAQLIAMrAwhEAAAAAAAA8L+gDAMLIAMrAwiaDAILEAEACyADKwMICyIFvQJ/IAWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyIAt71RBEAgAK0hBEEADAELIAUQFSEEQQALIQAgASAENwMAIANBEGokACAACw0AIAAgASACEA0QxAELSQECfyACQv////8HWARAIAAgASACpxCTAUGAgAEQ3AEPCyAAIAIQngMiA0UEQEF/DwsgACABIANBgIABENwBIQQgACADEBEgBAtKAQF/AkAgACABIAAoAgRB/////wdxIgIgASgCBEH/////B3EiARCxARDlBSIADQBBACEAIAEgAkYNAEF/QQEgASACSxshAAsgAAsgACAAIAEgAkEATgR+IAKtBSACuBAVCyADQYCAARDfAQvHCgIHfwF+IwBBIGsiCSQAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAIAFCIIinQQFqDgUDAgIAAQILIAAgAxAKIAAgAkGfPRDGAUF/IQUMCgsgACADEAog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EGogBUEBdBAjGiADIAMpAgQiCSAEKQIEfEL/////B4MgCUKAgICAeIOENwIEDAILIANBEGoiBSAGaiAEQRBqIAcQIxogAyADKQIEIgkgBCkCBHxC/////weDIgogCUKAgICAeIOENwIEIAUgCqdqQQA6AAAMAQsCfgJAAkAgBCkCBCIJp0H/////B3EgAykCBCIKp0H/////B3FqIgZBgICAgARPBEAgAEGTwwBBABBNDAELIAAgBiAJIAqEpyIHQR92EPwBIgUNAQtCgICAgOAADAELAkAgB0EATgRAIAVBEGogA0EQaiADKAIEQf////8HcRAjIgcgAygCBEH/////B3FqIARBEGogBCgCBEH/////B3EQIxogBiAHakEAOgAADAELIAVBEGoiBiADIAMoAgRB/////wdxEJQFIAYgAygCBEEBdGogBCAEKAIEQf////8HcRCUBQsgBa1CgICAgJB/hAshCSAAIAEQCgwBCyABIQkLIAAgAhAKIAkLQAAgAAJ/An8gAwRAIAEoAiQgAkEDdGpBBGoMAQtBACABKAIgIgNFDQEaIAMgAS8BKCACakEEdGoLKAIACxDgAQsLACAAQZ8JQQAQFAuBDAINfwR+IwBBgAFrIgskACALIQUjAEHgAWsiCCQAAkAgAb0iEkKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIBJC////////////AINCgYCAgICAgPj/AFoEQCAFQc7CuQI2AAAMAgsgAUQAAAAAAAAAAGMEQCAFQS06AAAgBUEBaiEFCyAFQdkLLQAAOgAIIAVB0QspAAA3AAAMAQsCQCAERQRAAn4gAZlEAAAAAAAA4ENjBEAgAbAMAQtCgICAgICAgICAfwsiE0KAgICAgICAEH1CgYCAgICAgGBUIBO5IAFicg0BIAhB1QFqIgNBADoAACATIBNCP4ciEnwgEoUhEiACrSEUA0AgAyICQQFrIgNBMEHXACASIBIgFIAiFSAUfn2nIgRBCkgbIARqOgAAIBIgFFohBCAVIRIgBA0ACyATQgBTBEAgAkECayIDQS06AAALIAUgAxCABgwCC0QAAAAAAAAAACABIAFEAAAAAAAAAABhGyEBIARBAkcNACMAQYACayICJAACQCACQYABaiABIANBAWoiBEEAEIcDIAJqLQB/QTVHDQAgAkGAAWogASAE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k8MAQQAQTQwBCyABIAAoAgxBA2xBAm0QSkH/////AxCxASEBIAAoAhAiBCACQYACSHJFBEAgACABEO4DIQMMAwsgACgCACAAKAIEIAEgBHQgBGtBEWogBUEMahC0ASICDQELIAAQigMMAQsgACgCECEDIAUoAgwhBCAAIAI2AgQgACAEIAN2IAFqQf////8DELEBNgIMQQAhAwsgBUEQaiQAIAMLgQECAn8BfgJAIAEpAgQiBEL//////////79/VgRAIAEoAgwhAAwBCyAAKAI0IARCIIinIAAoAiRBAWtxQQJ0aiECIAAoAjghAwNAIAMgAigCACIAQQJ0aigCACICIAFGDQEgAkEMaiECIAANAAtBzvUAQbfjAEH4FEGtDhAAAAsgAAvzBgIGfwF+AkACQAJAAn8gAkECTARAIAIgASkCBCIJQj6Ip0YEQCAAIAEQ1QIiAxDxAUUNBSABIAEoAgBBAWs2AgAgAw8LIAAoAjQgACgCJEEBayABIAIQ5gVB/////wNxIgdxIghBAnRqIQMgCadB/////wdxIQUDQCACIAMoAgAiA0UNAhoCQCAAKAI4IANBAnRqKAIAIgQpAgQiCUIgiKdB/////wNxIAdHIAlCPoinIAJHciAJp0H/////B3EgBUdyDQAgBCABIAUQ5QUNACADEPEBDQQgBCAEKAIAQQFqNgIADAQLIARBDGohAwwACwALIAJBA0chB0EDCyEFAkAgACgCPA0AQQAhA0HTASAAKAIsQQNsQQJtEEoiBEH/////A0sNASAAIAAoAjggBEECdBDlASIGRQ0BIAAoAiwiAkUEQCAAQRAQmwIiAkUEQCAAIAYQHwwDCyACQQE2AgAgAiACKQIEQoCAgICAgICAQIQ3AgQgBiACNgIAIAAgACgCKEEBajYCKEEBIQILIAAgAjYCPCAAIAY2AjggACAENgIsIARBAWshBgNAIAIgBE8NASAAKAI4IAJBAnRqQQAgAkEBaiIDIAIgBkYbEOQFNgIAIAMhAgwACwALAkAgAQRAIAEpAgQiCUL//////////z9YBEAgASAJIAWtQj6GhDcCBAwCCyAAIAmnIgJBH3UgAkH/////B3EgAkEfdnRqQRFqEOYBIgJFBEBBACEDDAQLIAJBATYCACACIAIpAgRC/////3eDIAEpAgRCgICAgAiDhCIJNwIE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cFQEQEEADwsgAaciAi8BBkEpRgRAIwBBEGsiBCQAAkACQCAAIARBCGogAUHiABCFASICRQ0AIAQpAwgiARAQBEAgACACKQMAEJgEIQMMAgsgACABIAIpAwhBASACEDUiARALDQAgACABECwiA0UEQEEAIQMMAgsgACACKQMAEKABIgJBAEgNACACRQ0BIABB6iJBABAUC0F/IQMLIARBEGokACADDwsgAiACLQAFQf4BcToABUEBCy4BAX8gAKcpAyAiAEKAgICAcINCgICAgJB/UQR/IACnKAIEQf////8HcQVBAAsLCgAgACgCAEF8cQszACAAIAJBARD8ASIARQRAQoCAgIDgAA8LIABBEGogASACQQF0ECMaIACtQoCAgICQf4QLZQICfwF+QQQhAkKAgICAICEEAkACQAJAAkACQAJAIAEQVCIDQQhqDgoDAgUFBQUFBQQBAAsgA0EHRg0DDAQLQQYhAgwCC0EFIQIMAQtBByECCyAAKAIoIAJBA3RqKQMAIQQLIAQLYAEBfCAAKQIEQv//////////P1gEQCABIAErAwhEAAAAAAAA8D8gACgCALciAqOgOQMIIAEgASsDECAAKAIEIgBBH3UgAEH/////B3EgAEEfdnRqQRFquCACo6A5AxALC+kGAQV/AkACQAJAAkACQAJAAkACQAJAIAEtAARBD3EOBgABBAIDBgULIAAgASgCECIHIAIRAwAgBxAnIQUDQCAHKAIgIANKBEACQCAFKAIERQ0AIAEoAhQgA0EDdGohBAJAAkACQAJAIAUoAgBBHnZBAWsOAwABAgMLIAQoAgAiBgRAIAAgBiACEQMACyAEKAIEIgRFDQMgACAEIAIRAwAMAwsgBCgCACIELQAFQQFxRQ0CIAAgBCACEQMADAILIAAgBBCaBCACEQMADAELIAAgBCkDACACECELIANBAWohAyAFQQhqIQUMAQsLIAEvAQYiA0EBRg0GIAAoAkQgA0EYbGooAgwiA0UNBiAAIAGtQoCAgIBwhCACIAMREQAPCwNAIAEoAjggA0oEQCAAIAEoAjQgA0EDdGopAwAgAhAhIANBAWohAwwBCwsgASgCMCIBRQ0FIAAgASACEQMADwsgAS0ABUEBcUUNBSAAIAEoAhApAwAgAhAhDwsgASgCIARAIAAgAUEoaiACEO8DCyAAIAEpAxAgAhAhIAAgASkDGCACECEPCyABKAIsIgFFDQIgACABIAIRAwAPCxABAAsgAUHkAWohAyABQeABaiEHA0AgByADKAIAIgVHBEAgBUEIayEDQQAhBANAIAMoAiAgBEoEQAJAIAMoAhwgBEEUbGoiBigCCA0AIAYoAgQiBkUNACAAIAYgAhEDAAsgBEEBaiEEDAELCyAAIAMpA0AgAhAhIAAgAykDSCACECEgACADKQNgIAIQISAAIAMpA2ggAhAhIAVBBGohAwwBCwsgACABKQPAASACECEgACABKQPIASACECEgACABKQOwASACECEgACABKQO4ASACECEgACABKQOoASACECFBACEDA0AgA0EIRgRAQQAhAwNAIAAoAkAgA0oEQCAAIAEoAiggA0EDdGopAwAgAhAhIANBAWohAwwBCwsgACABKQOYASACECEgACABKQOgASACECEgACABKQNQIAIQISAAIAEpA0AgAhAhIAAgASkDSCACECEgACABKQM4IAIQISAAIAEpAzAgAhAhIAEoAiQiAQRAIAAgASACEQMACwUgACABIANBA3RqKQNYIAIQISADQQFqIQMMAQsLCw8LQZLiAEG34wBBjixByzoQAAALiAICAX4CfyMAQTBrIgQkAEHD5gAhBUKAgICA4AAhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABEFRBCGoOEAUGCQkJCQoEAAECAwkJCwgJCyAEIAE+AgAgBEEQaiIFQSBBleMAIAQQVRoMCQsgAEEDQQIgAacbEDEhAwwJCyAAQQEQMSEDDAgLIABBxQAQMSEDDAcLIAAgAUEAEJwDIgEQCwRAIAEhAwwHCyAAIAEgAhCfBCEDIAAgARAKDAYLIAJFDQELIAEQDSEDDAQLIABBvMMAQQAQFAwDCyAAIAEQSUEKQQBBABDLAiEDDAILQbDmACEFCyAAIAUQdCEDCyAEQTBqJAAgAwusBAIJfwF+AkACQAJAAkAgAkKAgICAcINCgICAgJB/UgRAIAAgAhArIgIQC0UNAQwCCyACEA0hAgsgAqciCykCBCINp0H/////B3EhBgJAIA1CgICAgAiDUARAIAtBEGohBUEAIQMDQCAEIAZGRQRAIAMgBCAFai0AAEEHdmohAyAEQQFqIQQMAQsLIANFBEAgBSEJIAENBAwFCyAAIAMgBmpBABD8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ACgCACAQaiIGIAJqIAYgAyAQaxDpASAAKAIAIgYgEGogAyAGaiACECMaDAALAAsJACABIAIQ8QULlQEBA34gAb0iAkL///////////8AgyEDIAC9IgRC////////////AINCgYCAgICAgPj/AFoEQCADQoGAgICAgID4/wBUDwsCf0F/IANCgICAgICAgPj/AFYgACABY3INABpBASAAIAFkDQAaQQAgAEQAAAAAAAAAAGINABogBEIAUwRAIAJCP4enQX9zDwsgAkI/iKcLC6MBAQF+AkACQCACRQRAIABBLxAxIQQgARAQIQIMAQsgAykDACEEAn4CQCABEBAiAkUNACAEEPYDRQ0AIABB0PkAIAAgACgCECAEpxDVAhAxQcL5ABC9AQwBCyAAIAQQKwsiBBALDQELIAINACAAIAFBBRBtIgEQC0UEQCAAIAEgBBDNASAAIAFBMCAEpykCBEL/////B4NBABAZGgsgASEECyAEC0oCAX8BfkKAgICA4AAhBCAAIAEgAhCZASIDBH4gAxCYAQRAIAJFBEBCAA8LIAAQc0KAgICA4AAPCyADKAIgNQIQBUKAgICA4AALCyoAIAAgASACEJkBIgBFBEBCgICAgOAADwsgACgCIDUCDEKAgICAcIQQDQtGAQF/AkAgACgCCCACaiIDIAAoAgxKBEAgACADIAEQ1AINAQsDQCACQQBMBEBBAA8LIAJBAWshAiAAIAEQlAFFDQALC0F/C3gBBX8gASgCBEH/////B3EiA0UEQCACDwsgACgCBEH/////B3EhBSADQQFrIQYgAUEAEC8hBwJAA0AgAiADaiAFSg0BIAAgByACENcBIgRBAEggAyAEaiAFSnINASAAIAEgBEEBaiICQQEgBhDCAw0ACyAEDwtBfwuCAQECfwJAAkAgACABEIIEIgNBAEgNACADRQ0BIAAgAUHtACABQQAQEiIBEAsNAEGJHCECAkAgARAQDQAgARAmDQAgACABEDwiARALDQFBACECIAGnQecAQQAQ1wEhAyAAIAEQCiADQQBODQJB3sUAIQILIAAgAkEAEBQLQX8hAgsgAgtcAQF/AkACQAJAAkAgAUIgiKdBAWoOAwECAAILIAEQDQ8LIAGnIgIvAQZBBkcNACACKQMgIgFCgICAgHCDQoCAgIAQUQ0BCyAAQc87QQAQFEKAgICA4AAhAQsgAQsQAEG3/gAgAEELEKQCQQBHC10BAn9Bqv4AIQMCQAJAIAEoAgRB/////wdxIgQgAkwNACABIAIQL0ElRw0AQbEZIQMgAkECaiAETg0AIAEgAkEBakECEMMDIgJBAE4NAQsgACADEMQDQX8hAgsgAgtUACMAQRBrIgIkACAAIAJBCGogAykDABBHBH5CgICAgOAABSACKQMIQoCAgICAgID4/wCDQoCAgICAgID4/wBSrUKAgICAEIQLIQEgAkEQaiQAIAELVAAjAEEQayICJAAgACACQQhqIAMpAwAQRwR+QoCAgIDgAAUgAikDCEL///////////8Ag0KAgICAgICA+P8AVq1CgICAgBCECyEBIAJBEGokACABC/gCAgN/A34jAEEwayIIJAAgA0IAIANCAFUbIQ0gBUEBayEKIAVBAEwhBUIAIQMDQAJAIAMgDVEEQCAEIQwMAQtCfyEMIAAgAiADIAhBKGoQigEiCUEASA0AAkAgCUUNACAGEBBFBEAgCCAIKQMoNwMAIAMhCyADQoCAgIAIWgRAIAO5EBUhCwsgCCACNwMQIAggCzcDCCAIIAAgBiAHQQMgCBAiIgs3AyggACAIKQMAEAogACAIKQMIEAogCxALDQILAkACQAJAIAUNACAAIAgpAygiCxDAASIJQQBIDQEgCUUNACAAIAhBIGogCxBAQQBIDQEgACABIAsgCCkDICAEIApCgICAgDBCgICAgDAQ0gQiBEIAUw0BIAAgCxAKDAMLIARC/////////w9TDQEgAEGEwwBBABAUIAgpAyghCwsgACALEAoMAgsgACABIAQgCCkDKBBuQQBIDQEgBEIBfCEECyADQgF8IQMMAQsLIAhBMGokACAMCwwAIABCACAAQgBVGwsoAAJAIAEQEEUEQCABECZFDQELIAAgARA8DwsgACABQThBAEEAELoCC6MCAgZ/AX4jAEEwayICJAACQAJAIAMpAwAiARAgRQ0AQoCAgIDgACELIAAgARCYBCIDQQBIDQEgA0UEQCAAQdbKAEEAEBQMAgsgACACQSxqIAJBKGogAaciCUEDEJABDQEgAigCLCEGIAIoAighB0EAIQMCQANAIAMgB0cEQCAGIANBA3RqKAIEIQhBgIIBIQUCQCAERQ0AIAAgAkEIaiAJIAgQUyIKQQBIDQMgCkUNACAC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wP8AgyAAQjiGhCAAQhiGQoCAgICA4D+DIABCCIZCgICAgPAfg4SEIABCCIhCgICA+A+DIABCGIhCgID8B4OEIABCKIhCgP4DgyAAQjiIhISEC10BBH8gASEDAkADQCACIANNIARBBEtyDQEgAy0AACIGQf8AcSAEQQdsdCAFciEFIARBAWohBCADQQFqIQMgBkGAAXENAAsgACAFNgIAIAMgAWsPCyAAQQA2AgBBfwteAQF/AkAgAS0AB0GAAXEEQCAAIAFBEGogAkEBdBAjGgwBCyACQQAgAkEAShshAiABQRBqIQEDQCACIANGDQEgACADQQF0aiABIANqLQAAOwEAIANBAWohAwwACwALC7ABAQJ/IwBBEGsiBiQAAkACQCACECBFDQAgAqciBy8BBkEMRw0AIActAClBDEcNACAAIAEgAyADBH8gBAUgBkKAgICAMDcDCCAGQQhqCyAFIAcuASogBygCJBESACECDAELAkAgACACIAEgAyAEECIiAhALRQRAIAIQIA0BIAAgAhAKIABBgh1BABAUCyAFQQA2AgBCgICAgOAAIQIMAQsgBUECNgIACyAGQRBqJAAgAgsUAQF+IAAgARApIQIgACABEAogAgscAQF/IABCgICAgHBaBH8gAKctAAVBB3YFQQALCw0AIAAgASACQQAQ3QELQwACfCABvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRARAAAAAAAAPh/IACZRAAAAAAAAPA/YQ0BGgsgACABEIEGCwt7AQF+AkACfiAEQQRxBEBBJiECIAAgARBhDAELQSUhAiAAIAEQKQsiARALDQAgACACEKIBIgUQCw0AIABBEBAtIgIEQCACQQA2AgwgAiAEQQNxNgIIIAIgATcDACAFIAIQiwEgBQ8LIAAgBRAKCyAAIAEQCkKAgICA4AALlQECAn4BfyAAIAEQMSEDAkAgARBcDQBBACAAKAIQKAI4IAFBAnRqKAIAKQIEIgJCgICAgICAgIBAg0KAgICAgICAgIB/UiACQoCAgIDw////P4NQIAJC//////////+/f1ZxGw0AIAKnQX9zQR92QQEgAkL/////B4NQGyEECyAEBH4gAEH95gAgA0H75gAQvQEFIAMLC6cBAQV/IACnIgMoAhAiASABKAIYQX9zQQJ0QaR+cmooAgAhAiABECchAQNA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gICAMCEFAkACQCAAIAJBCGogACABECkiARBADQACQCACKQMIIgdCAFcEQAwBCyAHQgF9IQYCQAJAAkACQCABIAJBBGogAhCNAkUNACAHIAIoAgAiCK1SDQAgAachCSACKAIEIQMgBEUNASADKQMAIQUgAyADQQhqIAhBA3RBCGsQ6QEMAgsCQCAEBEAgACABQgAQYiIFEAsNBiAAIAFCAEIBIAZBARCCA0UNAQwGCyAAIAEgBhBiIgUQCw0FCyAAIAEgBhCTAkEATg0CDAQLIAhBA3QgA2pBCGspAwAhBQsgCSAJKAIoQQFrNgIoCyAHQoGAgIAIVA0AIAa5EBUhBgsgACABQTAgBhBIQQBODQELIAAgBRAKQoCAgIDgACEFCyAAIAEQCiACQRBqJAAgBQsQACAAIAMpAwBBESAEEIEDC94EAgV+A38jAEEQayILJAACfgJAAkACQCAAIAEQKSIGQoCAgIBwVA0AIAanIgovAQZBAkcNACAKLQAFQQlxQQlHDQAgCigCEBAnLQADQQhxRQ0AIAooAhQpAwAiAUL/////D1YNACALIAFCIIZCIIciBzcDCCAHIAo1AihSDQAgByACrHwiBUL/////B1UNACAKNQIgIAVTBEAgACAKIAWnENMFDQMLAn8gBEUgAkEATHJFBEAgCigCJCIEIAJBA3RqIAQgAadBA3QQ6QFBAAwBCyABpwshDEEAIQQgAkEAIAJBAEobIQIDQCACIARGRQRAIAMgBEEDdGopAwAQDSEBIAooAiQgBCAMakEDdGogATcDACAEQQFqIQQMAQsLIAogBT4CKCAKKAIUIAVC/////w+DNwMAIAVCgICAgAh8IQEMAQsgACALQQhqIAYQQA0BIAspAwgiASACrCIIfCIFQoCAgICAgIAQWQRAIABBo8MAQQAQFAwCCwJAIARFIAJBAExyRQRAQgAhByAAIAYgCEIAIAFBfxCCAw0DDAELIAEhBwsgAkEAIAJBAEobrSEIQgAhAQNAIAEgCFIEQCABIAd8IQkgAachAiABQgF8IQEgACAGIAkgAyACQQN0aikDABANEI8BQQBODQEMAwsLIAAgBkEwIAVCgICAgAh8IgFC/////w9YBH4gBUL/////D4MFIAW5EBULEEhBAEgNAQsgACAGEAogBUL/////D4MgAUL/////D1gNARogBbkQFQwBCyAAIAYQCkKAgICA4AALIQEgC0EQaiQAIAELPAAgAUEAQdAAEEUiASAENgIMIAEgADYCACABIAIgA2o2AjwgASACNgI4IAFBATYCCCABQqCAgIAQNwMQC38BBH8gAS0AAEHbAEYEQCABQQFqIgMQQkEBayECIAAoAhAoAjghBEHCASEBA0AgAUHPAUcEQAJAIAQgAUECdGooAgAiBSgCBEH/////B3EgAkcNACAFQRBqIAMgAhB1DQAgACABEBcPCyABQQFqIQEMAQsLEAEACyAAIAEQyAELFwAgACAAKQPAASABIAIgA0EAQX8QtwULNQEBfyAAKALsASIHRQRAIABB0t0AQQAQFEKAgICA4AAPCyAAIAEgAiADIAQgBSAGIAcRNQALxgICAn4Cf0KAgICAMCECAkACQCABKQJUIgNCGIZCOIenDQAgA0IghkI4h6cEQCADQhCGQjiHp0UNASAAIAEpA2AQDRCSAUKAgICA4AAPCyABIANC/////49gg0KAgICAEIQ3AlQDQCABKAIUIARKBEAgASgCECAEQQN0aigCBCIFKQJUQhiGQjiHp0UEQCAAIAUQuAUiAhALDQQgACACEAoLIARBAWohBAwBCwsCQCABKAJQIgQEQEKAgICA4ABCgICAgDAgACABIAQRAgBBAEgbIQIMAQsgACABKQNIQoCAgIAwQQBBABA1IQIgAUKAgICAMDcDSAsgAhALBEAgAUEBOgBZIAEgACgCECkDgAEQDTcDYAsgASABKQJUQv///4eAYINCgICACIQ3AlQLIAIPCyABIAEpAlRC/////49ggzcCVCACC8AFAgd/AX4jAEEQayIFJAACQCABKQJUIglCKIZCOIenDQAgASAJQv//g3iDQoCABIQ3AlQDQAJAIAEoAhQgA0wEQEEAIQMDQCABKAIgIANKBEACQCABKAIcIgQgA0EUbGoiAigCCEEBRw0AIAIoAgwiB0H9AEYNACAAIAVBCGogBUEMaiABKAIQIAIoAgBBA3RqKAIEIAcQ7AMiAkUNACAAIAIgASAEIANBFGxqKAIQEOsDDAQLIANBAWohAwwBCwtBACECIAEoAlANAyABKAJIKAIkIQhBACEDQQAhBANAAkAgASgCOCAETARAA0AgAyABKAIgTg0CIAEoAhwgA0EUbGoiAigCCEUEQCAIIAIoAgBBAnRqKAIAIgQgBCgCAEEBajYCACACIAQ2AgQLIANBAWohAwwACwALIAEoAhAgASgCNCAEQQxsaiIHKAIIQQN0aigCBCECAkACQCAHKAIEIgZB/QBGBEAgACACEIkDIgkQC0UNAQwGCyAAIAVBCGogBUEMaiACIAYQ7AMiBgRAIAAgBiACIAcoAgQQ6wMMBgsCQCAFKAIMIgYoAgxB/QBGBEAgACAFKAIIKAIQIAYoAgBBA3RqKAIEEIkDIgkQCw0HIABBARDmAyICRQRAIAAgCRAKDAgLIAAgAkEYaiAJEB4MAQsgBigCBCICRQRAIAUoAggoAkgoAiQgBigCAEECdGooAgAhAgsgAiACKAIAQQFqNgIACyAIIAcoAgBBAnRqIAI2AgAMAQsgACAIIAcoAgBBAnRqKAIAQRhqIAkQHgsgBEEBaiEEDAELC0F/IQIgACABKQNIQoGAgIAQQQBBABAiIgkQCw0DIAAgCRAKQQAhAgwDCyADQQN0IQRBfyECIANBAWohAyAAIAQgASgCEGooAgQQuQVBAE4NAQwCCwtBfyECCyAFQRBqJAAgAgv/AgIGfwJ+AkAgASkCVEIwhkI4h6cNAAJAIAEoAlAEQANAIAIgASgCIE4NAiABKAIcIAJBFGxqIgMoAghFBEAgAEEAEOYDIgRFBEBBfw8LIAMgBDYCBAsgAkEBaiECDAALAAtBfyEEIAEpA0ghCEF/IQcgACAAKQMwQQ0QUCIJEAtFBEAgCaciAyAIpyICNgIgIAIgAigCAEEBajYCACADQgA3AiQCQAJAAkAgAigCPCIFRQ0AIAAgBUECdBBqIgVFDQEgAyAFNgIkQQAhAwNAIAMgAigCPE4NASACKAIkIANBA3RqLQAAIgZBAXEEQCAAIAZBA3ZBAXEQ5gMiBkUNAyAFIANBAnRqIAY2AgALIANBAWohAwwACwALIAEgCTcDSEEAIQcMAQsgCSEICyAAIAgQCgsgBw0BCyABQQE6AFVBACECA0AgASgCFCACTARAQQAPCyACQQN0IQNBfyEEIAJBAWohAiAAIAMgASgCEGooAgQQugVBAE4NAAsLIAQLiwEAAkACQAJAAkACQCABQiCIp0EDag4CAQACCyAAIAAgASADIAQQjAQgAkEAQQAQNQ8LIAAgARAKAkAgACABpyIDELoFQQBIDQAgACADELkFQQBIDQAgACADELgFIgEQC0UNAwsgAEECEKUEDAELIAAgARAKIABBtN4AQQAQFAtCgICAgOAAIQELIAELRAEBfyAAQeQBaiECIABB4AFqIQADfyAAIAIoAgAiAkYEQEEADwsgASACQQRrKAIARgR/IAJBCGsFIAJBBGohAgwBCwsLqAMBBH8jAEEQayIFJAACfyAAKAIQIgYoAqgBIgNFBEACfyACLQAAQS5HBEAgACACIAIQQhCkAwwBCyABEP4FIQMgACACEEIgAyABa0EAIAMbIgNqQQJqEC0iBAR/IAMgBCABIAMQIyIBakEAOgAAAkADQAJAIAItAABBLkcNAEECIQMCQAJAIAItAAFBLmsOAgABAgsgAi0AAkEvRw0BIAEtAABFDQMgARD+BSIDQQFqIAEgAxsiA0GL9gAQrARFDQEgA0GK9gAQrARFDQEgAyABIANJa0EAOgAAQQMhAwsgAiADaiECDAELCyABLQAARQ0AIAEQQiABakEvOwAACyABEEIgAWogAhCABiABBUEACwsMAQsgACABIAIgBigCsAEgAxELAAshA0EAIQICQCADRQ0AAkAgACADEMgBIgRFDQAgACAEELwFIgEEQCAAIAMQGCAAIAQQESABIQIMAgsgACAEEBEgBigCrAEiAUUEQCAFIAM2AgAgAEH/+wAgBRDRAgwBCyAAIAMgBigCsAEgAREBACECCyAAIAMQGAsgBUEQaiQAIAILbwIDfwF+AkAgACgCECgCjAEiAkUNAANAIAFBAEoEQCABQQFrIQEgAigCACICDQEMAgsLIAIpAwgiBEKAgICAcFQNACAEpyIBLwEGEPcBRQ0AIAEoAiAiAS0AEkEEcUUNACAAIAEoAkAQFyEDCyADC1IBBH8gACgCICICQQAgAkEAShshBEEAIQIDQAJAIAIgBEcEfyAAKAIcIgUgAkEUbGooAhAgAUcNASAFIAJBFGxqBUEACw8LIAJBAWohAgwACwAL2AEBBn9BfyECIAEgAUEBa3FFBEAgACABQQJ0EJsCIgUEfyABQf////8DakH/////A3EhBgNAIAMgACgCJE9FBEAgACgCNCADQQJ0aigCACECA0AgAgRAIAAoAjggAkECdGooAgAiBCgCDCEHIAQgBSAGIAQoAghxQQJ0aiIEKAIANgIMIAQgAjYCACAHIQIMAQsLIANBAWoh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ACAIIAsQZEEAIQkMAQsgACAIIAsQZAsgB0EwaiQAIAkLUwECfwJAAkAgARAgRQ0AIAEQnAUNAEF/IQMgACACEDkiBEUNASAAIAQQmwUhAiAAIAQQESACEAsNASAAIAFBNiACQQEQGUEASA0BC0EAIQMLIAMLMgACQCACRQ0AIAEQIEUNACABEJwFDQAgACABQTYgACACEDFBARAZQQBODQBBfw8LQQALaAEBfyAAKAIQIQICQCABEFxFBEAgAigCLCABTQ0BIAIoAjggAUECdGooAgAiAa1CgICAgJB/hBANGiAAIAFBBBD1Aw8LQYf3AEG34wBBzhdBhDwQAAALQZDIAEG34wBBzxdBhDwQAAAL1gEBBH8gACgCyAEiBigCECIEIAQoAhggAXFBf3NBAnRqKAIAIQUgBBAnIQQCQANAIAVFDQEgASAEIAVBAWsiB0EDdGoiBSgCBEcEQCAFKAIAQf///x9xIQUMAQsLIAYoAhQgB0EDdGohBAJAIANBAUYNACAEKQMAEIQBBEAgACACEAogACAFKAIEEOABQX8PCyAFLQADQQhxDQAgACACEAogAEGAgAEgARDeAQ8LIAAgBCACEB5BAA8LIAAgACkDwAEgASACQYCABkGAgAIgABD6ARsQlgILfQEBfwJAIAJCgICAgHCDQoCAgICQf1EgA0KAgICAcINCgICAgJB/UXFFBEAgAEHP3gBBABAUDAELIAAgAUESEG0iARALDQAgAaciBCACPgIgIAQgAz4CJCAAIAFB1QBCAEECEBkaIAEPCyAAIAMQCiAAIAIQCkKAgICA4AALDQAgACABQeP6ABCWAwvSAQMBfgF8AX8DQAJAQX8hBQJAAkACQCACEFQOCAAAAAACAgMBAgsgAkIghkIghyEDQQAhBQwCC0EAIQUgAhBJIgS9Qv///////////wCDQoCAgICAgID4/wBWDQFCgICAgICAgICAfyEDIAREAAAAAAAA4MNjDQFC////////////ACEDIAREAAAAAAAA4ENkDQEgBJlEAAAAAAAA4ENjBEAgBLAhAwwCC0KAgICAgICAgIB/IQMMAQsgACACEJ4BIgIQC0UNAQsLIAEgAzcDACAFC7wBAgJ/AXwDQAJAQX8hBAJAAkACQCACEFQOCAAAAAACAgMBAgsgAqchA0EAIQQMAgtBACEEIAIQSSIF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IAAgCCAKrSAGQYCAARCrAUEASA0BIApBAWohCgwACwALIAAgCRAKIAAgARAKIAAgCBAKQoCAgIDgACEICyALQRBqJAAgCCEBIAAgBRAKIAEQCw0CIAMgAzUCBCIFNwMIDAELIAAgA0EIaiAGEEANASAGEA0hASADKQMIIQULIABCgICAgDAgBSAEQeWKAWoxAACGEIwDIgYQCw0AIAAgByAGQgAgBRDzAw0AQQAhBANAIAcgBK0gBVkNAhogACABIAQQeSIGEAsNASAAIAcgBCAGEJUCIQogBEEBaiEEIApBAE4NAAsLIAAgARAKIAchAUKAgICA4AALIQUgACABEAoLIANBEGokACAFIQcMAwsgAykDABANIQUMAQsgABBzDAELAkAgACABIAQQbSIHEAsEQCAAIAUQCgwBCyAAIAcgBSAGIAgQ8wNFDQEgACAHEAoLQoCAgIDgACEHCyACQRBqJAAgBwvYAwICfgJ/IwBBIGsiBCQAAkAgAUL///////////8AgyIDQoCAgICAgMCAPH0gA0KAgICAgIDA/8MAfVQEQCABQgSGIABCPIiEIQMgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIANCgYCAgICAgIDAAHwhAgwCCyADQoCAgICAgICAQH0hAiAAQoCAgICAgICACIVCAFINASACIANCAYN8IQIMAQsgAFAgA0KAgICAgIDA//8AVCADQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiADQv///////7//wwBWDQBCACECIANCMIinIgVBkfcASQ0AIARBEGogACABQv///////z+DQoCAgICAgMAAhCICIAVBgfcAaxBxIAQgACACQYH4ACAFaxCgAiAEKQMIQgSGIAQpAwAiAEI8iIQhAiAEKQMQIAQpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyAAQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIARBIGokACACIAFCgICAgICAgICAf4OEvwsPACAAIAEgAkEAQQMQgQILrw8CBX8OfiMAQdACayIFJAAgBEL///////8/gyELIAJC////////P4MhCiACIASFQoCAgICAgICAgH+DIQ0gBEIwiKdB//8BcSEIAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgCEH//wFrQYGAfksNAQsgAVAgAkL///////////8AgyIMQoCAgICAgMD//wBUIAxCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhDQwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCENIAMhAQwCCyABIAxCgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhDQwDCyANQoCAgICAgMD//wCEIQ1CACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgDIRQBEBCgICAgICA4P//ACANIAIgA4RQGyENQgAhAQwCCyACIAOEUARAIA1CgICAgICAwP//AIQhDUIAIQEMAgsgDEL///////8/WARAIAVBwAJqIAEgCiABIAogClAiBht5IAZBBnStfKciBkEPaxBxQRAgBmshBiAFKQPIAiEKIAUpA8ACIQELIAJC////////P1YNACAFQbACaiADIAsgAyALIAtQIgcbeSAHQQZ0rXynIgdBD2sQcSAGIAdqQRBrIQYgBSkDuAIhCyAFKQOwAiEDCyAFQaACaiALQoCAgICAgMAAhCISQg+GIANCMYiEIgJCAEKAgICAsOa8gvUAIAJ9IgRCABBwIAVBkAJqQgAgBSkDqAJ9QgAgBEIAEHAgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQcCAFQfABaiAEQgBCACAFKQOIAn1CABBwIAVB4AFqIAUpA/gBQgGGIAUpA/ABQj+IhCIEQgAgAkIAEHAgBUHQAWogBEIAQgAgBSkD6AF9QgAQcCAFQcABaiAFKQPYAUIBhiAFKQPQAUI/iIQiBEIAIAJCABBwIAVBsAFqIARCAEIAIAUpA8gBfUIAEHAgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQcCAFQZABaiADQg+GQgAgAkIAEHAgBUHwAGogAkIAQgAgBSkDqAEgBSkDoAEiDCAFKQOYAXwiBCAMVK18IARCAVatfH1CABBwIAVBgAFqQgEgBH1C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QiB9IhVBACAOa61VBEBByK4EQcQANgIAIANBoAFqIAAQggEgA0GQAWogAykDoAEgAykDqAFCf0L///////+///8AEDIgA0GAAWogAykDkAEgAykDmAFCf0L///////+///8AEDIgAykDgAEhFyADKQOIAQwBCyAOQeIBa6wgFVcEQCAFQQBOBEADQCADQaADaiAXIBlCAEKAgICAgIDA/79/EHsgFyAZQoCAgICAgID/PxCnBCECIANBkANqIBcgGSAXIAMpA6ADIAJBAEgiBhsgGSADKQOoAyAGGxB7IBVCAX0hFSADKQOYAyEZIAMpA5ADIRcgBUEBdCACQQBOciIFQQBODQALCwJ+IBUgDqx9QiB8IhanIgJBACACQQBKGyANIBYgDa1TGyICQfEATgRAIANBgANqIAAQggEgAykDiAMhGCADKQOAAyEaQgAMAQsgA0HgAmpEAAAAAAAA8D9BkAEgAmsQ6AEQtQEgA0HQAmogABCCASADQfACaiADKQPgAiADKQPoAiADKQPQAiIaIAMpA9gCIhgQ/QUgAykD+AIhGyADKQPwAgshFiADQcACaiAFIAVBAXFFIBcgGUIAQgAQ/wFBAEcgAkEgSHFxIgBqEKECIANBsAJqIBogGCADKQPAAiADKQPIAhAyIANBkAJqIAMpA7ACIAMpA7gCIBYgGxB7IANBoAJqIBogGEIAIBcgABtCACAZIAAbEDIgA0GAAmogAykDoAIgAykDqAIgAykDkAIgAykDmAIQeyADQfABaiADKQOAAiADKQOIAiAWIBsQpgQgAykD8AEiFiADKQP4ASIYQgBCABD/AUUEQEHIrgRBxAA2AgALIANB4AFqIBYgGCAVpxD8BSADKQPgASEXIAMpA+gBDAELQciuBEHEADYCACADQdABaiAAEIIBIANBwAFqIAMpA9ABIAMpA9gBQgBCgICAgICAwAAQMiADQbABaiADKQPAASADKQPIAUIAQoCAgICAgMAAEDIgAykDsAEhFyADKQO4AQshFSAMIBc3AxAgDCAVNwMYIANBsANqJAAgDCkDGCEVIAwpAxAhFgwFCyACKQNwQgBTDQAgAiACKAIEQQFrNgIECyACIQUgAyECIAAhCEEAIQMjAEGQxgBrIgEkAEEAIA0gDmoiE2shFAJAAn8DQCACQTBHBEACQCACQS5HDQQgBSgC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AAJ/IARC////////P4MhCQJ/IARCMIinQf//AXEiBkH//wFHBEBBBCAGDQEaQQJBAyADIAmEUBsMAgsgAyAJhFALCyEHIAJCMIinIghB//8BcSIGQf//AUYNACAHDQELIAVBEGogASACIAMgBBAyIAUgBSkDECIBIAUpAxgiAiABIAIQ7wUgBSkDCCECIAUpAwAhBAwBCyABIAJC////////P4MgBq1CMIaEIgogAyAEQv///////z+DIARCMIinQf//AXEiB61CMIaEIgkQ/wFBAEwEQCABIAogAyAJEP8BBEAgASEEDAILIAVB8ABqIAEgAkIAQgAQMiAFKQN4IQIgBSkDcCEEDAELIAYEfiABBSAFQeAAaiABIApCAEKAgICAgIDAu8AAEDIgBSkDaCIKQjCIp0H4AGshBiAFKQNgCyEEIAdFBEAgBUHQAGogAyAJQgBCgICAgICAwLvAABAyIAUpA1giCUIwiKdB+ABrIQcgBSkDUCEDCyAJQv///////z+DQoCAgICAgMAAhCEJIApC////////P4NCgICAgICAwACEIQogBiAHSgRAA0ACfiAKIAl9IAMgBFatfSILQgBZBEAgCyAEIAN9IgSEUARAIAVBIGogASACQgBCABAyIAUpAyghAiAFKQMgIQQMBQsgC0IBhiAEQj+IhAwBCyAKQgGGIARCP4iECyEKIARCAYYhBCAGQQFrIgYgB0oNAAsgByEGCwJAIAogCX0gAyAEVq19IglCAFMEQCAKIQkMAQsgCSAEIAN9IgSEQgBSDQAgBUEwaiABIAJCAEIAEDIgBSkDOCECIAUpAzAhBAwBCyAJQv///////z9YBEADQCAEQj+IIQEgBkEBayEGIARCAYYhBCABIAlCAYaEIglCgICAgICAwABUDQALCyAIQYCAAnEhByAGQQBMBEAgBUFAayAEIAlC////////P4MgBkH4AGogB3KtQjCGhEIAQoCAgICAgMDDPxAyIAUpA0ghAiAFKQNAIQQMAQsgCUL///////8/gyAGIAdyrUIwhoQhAgsgACAENwMAIAAgAjcDCCAFQYABaiQAC78CAQF/IwBB0ABrIgQkAAJAIANBgIABTgRAIARBIGogASACQgBCgICAgICAgP//ABAyIAQpAyghAiAEKQMgIQEgA0H//wFJBEAgA0H//wBrIQMMAgsg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ayIBJAAgAUEKOgAPAkACQCAAKAIQIgIEfyACBSAAEK4EDQIgACgCEAsgACgCFCICRg0AIAAoAlBBCkYNACAAIAJBAWo2AhQgAkEKOgAADAELIAAgAUEPakEBIAAoAiQRAQBBAUcNACABLQAPGgsgAUEQaiQAC4kEAgR+An8CQCABvSIEQgGGIgNQIARC////////////AINCgICAgICAgPj/AFZyRQRAIAC9IgVCNIinQf8PcSIGQf8PRw0BCyAAIAGiIgAgAKMPCyADIAVCAYYiAloEQCAARAAAAAAAAAAAoiAAIAIgA1EbDwsgBEI0iKdB/w9xIQcCfiAGRQRAQQAhBiAFQgyGIgJCAFkEQANAIAZBAWshBiACQgGGIgJCAFkNAAsLIAVBASAGa62GDAELIAVC/////////weDQoCAgICAgIAIhAshAgJ+IAdFBEBBACEHIARCDIYiA0IAWQRAA0AgB0EBayEHIANCAYYiA0IAWQ0ACwsgBEEBIAdrrYYMAQsgBEL/////////B4NCgICAgICAgAiECyEEIAYgB0oEQANAAkAgAiAEfSIDQgBTDQAgAyICQgBSDQAgAEQAAAAAAAAAAKIPCyACQgGGIQIgBkEBayIGIAdKDQALIAchBgsCQCACIAR9IgNCAFMNACADIgJCAFINACAARAAAAAAAAAAAog8LAkAgAkL/////////B1YEQCACIQMMAQsDQCAGQQFrIQYgAkKAgICAgICABFQhByACQgGGIgMhAiAHDQALCyAFQoCAgICAgICAgH+DIQIgBkEASgR+IANCgICAgICAgAh9IAatQjSGhAUgA0EBIAZrrYgLIAKEvwvVAQEEfyAAKAJUIQMCQCAAKAIUIAAoAhwiBWsiBgRAIAAgBTYCFCAAIAUgBhCHBiAGSQ0BCwJAIAMoAhBB4QBHBEAgAygCACEEDAELIAMgAygCBCIENgIACyADKAIMIARqIAEgAygCCCAEayIBIAIgASACSRsiBBAjGiADIAMoAgAgBGoiATYCACABIAMoAgRNDQAgAyABNgIEAn8gAygCCCICIAFLBEAgAygCDCABagwBCyAALQAAQQRxRSACRXINASACIAMoAgxqQQFrC0EAOgAACyAECxgBAX8jAEEQayIBIAA5AwggASsDCCAAogufAQECfgJAIAMpAwAiBEKAgICA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IA43A3ggACAPuSAOuaM5A4gBIABB88wANgJwIAJBmoEBIABB8ABqELYBCyAHKQOgASIOUEUEQCAAIA43A2ggAEHeIjYCYCACQYiAASAAQeAAahCjAQsCQCAHKQOoASIOUA0AIAAgDjcDWCAAQdQeNgJQIAJBiIABIABB0ABqEKMBIAcpA7ABIg5QDQAgACAONwNIIABBzR42AkAgAkGIgAEgAEFAaxCjASAHKQOwASEPIAAgBykDuAEiDkIDhjcDMCAAIA65IA+5ozkDOCAAIA43AyggAEHWHzYCICACQciAASAAQSBqELYBCyAHKQPAASIOUEUEQCAAIAcpA8gBNwMQIAAgDjcDCCAAQfofNgIAIAJBlYABIAAQowELIABBsAZqJAAgAigCTBogAhCzAxogAiACKAIMEQQAGiACLQAAQQFxRQRAIAIoAjQiAARAIAAgAigCODYCOAsgAigCOCIBBEAgASAANgI0CyACQZivBCgCAEYEQEGYrwQgATYCAAsgAigCYBDnASACEOcBCyAMEAggDBDnAQsgB0HQAWokAAv8AgIEfwR+IwBBIGsiAiQAQoCAgIAwIQgCQAJAIAAgARCWASIEQQBIDQAgACACQQxqIAMpAwAgBCAEEGMNACACIAQ2AgggAykDCCIJEBAEfyAEBSAAIAJBCGogCSAEIAQQYw0BIAIoAggLIAIoAgwiBWtBABBKIQMgACABQQAQmQEiBEUNACAELwEGIQcgAiADrSIKNwMYIAIgATcDECAAQQIgAkEQahDrAiIIEAsNACADQQBMDQEgACABEOcCDQAgACAIEOcCDQACQCAAIAhBABCZASIGRQ0AIAQvAQYgBi8BBkcNACAGEJEEIANJDQAgBBCRBCADIAVqSQ0AIAYoAiQgBCgCJCAFIAdB5YoBai0AACIAdGogAyAAdBAjGgwCC0IAIQkDQCAJIApRDQIgACABIAUgCadqrRCfASILEAsNASAAIAggCSALQYCAARDfASEDIAlCAXwhCSADQQBODQALCyAAIAgQCkKAgICA4AAhCAsgAkEgaiQAIAgLzQIBAX4gACABEJYBIgJBAEgEQEKAgICA4AAPCwJAIAJFDQACQAJAAkACQAJAIAGnIgAvAQZB5YoBai0AAA4EAAECAwQLIAAoAiQiACACaiECA0AgACACQQFrIgJPDQUgAC0A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NgIAIAIgAzYCFCAAIAJBCGoQwQIhASACQQE2AgAgARALBEAgACACEMADIAEPCyACKAJEQQhrIgMpAwAhBiADQoCAgIAwNwMAIAFC/////w9YBEAgAadBAkYEQCACQQI2AgAgBEECNgIAIAYPCyAEQQA2AgAgBg8LIAAgARAKIAAgAhDAAyAGDwsgAykDABANDwsgACADKQMAEA0QkgEMAQsgAEHRKkEAEBQLQoCAgIDgACEBCyABC2UBAX4gAykDACIBEPYDRQRAIABBrzxBABAUQoCAgIDgAA8LQoCAgIAwIQQgAacpAgRCgICAgICAgIBAg0KAgICAgICAgIB/UQR+IAFC/////w+DQoCAgICQf4QQDQVCgICAgDALCy8BAX5CgICAgOAAIQEgACADKQMAECsiBBALBH5CgICAgOAABSAAIASnQQIQ9QMLC0kCAX4BfyAAIAEQwQMiARALBEAgAQ8LQoCAgIAwIQIgAaciAygCBEGAgICAeEcEQCAAIAAoAhAgAxDVAhAxIQILIAAgARAKIAILCQAgACABEMEDC04BAX4jAEEQayICJAAgAiAAIAEQwQMiATcDCAJAIAEQCwRAIAEhBAwBCyAAQoCAgIAwQQEgAkEIahDHBCEEIAAgARAKCyACQRBqJAAgBAstAEKAgICA4AAgACADKQMAIAMpAwhBABCaAiIAQQBHrUKAgICAEIQgAEEASBsLhgEBA34gAykDACIBIQQgAkEETgRAIAMpAxghBAsgAUL/////b1gEQCAAEChCgICAgOAADwsgAykDECEGQoCAgIDgACEFAkAgACADKQMIEDkiAkUNACAAIAEgAiAGEA0gBEEAEIcEIQMgACACEBEgA0EASA0AIANBAEetQoCAgIAQhCEFCyAFCyoAIAMpAwAiAUL/////b1gEQCAAEChCgICAgOAADwsgACABQQNBABCBAwtjAQF+IAMpAwAiBEL/////b1gEQCAAEChCgICAgOAADwtCgICAgOAAIQECQCAAIAMpAwgQOSICRQ0AIAAgBCACEHghAyAAIAIQESADQQBIDQAgA0EAR61CgICAgBCEIQELIAELYwECfgJAAkAgAykDACIBQv////9vWARAIAAQKAwBCyADKQMIIQUgASEEIAJBA04EQCADKQMQIQQLIAAgBRA5IgINAQtCgICAgOAADwsgACABIAIgBEEAEBIhASAAIAIQESABC2YBAX4gAykDACIEQv////9vWARAIAAQKEKAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBA5IgJFDQAgACAEIAJBABDcASEDIAAgAhARIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQuKAQIBfwJ+IwBBEGsiBCQAIAMpAwghBSADKQMAIgYhAQJAAkACQAJAIAJBA0gNACADKQMQIgEQsgENACAAQd8pQQAQFAwBCyAAIARBDGogBRCKBCICDQELQoCAgIDgACEBDAELIAAgBiABIAQoAgwiAyACEJADIQEgACACIAMQmQMLIARBEGokACABCxwAIAAgAykDAEEAIAJBAWsQSiADQQhqQQIQmwMLQwAjAEEQayICJAACfkKAgICA4AAgACACQQxqIAMpAwAQxQENABpCICACKAIMIgBFDQAaIABnrQshASACQRBqJAAgAQtQACMAQRBrIgIkAEKAgICA4AAhAQJAIAAgAkEMaiADKQMAEJICDQAgACACQQhqIAMpAwgQkgINACACKAIIIAIoAgxsrSEBCyACQRBqJAAgAQsGACAAtrsLUAAgACAAKQPQASIBQgyIIAGFIgFCGYYgAYUiAUIbiCABhSIBNwPQASABQp26s/uUkv2iJX5CDIhCgICAgICAgPg/hL9EAAAAAAAA8L+gEBUL9QMDA3wFfwN+IwBBEGsiCCQAIAhCADcDCAJAAkAgAkEATA0AQoCAgIDgACEBIAAgCEEIaiADKQMAEEcNAUEBIQkgCCsDCCEEIAJBAUcEQANAIAIgCUYNAiAAIAggAyAJQQN0aikDABBHDQMgCUEBaiEJIAgrAwAhBSMAQSBrIgckACAEvUL///////////8AgyINIAW9Qv///////////wCDIgwgDCANVhsiDr8hBAJAIA5CNIinIgpB/w9GDQAgDSAMIAwgDVQbIgy/IQUCQCAOUA0AIAxCNIinIgtB/w9GDQAgCyAKa0HBAE4EQCAFIASgIQQMAgsCfCALQf4LTwRAIAREAAAAAAAAMBSiIQQgBUQAAAAAAAAwFKIhBUQAAAAAAACwawwBC0QAAAAAAADwPyAKQbwESw0AGiAERAAAAAAAALBroiEEIAVEAAAAAAAAsGuiIQVEAAAAAAAAMBQLIQYgB0EYaiAHQRBqIAUQgwYgB0EIaiAHIAQQgwYgBiAHKwMAIAcrAxCgIAcrAwigIAcrAxign6IhBAwBCyAFIQQLIAdBIGokAAwACwALIASZIQQLIAS9An8gBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLIgC3vVEEQCAArSEBDAELIAQQFSEBCyAIQRBqJAAgAQtOACAAIABEAAAAAAAA8L9EAAAAAAAA8D8gAEQAAAAAAAAAAGMbIAC9Qv///////////wCDQoCAgICAgID4/wBWGyAARAAAAAAAAAAAYRsLgwECAn4BfyAAvSIBQjSIp0H/D3EiA0H+B00EQCABQoCAgICAgICAgH+DIQIgA0H+B0cgAUKAgICAgICA8L9/UXJFBEAgAkKAgICAgICA+D+Evw8LIAK/DwsgA0GyCE0EfCABQj+HIAF8QgFBswggA2uthiIBQgGIfEIAIAF9g78FIAALC90EAgJ8BX8jAEEQayIIJAACfiACRQRARAAAAAAAAPD/RAAAAAAAAPB/IAQbEBUMAQsCfCADKQMAIgFC/////w9YBEAgAkEBIAJBAUobIQsgAachCUEBIQcDQCAHIAtHBEAgCbcgAyAHQQN0aikDACIBQoCAgIAQWg0DGiABpyEKAn8gBARAIAkgChBKDAELIAkgChCxAQshCSAHQQFqIQcMAQsLIAmtDAILQoCAgIDgACAAIAhBCGogARBHDQEaQQEhByAIKwMICyEFIAcgAiACIAdIGyECA0AgAiAHRwRAQoCAgIDgACAAIAggAyAHQQN0aikDABBHDQIaAkAgBb1C////////////AINCgICAgICAgPj/AFYNACAIKwMAIga9Qv///////////wCDQoCAgICAgID4/wBWBEAgBiEFDAELIAQEQCAFIAUgBqUgBr1C////////////AINCgICAgICAgPj/AFYbIAYgBb1C////////////AINCgICAgICAgPj/AFgbIAa9IAW9g78gBUQAAAAAAAAAAGIgBkQAAAAAAAAAAGJyGyEFDAELIAUgBSAGpCAGvUL///////////8Ag0KAgICAgICA+P8AVhsgBiAFvUL///////////8Ag0KAgICAgICA+P8AWBsgBr0gBb2EvyAFRAAAAAAAAAAAYiAGRAAAAAAAAAAAYnIbIQULIAdBAWohBwwBCwsgBb0CfyAFmUQA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DAELIAAgAkEIaiADIARsIAZBH3YQqwMNAAJAIARBAUcEQANAIANBAEwNAiACQQhqIAVBACAEEFcaIANBAWshAwwACwALIAJBCGogBUEAEC8gAxDKBBoLIAAgARAKIAJBCGoQNyEBDAELIAAgARAKQoCAgIDgACEBCyACQSBqJAAgAQulAQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3EiBCAEEGMNACACIAQ2AgggAykDCCIHEBBFBEAgACACQQhqIAcgBCAEEGMNASACKAIIIQQLIAAgBSACKAIMIgMgBCADEEoQmwEhBgsgACABEAoLIAJBEGokACAGC6cBAgN/An4jAEEQayICJAACQCAAIAEQYSIBEAsEQCABIQcMAQtCgICAgOAAIQcCQCAAIAJBDGogAykDACABpyIGKAIEQf////8HcSIEIAQQYw0AIAIgBCACKAIMIgVrIgQ2AgggACAGIAUgAykDCCIIEBAEfyAEBSAAIAJBCGogCCAEQQAQYw0BIAIoAggLIAVqEJsBIQcLIAAgARAKCyACQRBqJAAgBwu6AQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3FBABBjDQAgAiAFKAIEQf////8HcSIENgIIIAMpAwgiBxAQRQRAIAAgAkEIaiAHIARBABBjDQEgAigCCCEECyAAIAUgAigCDCIDIAQgAyAESCIFGyAEIAMgBRsQmwEhBgsgACABEAoLIAJBEGokACAGC5IEAgl+A38jAEEQayINJAAgAykDCCEHIAMpAwAhBAJAAkACQCABEBBFBEAgARAmRQ0BCyAAQYkcQQAQFAwBCwJAIAQQECICDQAgBBAmDQBCgICAgOAAIQUgACAEQcgBIARBABASIggQCw0CIAgQEA0AIAgQJg0AIA0gBzcDCCANIAE3AwAgACAIIARBAiANEDUhBQwCC0KAgICAMCEKAkAgACABECsiDBALBEBCgICAgDAhBQwBCyAAEE4iBRALDQACQCAHEBAEQCANQX82AgAMAQsgACANIAcQxQFBAEgNAQsgDKciDikCBCEBIAAgBBArIgoQCw0AAkAgDSgCACIDRQ0AIAGnQf////8HcSEPAkAgAgRADAELIAqnIgIpAgRC/////weDIQsgDwRAIAFC/////weDIAt9IAtQrSIEfSEHIAOtIQgDQAJAIAQgCXwiASAHVQ0AIA4gAiABpxDLBCIDQQBIDQAgACAOIAmnIAMQmwEiARALDQUgACAFIAYgAUEAEKsBQQBIDQUgCyADrHwhCSAGQgF8IgYgCFINAQwECwsgBkL/////D4MhBgwBCyALUA0BCyAAIA4gCacgDxCbASIBEAsNASAAIAUgBiABQQAQqwFBAEgNAQsgACAMEAogACAKEAoMAgsgACAFEAogACAMEAogACAKEAoLQoCAgIDgACEFCyANQRBqJAAgBQvSAgEDfiMAQTBrIgIkACACIAE3AyggAykDACEFAkACQCABEBBFBEAgARAmRQ0BCyAAQYkcQQAQFEKAgICA4AAhBwwBCwJAIAUQEA0AIAUQJg0AQoCAgIDgACEHIAAgBSAEIAVBABASIgYQCw0BAkAgBEHFAUcNACAAIAUQzARBAE4NACAAIAYQCgwCCyAGEBANACAGECYNACAAIAYgBUEBIAJBKGoQNSEHDAELIAIgACABECsiBjcDCEKAgICA4AAhByAGEAsNACACIAU3AxACQAJAAn8gBEHFAUcEQEKAgICAMCEBQQEMAQsgAEH6xQAQdCIBEAsNASACIAE3AxhBAgshAyAAIAApA0ggAyACQRBqEK8BIQUgACABEAogBRALRQ0BCyAAIAYQCgwBCyAAIAUgBEEBIAJBCGoQugIhByAAIAIpAwgQCgsgAkEwaiQAIAcL+QICBX8DfiMAQRBrIgUkAAJAIAAgARBhIgoQCwRAIAohAQwBCwJAIAAgAykDABCCBCIGBEBCgICAgOAAIQFCgICAgDAhCyAGQQBMDQEgAEG+3QBBABAUDAELQoCAgIDgACEBIAAgAykDABArIgsQCw0AIAunIgcoAgQhCCAFIAqnIgkoAgRB/////wdxIgZBACAEQQJGGzYCDAJAIAJBAkgNACADKQMIIgwQEA0AIAAgBUEMaiAMIAZBABBjDQELIAYgCEH/////B3EiBmshAgJAAkACQAJAIAQOAgABAgsgBSgCDCEDDAILIAUoAgwiAyACSiEEQoCAgIAQIQEgAyECIARFDQEMAgsgBSAFKAIMIAZrIgM2AgwgAyECC0KAgICAECEBIANBAEggAiADSHINAANAIAkgByADQQAgBhDCA0UEQEKBgICAECEBDAILIAIgA0chBCADQQFqIQMgBA0ACwsgACAKEAogACALEAoLIAVBEGokACABC68DAQV+IAEQEARAIAAQgQQhAQsgACABQTsgAUEAEBIiBRALBEAgBQ8LAkACQCAFECBFBEAgACAFEAogACABEI8DIgJFDQECfyAEQQBIBEAgAigCKEEYagwBCyACIARBA3RqQdgAagspAwAQDSEFCyAAIAVBAxBQIQEgACAFEAogARALDQECQCADIARBB0ZBA3RqKQMAIgUQEEUEQCAAIAUQKyIFEAsNASAAIAFBMyAFQQMQGRoLIARBB0YEQCADKQMAIQYjAEEQayICJABCgICAgDAhBQJAAkAgACAGQQAQ9QEiBhALBEBCgICAgDAhCAwBCyAAIAZB6gAgBkEAEBIiCBALDQAgABBOIgUQCw0AA0AgACAGIAggAkEMahCsASIJEAtFBEAgAigCDA0DIAAgBSAHIAkQbiEDIAdCAXwhByADQQBODQELCyAAIAZBARCwARoLIAAgBRAKQoCAgIDgACEFCyAAIAgQCiAAIAYQCiACQRBqJAAgBRALDQEgACABQTQgBUEDEBkaCyAAIAFBAEEAQQEQxgIgAQ8LIAAgARAKC0KAgICA4AAhAQsgAQuNAwMHfwF8AX4jAEEQayIFJAACQCAAIAEQYSIBEAsNAAJAAkAgACADKQMAECsiDRALDQAgDaciCigCBEH/////B3EhBiABpyILKAIEQf////8HcSEHAkAgBARAIAcgBmshBEF/IQggAkECSA0BIAAgBSADKQMIEEcNAiAFKwMAIgy9Qv///////////wCDQoCAgICAgID4/wBWDQEgBQJ/QQAgDEQAAAAAAAAAAGUNABogDCAEt2NFDQIgDJlEAAAAAAAA4EFjBEAgDKoMAQtBgICAgHgLIgQ2AgwMAQtBACEEIAVBADYCDCACQQJOBEAgACAFQQxqIAMpAwggB0EAEGMNAiAFKAIMIQQLIAcgBmshCUEBIQgLQX8hAyAJIARrIAhsQQBIIAYgB0tyDQEDQCALIAogBEEAIAYQwgNFBEAgBCEDDAMLIAQgCUYNAiAEIAhqIQQMAAsACyAAIAEQCiAAIA0QCkKAgICA4AAhAQwBCyAAIAEQCiAAIA0QCiADrSEBCyAFQRBqJAAgAQuGAQIBfgF/IwBBEGsiAiQAAkAgACABEGEiBBALBEAgBCEBDAELQoCAgIDgACEBAkAgACACQQxqIAMpAwAQwwENAEKAgICAMCEBIAIoAgwiA0EASA0AIAMgBKciBSgCBEH/////B3FPDQAgBSACQQxqENkBrSEBCyAAIAQQCgsgAkEQaiQAIAELTAEBfyACQQAgAkEAShshAiAAIAEQYSEBA0ACQCACIARGDQAgARALDQAgACABIAMgBEEDdGopAwAQDRDIAiEBIARBAWohBAwBCwsgAQu0AQIBfgF/IwBBEGsiAiQAAkAgACABEGEiBBALBEAgBCEBDAELAn5CgICAgOAAIAAgAkEMaiADKQMAEMMBDQAaAkAgAigCDCIDQQBOBEAgAyAEpyIFKQIEIgGnQf////8HcUkNAQsgAEEAQQAQ1wIMAQsgAAJ/IAFCgICAgAiDUEUEQCAFIANBAXRqLwEQDAELIAMgBWotABALQf//A3EQpwMLIQEgACAEEAoLIAJBEGokACABC6QBAgJ+AX8jAEEQayICJAACQCAAIAEQYSIEEAsEQCAEIQEMAQtCgICAgOAAIQECQCAAIAJBDGogAykDABDDAQ0AQoCAgIDAfiEBIAIoAgwiA0EASA0AIAMgBKciBikCBCIFp0H/////B3FPDQAgBUKAgICACINQRQRAIAYgA0EBdGozARAhAQwBCyADIAZqMQAQIQELIAAgBBAKCyACQRBqJAAgAQuRAgIBfwZ+IwBBIGsiBCQAIAAgBEEIakEAEEEaQoCAgIAwIQUCfgJAAkAgACADKQMAECkiBhALDQAgACAAIAZB8AAgBkEAEBIQlgUiBRALDQAgACAEIAUQQEEASA0AQgAhASAEKQMAIgdCACAHQgBVGyEIIAdCAX0hByACrCEJA0AgASAIUQ0CIAAgACAFIAEQYhA8IgoQCw0BIARBCGogChCNARogASAHWSECIAFCAXwhASABIAlZIAJyDQAgBEEIaiADIAGnQQN0aikDABCaAUUNAAsLIAAgBhAKIAAgBRAKIARBCGoQQ0KAgICA4AAMAQsgACAGEAogACAFEAogBEEIahA3CyEBIARBIGokACABC+sBAgN/AXwjAEEgayIEJAACfgJAIAAgBCACEEENACACQQAgAkEAShshBgJAA0AgBSAGRwRAAkAgAyAFQQN0aikDACIBQv////8PWARAIAGnIgJB///DAE0NAQwECyAAIARBGGogARBHDQQgBCsDGCIHRAAAAAAAAAAAYyAHRAAAAAD//zBBZHINAyAHAn8gB5lEAAAAAAAA4EFjBEAgB6oMAQtBgICAgHgLIgK3Yg0DCyAFQQFqIQUgBCACEL4BRQ0BDAMLCyAEEDcMAgsgAEGJGBBpCyAEEENCgICAgOAACyEBIARBIGokACABC4oBAQJ/IwBBIGsiBCQAIAAgBEEIaiACEEEaIAJBACACQQBKGyECAn4DQCACIAVHBEACQCAAIARBBGogAyAFQQN0aikDABCSAkUEQCAEQQhqIAQvAQQQlAFFDQELIARBCGoQQ0KAgICA4AAMAwsgBUEBaiEFDAELCyAEQQhqEDcLIQEgBEEgaiQAIAELCQAgACABEM0ECx8AIAAgARDNBCIBEAsEfiABBSAAQQNBAiABpxsQMQsLgQEBAXwjAEEQayICJAACfkKAgICAECADKQMAIgEQjgFFDQAaQoCAgIDgACAAIAJBCGogARBHDQAaIAIrAwgiBL1CgICAgICAgPj/AINCgICAgICAgPj/AFIgBJwgBGFxIASZRP///////z9DZXGtQoCAgIAQhAshASACQRBqJAAgAQsmAEKAgICA4AAgACADKQMAENQFIgBBAEetQoCAgIAQhCAAQQBIGwsgACADKQMAEI4BRQRAQoCAgIAQDwsgACABIAIgAxDQBAsgACADKQMAEI4BRQRAQoCAgIAQDwsgACABIAIgAxDRBAsJACAAIAEQrQILxQECAX8BfiMAQRBrIgIkAAJ+IAAgARCtAiIBEAsEQCABDAELQQohBQJAAkAgBA0AIAMpAwAiBhAQDQAjAEEQayIDJABBfyEEAkAgACADQQxqIAYQwwENACADKAIMIgRBJWtBXEsNACAAQabwABBpQX8hBAsgA0EQaiQAIAQiBUEASA0BC0KAgICA4AAgACACQQhqIAEQWQ0BGiAAIAIrAwggBUEAQQAQywIMAQsgACABEApCgICAgOAACyEBIAJBEGokACABC8MBAgF+AXwjAEEQayICJAACQCAAIAEQrQIiBBALBEAgBCEBDAELQoCAgIDgACEBIAAgAiAEEFkNAAJAAkAg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CyAAIAUQCkKAgICA4AAhBQwDBSADQQFqIQMMAQsACwALIAAgBRAKIAAgAUH/AEECIAJBEGoQxQIhBSAAIAIpAxAQCiAAIAIpAxgQCgsgAkEgaiQAIAULOQAjAEEQayICJAAgAkKAgICAMDcDACACIAMpAwA3AwggACABQf8AQQIgAhDFAiEBIAJBEGokACABC6UBAgF/A34jAEEQayICJABCgICAgOAAIQUCQCAAIAFBKhBoRQ0AIAAgAUKAgICAMBDyASIGEAsEQCAGIQUMAQsgACACIAYQwgIhByAAIAYQCgJAIAcQCw0AIAAgASADIAIQuwIhAwNAIARBAkZFBEAgACACIARBA3RqKQMAEAogBEEBaiEEDAELCyADRQ0AIAAgBxAKDAELIAchBQsgAkEQaiQAIAUL4AECA34BfyMAQRBrIgYkACABQQVGBEAgAikDECEDIAAgAikDGBD4ASEBIAYgAikDICIENwMIIAYCfiADEBAEQCAEEA0iAyABRQ0BGiAAIAMQkgFCgICAgOAADAELIAAgA0KAgICAMEEBIAZBCGoQIgsiAzcDACADEAsiAQRAIAYgABCRASIDNwMAC0KAgICAMCEEIAAgAiABQQN0aikDACIFEBAEfiADBSAAIAVCgICAgDBBASAGECIhBCAGKQMACxAKIAZBEGokACAEDwtB6/AAQbfjAEHX6QJBheQAEAAAC4EBAQN/AkAgAUEyED8iBEUNACAEQcwAaiEDIARByABqIQUDQCADKAIAIgMgBUZFBEAgACADKQMQIAIQISAAIAMpAxggAhAhIAAgAykDICACECEgACADKQMoIAIQISADQQRqIQMMAQsLIAQoAgRBfnFBBEYNACAAIARBCGogAhDvAwsLFgEBfyABQTIQPyICBEAgACACEK0FCwslAQF/IAFBMBA/IgMEQCAAIAMpAwAgAhAhIAAgAykDCCACECELCycBAX8gAUEwED8iAgRAIAAgAikDABAlIAAgAikDCBAlIAAgAhAfCwsWAQF/IAGnKAIgIgIEQCAAIAIQrgULCygBAX8gAacoAiAiAgRAIAAgAigCCBCFBSAAIAIpAwAQJSAAIAIQHwsLgAEBBX8gAUEqED8iBQRAIAVBBGohBgNAIARBAkZFBEAgBiAEQQN0aiIHQQRqIQMDQCADKAIAIgMgB0ZFBEAgACADKQMIIAIQISAAIAMpAxAgAhAhIAAgAykDGCACECEgA0EEaiEDDAELCyAEQQFqIQQMAQsLIAAgBSkDGCACECELC2kBBn8gAUEqED8iBARAIARBBGohBQNAIAJBAkZFBEAgBSACQQN0aiIGKAIEIQMDQCADIAZGRQRAIAMoAgQhByAAIAMQvAIgByEDDAELCyACQQFqIQIMAQsLIAAgBCkDGBAlIAAgBBAfCwtXAQF/QQAhAgN+IAJBAkYEQEKAgICAMA8LIAUgAkEDdCIEaiIGKQMAEBAEfiAGIAMgBGopAwAQDTcDACACQQFqIQIMAQUgAEGgGkEAEBRCgICAgOAACwsLzwIBA38jAEEQayIHJAACfiAAIAEgBUEjahBoIgNFBEAgBEEANgIAQoCAgIDgAAwBCwJAIAMpAwAiARAQDQAgASAFQR9qED8iBgRAAkAgAygCDCIIRQRAIAYoAgghAgwBCyAIKAIUIQIgACgCECAIEPEDCyAGQQRqIQYDQCACIAZGBEAgA0EANgIMIAAgAykDABAKIANCgICAgDA3AwAMAwsgAkEMaygCAARAIAIoAgQhAgwBCwsgAkEQayIGIAYoAgBBAWo2AgAgAyAGNgIMIARBADYCACADKAIIIgNFBEAgAikDEBANDAMLIAcgAikDECIBNwMAIAVFBEAgAikDGCEBCyAHIAE3AwggA0EBRgRAIAEQDQwDCyAAQQIgBxCSAwwCC0HK6gBBt+MAQf3nAkHdExAAAAsgBEEBNgIAQoCAgIAwCyEBIAdBEGokACABC3gBAn5CgICAgOAAIQYCQCAAIAEgBEEDcSICQR9qEGhFDQAgACACQSNqEKIBIgUQCw0AIABBEBAtIgJFBEAgACAFEApCgICAgOAADwsgARANIQEgAkEANgIMIAIgBEECdTYCCCACIAE3AwAgBSACEIsBIAUhBgsgBguTAgIDfgJ/IwBBIGsiCCQAQoCAgIDgACEFAkAgACABIARBH2oQaCIJRQ0AIAMpAwAhB0KAgICAMCEGIAJBAk4EQCADKQMIIQYLIAAgBxBnDQAgCUEEaiECIAkoAgghAwNAIAIgA0YEQEKAgICAMCEFDAILIANBDGsoAgAEQCADKAIEIQMFIANBEGsiCSAJKAIAQQFqNgIAIAggAykDEBANIgU3AwggBEUEQCADKQMYEA0hBQsgCCABNwMQIAggBTcDACAAIAcgBkEDIAgQIiEFIAAgCCkDABAKIARFBEAgACAIKQMIEAoLIAMoAgQhAyAAKAIQIAkQ8QMgBRALDQIgACAFEAoLDAALAAsgCEEgaiQAIAULMQAgACABIAJBH2oQaCIARQRAQoCAgIDgAA8LIAAoAgwiAEEATgRAIACtDwsgALgQFQtZAQF/IAAgASAEQR9qEGgiAkUEQEKAgICA4AAPCyACQQRqIQMgAigCCCEEA34gAyAERgR+QoCAgIAwBSAEQRBrIQUgBCgCBCEEIAAoAhAgAiAFEIcFDAELCwtJACAAIAEgBEEfahBoIgJFBEBCgICAgOAADwsgACACIAMpAwAQgAMQ/wIiA0UEQEKAgICAEA8LIAAoAhAgAiADEIcFQoGAgIAQCzUAIAAgASAEQR9qEGgiAkUEQEKAgICA4AAPCyAAIAIgAykDABCAAxD/AkEAR61CgICAgBCECz4AIAAgASAEQR9qEGgiAkUEQEKAgICA4AAPCyAAIAIgAykDABCAAxD/AiIARQRAQoCAgIAwDwsgACkDKBANC/YDAgN+BH9CgICAgOAAIQcCQCAAIAEgBEEfahBoIgJFDQAgAykDABCAAyEFAkAgAigCAEUNACAFECANACAAEChCgICAgOAADwtCgICAgDAhBiAEQQFxRQRAIAMpAwghBgsCQCAAIAIgBRD/AiIEBEAgACAEKQMoEAoMAQsgAEEwEC0iAwR/IAMgAjYCCCADQgE3AwACQCACKAIABEAgAyAFpyIEKAIYNgIMIAQgAzYCGAwBCyAFEA0aCyADIAU3AyAgA0EYaiACKAIQIAIoAhRBAWsgBRDiA3FBA3RqEEsgA0EQaiACQQRqEEsgAiACKAIMQQFqIgQ2AgwgAigCGCAETQRAIwBBEGsiCCQAIAAgAigCEEEEIAIoAhQiAEEBdCAAQQFGGyIAQQN0IAhBDGoQtAEiCQRAIAgoAgxBA3YgAGohBEEAIQADQCAAIARHBEAgCSAAQQN0ahBvIABBAWohAAwBCwsgBEEBayEKIAJBCGohACACQQRqIQsDQCALIAAoAgAiAEcEQCAAQQxrKAIARQRAIABBCGogCSAAKQMQEOIDIApxQQN0ahBLCyAAQQRqIQAMAQsLIAIgBDYCFCACIAk2AhAgAiAEQQF0NgIYCyAIQRBqJAALIAMFQQALIgRFDQELIAQgBhANNwMoIAEQDSEHCyAHCzAAIAUpAwAiAUEpED8iAgRAIAJBAToAESAAIAEQCiAFQoCAgIAgNwMAC0KAgICAMAuRAQECfkKAgICAMCEBAkAgAEKAgICAMCACIAMQiQYiBBALDQAjAEEQayICJAAgAiAENwMIIABBMUEAQQBBASACQQhqEOQBIQEgAkEQaiQAIAEQCw0AIAAQOyIFEAsNACAAIAVBgwEgBEEHEBkaIAAgBUGEASABQQcQGRogBQ8LIAAgBBAKIAAgARAKQoCAgIDgAAvYAgIDfwJ+IwBB0ABrIgYkAEF/IQcCQCAAIAZByABqIAFBwgAQhQEiCEUNACAGKQNIIgEQEARAIAAgCCkDACACIAMQDSAEIAUQhwQhBwwBCwJAAkAgACACEF4iCRALBEAgACABEAoMAQsgCCkDACEKIAYgBDcDOCAGIAM3AzAgBiAJNwMoIAYgCjcDICAAIAEgCCkDCEEEIAZBIGoQNSEBIAAgCRAKIAEQCw0CIAAgARAsIgcEQCAAIAYgCCgCACACEFMiAkEASA0BIAJFDQMCQCAGKAIAIgJBE3FFBEAgACAGKQMIIAMQWEUNAQwECyACQRFxQRBHDQMgBikDGBAQRQ0DCyAAIAYQTCAAQb8aQQAQFAwBCyAFQYCAAXFFBEBBACEHIAVBgIACcUUNAyAAEPoBRQ0DCyAAQcAJQQAQFAtBfyEHDAELIAAgBhBMCyAGQdAAaiQAIAcLoQICAn8CfiMAQUBqIgQkAAJAAkAgACAEQThqIAFBwQAQhQEiBUUNACAEKQM4IgEQEARAIAAgBSkDACACIANBABASIQEMAgsgACACEF4iBhALBEAgACABEAoMAQsgBSkDACEHIAQgAzcDMCAEIAY3AyggBCAHNwMgIAAgASAFKQMIQQMgBEEgahA1IQEgACAGEAogARALDQAgACAEIAUoAgAgAhBTIgJBAEgNACACRQ0BAkACQCAEKAIAIgJBE3FFBEAgACAEKQMIIAEQWEUNAQwCCyACQRFxQRBHDQEgBCkDEBAQRQ0BIAEQEA0BCyAAIAQQTCAAIAEQCiAAQZYbQQAQFAwBCyAAIAQQTAwBC0KAgICA4AAhAQsgBEFAayQAIAEL9QECA38CfiMAQUBqIgMkAEF/IQQCQCAAIANBOGogAUHjABCFASIFRQ0AIAMpAzgiARAQBEAgACAFKQMAIAIQeCEEDAELAkACQCAAIAIQXiIGEAsEQCAAIAEQCgwBCyAFKQMAIQcgAyAGNwMoIAMgBzcDICAAIAEgBSkDCEECIANBIGoQNSEBIAAgBhAKIAEQCw0CIAAgARAsIgQNAiAAIAMgBSgCACIEIAIQUyICQQBIDQAgAkUNASADKAIAIQIgACADEEwgAkEBcQRAIAQtAAVBAXENAgsgAEH6J0EAEBQLQX8hBAwBC0EAIQQLIANBQGskACAEC7IFAgN/A34jAEFAaiIHJABBfyEIAkAgACAHQThqIAFB5QAQhQEiCUUNACAHKQM4IgoQEARAIAAgCSkDACACIAMgBCAFIAYQdiEIDAELAkAgACACEF4iCxALDQACQCAAEDsiARALDQAgBkGAEHEEQCAAIAFBwQAgBBANQQcQGRoLIAZBgCBxBEAgACABQcIAIAUQDUEHEBkaCyAGQYDAAHEEQCAAIAFBwAAgAxANQQcQGRoLIAZBgARxBEAgACABQT4gBkEBdkEBca1CgICAgBCEQQcQGRoLIAZBgAhxBEAgACABQT8gBkECdkEBca1CgICAgBCEQQcQGRoLIAZBgAJxRQ0AIAAgAUE9IAZBAXGtQoCAgIAQhEEHEBkaCyABEAsEQCAAIAsQCgwBCyAJKQMAIQwgByABNwMwIAcgCzcDKCAHIAw3AyAgACAKIAkpAwhBAyAHQSBqEDUhCiAAIAsQCiAAIAEQCiAKEAsNASAAIAoQLEUEQEEAIQggBkGAgAFxRQ0CIABBwDVBABAUQX8hCAwCCyAAIAcgCSgCACIJIAIQUyICQQBIDQEgBkGBAnEhCAJAAkAgAkUEQCAIQYACRg0BQQEhCCAJLQAFQQFxRQ0BDAQLAkAgBygCACICIAYQogNFIAJBAXEgCEGAAkZxcg0AAkAgBkGAMHEEQCACQRFxQRBHDQEgBkGAEHEEQCAAIAQgBykDEBBYRQ0DCyAGQYAgcUUNASAAIAUgBykDGBBYDQEMAgsgBkGAwABxRQ0AIAZBAnFFIAJBA3EiAkECRnENASACDQAgACADIAcpAwgQWEUNAQsgBkGABHFFDQIgBygCAEETcUECRw0CCyAAIAcQTAsgAEGIC0EAEBRBfyEIDAILIAAgBxBMQQEhCAwBCyAAIAoQCgsgB0FAayQAIAgLhwICBH8CfiMAQUBqIgMkAEF/IQUCQCAAIANBOGogAUHkABCFASIERQ0AIAMpAzgiARAQBEAgACAEKQMAIAJBABDcASEFDAELIAAgAhBeIgcQCwRAIAAgARAKDAELIAQpAwAhCCADIAc3AyggAyAINwMgIAAgASAEKQMIQQIgA0EgahA1IQEgACAHEAogARALDQAgACABECwiBkUEQEEAIQUMAQsgACADIAQoAgAgAhBTIgJBAEgNACACBEACQAJAIAMtAABBAXEEQCAAIAQpAwAQoAEiAkEASA0BIAINAgsgAEHlCkEAEBQLIAAgAxBMDAILIAAgAxBMCyAGIQULIANBQGskACAFC+AFAgt/AX4jAEFAaiIFJABBfyELAkAgACAFQThqIANB5wAQhQEiBkUNACAFKQM4IgMQEARAIAAgASACIAYoAgBBAxCQASELDAELIAAgAyAGKQMIQQEgBhA1Ig8QCw0AIAVBADYCLCAFQQA2AjQgBUEANgIwIAAgBUE0aiAPENoBIQcgBSgCNCEKAkAgBw0AAkAgCkUNACAAIApBA3QQaiIJDQBBACEJDAELAn8CQANAAkAgBCAKRgRAIApBASAKQQFLGyEIQQEhBANAIAQgCEYNAiAJIAQgCSAEQQN0aigCBBCJBSEHIARBAWohBCAHQQBIDQALIABBogpBABAUQQAMBAsgACAPIAQQeSIDEAsNAgJAIAMQnAENACADEPYDDQAgACADEAogAEGoI0EAEBRBAAwECyAAIAMQOSEIIAAgAxAKIAhFDQIgCSAEQQN0aiIHQQA2AgAgByAINgIEIARBAWohBAwBCwtBACAAIAYpAwAQoAEiDEEASA0BGiAGLQARBEAgABDKAgwBCyAAIAVBLGogBUEwaiAGKAIAQQMQkAEEQCAFKAIwIQQgBSgCLCEIDAMLIAUoAiwhCCAFKAIwIQRBACEHA0AgBCAHRwRAIAYtABEEQCAAEMoCDAULIAAgBUEIaiAGKAIAIAggB0EDdGoiDSgCBBBTIg5BAEgNBAJAIA5FDQAgACAFQQhqEEwgBS0ACEEBcUEAIAwbDQAgCSAKIA0oAgQQiQUiDUEASARAIABBlR5BABAUDAYLIAwNACAJIA1BA3RqQQE2AgALIAdBAWohBwwBCwsCQCAMDQBBACEGA0AgBiAKRg0BIAZBA3QhByAGQQFqIQYgByAJaigCAA0ACyAAQdMIQQAQFAwDCyAAIAggBBBkIAAgDxAKIAEgCTYCACACIAo2AgBBACELDAMLQQALIQRBACEICyAAIAggBBBkIAAgCSAKEGQgACAPEAoLIAVBQGskACALC+cDAgR/An4jAEHgAGsiBCQAQX8hBQJAIAAgBEHYAGogAkHmABCFASIGRQ0AIAYoAgAhByAEKQNYIgIQEARAIAAgASAHIAMQUyEFDAELIAAgAxBeIggQCwRAIAAgAhAKDAELIAYpAwAhCSAEIAg3A0ggBCAJNwNAIAAgAiAGKQMIQQIgBEFAaxA1IQIgACAIEAogAhALDQACQAJAAkACQCACECANACACEBANACAAIAIQCgwBCyAAIAQgByADEFMiA0EASA0CIAMEQCAAIAQQTAsgAhAQBEBBACEFIANFDQQgBC0AAEEBcUUNASAHLQAFQQFxRQ0BDAQLIAAgBikDABCgASIGQQBIDQIgACAEQSBqIAIQigUhByAAIAIQCiAHQQBIDQMCQCADBEAgBCgCACIFQYA6QYDOACAEKAIgIgNBEHEbIANyEKIDRQ0BIANBAXENAyAFQQFxDQEgA0EScQ0DIAVBAnENAQwDCyAGRQ0AIAQtACBBAXENAgsgACAEQSBqEEwLIABB3ChBABAUQX8hBQwCCwJAIAEEQCABIAQpAyA3AwAgASAEKQM4NwMYIAEgBCkDMDcDECABIAQpAyg3AwgMAQsgACAEQSBqEEwLQQEhBQwBCyAAIAIQCgsgBEHgAGokACAFCyUBAX8gAUEpED8iAwRAIAAgAykDACACECEgACADKQMIIAIQIQsLJwEBfyABQSkQPyICBEAgACACKQMAECUgACACKQMIECUgACACEB8LCxYAIAAgAykDACADKQMIIAMpAxAQ/QMLtwECA34CfyMAQRBrIgckAAJAIAAgB0EMaiADKQMAEI8CIghFBEBCgICAgOAAIQQMAQsgACAIIAcoAgxBke8AEP4DIQEgACAIEDYCQCABEAsgAkECSHINACAAIAMpAwgiBhA6RQ0AQoCAgIDgACEEAkAgABA7IgUQCwRAIAEhBQwBCyAAIAVBLyABQQcQGUEASA0AIAAgBUEvIAYQiwUhBAsgACAFEAoMAQsgASEECyAHQRBqJAAgBAu9AgEDfiMAQRBrIgMkACAEAn8CQAJAIAAgAUEnEGgiAkUEQEKAgICAMCEBQoCAgIAwIQYMAQsgAigCGARAQoCAgIAwIQFBAQwDC0KAgICAMCEGIAAgAikDACIIIAIpAwgiBxDYASIBEAsNACABECYEQCACQQE2AhhCgICAgDAhAUEBDAMLIAIoAhAEQCAAIAAgAUIAEGIQPCIGEAsNASAGEPYBBEAgACADQQhqIAAgCEHVACAIQQAQEhCtAUEASA0CIAAgCEHVAAJ+IAenIAMpAwggAigCFBCDAyIHQoCAgIAIfEL/////D1gEQCAHQv////8PgwwBCyAHuRAVCxBIQQBIDQILIAAgBhAKDAILIAJBATYCGAwBCyAAIAEQCiAAIAYQCkKAgICA4AAhAQtBAAs2AgAgA0EQaiQAIAELBgAgARANC64GAgR/C34jAEEwayIEJAACQCABECBFBEAgABAoQoCAgIDgACEBDAELQoCAgIAwIQgCQAJAIAAgAykDABArIg8QCwRAQoCAgIAwIQpCgICAgDAhAUKAgICAMCENQoCAgIAwIRAMAQsgACABIAApA0gQ8gEiEBALBEBCgICAgDAhCkKAgICAMCEBQoCAgIAwIQ0MAQsCQAJAIAAgACABQe0AIAFBABASEDwiDRALDQAgDaciAkH1AEEAENcBIQYgAkH5AEEAENcBQQBIBEAgAEHVgwEgDUGrDhC9ASINEAsNAQsgBCANNwMoIAQgATcDICAAIBBBAiAEQSBqEK8BIgoQCw0BIAAQTiIBEAsNAgJAIAMpAwgiCxAQBEBBfyEDIARBfzYCHAwBCyAAIARBHGogCxDFAUEASA0DIAQoAhwiAw0ADAQLAkAgD6ciBygCBEH/////B3EiBQRAIAZBf3NBH3YhBiADrSERIAWtIRJCACELQQAhAgNAIAKtIQkgAiEDA0AgAyAFTw0DIAAgCkHVACADrSIOEEhBAEgNBiAAIAgQCiAAIAogDxDYASIIEAsNBgJAIAgQJg0AIAAgBEEQaiAAIApB1QAgCkEAEBIQrQENByAEIBIgBCkDECIMIAwgElUbIgw3AxAgCSAMUQ0AIAAgByACIAMQmwEiCRALDQcgACABIAsgCRBuQQBIDQcgC0IBfCIJIBFRDQggACAEQQhqIAgQQA0HIAynIQJCASEMIAsgBCkDCCIOQgEgDkIBVRt8IQsDQCAJIAtRDQMgACAAIAggDBBiEDwiDhALDQggACABIAkgDhBuQQBIDQggDEIBfCEMIAlCAXwiCSARUg0ACwwICyAHIA4gBhCDA6chAwwACwALAAsgACAKIA8Q2AEiCBALDQMgCBAmRQ0EQgAhC0EAIQILIAAgByAFIAIgAiAFSxsgBRCbASIJEAsNAiAAIAEgCyAJEG5BAE4NAwwCC0KAgICAMCEKC0KAgICAMCEBCyAAIAEQCkKAgICA4AAhAQsgACAPEAogACAQEAogACAKEAogACANEAogACAIEAoLIARBMGokACABC5kCAQR+An4CQCABECBFBEAgABAoDAELQoCAgIAwIQYCQAJAIAAgAykDABArIgcQCwRAQoCAgIAwIQQMAQsgACABQdUAIAFBABASIgQQCw0AIAAgBEIAEFhFBEAgACABQdUAQgAQSEEASA0BCyAAIAEgBxDYASIFEAsNASAAIAFB1QAgAUEAEBIiBhALDQECQCAAIAYgBBBYBEAgACAEEAoMAQsgACABQdUAIAQQSEEATg0AQoCAgIAwIQQMAgsgACAHEAogACAGEApC/////w8gBRAmDQMaIAAgBUHXACAFQQAQEiEBIAAgBRAKIAEPC0KAgICAMCEFCyAAIAUQCiAAIAcQCiAAIAYQCiAAIAQQCgtCgICAgOAACwu0AwIFfgF/IwBBIGsiAiQAAkACQCABECBFBEAgABAoDAELQoCAgIAwIQUCQCAAIAMpAwAQKyIIEAsEQEKAgICAMCEEQoCAgIAwIQZCgICAgDAhBwwBCwJAAkAgACABIAApA0gQ8gEiBxALBEBCgICAgDAhBAwBCyAAIAAgAUHtACABQQAQEhA8IgQQC0UNAQtCgICAgDAhBgwBCyACIAQ3AxggAiABNwMQIAAgB0ECIAJBEGoQrwEiBhALDQAgACACQQhqIAAgAUHVACABQQAQEhCtAQ0AIAAgBkHVAAJ+IAIpAwgiAUKAgICACHxC/////w9YBEAgAUL/////D4MMAQsgAbkQFQsQSEEASA0AIABBJxCiASIFEAsNACAAQSAQLSIDRQ0AIAMgCDcDCCADIAY3AwAgAyAEpyIJQecAQQAQ1wFBf3NBH3Y2AhAgCUH1AEEAENcBIQkgA0EANgIYIAMgCUF/c0EfdjYCFCAFIAMQiwEgACAHEAogACAEEAoMAgsgACAIEAogACAHEAogACAEEAogACAGEAogACAFEAoLQoCAgIDgACEFCyACQSBqJAAgBQulAwIFfgJ/IwBBEGsiAiQAAkACQCABECBFBEAgABAoDAELQoCAgIAwIQQCQAJAIAAgAykDABArIgYQCw0AIAAgACABQe4AIAFBABASECwiA0EASA0AAkAgA0UEQCAAIAEgBhDYASEFDAELIAAgACABQe8AIAFBABASECwiA0EASA0BIAAgAUHVAEIAEEhBAEgNASAAEE4iBRALDQIgBqchCQNAIAAgBBAKIAAgASAGENgBIgQQCw0DIAQQJkUEQCAAIAAgBEIAEGIQPCIHEAsNBCAHEPYBIQogACAFIAggBxCPAUEASA0EIAhCAXwhCCAKRQ0BIAAgAkEIaiAAIAFB1QAgAUEAEBIQrQFBAEgNBCAAIAFB1QACfiAJIAIpAwggAxCDAyIHQoCAgIAIfEL/////D1gEQCAHQv////8PgwwBCyAHuRAVCxBIQQBIDQQMAQsLIAinDQAgACAFEApCgICAgCAhBQsgACAEEAogACAGEAoMAwtCgICAgDAhBQsgACAFEAogACAEEAogACAGEAoLQoCAgIDgACEFCyACQRBqJAAgBQuvEgILfwx+IwBBkAFrIgIkACADKQMIIRkCQCABECBFBEAgABAoQoCAgIDgACETDAELIAAgAkHIAGpBABBBGiACQRBqIgZBADYCMCAGQoCAgIDAADcDKCAGIAA2AgAgBiAGQQhqNgIEQoCAgIAwIRRCgICAgOAAIRMCQAJAIAAgAykDABArIhUQCwRAQoCAgIAwIQ9CgICAgDAhEkKAgICAMCERQoCAgIAwIRcMAQtCgICAgDAhFwJAIAAgGRA6IgpFBEAgACAZECsiFxALDQEgF6chBAsgACAAIAFB7gAgAUEAEBIQLCIDQQBIDQAgAwRAIAAgACABQe8AIAFBABASECwiBUEASA0BIAAgAUHVAEIAEEhBAEgNAQsCQCAERQ0AIANFIAQoAgRB/////wdxcg0AAn9BACEEQX8gACABQTwgAUEAEBIiDxALDQAaIAAgDyAAKQNIEFghBiAAIA8QCgJAIAZFDQBBfyEEIAAgAUGGASABQQAQEiIPEAsNACAPQTBBABCOBCEEIAAgDxAKCyAEC0UNAEEAIQYjAEEwayIFJABCgICAgOAAIQ8CQCAAIAFBARDbASIDRQ0AIAAgBUEIakEAEEEaAkAgACAVECsiExALDQACQCADKAIEQRBqIgstAAAiBEEhcSIMRQRAIAVCADcDIAwBCyAAIAFB1QAgAUEAEBIiEBALDQEgACAFQSBqIBAQrQENAQtBACEDAkAgCy0AASIHQQBNDQAgACAHQQN0EC0iBg0AQQAhBgwBCyAEQRBxIQ0gBEEBcSEOIBOnIgdBEGohCSAHKQIEIhGnQR92IQogBSkDICEQAkACQANAIBFC/////weDIBBZBEAgBiALIAkgEKcgEadB/////wdxIAogABDDBCIEQQFHBEAgBEEATgRAQQAgBEECRyAMGw0EIAAgAUHVAEIAEEhBAE4NBAwGCyAAQZI1QQAQTQwFCyAGKAIAIQggBSAGKAIEIAlrIAp1IgQ2AiwgCCAJayAKdSIIIANKBEAgBUEIaiAHIAMgCBBXDQQLIA4EQAJAIAggBCIDRw0AAkACQCANRQ0AIAggBykCBCIQp0H/////B3FPDQAgEEKAgICACINCAFINAQsgBSAIQQFqIgM2AiwMAQsgByAFQSxqENkBGiAFKAIsIQMLIAcpAgQhESADrCEQIAQhAwwCBSAAIAFB1QAgBCIDrRBIQQBODQMMBQsACwsgBSAQNwMgCyAFQQhqIAcgAyAHKAIEQf////8HcRBXDQEgACATEAogACAGEBggBUEIahA3IQ8MAgsgBSAErDcDIAsgACATEAogACAGEBggBUEIahBDCyAFQTBqJAAgDyETDAELIBWnIQYgA0UhC0KAgICAMCERA0ACQAJ/AkACQAJAIAAgASAVENgBIg8QCw0AIA8QJg0EIwBBEGsiByQAAn9BfyACQRBqIgMoAjANABoCQCADKAIoIgQgAygCLEgEQCADKAIEIQQMAQsgBCAEQQF1akEfakFvcSEJIAMoAgAhBAJAAkAgAygCBCIIIANBCGpGBEAgBEEAIAlBA3QgB0EMahC0ASIERQ0BIAQgCCkDADcDACAEIAgpAxg3AxggBCAIKQMQNwMQIAQgCCkDCDcDCCAHKAIMIQggAyAENgIEIAMgCEEDdiAJajYCLAwDCyAEIAggCUEDdCAHQQxqELQBIgQNAQsgAxCOBSADKAIAIA8QCiADQX82AjBBfwwCCyAHKAIMIQggAyAENgIEIAMgCEEDdiAJajYCLAsgAyADKAIoIgNBAWo2AiggBCADQQN0aiAPNwMAQQALIQMgB0EQaiQAIAsgA0EASCIDcgRAQQJBBCADGwwECyAAIBEQCiAAIAAgD0IAEGIQPCIREAsNACAREPYBRQ0CIAAgAkHgAGogACABQdUAIAFBABASEK0BQQBODQELQoCAgIAwIQ9CgICAgDAhEgwGCyAAIAFB1QACfiAGIAIpA2AgBRCDAyIPQoCAgIAIfEL/////D1gEQCAPQv////8PgwwBCyAPuRAVCxBIIgNBAE4NACADQR52QQJxDAELQQALIQNCgICAgDAhD0KAgICAMCESIAMOBQEFAwUABQsLQQAhBUEAIQRCgICAgDAhD0KAgICAMCESA0AgAigCOCAESgRAIAAgAkEMaiACKAIUIARBA3RqKQMAIhYQ2gFBAEgNAyAAIBEQCiAAIAAgFkIAEGIQPCIREAsNAyAAIAIgACAWQdcAIBZBABASEK0BDQMCQCACKQMAIhAgBikCBEL/////B4MiAVUEQCACIAE3AwAgASEQDAELIBBCAFkNAEIAIRAgAkIANwMACyAAIBIQCiAAEE4iEhALDQMgACASQgAgERANIhEQbkEASA0DIAIoAgwiA0EBIANBAUsbIgOtIRpCASEBA0AgASAaUgRAIAAgFiABEGIiGBALDQUgGBAQRQRAIAAgGBA8IhgQCw0GCyAAIBIgASAYEG4hByABQgF8IQEgB0EATg0BDAULCyAAIBQQCiAAIBZBhwEgFkEAEBIiFBALDQMCQCAKBEAgACASIBogEEL/////D4MQbkEASA0FIAAgEiADQQFqrSAVEA0QbkEASA0FAkAgFBAQDQAgACASIANBAmqtIBQQDSIBEG5BAE4NACABIRQMBgsgAiASNwNoIAJCgICAgDA3A2AgACAPEAogACAAIBlBAiACQeAAakEAEJsDEDwhDwwBC0KAgICAMCEBIBQQEEUEQCAAIBQQKSIBEAsNBQsgAiAXNwOIASACIAE3A4ABIAIgEjcDeCACIBU3A2ggAiARNwNgIAIgEEL/////D4M3A3AgACAPEAogACACQeAAahCPBSEPIAAgARAKCyAPEAsNAyAFrCAQVwRAIAJByABqIgMgBiAFIBCnEFcaIAMgDxCaARogEacpAgRC/////weDIBB8pyEFCyAEQQFqIQQMAQsLIAJByABqIgMg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ACAAC0ABAX4jAEEQayICJABCgICAgOAAIQQgACACQQhqIAMpAwAQwgFFBEAgACABIAIpAwgQjAMhBAsgAkEQaiQAIAQLBABCAAvRAgEHfyMAQSBrIgMkACADIAAoAhwiBDYCECAAKAIUIQUgAyACNgIcIAMgATYCGCADIAUgBGsiATYCFCABIAJqIQRBAiEHIANBEGohAQJ/AkACQCAAKAI8IAFBAiADQQxqEAMQ8wVFBEADQCAEIAMoAgwiBUYNAiAFQQBIDQMgASAFIAEoAgQiCEsiBkEDdGoiCSAFIAhBACAGG2siCCAJKAIAajYCACABQQxBBCAGG2oiCSAJKAIAIAhrNgIAIAQgBWshBCAAKAI8IAFBCGogASAGGyIBIAcgBmsiByADQQxqEAMQ8wVFDQALCyAEQX9HDQELIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwBCyAAQQA2AhwgAEIANwMQIAAgACgCAEEgcjYCAEEAIAdBAkYNABogAiABKAIEawshBCADQSBqJAAgBAsFACAAnwudAQMCfAF/AX5EAAAAAAAA4D8gAKYhAiAAvUL///////////8AgyIEvyEBAkAgBEIgiKciA0HB3JiEBE0EQCABEKUCIQEgA0H//7//A00EQCADQYCAwPIDSQ0CIAIgASABoCABIAGiIAFEAAAAAAAA8D+go6GiDwsgAiABIAEgAUQAAAAAAADwP6CjoKIPCyABIAIgAqAQigYhAAsgAAvLAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H/////B3EiAkH7w6T/A00EQCACQYCAwPIDSQ0BIABEAAAAAAAAAABBABDaAiEADAELIAJBgIDA/wdPBEAgACAAoSEADAELAkACQAJAAkAgACABELAEQQNxDgMAAQIDCyABKwMAIAErAwhBARDaAiEADAMLIAErAwAgASsDCBDbAiEADAILIAErAwAgASsDCEEBENoCmiEADAELIAErAwAgASsDCBDbApohAAsgAUEQaiQAIAAL6AQCA38HfiMAQSBrIgUkAEKAgICA4AAhDQJAIAAgASAEQR9qEG0iARALDQBCgICAgDAhCAJAIABBHBBqIgZFBEBCgICAgDAhC0KAgICAMCEKDAELIAZBBGoQbyAGIARBAXZBAXE2AgAgASAGEIsBIAZBATYC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ciB8fABwcm94eTogcHJvcGVydHkgbm90IHByZXNlbnQgaW4gdGFyZ2V0IHdlcmUgcmV0dXJuZWQgYnkgbm9uIGV4dGVuc2libGUgcHJveHkAcmV2b2tlZCBwcm94eQBQcm94eQBhZGRfcHJvcGVydHkAcHJveHk6IGNhbm5vdCBzZXQgcHJvcGVydHkAbm8gc2V0dGVyIGZvciBwcm9wZXJ0eQB2YWx1ZSBoYXMgbm8gcHJvcGVydHkAY291bGQgbm90IGRlbGV0ZSBwcm9wZXJ0eQBwcm94eTogZHVwbGljYXRlIHByb3BlcnR5AEpTX0RlZmluZUF1dG9Jbml0UHJvcGVydHkAaGFzT3duUHJvcGVydHkAcHJveHk6IGluY29uc2lzdGVudCBkZWxldGVQcm9wZXJ0eQBwcm94eTogaW5jb25zaXN0ZW50IGRlZmluZVByb3BlcnR5AEpTX0RlZmluZVByb3BlcnR5ACFtci0+ZW1wdHkAaW5maW5pdHkASW5maW5pdHkAb3V0IG9mIG1lbW9yeQB1bmtub3duIHVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeQBHZW5lcmFsX0NhdGVnb3J5AGV2ZXJ5AGFueQBhcHBseQAnJXMnIGlzIHJlYWQtb25seQBleHBlY3RpbmcgY2F0Y2ggb3IgZmluYWxseQBzdGlja3kAc3RyaW5naWZ5AHN1YmFycmF5AGVtcHR5IGFycmF5AG5vbiBpbnRlZ2VyIGluZGV4IGluIHR5cGVkIGFycmF5AG5lZ2F0aXZlIGluZGV4IGluIHR5cGVkIGFycmF5AG91dC1vZi1ib3VuZCBpbmRleCBpbiB0eXBlZCBhcnJheQBjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAaXNBcnJheQBUeXBlZEFycmF5AGdldERheQBnZXRVVENEYXkAanNfZ2V0X2F0b21faW5kZXgAaW52YWxpZCBhcnJheSBpbmRleABvdXQtb2YtYm91bmQgbnVtZXJpYyBpbmRleABKU19BdG9tSXNBcnJheUluZGV4AGZpbmRJbmRleABpbnZhbGlkIGV4cG9ydCBzeW50YXgAaW52YWxpZCBhc3NpZ25tZW50IHN5bnRheABtYXgAXHUlMDR4AGludmFsaWQgb3Bjb2RlOiBwYz0ldSBvcGNvZGU9MHglMDJ4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAbGluZSB0ZXJtaW5hdG9yIG5vdCBhbGxvd2VkIGFmdGVyIHRocm93AHBvdwBub3cAc3RhY2sgb3ZlcmZsb3cAbXVzdCBiZSBjYWxsZWQgd2l0aCBuZXcAaXNWaWV3AERhdGFWaWV3AHJhdwAldQBjbGFzcyBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABmdW5jdGlvbiBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABsZXhpY2FsIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGR1cGxpY2F0ZSBhcmd1bWVudCBuYW1lcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQAZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQAaW1wb3J0Lm1ldGEgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGNvbnRleHQASlNfRnJlZUNvbnRleHQASlNDb250ZXh0AGpzX21hcF9pdGVyYXRvcl9uZXh0AGpzX2FzeW5jX2dlbmVyYXRvcl9yZXN1bWVfbmV4dAB1bmV4cGVjdGVkIGVuZCBvZiBpbnB1dAB0dABleHBvcnRlZCB2YXJpYWJsZSAnJXMnIGRvZXMgbm90IGV4aXN0AHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBkb2VzIG5vdCBleGlzdAB0ZXN0AGFzc2lnbm1lbnQgcmVzdCBwcm9wZXJ0eSBtdXN0IGJlIGxhc3QAc3FydABzb3J0AGNicnQAdHJpbVN0YXJ0AHBhZFN0YXJ0AHVua25vd24gdW5pY29kZSBzY3JpcHQAU2NyaXB0AGh5cG90AGZyZWVfemVyb19yZWZjb3VudABzdHJfaW5kZXggPT0gbnVtX2tleXNfY291bnQgKyBzdHJfa2V5c19jb3VudABudW1faW5kZXggPT0gbnVtX2tleXNfY291bnQAc3ltX2luZGV4ID09IGF0b21fY291bnQAbGFiZWwgPj0gMCAmJiBsYWJlbCA8IHMtPmxhYmVsX2NvdW50AGxhYjEgPj0gMCAmJiBsYWIxIDwgcy0+bGFiZWxfY291bnQAdmFsIDwgcy0+Y2FwdHVyZV9jb3VudAB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABpbnZhbGlkIHJlcGVhdCBjb3VudABpbnZhbGlkIHJlcGV0aXRpb24gY291bnQAZm9udABpbnZhbGlkIGNvZGUgcG9pbnQAZnJvbUNvZGVQb2ludABpbnZhbGlkIGhpbnQAZW5jb2RlVVJJQ29tcG9uZW50AGRlY29kZVVSSUNvbXBvbmVudAB1bmV4cGVjdGVkIGVuZCBvZiBjb21tZW50AGludmFsaWQgc3dpdGNoIHN0YXRlbWVudABwYXJzZUludABkdXBsaWNhdGUgZGVmYXVsdABzcGxpdABleHBlY3RpbmcgaGV4IGRpZ2l0AHRyaW1SaWdodAByZWR1Y2VSaWdodAB1bnNoaWZ0AHRyaW1MZWZ0AGludmFsaWQgb2Zmc2V0AGludmFsaWQgYnl0ZU9mZnNldABnZXRUaW1lem9uZU9mZnNldAByZXNvbHZpbmcgZnVuY3Rpb24gYWxyZWFkeSBzZXQAcHJveHk6IGluY29uc2lzdGVudCBzZXQAZmluZF9qdW1wX3RhcmdldABleHBlY3RpbmcgdGFyZ2V0AGludmFsaWQgZGVzdHJ1Y3R1cmluZyB0YXJnZXQAcHJveHk6IGluY29uc2lzdGVudCBnZXQAV2Vha1NldABjb25zdHJ1Y3QASlNfRnJlZUF0b21TdHJ1Y3QAdXNlIHN0cmljdABSZWZsZWN0AHJlamVjdABub3QgYW4gQXN5bmNHZW5lcmF0b3Igb2JqZWN0AGNhbm5vdCBjb252ZXJ0IHRvIG9iamVjdABpbnZhbGlkIGJyYW5kIG9uIG9iamVjdABvcGVyYW5kICdwcm90b3R5cGUnIHByb3BlcnR5IGlzIG5vdCBhbiBvYmplY3QAcmVjZWl2ZXIgaXMgbm90IGFuIG9iamVjdABpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAbm90IGEgRGF0ZSBvYmplY3QAbm90IGEgb2JqZWN0AEpTT2JqZWN0AHBhcnNlRmxvYXQAZmxhdABub3RoaW5nIHRvIHJlcGVhdABjb25jYXQAY29kZVBvaW50QXQAY2hhckF0AGNoYXJDb2RlQXQAa2V5cwBwcm94eTogdGFyZ2V0IHByb3BlcnR5IG11c3QgYmUgcHJlc2VudCBpbiBwcm94eSBvd25LZXlzACAgZmFzdCBhcnJheXMAZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycgaXMgYW1iaWd1b3VzAHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBhbHJlYWR5IGV4aXN0cwB0b28gbWFueSBhcmd1bWVudHMAVG9vIG1hbnkgY2FsbCBhcmd1bWVudHMAICBlbGVtZW50cwBpbnZhbGlkIG51bWJlciBvZiBkaWdpdHMAYmluYXJ5IG9iamVjdHMAaW52YWxpZCBwcm9wZXJ0eSBhY2Nlc3MAanNfb3BfZGVmaW5lX2NsYXNzAGZkLT5ieXRlX2NvZGUuYnVmW2RlZmluZV9jbGFzc19wb3NdID09IE9QX2RlZmluZV9jbGFzcwBfX2dldENsYXNzAHNldEhvdXJzAGdldEhvdXJzAHNldFVUQ0hvdXJzAGdldFVUQ0hvdXJzAGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMAdG9vIG1hbnkgaW1icmljYXRlZCBxdWFudGlmaWVycwB1bmljb2RlX3Byb3Bfb3BzAGFjb3MAZm9yIGF3YWl0IGlzIG9ubHkgdmFsaWQgaW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9ucwBuZXcudGFyZ2V0IG9ubHkgYWxsb3dlZCB3aXRoaW4gZnVuY3Rpb25zAGJ5dGVjb2RlIGZ1bmN0aW9ucwBDIGZ1bmN0aW9ucwBwcm94eTogaW5jb25zaXN0ZW50IHByZXZlbnRFeHRlbnNpb25zAFNjcmlwdF9FeHRlbnNpb25zAGF0b21zAHByb3h5OiBwcm9wZXJ0aWVzIG11c3QgYmUgc3RyaW5ncyBvciBzeW1ib2xzAGdldE93blByb3BlcnR5U3ltYm9scwByZXNvbHZlX2xhYmVscwBKU19FdmFsVGhpcwBzdHJpbmdzAGludmFsaWQgZGVzY3JpcHRvciBmbGFncwBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncwB2YWx1ZXMAc2V0TWludXRlcwBnZXRNaW51dGVzAHNldFVUQ01pbnV0ZXMAZ2V0VVRDTWludXRlcwB0b28gbWFueSBjYXB0dXJlcwAgIHNoYXBlcwBnZXRPd25Qcm9wZXJ0eU5hbWVzAGdjX2ZyZWVfY3ljbGVzAGFkZF9ldmFsX3ZhcmlhYmxlcwByZXNvbHZlX3ZhcmlhYmxlcwB0b28gbWFueSBsb2NhbCB2YXJpYWJsZXMAdG9vIG1hbnkgY2xvc3VyZSB2YXJpYWJsZXMAY29tcGFjdF9wcm9wZXJ0aWVzACAgcHJvcGVydGllcwBkZWZpbmVQcm9wZXJ0aWVzAGVudHJpZXMAZnJvbUVudHJpZXMAdG9vIG1hbnkgcmFuZ2VzAGluY2x1ZGVzAHNldE1pbGxpc2Vjb25kcwBnZXRNaWxsaXNlY29uZHMAc2V0VVRDTWlsbGlzZWNvbmRzAGdldFVUQ01pbGxpc2Vjb25kcwBzZXRTZWNvbmRzAGdldFNlY29uZHMAc2V0VVRDU2Vjb25kcwBnZXRVVENTZWNvbmRzAGl0YWxpY3MAYWJzAHByb3h5OiBpbmNvbnNpc3RlbnQgaGFzACUuKnMAICglcwBzZXQgJXMAZ2V0ICVzACAgICBhdCAlcwBub3QgYSAlcwB1bnN1cHBvcnRlZCBrZXl3b3JkOiAlcwBzdWJzdHIAcHJveHk6IGluY29uc2lzdGVudCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAc3VwZXIoKSBpcyBvbmx5IHZhbGlkIGluIGEgZGVyaXZlZCBjbGFzcyBjb25zdHJ1Y3RvcgBwYXJlbnQgY2xhc3MgbXVzdCBiZSBjb25zdHJ1Y3RvcgBub3QgYSBjb25zdHJ1Y3RvcgBBcnJheSBJdGVyYXRvcgBTZXQgSXRlcmF0b3IATWFwIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAbm90IGFuIEFzeW5jLWZyb20tU3luYyBJdGVyYXRvcgBjYW5ub3QgaW52b2tlIGEgcnVubmluZyBnZW5lcmF0b3IAbm90IGEgZ2VuZXJhdG9yAEFzeW5jR2VuZXJhdG9yAHN5bnRheCBlcnJvcgBTeW50YXhFcnJvcgBFdmFsRXJyb3IASW50ZXJuYWxFcnJvcgBBZ2dyZWdhdGVFcnJvcgBUeXBlRXJyb3IAUmFuZ2VFcnJvcgBSZWZlcmVuY2VFcnJvcgBVUklFcnJvcgBmbG9vcgBmb250Y29sb3IAYW5jaG9yAGZvcgBrZXlGb3IAZXhwZWN0aW5nIHN1cnJvZ2F0ZSBwYWlyAGEgZGVjbGFyYXRpb24gaW4gdGhlIGhlYWQgb2YgYSBmb3ItJXMgbG9vcCBjYW4ndCBoYXZlIGFuIGluaXRpYWxpemVyACdhcmd1bWVudHMnIGlkZW50aWZpZXIgaXMgbm90IGFsbG93ZWQgaW4gY2xhc3MgZmllbGQgaW5pdGlhbGl6ZXIAaW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBnZXR0ZXIgb3Igc2V0dGVyAGludmFsaWQgc2V0dGVyAGludmFsaWQgZ2V0dGVyAGZpbHRlcgBtaXNzaW5nIGZvcm1hbCBwYXJhbWV0ZXIAInVzZSBzdHJpY3QiIG5vdCBhbGxvd2VkIGluIGZ1bmN0aW9uIHdpdGggZGVmYXVsdCBvciBkZXN0cnVjdHVyaW5nIHBhcmFtZXRlcgBpbnZhbGlkIGNoYXJhY3RlcgB1bmV4cGVjdGVkIGNoYXJhY3RlcgBwcml2YXRlIGNsYXNzIGZpZWxkIGZvcmJpZGRlbiBhZnRlciBzdXBlcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBsZXhpY2FsIGlkZW50aWZpZXIAJ2xldCcgaXMgbm90IGEgdmFsaWQgbGV4aWNhbCBpZGVudGlmaWVyAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGdsb2JhbCBpZGVudGlmaWVyAHlpZWxkIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgAnJXMnIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgBvdGhlcgBhdG9tMV9pc19pbnRlZ2VyICYmIGF0b20yX2lzX2ludGVnZXIAaXNJbnRlZ2VyAGlzU2FmZUludGVnZXIAYnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAGNhbm5vdCB1c2UgaWRlbnRpY2FsIEFycmF5QnVmZmVyAGNhbm5vdCBjb252ZXJ0IHN5bWJvbCB0byBudW1iZXIAbm90IGEgbnVtYmVyAGxpbmVOdW1iZXIAbWFsZm9ybWVkIHVuaWNvZGUgY2hhcgBjbGVhcgBzZXRZZWFyAGdldFllYXIAc2V0RnVsbFllYXIAZ2V0RnVsbFllYXIAc2V0VVRDRnVsbFllYXIAZ2V0VVRDRnVsbFllYXIAdW5leHBlY3RlZCBsaW5lIHRlcm1pbmF0b3IgaW4gcmVnZXhwAHVuZXhwZWN0ZWQgZW5kIG9mIHJlZ2V4cABSZWdFeHAAc3VwAGludmFsaWQgZ3JvdXAAcG9wAGNvbnRpbnVlIG11c3QgYmUgaW5zaWRlIGxvb3AAZHVtcABudW1fa2V5c19jbXAAdXNlIHN0cmlwAG1hcABmbGF0TWFwAFdlYWtNYXAAZXhwZWN0aW5nICd7JyBhZnRlciBccABsb2cxcABpdGVyYXRvcl9jbG9zZV9yZXR1cm4AcHJvbWlzZSBzZWxmIHJlc29sdXRpb24Ab3V0IG9mIG1lbW9yeSBpbiByZWdleHAgZXhlY3V0aW9uAGRlc2NyaXB0aW9uAHByb3h5OiBkZWZpbmVQcm9wZXJ0eSBleGNlcHRpb24AanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc29sdmVfZnVuY3Rpb24AanNfY3JlYXRlX2Z1bmN0aW9uAHNldC9hZGQgaXMgbm90IGEgZnVuY3Rpb24AcmV0dXJuIG5vdCBpbiBhIGZ1bmN0aW9uAEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AY2FsbEV4dGVybmFsRnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBhd2FpdCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AeWllbGQgaW4gZGVmYXVsdCBleHByZXNzaW9uAGludmFsaWQgZGVjaW1hbCBlc2NhcGUgaW4gcmVndWxhciBleHByZXNzaW9uAGJhY2sgcmVmZXJlbmNlIG91dCBvZiByYW5nZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgaW4gcmVndWxhciBleHByZXNzaW9uAGV4cGVjdGVkICdvZicgb3IgJ2luJyBpbiBmb3IgY29udHJvbCBleHByZXNzaW9uAHRvbyBjb21wbGljYXRlZCBkZXN0cnVjdHVyaW5nIGV4cHJlc3Npb24AZXhwZWN0ZWQgJ30nIGFmdGVyIHRlbXBsYXRlIGV4cHJlc3Npb24AdG9QcmVjaXNpb24AYXNpbgBqb2luAG1pbgBjb3B5V2l0aGluAHRlbXBsYXRlIGxpdGVyYWwgY2Fubm90IGFwcGVhciBpbiBhbiBvcHRpb25hbCBjaGFpbgBjaXJjdWxhciBwcm90b3R5cGUgY2hhaW4AYXNzaWduAGlzRnJvemVuAG1hcmtfY2hpbGRyZW4AKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAHRoZW4Ac2V0dGVyIGlzIGZvcmJpZGRlbgBudWxsIG9yIHVuZGVmaW5lZCBhcmUgZm9yYmlkZGVuAGF0YW4AbmFuAG5vdCBhIGJvb2xlYW4AQm9vbGVhbgBnY19zY2FuAGJhZCBub3JtYWxpemF0aW9uIGZvcm0ASlNfTmV3U3ltYm9sRnJvbUF0b20AZnJvbQByYW5kb20AdHJpbQBpbXVsAG5vdCBhIHN5bWJvbABTeW1ib2wAUmVnRXhwIGV4ZWMgbWV0aG9kIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsAHBhcmVudCBwcm90b3R5cGUgbXVzdCBiZSBhbiBvYmplY3Qgb3IgbnVsbABjYW5ub3Qgc2V0IHByb3BlcnR5ICclcycgb2YgbnVsbABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIG51bGwATnVsbABmaWxsAG5ldyBBcnJheUJ1ZmZlciBpcyB0b28gc21hbGwAVHlwZWRBcnJheSBsZW5ndGggaXMgdG9vIHNtYWxsAGNhbGwAZG90QWxsAG1hdGNoQWxsAHJlcGxhY2VBbGwAY2VpbAB1cGRhdGVfbGFiZWwAYmNfYnVmW3Bvc10gPT0gT1BfbGFiZWwAZXZhbABpbnZhbGlkIG51bWJlciBsaXRlcmFsAG1hbGZvcm1lZCBlc2NhcGUgc2VxdWVuY2UgaW4gc3RyaW5nIGxpdGVyYWwASlNfU2V0UHJvcGVydHlJbnRlcm5hbABKU19HZXRPd25Qcm9wZXJ0eU5hbWVzSW50ZXJuYWwAX19KU19FdmFsSW50ZXJuYWwAdG9FeHBvbmVudGlhbABzZWFsAGdsb2JhbABibGluawBfX2RhdGVfY2xvY2sAc3RhY2sAbHJlX2V4ZWNfYmFja3RyYWNrAHMtPmlzX3dlYWsAaQBzZXRNb250aABnZXRNb250aABzZXRVVENNb250aABnZXRVVENNb250aABpbnZhbGlkIGtleXdvcmQ6IHdpdGgAc3RhcnRzV2l0aABlbmRzV2l0aABwcm9wID09IEpTX0FUT01fbGVuZ3RoAGludmFsaWQgYXJyYXkgbGVuZ3RoAGludmFsaWQgYXJyYXkgYnVmZmVyIGxlbmd0aABpbnZhbGlkIGxlbmd0aABpbnZhbGlkIGJ5dGVMZW5ndGgATWF0aABwdXNoAGFjb3NoAEpTX1Jlc2l6ZUF0b21IYXNoAGFzaW5oAGF0YW5oAGJyZWFrIG11c3QgYmUgaW5zaWRlIGxvb3Agb3Igc3dpdGNoAG1hdGNoAGNhdGNoAHNlYXJjaABmb3JFYWNoAGxvZwBBcnJheSB0b28gbG9uZwBzdHJpbmcgdG9vIGxvbmcAQXJyYXkgbG9vIGxvbmcAc3Vic3RyaW5nAGNhbm5vdCBjb252ZXJ0IHN5bWJvbCB0byBzdHJpbmcAdW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nAG5vdCBhIHN0cmluZwBpbnZhbGlkIGNoYXJhY3RlciBpbiBhIEpTT04gc3RyaW5nAHRvU3RyaW5nAHRvRGF0ZVN0cmluZwB0b0xvY2FsZURhdGVTdHJpbmcAdG9UaW1lU3RyaW5nAHRvTG9jYWxlVGltZVN0cmluZwB0b0xvY2FsZVN0cmluZwB0b0dNVFN0cmluZwBKU1N0cmluZwB0b0lTT1N0cmluZwB0b1VUQ1N0cmluZwBkdXBsaWNhdGUgaW1wb3J0IGJpbmRpbmcAaW52YWxpZCBpbXBvcnQgYmluZGluZwBiaWcAcmVnZXhwIG11c3QgaGF2ZSB0aGUgJ2cnIGZsYWcAb2YAaW5mAGRpZmYgPT0gKGludDhfdClkaWZmAGRpZmYgPT0gKGludDE2X3QpZGlmZgBocmVmAGdjX2RlY3JlZgBmcmVlX3Zhcl9yZWYAb3B0aW1pemVfc2NvcGVfbWFrZV9nbG9iYWxfcmVmAHJlc2V0X3dlYWtfcmVmAGRlbGV0ZV93ZWFrX3JlZgBvcHRpbWl6ZV9zY29wZV9tYWtlX3JlZgBpbmRleE9mAGxhc3RJbmRleE9mAHZhbHVlT2YAc2V0UHJvdG90eXBlT2YAZ2V0UHJvdG90eXBlT2YAaXNQcm90b3R5cGVPZgAlLipmAGZvbnRzaXplAG5ld19zaXplIDw9IHNoLT5wcm9wX3NpemUAZGVzY3IgPCBydC0+YXRvbV9zaXplAGF0b20gPCBydC0+YXRvbV9zaXplAGNvbXB1dGVfc3RhY2tfc2l6ZQBuIDwgYnVmX3NpemUAbm9ybWFsaXplAGZyZWV6ZQByZXNvbHZlAHRvUHJpbWl0aXZlAHB1dF9sdmFsdWUAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAHJlc3QgZWxlbWVudCBjYW5ub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUAaW52YWxpZCByZXQgdmFsdWUAX19KU19BdG9tVG9WYWx1ZQBfX3F1b3RlAGlzRmluaXRlAGRlbGV0ZQBjcmVhdGUAc2V0RGF0ZQBnZXREYXRlAHNldFVUQ0RhdGUAZ2V0VVRDRGF0ZQBJbnZhbGlkIERhdGUAcmV2ZXJzZQBwYXJzZQBwcm94eSBwcmV2ZW50RXh0ZW5zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAFByb21pc2UAdG9Mb3dlckNhc2UAdG9Mb2NhbGVMb3dlckNhc2UAdG9VcHBlckNhc2UAdG9Mb2NhbGVVcHBlckNhc2UAaWdub3JlQ2FzZQBsb2NhbGVDb21wYXJlAHByb3h5OiBpbmNvbnNpc3RlbnQgcHJvdG90eXBlAHByb3h5OiBiYWQgcHJvdG90eXBlAG5vdCBhIHByb3RvdHlwZQBpbnZhbGlkIG9iamVjdCB0eXBlAHVuZXNjYXBlAG5vbmUAcmVzdCBlbGVtZW50IG11c3QgYmUgdGhlIGxhc3Qgb25lAG11bHRpbGluZQAgIHBjMmxpbmUAc29tZQBKU19GcmVlUnVudGltZQBKU1J1bnRpbWUAc2V0VGltZQBnZXRUaW1lAHNldF9vYmplY3RfbmFtZQBleHBlY3RpbmcgcHJvcGVydHkgbmFtZQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQBpbnZhbGlkIHByb3BlcnR5IG5hbWUAZHVwbGljYXRlIF9fcHJvdG9fXyBwcm9wZXJ0eSBuYW1lAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIHBhcmFtZXRlciBuYW1lAGV4cGVjdGluZyBncm91cCBuYW1lAGR1cGxpY2F0ZSBncm91cCBuYW1lAGludmFsaWQgZ3JvdXAgbmFtZQBkdXBsaWNhdGUgbGFiZWwgbmFtZQBpbnZhbGlkIGZpcnN0IGNoYXJhY3RlciBvZiBwcml2YXRlIG5hbWUAaW52YWxpZCBsZXhpY2FsIHZhcmlhYmxlIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBleHBlY3RpbmcgZmllbGQgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAY2xhc3Mgc3RhdGVtZW50IHJlcXVpcmVzIGEgbmFtZQBmaWxlTmFtZQBjb21waWxlAG9iamVjdCBpcyBub3QgZXh0ZW5zaWJsZQBwcm94eTogaW5jb25zaXN0ZW50IGlzRXh0ZW5zaWJsZQBjYW5ub3QgaGF2ZSBzZXR0ZXIvZ2V0dGVyIGFuZCB2YWx1ZSBvciB3cml0YWJsZQBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlAHZhbHVlIGlzIG5vdCBpdGVyYWJsZQBwcm9wZXJ0eUlzRW51bWVyYWJsZQBtaXNzaW5nIGluaXRpYWxpemVyIGZvciBjb25zdCB2YXJpYWJsZQBsZXhpY2FsIHZhcmlhYmxlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUAcmV2b2NhYmxlAHN0cmlrZQBpbnZhbGlkIGNsYXNzIHJhbmdlAG1lc3NhZ2UAYXN5bmNfZnVuY19mcmVlAGludmFsaWQgbHZhbHVlIGluIHN0cmljdCBtb2RlAGludmFsaWQgdmFyaWFibGUgbmFtZSBpbiBzdHJpY3QgbW9kZQBjYW5ub3QgZGVsZXRlIGEgZGlyZWN0IHJlZmVyZW5jZSBpbiBzdHJpY3QgbW9kZQBvY3RhbCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZQBvY3RhbCBsaXRlcmFscyBhcmUgZGVwcmVjYXRlZCBpbiBzdHJpY3QgbW9kZQB1bmljb2RlACAgYnl0ZWNvZGUASlNGdW5jdGlvbkJ5dGVjb2RlAHNraXBfZGVhZF9jb2RlAGludmFsaWQgYXJndW1lbnQgbmFtZSBpbiBzdHJpY3QgY29kZQBpbnZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IGNvZGUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgZ2xvYmFsIGlkZW50aWZpZXIgaW4gbW9kdWxlIGNvZGUAaW1wb3J0Lm1ldGEgb25seSB2YWxpZCBpbiBtb2R1bGUgY29kZQBmcm9tQ2hhckNvZGUAaW52YWxpZCBmb3IgaW4vb2YgbGVmdCBoYW5kLXNpZGUAaW52YWxpZCBhc3NpZ25tZW50IGxlZnQtaGFuZCBzaWRlAHJlZHVjZQBzb3VyY2UAJ3RoaXMnIGNhbiBiZSBpbml0aWFsaXplZCBvbmx5IG9uY2UAcHJvcGVydHkgY29uc3RydWN0b3IgYXBwZWFycyBtb3JlIHRoYW4gb25jZQBpbnZhbGlkIFVURi04IHNlcXVlbmNlAGNpcmN1bGFyIHJlZmVyZW5jZQBzbGljZQBzcGxpY2UAcmFjZQByZXBsYWNlACUrLiplAHVuZXhwZWN0ZWQgJ2F3YWl0JyBrZXl3b3JkAHVuZXhwZWN0ZWQgJ3lpZWxkJyBrZXl3b3JkAG1hcF9kZWNyZWZfcmVjb3JkAGl0ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSB0aHJvdyBtZXRob2QAb2JqZWN0IG5lZWRzIHRvSVNPU3RyaW5nIG1ldGhvZAAnc3VwZXInIGlzIG9ubHkgdmFsaWQgaW4gYSBtZXRob2QAZnJvdW5kAGJyZWFrL2NvbnRpbnVlIGxhYmVsIG5vdCBmb3VuZABvdXQgb2YgYm91bmQAZmluZABiaW5kAGludmFsaWQgaW5kZXggZm9yIGFwcGVuZABleHRyYW5lb3VzIGNoYXJhY3RlcnMgYXQgdGhlIGVuZAB1bmV4cGVjdGVkIGRhdGEgYXQgdGhlIGVuZAB1bmV4cGVjdGVkIGVuZABpbnZhbGlkIGluY3JlbWVudC9kZWNyZW1lbnQgb3BlcmFuZABpbnZhbGlkICdpbnN0YW5jZW9mJyByaWdodCBvcGVyYW5kAGludmFsaWQgJ2luJyBvcGVyYW5kAHRyaW1FbmQAcGFkRW5kAGJvbGQAJWxsZABnY19kZWNyZWZfY2hpbGQAcmVzb2x2ZV9zY29wZV9wcml2YXRlX2ZpZWxkAGNhbm5vdCBkZWxldGUgYSBwcml2YXRlIGNsYXNzIGZpZWxkAGV4cGVjdGluZyA8YnJhbmQ+IHByaXZhdGUgZmllbGQAJXMgaXMgbm90IGluaXRpYWxpemVkAGZpeGVkAHRvRml4ZWQAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkAHJlZ2V4IG5vdCBzdXBwb3J0ZWQAZXZhbCBpcyBub3Qgc3VwcG9ydGVkAFJlZ0V4cCBhcmUgbm90IHN1cHBvcnRlZABpbnRlcnJ1cHRlZAAlcyBvYmplY3QgZXhwZWN0ZWQAaWRlbnRpZmllciBleHBlY3RlZABieXRlY29kZSBmdW5jdGlvbiBleHBlY3RlZABzdHJpbmcgZXhwZWN0ZWQAZnJvbSBjbGF1c2UgZXhwZWN0ZWQAZnVuY3Rpb24gbmFtZSBleHBlY3RlZAB2YXJpYWJsZSBuYW1lIGV4cGVjdGVkAG1ldGEgZXhwZWN0ZWQAcmVqZWN0ZWQAbWVtb3J5IGFsbG9jYXRlZABtZW1vcnkgdXNlZABkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2Fubm90IHNldCBwcm9wZXJ0eSAnJXMnIG9mIHVuZGVmaW5lZABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIHVuZGVmaW5lZABmbGFncyBtdXN0IGJlIHVuZGVmaW5lZABVbmRlZmluZWQAcHJpdmF0ZSBjbGFzcyBmaWVsZCBpcyBhbHJlYWR5IGRlZmluZWQAJyVzJyBpcyBub3QgZGVmaW5lZABncm91cCBuYW1lIG5vdCBkZWZpbmVkAGFsbFNldHRsZWQAZnVsZmlsbGVkAGNhbm5vdCBiZSBjYWxsZWQAaXNTZWFsZWQAIXNoLT5pc19oYXNoZWQAdmFyX3JlZi0+aXNfZGV0YWNoZWQAQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWQAYWRkACUrMDdkACUwNGQAJTAyZCUwMmQAJTAyZC8lMDJkLyUwKmQAJS4zcyAlLjNzICUwMmQgJTAqZAA6JWQAaW52YWxpZCB0aHJvdyB2YXIgdHlwZSAlZABzYwBqc19kZWZfbWFsbG9jAHRydW5jAGdjAGV4ZWMAL3RtcC9xdWlja2pzL3F1aWNranMuYwAvdG1wL3F1aWNranMvbGlicmVnZXhwLmMAL3RtcC9xdWlja2pzL2xpYnVuaWNvZGUuYwBzdWIAcHJvbWlzZV9yZWFjdGlvbl9qb2IAanNfcHJvbWlzZV9yZXNvbHZlX3RoZW5hYmxlX2pvYgByd2EAX19sb29rdXBTZXR0ZXJfXwBfX2RlZmluZVNldHRlcl9fAF9fbG9va3VwR2V0dGVyX18AX19kZWZpbmVHZXR0ZXJfXwBfX3Byb3RvX18AW1N5bWJvbC5zcGxpdF0AW1N5bWJvbC5zcGVjaWVzXQBbU3ltYm9sLml0ZXJhdG9yXQBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdAFtTeW1ib2wubWF0Y2hBbGxdAFtTeW1ib2wubWF0Y2hdAFtTeW1ib2wuc2VhcmNoXQBbU3ltYm9sLnRvU3RyaW5nVGFnXQBbU3ltYm9sLnRvUHJpbWl0aXZlXQBbdW5zdXBwb3J0ZWQgdHlwZV0AW2Z1bmN0aW9uIGJ5dGVjb2RlXQBbU3ltYm9sLmhhc0luc3RhbmNlXQBbU3ltYm9sLnJlcGxhY2VdAFsAJTAyZDolMDJkOiUwMmQuJTAzZFoAUE9TSVRJVkVfSU5GSU5JVFkATkVHQVRJVkVfSU5GSU5JVFkAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkAc3RhY2tfbGVuIDwgUE9QX1NUQUNLX0xFTl9NQVgALSUwMmQtJTAyZFQASlNfQXRvbUdldFN0clJUAG9wY29kZSA8IFJFT1BfQ09VTlQAQllURVNfUEVSX0VMRU1FTlQAJTAyZDolMDJkOiUwMmQgR01UAEpTX1ZBTFVFX0dFVF9UQUcoc2YtPmN1cl9mdW5jKSA9PSBKU19UQUdfT0JKRUNUAHZhcl9raW5kID09IEpTX1ZBUl9QUklWQVRFX1NFVFRFUgBNQVhfU0FGRV9JTlRFR0VSAE1JTl9TQUZFX0lOVEVHRVIAaXNOYU4ARGF0ZSB2YWx1ZSBpcyBOYU4AdG9KU09OAEVQU0lMT04ATkFOACUwMmQ6JTAyZDolMDJkICVjTQBzLT5sYWJlbF9zbG90c1tsYWJlbF0uZmlyc3RfcmVsb2MgPT0gTlVMTABsYWJlbF9zbG90c1tpXS5maXJzdF9yZWxvYyA9PSBOVUxMAHBycyAhPSBOVUxMAHNmLT5jdXJfc3AgIT0gTlVMTABzZiAhPSBOVUxMAG1yMSAhPSBOVUxMAHZhcl9raW5kICE9IEpTX1ZBUl9OT1JNQUwAYi0+ZnVuY19raW5kID09IEpTX0ZVTkNfTk9STUFMAGVuY29kZVVSSQBkZWNvZGVVUkkAUEkAc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUCB8fCBzcGVjaWFsID09IFBVVF9MVkFMVUVfTk9LRUVQX0RFUFRIAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9FWEVDVVRJTkcASU5GADAxMjM0NTY3ODlBQkNERUYAU0laRQBNQVhfVkFMVUUATUlOX1ZBTFVFAE5BTUUAZXZhbF90eXBlID09IEpTX0VWQUxfVFlQRV9HTE9CQUwgfHwgZXZhbF90eXBlID09IEpTX0VWQUxfVFlQRV9NT0RVTEUAcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfSlNfT0JKRUNUIHx8IHAtPmdjX29ial90eXBlID09IEpTX0dDX09CSl9UWVBFX0ZVTkNUSU9OX0JZVEVDT0RFAExPRzJFAExPRzEwRQBzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQVdBSVRJTkdfUkVUVVJOIHx8IHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9DT01QTEVURUQAVVRDADxpbnB1dD4APGluaXRTY3JpcHQ+ADxldmFsU2NyaXB0PgA8c2V0PgA8YW5vbnltb3VzPgA8Y29tbUZ1bj4APGNhbGxFeHRlcm5hbEZ1bmN0aW9uPgA8bnVsbD4AJnF1b3Q7AHNldFVpbnQ4AGdldFVpbnQ4AHNldEludDgAZ2V0SW50OABtYWxmb3JtZWQgVVRGLTgAcmFkaXggbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2AHNldFVpbnQxNgBnZXRVaW50MTYAc2V0SW50MTYAZ2V0SW50MTYAYXJnYyA9PSA1AHNldEZsb2F0NjQAZ2V0RmxvYXQ2NABhcmdjID09IDMAYXRhbjIAbG9nMgBTUVJUMV8yAFNRUlQyAExOMgBjbHozMgBzZXRVaW50MzIAZ2V0VWludDMyAHNldEludDMyAGdldEludDMyAHNldEZsb2F0MzIAZ2V0RmxvYXQzMgBzdGFja19sZW4gPj0gMgBKU19BdG9tSXNOdW1lcmljSW5kZXgxAGpzX2ZjdnQxAGV4cG0xAGxzLT5hZGRyID09IC0xAHN0YWNrX2xlbiA+PSAxAHAtPnNoYXBlLT5oZWFkZXIucmVmX2NvdW50ID09IDEAc3RhY2tfbGVuID09IDEAanNfZnJlZV9zaGFwZTAAbG9nMTAATE4xMABwLT5yZWZfY291bnQgPiAwAHZhcl9yZWYtPmhlYWRlci5yZWZfY291bnQgPiAwAHN0YWNrX3NpemUgPiAwAGNwb29sX2lkeCA+PSAwAHJ0LT5hdG9tX2NvdW50ID49IDAAbHMtPnJlZl9jb3VudCA+PSAwAHMtPmlzX2V2YWwgfHwgcy0+Y2xvc3VyZV92YXJfY291bnQgPT0gMABwLT5yZWZfY291bnQgPT0gMABjdHgtPmhlYWRlci5yZWZfY291bnQgPT0gMABzaC0+aGVhZGVyLnJlZl9jb3VudCA9PSAwAHAtPm1hcmsgPT0gMAAocHItPnUuaW5pdC5yZWFsbV9hbmRfaWQgJiAzKSA9PSAwAChuZXdfaGFzaF9zaXplICYgKG5ld19oYXNoX3NpemUgLSAxKSkgPT0gMABpICE9IDAAc2l6ZSAhPSAwAF4kXC4qKz8oKVtde318LwA8LwBtaXNzaW5nIGJpbmRpbmcgcGF0dGVybi4uLgBhc3luYyBmdW5jdGlvbiAqAAp9KQBsaXN0X2VtcHR5KCZydC0+Z2Nfb2JqX2xpc3QpAGogPT0gKHNoLT5wcm9wX2NvdW50IC0gc2gtPmRlbGV0ZWRfcHJvcF9jb3VudCkASlNfSXNVbmRlZmluZWQoZnVuY19yZXQpACFfX0pTX0F0b21Jc1RhZ2dlZEludChkZXNjcikAIWF0b21faXNfZnJlZShwKQAobnVsbCkAIChuYXRpdmUpAGpzX2NsYXNzX2hhc19ieXRlY29kZShwLT5jbGFzc19pZCkAdW5jb25zaXN0ZW50IHN0YWNrIHNpemU6ICVkICVkIChwYz0lZCkAYnl0ZWNvZGUgYnVmZmVyIG92ZXJmbG93IChvcD0lZCwgcGM9JWQpAHN0YWNrIG92ZXJmbG93IChvcD0lZCwgcGM9JWQpAHN0YWNrIHVuZGVyZmxvdyAob3A9JWQsIHBjPSVkKQBpbnZhbGlkIG9wY29kZSAob3A9JWQsIHBjPSVkKQAoPzopAG5vIGZ1bmN0aW9uIGZpbGVuYW1lIGZvciBpbXBvcnQoKQAtXy4hfionKCkAIGFub255bW91cygAU3ltYm9sKABleHBlY3RpbmcgJ30nAGNsYXNzIGNvbnN0cnVjdG9ycyBtdXN0IGJlIGludm9rZWQgd2l0aCAnbmV3JwBleHBlY3RpbmcgJ2FzJwB1bmV4cGVjdGVkIHRva2VuIGluIGV4cHJlc3Npb246ICclLipzJwB1bmV4cGVjdGVkIHRva2VuOiAnJS4qcycAcmVkZWNsYXJhdGlvbiBvZiAnJXMnAGR1cGxpY2F0ZSBleHBvcnRlZCBuYW1lICclcycAY2lyY3VsYXIgcmVmZXJlbmNlIHdoZW4gbG9va2luZyBmb3IgZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycAQ291bGQgbm90IGZpbmQgZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycAY291bGQgbm90IGxvYWQgbW9kdWxlICclcycAY2Fubm90IGRlZmluZSB2YXJpYWJsZSAnJXMnAHVuZGVmaW5lZCBwcml2YXRlIGZpZWxkICclcycAdW5zdXBwb3J0ZWQgcmVmZXJlbmNlIHRvICdzdXBlcicAaW52YWxpZCB1c2Ugb2YgJ3N1cGVyJwAnZm9yIGF3YWl0JyBsb29wIHNob3VsZCBiZSB1c2VkIHdpdGggJ29mJwBleHBlY3RpbmcgJyVjJwB1bnBhcmVudGhlc2l6ZWQgdW5hcnkgZXhwcmVzc2lvbiBjYW4ndCBhcHBlYXIgb24gdGhlIGxlZnQtaGFuZCBzaWRlIG9mICcqKicAaW52YWxpZCB1c2Ugb2YgJ2ltcG9ydCgpJwBleHBlY3RpbmcgJSUAOy8/OkAmPSskLCMAPSIAc2V0IABnZXQgAFtvYmplY3QgAGFzeW5jIGZ1bmN0aW9uIABib3VuZCAAJS4zcywgJTAyZCAlLjNzICUwKmQgAGFzeW5jIAA6IAAgICAgICAgICAgAAopIHsKAApKU09iamVjdCBjbGFzc2VzCgAlLTIwcyAlOHMgJThzCgAgICU1ZCAgJTIuMGQgJXMKACAgJTN1ICsgJS0ydSAgJXMKACAgbWFsbG9jX3VzYWJsZV9zaXplIHVuYXZhaWxhYmxlCgAlLTIwcyAlOGxs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bmVkAG51bWJlcgBib29sZWFuAHN0cmluZwBvYmplY3QAc3ltYm9sAGludGVnZXIAdW5rbm93bgBhcmd1bWVudHMAY2FsbGVlAGNhbGxlcgA8ZXZhbD4APHJldD4APHZhcj4APGFyZ192YXI+ADx3aXRoPgBsYXN0SW5kZXgAdGFyZ2V0AGluZGV4AGlucHV0AGRlZmluZVByb3BlcnRpZXMAYXBwbHkAam9pbgBjb25jYXQAc3BsaXQAY29uc3RydWN0AGdldFByb3RvdHlwZU9mAHNldFByb3RvdHlwZU9mAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBoYXMAZGVsZXRlUHJvcGVydHkAZGVmaW5lUHJvcGVydHkAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAG93bktleXMAYWRkAGRvbmUAbmV4dAB2YWx1ZXMAc291cmNlAGZsYWdzAGdsb2JhbAB1bmljb2RlAHJhdwBuZXcudGFyZ2V0AHRoaXMuYWN0aXZlX2Z1bmMAPGhvbWVfb2JqZWN0PgA8Y29tcHV0ZWRfZmllbGQ+ADxzdGF0aWNfY29tcHV0ZWRfZmllbGQ+ADxjbGFzc19maWVsZHNfaW5pdD4APGJyYW5kPgAjY29uc3RydWN0b3IAYXMAZnJvbQBtZXRhACpkZWZhdWx0KgAqAE1vZHVsZQB0aGVuAHJlc29sdmUAcmVqZWN0AHByb21pc2UAcHJveHkAcmV2b2tlAGFzeW5jAGV4ZWMAZ3JvdXBzAHN0YXR1cwByZWFzb24AZ2xvYmFsVGhpcwB0b0pTT04AT2JqZWN0AEFycmF5AEVycm9yAE51bWJlcgBTdHJpbmcAQm9vbGVhbgBTeW1ib2wAQXJndW1lbnRzAE1hdGgASlNPTgBEYXRlAEZ1bmN0aW9uAEdlbmVyYXRvckZ1bmN0aW9uAEZvckluSXRlcmF0b3IAUmVnRXhwAEFycmF5QnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAFVpbnQ4Q2xhbXBlZEFycmF5AEludDhBcnJheQBVaW50OEFycmF5AEludDE2QXJyYXkAVWludDE2QXJyYXkASW50MzJBcnJheQBVaW50MzJBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AE1hcABTZXQAV2Vha01hcABXZWFrU2V0AE1hcCBJdGVyYXRvcgBTZXQgSXRlcmF0b3IAQXJyYXkgSXRlcmF0b3IAU3RyaW5nIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAR2VuZXJhdG9yAFByb3h5AFByb21pc2UAUHJvbWlzZVJlc29sdmVGdW5jdGlvbgBQcm9taXNlUmVqZWN0RnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBBc3luY0Z1bmN0aW9uUmVzb2x2ZQBBc3luY0Z1bmN0aW9uUmVqZWN0AEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AQXN5bmNHZW5lcmF0b3IARXZhbEVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAU3ludGF4RXJyb3IAVHlwZUVycm9yAFVSSUVycm9yAEludGVybmFsRXJyb3IAPGJyYW5kPgBTeW1ib2wudG9QcmltaXRpdmUAU3ltYm9sLml0ZXJhdG9yAFN5bWJvbC5tYXRjaABTeW1ib2wubWF0Y2hBbGwAU3ltYm9sLnJlcGxhY2UAU3ltYm9sLnNlYXJjaABTeW1ib2wuc3BsaXQAU3ltYm9sLnRvU3RyaW5nVGFnAFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUAU3ltYm9sLmhhc0luc3RhbmNlAFN5bWJvbC5zcGVjaWVzAFN5bWJvbC51bnNjb3BhYmxlcwBTeW1ib2wuYXN5bmNJdGVyYXRvcgAAAAAAAQAAAAUAARQFAAEVBQABFQUAARcFAAEXAQABAAEAAQABAAEAAQABAAEAAQABAAEAAgABBQMAAQoBAQAAAQIBAAEDAgABAQIAAQIDAAECBAABAwYAAQIDAAEDBAABBAUAAQMDAAEEBAABBQUAAQICAAEEBAABAwMAAQMDAAEEBAABBQUAAwIBDQMBAQ0DAQANAwIBDQMCAA0DAAENAwMBCgEBAAABAAAAAQECAAEAAAABAgIAAQIAAAEBAAABAQAABgAAGAUBAQ8DAgEKAQIBAAEBAQABAQEABQABFwUAARcFAAEXBQEAFwUBABcFAgAXAQIDAAEDAAAGAAAYBgAAGAYBABgFAQEXBQECFwUCABcBAgEAAQMAAAEDAQABAgEAAQICAAEDAAABAwEAAQQAAAUCARcFAQEXAQICAAECAQAB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QAL6ADAB+wAwgfsAQCj8ADABEAFAEhEBMQEdAUCCHQEwgR4BMQEfAQGCHwFAgiABMIEhATABIgEwgSIBQAojAQEBKAEBgSgBAQEpAQCBKQEAASoBAAIrAQCBLAEAgS0BAQEuAQABMAEBgTABAIExAQGBMgEBATMBAAE0AQCBNAEBATUBAYE1AQEBNgEAgTcBAYE4AQABOQEAgToBAYE+AQABQAEBAUEBAIFBAQGBQwEAAUQBAIFEAQACRQEAAUYBAAFJAQGBTgEBAU8Bc4GiAUAEuAFAArsBAIO9ATCBvwEwAcMBMAPEATABxgEwAscB0AHIATCRyAEwidEBAAHWAQCD1gHTAdgBAJHYAXMB4QEAieEBAAHmAQCC5gEwgecBcwHoAXOB6AFzgeoBcwHrAQCB6wFAGOwBcwH4AXOB+AEAAfkBAIH5AaAB+gFzgfoBQIL7ATCB/AFAAv0BMIP+ATAQAAIwIAgCACAYAgAQKAJAIjACQDZFAjABYAJAjmACAIFnAkBgaAIwppgCAKawArWBwwIxJlAIMYFjCDGBZggAK2gIAIN+CBFQ0AkQBvgJIAb8CXQBQA50gUAOdAFBDnSBQQ50AUIOdIFCDnQBQw6AgUMOgAFEDjArSA4wg14OAYG8DgGBvg4BAccOQH4AD0AYPw+1AUsPtoFLD7YBTA+2gUwPtwFND4CBTQ8wAU8PQGBQDwAIgA8wCIQPAAaIDzAGjA8ACJAPMAiUDwAImA8wCJwPAAagDzAGpA+wAagPAIGoD9MBqQ8AgakP0wGqDwCBqg/TAasPAIGrDzCBrA8wga0PMIGuDzCBrw8ACLAPMAi0DwACuA8ABLkPAAK7DwECvA8BAr0PAQK+D7cIwA9nCMQPuAjID2gIzA+4CNAPaAjUDwAC2A+5AdkPsYHZD7kB2g+xAdsP14HbDzAC3A8wAt0PYQHeD3MB3w+5AeEPsoHhD7oB4g+yAeMP2IHjDzAE5A9iAeYPAALoD9AB6Q/QgekPsAHrD9CB6w8wAuwPMALtDwEC8A/TAfEP04HxD7oB8g8BgfIPsAHzD9OB8w8wAvQPMAL1DzEB9g+6AfkPsoH5D7sB+g+yAfsP2YH7DzAC/A8wAv0PYgH+D6ABkxCgAZUQoIGVEDEBmRABAacQMRCwEAEQuBBAgsEQMRpbEgEaaBIxLwAWAS8YFkACMBYwATEW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DgE4EiHBFSHlGSGqHSGM0UFK4SHwAQ4AAAAAQWRsYW0sQWRsbQBBaG9tLEFob20AQW5hdG9saWFuX0hpZXJvZ2x5cGhzLEhsdXcAQXJhYmljLEFyYWIAQXJtZW5pYW4sQXJtbgBBdmVzdGFuLEF2c3QAQmFsaW5lc2UsQmFsaQBCYW11bSxCYW11AEJhc3NhX1ZhaCxCYXNzAEJhdGFrLEJhdGsAQmVuZ2FsaSxCZW5nAEJoYWlrc3VraSxCaGtzAEJvcG9tb2ZvLEJvcG8AQnJhaG1pLEJyYWgAQnJhaWxsZSxCcmFpAEJ1Z2luZXNlLEJ1Z2kAQnVoaWQsQnVoZABDYW5hZGlhbl9BYm9yaWdpbmFsLENhbnMAQ2FyaWFuLENhcmkAQ2F1Y2FzaWFuX0FsYmFuaWFuLEFnaGIAQ2hha21hLENha20AQ2hhbSxDaGFtAENoZXJva2VlLENoZXIAQ2hvcmFzbWlhbixDaHJzAENvbW1vbixaeXl5AENvcHRpYyxDb3B0LFFhYWMAQ3VuZWlmb3JtLFhzdXgAQ3lwcmlvdCxDcHJ0AEN5cmlsbGljLEN5cmwARGVzZXJldCxEc3J0AERldmFuYWdhcmksRGV2YQBEaXZlc19Ba3VydSxEaWFrAERvZ3JhLERvZ3IARHVwbG95YW4sRHVwbABFZ3lwdGlhbl9IaWVyb2dseXBocyxFZ3lwAEVsYmFzYW4sRWxiYQBFbHltYWljLEVseW0ARXRoaW9waWMsRXRoaQBHZW9yZ2lhbixHZW9yAEdsYWdvbGl0aWMsR2xhZwBHb3RoaWMsR290aABHcmFudGhhLEdyYW4AR3JlZWssR3JlawBHdWphcmF0aSxHdWpyAEd1bmphbGFfR29uZGksR29uZwBHdXJtdWtoaSxHdXJ1AEhhbixIYW5pAEhhbmd1bCxIYW5nAEhhbmlmaV9Sb2hpbmd5YSxSb2hnAEhhbnVub28sSGFubwBIYXRyYW4sSGF0cgBIZWJyZXcsSGVicgBIaXJhZ2FuYSxIaXJhAEltcGVyaWFsX0FyYW1haWMsQXJtaQBJbmhlcml0ZWQsWmluaCxRYWFpAEluc2NyaXB0aW9uYWxfUGFobGF2aSxQaGxpAEluc2NyaXB0aW9uYWxfUGFydGhpYW4sUHJ0aQBKYXZhbmVzZSxKYXZhAEthaXRoaSxLdGhpAEthbm5hZGEsS25kYQBLYXRha2FuYSxLYW5hAEtheWFoX0xpLEthbGkAS2hhcm9zaHRoaSxLaGFyAEtobWVyLEtobXIAS2hvamtpLEtob2oAS2hpdGFuX1NtYWxsX1NjcmlwdCxLaXRzAEtodWRhd2FkaSxTaW5kAExhbyxMYW9vAExhdGluLExhdG4ATGVwY2hhLExlcGMATGltYnUsTGltYgBMaW5lYXJfQSxMaW5hAExpbmVhcl9CLExpbmIATGlzdSxMaXN1AEx5Y2lhbixMeWNpAEx5ZGlhbixMeWRpAE1ha2FzYXIsTWFrYQBNYWhhamFuaSxNYWhqAE1hbGF5YWxhbSxNbHltAE1hbmRhaWMsTWFuZABNYW5pY2hhZWFuLE1hbmkATWFyY2hlbixNYXJjAE1hc2FyYW1fR29uZGksR29ubQBNZWRlZmFpZHJpbixNZWRmAE1lZXRlaV9NYXllayxNdGVpAE1lbmRlX0tpa2FrdWksTWVuZABNZXJvaXRpY19DdXJzaXZlLE1lcmMATWVyb2l0aWNfSGllcm9nbHlwaHMsTWVybwBNaWFvLFBscmQATW9kaSxNb2RpAE1vbmdvbGlhbixNb25nAE1ybyxNcm9vAE11bHRhbmksTXVsdABNeWFubWFyLE15bXIATmFiYXRhZWFuLE5iYXQATmFuZGluYWdhcmksTmFuZABOZXdfVGFpX0x1ZSxUYWx1AE5ld2EsTmV3YQBOa28sTmtvbwBOdXNodSxOc2h1AE55aWFrZW5nX1B1YWNodWVfSG1vbmcsSG1ucABPZ2hhbSxPZ2FtAE9sX0NoaWtpLE9sY2sAT2xkX0h1bmdhcmlhbixIdW5nAE9sZF9JdGFsaWMsSXRhbABPbGRfTm9ydGhfQXJhYmlhbixOYXJiAE9sZF9QZXJtaWMsUGVybQBPbGRfUGVyc2lhbixYcGVvAE9sZF9Tb2dkaWFuLFNvZ28AT2xkX1NvdXRoX0FyYWJpYW4sU2FyYgBPbGRfVHVya2ljLE9ya2gAT3JpeWEsT3J5YQBPc2FnZSxPc2dlAE9zbWFueWEsT3NtYQBQYWhhd2hfSG1vbmcsSG1uZwBQYWxteXJlbmUsUGFsbQBQYXVfQ2luX0hhdSxQYXVjAFBoYWdzX1BhLFBoYWcAUGhvZW5pY2lhbixQaG54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ZXR0ZXIATSxNYXJrLENvbWJpbmluZ19NYXJrAE4sTnVtYmVyAFMsU3ltYm9sAFAsUHVuY3R1YXRpb24scHVuY3QAWixTZXBhcmF0b3IAQyxPdGhlcgBBkLkCC7AIDgAAAD4AAADAAQAAAA4AAADwAAAAAH8AAACAAwEAADxBU0NJSV9IZXhfRGlnaXQsQUhleABCaWRpX0NvbnRyb2wsQmlkaV9DAERhc2gARGVwcmVjYXRlZCxEZXAARGlhY3JpdGljLERpYQBFeHRlbmRlcixFeHQASGV4X0RpZ2l0LEhleABJRFNfQmluYXJ5X09wZXJhdG9yLElEU0IASURTX1RyaW5hcnlfT3BlcmF0b3IsSURTVABJZGVvZ3JhcGhpYyxJZGVvAEpvaW5fQ29udHJvbCxKb2luX0MATG9naWNhbF9PcmRlcl9FeGNlcHRpb24sTE9FAE5vbmNoYXJhY3Rlcl9Db2RlX1BvaW50LE5DaGFyAFBhdHRlcm5fU3ludGF4LFBhdF9TeW4AUGF0dGVybl9XaGl0ZV9TcGFjZSxQYXRfV1MAUXVvdGF0aW9uX01hcmssUU1hcmsAUmFkaWNhbABSZWdpb25hbF9JbmRpY2F0b3IsUkkAU2VudGVuY2VfVGVybWluYWwsU1Rlcm0AU29mdF9Eb3R0ZWQsU0QAVGVybWluYWxfUHVuY3R1YXRpb24sVGVybQBVbmlmaWVkX0lkZW9ncmFwaCxVSWRlbwBWYXJpYXRpb25fU2VsZWN0b3IsVlMAV2hpdGVfU3BhY2Usc3BhY2UAQmlkaV9NaXJyb3JlZCxCaWRpX00ARW1vamkARW1vamlfQ29tcG9uZW50LEVDb21wAEVtb2ppX01vZGlmaWVyLEVNb2QARW1vamlfTW9kaWZpZXJfQmFzZSxFQmFzZQBFbW9qaV9QcmVzZW50YXRpb24sRVByZXMARXh0ZW5kZWRfUGljdG9ncmFwaGljLEV4dFBpY3QARGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCxESQBJRF9TdGFydCxJRFMAQ2FzZV9JZ25vcmFibGUsQ0kAQVNDSUkAQWxwaGFiZXRpYyxBbHBoYQBBbnkAQXNzaWduZWQAQ2FzZWQAQ2hhbmdlc19XaGVuX0Nhc2Vmb2xkZWQsQ1dDRgBDaGFuZ2VzX1doZW5f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dR+NlXUfDZx1H42idQMBqXWfCKp1gUCudZ+DrnWBQLB1n4ywdYHAtnUtA7d1n4i4dYHAvHWfA711gcC+dZ8Mv3WBQMV1LYPFdZ8Ix3WBQMt1n4PLdYFAzXWfjM11gcDTdS0D1HWfiNV1gcDZdZ8D2nWBwNt1nwzcdYFA4nUtg+J1nwjkdYFA6HWfg+h1gUDqdZ+M6nWBwPB1LQTxdR+F83UfBfZ1H4X4dR8F+3Ufhf11LQKAe61NgXsDQoh7gcCJey1FinsDBI17gYCQewPckXstBaB7rciie4NEqHutyKp7lwBAfCFFQHwlDUR8h4BKfBXBSnwXQUt8Hw1MfBeCUnyZgFN8l8BTfJeBWnyXAGR8LwGAfIGAgHwDFoR8wQSQfAMBlHwfBfx+rAEAvhDRAL6sRwm+EDkNviyHKb4sAi2+kDcuvpD/Sb4QvGm+AAAAAAAAAAAgAAAAYQACAAQABgC8AwgACgAMABUAlQClALkAwQDDAMcAywDRANcA3QDgAOYA+AAIAQoBcwAQARIBFAEgASwBRAFNAVMBYgFoAWoBdgGSAZQBqQG7AccB0QHVAbkC1wE7ANkB2wG3AOEB/AEMAhgCHQIjAicCowMzAj8CQgJLAk4CUQJdAmACaQJsAm8CdQJ4AoECigKcAp8CowKvArkCxQLJAs0C0QLVAucC7QLxAvUC+QL9AgUDCQMNAxMDFwMbAyMDJwMrAy8DNQM9A0EDSQNNA1EDCw9XA1sDXwNjA2cDawNvA3MDeQN9A4EDhQOJA40DkQOVA5kDnQOhA9wQpQPJA80D2QPdA+ED7wPxAz0ETwSZBPAEAgVKBWQFbAVwBXMFmgX6Bf4FBwYLBhQGGAYeBiIGKAaOBpQGmAaeBqIGqwasA/MGrQP2Bq4D+QavA/wGzAP/Bs0DAgfOAwUHCQcNBxEHhgMyBzUHuQM3BzsHiANTB4kDVgeQA2sHigN3B7ADiQeOA5kHnwejB4wDuAePA7sHtAC+B8AHwgcQIMsHLgDNB88HIADSB9YH2wffB+QH6gfwByAA9gcSIgEIBQgHCB0IJQgnCEMALQgwCJABNgg5CE4ARQhHCEwITghRCFoAqQNaAFMIVwhgCGkAYghlCG8IdAh6CH4IoghJAKQIpgipCFYAqwitCLAItAhYALYIuAi7CMAIwgjFCHYAxwjJCMwI0Ah4ANII1AjX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\";if(!S(U)){var ia=U;U=b.locateFile?b.locateFile(ia,t):t+ia}\nfunction ja(){var a=U;try{if(a==U&&v)return new Uint8Array(v);if(S(a))try{var c=ka(a.slice(37)),d=new Uint8Array(c.length);for(a=0;a<c.length;++a)d[a]=c.charCodeAt(a);var e=d}catch(g){throw Error(\"Converting base64 string to bytes failed.\");}else e=void 0;var f=e;if(f)return f;throw\"both async and sync fetching of the wasm failed\";}catch(g){x(g)}}\nfunction la(){return v||\"function\"!==typeof fetch?Promise.resolve().then(function(){return ja()}):fetch(U,{credentials:\"same-origin\"}).then(function(a){if(!a.ok)throw\"failed to load wasm binary file at '\"+U+\"'\";return a.arrayBuffer()}).catch(function(){return ja()})}function V(a){for(;0<a.length;){var c=a.shift();if(\"function\"==typeof c)c(b);else{var d=c.B;\"number\"===typeof d?void 0===c.A?O.get(d)():O.get(d)(c.A):d(void 0===c.A?null:c.A)}}}function W(a){var c=K(a)+1,d=M(c);C(a,D,d,c);return d}\nfunction ma(){}var na=[null,[],[]];function oa(){function a(k){return(k=k.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?k[1]:\"GMT\"}var c=(new Date).getFullYear(),d=new Date(c,0,1),e=new Date(c,6,1);c=d.getTimezoneOffset();var f=e.getTimezoneOffset(),g=Math.max(c,f);N[pa()>>2]=60*g;N[qa()>>2]=Number(c!=f);d=a(d);e=a(e);d=L(d);e=L(e);f<c?(N[X()>>2]=d,N[X()+4>>2]=e):(N[X()>>2]=e,N[X()+4>>2]=d)}var ra;\nma=(a,c,d)=>{a=H(a);c=null!==c?JSON.parse(H(c)):[];try{const e=b.externalCall(a,c);return e?W(e):null}catch(e){return b.HEAPU8[d]=1,W(e.message)}};\nvar ka=\"function\"===typeof atob?atob:function(a){var c=\"\",d=0;a=a.replace(/[^A-Za-z0-9\\+\\/=]/g,\"\");do{var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));var f=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));var g=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));var k=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));e=e<<2|f>>4;\nf=(f&15)<<4|g>>2;var m=(g&3)<<6|k;c+=String.fromCharCode(e);64!==g&&(c+=String.fromCharCode(f));64!==k&&(c+=String.fromCharCode(m))}while(d<a.length);return c},sa={a:function(a,c,d,e){x(\"Assertion failed: \"+H(a)+\", at: \"+[c?H(c):\"unknown filename\",d,e?H(e):\"unknown function\"])},b:function(){x(\"\")},g:ma,f:function(a,c){a=H(a);let d;try{d=window.JSON.parse(a)}catch(e){d=a}0!==c?window.alert(a):window.console.log(\"DUMP\",d)},e:function(a){var c=D.length;a>>>=0;if(2147483648<a)return!1;for(var d=1;4>=\nd;d*=2){var e=c*(1+.2/d);e=Math.min(e,a+100663296);e=Math.max(a,e);0<e%65536&&(e+=65536-e%65536);a:{try{y.grow(Math.min(2147483648,e)-ba.byteLength+65535>>>16);ca();var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},d:function(a,c,d,e){for(var f=0,g=0;g<d;g++){var k=N[c>>2],m=N[c+4>>2];c+=8;for(var w=0;w<m;w++){var l=D[k+w],p=na[a];0===l||10===l?((1===a?aa:u)(J(p,0)),p.length=0):p.push(l)}f+=m}N[e>>2]=f;return 0},c:function(a){var c=Date.now();N[a>>2]=c/1E3|0;N[a+4>>2]=c%1E3*1E3|0;return 0},\nh:function(a,c){ra||(ra=!0,oa());a=new Date(1E3*N[a>>2]);N[c>>2]=a.getSeconds();N[c+4>>2]=a.getMinutes();N[c+8>>2]=a.getHours();N[c+12>>2]=a.getDate();N[c+16>>2]=a.getMonth();N[c+20>>2]=a.getFullYear()-1900;N[c+24>>2]=a.getDay();var d=new Date(a.getFullYear(),0,1);N[c+28>>2]=(a.getTime()-d.getTime())/864E5|0;N[c+36>>2]=-(60*a.getTimezoneOffset());var e=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();d=d.getTimezoneOffset();a=(e!=d&&a.getTimezoneOffset()==Math.min(d,e))|0;N[c+32>>2]=a;a=N[X()+\n(a?4:0)>>2];N[c+40>>2]=a;return c},i:function(a){a=H(a);window.console.log(a)},j:function(a,c,d,e){a=H(a);c=H(c);d=H(d);d=`Quickjs -- ${a}: ${c}\\n${d}`;0!==e?window.alert(d):window.console.error(d)}};\n(function(){function a(f){b.asm=f.exports;y=b.asm.k;ca();O=b.asm.t;ea.unshift(b.asm.l);P--;b.monitorRunDependencies&&b.monitorRunDependencies(P);0==P&&(null!==Q&&(clearInterval(Q),Q=null),R&&(f=R,R=null,f()))}function c(f){a(f.instance)}function d(f){return la().then(function(g){return WebAssembly.instantiate(g,e)}).then(function(g){return g}).then(f,function(g){u(\"failed to asynchronously prepare wasm: \"+g);x(g)})}var e={a:sa};P++;b.monitorRunDependencies&&b.monitorRunDependencies(P);if(b.instantiateWasm)try{return b.instantiateWasm(e,\na)}catch(f){return u(\"Module.instantiateWasm callback failed with error: \"+f),!1}(function(){return v||\"function\"!==typeof WebAssembly.instantiateStreaming||S(U)||\"function\"!==typeof fetch?d(c):fetch(U,{credentials:\"same-origin\"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(c,function(g){u(\"wasm streaming compile failed: \"+g);u(\"falling back to ArrayBuffer instantiation\");return d(c)})})})().catch(q);return{}})();\nb.___wasm_call_ctors=function(){return(b.___wasm_call_ctors=b.asm.l).apply(null,arguments)};b._evalInSandbox=function(){return(b._evalInSandbox=b.asm.m).apply(null,arguments)};b._nukeSandbox=function(){return(b._nukeSandbox=b.asm.n).apply(null,arguments)};b._init=function(){return(b._init=b.asm.o).apply(null,arguments)};b._commFun=function(){return(b._commFun=b.asm.p).apply(null,arguments)};b._dumpMemoryUse=function(){return(b._dumpMemoryUse=b.asm.q).apply(null,arguments)};\nvar M=b._malloc=function(){return(M=b._malloc=b.asm.r).apply(null,arguments)};b._free=function(){return(b._free=b.asm.s).apply(null,arguments)};\nvar X=b.__get_tzname=function(){return(X=b.__get_tzname=b.asm.u).apply(null,arguments)},qa=b.__get_daylight=function(){return(qa=b.__get_daylight=b.asm.v).apply(null,arguments)},pa=b.__get_timezone=function(){return(pa=b.__get_timezone=b.asm.w).apply(null,arguments)},F=b.stackSave=function(){return(F=b.stackSave=b.asm.x).apply(null,arguments)},G=b.stackRestore=function(){return(G=b.stackRestore=b.asm.y).apply(null,arguments)},B=b.stackAlloc=function(){return(B=b.stackAlloc=b.asm.z).apply(null,arguments)};\nb.ccall=A;b.cwrap=function(a,c,d,e){d=d||[];var f=d.every(function(g){return\"number\"===g});return\"string\"!==c&&f&&!e?b[\"_\"+a]:function(){return A(a,c,d,arguments,e)}};b.stringToNewUTF8=W;var Y;R=function ta(){Y||Z();Y||(R=ta)};\nfunction Z(){function a(){if(!Y&&(Y=!0,b.calledRun=!0,!z)){V(ea);n(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for(\"function\"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var c=b.postRun.shift();fa.unshift(c)}V(fa)}}if(!(0<P)){if(b.preRun)for(\"function\"==typeof b.preRun&&(b.preRun=[b.preRun]);b.preRun.length;)ha();V(da);0<P||(b.setStatus?(b.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){b.setStatus(\"\")},1);a()},1)):a())}}b.run=Z;\nif(b.preInit)for(\"function\"==typeof b.preInit&&(b.preInit=[b.preInit]);0<b.preInit.length;)b.preInit.pop()();Z();\n\n\n return Module.ready\n}\n);\n})();\nexport default Module;","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// In mozilla-central, this file is loaded as non-module script,\n// so it mustn't have any dependencies.\n\nclass SandboxSupportBase {\n /**\n * @param {DOMWindow} - win\n */\n constructor(win) {\n this.win = win;\n this.timeoutIds = new Map();\n\n // Will be assigned after the sandbox is initialized\n this.commFun = null;\n }\n\n destroy() {\n this.commFunc = null;\n this.timeoutIds.forEach(([_, id]) => this.win.clearTimeout(id));\n this.timeoutIds = null;\n }\n\n /**\n * @param {Object} val - Export a value in the sandbox.\n */\n exportValueToSandbox(val) {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * @param {Object} val - Import a value from the sandbox.\n */\n importValueFromSandbox(val) {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * @param {String} errorMessage - Create an error in the sandbox.\n */\n createErrorForSandbox(errorMessage) {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * @param {String} name - Name of the function to call in the sandbox\n * @param {Array<Object>} args - Arguments of the function.\n */\n callSandboxFunction(name, args) {\n try {\n args = this.exportValueToSandbox(args);\n this.commFun(name, args);\n } catch (e) {\n this.win.console.error(e);\n }\n }\n\n createSandboxExternals() {\n // All the functions in externals object are called\n // from the sandbox.\n const externals = {\n setTimeout: (callbackId, nMilliseconds) => {\n if (\n typeof callbackId !== \"number\" ||\n typeof nMilliseconds !== \"number\"\n ) {\n return;\n }\n const id = this.win.setTimeout(() => {\n this.timeoutIds.delete(callbackId);\n this.callSandboxFunction(\"timeoutCb\", {\n callbackId,\n interval: false,\n });\n }, nMilliseconds);\n this.timeoutIds.set(callbackId, id);\n },\n clearTimeout: id => {\n this.win.clearTimeout(this.timeoutIds.get(id));\n this.timeoutIds.delete(id);\n },\n setInterval: (callbackId, nMilliseconds) => {\n if (\n typeof callbackId !== \"number\" ||\n typeof nMilliseconds !== \"number\"\n ) {\n return;\n }\n const id = this.win.setInterval(() => {\n this.callSandboxFunction(\"timeoutCb\", {\n callbackId,\n interval: true,\n });\n }, nMilliseconds);\n this.timeoutIds.set(callbackId, id);\n },\n clearInterval: id => {\n this.win.clearInterval(this.timeoutIds.get(id));\n this.timeoutIds.delete(id);\n },\n alert: cMsg => {\n if (typeof cMsg !== \"string\") {\n return;\n }\n this.win.alert(cMsg);\n },\n confirm: cMsg => {\n if (typeof cMsg !== \"string\") {\n return false;\n }\n return this.win.confirm(cMsg);\n },\n prompt: (cQuestion, cDefault) => {\n if (typeof cQuestion !== \"string\" || typeof cDefault !== \"string\") {\n return null;\n }\n return this.win.prompt(cQuestion, cDefault);\n },\n parseURL: cUrl => {\n const url = new this.win.URL(cUrl);\n const props = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"origin\",\n \"password\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\",\n \"searchParams\",\n \"username\",\n ];\n\n return Object.fromEntries(\n props.map(name => [name, url[name].toString()])\n );\n },\n send: data => {\n if (!data) {\n return;\n }\n const event = new this.win.CustomEvent(\"updatefromsandbox\", {\n detail: this.importValueFromSandbox(data),\n });\n this.win.dispatchEvent(event);\n },\n };\n Object.setPrototypeOf(externals, null);\n\n return (name, args) => {\n try {\n const result = externals[name](...args);\n return this.exportValueToSandbox(result);\n } catch (error) {\n throw this.createErrorForSandbox(error?.toString() ?? \"\");\n }\n };\n }\n}\n\nif (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n exports.SandboxSupportBase = SandboxSupportBase;\n} else {\n /* eslint-disable-next-line no-unused-vars, no-var */\n var EXPORTED_SYMBOLS = [\"SandboxSupportBase\"];\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport ModuleLoader from \"../external/quickjs/quickjs-eval.js\";\nimport { SandboxSupportBase } from \"./pdf.sandbox.external.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nclass SandboxSupport extends SandboxSupportBase {\n exportValueToSandbox(val) {\n // The communication with the Quickjs sandbox is based on strings\n // So we use JSON.stringfy to serialize\n return JSON.stringify(val);\n }\n\n importValueFromSandbox(val) {\n return val;\n }\n\n createErrorForSandbox(errorMessage) {\n return new Error(errorMessage);\n }\n}\n\nclass Sandbox {\n constructor(win, module) {\n this.support = new SandboxSupport(win, this);\n\n // The \"external\" functions created in pdf.sandbox.external.js\n // are finally used here:\n // https://github.com/mozilla/pdf.js.quickjs/blob/main/src/myjs.js\n // They're called from the sandbox only.\n module.externalCall = this.support.createSandboxExternals();\n\n this._module = module;\n\n // 0 to display error using console.error\n // else display error using window.alert\n this._alertOnError = 0;\n }\n\n create(data) {\n if (PDFJSDev.test(\"!PRODUCTION || TESTING\")) {\n this._module.ccall(\"nukeSandbox\", null, []);\n }\n const code = [PDFJSDev.eval(\"PDF_SCRIPTING_JS_SOURCE\")];\n\n if (PDFJSDev.test(\"!PRODUCTION || TESTING\")) {\n code.push(\n `globalThis.sendResultForTesting = callExternalFunction.bind(null, \"send\");`\n );\n } else {\n code.push(\"delete dump;\");\n }\n\n let success = false;\n let buf = 0;\n try {\n const sandboxData = JSON.stringify(data);\n // \"pdfjsScripting.initSandbox...\" MUST be the last line to be evaluated\n // since the returned value is used for the communication.\n code.push(`pdfjsScripting.initSandbox({ data: ${sandboxData} })`);\n buf = this._module.stringToNewUTF8(code.join(\"\\n\"));\n\n success = !!this._module.ccall(\n \"init\",\n \"number\",\n [\"number\", \"number\"],\n [buf, this._alertOnError]\n );\n } catch (error) {\n console.error(error);\n } finally {\n if (buf) {\n this._module.ccall(\"free\", \"number\", [\"number\"], [buf]);\n }\n }\n\n if (success) {\n this.support.commFun = this._module.cwrap(\"commFun\", null, [\n \"string\",\n \"string\",\n ]);\n } else {\n this.nukeSandbox();\n throw new Error(\"Cannot start sandbox\");\n }\n }\n\n dispatchEvent(event) {\n this.support?.callSandboxFunction(\"dispatchEvent\", event);\n }\n\n dumpMemoryUse() {\n if (this._module) {\n this._module.ccall(\"dumpMemoryUse\", null, []);\n }\n }\n\n nukeSandbox() {\n if (this._module !== null) {\n this.support.destroy();\n this.support = null;\n this._module.ccall(\"nukeSandbox\", null, []);\n this._module = null;\n }\n }\n\n evalForTesting(code, key) {\n if (PDFJSDev.test(\"!PRODUCTION || TESTING\")) {\n this._module.ccall(\n \"evalInSandbox\",\n null,\n [\"string\", \"int\"],\n [\n `try {\n sendResultForTesting([{ id: \"${key}\", result: ${code} }]);\n } catch (error) {\n sendResultForTesting([{ id: \"${key}\", result: error.message }]);\n }`,\n this._alertOnError,\n ]\n );\n } else {\n throw new Error(\"Not implemented: evalForTesting\");\n }\n }\n}\n\nfunction QuickJSSandbox() {\n return ModuleLoader().then(module => {\n return new Sandbox(window, module);\n });\n}\n\nexport { QuickJSSandbox };\n"],"names":["Module","_scriptDir","document","currentScript","src","undefined","b","h","Object","assign","n","q","ready","Promise","a","c","r","t","indexOf","substr","replace","lastIndexOf","aa","print","console","log","bind","u","printErr","warn","v","wasmBinary","noExitRuntime","WebAssembly","x","y","z","A","d","e","f","string","l","p","T","length","B","C","D","array","E","set","g","k","m","w","F","apply","G","H","I","TextDecoder","J","subarray","decode","String","fromCharCode","charCodeAt","K","L","M","ba","N","ca","buffer","HEAP8","Int8Array","HEAP16","Int16Array","HEAP32","Int32Array","HEAPU8","Uint8Array","HEAPU16","Uint16Array","HEAPU32","Uint32Array","HEAPF32","Float32Array","HEAPF64","Float64Array","O","da","ea","fa","ha","preRun","shift","unshift","P","Q","R","preloadedImages","preloadedAudios","onAbort","RuntimeError","S","startsWith","U","ia","locateFile","ja","ka","slice","Error","la","fetch","resolve","then","credentials","ok","arrayBuffer","catch","V","get","W","ma","na","oa","toTimeString","match","Date","getFullYear","getTimezoneOffset","Math","max","pa","qa","Number","X","ra","JSON","parse","externalCall","message","atob","charAt","sa","window","alert","min","grow","byteLength","push","now","getSeconds","getMinutes","getHours","getDate","getMonth","getDay","getTime","i","j","error","asm","exports","monitorRunDependencies","clearInterval","instance","instantiate","instantiateWasm","instantiateStreaming","___wasm_call_ctors","arguments","_evalInSandbox","_nukeSandbox","_init","o","_commFun","_dumpMemoryUse","_malloc","_free","s","__get_tzname","__get_daylight","__get_timezone","stackSave","stackRestore","stackAlloc","ccall","cwrap","every","stringToNewUTF8","Y","ta","Z","calledRun","onRuntimeInitialized","postRun","setStatus","setTimeout","run","preInit","pop","SandboxSupportBase","constructor","win","timeoutIds","Map","commFun","destroy","commFunc","forEach","_","id","clearTimeout","exportValueToSandbox","val","importValueFromSandbox","createErrorForSandbox","errorMessage","callSandboxFunction","name","args","createSandboxExternals","externals","callbackId","nMilliseconds","delete","interval","setInterval","cMsg","confirm","prompt","cQuestion","cDefault","parseURL","cUrl","url","URL","props","fromEntries","map","toString","send","data","event","CustomEvent","detail","dispatchEvent","setPrototypeOf","result","pdfjsVersion","pdfjsBuild","SandboxSupport","stringify","Sandbox","module","support","_module","_alertOnError","create","code","success","buf","sandboxData","join","nukeSandbox","dumpMemoryUse","evalForTesting","key","QuickJSSandbox","ModuleLoader"],"sourceRoot":""} \ No newline at end of file
diff --git a/js/pdfjs/build/pdf.worker.js b/js/pdfjs/build/pdf.worker.js
index b584957..5c31a84 100644
--- a/js/pdfjs/build/pdf.worker.js
+++ b/js/pdfjs/build/pdf.worker.js
@@ -2,7 +2,7 @@
* @licstart The following is the entire license notice for the
* Javascript code in this page
*
- * Copyright 2021 Mozilla Foundation
+ * Copyright 2022 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -48,17 +48,19 @@ var _util = __w_pdfjs_require__(2);
var _primitives = __w_pdfjs_require__(5);
-var _pdf_manager = __w_pdfjs_require__(7);
+var _pdf_manager = __w_pdfjs_require__(6);
-var _writer = __w_pdfjs_require__(71);
+var _cleanup_helper = __w_pdfjs_require__(66);
+
+var _writer = __w_pdfjs_require__(72);
var _is_node = __w_pdfjs_require__(4);
-var _message_handler = __w_pdfjs_require__(99);
+var _message_handler = __w_pdfjs_require__(100);
-var _worker_stream = __w_pdfjs_require__(100);
+var _worker_stream = __w_pdfjs_require__(101);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
class WorkerTask {
constructor(name) {
@@ -115,7 +117,7 @@ class WorkerMessageHandler {
const WorkerTasks = [];
const verbosity = (0, _util.getVerbosityLevel)();
const apiVersion = docParams.apiVersion;
- const workerVersion = '2.12.313';
+ const workerVersion = '2.13.216';
if (apiVersion !== workerVersion) {
throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`);
@@ -132,7 +134,13 @@ class WorkerMessageHandler {
}
if (typeof ReadableStream === "undefined") {
- throw new Error("The browser/environment lacks native support for critical " + "functionality used by the PDF.js library (e.g. `ReadableStream`); " + "please use a `legacy`-build instead.");
+ const partialMsg = "The browser/environment lacks native support for critical " + "functionality used by the PDF.js library (e.g. `ReadableStream`); ";
+
+ if (_is_node.isNodeJS) {
+ throw new Error(partialMsg + "please use a `legacy`-build instead.");
+ }
+
+ throw new Error(partialMsg + "please update to a supported browser.");
}
const docId = docParams.docId;
@@ -389,10 +397,8 @@ class WorkerMessageHandler {
});
});
});
- handler.on("GetPageIndex", function wphSetupGetPageIndex({
- ref
- }) {
- const pageRef = _primitives.Ref.get(ref.num, ref.gen);
+ handler.on("GetPageIndex", function wphSetupGetPageIndex(data) {
+ const pageRef = _primitives.Ref.get(data.num, data.gen);
return pdfManager.ensureCatalog("getPageIndex", [pageRef]);
});
@@ -542,7 +548,7 @@ class WorkerMessageHandler {
if (xrefInfo instanceof _primitives.Dict) {
xrefInfo.forEach((key, value) => {
- if ((0, _util.isString)(key) && (0, _util.isString)(value)) {
+ if (typeof value === "string") {
infoObj[key] = (0, _util.stringToPDFString)(value);
}
});
@@ -620,7 +626,6 @@ class WorkerMessageHandler {
handler,
task,
sink,
- normalizeWhitespace: data.normalizeWhitespace,
includeMarkedContent: data.includeMarkedContent,
combineTextItems: data.combineTextItems
}).then(function () {
@@ -663,7 +668,7 @@ class WorkerMessageHandler {
waitOn.push(cleanupPromise);
pdfManager = null;
} else {
- (0, _primitives.clearPrimitiveCaches)();
+ (0, _cleanup_helper.clearGlobalCaches)();
}
if (cancelXHRs) {
@@ -719,7 +724,6 @@ exports.arrayByteLength = arrayByteLength;
exports.arraysToBytes = arraysToBytes;
exports.assert = assert;
exports.bytesToString = bytesToString;
-exports.createObjectURL = createObjectURL;
exports.createPromiseCapability = createPromiseCapability;
exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
exports.escapeString = escapeString;
@@ -729,13 +733,9 @@ exports.info = info;
exports.isArrayBuffer = isArrayBuffer;
exports.isArrayEqual = isArrayEqual;
exports.isAscii = isAscii;
-exports.isBool = isBool;
-exports.isNum = isNum;
exports.isSameOrigin = isSameOrigin;
-exports.isString = isString;
exports.objectFromMap = objectFromMap;
exports.objectSize = objectSize;
-exports.removeNullCharacters = removeNullCharacters;
exports.setVerbosityLevel = setVerbosityLevel;
exports.shadow = shadow;
exports.string32 = string32;
@@ -1282,24 +1282,12 @@ class AbortException extends BaseException {
}
exports.AbortException = AbortException;
-const NullCharactersRegExp = /\x00+/g;
-const InvisibleCharactersRegExp = /[\x01-\x1F]/g;
-
-function removeNullCharacters(str, replaceInvisible = false) {
- if (typeof str !== "string") {
- warn("The argument for removeNullCharacters must be a string.");
- return str;
- }
- if (replaceInvisible) {
- str = str.replace(InvisibleCharactersRegExp, " ");
+function bytesToString(bytes) {
+ if (typeof bytes !== "object" || bytes === null || bytes.length === undefined) {
+ unreachable("Invalid argument for bytesToString");
}
- return str.replace(NullCharactersRegExp, "");
-}
-
-function bytesToString(bytes) {
- assert(bytes !== null && typeof bytes === "object" && bytes.length !== undefined, "Invalid argument for bytesToString");
const length = bytes.length;
const MAX_ARGUMENT_COUNT = 8192;
@@ -1319,7 +1307,10 @@ function bytesToString(bytes) {
}
function stringToBytes(str) {
- assert(typeof str === "string", "Invalid argument for stringToBytes");
+ if (typeof str !== "string") {
+ unreachable("Invalid argument for stringToBytes");
+ }
+
const length = str.length;
const bytes = new Uint8Array(length);
@@ -1335,8 +1326,11 @@ function arrayByteLength(arr) {
return arr.length;
}
- assert(arr.byteLength !== undefined, "arrayByteLength - invalid argument.");
- return arr.byteLength;
+ if (arr.byteLength !== undefined) {
+ return arr.byteLength;
+ }
+
+ unreachable("Invalid argument for arrayByteLength");
}
function arraysToBytes(arr) {
@@ -1596,24 +1590,37 @@ exports.Util = Util;
const PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];
function stringToPDFString(str) {
- const length = str.length,
- strBuf = [];
+ if (str[0] >= "\xEF") {
+ let encoding;
- if (str[0] === "\xFE" && str[1] === "\xFF") {
- for (let i = 2; i < length; i += 2) {
- strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));
- }
- } else if (str[0] === "\xFF" && str[1] === "\xFE") {
- for (let i = 2; i < length; i += 2) {
- strBuf.push(String.fromCharCode(str.charCodeAt(i + 1) << 8 | str.charCodeAt(i)));
+ if (str[0] === "\xFE" && str[1] === "\xFF") {
+ encoding = "utf-16be";
+ } else if (str[0] === "\xFF" && str[1] === "\xFE") {
+ encoding = "utf-16le";
+ } else if (str[0] === "\xEF" && str[1] === "\xBB" && str[2] === "\xBF") {
+ encoding = "utf-8";
}
- } else {
- for (let i = 0; i < length; ++i) {
- const code = PDFStringTranslateTable[str.charCodeAt(i)];
- strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
+
+ if (encoding) {
+ try {
+ const decoder = new TextDecoder(encoding, {
+ fatal: true
+ });
+ const buffer = stringToBytes(str);
+ return decoder.decode(buffer);
+ } catch (ex) {
+ warn(`stringToPDFString: "${ex}".`);
+ }
}
}
+ const strBuf = [];
+
+ for (let i = 0, ii = str.length; i < ii; i++) {
+ const code = PDFStringTranslateTable[str.charCodeAt(i)];
+ strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
+ }
+
return strBuf.join("");
}
@@ -1652,18 +1659,6 @@ function utf8StringToString(str) {
return unescape(encodeURIComponent(str));
}
-function isBool(v) {
- return typeof v === "boolean";
-}
-
-function isNum(v) {
- return typeof v === "number";
-}
-
-function isString(v) {
- return typeof v === "string";
-}
-
function isArrayBuffer(v) {
return typeof v === "object" && v !== null && v.byteLength !== undefined;
}
@@ -1710,30 +1705,6 @@ function createPromiseCapability() {
return capability;
}
-function createObjectURL(data, contentType = "", forceDataSchema = false) {
- if (URL.createObjectURL && typeof Blob !== "undefined" && !forceDataSchema) {
- return URL.createObjectURL(new Blob([data], {
- type: contentType
- }));
- }
-
- const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
- let buffer = `data:${contentType};base64,`;
-
- for (let i = 0, ii = data.length; i < ii; i += 3) {
- const b1 = data[i] & 0xff;
- const b2 = data[i + 1] & 0xff;
- const b3 = data[i + 2] & 0xff;
- const d1 = b1 >> 2,
- d2 = (b1 & 3) << 4 | b2 >> 4;
- const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;
- const d4 = i + 2 < ii ? b3 & 0x3f : 64;
- buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
- }
-
- return buffer;
-}
-
/***/ }),
/* 3 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {
@@ -1771,14 +1742,10 @@ exports.clearPrimitiveCaches = clearPrimitiveCaches;
exports.isCmd = isCmd;
exports.isDict = isDict;
exports.isName = isName;
-exports.isRef = isRef;
exports.isRefsEqual = isRefsEqual;
-exports.isStream = isStream;
var _util = __w_pdfjs_require__(2);
-var _base_stream = __w_pdfjs_require__(6);
-
const CIRCULAR_REF = Symbol("CIRCULAR_REF");
exports.CIRCULAR_REF = CIRCULAR_REF;
const EOF = Symbol("EOF");
@@ -2125,18 +2092,10 @@ function isDict(v, type) {
return v instanceof Dict && (type === undefined || isName(v.get("Type"), type));
}
-function isRef(v) {
- return v instanceof Ref;
-}
-
function isRefsEqual(v1, v2) {
return v1.num === v2.num && v1.gen === v2.gen;
}
-function isStream(v) {
- return v instanceof _base_stream.BaseStream;
-}
-
function clearPrimitiveCaches() {
Cmd._clearCache();
@@ -2154,120 +2113,13 @@ function clearPrimitiveCaches() {
Object.defineProperty(exports, "__esModule", ({
value: true
}));
-exports.BaseStream = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-class BaseStream {
- constructor() {
- if (this.constructor === BaseStream) {
- (0, _util.unreachable)("Cannot initialize BaseStream.");
- }
- }
-
- get length() {
- (0, _util.unreachable)("Abstract getter `length` accessed");
- }
-
- get isEmpty() {
- (0, _util.unreachable)("Abstract getter `isEmpty` accessed");
- }
-
- get isDataLoaded() {
- return (0, _util.shadow)(this, "isDataLoaded", true);
- }
-
- getByte() {
- (0, _util.unreachable)("Abstract method `getByte` called");
- }
-
- getBytes(length, forceClamped = false) {
- (0, _util.unreachable)("Abstract method `getBytes` called");
- }
-
- peekByte() {
- const peekedByte = this.getByte();
-
- if (peekedByte !== -1) {
- this.pos--;
- }
-
- return peekedByte;
- }
-
- peekBytes(length, forceClamped = false) {
- const bytes = this.getBytes(length, forceClamped);
- this.pos -= bytes.length;
- return bytes;
- }
-
- getUint16() {
- const b0 = this.getByte();
- const b1 = this.getByte();
-
- if (b0 === -1 || b1 === -1) {
- return -1;
- }
-
- return (b0 << 8) + b1;
- }
-
- getInt32() {
- const b0 = this.getByte();
- const b1 = this.getByte();
- const b2 = this.getByte();
- const b3 = this.getByte();
- return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
- }
-
- getByteRange(begin, end) {
- (0, _util.unreachable)("Abstract method `getByteRange` called");
- }
-
- getString(length) {
- return (0, _util.bytesToString)(this.getBytes(length, false));
- }
-
- skip(n) {
- this.pos += n || 1;
- }
-
- reset() {
- (0, _util.unreachable)("Abstract method `reset` called");
- }
-
- moveStart() {
- (0, _util.unreachable)("Abstract method `moveStart` called");
- }
-
- makeSubStream(start, length, dict = null) {
- (0, _util.unreachable)("Abstract method `makeSubStream` called");
- }
-
- getBaseStreams() {
- return null;
- }
-
-}
-
-exports.BaseStream = BaseStream;
-
-/***/ }),
-/* 7 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
- value: true
-}));
exports.NetworkPdfManager = exports.LocalPdfManager = void 0;
var _util = __w_pdfjs_require__(2);
-var _chunked_stream = __w_pdfjs_require__(8);
+var _chunked_stream = __w_pdfjs_require__(7);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _document = __w_pdfjs_require__(11);
@@ -2476,7 +2328,7 @@ class NetworkPdfManager extends BasePdfManager {
exports.NetworkPdfManager = NetworkPdfManager;
/***/ }),
-/* 8 */
+/* 7 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -2488,7 +2340,7 @@ exports.ChunkedStreamManager = exports.ChunkedStream = void 0;
var _util = __w_pdfjs_require__(2);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _stream = __w_pdfjs_require__(10);
@@ -3052,7 +2904,7 @@ class ChunkedStreamManager {
exports.ChunkedStreamManager = ChunkedStreamManager;
/***/ }),
-/* 9 */
+/* 8 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -3081,6 +2933,8 @@ var _util = __w_pdfjs_require__(2);
var _primitives = __w_pdfjs_require__(5);
+var _base_stream = __w_pdfjs_require__(9);
+
function getLookupTableFactory(initializer) {
let lookup;
return function () {
@@ -3335,7 +3189,7 @@ function _collectJS(entry, xref, list, parents) {
let parent = null;
- if ((0, _primitives.isRef)(entry)) {
+ if (entry instanceof _primitives.Ref) {
if (parents.has(entry)) {
return;
}
@@ -3350,17 +3204,17 @@ function _collectJS(entry, xref, list, parents) {
_collectJS(element, xref, list, parents);
}
} else if (entry instanceof _primitives.Dict) {
- if ((0, _primitives.isName)(entry.get("S"), "JavaScript") && entry.has("JS")) {
+ if ((0, _primitives.isName)(entry.get("S"), "JavaScript")) {
const js = entry.get("JS");
let code;
- if ((0, _primitives.isStream)(js)) {
+ if (js instanceof _base_stream.BaseStream) {
code = js.getString();
- } else {
+ } else if (typeof js === "string") {
code = js;
}
- code = (0, _util.stringToPDFString)(code);
+ code = code && (0, _util.stringToPDFString)(code);
if (code) {
list.push(code);
@@ -3537,6 +3391,113 @@ function recoverJsURL(str) {
}
/***/ }),
+/* 9 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.BaseStream = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+class BaseStream {
+ constructor() {
+ if (this.constructor === BaseStream) {
+ (0, _util.unreachable)("Cannot initialize BaseStream.");
+ }
+ }
+
+ get length() {
+ (0, _util.unreachable)("Abstract getter `length` accessed");
+ }
+
+ get isEmpty() {
+ (0, _util.unreachable)("Abstract getter `isEmpty` accessed");
+ }
+
+ get isDataLoaded() {
+ return (0, _util.shadow)(this, "isDataLoaded", true);
+ }
+
+ getByte() {
+ (0, _util.unreachable)("Abstract method `getByte` called");
+ }
+
+ getBytes(length, forceClamped = false) {
+ (0, _util.unreachable)("Abstract method `getBytes` called");
+ }
+
+ peekByte() {
+ const peekedByte = this.getByte();
+
+ if (peekedByte !== -1) {
+ this.pos--;
+ }
+
+ return peekedByte;
+ }
+
+ peekBytes(length, forceClamped = false) {
+ const bytes = this.getBytes(length, forceClamped);
+ this.pos -= bytes.length;
+ return bytes;
+ }
+
+ getUint16() {
+ const b0 = this.getByte();
+ const b1 = this.getByte();
+
+ if (b0 === -1 || b1 === -1) {
+ return -1;
+ }
+
+ return (b0 << 8) + b1;
+ }
+
+ getInt32() {
+ const b0 = this.getByte();
+ const b1 = this.getByte();
+ const b2 = this.getByte();
+ const b3 = this.getByte();
+ return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
+ }
+
+ getByteRange(begin, end) {
+ (0, _util.unreachable)("Abstract method `getByteRange` called");
+ }
+
+ getString(length) {
+ return (0, _util.bytesToString)(this.getBytes(length, false));
+ }
+
+ skip(n) {
+ this.pos += n || 1;
+ }
+
+ reset() {
+ (0, _util.unreachable)("Abstract method `reset` called");
+ }
+
+ moveStart() {
+ (0, _util.unreachable)("Abstract method `moveStart` called");
+ }
+
+ makeSubStream(start, length, dict = null) {
+ (0, _util.unreachable)("Abstract method `makeSubStream` called");
+ }
+
+ getBaseStreams() {
+ return null;
+ }
+
+}
+
+exports.BaseStream = BaseStream;
+
+/***/ }),
/* 10 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -3547,7 +3508,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.StringStream = exports.Stream = exports.NullStream = void 0;
-var _base_stream = __w_pdfjs_require__(6);
+var _base_stream = __w_pdfjs_require__(9);
var _util = __w_pdfjs_require__(2);
@@ -3657,9 +3618,9 @@ exports.Page = exports.PDFDocument = void 0;
var _util = __w_pdfjs_require__(2);
-var _primitives = __w_pdfjs_require__(5);
+var _core_utils = __w_pdfjs_require__(8);
-var _core_utils = __w_pdfjs_require__(9);
+var _primitives = __w_pdfjs_require__(5);
var _xfa_fonts = __w_pdfjs_require__(12);
@@ -3667,15 +3628,17 @@ var _stream = __w_pdfjs_require__(10);
var _annotation = __w_pdfjs_require__(22);
-var _base_stream = __w_pdfjs_require__(6);
+var _base_stream = __w_pdfjs_require__(9);
-var _crypto = __w_pdfjs_require__(72);
+var _crypto = __w_pdfjs_require__(73);
var _catalog = __w_pdfjs_require__(64);
+var _cleanup_helper = __w_pdfjs_require__(66);
+
var _parser = __w_pdfjs_require__(27);
-var _object_loader = __w_pdfjs_require__(70);
+var _object_loader = __w_pdfjs_require__(71);
var _operator_list = __w_pdfjs_require__(62);
@@ -3683,11 +3646,11 @@ var _evaluator = __w_pdfjs_require__(25);
var _decode_stream = __w_pdfjs_require__(29);
-var _struct_tree = __w_pdfjs_require__(69);
+var _struct_tree = __w_pdfjs_require__(70);
-var _factory = __w_pdfjs_require__(74);
+var _factory = __w_pdfjs_require__(75);
-var _xref = __w_pdfjs_require__(98);
+var _xref = __w_pdfjs_require__(99);
const DEFAULT_USER_UNIT = 1.0;
const LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];
@@ -3747,7 +3710,7 @@ class Page {
return value;
}
- if (value.length === 1 || !(0, _primitives.isDict)(value[0])) {
+ if (value.length === 1 || !(value[0] instanceof _primitives.Dict)) {
return value[0];
}
@@ -3794,7 +3757,7 @@ class Page {
get userUnit() {
let obj = this.pageDict.get("UserUnit");
- if (!(0, _util.isNum)(obj) || obj <= 0) {
+ if (typeof obj !== "number" || obj <= 0) {
obj = DEFAULT_USER_UNIT;
}
@@ -3990,7 +3953,6 @@ class Page {
extractTextContent({
handler,
task,
- normalizeWhitespace,
includeMarkedContent,
sink,
combineTextItems
@@ -4014,10 +3976,10 @@ class Page {
stream: contentStream,
task,
resources: this.resources,
- normalizeWhitespace,
includeMarkedContent,
combineTextItems,
- sink
+ sink,
+ viewBox: this.view
});
});
}
@@ -4153,7 +4115,7 @@ class PDFDocument {
constructor(pdfManager, arg) {
let stream;
- if ((0, _primitives.isStream)(arg)) {
+ if (arg instanceof _base_stream.BaseStream) {
stream = arg;
} else if ((0, _util.isArrayBuffer)(arg)) {
stream = new _stream.Stream(arg);
@@ -4366,7 +4328,7 @@ class PDFDocument {
"/xdp:xdp": ""
};
- if ((0, _primitives.isStream)(xfa) && !xfa.isEmpty) {
+ if (xfa instanceof _base_stream.BaseStream && !xfa.isEmpty) {
try {
entries["xdp:xdp"] = (0, _util.stringToUTF8String)(xfa.getString());
return entries;
@@ -4397,7 +4359,7 @@ class PDFDocument {
const data = this.xref.fetchIfRef(xfa[i + 1]);
- if (!(0, _primitives.isStream)(data) || data.isEmpty) {
+ if (!(data instanceof _base_stream.BaseStream) || data.isEmpty) {
continue;
}
@@ -4445,11 +4407,9 @@ class PDFDocument {
for (const key of keys) {
const stream = xfaImagesDict.get(key);
- if (!(0, _primitives.isStream)(stream)) {
- continue;
+ if (stream instanceof _base_stream.BaseStream) {
+ xfaImages.set(key, stream.getBytes());
}
-
- xfaImages.set(key, stream.getBytes());
}
this.xfaFactory.setImages(xfaImages);
@@ -4620,7 +4580,7 @@ class PDFDocument {
const hasFields = Array.isArray(fields) && fields.length > 0;
formInfo.hasFields = hasFields;
const xfa = acroForm.get("XFA");
- formInfo.hasXfa = Array.isArray(xfa) && xfa.length > 0 || (0, _primitives.isStream)(xfa) && !xfa.isEmpty;
+ formInfo.hasXfa = Array.isArray(xfa) && xfa.length > 0 || xfa instanceof _base_stream.BaseStream && !xfa.isEmpty;
const sigFlags = acroForm.get("SigFlags");
const hasSignatures = !!(sigFlags & 0x1);
@@ -4640,17 +4600,6 @@ class PDFDocument {
}
get documentInfo() {
- const DocumentInfoValidators = {
- Title: _util.isString,
- Author: _util.isString,
- Subject: _util.isString,
- Keywords: _util.isString,
- Creator: _util.isString,
- Producer: _util.isString,
- CreationDate: _util.isString,
- ModDate: _util.isString,
- Trapped: _primitives.isName
- };
let version = this._version;
if (typeof version !== "string" || !PDF_HEADER_VERSION_REGEXP.test(version)) {
@@ -4680,25 +4629,60 @@ class PDFDocument {
(0, _util.info)("The document information dictionary is invalid.");
}
- if ((0, _primitives.isDict)(infoDict)) {
- for (const key of infoDict.getKeys()) {
- const value = infoDict.get(key);
+ if (!(infoDict instanceof _primitives.Dict)) {
+ return (0, _util.shadow)(this, "documentInfo", docInfo);
+ }
- if (DocumentInfoValidators[key]) {
- if (DocumentInfoValidators[key](value)) {
- docInfo[key] = typeof value !== "string" ? value : (0, _util.stringToPDFString)(value);
- } else {
- (0, _util.info)(`Bad value in document info for "${key}".`);
+ for (const key of infoDict.getKeys()) {
+ const value = infoDict.get(key);
+
+ switch (key) {
+ case "Title":
+ case "Author":
+ case "Subject":
+ case "Keywords":
+ case "Creator":
+ case "Producer":
+ case "CreationDate":
+ case "ModDate":
+ if (typeof value === "string") {
+ docInfo[key] = (0, _util.stringToPDFString)(value);
+ continue;
}
- } else if (typeof key === "string") {
+
+ break;
+
+ case "Trapped":
+ if (value instanceof _primitives.Name) {
+ docInfo[key] = value;
+ continue;
+ }
+
+ break;
+
+ default:
let customValue;
- if ((0, _util.isString)(value)) {
- customValue = (0, _util.stringToPDFString)(value);
- } else if ((0, _primitives.isName)(value) || (0, _util.isNum)(value) || (0, _util.isBool)(value)) {
- customValue = value;
- } else {
- (0, _util.info)(`Unsupported value in document info for (custom) "${key}".`);
+ switch (typeof value) {
+ case "string":
+ customValue = (0, _util.stringToPDFString)(value);
+ break;
+
+ case "number":
+ case "boolean":
+ customValue = value;
+ break;
+
+ default:
+ if (value instanceof _primitives.Name) {
+ customValue = value;
+ }
+
+ break;
+ }
+
+ if (customValue === undefined) {
+ (0, _util.warn)(`Bad value, for custom key "${key}", in Info: ${value}.`);
continue;
}
@@ -4707,8 +4691,10 @@ class PDFDocument {
}
docInfo.Custom[key] = customValue;
- }
+ continue;
}
+
+ (0, _util.warn)(`Bad value, for key "${key}", in Info: ${value}.`);
}
return (0, _util.shadow)(this, "documentInfo", docInfo);
@@ -4749,25 +4735,38 @@ class PDFDocument {
async _getLinearizationPage(pageIndex) {
const {
catalog,
- linearization
+ linearization,
+ xref
} = this;
const ref = _primitives.Ref.get(linearization.objectNumberFirst, 0);
try {
- const obj = await this.xref.fetchAsync(ref);
+ const obj = await xref.fetchAsync(ref);
+
+ if (obj instanceof _primitives.Dict) {
+ let type = obj.getRaw("Type");
- if ((0, _primitives.isDict)(obj, "Page") || (0, _primitives.isDict)(obj) && !obj.has("Type") && obj.has("Contents")) {
- if (ref && !catalog.pageKidsCountCache.has(ref)) {
- catalog.pageKidsCountCache.put(ref, 1);
+ if (type instanceof _primitives.Ref) {
+ type = await xref.fetchAsync(type);
}
- return [obj, ref];
+ if ((0, _primitives.isName)(type, "Page") || !obj.has("Type") && !obj.has("Kids")) {
+ if (!catalog.pageKidsCountCache.has(ref)) {
+ catalog.pageKidsCountCache.put(ref, 1);
+ }
+
+ if (!catalog.pageIndexCache.has(ref)) {
+ catalog.pageIndexCache.put(ref, 0);
+ }
+
+ return [obj, ref];
+ }
}
throw new _util.FormatError("The Linearization dictionary doesn't point to a valid Page dictionary.");
} catch (reason) {
- (0, _util.info)(reason);
+ (0, _util.warn)(`_getLinearizationPage: "${reason.message}".`);
return catalog.getPageDict(pageIndex);
}
}
@@ -4872,7 +4871,7 @@ class PDFDocument {
let pagesTree;
try {
- pagesTree = await pdfManager.ensureCatalog("getAllPageDicts", [recoveryMode]);
+ pagesTree = await catalog.getAllPageDicts(recoveryMode);
} catch (reasonAll) {
if (reasonAll instanceof _core_utils.XRefEntryException && !recoveryMode) {
throw new _core_utils.XRefParseException();
@@ -4917,7 +4916,7 @@ class PDFDocument {
}
async cleanup(manuallyTriggered = false) {
- return this.catalog ? this.catalog.cleanup(manuallyTriggered) : (0, _primitives.clearPrimitiveCaches)();
+ return this.catalog ? this.catalog.cleanup(manuallyTriggered) : (0, _cleanup_helper.clearGlobalCaches)();
}
_collectFieldObjects(name, fieldRef, promises) {
@@ -5010,7 +5009,13 @@ class PDFDocument {
return (0, _util.shadow)(this, "calculationOrderIds", null);
}
- const ids = calculationOrder.filter(_primitives.isRef).map(ref => ref.toString());
+ const ids = [];
+
+ for (const id of calculationOrder) {
+ if (id instanceof _primitives.Ref) {
+ ids.push(id.toString());
+ }
+ }
if (ids.length === 0) {
return (0, _util.shadow)(this, "calculationOrderIds", null);
@@ -5047,7 +5052,7 @@ var _myriadpro_factors = __w_pdfjs_require__(16);
var _segoeui_factors = __w_pdfjs_require__(17);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _fonts_utils = __w_pdfjs_require__(18);
@@ -5673,7 +5678,7 @@ __w_pdfjs_require__.r(__webpack_exports__);
/* harmony export */ "getDingbatsGlyphsUnicode": () => (/* binding */ getDingbatsGlyphsUnicode),
/* harmony export */ "getGlyphsUnicode": () => (/* binding */ getGlyphsUnicode)
/* harmony export */ });
-/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(9);
+/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(8);
const getGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () {
return [
@@ -14741,13 +14746,15 @@ const getDingbatsGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.
__w_pdfjs_require__.r(__webpack_exports__);
/* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, {
+/* harmony export */ "clearUnicodeCaches": () => (/* binding */ clearUnicodeCaches),
+/* harmony export */ "getCharUnicodeCategory": () => (/* binding */ getCharUnicodeCategory),
/* harmony export */ "getNormalizedUnicodes": () => (/* binding */ getNormalizedUnicodes),
/* harmony export */ "getUnicodeForGlyph": () => (/* binding */ getUnicodeForGlyph),
/* harmony export */ "getUnicodeRangeFor": () => (/* binding */ getUnicodeRangeFor),
/* harmony export */ "mapSpecialUnicodeValues": () => (/* binding */ mapSpecialUnicodeValues),
/* harmony export */ "reverseIfRtl": () => (/* binding */ reverseIfRtl)
/* harmony export */ });
-/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(9);
+/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(8);
const getSpecialPUASymbols = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getLookupTableFactory)(function (t) {
t[63721] = 0x00a9;
@@ -18095,6 +18102,25 @@ function reverseIfRtl(chars) {
}
return buf.join("");
}
+const SpecialCharRegExp = new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$", "u");
+const CategoryCache = new Map();
+function getCharUnicodeCategory(char) {
+ const cachedCategory = CategoryCache.get(char);
+ if (cachedCategory) {
+ return cachedCategory;
+ }
+ const groups = char.match(SpecialCharRegExp);
+ const category = {
+ isWhitespace: !!(groups && groups[1]),
+ isZeroWidthDiacritic: !!(groups && groups[2]),
+ isInvisibleFormatMark: !!(groups && groups[3])
+ };
+ CategoryCache.set(char, category);
+ return category;
+}
+function clearUnicodeCaches() {
+ CategoryCache.clear();
+}
/***/ }),
@@ -18111,29 +18137,31 @@ exports.getQuadPoints = getQuadPoints;
var _util = __w_pdfjs_require__(2);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _default_appearance = __w_pdfjs_require__(23);
var _primitives = __w_pdfjs_require__(5);
-var _bidi = __w_pdfjs_require__(59);
+var _base_stream = __w_pdfjs_require__(9);
+
+var _bidi = __w_pdfjs_require__(60);
var _catalog = __w_pdfjs_require__(64);
var _colorspace = __w_pdfjs_require__(24);
-var _file_spec = __w_pdfjs_require__(66);
+var _file_spec = __w_pdfjs_require__(67);
-var _object_loader = __w_pdfjs_require__(70);
+var _object_loader = __w_pdfjs_require__(71);
var _operator_list = __w_pdfjs_require__(62);
var _stream = __w_pdfjs_require__(10);
-var _writer = __w_pdfjs_require__(71);
+var _writer = __w_pdfjs_require__(72);
-var _factory = __w_pdfjs_require__(74);
+var _factory = __w_pdfjs_require__(75);
class AnnotationFactory {
static create(xref, ref, pdfManager, idFactory, collectFields) {
@@ -18143,13 +18171,13 @@ class AnnotationFactory {
static _create(xref, ref, pdfManager, idFactory, acroForm, collectFields, pageIndex = -1) {
const dict = xref.fetchIfRef(ref);
- if (!(0, _primitives.isDict)(dict)) {
+ if (!(dict instanceof _primitives.Dict)) {
return undefined;
}
- const id = (0, _primitives.isRef)(ref) ? ref.toString() : `annot_${idFactory.createObjId()}`;
+ const id = ref instanceof _primitives.Ref ? ref.toString() : `annot_${idFactory.createObjId()}`;
let subtype = dict.get("Subtype");
- subtype = (0, _primitives.isName)(subtype) ? subtype.name : null;
+ subtype = subtype instanceof _primitives.Name ? subtype.name : null;
const parameters = {
xref,
ref,
@@ -18174,7 +18202,7 @@ class AnnotationFactory {
dict,
key: "FT"
});
- fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
+ fieldType = fieldType instanceof _primitives.Name ? fieldType.name : null;
switch (fieldType) {
case "Tx":
@@ -18255,13 +18283,13 @@ class AnnotationFactory {
try {
const annotDict = await xref.fetchIfRefAsync(ref);
- if (!(0, _primitives.isDict)(annotDict)) {
+ if (!(annotDict instanceof _primitives.Dict)) {
return -1;
}
const pageRef = annotDict.getRaw("P");
- if (!(0, _primitives.isRef)(pageRef)) {
+ if (!(pageRef instanceof _primitives.Ref)) {
return -1;
}
@@ -18409,7 +18437,7 @@ class Annotation {
const kidIds = [];
for (const kid of kids) {
- if ((0, _primitives.isRef)(kid)) {
+ if (kid instanceof _primitives.Ref) {
kidIds.push(kid.toString());
}
}
@@ -18501,7 +18529,7 @@ class Annotation {
}
setModificationDate(modificationDate) {
- this.modificationDate = (0, _util.isString)(modificationDate) ? modificationDate : null;
+ this.modificationDate = typeof modificationDate === "string" ? modificationDate : null;
}
setFlags(flags) {
@@ -18536,7 +18564,7 @@ class Annotation {
setBorderStyle(borderStyle) {
this.borderStyle = new AnnotationBorderStyle();
- if (!(0, _primitives.isDict)(borderStyle)) {
+ if (!(borderStyle instanceof _primitives.Dict)) {
return;
}
@@ -18570,24 +18598,24 @@ class Annotation {
this.appearance = null;
const appearanceStates = dict.get("AP");
- if (!(0, _primitives.isDict)(appearanceStates)) {
+ if (!(appearanceStates instanceof _primitives.Dict)) {
return;
}
const normalAppearanceState = appearanceStates.get("N");
- if ((0, _primitives.isStream)(normalAppearanceState)) {
+ if (normalAppearanceState instanceof _base_stream.BaseStream) {
this.appearance = normalAppearanceState;
return;
}
- if (!(0, _primitives.isDict)(normalAppearanceState)) {
+ if (!(normalAppearanceState instanceof _primitives.Dict)) {
return;
}
const as = dict.get("AS");
- if (!(0, _primitives.isName)(as) || !normalAppearanceState.has(as.name)) {
+ if (!(as instanceof _primitives.Name) || !normalAppearanceState.has(as.name)) {
return;
}
@@ -18726,12 +18754,12 @@ class AnnotationBorderStyle {
}
setWidth(width, rect = [0, 0, 0, 0]) {
- if ((0, _primitives.isName)(width)) {
+ if (width instanceof _primitives.Name) {
this.width = 0;
return;
}
- if (Number.isInteger(width)) {
+ if (typeof width === "number") {
if (width > 0) {
const maxWidth = (rect[2] - rect[0]) / 2;
const maxHeight = (rect[3] - rect[1]) / 2;
@@ -18747,7 +18775,7 @@ class AnnotationBorderStyle {
}
setStyle(style) {
- if (!(0, _primitives.isName)(style)) {
+ if (!(style instanceof _primitives.Name)) {
return;
}
@@ -18830,9 +18858,9 @@ class MarkupAnnotation extends Annotation {
if (dict.has("IRT")) {
const rawIRT = dict.getRaw("IRT");
- this.data.inReplyTo = (0, _primitives.isRef)(rawIRT) ? rawIRT.toString() : null;
+ this.data.inReplyTo = rawIRT instanceof _primitives.Ref ? rawIRT.toString() : null;
const rt = dict.get("RT");
- this.data.replyType = (0, _primitives.isName)(rt) ? rt.name : _util.AnnotationReplyType.REPLY;
+ this.data.replyType = rt instanceof _primitives.Name ? rt.name : _util.AnnotationReplyType.REPLY;
}
if (this.data.replyType === _util.AnnotationReplyType.GROUP) {
@@ -18881,7 +18909,7 @@ class MarkupAnnotation extends Annotation {
}
setCreationDate(creationDate) {
- this.creationDate = (0, _util.isString)(creationDate) ? creationDate : null;
+ this.creationDate = typeof creationDate === "string" ? creationDate : null;
}
_setDefaultAppearance({
@@ -19016,13 +19044,13 @@ class WidgetAnnotation extends Annotation {
dict,
key: "DA"
}) || params.acroForm.get("DA");
- this._defaultAppearance = (0, _util.isString)(defaultAppearance) ? defaultAppearance : "";
+ this._defaultAppearance = typeof defaultAppearance === "string" ? defaultAppearance : "";
data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance);
const fieldType = (0, _core_utils.getInheritableProperty)({
dict,
key: "FT"
});
- data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
+ data.fieldType = fieldType instanceof _primitives.Name ? fieldType.name : null;
const localResources = (0, _core_utils.getInheritableProperty)({
dict,
key: "DR"
@@ -19054,10 +19082,10 @@ class WidgetAnnotation extends Annotation {
_decodeFormValue(formValue) {
if (Array.isArray(formValue)) {
- return formValue.filter(item => (0, _util.isString)(item)).map(item => (0, _util.stringToPDFString)(item));
- } else if ((0, _primitives.isName)(formValue)) {
+ return formValue.filter(item => typeof item === "string").map(item => (0, _util.stringToPDFString)(item));
+ } else if (formValue instanceof _primitives.Name) {
return (0, _util.stringToPDFString)(formValue.name);
- } else if ((0, _util.isString)(formValue)) {
+ } else if (typeof formValue === "string") {
return (0, _util.stringToPDFString)(formValue);
}
@@ -19128,7 +19156,7 @@ class WidgetAnnotation extends Annotation {
} = evaluator;
const dict = xref.fetchIfRef(this.ref);
- if (!(0, _primitives.isDict)(dict)) {
+ if (!(dict instanceof _primitives.Dict)) {
return null;
}
@@ -19210,9 +19238,10 @@ class WidgetAnnotation extends Annotation {
this.data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance = "/Helvetica 0 Tf 0 g");
}
- const [defaultAppearance, fontSize] = this._computeFontSize(totalHeight, lineCount);
-
const font = await this._getFontData(evaluator, task);
+
+ const [defaultAppearance, fontSize] = this._computeFontSize(totalHeight - defaultPadding, totalWidth - 2 * hPadding, value, font, lineCount);
+
let descent = font.descent;
if (isNaN(descent)) {
@@ -19259,25 +19288,71 @@ class WidgetAnnotation extends Annotation {
return initialState.font;
}
- _computeFontSize(height, lineCount) {
+ _getTextWidth(text, font) {
+ return font.charsToGlyphs(text).reduce((width, glyph) => width + glyph.width, 0) / 1000;
+ }
+
+ _computeFontSize(height, width, text, font, lineCount) {
let {
fontSize
} = this.data.defaultAppearanceData;
if (!fontSize) {
- const roundWithOneDigit = x => Math.round(x * 10) / 10;
+ const roundWithTwoDigits = x => Math.floor(x * 100) / 100;
- const FONT_FACTOR = 0.8;
+ const LINE_FACTOR = 1.35;
if (lineCount === -1) {
- fontSize = roundWithOneDigit(FONT_FACTOR * height);
+ const textWidth = this._getTextWidth(text, font);
+
+ fontSize = roundWithTwoDigits(Math.min(height / LINE_FACTOR, width / textWidth));
} else {
- fontSize = 10;
- let lineHeight = fontSize / FONT_FACTOR;
+ const lines = text.split(/\r\n?|\n/);
+ const cachedLines = [];
+
+ for (const line of lines) {
+ const encoded = font.encodeString(line).join("");
+ const glyphs = font.charsToGlyphs(encoded);
+ const positions = font.getCharPositions(encoded);
+ cachedLines.push({
+ line: encoded,
+ glyphs,
+ positions
+ });
+ }
+
+ const isTooBig = fsize => {
+ let totalHeight = 0;
+
+ for (const cache of cachedLines) {
+ const chunks = this._splitLine(null, font, fsize, width, cache);
+
+ totalHeight += chunks.length * fsize;
+
+ if (totalHeight > height) {
+ return true;
+ }
+ }
+
+ return false;
+ };
+
+ fontSize = 12;
+ let lineHeight = fontSize * LINE_FACTOR;
let numberOfLines = Math.round(height / lineHeight);
numberOfLines = Math.max(numberOfLines, lineCount);
- lineHeight = height / numberOfLines;
- fontSize = roundWithOneDigit(FONT_FACTOR * lineHeight);
+
+ while (true) {
+ lineHeight = height / numberOfLines;
+ fontSize = roundWithTwoDigits(lineHeight / LINE_FACTOR);
+
+ if (isTooBig(fontSize)) {
+ numberOfLines++;
+ continue;
+ }
+
+ break;
+ }
}
const {
@@ -19295,14 +19370,7 @@ class WidgetAnnotation extends Annotation {
}
_renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {
- const glyphs = font.charsToGlyphs(text);
- const scale = fontSize / 1000;
- let width = 0;
-
- for (const glyph of glyphs) {
- width += glyph.width * scale;
- }
-
+ const width = this._getTextWidth(text, font) * fontSize;
let shift;
if (alignment === 1) {
@@ -19371,7 +19439,7 @@ class TextWidgetAnnotation extends WidgetAnnotation {
this._hasText = true;
const dict = params.dict;
- if (!(0, _util.isString)(this.data.fieldValue)) {
+ if (typeof this.data.fieldValue !== "string") {
this.data.fieldValue = "";
}
@@ -19413,7 +19481,7 @@ class TextWidgetAnnotation extends WidgetAnnotation {
}
_getMultilineAppearance(defaultAppearance, text, font, fontSize, width, height, alignment, hPadding, vPadding) {
- const lines = text.split(/\r\n|\r|\n/);
+ const lines = text.split(/\r\n?|\n/);
const buf = [];
const totalWidth = width - 2 * hPadding;
@@ -19430,15 +19498,15 @@ class TextWidgetAnnotation extends WidgetAnnotation {
return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 0 ${height} Tm ${renderedText}` + " ET Q EMC";
}
- _splitLine(line, font, fontSize, width) {
- line = font.encodeString(line).join("");
- const glyphs = font.charsToGlyphs(line);
+ _splitLine(line, font, fontSize, width, cache = {}) {
+ line = cache.line || font.encodeString(line).join("");
+ const glyphs = cache.glyphs || font.charsToGlyphs(line);
if (glyphs.length <= 1) {
return [line];
}
- const positions = font.getCharPositions(line);
+ const positions = cache.positions || font.getCharPositions(line);
const scale = fontSize / 1000;
const chunks = [];
let lastSpacePosInStringStart = -1,
@@ -19606,7 +19674,7 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
const dict = evaluator.xref.fetchIfRef(this.ref);
- if (!(0, _primitives.isDict)(dict)) {
+ if (!(dict instanceof _primitives.Dict)) {
return null;
}
@@ -19657,7 +19725,7 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
const dict = evaluator.xref.fetchIfRef(this.ref);
- if (!(0, _primitives.isDict)(dict)) {
+ if (!(dict instanceof _primitives.Dict)) {
return null;
}
@@ -19672,7 +19740,7 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
const encrypt = evaluator.xref.encrypt;
if (value) {
- if ((0, _primitives.isRef)(this.parent)) {
+ if (this.parent instanceof _primitives.Ref) {
const parent = evaluator.xref.fetch(this.parent);
let parentTransform = null;
@@ -19684,7 +19752,7 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\n`];
(0, _writer.writeDict)(parent, parentBuffer, parentTransform);
parentBuffer.push("\nendobj\n");
- } else if ((0, _primitives.isDict)(this.parent)) {
+ } else if (this.parent instanceof _primitives.Dict) {
this.parent.set("V", name);
}
}
@@ -19765,13 +19833,13 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
_processCheckBox(params) {
const customAppearance = params.dict.get("AP");
- if (!(0, _primitives.isDict)(customAppearance)) {
+ if (!(customAppearance instanceof _primitives.Dict)) {
return;
}
const normalAppearance = customAppearance.get("N");
- if (!(0, _primitives.isDict)(normalAppearance)) {
+ if (!(normalAppearance instanceof _primitives.Dict)) {
return;
}
@@ -19826,24 +19894,24 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
this.data.fieldValue = this.data.buttonValue = null;
const fieldParent = params.dict.get("Parent");
- if ((0, _primitives.isDict)(fieldParent)) {
+ if (fieldParent instanceof _primitives.Dict) {
this.parent = params.dict.getRaw("Parent");
const fieldParentValue = fieldParent.get("V");
- if ((0, _primitives.isName)(fieldParentValue)) {
+ if (fieldParentValue instanceof _primitives.Name) {
this.data.fieldValue = this._decodeFormValue(fieldParentValue);
}
}
const appearanceStates = params.dict.get("AP");
- if (!(0, _primitives.isDict)(appearanceStates)) {
+ if (!(appearanceStates instanceof _primitives.Dict)) {
return;
}
const normalAppearance = appearanceStates.get("N");
- if (!(0, _primitives.isDict)(normalAppearance)) {
+ if (!(normalAppearance instanceof _primitives.Dict)) {
return;
}
@@ -19947,7 +20015,7 @@ class ChoiceWidgetAnnotation extends WidgetAnnotation {
}
}
- if ((0, _util.isString)(this.data.fieldValue)) {
+ if (typeof this.data.fieldValue === "string") {
this.data.fieldValue = [this.data.fieldValue];
} else if (!this.data.fieldValue) {
this.data.fieldValue = [];
@@ -20056,9 +20124,9 @@ class PopupAnnotation extends Annotation {
}
const parentSubtype = parentItem.get("Subtype");
- this.data.parentType = (0, _primitives.isName)(parentSubtype) ? parentSubtype.name : null;
+ this.data.parentType = parentSubtype instanceof _primitives.Name ? parentSubtype.name : null;
const rawParent = parameters.dict.getRaw("Parent");
- this.data.parentId = (0, _primitives.isRef)(rawParent) ? rawParent.toString() : null;
+ this.data.parentId = rawParent instanceof _primitives.Ref ? rawParent.toString() : null;
const parentRect = parentItem.getArray("Rect");
if (Array.isArray(parentRect) && parentRect.length === 4) {
@@ -20573,7 +20641,7 @@ var _util = __w_pdfjs_require__(2);
var _colorspace = __w_pdfjs_require__(24);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _evaluator = __w_pdfjs_require__(25);
@@ -20688,7 +20756,9 @@ var _util = __w_pdfjs_require__(2);
var _primitives = __w_pdfjs_require__(5);
-var _core_utils = __w_pdfjs_require__(9);
+var _base_stream = __w_pdfjs_require__(9);
+
+var _core_utils = __w_pdfjs_require__(8);
function resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {
const COMPONENTS = 3;
@@ -20916,7 +20986,7 @@ class ColorSpace {
static _parse(cs, xref, resources = null, pdfFunctionFactory) {
cs = xref.fetchIfRef(cs);
- if ((0, _primitives.isName)(cs)) {
+ if (cs instanceof _primitives.Name) {
switch (cs.name) {
case "G":
case "DeviceGray":
@@ -20934,14 +21004,14 @@ class ColorSpace {
return new PatternCS(null);
default:
- if ((0, _primitives.isDict)(resources)) {
+ if (resources instanceof _primitives.Dict) {
const colorSpaces = resources.get("ColorSpace");
- if ((0, _primitives.isDict)(colorSpaces)) {
+ if (colorSpaces instanceof _primitives.Dict) {
const resourcesCS = colorSpaces.get(cs.name);
if (resourcesCS) {
- if ((0, _primitives.isName)(resourcesCS)) {
+ if (resourcesCS instanceof _primitives.Name) {
return this._parse(resourcesCS, xref, resources, pdfFunctionFactory);
}
@@ -21168,7 +21238,7 @@ class IndexedCS extends ColorSpace {
const length = base.numComps * highVal;
this.lookup = new Uint8Array(length);
- if ((0, _primitives.isStream)(lookup)) {
+ if (lookup instanceof _base_stream.BaseStream) {
const bytes = lookup.getBytes(length);
this.lookup.set(bytes);
} else if (typeof lookup === "string") {
@@ -21767,23 +21837,23 @@ var _standard_fonts = __w_pdfjs_require__(47);
var _unicode = __w_pdfjs_require__(21);
-var _pattern = __w_pdfjs_require__(55);
+var _pattern = __w_pdfjs_require__(56);
var _xfa_fonts = __w_pdfjs_require__(12);
var _to_unicode_map = __w_pdfjs_require__(48);
-var _function = __w_pdfjs_require__(56);
+var _function = __w_pdfjs_require__(57);
var _parser = __w_pdfjs_require__(27);
-var _image_utils = __w_pdfjs_require__(58);
+var _image_utils = __w_pdfjs_require__(59);
var _stream = __w_pdfjs_require__(10);
-var _base_stream = __w_pdfjs_require__(6);
+var _base_stream = __w_pdfjs_require__(9);
-var _bidi = __w_pdfjs_require__(59);
+var _bidi = __w_pdfjs_require__(60);
var _colorspace = __w_pdfjs_require__(24);
@@ -21791,9 +21861,9 @@ var _decode_stream = __w_pdfjs_require__(29);
var _glyphlist = __w_pdfjs_require__(20);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
-var _metrics = __w_pdfjs_require__(60);
+var _metrics = __w_pdfjs_require__(51);
var _murmurhash = __w_pdfjs_require__(61);
@@ -21832,7 +21902,7 @@ function normalizeBlendMode(value, parsingArray = false) {
return "source-over";
}
- if (!(0, _primitives.isName)(value)) {
+ if (!(value instanceof _primitives.Name)) {
if (parsingArray) {
return null;
}
@@ -22054,7 +22124,7 @@ class PartialEvaluator {
}
}
- if (!(0, _primitives.isStream)(xObject)) {
+ if (!(xObject instanceof _base_stream.BaseStream)) {
continue;
}
@@ -22270,7 +22340,7 @@ class PartialEvaluator {
const w = dict.get("W", "Width");
const h = dict.get("H", "Height");
- if (!(w && (0, _util.isNum)(w)) || !(h && (0, _util.isNum)(h))) {
+ if (!(w && typeof w === "number") || !(h && typeof h === "number")) {
(0, _util.warn)("Image dimensions are missing, or not numbers.");
return;
}
@@ -22650,7 +22720,7 @@ class PartialEvaluator {
break;
}
- if ((0, _primitives.isDict)(value)) {
+ if (value instanceof _primitives.Dict) {
isSimpleGState = false;
promise = promise.then(() => {
return this.handleSMask(value, resources, operatorList, task, stateManager, localColorSpaceCache);
@@ -22714,7 +22784,7 @@ class PartialEvaluator {
let fontRef;
if (font) {
- if (!(0, _primitives.isRef)(font)) {
+ if (!(font instanceof _primitives.Ref)) {
throw new _util.FormatError('The "font" object should be a reference.');
}
@@ -22747,13 +22817,17 @@ class PartialEvaluator {
}
}
+ if (this.parsingType3Font && this.type3FontRefs.has(fontRef)) {
+ return errorFont();
+ }
+
if (this.fontCache.has(fontRef)) {
return this.fontCache.get(fontRef);
}
font = xref.fetchIfRef(fontRef);
- if (!(0, _primitives.isDict)(font)) {
+ if (!(font instanceof _primitives.Dict)) {
return errorFont();
}
@@ -22776,14 +22850,14 @@ class PartialEvaluator {
descriptor,
hash
} = preEvaluatedFont;
- const fontRefIsRef = (0, _primitives.isRef)(fontRef);
+ const fontRefIsRef = fontRef instanceof _primitives.Ref;
let fontID;
if (fontRefIsRef) {
fontID = `f${fontRef.toString()}`;
}
- if (hash && (0, _primitives.isDict)(descriptor)) {
+ if (hash && descriptor instanceof _primitives.Dict) {
if (!descriptor.fontAliases) {
descriptor.fontAliases = Object.create(null);
}
@@ -22952,7 +23026,7 @@ class PartialEvaluator {
const pattern = this.xref.fetchIfRef(rawPattern);
if (pattern) {
- const dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern;
+ const dict = pattern instanceof _base_stream.BaseStream ? pattern.dict : pattern;
const typeNum = dict.get("PatternType");
if (typeNum === PatternType.TILING) {
@@ -22989,7 +23063,7 @@ class PartialEvaluator {
const length = array.length;
const operator = this.xref.fetchIfRef(array[0]);
- if (length < 2 || !(0, _primitives.isName)(operator)) {
+ if (length < 2 || !(operator instanceof _primitives.Name)) {
(0, _util.warn)("Invalid visibility expression");
return;
}
@@ -23015,7 +23089,7 @@ class PartialEvaluator {
currentResult.push(nestedResult);
this._parseVisibilityExpression(object, nestingCounter, nestedResult);
- } else if ((0, _primitives.isRef)(raw)) {
+ } else if (raw instanceof _primitives.Ref) {
currentResult.push(raw.toString());
}
}
@@ -23024,10 +23098,10 @@ class PartialEvaluator {
async parseMarkedContentProps(contentProperties, resources) {
let optionalContent;
- if ((0, _primitives.isName)(contentProperties)) {
+ if (contentProperties instanceof _primitives.Name) {
const properties = resources.get("Properties");
optionalContent = properties.get(contentProperties.name);
- } else if ((0, _primitives.isDict)(contentProperties)) {
+ } else if (contentProperties instanceof _primitives.Dict) {
optionalContent = contentProperties;
} else {
throw new _util.FormatError("Optional content properties malformed.");
@@ -23058,7 +23132,7 @@ class PartialEvaluator {
const optionalContentGroups = optionalContent.get("OCGs");
- if (Array.isArray(optionalContentGroups) || (0, _primitives.isDict)(optionalContentGroups)) {
+ if (Array.isArray(optionalContentGroups) || optionalContentGroups instanceof _primitives.Dict) {
const groupIds = [];
if (Array.isArray(optionalContentGroups)) {
@@ -23072,10 +23146,10 @@ class PartialEvaluator {
return {
type: optionalContentType,
ids: groupIds,
- policy: (0, _primitives.isName)(optionalContent.get("P")) ? optionalContent.get("P").name : null,
+ policy: optionalContent.get("P") instanceof _primitives.Name ? optionalContent.get("P").name : null,
expression: null
};
- } else if ((0, _primitives.isRef)(optionalContentGroups)) {
+ } else if (optionalContentGroups instanceof _primitives.Ref) {
return {
type: optionalContentType,
id: optionalContentGroups.toString()
@@ -23193,13 +23267,13 @@ class PartialEvaluator {
xobj = xref.fetch(xobj);
}
- if (!(0, _primitives.isStream)(xobj)) {
+ if (!(xobj instanceof _base_stream.BaseStream)) {
throw new _util.FormatError("XObject should be a stream");
}
const type = xobj.dict.get("Subtype");
- if (!(0, _primitives.isName)(type)) {
+ if (!(type instanceof _primitives.Name)) {
throw new _util.FormatError("XObject should have a Name subtype");
}
@@ -23307,9 +23381,9 @@ class PartialEvaluator {
for (i = 0; i < arrLength; ++i) {
const arrItem = arr[i];
- if ((0, _util.isString)(arrItem)) {
+ if (typeof arrItem === "string") {
Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state));
- } else if ((0, _util.isNum)(arrItem)) {
+ } else if (typeof arrItem === "number") {
combinedGlyphs.push(arrItem);
}
}
@@ -23559,7 +23633,7 @@ class PartialEvaluator {
continue;
case _util.OPS.beginMarkedContentProps:
- if (!(0, _primitives.isName)(args[0])) {
+ if (!(args[0] instanceof _primitives.Name)) {
(0, _util.warn)(`Expected name for beginMarkedContentProps arg0=${args[0]}`);
continue;
}
@@ -23639,16 +23713,14 @@ class PartialEvaluator {
task,
resources,
stateManager = null,
- normalizeWhitespace = false,
combineTextItems = false,
includeMarkedContent = false,
sink,
- seenStyles = new Set()
+ seenStyles = new Set(),
+ viewBox
}) {
resources = resources || _primitives.Dict.empty;
stateManager = stateManager || new StateManager(new TextState());
- const WhitespaceRegexp = /\s/g;
- const DiacriticRegExp = new RegExp("^\\p{Mn}$", "u");
const NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();
const textContent = {
items: [],
@@ -23767,27 +23839,14 @@ class PartialEvaluator {
textContentItem.textAdvanceScale = scaleFactor;
}
- function replaceWhitespace(str) {
- const ii = str.length;
- let i = 0,
- code;
-
- while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {
- i++;
- }
-
- return i < ii ? str.replace(WhitespaceRegexp, " ") : str;
- }
-
function runBidiTransform(textChunk) {
const text = textChunk.str.join("");
const bidiResult = (0, _bidi.bidi)(text, -1, textChunk.vertical);
- const str = normalizeWhitespace ? replaceWhitespace(bidiResult.str) : bidiResult.str;
return {
- str,
+ str: bidiResult.str,
dir: bidiResult.dir,
- width: textChunk.totalWidth,
- height: textChunk.totalHeight,
+ width: Math.abs(textChunk.totalWidth),
+ height: Math.abs(textChunk.totalHeight),
transform: textChunk.transform,
fontName: textChunk.fontName,
hasEOL: textChunk.hasEOL
@@ -23809,75 +23868,93 @@ class PartialEvaluator {
});
}
- function compareWithLastPosition() {
- if (!combineTextItems || !textState.font || !textContentItem.prevTransform) {
- return;
- }
+ function applyInverseRotation(x, y, matrix) {
+ const scale = Math.hypot(matrix[0], matrix[1]);
+ return [(matrix[0] * x + matrix[1] * y) / scale, (matrix[2] * x + matrix[3] * y) / scale];
+ }
+ function compareWithLastPosition() {
const currentTransform = getCurrentTextTransform();
let posX = currentTransform[4];
let posY = currentTransform[5];
+ const shiftedX = posX - viewBox[0];
+ const shiftedY = posY - viewBox[1];
+
+ if (shiftedX < 0 || shiftedX > viewBox[2] || shiftedY < 0 || shiftedY > viewBox[3]) {
+ return false;
+ }
+
+ if (!combineTextItems || !textState.font || !textContentItem.prevTransform) {
+ return true;
+ }
+
let lastPosX = textContentItem.prevTransform[4];
let lastPosY = textContentItem.prevTransform[5];
if (lastPosX === posX && lastPosY === posY) {
- return;
+ return true;
}
- let rotate = 0;
+ let rotate = -1;
if (currentTransform[0] && currentTransform[1] === 0 && currentTransform[2] === 0) {
rotate = currentTransform[0] > 0 ? 0 : 180;
} else if (currentTransform[1] && currentTransform[0] === 0 && currentTransform[3] === 0) {
- rotate += currentTransform[1] > 0 ? 90 : 270;
+ rotate = currentTransform[1] > 0 ? 90 : 270;
}
- if (rotate !== 0) {
- switch (rotate) {
- case 90:
- [posX, posY] = [posY, posX];
- [lastPosX, lastPosY] = [lastPosY, lastPosX];
- break;
+ switch (rotate) {
+ case 0:
+ break;
- case 180:
- [posX, posY, lastPosX, lastPosY] = [-posX, -posY, -lastPosX, -lastPosY];
- break;
+ case 90:
+ [posX, posY] = [posY, posX];
+ [lastPosX, lastPosY] = [lastPosY, lastPosX];
+ break;
- case 270:
- [posX, posY] = [-posY, -posX];
- [lastPosX, lastPosY] = [-lastPosY, -lastPosX];
- break;
- }
+ case 180:
+ [posX, posY, lastPosX, lastPosY] = [-posX, -posY, -lastPosX, -lastPosY];
+ break;
+
+ case 270:
+ [posX, posY] = [-posY, -posX];
+ [lastPosX, lastPosY] = [-lastPosY, -lastPosX];
+ break;
+
+ default:
+ [posX, posY] = applyInverseRotation(posX, posY, currentTransform);
+ [lastPosX, lastPosY] = applyInverseRotation(lastPosX, lastPosY, textContentItem.prevTransform);
}
if (textState.font.vertical) {
const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;
const advanceX = posX - lastPosX;
+ const textOrientation = Math.sign(textContentItem.height);
- if (advanceY < textContentItem.negativeSpaceMax) {
+ if (advanceY < textOrientation * textContentItem.negativeSpaceMax) {
if (Math.abs(advanceX) > 0.5 * textContentItem.width) {
appendEOL();
- return;
+ return true;
}
flushTextContentItem();
- return;
+ return true;
}
- if (Math.abs(advanceX) > textContentItem.height) {
+ if (Math.abs(advanceX) > textContentItem.width) {
appendEOL();
- return;
+ return true;
}
- if (advanceY <= textContentItem.trackingSpaceMin) {
+ if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) {
textContentItem.height += advanceY;
- } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform)) {
+ } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform, textOrientation)) {
if (textContentItem.str.length === 0) {
textContent.items.push({
str: " ",
dir: "ltr",
width: 0,
- height: advanceY,
+ height: Math.abs(advanceY),
transform: textContentItem.prevTransform,
fontName: textContentItem.fontName,
hasEOL: false
@@ -23887,35 +23964,36 @@ class PartialEvaluator {
}
}
- return;
+ return true;
}
const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;
const advanceY = posY - lastPosY;
+ const textOrientation = Math.sign(textContentItem.width);
- if (advanceX < textContentItem.negativeSpaceMax) {
+ if (advanceX < textOrientation * textContentItem.negativeSpaceMax) {
if (Math.abs(advanceY) > 0.5 * textContentItem.height) {
appendEOL();
- return;
+ return true;
}
flushTextContentItem();
- return;
+ return true;
}
if (Math.abs(advanceY) > textContentItem.height) {
appendEOL();
- return;
+ return true;
}
- if (advanceX <= textContentItem.trackingSpaceMin) {
+ if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) {
textContentItem.width += advanceX;
- } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform)) {
+ } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)) {
if (textContentItem.str.length === 0) {
textContent.items.push({
str: " ",
dir: "ltr",
- width: advanceX,
+ width: Math.abs(advanceX),
height: 0,
transform: textContentItem.prevTransform,
fontName: textContentItem.fontName,
@@ -23925,6 +24003,8 @@ class PartialEvaluator {
textContentItem.width += advanceX;
}
}
+
+ return true;
}
function buildTextContentItem({
@@ -23952,6 +24032,11 @@ class PartialEvaluator {
for (let i = 0, ii = glyphs.length; i < ii; i++) {
const glyph = glyphs[i];
+
+ if (glyph.isInvisibleFormatMark) {
+ continue;
+ }
+
let charSpacing = textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);
let glyphWidth = glyph.width;
@@ -23960,9 +24045,8 @@ class PartialEvaluator {
}
let scaledDim = glyphWidth * scale;
- let glyphUnicode = glyph.unicode;
- if (glyphUnicode === " " && (i === 0 || i + 1 === ii || glyphs[i - 1].unicode === " " || glyphs[i + 1].unicode === " " || extraSpacing)) {
+ if (glyph.isWhitespace && (i === 0 || i + 1 === ii || glyphs[i - 1].isWhitespace || glyphs[i + 1].isWhitespace || extraSpacing)) {
if (!font.vertical) {
charSpacing += scaledDim + textState.wordSpacing;
textState.translateTextMatrix(charSpacing * textState.textHScale, 0);
@@ -23974,10 +24058,13 @@ class PartialEvaluator {
continue;
}
- compareWithLastPosition();
+ if (!compareWithLastPosition()) {
+ continue;
+ }
+
const textChunk = ensureTextContentItem();
- if (DiacriticRegExp.test(glyph.unicode)) {
+ if (glyph.isZeroWidthDiacritic) {
scaledDim = 0;
}
@@ -23995,9 +24082,14 @@ class PartialEvaluator {
textChunk.prevTransform = getCurrentTextTransform();
}
- glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;
- glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);
- textChunk.str.push(glyphUnicode);
+ if (glyph.isWhitespace) {
+ textChunk.str.push(" ");
+ } else {
+ let glyphUnicode = glyph.unicode;
+ glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;
+ glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);
+ textChunk.str.push(glyphUnicode);
+ }
if (charSpacing) {
if (!font.vertical) {
@@ -24026,8 +24118,8 @@ class PartialEvaluator {
}
}
- function addFakeSpaces(width, transf) {
- if (textContentItem.spaceInFlowMin <= width && width <= textContentItem.spaceInFlowMax) {
+ function addFakeSpaces(width, transf, textOrientation) {
+ if (textOrientation * textContentItem.spaceInFlowMin <= width && width <= textOrientation * textContentItem.spaceInFlowMax) {
if (textContentItem.initialized) {
textContentItem.str.push(" ");
}
@@ -24047,8 +24139,8 @@ class PartialEvaluator {
textContent.items.push({
str: " ",
dir: "ltr",
- width,
- height,
+ width: Math.abs(width),
+ height: Math.abs(height),
transform: transf || getCurrentTextTransform(),
fontName,
hasEOL: false
@@ -24298,13 +24390,13 @@ class PartialEvaluator {
xobj = xref.fetch(xobj);
}
- if (!(0, _primitives.isStream)(xobj)) {
+ if (!(xobj instanceof _base_stream.BaseStream)) {
throw new _util.FormatError("XObject should be a stream");
}
const type = xobj.dict.get("Subtype");
- if (!(0, _primitives.isName)(type)) {
+ if (!(type instanceof _primitives.Name)) {
throw new _util.FormatError("XObject should have a Name subtype");
}
@@ -24345,11 +24437,11 @@ class PartialEvaluator {
task,
resources: xobj.dict.get("Resources") || resources,
stateManager: xObjStateManager,
- normalizeWhitespace,
combineTextItems,
includeMarkedContent,
sink: sinkWrapper,
- seenStyles
+ seenStyles,
+ viewBox
}).then(function () {
if (!sinkWrapper.enqueueInvoked) {
emptyXObjectCache.set(name, xobj.dict.objId, true);
@@ -24426,7 +24518,7 @@ class PartialEvaluator {
if (includeMarkedContent) {
textContent.items.push({
type: "beginMarkedContent",
- tag: (0, _primitives.isName)(args[0]) ? args[0].name : null
+ tag: args[0] instanceof _primitives.Name ? args[0].name : null
});
}
@@ -24437,14 +24529,14 @@ class PartialEvaluator {
flushTextContentItem();
let mcid = null;
- if ((0, _primitives.isDict)(args[1])) {
+ if (args[1] instanceof _primitives.Dict) {
mcid = args[1].get("MCID");
}
textContent.items.push({
type: "beginMarkedContentProps",
id: Number.isInteger(mcid) ? `${self.idFactory.getPageObjId()}_mcid${mcid}` : null,
- tag: (0, _primitives.isName)(args[0]) ? args[0].name : null
+ tag: args[0] instanceof _primitives.Name ? args[0].name : null
});
}
@@ -24499,7 +24591,7 @@ class PartialEvaluator {
if (properties.composite) {
const cidSystemInfo = dict.get("CIDSystemInfo");
- if ((0, _primitives.isDict)(cidSystemInfo)) {
+ if (cidSystemInfo instanceof _primitives.Dict) {
properties.cidSystemInfo = {
registry: (0, _util.stringToPDFString)(cidSystemInfo.get("Registry")),
ordering: (0, _util.stringToPDFString)(cidSystemInfo.get("Ordering")),
@@ -24521,9 +24613,9 @@ class PartialEvaluator {
if (dict.has("Encoding")) {
encoding = dict.get("Encoding");
- if ((0, _primitives.isDict)(encoding)) {
+ if (encoding instanceof _primitives.Dict) {
baseEncodingName = encoding.get("BaseEncoding");
- baseEncodingName = (0, _primitives.isName)(baseEncodingName) ? baseEncodingName.name : null;
+ baseEncodingName = baseEncodingName instanceof _primitives.Name ? baseEncodingName.name : null;
if (encoding.has("Differences")) {
const diffEncoding = encoding.get("Differences");
@@ -24532,16 +24624,16 @@ class PartialEvaluator {
for (let j = 0, jj = diffEncoding.length; j < jj; j++) {
const data = xref.fetchIfRef(diffEncoding[j]);
- if ((0, _util.isNum)(data)) {
+ if (typeof data === "number") {
index = data;
- } else if ((0, _primitives.isName)(data)) {
+ } else if (data instanceof _primitives.Name) {
differences[index++] = data.name;
} else {
throw new _util.FormatError(`Invalid entry in 'Differences' array: ${data}`);
}
}
}
- } else if ((0, _primitives.isName)(encoding)) {
+ } else if (encoding instanceof _primitives.Name) {
baseEncodingName = encoding.name;
} else {
throw new _util.FormatError("Encoding is not a Name nor a Dict");
@@ -24739,7 +24831,7 @@ class PartialEvaluator {
return Promise.resolve(null);
}
- if ((0, _primitives.isName)(cmapObj)) {
+ if (cmapObj instanceof _primitives.Name) {
return _cmap.CMapFactory.create({
encoding: cmapObj,
fetchBuiltInCMap: this._fetchBuiltInCMapBound,
@@ -24751,7 +24843,7 @@ class PartialEvaluator {
return new _to_unicode_map.ToUnicodeMap(cmap.getMap());
});
- } else if ((0, _primitives.isStream)(cmapObj)) {
+ } else if (cmapObj instanceof _base_stream.BaseStream) {
return _cmap.CMapFactory.create({
encoding: cmapObj,
fetchBuiltInCMap: this._fetchBuiltInCMapBound,
@@ -24893,7 +24985,7 @@ class PartialEvaluator {
} else {
const baseFontName = dict.get("BaseFont");
- if ((0, _primitives.isName)(baseFontName)) {
+ if (baseFontName instanceof _primitives.Name) {
const metrics = this.getBaseFontMetrics(baseFontName.name);
glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);
defaultWidth = metrics.defaultWidth;
@@ -24955,7 +25047,7 @@ class PartialEvaluator {
const glyphWidths = Metrics[lookupName];
- if ((0, _util.isNum)(glyphWidths)) {
+ if (typeof glyphWidths === "number") {
defaultWidth = glyphWidths;
monospace = true;
} else {
@@ -24993,7 +25085,7 @@ class PartialEvaluator {
const baseDict = dict;
let type = dict.get("Subtype");
- if (!(0, _primitives.isName)(type)) {
+ if (!(type instanceof _primitives.Name)) {
throw new _util.FormatError("invalid font Subtype");
}
@@ -25015,7 +25107,7 @@ class PartialEvaluator {
type = dict.get("Subtype");
- if (!(0, _primitives.isName)(type)) {
+ if (!(type instanceof _primitives.Name)) {
throw new _util.FormatError("invalid font Subtype");
}
@@ -25030,15 +25122,15 @@ class PartialEvaluator {
hash = new _murmurhash.MurmurHash3_64();
const encoding = baseDict.getRaw("Encoding");
- if ((0, _primitives.isName)(encoding)) {
+ if (encoding instanceof _primitives.Name) {
hash.update(encoding.name);
- } else if ((0, _primitives.isRef)(encoding)) {
+ } else if (encoding instanceof _primitives.Ref) {
hash.update(encoding.toString());
- } else if ((0, _primitives.isDict)(encoding)) {
+ } else if (encoding instanceof _primitives.Dict) {
for (const entry of encoding.getRawValues()) {
- if ((0, _primitives.isName)(entry)) {
+ if (entry instanceof _primitives.Name) {
hash.update(entry.name);
- } else if ((0, _primitives.isRef)(entry)) {
+ } else if (entry instanceof _primitives.Ref) {
hash.update(entry.toString());
} else if (Array.isArray(entry)) {
const diffLength = entry.length,
@@ -25047,9 +25139,9 @@ class PartialEvaluator {
for (let j = 0; j < diffLength; j++) {
const diffEntry = entry[j];
- if ((0, _primitives.isName)(diffEntry)) {
+ if (diffEntry instanceof _primitives.Name) {
diffBuf[j] = diffEntry.name;
- } else if ((0, _util.isNum)(diffEntry) || (0, _primitives.isRef)(diffEntry)) {
+ } else if (typeof diffEntry === "number" || diffEntry instanceof _primitives.Ref) {
diffBuf[j] = diffEntry.toString();
}
}
@@ -25062,11 +25154,11 @@ class PartialEvaluator {
hash.update(`${firstChar}-${lastChar}`);
toUnicode = dict.get("ToUnicode") || baseDict.get("ToUnicode");
- if ((0, _primitives.isStream)(toUnicode)) {
+ if (toUnicode instanceof _base_stream.BaseStream) {
const stream = toUnicode.str || toUnicode;
const uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);
hash.update(uint8array);
- } else if ((0, _primitives.isName)(toUnicode)) {
+ } else if (toUnicode instanceof _primitives.Name) {
hash.update(toUnicode.name);
}
@@ -25076,7 +25168,7 @@ class PartialEvaluator {
const widthsBuf = [];
for (const entry of widths) {
- if ((0, _util.isNum)(entry) || (0, _primitives.isRef)(entry)) {
+ if (typeof entry === "number" || entry instanceof _primitives.Ref) {
widthsBuf.push(entry.toString());
}
}
@@ -25092,13 +25184,13 @@ class PartialEvaluator {
const widthsBuf = [];
for (const entry of compositeWidths) {
- if ((0, _util.isNum)(entry) || (0, _primitives.isRef)(entry)) {
+ if (typeof entry === "number" || entry instanceof _primitives.Ref) {
widthsBuf.push(entry.toString());
} else if (Array.isArray(entry)) {
const subWidthsBuf = [];
for (const element of entry) {
- if ((0, _util.isNum)(element) || (0, _primitives.isRef)(element)) {
+ if (typeof element === "number" || element instanceof _primitives.Ref) {
subWidthsBuf.push(element.toString());
}
}
@@ -25157,7 +25249,7 @@ class PartialEvaluator {
} else {
let baseFontName = dict.get("BaseFont");
- if (!(0, _primitives.isName)(baseFontName)) {
+ if (!(baseFontName instanceof _primitives.Name)) {
throw new _util.FormatError("Base font is not specified");
}
@@ -25213,11 +25305,11 @@ class PartialEvaluator {
let fontName = descriptor.get("FontName");
let baseFont = dict.get("BaseFont");
- if ((0, _util.isString)(fontName)) {
+ if (typeof fontName === "string") {
fontName = _primitives.Name.get(fontName);
}
- if ((0, _util.isString)(baseFont)) {
+ if (typeof baseFont === "string") {
baseFont = _primitives.Name.get(baseFont);
}
@@ -25236,7 +25328,7 @@ class PartialEvaluator {
fontName = fontName || baseFont;
- if (!(0, _primitives.isName)(fontName)) {
+ if (!(fontName instanceof _primitives.Name)) {
throw new _util.FormatError("invalid font name");
}
@@ -25323,7 +25415,7 @@ class PartialEvaluator {
if (composite) {
const cidEncoding = baseDict.get("Encoding");
- if ((0, _primitives.isName)(cidEncoding)) {
+ if (cidEncoding instanceof _primitives.Name) {
properties.cidEncoding = cidEncoding.name;
}
@@ -25435,6 +25527,13 @@ class TranslatedFont {
ignoreErrors: false
});
type3Evaluator.parsingType3Font = true;
+ const type3FontRefs = new _primitives.RefSet(evaluator.type3FontRefs);
+
+ if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) {
+ type3FontRefs.put(this.dict.objId);
+ }
+
+ type3Evaluator.type3FontRefs = type3FontRefs;
const translatedFont = this.font,
type3Dependencies = this.type3Dependencies;
let loadCharProcsPromise = Promise.resolve();
@@ -26039,7 +26138,7 @@ class EvaluatorPreprocessor {
}
static get MAX_INVALID_PATH_OPS() {
- return (0, _util.shadow)(this, "MAX_INVALID_PATH_OPS", 20);
+ return (0, _util.shadow)(this, "MAX_INVALID_PATH_OPS", 10);
}
constructor(stream, xref, stateManager = new StateManager()) {
@@ -26172,9 +26271,11 @@ var _util = __w_pdfjs_require__(2);
var _primitives = __w_pdfjs_require__(5);
+var _base_stream = __w_pdfjs_require__(9);
+
var _parser = __w_pdfjs_require__(27);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _stream = __w_pdfjs_require__(10);
@@ -26764,7 +26865,7 @@ const CMapFactory = function CMapFactoryClosure() {
}
function expectString(obj) {
- if (!(0, _util.isString)(obj)) {
+ if (typeof obj !== "string") {
throw new _util.FormatError("Malformed CMap: expected string.");
}
}
@@ -26815,7 +26916,7 @@ const CMapFactory = function CMapFactoryClosure() {
const high = strToInt(obj);
obj = lexer.getObj();
- if (Number.isInteger(obj) || (0, _util.isString)(obj)) {
+ if (Number.isInteger(obj) || typeof obj === "string") {
const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;
cMap.mapBfRange(low, high, dstLow);
} else if ((0, _primitives.isCmd)(obj, "[")) {
@@ -26893,14 +26994,14 @@ const CMapFactory = function CMapFactoryClosure() {
return;
}
- if (!(0, _util.isString)(obj)) {
+ if (typeof obj !== "string") {
break;
}
const low = strToInt(obj);
obj = lexer.getObj();
- if (!(0, _util.isString)(obj)) {
+ if (typeof obj !== "string") {
break;
}
@@ -26922,7 +27023,7 @@ const CMapFactory = function CMapFactoryClosure() {
function parseCMapName(cMap, lexer) {
const obj = lexer.getObj();
- if ((0, _primitives.isName)(obj) && (0, _util.isString)(obj.name)) {
+ if (obj instanceof _primitives.Name) {
cMap.name = obj.name;
}
}
@@ -26936,7 +27037,7 @@ const CMapFactory = function CMapFactoryClosure() {
if (obj === _primitives.EOF) {
break;
- } else if ((0, _primitives.isName)(obj)) {
+ } else if (obj instanceof _primitives.Name) {
if (obj.name === "WMode") {
parseWMode(cMap, lexer);
} else if (obj.name === "CMapName") {
@@ -26944,13 +27045,13 @@ const CMapFactory = function CMapFactoryClosure() {
}
previous = obj;
- } else if ((0, _primitives.isCmd)(obj)) {
+ } else if (obj instanceof _primitives.Cmd) {
switch (obj.cmd) {
case "endcmap":
break objLoop;
case "usecmap":
- if ((0, _primitives.isName)(previous)) {
+ if (previous instanceof _primitives.Name) {
embeddedUseCMap = previous.name;
}
@@ -27060,9 +27161,9 @@ const CMapFactory = function CMapFactoryClosure() {
const fetchBuiltInCMap = params.fetchBuiltInCMap;
const useCMap = params.useCMap;
- if ((0, _primitives.isName)(encoding)) {
+ if (encoding instanceof _primitives.Name) {
return createBuiltInCMap(encoding.name, fetchBuiltInCMap);
- } else if ((0, _primitives.isStream)(encoding)) {
+ } else if (encoding instanceof _base_stream.BaseStream) {
const parsedCMap = await parseCMap(new CMap(), new _parser.Lexer(encoding), fetchBuiltInCMap, useCMap);
if (parsedCMap.isIdentityCMap) {
@@ -27095,7 +27196,7 @@ var _util = __w_pdfjs_require__(2);
var _primitives = __w_pdfjs_require__(5);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _ascii_85_stream = __w_pdfjs_require__(28);
@@ -27209,7 +27310,7 @@ class Parser {
const dict = new _primitives.Dict(this.xref);
while (!(0, _primitives.isCmd)(this.buf1, ">>") && this.buf1 !== _primitives.EOF) {
- if (!(0, _primitives.isName)(this.buf1)) {
+ if (!(this.buf1 instanceof _primitives.Name)) {
(0, _util.info)("Malformed dictionary: key must be a name object");
this.shift();
continue;
@@ -27530,7 +27631,7 @@ class Parser {
let dictLength;
while (!(0, _primitives.isCmd)(this.buf1, "ID") && this.buf1 !== _primitives.EOF) {
- if (!(0, _primitives.isName)(this.buf1)) {
+ if (!(this.buf1 instanceof _primitives.Name)) {
throw new _util.FormatError("Dictionary key must be a name object");
}
@@ -27551,12 +27652,12 @@ class Parser {
const filter = dict.get("F", "Filter");
let filterName;
- if ((0, _primitives.isName)(filter)) {
+ if (filter instanceof _primitives.Name) {
filterName = filter.name;
} else if (Array.isArray(filter)) {
const filterZero = this.xref.fetchIfRef(filter[0]);
- if ((0, _primitives.isName)(filterZero)) {
+ if (filterZero instanceof _primitives.Name) {
filterName = filterZero.name;
}
}
@@ -27732,7 +27833,7 @@ class Parser {
let filter = dict.get("F", "Filter");
let params = dict.get("DP", "DecodeParms");
- if ((0, _primitives.isName)(filter)) {
+ if (filter instanceof _primitives.Name) {
if (Array.isArray(params)) {
(0, _util.warn)("/DecodeParms should not be an Array, when /Filter is a Name.");
}
@@ -27749,7 +27850,7 @@ class Parser {
for (let i = 0, ii = filterArray.length; i < ii; ++i) {
filter = this.xref.fetchIfRef(filterArray[i]);
- if (!(0, _primitives.isName)(filter)) {
+ if (!(filter instanceof _primitives.Name)) {
throw new _util.FormatError(`Bad filter name "${filter}"`);
}
@@ -27914,9 +28015,16 @@ class Lexer {
}
if (ch < 0x30 || ch > 0x39) {
- if (divideBy === 10 && sign === 0 && ((0, _core_utils.isWhiteSpace)(ch) || ch === -1)) {
- (0, _util.warn)("Lexer.getNumber - treating a single decimal point as zero.");
- return 0;
+ if ((0, _core_utils.isWhiteSpace)(ch) || ch === -1) {
+ if (divideBy === 10 && sign === 0) {
+ (0, _util.warn)("Lexer.getNumber - treating a single decimal point as zero.");
+ return 0;
+ }
+
+ if (divideBy === 0 && sign === -1) {
+ (0, _util.warn)("Lexer.getNumber - treating a single minus sign as zero.");
+ return 0;
+ }
}
throw new _util.FormatError(`Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`);
@@ -28435,7 +28543,7 @@ class Linearization {
const linDict = parser.getObj();
let obj, length;
- if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && (0, _primitives.isCmd)(obj3, "obj") && (0, _primitives.isDict)(linDict) && (0, _util.isNum)(obj = linDict.get("Linearized")) && obj > 0)) {
+ if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && (0, _primitives.isCmd)(obj3, "obj") && linDict instanceof _primitives.Dict && typeof (obj = linDict.get("Linearized")) === "number" && obj > 0)) {
return null;
} else if ((length = getInt(linDict, "L")) !== stream.length) {
throw new Error('The "L" parameter in the linearization dictionary ' + "does not equal the stream length.");
@@ -28469,7 +28577,7 @@ exports.Ascii85Stream = void 0;
var _decode_stream = __w_pdfjs_require__(29);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
class Ascii85Stream extends _decode_stream.DecodeStream {
constructor(str, maybeLength) {
@@ -28567,7 +28675,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.StreamsSequenceStream = exports.DecodeStream = void 0;
-var _base_stream = __w_pdfjs_require__(6);
+var _base_stream = __w_pdfjs_require__(9);
var _stream = __w_pdfjs_require__(10);
@@ -28834,19 +28942,19 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.CCITTFaxStream = void 0;
-var _primitives = __w_pdfjs_require__(5);
-
var _ccitt = __w_pdfjs_require__(32);
var _decode_stream = __w_pdfjs_require__(29);
+var _primitives = __w_pdfjs_require__(5);
+
class CCITTFaxStream extends _decode_stream.DecodeStream {
constructor(str, maybeLength, params) {
super(maybeLength);
this.str = str;
this.dict = str.dict;
- if (!(0, _primitives.isDict)(params)) {
+ if (!(params instanceof _primitives.Dict)) {
params = _primitives.Dict.empty;
}
@@ -29916,10 +30024,12 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.Jbig2Stream = void 0;
-var _primitives = __w_pdfjs_require__(5);
+var _base_stream = __w_pdfjs_require__(9);
var _decode_stream = __w_pdfjs_require__(29);
+var _primitives = __w_pdfjs_require__(5);
+
var _jbig = __w_pdfjs_require__(35);
var _util = __w_pdfjs_require__(2);
@@ -29947,10 +30057,10 @@ class Jbig2Stream extends _decode_stream.DecodeStream {
const jbig2Image = new _jbig.Jbig2Image();
const chunks = [];
- if ((0, _primitives.isDict)(this.params)) {
+ if (this.params instanceof _primitives.Dict) {
const globalsStream = this.params.get("JBIG2Globals");
- if ((0, _primitives.isStream)(globalsStream)) {
+ if (globalsStream instanceof _base_stream.BaseStream) {
const globals = globalsStream.getBytes();
chunks.push({
data: globals,
@@ -29994,7 +30104,7 @@ exports.Jbig2Image = void 0;
var _util = __w_pdfjs_require__(2);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _arithmetic_decoder = __w_pdfjs_require__(36);
@@ -32608,7 +32718,7 @@ class JpegStream extends _decode_stream.DecodeStream {
}
}
- if ((0, _primitives.isDict)(this.params)) {
+ if (this.params instanceof _primitives.Dict) {
const colorTransform = this.params.get("ColorTransform");
if (Number.isInteger(colorTransform)) {
@@ -32646,7 +32756,7 @@ exports.JpegImage = void 0;
var _util = __w_pdfjs_require__(2);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
class JpegError extends _util.BaseException {
constructor(msg) {
@@ -33973,7 +34083,7 @@ exports.JpxImage = void 0;
var _util = __w_pdfjs_require__(2);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _arithmetic_decoder = __w_pdfjs_require__(36);
@@ -34341,10 +34451,6 @@ class JpxImage {
unsupported.push("selectiveArithmeticCodingBypass");
}
- if (cod.resetContextProbabilities) {
- unsupported.push("resetContextProbabilities");
- }
-
if (cod.terminationOnEachCodingPass) {
unsupported.push("terminationOnEachCodingPass");
}
@@ -35289,7 +35395,7 @@ function parseTilePackets(context, data, offset, dataLength) {
return position;
}
-function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, segmentationSymbolUsed) {
+function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, segmentationSymbolUsed, resetContextProbabilities) {
const x0 = subband.tbx0;
const y0 = subband.tby0;
const width = subband.tbx1 - subband.tbx0;
@@ -35356,6 +35462,10 @@ function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta,
break;
}
+ if (resetContextProbabilities) {
+ bitModel.reset();
+ }
+
currentCodingpassType = (currentCodingpassType + 1) % 3;
}
@@ -35410,6 +35520,7 @@ function transformTile(context, tile, c) {
const scalarExpounded = quantizationParameters.scalarExpounded;
const guardBits = quantizationParameters.guardBits;
const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;
+ const resetContextProbabilities = codingStyleParameters.resetContextProbabilities;
const precision = context.components[c].precision;
const reversible = codingStyleParameters.reversibleTransformation;
const transform = reversible ? new ReversibleTransform() : new IrreversibleTransform();
@@ -35438,7 +35549,7 @@ function transformTile(context, tile, c) {
const gainLog2 = SubbandsGainLog2[subband.type];
const delta = reversible ? 1 : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);
const mb = guardBits + epsilon - 1;
- copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed);
+ copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed, resetContextProbabilities);
}
subbandCoefficients.push({
@@ -36464,15 +36575,15 @@ exports.PredictorStream = void 0;
var _decode_stream = __w_pdfjs_require__(29);
-var _util = __w_pdfjs_require__(2);
-
var _primitives = __w_pdfjs_require__(5);
+var _util = __w_pdfjs_require__(2);
+
class PredictorStream extends _decode_stream.DecodeStream {
constructor(str, maybeLength, params) {
super(maybeLength);
- if (!(0, _primitives.isDict)(params)) {
+ if (!(params instanceof _primitives.Dict)) {
return str;
}
@@ -36778,31 +36889,33 @@ var _cff_parser = __w_pdfjs_require__(45);
var _fonts_utils = __w_pdfjs_require__(18);
+var _unicode = __w_pdfjs_require__(21);
+
var _glyphlist = __w_pdfjs_require__(20);
var _encodings = __w_pdfjs_require__(19);
var _standard_fonts = __w_pdfjs_require__(47);
-var _unicode = __w_pdfjs_require__(21);
-
var _to_unicode_map = __w_pdfjs_require__(48);
var _cff_font = __w_pdfjs_require__(49);
var _font_renderer = __w_pdfjs_require__(50);
-var _glyf = __w_pdfjs_require__(51);
+var _metrics = __w_pdfjs_require__(51);
+
+var _glyf = __w_pdfjs_require__(52);
var _cmap = __w_pdfjs_require__(26);
-var _opentype_file_builder = __w_pdfjs_require__(52);
+var _opentype_file_builder = __w_pdfjs_require__(53);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _stream = __w_pdfjs_require__(10);
-var _type1_font = __w_pdfjs_require__(53);
+var _type1_font = __w_pdfjs_require__(54);
const PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]];
const PDF_GLYPH_SPACE_UNITS = 1000;
@@ -36903,6 +37016,10 @@ class Glyph {
this.operatorListId = operatorListId;
this.isSpace = isSpace;
this.isInFont = isInFont;
+ const category = (0, _unicode.getCharUnicodeCategory)(unicode);
+ this.isWhitespace = category.isWhitespace;
+ this.isZeroWidthDiacritic = category.isZeroWidthDiacritic;
+ this.isInvisibleFormatMark = category.isInvisibleFormatMark;
}
matchesForCache(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {
@@ -37581,6 +37698,23 @@ class Font {
const isStandardFont = !!stdFontMap[fontName];
const isMappedToStandardFont = !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);
fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;
+ const fontBasicMetricsMap = (0, _metrics.getFontBasicMetrics)();
+ const metrics = fontBasicMetricsMap[fontName];
+
+ if (metrics) {
+ if (isNaN(this.ascent)) {
+ this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS;
+ }
+
+ if (isNaN(this.descent)) {
+ this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS;
+ }
+
+ if (isNaN(this.capHeight)) {
+ this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS;
+ }
+ }
+
this.bold = fontName.search(/bold/gi) !== -1;
this.italic = fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;
this.black = name.search(/Black/g) !== -1;
@@ -39408,7 +39542,11 @@ class Font {
}
width = this.widths[widthCode];
- width = (0, _util.isNum)(width) ? width : this.defaultWidth;
+
+ if (typeof width !== "number") {
+ width = this.defaultWidth;
+ }
+
const vmetric = this.vmetrics && this.vmetrics[widthCode];
let unicode = this.toUnicode.get(charcode) || charcode;
@@ -41480,7 +41618,7 @@ exports.getSerifFonts = exports.getNonStdFontMap = exports.getGlyphMapForStandar
exports.getStandardFontName = getStandardFontName;
exports.getSymbolsFonts = exports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = exports.getStdFontMap = void 0;
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _fonts_utils = __w_pdfjs_require__(18);
@@ -42525,14 +42663,26 @@ var _encodings = __w_pdfjs_require__(19);
var _stream = __w_pdfjs_require__(10);
-function getLong(data, offset) {
- return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];
+function getUint32(data, offset) {
+ return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;
}
-function getUshort(data, offset) {
+function getUint16(data, offset) {
return data[offset] << 8 | data[offset + 1];
}
+function getInt16(data, offset) {
+ return (data[offset] << 24 | data[offset + 1] << 16) >> 16;
+}
+
+function getInt8(data, offset) {
+ return data[offset] << 24 >> 24;
+}
+
+function getFloat214(data, offset) {
+ return getInt16(data, offset) / 16384;
+}
+
function getSubroutineBias(subrs) {
const numSubrs = subrs.length;
let bias = 32768;
@@ -42547,34 +42697,34 @@ function getSubroutineBias(subrs) {
}
function parseCmap(data, start, end) {
- const offset = getUshort(data, start + 2) === 1 ? getLong(data, start + 8) : getLong(data, start + 16);
- const format = getUshort(data, start + offset);
+ const offset = getUint16(data, start + 2) === 1 ? getUint32(data, start + 8) : getUint32(data, start + 16);
+ const format = getUint16(data, start + offset);
let ranges, p, i;
if (format === 4) {
- getUshort(data, start + offset + 2);
- const segCount = getUshort(data, start + offset + 6) >> 1;
+ getUint16(data, start + offset + 2);
+ const segCount = getUint16(data, start + offset + 6) >> 1;
p = start + offset + 14;
ranges = [];
for (i = 0; i < segCount; i++, p += 2) {
ranges[i] = {
- end: getUshort(data, p)
+ end: getUint16(data, p)
};
}
p += 2;
for (i = 0; i < segCount; i++, p += 2) {
- ranges[i].start = getUshort(data, p);
+ ranges[i].start = getUint16(data, p);
}
for (i = 0; i < segCount; i++, p += 2) {
- ranges[i].idDelta = getUshort(data, p);
+ ranges[i].idDelta = getUint16(data, p);
}
for (i = 0; i < segCount; i++, p += 2) {
- let idOffset = getUshort(data, p);
+ let idOffset = getUint16(data, p);
if (idOffset === 0) {
continue;
@@ -42583,23 +42733,23 @@ function parseCmap(data, start, end) {
ranges[i].ids = [];
for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {
- ranges[i].ids[j] = getUshort(data, p + idOffset);
+ ranges[i].ids[j] = getUint16(data, p + idOffset);
idOffset += 2;
}
}
return ranges;
} else if (format === 12) {
- getLong(data, start + offset + 4);
- const groups = getLong(data, start + offset + 12);
+ const groups = getUint32(data, start + offset + 12);
p = start + offset + 16;
ranges = [];
for (i = 0; i < groups; i++) {
+ start = getUint32(data, p);
ranges.push({
- start: getLong(data, p),
- end: getLong(data, p + 4),
- idDelta: getLong(data, p + 8) - getLong(data, p)
+ start,
+ end: getUint32(data, p + 4),
+ idDelta: getUint32(data, p + 8) - start
});
p += 12;
}
@@ -42629,16 +42779,11 @@ function parseGlyfTable(glyf, loca, isGlyphLocationsLong) {
if (isGlyphLocationsLong) {
itemSize = 4;
-
- itemDecode = function fontItemDecodeLong(data, offset) {
- return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];
- };
+ itemDecode = getUint32;
} else {
itemSize = 2;
- itemDecode = function fontItemDecode(data, offset) {
- return data[offset] << 9 | data[offset + 1] << 1;
- };
+ itemDecode = (data, offset) => 2 * getUint16(data, offset);
}
const glyphs = [];
@@ -42702,7 +42847,7 @@ function compileGlyf(code, cmds, font) {
}
let i = 0;
- const numberOfContours = (code[i] << 24 | code[i + 1] << 16) >> 16;
+ const numberOfContours = getInt16(code, i);
let flags;
let x = 0,
y = 0;
@@ -42710,18 +42855,29 @@ function compileGlyf(code, cmds, font) {
if (numberOfContours < 0) {
do {
- flags = code[i] << 8 | code[i + 1];
- const glyphIndex = code[i + 2] << 8 | code[i + 3];
+ flags = getUint16(code, i);
+ const glyphIndex = getUint16(code, i + 2);
i += 4;
let arg1, arg2;
if (flags & 0x01) {
- arg1 = (code[i] << 24 | code[i + 1] << 16) >> 16;
- arg2 = (code[i + 2] << 24 | code[i + 3] << 16) >> 16;
+ if (flags & 0x02) {
+ arg1 = getInt16(code, i);
+ arg2 = getInt16(code, i + 2);
+ } else {
+ arg1 = getUint16(code, i);
+ arg2 = getUint16(code, i + 2);
+ }
+
i += 4;
} else {
- arg1 = code[i++];
- arg2 = code[i++];
+ if (flags & 0x02) {
+ arg1 = getInt8(code, i++);
+ arg2 = getInt8(code, i++);
+ } else {
+ arg1 = code[i++];
+ arg2 = code[i++];
+ }
}
if (flags & 0x02) {
@@ -42738,17 +42894,17 @@ function compileGlyf(code, cmds, font) {
scale10 = 0;
if (flags & 0x08) {
- scaleX = scaleY = (code[i] << 24 | code[i + 1] << 16) / 1073741824;
+ scaleX = scaleY = getFloat214(code, i);
i += 2;
} else if (flags & 0x40) {
- scaleX = (code[i] << 24 | code[i + 1] << 16) / 1073741824;
- scaleY = (code[i + 2] << 24 | code[i + 3] << 16) / 1073741824;
+ scaleX = getFloat214(code, i);
+ scaleY = getFloat214(code, i + 2);
i += 4;
} else if (flags & 0x80) {
- scaleX = (code[i] << 24 | code[i + 1] << 16) / 1073741824;
- scale01 = (code[i + 2] << 24 | code[i + 3] << 16) / 1073741824;
- scale10 = (code[i + 4] << 24 | code[i + 5] << 16) / 1073741824;
- scaleY = (code[i + 6] << 24 | code[i + 7] << 16) / 1073741824;
+ scaleX = getFloat214(code, i);
+ scale01 = getFloat214(code, i + 2);
+ scale10 = getFloat214(code, i + 4);
+ scaleY = getFloat214(code, i + 6);
i += 8;
}
@@ -42761,6 +42917,9 @@ function compileGlyf(code, cmds, font) {
cmd: "transform",
args: [scaleX, scale01, scale10, scaleY, x, y]
});
+
+ if (!(flags & 0x02)) {}
+
compileGlyf(subglyph, cmds, font);
cmds.push({
cmd: "restore"
@@ -42772,11 +42931,11 @@ function compileGlyf(code, cmds, font) {
let j, jj;
for (j = 0; j < numberOfContours; j++) {
- endPtsOfContours.push(code[i] << 8 | code[i + 1]);
+ endPtsOfContours.push(getUint16(code, i));
i += 2;
}
- const instructionLength = code[i] << 8 | code[i + 1];
+ const instructionLength = getUint16(code, i);
i += 2 + instructionLength;
const numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;
const points = [];
@@ -42799,7 +42958,7 @@ function compileGlyf(code, cmds, font) {
for (j = 0; j < numberOfPoints; j++) {
switch (points[j].flags & 0x12) {
case 0x00:
- x += (code[i] << 24 | code[i + 1] << 16) >> 16;
+ x += getInt16(code, i);
i += 2;
break;
@@ -42818,7 +42977,7 @@ function compileGlyf(code, cmds, font) {
for (j = 0; j < numberOfPoints; j++) {
switch (points[j].flags & 0x24) {
case 0x00:
- y += (code[i] << 24 | code[i + 1] << 16) >> 16;
+ y += getInt16(code, i);
i += 2;
break;
@@ -43436,12 +43595,12 @@ class FontRendererFactory {
static create(font, seacAnalysisEnabled) {
const data = new Uint8Array(font.data);
let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;
- const numTables = getUshort(data, 4);
+ const numTables = getUint16(data, 4);
for (let i = 0, p = 12; i < numTables; i++, p += 16) {
const tag = (0, _util.bytesToString)(data.subarray(p, p + 4));
- const offset = getLong(data, p + 8);
- const length = getLong(data, p + 12);
+ const offset = getUint32(data, p + 8);
+ const length = getUint32(data, p + 12);
switch (tag) {
case "cmap":
@@ -43457,8 +43616,8 @@ class FontRendererFactory {
break;
case "head":
- unitsPerEm = getUshort(data, offset + 18);
- indexToLocFormat = getUshort(data, offset + 50);
+ unitsPerEm = getUint16(data, offset + 18);
+ indexToLocFormat = getUint16(data, offset + 50);
break;
case "CFF ":
@@ -43481,6 +43640,3046 @@ exports.FontRendererFactory = FontRendererFactory;
/***/ }),
/* 51 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.getMetrics = exports.getFontBasicMetrics = void 0;
+
+var _core_utils = __w_pdfjs_require__(8);
+
+const getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) {
+ t.Courier = 600;
+ t["Courier-Bold"] = 600;
+ t["Courier-BoldOblique"] = 600;
+ t["Courier-Oblique"] = 600;
+ t.Helvetica = (0, _core_utils.getLookupTableFactory)(function (t) {
+ t.space = 278;
+ t.exclam = 278;
+ t.quotedbl = 355;
+ t.numbersign = 556;
+ t.dollar = 556;
+ t.percent = 889;
+ t.ampersand = 667;
+ t.quoteright = 222;
+ t.parenleft = 333;
+ t.parenright = 333;
+ t.asterisk = 389;
+ t.plus = 584;
+ t.comma = 278;
+ t.hyphen = 333;
+ t.period = 278;
+ t.slash = 278;
+ t.zero = 556;
+ t.one = 556;
+ t.two = 556;
+ t.three = 556;
+ t.four = 556;
+ t.five = 556;
+ t.six = 556;
+ t.seven = 556;
+ t.eight = 556;
+ t.nine = 556;
+ t.colon = 278;
+ t.semicolon = 278;
+ t.less = 584;
+ t.equal = 584;
+ t.greater = 584;
+ t.question = 556;
+ t.at = 1015;
+ t.A = 667;
+ t.B = 667;
+ t.C = 722;
+ t.D = 722;
+ t.E = 667;
+ t.F = 611;
+ t.G = 778;
+ t.H = 722;
+ t.I = 278;
+ t.J = 500;
+ t.K = 667;
+ t.L = 556;
+ t.M = 833;
+ t.N = 722;
+ t.O = 778;
+ t.P = 667;
+ t.Q = 778;
+ t.R = 722;
+ t.S = 667;
+ t.T = 611;
+ t.U = 722;
+ t.V = 667;
+ t.W = 944;
+ t.X = 667;
+ t.Y = 667;
+ t.Z = 611;
+ t.bracketleft = 278;
+ t.backslash = 278;
+ t.bracketright = 278;
+ t.asciicircum = 469;
+ t.underscore = 556;
+ t.quoteleft = 222;
+ t.a = 556;
+ t.b = 556;
+ t.c = 500;
+ t.d = 556;
+ t.e = 556;
+ t.f = 278;
+ t.g = 556;
+ t.h = 556;
+ t.i = 222;
+ t.j = 222;
+ t.k = 500;
+ t.l = 222;
+ t.m = 833;
+ t.n = 556;
+ t.o = 556;
+ t.p = 556;
+ t.q = 556;
+ t.r = 333;
+ t.s = 500;
+ t.t = 278;
+ t.u = 556;
+ t.v = 500;
+ t.w = 722;
+ t.x = 500;
+ t.y = 500;
+ t.z = 500;
+ t.braceleft = 334;
+ t.bar = 260;
+ t.braceright = 334;
+ t.asciitilde = 584;
+ t.exclamdown = 333;
+ t.cent = 556;
+ t.sterling = 556;
+ t.fraction = 167;
+ t.yen = 556;
+ t.florin = 556;
+ t.section = 556;
+ t.currency = 556;
+ t.quotesingle = 191;
+ t.quotedblleft = 333;
+ t.guillemotleft = 556;
+ t.guilsinglleft = 333;
+ t.guilsinglright = 333;
+ t.fi = 500;
+ t.fl = 500;
+ t.endash = 556;
+ t.dagger = 556;
+ t.daggerdbl = 556;
+ t.periodcentered = 278;
+ t.paragraph = 537;
+ t.bullet = 350;
+ t.quotesinglbase = 222;
+ t.quotedblbase = 333;
+ t.quotedblright = 333;
+ t.guillemotright = 556;
+ t.ellipsis = 1000;
+ t.perthousand = 1000;
+ t.questiondown = 611;
+ t.grave = 333;
+ t.acute = 333;
+ t.circumflex = 333;
+ t.tilde = 333;
+ t.macron = 333;
+ t.breve = 333;
+ t.dotaccent = 333;
+ t.dieresis = 333;
+ t.ring = 333;
+ t.cedilla = 333;
+ t.hungarumlaut = 333;
+ t.ogonek = 333;
+ t.caron = 333;
+ t.emdash = 1000;
+ t.AE = 1000;
+ t.ordfeminine = 370;
+ t.Lslash = 556;
+ t.Oslash = 778;
+ t.OE = 1000;
+ t.ordmasculine = 365;
+ t.ae = 889;
+ t.dotlessi = 278;
+ t.lslash = 222;
+ t.oslash = 611;
+ t.oe = 944;
+ t.germandbls = 611;
+ t.Idieresis = 278;
+ t.eacute = 556;
+ t.abreve = 556;
+ t.uhungarumlaut = 556;
+ t.ecaron = 556;
+ t.Ydieresis = 667;
+ t.divide = 584;
+ t.Yacute = 667;
+ t.Acircumflex = 667;
+ t.aacute = 556;
+ t.Ucircumflex = 722;
+ t.yacute = 500;
+ t.scommaaccent = 500;
+ t.ecircumflex = 556;
+ t.Uring = 722;
+ t.Udieresis = 722;
+ t.aogonek = 556;
+ t.Uacute = 722;
+ t.uogonek = 556;
+ t.Edieresis = 667;
+ t.Dcroat = 722;
+ t.commaaccent = 250;
+ t.copyright = 737;
+ t.Emacron = 667;
+ t.ccaron = 500;
+ t.aring = 556;
+ t.Ncommaaccent = 722;
+ t.lacute = 222;
+ t.agrave = 556;
+ t.Tcommaaccent = 611;
+ t.Cacute = 722;
+ t.atilde = 556;
+ t.Edotaccent = 667;
+ t.scaron = 500;
+ t.scedilla = 500;
+ t.iacute = 278;
+ t.lozenge = 471;
+ t.Rcaron = 722;
+ t.Gcommaaccent = 778;
+ t.ucircumflex = 556;
+ t.acircumflex = 556;
+ t.Amacron = 667;
+ t.rcaron = 333;
+ t.ccedilla = 500;
+ t.Zdotaccent = 611;
+ t.Thorn = 667;
+ t.Omacron = 778;
+ t.Racute = 722;
+ t.Sacute = 667;
+ t.dcaron = 643;
+ t.Umacron = 722;
+ t.uring = 556;
+ t.threesuperior = 333;
+ t.Ograve = 778;
+ t.Agrave = 667;
+ t.Abreve = 667;
+ t.multiply = 584;
+ t.uacute = 556;
+ t.Tcaron = 611;
+ t.partialdiff = 476;
+ t.ydieresis = 500;
+ t.Nacute = 722;
+ t.icircumflex = 278;
+ t.Ecircumflex = 667;
+ t.adieresis = 556;
+ t.edieresis = 556;
+ t.cacute = 500;
+ t.nacute = 556;
+ t.umacron = 556;
+ t.Ncaron = 722;
+ t.Iacute = 278;
+ t.plusminus = 584;
+ t.brokenbar = 260;
+ t.registered = 737;
+ t.Gbreve = 778;
+ t.Idotaccent = 278;
+ t.summation = 600;
+ t.Egrave = 667;
+ t.racute = 333;
+ t.omacron = 556;
+ t.Zacute = 611;
+ t.Zcaron = 611;
+ t.greaterequal = 549;
+ t.Eth = 722;
+ t.Ccedilla = 722;
+ t.lcommaaccent = 222;
+ t.tcaron = 317;
+ t.eogonek = 556;
+ t.Uogonek = 722;
+ t.Aacute = 667;
+ t.Adieresis = 667;
+ t.egrave = 556;
+ t.zacute = 500;
+ t.iogonek = 222;
+ t.Oacute = 778;
+ t.oacute = 556;
+ t.amacron = 556;
+ t.sacute = 500;
+ t.idieresis = 278;
+ t.Ocircumflex = 778;
+ t.Ugrave = 722;
+ t.Delta = 612;
+ t.thorn = 556;
+ t.twosuperior = 333;
+ t.Odieresis = 778;
+ t.mu = 556;
+ t.igrave = 278;
+ t.ohungarumlaut = 556;
+ t.Eogonek = 667;
+ t.dcroat = 556;
+ t.threequarters = 834;
+ t.Scedilla = 667;
+ t.lcaron = 299;
+ t.Kcommaaccent = 667;
+ t.Lacute = 556;
+ t.trademark = 1000;
+ t.edotaccent = 556;
+ t.Igrave = 278;
+ t.Imacron = 278;
+ t.Lcaron = 556;
+ t.onehalf = 834;
+ t.lessequal = 549;
+ t.ocircumflex = 556;
+ t.ntilde = 556;
+ t.Uhungarumlaut = 722;
+ t.Eacute = 667;
+ t.emacron = 556;
+ t.gbreve = 556;
+ t.onequarter = 834;
+ t.Scaron = 667;
+ t.Scommaaccent = 667;
+ t.Ohungarumlaut = 778;
+ t.degree = 400;
+ t.ograve = 556;
+ t.Ccaron = 722;
+ t.ugrave = 556;
+ t.radical = 453;
+ t.Dcaron = 722;
+ t.rcommaaccent = 333;
+ t.Ntilde = 722;
+ t.otilde = 556;
+ t.Rcommaaccent = 722;
+ t.Lcommaaccent = 556;
+ t.Atilde = 667;
+ t.Aogonek = 667;
+ t.Aring = 667;
+ t.Otilde = 778;
+ t.zdotaccent = 500;
+ t.Ecaron = 667;
+ t.Iogonek = 278;
+ t.kcommaaccent = 500;
+ t.minus = 584;
+ t.Icircumflex = 278;
+ t.ncaron = 556;
+ t.tcommaaccent = 278;
+ t.logicalnot = 584;
+ t.odieresis = 556;
+ t.udieresis = 556;
+ t.notequal = 549;
+ t.gcommaaccent = 556;
+ t.eth = 556;
+ t.zcaron = 500;
+ t.ncommaaccent = 556;
+ t.onesuperior = 333;
+ t.imacron = 278;
+ t.Euro = 556;
+ });
+ t["Helvetica-Bold"] = (0, _core_utils.getLookupTableFactory)(function (t) {
+ t.space = 278;
+ t.exclam = 333;
+ t.quotedbl = 474;
+ t.numbersign = 556;
+ t.dollar = 556;
+ t.percent = 889;
+ t.ampersand = 722;
+ t.quoteright = 278;
+ t.parenleft = 333;
+ t.parenright = 333;
+ t.asterisk = 389;
+ t.plus = 584;
+ t.comma = 278;
+ t.hyphen = 333;
+ t.period = 278;
+ t.slash = 278;
+ t.zero = 556;
+ t.one = 556;
+ t.two = 556;
+ t.three = 556;
+ t.four = 556;
+ t.five = 556;
+ t.six = 556;
+ t.seven = 556;
+ t.eight = 556;
+ t.nine = 556;
+ t.colon = 333;
+ t.semicolon = 333;
+ t.less = 584;
+ t.equal = 584;
+ t.greater = 584;
+ t.question = 611;
+ t.at = 975;
+ t.A = 722;
+ t.B = 722;
+ t.C = 722;
+ t.D = 722;
+ t.E = 667;
+ t.F = 611;
+ t.G = 778;
+ t.H = 722;
+ t.I = 278;
+ t.J = 556;
+ t.K = 722;
+ t.L = 611;
+ t.M = 833;
+ t.N = 722;
+ t.O = 778;
+ t.P = 667;
+ t.Q = 778;
+ t.R = 722;
+ t.S = 667;
+ t.T = 611;
+ t.U = 722;
+ t.V = 667;
+ t.W = 944;
+ t.X = 667;
+ t.Y = 667;
+ t.Z = 611;
+ t.bracketleft = 333;
+ t.backslash = 278;
+ t.bracketright = 333;
+ t.asciicircum = 584;
+ t.underscore = 556;
+ t.quoteleft = 278;
+ t.a = 556;
+ t.b = 611;
+ t.c = 556;
+ t.d = 611;
+ t.e = 556;
+ t.f = 333;
+ t.g = 611;
+ t.h = 611;
+ t.i = 278;
+ t.j = 278;
+ t.k = 556;
+ t.l = 278;
+ t.m = 889;
+ t.n = 611;
+ t.o = 611;
+ t.p = 611;
+ t.q = 611;
+ t.r = 389;
+ t.s = 556;
+ t.t = 333;
+ t.u = 611;
+ t.v = 556;
+ t.w = 778;
+ t.x = 556;
+ t.y = 556;
+ t.z = 500;
+ t.braceleft = 389;
+ t.bar = 280;
+ t.braceright = 389;
+ t.asciitilde = 584;
+ t.exclamdown = 333;
+ t.cent = 556;
+ t.sterling = 556;
+ t.fraction = 167;
+ t.yen = 556;
+ t.florin = 556;
+ t.section = 556;
+ t.currency = 556;
+ t.quotesingle = 238;
+ t.quotedblleft = 500;
+ t.guillemotleft = 556;
+ t.guilsinglleft = 333;
+ t.guilsinglright = 333;
+ t.fi = 611;
+ t.fl = 611;
+ t.endash = 556;
+ t.dagger = 556;
+ t.daggerdbl = 556;
+ t.periodcentered = 278;
+ t.paragraph = 556;
+ t.bullet = 350;
+ t.quotesinglbase = 278;
+ t.quotedblbase = 500;
+ t.quotedblright = 500;
+ t.guillemotright = 556;
+ t.ellipsis = 1000;
+ t.perthousand = 1000;
+ t.questiondown = 611;
+ t.grave = 333;
+ t.acute = 333;
+ t.circumflex = 333;
+ t.tilde = 333;
+ t.macron = 333;
+ t.breve = 333;
+ t.dotaccent = 333;
+ t.dieresis = 333;
+ t.ring = 333;
+ t.cedilla = 333;
+ t.hungarumlaut = 333;
+ t.ogonek = 333;
+ t.caron = 333;
+ t.emdash = 1000;
+ t.AE = 1000;
+ t.ordfeminine = 370;
+ t.Lslash = 611;
+ t.Oslash = 778;
+ t.OE = 1000;
+ t.ordmasculine = 365;
+ t.ae = 889;
+ t.dotlessi = 278;
+ t.lslash = 278;
+ t.oslash = 611;
+ t.oe = 944;
+ t.germandbls = 611;
+ t.Idieresis = 278;
+ t.eacute = 556;
+ t.abreve = 556;
+ t.uhungarumlaut = 611;
+ t.ecaron = 556;
+ t.Ydieresis = 667;
+ t.divide = 584;
+ t.Yacute = 667;
+ t.Acircumflex = 722;
+ t.aacute = 556;
+ t.Ucircumflex = 722;
+ t.yacute = 556;
+ t.scommaaccent = 556;
+ t.ecircumflex = 556;
+ t.Uring = 722;
+ t.Udieresis = 722;
+ t.aogonek = 556;
+ t.Uacute = 722;
+ t.uogonek = 611;
+ t.Edieresis = 667;
+ t.Dcroat = 722;
+ t.commaaccent = 250;
+ t.copyright = 737;
+ t.Emacron = 667;
+ t.ccaron = 556;
+ t.aring = 556;
+ t.Ncommaaccent = 722;
+ t.lacute = 278;
+ t.agrave = 556;
+ t.Tcommaaccent = 611;
+ t.Cacute = 722;
+ t.atilde = 556;
+ t.Edotaccent = 667;
+ t.scaron = 556;
+ t.scedilla = 556;
+ t.iacute = 278;
+ t.lozenge = 494;
+ t.Rcaron = 722;
+ t.Gcommaaccent = 778;
+ t.ucircumflex = 611;
+ t.acircumflex = 556;
+ t.Amacron = 722;
+ t.rcaron = 389;
+ t.ccedilla = 556;
+ t.Zdotaccent = 611;
+ t.Thorn = 667;
+ t.Omacron = 778;
+ t.Racute = 722;
+ t.Sacute = 667;
+ t.dcaron = 743;
+ t.Umacron = 722;
+ t.uring = 611;
+ t.threesuperior = 333;
+ t.Ograve = 778;
+ t.Agrave = 722;
+ t.Abreve = 722;
+ t.multiply = 584;
+ t.uacute = 611;
+ t.Tcaron = 611;
+ t.partialdiff = 494;
+ t.ydieresis = 556;
+ t.Nacute = 722;
+ t.icircumflex = 278;
+ t.Ecircumflex = 667;
+ t.adieresis = 556;
+ t.edieresis = 556;
+ t.cacute = 556;
+ t.nacute = 611;
+ t.umacron = 611;
+ t.Ncaron = 722;
+ t.Iacute = 278;
+ t.plusminus = 584;
+ t.brokenbar = 280;
+ t.registered = 737;
+ t.Gbreve = 778;
+ t.Idotaccent = 278;
+ t.summation = 600;
+ t.Egrave = 667;
+ t.racute = 389;
+ t.omacron = 611;
+ t.Zacute = 611;
+ t.Zcaron = 611;
+ t.greaterequal = 549;
+ t.Eth = 722;
+ t.Ccedilla = 722;
+ t.lcommaaccent = 278;
+ t.tcaron = 389;
+ t.eogonek = 556;
+ t.Uogonek = 722;
+ t.Aacute = 722;
+ t.Adieresis = 722;
+ t.egrave = 556;
+ t.zacute = 500;
+ t.iogonek = 278;
+ t.Oacute = 778;
+ t.oacute = 611;
+ t.amacron = 556;
+ t.sacute = 556;
+ t.idieresis = 278;
+ t.Ocircumflex = 778;
+ t.Ugrave = 722;
+ t.Delta = 612;
+ t.thorn = 611;
+ t.twosuperior = 333;
+ t.Odieresis = 778;
+ t.mu = 611;
+ t.igrave = 278;
+ t.ohungarumlaut = 611;
+ t.Eogonek = 667;
+ t.dcroat = 611;
+ t.threequarters = 834;
+ t.Scedilla = 667;
+ t.lcaron = 400;
+ t.Kcommaaccent = 722;
+ t.Lacute = 611;
+ t.trademark = 1000;
+ t.edotaccent = 556;
+ t.Igrave = 278;
+ t.Imacron = 278;
+ t.Lcaron = 611;
+ t.onehalf = 834;
+ t.lessequal = 549;
+ t.ocircumflex = 611;
+ t.ntilde = 611;
+ t.Uhungarumlaut = 722;
+ t.Eacute = 667;
+ t.emacron = 556;
+ t.gbreve = 611;
+ t.onequarter = 834;
+ t.Scaron = 667;
+ t.Scommaaccent = 667;
+ t.Ohungarumlaut = 778;
+ t.degree = 400;
+ t.ograve = 611;
+ t.Ccaron = 722;
+ t.ugrave = 611;
+ t.radical = 549;
+ t.Dcaron = 722;
+ t.rcommaaccent = 389;
+ t.Ntilde = 722;
+ t.otilde = 611;
+ t.Rcommaaccent = 722;
+ t.Lcommaaccent = 611;
+ t.Atilde = 722;
+ t.Aogonek = 722;
+ t.Aring = 722;
+ t.Otilde = 778;
+ t.zdotaccent = 500;
+ t.Ecaron = 667;
+ t.Iogonek = 278;
+ t.kcommaaccent = 556;
+ t.minus = 584;
+ t.Icircumflex = 278;
+ t.ncaron = 611;
+ t.tcommaaccent = 333;
+ t.logicalnot = 584;
+ t.odieresis = 611;
+ t.udieresis = 611;
+ t.notequal = 549;
+ t.gcommaaccent = 611;
+ t.eth = 611;
+ t.zcaron = 500;
+ t.ncommaaccent = 611;
+ t.onesuperior = 333;
+ t.imacron = 278;
+ t.Euro = 556;
+ });
+ t["Helvetica-BoldOblique"] = (0, _core_utils.getLookupTableFactory)(function (t) {
+ t.space = 278;
+ t.exclam = 333;
+ t.quotedbl = 474;
+ t.numbersign = 556;
+ t.dollar = 556;
+ t.percent = 889;
+ t.ampersand = 722;
+ t.quoteright = 278;
+ t.parenleft = 333;
+ t.parenright = 333;
+ t.asterisk = 389;
+ t.plus = 584;
+ t.comma = 278;
+ t.hyphen = 333;
+ t.period = 278;
+ t.slash = 278;
+ t.zero = 556;
+ t.one = 556;
+ t.two = 556;
+ t.three = 556;
+ t.four = 556;
+ t.five = 556;
+ t.six = 556;
+ t.seven = 556;
+ t.eight = 556;
+ t.nine = 556;
+ t.colon = 333;
+ t.semicolon = 333;
+ t.less = 584;
+ t.equal = 584;
+ t.greater = 584;
+ t.question = 611;
+ t.at = 975;
+ t.A = 722;
+ t.B = 722;
+ t.C = 722;
+ t.D = 722;
+ t.E = 667;
+ t.F = 611;
+ t.G = 778;
+ t.H = 722;
+ t.I = 278;
+ t.J = 556;
+ t.K = 722;
+ t.L = 611;
+ t.M = 833;
+ t.N = 722;
+ t.O = 778;
+ t.P = 667;
+ t.Q = 778;
+ t.R = 722;
+ t.S = 667;
+ t.T = 611;
+ t.U = 722;
+ t.V = 667;
+ t.W = 944;
+ t.X = 667;
+ t.Y = 667;
+ t.Z = 611;
+ t.bracketleft = 333;
+ t.backslash = 278;
+ t.bracketright = 333;
+ t.asciicircum = 584;
+ t.underscore = 556;
+ t.quoteleft = 278;
+ t.a = 556;
+ t.b = 611;
+ t.c = 556;
+ t.d = 611;
+ t.e = 556;
+ t.f = 333;
+ t.g = 611;
+ t.h = 611;
+ t.i = 278;
+ t.j = 278;
+ t.k = 556;
+ t.l = 278;
+ t.m = 889;
+ t.n = 611;
+ t.o = 611;
+ t.p = 611;
+ t.q = 611;
+ t.r = 389;
+ t.s = 556;
+ t.t = 333;
+ t.u = 611;
+ t.v = 556;
+ t.w = 778;
+ t.x = 556;
+ t.y = 556;
+ t.z = 500;
+ t.braceleft = 389;
+ t.bar = 280;
+ t.braceright = 389;
+ t.asciitilde = 584;
+ t.exclamdown = 333;
+ t.cent = 556;
+ t.sterling = 556;
+ t.fraction = 167;
+ t.yen = 556;
+ t.florin = 556;
+ t.section = 556;
+ t.currency = 556;
+ t.quotesingle = 238;
+ t.quotedblleft = 500;
+ t.guillemotleft = 556;
+ t.guilsinglleft = 333;
+ t.guilsinglright = 333;
+ t.fi = 611;
+ t.fl = 611;
+ t.endash = 556;
+ t.dagger = 556;
+ t.daggerdbl = 556;
+ t.periodcentered = 278;
+ t.paragraph = 556;
+ t.bullet = 350;
+ t.quotesinglbase = 278;
+ t.quotedblbase = 500;
+ t.quotedblright = 500;
+ t.guillemotright = 556;
+ t.ellipsis = 1000;
+ t.perthousand = 1000;
+ t.questiondown = 611;
+ t.grave = 333;
+ t.acute = 333;
+ t.circumflex = 333;
+ t.tilde = 333;
+ t.macron = 333;
+ t.breve = 333;
+ t.dotaccent = 333;
+ t.dieresis = 333;
+ t.ring = 333;
+ t.cedilla = 333;
+ t.hungarumlaut = 333;
+ t.ogonek = 333;
+ t.caron = 333;
+ t.emdash = 1000;
+ t.AE = 1000;
+ t.ordfeminine = 370;
+ t.Lslash = 611;
+ t.Oslash = 778;
+ t.OE = 1000;
+ t.ordmasculine = 365;
+ t.ae = 889;
+ t.dotlessi = 278;
+ t.lslash = 278;
+ t.oslash = 611;
+ t.oe = 944;
+ t.germandbls = 611;
+ t.Idieresis = 278;
+ t.eacute = 556;
+ t.abreve = 556;
+ t.uhungarumlaut = 611;
+ t.ecaron = 556;
+ t.Ydieresis = 667;
+ t.divide = 584;
+ t.Yacute = 667;
+ t.Acircumflex = 722;
+ t.aacute = 556;
+ t.Ucircumflex = 722;
+ t.yacute = 556;
+ t.scommaaccent = 556;
+ t.ecircumflex = 556;
+ t.Uring = 722;
+ t.Udieresis = 722;
+ t.aogonek = 556;
+ t.Uacute = 722;
+ t.uogonek = 611;
+ t.Edieresis = 667;
+ t.Dcroat = 722;
+ t.commaaccent = 250;
+ t.copyright = 737;
+ t.Emacron = 667;
+ t.ccaron = 556;
+ t.aring = 556;
+ t.Ncommaaccent = 722;
+ t.lacute = 278;
+ t.agrave = 556;
+ t.Tcommaaccent = 611;
+ t.Cacute = 722;
+ t.atilde = 556;
+ t.Edotaccent = 667;
+ t.scaron = 556;
+ t.scedilla = 556;
+ t.iacute = 278;
+ t.lozenge = 494;
+ t.Rcaron = 722;
+ t.Gcommaaccent = 778;
+ t.ucircumflex = 611;
+ t.acircumflex = 556;
+ t.Amacron = 722;
+ t.rcaron = 389;
+ t.ccedilla = 556;
+ t.Zdotaccent = 611;
+ t.Thorn = 667;
+ t.Omacron = 778;
+ t.Racute = 722;
+ t.Sacute = 667;
+ t.dcaron = 743;
+ t.Umacron = 722;
+ t.uring = 611;
+ t.threesuperior = 333;
+ t.Ograve = 778;
+ t.Agrave = 722;
+ t.Abreve = 722;
+ t.multiply = 584;
+ t.uacute = 611;
+ t.Tcaron = 611;
+ t.partialdiff = 494;
+ t.ydieresis = 556;
+ t.Nacute = 722;
+ t.icircumflex = 278;
+ t.Ecircumflex = 667;
+ t.adieresis = 556;
+ t.edieresis = 556;
+ t.cacute = 556;
+ t.nacute = 611;
+ t.umacron = 611;
+ t.Ncaron = 722;
+ t.Iacute = 278;
+ t.plusminus = 584;
+ t.brokenbar = 280;
+ t.registered = 737;
+ t.Gbreve = 778;
+ t.Idotaccent = 278;
+ t.summation = 600;
+ t.Egrave = 667;
+ t.racute = 389;
+ t.omacron = 611;
+ t.Zacute = 611;
+ t.Zcaron = 611;
+ t.greaterequal = 549;
+ t.Eth = 722;
+ t.Ccedilla = 722;
+ t.lcommaaccent = 278;
+ t.tcaron = 389;
+ t.eogonek = 556;
+ t.Uogonek = 722;
+ t.Aacute = 722;
+ t.Adieresis = 722;
+ t.egrave = 556;
+ t.zacute = 500;
+ t.iogonek = 278;
+ t.Oacute = 778;
+ t.oacute = 611;
+ t.amacron = 556;
+ t.sacute = 556;
+ t.idieresis = 278;
+ t.Ocircumflex = 778;
+ t.Ugrave = 722;
+ t.Delta = 612;
+ t.thorn = 611;
+ t.twosuperior = 333;
+ t.Odieresis = 778;
+ t.mu = 611;
+ t.igrave = 278;
+ t.ohungarumlaut = 611;
+ t.Eogonek = 667;
+ t.dcroat = 611;
+ t.threequarters = 834;
+ t.Scedilla = 667;
+ t.lcaron = 400;
+ t.Kcommaaccent = 722;
+ t.Lacute = 611;
+ t.trademark = 1000;
+ t.edotaccent = 556;
+ t.Igrave = 278;
+ t.Imacron = 278;
+ t.Lcaron = 611;
+ t.onehalf = 834;
+ t.lessequal = 549;
+ t.ocircumflex = 611;
+ t.ntilde = 611;
+ t.Uhungarumlaut = 722;
+ t.Eacute = 667;
+ t.emacron = 556;
+ t.gbreve = 611;
+ t.onequarter = 834;
+ t.Scaron = 667;
+ t.Scommaaccent = 667;
+ t.Ohungarumlaut = 778;
+ t.degree = 400;
+ t.ograve = 611;
+ t.Ccaron = 722;
+ t.ugrave = 611;
+ t.radical = 549;
+ t.Dcaron = 722;
+ t.rcommaaccent = 389;
+ t.Ntilde = 722;
+ t.otilde = 611;
+ t.Rcommaaccent = 722;
+ t.Lcommaaccent = 611;
+ t.Atilde = 722;
+ t.Aogonek = 722;
+ t.Aring = 722;
+ t.Otilde = 778;
+ t.zdotaccent = 500;
+ t.Ecaron = 667;
+ t.Iogonek = 278;
+ t.kcommaaccent = 556;
+ t.minus = 584;
+ t.Icircumflex = 278;
+ t.ncaron = 611;
+ t.tcommaaccent = 333;
+ t.logicalnot = 584;
+ t.odieresis = 611;
+ t.udieresis = 611;
+ t.notequal = 549;
+ t.gcommaaccent = 611;
+ t.eth = 611;
+ t.zcaron = 500;
+ t.ncommaaccent = 611;
+ t.onesuperior = 333;
+ t.imacron = 278;
+ t.Euro = 556;
+ });
+ t["Helvetica-Oblique"] = (0, _core_utils.getLookupTableFactory)(function (t) {
+ t.space = 278;
+ t.exclam = 278;
+ t.quotedbl = 355;
+ t.numbersign = 556;
+ t.dollar = 556;
+ t.percent = 889;
+ t.ampersand = 667;
+ t.quoteright = 222;
+ t.parenleft = 333;
+ t.parenright = 333;
+ t.asterisk = 389;
+ t.plus = 584;
+ t.comma = 278;
+ t.hyphen = 333;
+ t.period = 278;
+ t.slash = 278;
+ t.zero = 556;
+ t.one = 556;
+ t.two = 556;
+ t.three = 556;
+ t.four = 556;
+ t.five = 556;
+ t.six = 556;
+ t.seven = 556;
+ t.eight = 556;
+ t.nine = 556;
+ t.colon = 278;
+ t.semicolon = 278;
+ t.less = 584;
+ t.equal = 584;
+ t.greater = 584;
+ t.question = 556;
+ t.at = 1015;
+ t.A = 667;
+ t.B = 667;
+ t.C = 722;
+ t.D = 722;
+ t.E = 667;
+ t.F = 611;
+ t.G = 778;
+ t.H = 722;
+ t.I = 278;
+ t.J = 500;
+ t.K = 667;
+ t.L = 556;
+ t.M = 833;
+ t.N = 722;
+ t.O = 778;
+ t.P = 667;
+ t.Q = 778;
+ t.R = 722;
+ t.S = 667;
+ t.T = 611;
+ t.U = 722;
+ t.V = 667;
+ t.W = 944;
+ t.X = 667;
+ t.Y = 667;
+ t.Z = 611;
+ t.bracketleft = 278;
+ t.backslash = 278;
+ t.bracketright = 278;
+ t.asciicircum = 469;
+ t.underscore = 556;
+ t.quoteleft = 222;
+ t.a = 556;
+ t.b = 556;
+ t.c = 500;
+ t.d = 556;
+ t.e = 556;
+ t.f = 278;
+ t.g = 556;
+ t.h = 556;
+ t.i = 222;
+ t.j = 222;
+ t.k = 500;
+ t.l = 222;
+ t.m = 833;
+ t.n = 556;
+ t.o = 556;
+ t.p = 556;
+ t.q = 556;
+ t.r = 333;
+ t.s = 500;
+ t.t = 278;
+ t.u = 556;
+ t.v = 500;
+ t.w = 722;
+ t.x = 500;
+ t.y = 500;
+ t.z = 500;
+ t.braceleft = 334;
+ t.bar = 260;
+ t.braceright = 334;
+ t.asciitilde = 584;
+ t.exclamdown = 333;
+ t.cent = 556;
+ t.sterling = 556;
+ t.fraction = 167;
+ t.yen = 556;
+ t.florin = 556;
+ t.section = 556;
+ t.currency = 556;
+ t.quotesingle = 191;
+ t.quotedblleft = 333;
+ t.guillemotleft = 556;
+ t.guilsinglleft = 333;
+ t.guilsinglright = 333;
+ t.fi = 500;
+ t.fl = 500;
+ t.endash = 556;
+ t.dagger = 556;
+ t.daggerdbl = 556;
+ t.periodcentered = 278;
+ t.paragraph = 537;
+ t.bullet = 350;
+ t.quotesinglbase = 222;
+ t.quotedblbase = 333;
+ t.quotedblright = 333;
+ t.guillemotright = 556;
+ t.ellipsis = 1000;
+ t.perthousand = 1000;
+ t.questiondown = 611;
+ t.grave = 333;
+ t.acute = 333;
+ t.circumflex = 333;
+ t.tilde = 333;
+ t.macron = 333;
+ t.breve = 333;
+ t.dotaccent = 333;
+ t.dieresis = 333;
+ t.ring = 333;
+ t.cedilla = 333;
+ t.hungarumlaut = 333;
+ t.ogonek = 333;
+ t.caron = 333;
+ t.emdash = 1000;
+ t.AE = 1000;
+ t.ordfeminine = 370;
+ t.Lslash = 556;
+ t.Oslash = 778;
+ t.OE = 1000;
+ t.ordmasculine = 365;
+ t.ae = 889;
+ t.dotlessi = 278;
+ t.lslash = 222;
+ t.oslash = 611;
+ t.oe = 944;
+ t.germandbls = 611;
+ t.Idieresis = 278;
+ t.eacute = 556;
+ t.abreve = 556;
+ t.uhungarumlaut = 556;
+ t.ecaron = 556;
+ t.Ydieresis = 667;
+ t.divide = 584;
+ t.Yacute = 667;
+ t.Acircumflex = 667;
+ t.aacute = 556;
+ t.Ucircumflex = 722;
+ t.yacute = 500;
+ t.scommaaccent = 500;
+ t.ecircumflex = 556;
+ t.Uring = 722;
+ t.Udieresis = 722;
+ t.aogonek = 556;
+ t.Uacute = 722;
+ t.uogonek = 556;
+ t.Edieresis = 667;
+ t.Dcroat = 722;
+ t.commaaccent = 250;
+ t.copyright = 737;
+ t.Emacron = 667;
+ t.ccaron = 500;
+ t.aring = 556;
+ t.Ncommaaccent = 722;
+ t.lacute = 222;
+ t.agrave = 556;
+ t.Tcommaaccent = 611;
+ t.Cacute = 722;
+ t.atilde = 556;
+ t.Edotaccent = 667;
+ t.scaron = 500;
+ t.scedilla = 500;
+ t.iacute = 278;
+ t.lozenge = 471;
+ t.Rcaron = 722;
+ t.Gcommaaccent = 778;
+ t.ucircumflex = 556;
+ t.acircumflex = 556;
+ t.Amacron = 667;
+ t.rcaron = 333;
+ t.ccedilla = 500;
+ t.Zdotaccent = 611;
+ t.Thorn = 667;
+ t.Omacron = 778;
+ t.Racute = 722;
+ t.Sacute = 667;
+ t.dcaron = 643;
+ t.Umacron = 722;
+ t.uring = 556;
+ t.threesuperior = 333;
+ t.Ograve = 778;
+ t.Agrave = 667;
+ t.Abreve = 667;
+ t.multiply = 584;
+ t.uacute = 556;
+ t.Tcaron = 611;
+ t.partialdiff = 476;
+ t.ydieresis = 500;
+ t.Nacute = 722;
+ t.icircumflex = 278;
+ t.Ecircumflex = 667;
+ t.adieresis = 556;
+ t.edieresis = 556;
+ t.cacute = 500;
+ t.nacute = 556;
+ t.umacron = 556;
+ t.Ncaron = 722;
+ t.Iacute = 278;
+ t.plusminus = 584;
+ t.brokenbar = 260;
+ t.registered = 737;
+ t.Gbreve = 778;
+ t.Idotaccent = 278;
+ t.summation = 600;
+ t.Egrave = 667;
+ t.racute = 333;
+ t.omacron = 556;
+ t.Zacute = 611;
+ t.Zcaron = 611;
+ t.greaterequal = 549;
+ t.Eth = 722;
+ t.Ccedilla = 722;
+ t.lcommaaccent = 222;
+ t.tcaron = 317;
+ t.eogonek = 556;
+ t.Uogonek = 722;
+ t.Aacute = 667;
+ t.Adieresis = 667;
+ t.egrave = 556;
+ t.zacute = 500;
+ t.iogonek = 222;
+ t.Oacute = 778;
+ t.oacute = 556;
+ t.amacron = 556;
+ t.sacute = 500;
+ t.idieresis = 278;
+ t.Ocircumflex = 778;
+ t.Ugrave = 722;
+ t.Delta = 612;
+ t.thorn = 556;
+ t.twosuperior = 333;
+ t.Odieresis = 778;
+ t.mu = 556;
+ t.igrave = 278;
+ t.ohungarumlaut = 556;
+ t.Eogonek = 667;
+ t.dcroat = 556;
+ t.threequarters = 834;
+ t.Scedilla = 667;
+ t.lcaron = 299;
+ t.Kcommaaccent = 667;
+ t.Lacute = 556;
+ t.trademark = 1000;
+ t.edotaccent = 556;
+ t.Igrave = 278;
+ t.Imacron = 278;
+ t.Lcaron = 556;
+ t.onehalf = 834;
+ t.lessequal = 549;
+ t.ocircumflex = 556;
+ t.ntilde = 556;
+ t.Uhungarumlaut = 722;
+ t.Eacute = 667;
+ t.emacron = 556;
+ t.gbreve = 556;
+ t.onequarter = 834;
+ t.Scaron = 667;
+ t.Scommaaccent = 667;
+ t.Ohungarumlaut = 778;
+ t.degree = 400;
+ t.ograve = 556;
+ t.Ccaron = 722;
+ t.ugrave = 556;
+ t.radical = 453;
+ t.Dcaron = 722;
+ t.rcommaaccent = 333;
+ t.Ntilde = 722;
+ t.otilde = 556;
+ t.Rcommaaccent = 722;
+ t.Lcommaaccent = 556;
+ t.Atilde = 667;
+ t.Aogonek = 667;
+ t.Aring = 667;
+ t.Otilde = 778;
+ t.zdotaccent = 500;
+ t.Ecaron = 667;
+ t.Iogonek = 278;
+ t.kcommaaccent = 500;
+ t.minus = 584;
+ t.Icircumflex = 278;
+ t.ncaron = 556;
+ t.tcommaaccent = 278;
+ t.logicalnot = 584;
+ t.odieresis = 556;
+ t.udieresis = 556;
+ t.notequal = 549;
+ t.gcommaaccent = 556;
+ t.eth = 556;
+ t.zcaron = 500;
+ t.ncommaaccent = 556;
+ t.onesuperior = 333;
+ t.imacron = 278;
+ t.Euro = 556;
+ });
+ t.Symbol = (0, _core_utils.getLookupTableFactory)(function (t) {
+ t.space = 250;
+ t.exclam = 333;
+ t.universal = 713;
+ t.numbersign = 500;
+ t.existential = 549;
+ t.percent = 833;
+ t.ampersand = 778;
+ t.suchthat = 439;
+ t.parenleft = 333;
+ t.parenright = 333;
+ t.asteriskmath = 500;
+ t.plus = 549;
+ t.comma = 250;
+ t.minus = 549;
+ t.period = 250;
+ t.slash = 278;
+ t.zero = 500;
+ t.one = 500;
+ t.two = 500;
+ t.three = 500;
+ t.four = 500;
+ t.five = 500;
+ t.six = 500;
+ t.seven = 500;
+ t.eight = 500;
+ t.nine = 500;
+ t.colon = 278;
+ t.semicolon = 278;
+ t.less = 549;
+ t.equal = 549;
+ t.greater = 549;
+ t.question = 444;
+ t.congruent = 549;
+ t.Alpha = 722;
+ t.Beta = 667;
+ t.Chi = 722;
+ t.Delta = 612;
+ t.Epsilon = 611;
+ t.Phi = 763;
+ t.Gamma = 603;
+ t.Eta = 722;
+ t.Iota = 333;
+ t.theta1 = 631;
+ t.Kappa = 722;
+ t.Lambda = 686;
+ t.Mu = 889;
+ t.Nu = 722;
+ t.Omicron = 722;
+ t.Pi = 768;
+ t.Theta = 741;
+ t.Rho = 556;
+ t.Sigma = 592;
+ t.Tau = 611;
+ t.Upsilon = 690;
+ t.sigma1 = 439;
+ t.Omega = 768;
+ t.Xi = 645;
+ t.Psi = 795;
+ t.Zeta = 611;
+ t.bracketleft = 333;
+ t.therefore = 863;
+ t.bracketright = 333;
+ t.perpendicular = 658;
+ t.underscore = 500;
+ t.radicalex = 500;
+ t.alpha = 631;
+ t.beta = 549;
+ t.chi = 549;
+ t.delta = 494;
+ t.epsilon = 439;
+ t.phi = 521;
+ t.gamma = 411;
+ t.eta = 603;
+ t.iota = 329;
+ t.phi1 = 603;
+ t.kappa = 549;
+ t.lambda = 549;
+ t.mu = 576;
+ t.nu = 521;
+ t.omicron = 549;
+ t.pi = 549;
+ t.theta = 521;
+ t.rho = 549;
+ t.sigma = 603;
+ t.tau = 439;
+ t.upsilon = 576;
+ t.omega1 = 713;
+ t.omega = 686;
+ t.xi = 493;
+ t.psi = 686;
+ t.zeta = 494;
+ t.braceleft = 480;
+ t.bar = 200;
+ t.braceright = 480;
+ t.similar = 549;
+ t.Euro = 750;
+ t.Upsilon1 = 620;
+ t.minute = 247;
+ t.lessequal = 549;
+ t.fraction = 167;
+ t.infinity = 713;
+ t.florin = 500;
+ t.club = 753;
+ t.diamond = 753;
+ t.heart = 753;
+ t.spade = 753;
+ t.arrowboth = 1042;
+ t.arrowleft = 987;
+ t.arrowup = 603;
+ t.arrowright = 987;
+ t.arrowdown = 603;
+ t.degree = 400;
+ t.plusminus = 549;
+ t.second = 411;
+ t.greaterequal = 549;
+ t.multiply = 549;
+ t.proportional = 713;
+ t.partialdiff = 494;
+ t.bullet = 460;
+ t.divide = 549;
+ t.notequal = 549;
+ t.equivalence = 549;
+ t.approxequal = 549;
+ t.ellipsis = 1000;
+ t.arrowvertex = 603;
+ t.arrowhorizex = 1000;
+ t.carriagereturn = 658;
+ t.aleph = 823;
+ t.Ifraktur = 686;
+ t.Rfraktur = 795;
+ t.weierstrass = 987;
+ t.circlemultiply = 768;
+ t.circleplus = 768;
+ t.emptyset = 823;
+ t.intersection = 768;
+ t.union = 768;
+ t.propersuperset = 713;
+ t.reflexsuperset = 713;
+ t.notsubset = 713;
+ t.propersubset = 713;
+ t.reflexsubset = 713;
+ t.element = 713;
+ t.notelement = 713;
+ t.angle = 768;
+ t.gradient = 713;
+ t.registerserif = 790;
+ t.copyrightserif = 790;
+ t.trademarkserif = 890;
+ t.product = 823;
+ t.radical = 549;
+ t.dotmath = 250;
+ t.logicalnot = 713;
+ t.logicaland = 603;
+ t.logicalor = 603;
+ t.arrowdblboth = 1042;
+ t.arrowdblleft = 987;
+ t.arrowdblup = 603;
+ t.arrowdblright = 987;
+ t.arrowdbldown = 603;
+ t.lozenge = 494;
+ t.angleleft = 329;
+ t.registersans = 790;
+ t.copyrightsans = 790;
+ t.trademarksans = 786;
+ t.summation = 713;
+ t.parenlefttp = 384;
+ t.parenleftex = 384;
+ t.parenleftbt = 384;
+ t.bracketlefttp = 384;
+ t.bracketleftex = 384;
+ t.bracketleftbt = 384;
+ t.bracelefttp = 494;
+ t.braceleftmid = 494;
+ t.braceleftbt = 494;
+ t.braceex = 494;
+ t.angleright = 329;
+ t.integral = 274;
+ t.integraltp = 686;
+ t.integralex = 686;
+ t.integralbt = 686;
+ t.parenrighttp = 384;
+ t.parenrightex = 384;
+ t.parenrightbt = 384;
+ t.bracketrighttp = 384;
+ t.bracketrightex = 384;
+ t.bracketrightbt = 384;
+ t.bracerighttp = 494;
+ t.bracerightmid = 494;
+ t.bracerightbt = 494;
+ t.apple = 790;
+ });
+ t["Times-Roman"] = (0, _core_utils.getLookupTableFactory)(function (t) {
+ t.space = 250;
+ t.exclam = 333;
+ t.quotedbl = 408;
+ t.numbersign = 500;
+ t.dollar = 500;
+ t.percent = 833;
+ t.ampersand = 778;
+ t.quoteright = 333;
+ t.parenleft = 333;
+ t.parenright = 333;
+ t.asterisk = 500;
+ t.plus = 564;
+ t.comma = 250;
+ t.hyphen = 333;
+ t.period = 250;
+ t.slash = 278;
+ t.zero = 500;
+ t.one = 500;
+ t.two = 500;
+ t.three = 500;
+ t.four = 500;
+ t.five = 500;
+ t.six = 500;
+ t.seven = 500;
+ t.eight = 500;
+ t.nine = 500;
+ t.colon = 278;
+ t.semicolon = 278;
+ t.less = 564;
+ t.equal = 564;
+ t.greater = 564;
+ t.question = 444;
+ t.at = 921;
+ t.A = 722;
+ t.B = 667;
+ t.C = 667;
+ t.D = 722;
+ t.E = 611;
+ t.F = 556;
+ t.G = 722;
+ t.H = 722;
+ t.I = 333;
+ t.J = 389;
+ t.K = 722;
+ t.L = 611;
+ t.M = 889;
+ t.N = 722;
+ t.O = 722;
+ t.P = 556;
+ t.Q = 722;
+ t.R = 667;
+ t.S = 556;
+ t.T = 611;
+ t.U = 722;
+ t.V = 722;
+ t.W = 944;
+ t.X = 722;
+ t.Y = 722;
+ t.Z = 611;
+ t.bracketleft = 333;
+ t.backslash = 278;
+ t.bracketright = 333;
+ t.asciicircum = 469;
+ t.underscore = 500;
+ t.quoteleft = 333;
+ t.a = 444;
+ t.b = 500;
+ t.c = 444;
+ t.d = 500;
+ t.e = 444;
+ t.f = 333;
+ t.g = 500;
+ t.h = 500;
+ t.i = 278;
+ t.j = 278;
+ t.k = 500;
+ t.l = 278;
+ t.m = 778;
+ t.n = 500;
+ t.o = 500;
+ t.p = 500;
+ t.q = 500;
+ t.r = 333;
+ t.s = 389;
+ t.t = 278;
+ t.u = 500;
+ t.v = 500;
+ t.w = 722;
+ t.x = 500;
+ t.y = 500;
+ t.z = 444;
+ t.braceleft = 480;
+ t.bar = 200;
+ t.braceright = 480;
+ t.asciitilde = 541;
+ t.exclamdown = 333;
+ t.cent = 500;
+ t.sterling = 500;
+ t.fraction = 167;
+ t.yen = 500;
+ t.florin = 500;
+ t.section = 500;
+ t.currency = 500;
+ t.quotesingle = 180;
+ t.quotedblleft = 444;
+ t.guillemotleft = 500;
+ t.guilsinglleft = 333;
+ t.guilsinglright = 333;
+ t.fi = 556;
+ t.fl = 556;
+ t.endash = 500;
+ t.dagger = 500;
+ t.daggerdbl = 500;
+ t.periodcentered = 250;
+ t.paragraph = 453;
+ t.bullet = 350;
+ t.quotesinglbase = 333;
+ t.quotedblbase = 444;
+ t.quotedblright = 444;
+ t.guillemotright = 500;
+ t.ellipsis = 1000;
+ t.perthousand = 1000;
+ t.questiondown = 444;
+ t.grave = 333;
+ t.acute = 333;
+ t.circumflex = 333;
+ t.tilde = 333;
+ t.macron = 333;
+ t.breve = 333;
+ t.dotaccent = 333;
+ t.dieresis = 333;
+ t.ring = 333;
+ t.cedilla = 333;
+ t.hungarumlaut = 333;
+ t.ogonek = 333;
+ t.caron = 333;
+ t.emdash = 1000;
+ t.AE = 889;
+ t.ordfeminine = 276;
+ t.Lslash = 611;
+ t.Oslash = 722;
+ t.OE = 889;
+ t.ordmasculine = 310;
+ t.ae = 667;
+ t.dotlessi = 278;
+ t.lslash = 278;
+ t.oslash = 500;
+ t.oe = 722;
+ t.germandbls = 500;
+ t.Idieresis = 333;
+ t.eacute = 444;
+ t.abreve = 444;
+ t.uhungarumlaut = 500;
+ t.ecaron = 444;
+ t.Ydieresis = 722;
+ t.divide = 564;
+ t.Yacute = 722;
+ t.Acircumflex = 722;
+ t.aacute = 444;
+ t.Ucircumflex = 722;
+ t.yacute = 500;
+ t.scommaaccent = 389;
+ t.ecircumflex = 444;
+ t.Uring = 722;
+ t.Udieresis = 722;
+ t.aogonek = 444;
+ t.Uacute = 722;
+ t.uogonek = 500;
+ t.Edieresis = 611;
+ t.Dcroat = 722;
+ t.commaaccent = 250;
+ t.copyright = 760;
+ t.Emacron = 611;
+ t.ccaron = 444;
+ t.aring = 444;
+ t.Ncommaaccent = 722;
+ t.lacute = 278;
+ t.agrave = 444;
+ t.Tcommaaccent = 611;
+ t.Cacute = 667;
+ t.atilde = 444;
+ t.Edotaccent = 611;
+ t.scaron = 389;
+ t.scedilla = 389;
+ t.iacute = 278;
+ t.lozenge = 471;
+ t.Rcaron = 667;
+ t.Gcommaaccent = 722;
+ t.ucircumflex = 500;
+ t.acircumflex = 444;
+ t.Amacron = 722;
+ t.rcaron = 333;
+ t.ccedilla = 444;
+ t.Zdotaccent = 611;
+ t.Thorn = 556;
+ t.Omacron = 722;
+ t.Racute = 667;
+ t.Sacute = 556;
+ t.dcaron = 588;
+ t.Umacron = 722;
+ t.uring = 500;
+ t.threesuperior = 300;
+ t.Ograve = 722;
+ t.Agrave = 722;
+ t.Abreve = 722;
+ t.multiply = 564;
+ t.uacute = 500;
+ t.Tcaron = 611;
+ t.partialdiff = 476;
+ t.ydieresis = 500;
+ t.Nacute = 722;
+ t.icircumflex = 278;
+ t.Ecircumflex = 611;
+ t.adieresis = 444;
+ t.edieresis = 444;
+ t.cacute = 444;
+ t.nacute = 500;
+ t.umacron = 500;
+ t.Ncaron = 722;
+ t.Iacute = 333;
+ t.plusminus = 564;
+ t.brokenbar = 200;
+ t.registered = 760;
+ t.Gbreve = 722;
+ t.Idotaccent = 333;
+ t.summation = 600;
+ t.Egrave = 611;
+ t.racute = 333;
+ t.omacron = 500;
+ t.Zacute = 611;
+ t.Zcaron = 611;
+ t.greaterequal = 549;
+ t.Eth = 722;
+ t.Ccedilla = 667;
+ t.lcommaaccent = 278;
+ t.tcaron = 326;
+ t.eogonek = 444;
+ t.Uogonek = 722;
+ t.Aacute = 722;
+ t.Adieresis = 722;
+ t.egrave = 444;
+ t.zacute = 444;
+ t.iogonek = 278;
+ t.Oacute = 722;
+ t.oacute = 500;
+ t.amacron = 444;
+ t.sacute = 389;
+ t.idieresis = 278;
+ t.Ocircumflex = 722;
+ t.Ugrave = 722;
+ t.Delta = 612;
+ t.thorn = 500;
+ t.twosuperior = 300;
+ t.Odieresis = 722;
+ t.mu = 500;
+ t.igrave = 278;
+ t.ohungarumlaut = 500;
+ t.Eogonek = 611;
+ t.dcroat = 500;
+ t.threequarters = 750;
+ t.Scedilla = 556;
+ t.lcaron = 344;
+ t.Kcommaaccent = 722;
+ t.Lacute = 611;
+ t.trademark = 980;
+ t.edotaccent = 444;
+ t.Igrave = 333;
+ t.Imacron = 333;
+ t.Lcaron = 611;
+ t.onehalf = 750;
+ t.lessequal = 549;
+ t.ocircumflex = 500;
+ t.ntilde = 500;
+ t.Uhungarumlaut = 722;
+ t.Eacute = 611;
+ t.emacron = 444;
+ t.gbreve = 500;
+ t.onequarter = 750;
+ t.Scaron = 556;
+ t.Scommaaccent = 556;
+ t.Ohungarumlaut = 722;
+ t.degree = 400;
+ t.ograve = 500;
+ t.Ccaron = 667;
+ t.ugrave = 500;
+ t.radical = 453;
+ t.Dcaron = 722;
+ t.rcommaaccent = 333;
+ t.Ntilde = 722;
+ t.otilde = 500;
+ t.Rcommaaccent = 667;
+ t.Lcommaaccent = 611;
+ t.Atilde = 722;
+ t.Aogonek = 722;
+ t.Aring = 722;
+ t.Otilde = 722;
+ t.zdotaccent = 444;
+ t.Ecaron = 611;
+ t.Iogonek = 333;
+ t.kcommaaccent = 500;
+ t.minus = 564;
+ t.Icircumflex = 333;
+ t.ncaron = 500;
+ t.tcommaaccent = 278;
+ t.logicalnot = 564;
+ t.odieresis = 500;
+ t.udieresis = 500;
+ t.notequal = 549;
+ t.gcommaaccent = 500;
+ t.eth = 500;
+ t.zcaron = 444;
+ t.ncommaaccent = 500;
+ t.onesuperior = 300;
+ t.imacron = 278;
+ t.Euro = 500;
+ });
+ t["Times-Bold"] = (0, _core_utils.getLookupTableFactory)(function (t) {
+ t.space = 250;
+ t.exclam = 333;
+ t.quotedbl = 555;
+ t.numbersign = 500;
+ t.dollar = 500;
+ t.percent = 1000;
+ t.ampersand = 833;
+ t.quoteright = 333;
+ t.parenleft = 333;
+ t.parenright = 333;
+ t.asterisk = 500;
+ t.plus = 570;
+ t.comma = 250;
+ t.hyphen = 333;
+ t.period = 250;
+ t.slash = 278;
+ t.zero = 500;
+ t.one = 500;
+ t.two = 500;
+ t.three = 500;
+ t.four = 500;
+ t.five = 500;
+ t.six = 500;
+ t.seven = 500;
+ t.eight = 500;
+ t.nine = 500;
+ t.colon = 333;
+ t.semicolon = 333;
+ t.less = 570;
+ t.equal = 570;
+ t.greater = 570;
+ t.question = 500;
+ t.at = 930;
+ t.A = 722;
+ t.B = 667;
+ t.C = 722;
+ t.D = 722;
+ t.E = 667;
+ t.F = 611;
+ t.G = 778;
+ t.H = 778;
+ t.I = 389;
+ t.J = 500;
+ t.K = 778;
+ t.L = 667;
+ t.M = 944;
+ t.N = 722;
+ t.O = 778;
+ t.P = 611;
+ t.Q = 778;
+ t.R = 722;
+ t.S = 556;
+ t.T = 667;
+ t.U = 722;
+ t.V = 722;
+ t.W = 1000;
+ t.X = 722;
+ t.Y = 722;
+ t.Z = 667;
+ t.bracketleft = 333;
+ t.backslash = 278;
+ t.bracketright = 333;
+ t.asciicircum = 581;
+ t.underscore = 500;
+ t.quoteleft = 333;
+ t.a = 500;
+ t.b = 556;
+ t.c = 444;
+ t.d = 556;
+ t.e = 444;
+ t.f = 333;
+ t.g = 500;
+ t.h = 556;
+ t.i = 278;
+ t.j = 333;
+ t.k = 556;
+ t.l = 278;
+ t.m = 833;
+ t.n = 556;
+ t.o = 500;
+ t.p = 556;
+ t.q = 556;
+ t.r = 444;
+ t.s = 389;
+ t.t = 333;
+ t.u = 556;
+ t.v = 500;
+ t.w = 722;
+ t.x = 500;
+ t.y = 500;
+ t.z = 444;
+ t.braceleft = 394;
+ t.bar = 220;
+ t.braceright = 394;
+ t.asciitilde = 520;
+ t.exclamdown = 333;
+ t.cent = 500;
+ t.sterling = 500;
+ t.fraction = 167;
+ t.yen = 500;
+ t.florin = 500;
+ t.section = 500;
+ t.currency = 500;
+ t.quotesingle = 278;
+ t.quotedblleft = 500;
+ t.guillemotleft = 500;
+ t.guilsinglleft = 333;
+ t.guilsinglright = 333;
+ t.fi = 556;
+ t.fl = 556;
+ t.endash = 500;
+ t.dagger = 500;
+ t.daggerdbl = 500;
+ t.periodcentered = 250;
+ t.paragraph = 540;
+ t.bullet = 350;
+ t.quotesinglbase = 333;
+ t.quotedblbase = 500;
+ t.quotedblright = 500;
+ t.guillemotright = 500;
+ t.ellipsis = 1000;
+ t.perthousand = 1000;
+ t.questiondown = 500;
+ t.grave = 333;
+ t.acute = 333;
+ t.circumflex = 333;
+ t.tilde = 333;
+ t.macron = 333;
+ t.breve = 333;
+ t.dotaccent = 333;
+ t.dieresis = 333;
+ t.ring = 333;
+ t.cedilla = 333;
+ t.hungarumlaut = 333;
+ t.ogonek = 333;
+ t.caron = 333;
+ t.emdash = 1000;
+ t.AE = 1000;
+ t.ordfeminine = 300;
+ t.Lslash = 667;
+ t.Oslash = 778;
+ t.OE = 1000;
+ t.ordmasculine = 330;
+ t.ae = 722;
+ t.dotlessi = 278;
+ t.lslash = 278;
+ t.oslash = 500;
+ t.oe = 722;
+ t.germandbls = 556;
+ t.Idieresis = 389;
+ t.eacute = 444;
+ t.abreve = 500;
+ t.uhungarumlaut = 556;
+ t.ecaron = 444;
+ t.Ydieresis = 722;
+ t.divide = 570;
+ t.Yacute = 722;
+ t.Acircumflex = 722;
+ t.aacute = 500;
+ t.Ucircumflex = 722;
+ t.yacute = 500;
+ t.scommaaccent = 389;
+ t.ecircumflex = 444;
+ t.Uring = 722;
+ t.Udieresis = 722;
+ t.aogonek = 500;
+ t.Uacute = 722;
+ t.uogonek = 556;
+ t.Edieresis = 667;
+ t.Dcroat = 722;
+ t.commaaccent = 250;
+ t.copyright = 747;
+ t.Emacron = 667;
+ t.ccaron = 444;
+ t.aring = 500;
+ t.Ncommaaccent = 722;
+ t.lacute = 278;
+ t.agrave = 500;
+ t.Tcommaaccent = 667;
+ t.Cacute = 722;
+ t.atilde = 500;
+ t.Edotaccent = 667;
+ t.scaron = 389;
+ t.scedilla = 389;
+ t.iacute = 278;
+ t.lozenge = 494;
+ t.Rcaron = 722;
+ t.Gcommaaccent = 778;
+ t.ucircumflex = 556;
+ t.acircumflex = 500;
+ t.Amacron = 722;
+ t.rcaron = 444;
+ t.ccedilla = 444;
+ t.Zdotaccent = 667;
+ t.Thorn = 611;
+ t.Omacron = 778;
+ t.Racute = 722;
+ t.Sacute = 556;
+ t.dcaron = 672;
+ t.Umacron = 722;
+ t.uring = 556;
+ t.threesuperior = 300;
+ t.Ograve = 778;
+ t.Agrave = 722;
+ t.Abreve = 722;
+ t.multiply = 570;
+ t.uacute = 556;
+ t.Tcaron = 667;
+ t.partialdiff = 494;
+ t.ydieresis = 500;
+ t.Nacute = 722;
+ t.icircumflex = 278;
+ t.Ecircumflex = 667;
+ t.adieresis = 500;
+ t.edieresis = 444;
+ t.cacute = 444;
+ t.nacute = 556;
+ t.umacron = 556;
+ t.Ncaron = 722;
+ t.Iacute = 389;
+ t.plusminus = 570;
+ t.brokenbar = 220;
+ t.registered = 747;
+ t.Gbreve = 778;
+ t.Idotaccent = 389;
+ t.summation = 600;
+ t.Egrave = 667;
+ t.racute = 444;
+ t.omacron = 500;
+ t.Zacute = 667;
+ t.Zcaron = 667;
+ t.greaterequal = 549;
+ t.Eth = 722;
+ t.Ccedilla = 722;
+ t.lcommaaccent = 278;
+ t.tcaron = 416;
+ t.eogonek = 444;
+ t.Uogonek = 722;
+ t.Aacute = 722;
+ t.Adieresis = 722;
+ t.egrave = 444;
+ t.zacute = 444;
+ t.iogonek = 278;
+ t.Oacute = 778;
+ t.oacute = 500;
+ t.amacron = 500;
+ t.sacute = 389;
+ t.idieresis = 278;
+ t.Ocircumflex = 778;
+ t.Ugrave = 722;
+ t.Delta = 612;
+ t.thorn = 556;
+ t.twosuperior = 300;
+ t.Odieresis = 778;
+ t.mu = 556;
+ t.igrave = 278;
+ t.ohungarumlaut = 500;
+ t.Eogonek = 667;
+ t.dcroat = 556;
+ t.threequarters = 750;
+ t.Scedilla = 556;
+ t.lcaron = 394;
+ t.Kcommaaccent = 778;
+ t.Lacute = 667;
+ t.trademark = 1000;
+ t.edotaccent = 444;
+ t.Igrave = 389;
+ t.Imacron = 389;
+ t.Lcaron = 667;
+ t.onehalf = 750;
+ t.lessequal = 549;
+ t.ocircumflex = 500;
+ t.ntilde = 556;
+ t.Uhungarumlaut = 722;
+ t.Eacute = 667;
+ t.emacron = 444;
+ t.gbreve = 500;
+ t.onequarter = 750;
+ t.Scaron = 556;
+ t.Scommaaccent = 556;
+ t.Ohungarumlaut = 778;
+ t.degree = 400;
+ t.ograve = 500;
+ t.Ccaron = 722;
+ t.ugrave = 556;
+ t.radical = 549;
+ t.Dcaron = 722;
+ t.rcommaaccent = 444;
+ t.Ntilde = 722;
+ t.otilde = 500;
+ t.Rcommaaccent = 722;
+ t.Lcommaaccent = 667;
+ t.Atilde = 722;
+ t.Aogonek = 722;
+ t.Aring = 722;
+ t.Otilde = 778;
+ t.zdotaccent = 444;
+ t.Ecaron = 667;
+ t.Iogonek = 389;
+ t.kcommaaccent = 556;
+ t.minus = 570;
+ t.Icircumflex = 389;
+ t.ncaron = 556;
+ t.tcommaaccent = 333;
+ t.logicalnot = 570;
+ t.odieresis = 500;
+ t.udieresis = 556;
+ t.notequal = 549;
+ t.gcommaaccent = 500;
+ t.eth = 500;
+ t.zcaron = 444;
+ t.ncommaaccent = 556;
+ t.onesuperior = 300;
+ t.imacron = 278;
+ t.Euro = 500;
+ });
+ t["Times-BoldItalic"] = (0, _core_utils.getLookupTableFactory)(function (t) {
+ t.space = 250;
+ t.exclam = 389;
+ t.quotedbl = 555;
+ t.numbersign = 500;
+ t.dollar = 500;
+ t.percent = 833;
+ t.ampersand = 778;
+ t.quoteright = 333;
+ t.parenleft = 333;
+ t.parenright = 333;
+ t.asterisk = 500;
+ t.plus = 570;
+ t.comma = 250;
+ t.hyphen = 333;
+ t.period = 250;
+ t.slash = 278;
+ t.zero = 500;
+ t.one = 500;
+ t.two = 500;
+ t.three = 500;
+ t.four = 500;
+ t.five = 500;
+ t.six = 500;
+ t.seven = 500;
+ t.eight = 500;
+ t.nine = 500;
+ t.colon = 333;
+ t.semicolon = 333;
+ t.less = 570;
+ t.equal = 570;
+ t.greater = 570;
+ t.question = 500;
+ t.at = 832;
+ t.A = 667;
+ t.B = 667;
+ t.C = 667;
+ t.D = 722;
+ t.E = 667;
+ t.F = 667;
+ t.G = 722;
+ t.H = 778;
+ t.I = 389;
+ t.J = 500;
+ t.K = 667;
+ t.L = 611;
+ t.M = 889;
+ t.N = 722;
+ t.O = 722;
+ t.P = 611;
+ t.Q = 722;
+ t.R = 667;
+ t.S = 556;
+ t.T = 611;
+ t.U = 722;
+ t.V = 667;
+ t.W = 889;
+ t.X = 667;
+ t.Y = 611;
+ t.Z = 611;
+ t.bracketleft = 333;
+ t.backslash = 278;
+ t.bracketright = 333;
+ t.asciicircum = 570;
+ t.underscore = 500;
+ t.quoteleft = 333;
+ t.a = 500;
+ t.b = 500;
+ t.c = 444;
+ t.d = 500;
+ t.e = 444;
+ t.f = 333;
+ t.g = 500;
+ t.h = 556;
+ t.i = 278;
+ t.j = 278;
+ t.k = 500;
+ t.l = 278;
+ t.m = 778;
+ t.n = 556;
+ t.o = 500;
+ t.p = 500;
+ t.q = 500;
+ t.r = 389;
+ t.s = 389;
+ t.t = 278;
+ t.u = 556;
+ t.v = 444;
+ t.w = 667;
+ t.x = 500;
+ t.y = 444;
+ t.z = 389;
+ t.braceleft = 348;
+ t.bar = 220;
+ t.braceright = 348;
+ t.asciitilde = 570;
+ t.exclamdown = 389;
+ t.cent = 500;
+ t.sterling = 500;
+ t.fraction = 167;
+ t.yen = 500;
+ t.florin = 500;
+ t.section = 500;
+ t.currency = 500;
+ t.quotesingle = 278;
+ t.quotedblleft = 500;
+ t.guillemotleft = 500;
+ t.guilsinglleft = 333;
+ t.guilsinglright = 333;
+ t.fi = 556;
+ t.fl = 556;
+ t.endash = 500;
+ t.dagger = 500;
+ t.daggerdbl = 500;
+ t.periodcentered = 250;
+ t.paragraph = 500;
+ t.bullet = 350;
+ t.quotesinglbase = 333;
+ t.quotedblbase = 500;
+ t.quotedblright = 500;
+ t.guillemotright = 500;
+ t.ellipsis = 1000;
+ t.perthousand = 1000;
+ t.questiondown = 500;
+ t.grave = 333;
+ t.acute = 333;
+ t.circumflex = 333;
+ t.tilde = 333;
+ t.macron = 333;
+ t.breve = 333;
+ t.dotaccent = 333;
+ t.dieresis = 333;
+ t.ring = 333;
+ t.cedilla = 333;
+ t.hungarumlaut = 333;
+ t.ogonek = 333;
+ t.caron = 333;
+ t.emdash = 1000;
+ t.AE = 944;
+ t.ordfeminine = 266;
+ t.Lslash = 611;
+ t.Oslash = 722;
+ t.OE = 944;
+ t.ordmasculine = 300;
+ t.ae = 722;
+ t.dotlessi = 278;
+ t.lslash = 278;
+ t.oslash = 500;
+ t.oe = 722;
+ t.germandbls = 500;
+ t.Idieresis = 389;
+ t.eacute = 444;
+ t.abreve = 500;
+ t.uhungarumlaut = 556;
+ t.ecaron = 444;
+ t.Ydieresis = 611;
+ t.divide = 570;
+ t.Yacute = 611;
+ t.Acircumflex = 667;
+ t.aacute = 500;
+ t.Ucircumflex = 722;
+ t.yacute = 444;
+ t.scommaaccent = 389;
+ t.ecircumflex = 444;
+ t.Uring = 722;
+ t.Udieresis = 722;
+ t.aogonek = 500;
+ t.Uacute = 722;
+ t.uogonek = 556;
+ t.Edieresis = 667;
+ t.Dcroat = 722;
+ t.commaaccent = 250;
+ t.copyright = 747;
+ t.Emacron = 667;
+ t.ccaron = 444;
+ t.aring = 500;
+ t.Ncommaaccent = 722;
+ t.lacute = 278;
+ t.agrave = 500;
+ t.Tcommaaccent = 611;
+ t.Cacute = 667;
+ t.atilde = 500;
+ t.Edotaccent = 667;
+ t.scaron = 389;
+ t.scedilla = 389;
+ t.iacute = 278;
+ t.lozenge = 494;
+ t.Rcaron = 667;
+ t.Gcommaaccent = 722;
+ t.ucircumflex = 556;
+ t.acircumflex = 500;
+ t.Amacron = 667;
+ t.rcaron = 389;
+ t.ccedilla = 444;
+ t.Zdotaccent = 611;
+ t.Thorn = 611;
+ t.Omacron = 722;
+ t.Racute = 667;
+ t.Sacute = 556;
+ t.dcaron = 608;
+ t.Umacron = 722;
+ t.uring = 556;
+ t.threesuperior = 300;
+ t.Ograve = 722;
+ t.Agrave = 667;
+ t.Abreve = 667;
+ t.multiply = 570;
+ t.uacute = 556;
+ t.Tcaron = 611;
+ t.partialdiff = 494;
+ t.ydieresis = 444;
+ t.Nacute = 722;
+ t.icircumflex = 278;
+ t.Ecircumflex = 667;
+ t.adieresis = 500;
+ t.edieresis = 444;
+ t.cacute = 444;
+ t.nacute = 556;
+ t.umacron = 556;
+ t.Ncaron = 722;
+ t.Iacute = 389;
+ t.plusminus = 570;
+ t.brokenbar = 220;
+ t.registered = 747;
+ t.Gbreve = 722;
+ t.Idotaccent = 389;
+ t.summation = 600;
+ t.Egrave = 667;
+ t.racute = 389;
+ t.omacron = 500;
+ t.Zacute = 611;
+ t.Zcaron = 611;
+ t.greaterequal = 549;
+ t.Eth = 722;
+ t.Ccedilla = 667;
+ t.lcommaaccent = 278;
+ t.tcaron = 366;
+ t.eogonek = 444;
+ t.Uogonek = 722;
+ t.Aacute = 667;
+ t.Adieresis = 667;
+ t.egrave = 444;
+ t.zacute = 389;
+ t.iogonek = 278;
+ t.Oacute = 722;
+ t.oacute = 500;
+ t.amacron = 500;
+ t.sacute = 389;
+ t.idieresis = 278;
+ t.Ocircumflex = 722;
+ t.Ugrave = 722;
+ t.Delta = 612;
+ t.thorn = 500;
+ t.twosuperior = 300;
+ t.Odieresis = 722;
+ t.mu = 576;
+ t.igrave = 278;
+ t.ohungarumlaut = 500;
+ t.Eogonek = 667;
+ t.dcroat = 500;
+ t.threequarters = 750;
+ t.Scedilla = 556;
+ t.lcaron = 382;
+ t.Kcommaaccent = 667;
+ t.Lacute = 611;
+ t.trademark = 1000;
+ t.edotaccent = 444;
+ t.Igrave = 389;
+ t.Imacron = 389;
+ t.Lcaron = 611;
+ t.onehalf = 750;
+ t.lessequal = 549;
+ t.ocircumflex = 500;
+ t.ntilde = 556;
+ t.Uhungarumlaut = 722;
+ t.Eacute = 667;
+ t.emacron = 444;
+ t.gbreve = 500;
+ t.onequarter = 750;
+ t.Scaron = 556;
+ t.Scommaaccent = 556;
+ t.Ohungarumlaut = 722;
+ t.degree = 400;
+ t.ograve = 500;
+ t.Ccaron = 667;
+ t.ugrave = 556;
+ t.radical = 549;
+ t.Dcaron = 722;
+ t.rcommaaccent = 389;
+ t.Ntilde = 722;
+ t.otilde = 500;
+ t.Rcommaaccent = 667;
+ t.Lcommaaccent = 611;
+ t.Atilde = 667;
+ t.Aogonek = 667;
+ t.Aring = 667;
+ t.Otilde = 722;
+ t.zdotaccent = 389;
+ t.Ecaron = 667;
+ t.Iogonek = 389;
+ t.kcommaaccent = 500;
+ t.minus = 606;
+ t.Icircumflex = 389;
+ t.ncaron = 556;
+ t.tcommaaccent = 278;
+ t.logicalnot = 606;
+ t.odieresis = 500;
+ t.udieresis = 556;
+ t.notequal = 549;
+ t.gcommaaccent = 500;
+ t.eth = 500;
+ t.zcaron = 389;
+ t.ncommaaccent = 556;
+ t.onesuperior = 300;
+ t.imacron = 278;
+ t.Euro = 500;
+ });
+ t["Times-Italic"] = (0, _core_utils.getLookupTableFactory)(function (t) {
+ t.space = 250;
+ t.exclam = 333;
+ t.quotedbl = 420;
+ t.numbersign = 500;
+ t.dollar = 500;
+ t.percent = 833;
+ t.ampersand = 778;
+ t.quoteright = 333;
+ t.parenleft = 333;
+ t.parenright = 333;
+ t.asterisk = 500;
+ t.plus = 675;
+ t.comma = 250;
+ t.hyphen = 333;
+ t.period = 250;
+ t.slash = 278;
+ t.zero = 500;
+ t.one = 500;
+ t.two = 500;
+ t.three = 500;
+ t.four = 500;
+ t.five = 500;
+ t.six = 500;
+ t.seven = 500;
+ t.eight = 500;
+ t.nine = 500;
+ t.colon = 333;
+ t.semicolon = 333;
+ t.less = 675;
+ t.equal = 675;
+ t.greater = 675;
+ t.question = 500;
+ t.at = 920;
+ t.A = 611;
+ t.B = 611;
+ t.C = 667;
+ t.D = 722;
+ t.E = 611;
+ t.F = 611;
+ t.G = 722;
+ t.H = 722;
+ t.I = 333;
+ t.J = 444;
+ t.K = 667;
+ t.L = 556;
+ t.M = 833;
+ t.N = 667;
+ t.O = 722;
+ t.P = 611;
+ t.Q = 722;
+ t.R = 611;
+ t.S = 500;
+ t.T = 556;
+ t.U = 722;
+ t.V = 611;
+ t.W = 833;
+ t.X = 611;
+ t.Y = 556;
+ t.Z = 556;
+ t.bracketleft = 389;
+ t.backslash = 278;
+ t.bracketright = 389;
+ t.asciicircum = 422;
+ t.underscore = 500;
+ t.quoteleft = 333;
+ t.a = 500;
+ t.b = 500;
+ t.c = 444;
+ t.d = 500;
+ t.e = 444;
+ t.f = 278;
+ t.g = 500;
+ t.h = 500;
+ t.i = 278;
+ t.j = 278;
+ t.k = 444;
+ t.l = 278;
+ t.m = 722;
+ t.n = 500;
+ t.o = 500;
+ t.p = 500;
+ t.q = 500;
+ t.r = 389;
+ t.s = 389;
+ t.t = 278;
+ t.u = 500;
+ t.v = 444;
+ t.w = 667;
+ t.x = 444;
+ t.y = 444;
+ t.z = 389;
+ t.braceleft = 400;
+ t.bar = 275;
+ t.braceright = 400;
+ t.asciitilde = 541;
+ t.exclamdown = 389;
+ t.cent = 500;
+ t.sterling = 500;
+ t.fraction = 167;
+ t.yen = 500;
+ t.florin = 500;
+ t.section = 500;
+ t.currency = 500;
+ t.quotesingle = 214;
+ t.quotedblleft = 556;
+ t.guillemotleft = 500;
+ t.guilsinglleft = 333;
+ t.guilsinglright = 333;
+ t.fi = 500;
+ t.fl = 500;
+ t.endash = 500;
+ t.dagger = 500;
+ t.daggerdbl = 500;
+ t.periodcentered = 250;
+ t.paragraph = 523;
+ t.bullet = 350;
+ t.quotesinglbase = 333;
+ t.quotedblbase = 556;
+ t.quotedblright = 556;
+ t.guillemotright = 500;
+ t.ellipsis = 889;
+ t.perthousand = 1000;
+ t.questiondown = 500;
+ t.grave = 333;
+ t.acute = 333;
+ t.circumflex = 333;
+ t.tilde = 333;
+ t.macron = 333;
+ t.breve = 333;
+ t.dotaccent = 333;
+ t.dieresis = 333;
+ t.ring = 333;
+ t.cedilla = 333;
+ t.hungarumlaut = 333;
+ t.ogonek = 333;
+ t.caron = 333;
+ t.emdash = 889;
+ t.AE = 889;
+ t.ordfeminine = 276;
+ t.Lslash = 556;
+ t.Oslash = 722;
+ t.OE = 944;
+ t.ordmasculine = 310;
+ t.ae = 667;
+ t.dotlessi = 278;
+ t.lslash = 278;
+ t.oslash = 500;
+ t.oe = 667;
+ t.germandbls = 500;
+ t.Idieresis = 333;
+ t.eacute = 444;
+ t.abreve = 500;
+ t.uhungarumlaut = 500;
+ t.ecaron = 444;
+ t.Ydieresis = 556;
+ t.divide = 675;
+ t.Yacute = 556;
+ t.Acircumflex = 611;
+ t.aacute = 500;
+ t.Ucircumflex = 722;
+ t.yacute = 444;
+ t.scommaaccent = 389;
+ t.ecircumflex = 444;
+ t.Uring = 722;
+ t.Udieresis = 722;
+ t.aogonek = 500;
+ t.Uacute = 722;
+ t.uogonek = 500;
+ t.Edieresis = 611;
+ t.Dcroat = 722;
+ t.commaaccent = 250;
+ t.copyright = 760;
+ t.Emacron = 611;
+ t.ccaron = 444;
+ t.aring = 500;
+ t.Ncommaaccent = 667;
+ t.lacute = 278;
+ t.agrave = 500;
+ t.Tcommaaccent = 556;
+ t.Cacute = 667;
+ t.atilde = 500;
+ t.Edotaccent = 611;
+ t.scaron = 389;
+ t.scedilla = 389;
+ t.iacute = 278;
+ t.lozenge = 471;
+ t.Rcaron = 611;
+ t.Gcommaaccent = 722;
+ t.ucircumflex = 500;
+ t.acircumflex = 500;
+ t.Amacron = 611;
+ t.rcaron = 389;
+ t.ccedilla = 444;
+ t.Zdotaccent = 556;
+ t.Thorn = 611;
+ t.Omacron = 722;
+ t.Racute = 611;
+ t.Sacute = 500;
+ t.dcaron = 544;
+ t.Umacron = 722;
+ t.uring = 500;
+ t.threesuperior = 300;
+ t.Ograve = 722;
+ t.Agrave = 611;
+ t.Abreve = 611;
+ t.multiply = 675;
+ t.uacute = 500;
+ t.Tcaron = 556;
+ t.partialdiff = 476;
+ t.ydieresis = 444;
+ t.Nacute = 667;
+ t.icircumflex = 278;
+ t.Ecircumflex = 611;
+ t.adieresis = 500;
+ t.edieresis = 444;
+ t.cacute = 444;
+ t.nacute = 500;
+ t.umacron = 500;
+ t.Ncaron = 667;
+ t.Iacute = 333;
+ t.plusminus = 675;
+ t.brokenbar = 275;
+ t.registered = 760;
+ t.Gbreve = 722;
+ t.Idotaccent = 333;
+ t.summation = 600;
+ t.Egrave = 611;
+ t.racute = 389;
+ t.omacron = 500;
+ t.Zacute = 556;
+ t.Zcaron = 556;
+ t.greaterequal = 549;
+ t.Eth = 722;
+ t.Ccedilla = 667;
+ t.lcommaaccent = 278;
+ t.tcaron = 300;
+ t.eogonek = 444;
+ t.Uogonek = 722;
+ t.Aacute = 611;
+ t.Adieresis = 611;
+ t.egrave = 444;
+ t.zacute = 389;
+ t.iogonek = 278;
+ t.Oacute = 722;
+ t.oacute = 500;
+ t.amacron = 500;
+ t.sacute = 389;
+ t.idieresis = 278;
+ t.Ocircumflex = 722;
+ t.Ugrave = 722;
+ t.Delta = 612;
+ t.thorn = 500;
+ t.twosuperior = 300;
+ t.Odieresis = 722;
+ t.mu = 500;
+ t.igrave = 278;
+ t.ohungarumlaut = 500;
+ t.Eogonek = 611;
+ t.dcroat = 500;
+ t.threequarters = 750;
+ t.Scedilla = 500;
+ t.lcaron = 300;
+ t.Kcommaaccent = 667;
+ t.Lacute = 556;
+ t.trademark = 980;
+ t.edotaccent = 444;
+ t.Igrave = 333;
+ t.Imacron = 333;
+ t.Lcaron = 611;
+ t.onehalf = 750;
+ t.lessequal = 549;
+ t.ocircumflex = 500;
+ t.ntilde = 500;
+ t.Uhungarumlaut = 722;
+ t.Eacute = 611;
+ t.emacron = 444;
+ t.gbreve = 500;
+ t.onequarter = 750;
+ t.Scaron = 500;
+ t.Scommaaccent = 500;
+ t.Ohungarumlaut = 722;
+ t.degree = 400;
+ t.ograve = 500;
+ t.Ccaron = 667;
+ t.ugrave = 500;
+ t.radical = 453;
+ t.Dcaron = 722;
+ t.rcommaaccent = 389;
+ t.Ntilde = 667;
+ t.otilde = 500;
+ t.Rcommaaccent = 611;
+ t.Lcommaaccent = 556;
+ t.Atilde = 611;
+ t.Aogonek = 611;
+ t.Aring = 611;
+ t.Otilde = 722;
+ t.zdotaccent = 389;
+ t.Ecaron = 611;
+ t.Iogonek = 333;
+ t.kcommaaccent = 444;
+ t.minus = 675;
+ t.Icircumflex = 333;
+ t.ncaron = 500;
+ t.tcommaaccent = 278;
+ t.logicalnot = 675;
+ t.odieresis = 500;
+ t.udieresis = 500;
+ t.notequal = 549;
+ t.gcommaaccent = 500;
+ t.eth = 500;
+ t.zcaron = 389;
+ t.ncommaaccent = 500;
+ t.onesuperior = 300;
+ t.imacron = 278;
+ t.Euro = 500;
+ });
+ t.ZapfDingbats = (0, _core_utils.getLookupTableFactory)(function (t) {
+ t.space = 278;
+ t.a1 = 974;
+ t.a2 = 961;
+ t.a202 = 974;
+ t.a3 = 980;
+ t.a4 = 719;
+ t.a5 = 789;
+ t.a119 = 790;
+ t.a118 = 791;
+ t.a117 = 690;
+ t.a11 = 960;
+ t.a12 = 939;
+ t.a13 = 549;
+ t.a14 = 855;
+ t.a15 = 911;
+ t.a16 = 933;
+ t.a105 = 911;
+ t.a17 = 945;
+ t.a18 = 974;
+ t.a19 = 755;
+ t.a20 = 846;
+ t.a21 = 762;
+ t.a22 = 761;
+ t.a23 = 571;
+ t.a24 = 677;
+ t.a25 = 763;
+ t.a26 = 760;
+ t.a27 = 759;
+ t.a28 = 754;
+ t.a6 = 494;
+ t.a7 = 552;
+ t.a8 = 537;
+ t.a9 = 577;
+ t.a10 = 692;
+ t.a29 = 786;
+ t.a30 = 788;
+ t.a31 = 788;
+ t.a32 = 790;
+ t.a33 = 793;
+ t.a34 = 794;
+ t.a35 = 816;
+ t.a36 = 823;
+ t.a37 = 789;
+ t.a38 = 841;
+ t.a39 = 823;
+ t.a40 = 833;
+ t.a41 = 816;
+ t.a42 = 831;
+ t.a43 = 923;
+ t.a44 = 744;
+ t.a45 = 723;
+ t.a46 = 749;
+ t.a47 = 790;
+ t.a48 = 792;
+ t.a49 = 695;
+ t.a50 = 776;
+ t.a51 = 768;
+ t.a52 = 792;
+ t.a53 = 759;
+ t.a54 = 707;
+ t.a55 = 708;
+ t.a56 = 682;
+ t.a57 = 701;
+ t.a58 = 826;
+ t.a59 = 815;
+ t.a60 = 789;
+ t.a61 = 789;
+ t.a62 = 707;
+ t.a63 = 687;
+ t.a64 = 696;
+ t.a65 = 689;
+ t.a66 = 786;
+ t.a67 = 787;
+ t.a68 = 713;
+ t.a69 = 791;
+ t.a70 = 785;
+ t.a71 = 791;
+ t.a72 = 873;
+ t.a73 = 761;
+ t.a74 = 762;
+ t.a203 = 762;
+ t.a75 = 759;
+ t.a204 = 759;
+ t.a76 = 892;
+ t.a77 = 892;
+ t.a78 = 788;
+ t.a79 = 784;
+ t.a81 = 438;
+ t.a82 = 138;
+ t.a83 = 277;
+ t.a84 = 415;
+ t.a97 = 392;
+ t.a98 = 392;
+ t.a99 = 668;
+ t.a100 = 668;
+ t.a89 = 390;
+ t.a90 = 390;
+ t.a93 = 317;
+ t.a94 = 317;
+ t.a91 = 276;
+ t.a92 = 276;
+ t.a205 = 509;
+ t.a85 = 509;
+ t.a206 = 410;
+ t.a86 = 410;
+ t.a87 = 234;
+ t.a88 = 234;
+ t.a95 = 334;
+ t.a96 = 334;
+ t.a101 = 732;
+ t.a102 = 544;
+ t.a103 = 544;
+ t.a104 = 910;
+ t.a106 = 667;
+ t.a107 = 760;
+ t.a108 = 760;
+ t.a112 = 776;
+ t.a111 = 595;
+ t.a110 = 694;
+ t.a109 = 626;
+ t.a120 = 788;
+ t.a121 = 788;
+ t.a122 = 788;
+ t.a123 = 788;
+ t.a124 = 788;
+ t.a125 = 788;
+ t.a126 = 788;
+ t.a127 = 788;
+ t.a128 = 788;
+ t.a129 = 788;
+ t.a130 = 788;
+ t.a131 = 788;
+ t.a132 = 788;
+ t.a133 = 788;
+ t.a134 = 788;
+ t.a135 = 788;
+ t.a136 = 788;
+ t.a137 = 788;
+ t.a138 = 788;
+ t.a139 = 788;
+ t.a140 = 788;
+ t.a141 = 788;
+ t.a142 = 788;
+ t.a143 = 788;
+ t.a144 = 788;
+ t.a145 = 788;
+ t.a146 = 788;
+ t.a147 = 788;
+ t.a148 = 788;
+ t.a149 = 788;
+ t.a150 = 788;
+ t.a151 = 788;
+ t.a152 = 788;
+ t.a153 = 788;
+ t.a154 = 788;
+ t.a155 = 788;
+ t.a156 = 788;
+ t.a157 = 788;
+ t.a158 = 788;
+ t.a159 = 788;
+ t.a160 = 894;
+ t.a161 = 838;
+ t.a163 = 1016;
+ t.a164 = 458;
+ t.a196 = 748;
+ t.a165 = 924;
+ t.a192 = 748;
+ t.a166 = 918;
+ t.a167 = 927;
+ t.a168 = 928;
+ t.a169 = 928;
+ t.a170 = 834;
+ t.a171 = 873;
+ t.a172 = 828;
+ t.a173 = 924;
+ t.a162 = 924;
+ t.a174 = 917;
+ t.a175 = 930;
+ t.a176 = 931;
+ t.a177 = 463;
+ t.a178 = 883;
+ t.a179 = 836;
+ t.a193 = 836;
+ t.a180 = 867;
+ t.a199 = 867;
+ t.a181 = 696;
+ t.a200 = 696;
+ t.a182 = 874;
+ t.a201 = 874;
+ t.a183 = 760;
+ t.a184 = 946;
+ t.a197 = 771;
+ t.a185 = 865;
+ t.a194 = 771;
+ t.a198 = 888;
+ t.a186 = 967;
+ t.a195 = 888;
+ t.a187 = 831;
+ t.a188 = 873;
+ t.a189 = 927;
+ t.a190 = 970;
+ t.a191 = 918;
+ });
+});
+exports.getMetrics = getMetrics;
+const getFontBasicMetrics = (0, _core_utils.getLookupTableFactory)(function (t) {
+ t.Courier = {
+ ascent: 629,
+ descent: -157,
+ capHeight: 562,
+ xHeight: -426
+ };
+ t["Courier-Bold"] = {
+ ascent: 629,
+ descent: -157,
+ capHeight: 562,
+ xHeight: 439
+ };
+ t["Courier-Oblique"] = {
+ ascent: 629,
+ descent: -157,
+ capHeight: 562,
+ xHeight: 426
+ };
+ t["Courier-BoldOblique"] = {
+ ascent: 629,
+ descent: -157,
+ capHeight: 562,
+ xHeight: 426
+ };
+ t.Helvetica = {
+ ascent: 718,
+ descent: -207,
+ capHeight: 718,
+ xHeight: 523
+ };
+ t["Helvetica-Bold"] = {
+ ascent: 718,
+ descent: -207,
+ capHeight: 718,
+ xHeight: 532
+ };
+ t["Helvetica-Oblique"] = {
+ ascent: 718,
+ descent: -207,
+ capHeight: 718,
+ xHeight: 523
+ };
+ t["Helvetica-BoldOblique"] = {
+ ascent: 718,
+ descent: -207,
+ capHeight: 718,
+ xHeight: 532
+ };
+ t["Times-Roman"] = {
+ ascent: 683,
+ descent: -217,
+ capHeight: 662,
+ xHeight: 450
+ };
+ t["Times-Bold"] = {
+ ascent: 683,
+ descent: -217,
+ capHeight: 676,
+ xHeight: 461
+ };
+ t["Times-Italic"] = {
+ ascent: 683,
+ descent: -217,
+ capHeight: 653,
+ xHeight: 441
+ };
+ t["Times-BoldItalic"] = {
+ ascent: 683,
+ descent: -217,
+ capHeight: 669,
+ xHeight: 462
+ };
+ t.Symbol = {
+ ascent: Math.NaN,
+ descent: Math.NaN,
+ capHeight: Math.NaN,
+ xHeight: Math.NaN
+ };
+ t.ZapfDingbats = {
+ ascent: Math.NaN,
+ descent: Math.NaN,
+ capHeight: Math.NaN,
+ xHeight: Math.NaN
+ };
+});
+exports.getFontBasicMetrics = getFontBasicMetrics;
+
+/***/ }),
+/* 52 */
/***/ ((__unused_webpack_module, exports) => {
@@ -44020,14 +47219,12 @@ class CompositeGlyph {
pos += 4;
flags ^= ARG_1_AND_2_ARE_WORDS;
} else {
- argument1 = glyf.getUint8(pos);
- argument2 = glyf.getUint8(pos + 1);
-
if (flags & ARGS_ARE_XY_VALUES) {
- const abs1 = argument1 & 0x7f;
- argument1 = argument1 & 0x80 ? -abs1 : abs1;
- const abs2 = argument2 & 0x7f;
- argument2 = argument2 & 0x80 ? -abs2 : abs2;
+ argument1 = glyf.getInt8(pos);
+ argument2 = glyf.getInt8(pos + 1);
+ } else {
+ argument1 = glyf.getUint8(pos);
+ argument2 = glyf.getUint8(pos + 1);
}
pos += 2;
@@ -44136,7 +47333,7 @@ class CompositeGlyph {
}
/***/ }),
-/* 52 */
+/* 53 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -44146,7 +47343,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.OpenTypeFileBuilder = void 0;
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _util = __w_pdfjs_require__(2);
@@ -44276,7 +47473,7 @@ class OpenTypeFileBuilder {
exports.OpenTypeFileBuilder = OpenTypeFileBuilder;
/***/ }),
-/* 53 */
+/* 54 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -44290,11 +47487,11 @@ var _cff_parser = __w_pdfjs_require__(45);
var _fonts_utils = __w_pdfjs_require__(18);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _stream = __w_pdfjs_require__(10);
-var _type1_parser = __w_pdfjs_require__(54);
+var _type1_parser = __w_pdfjs_require__(55);
var _util = __w_pdfjs_require__(2);
@@ -44641,7 +47838,7 @@ class Type1Font {
exports.Type1Font = Type1Font;
/***/ }),
-/* 54 */
+/* 55 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -44653,7 +47850,7 @@ exports.Type1Parser = void 0;
var _encodings = __w_pdfjs_require__(19);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _stream = __w_pdfjs_require__(10);
@@ -45090,6 +48287,11 @@ const Type1Parser = function Type1ParserClosure() {
return this.currentChar = this.stream.getByte();
}
+ prevChar() {
+ this.stream.skip(-2);
+ return this.currentChar = this.stream.getByte();
+ }
+
getToken() {
let comment = false;
let ch = this.currentChar;
@@ -45186,6 +48388,8 @@ const Type1Parser = function Type1ParserClosure() {
if (token === "noaccess") {
this.getToken();
+ } else if (token === "/") {
+ this.prevChar();
}
charstrings.push({
@@ -45364,7 +48568,7 @@ const Type1Parser = function Type1ParserClosure() {
exports.Type1Parser = Type1Parser;
/***/ }),
-/* 55 */
+/* 56 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -45377,11 +48581,11 @@ exports.getTilingPatternIR = getTilingPatternIR;
var _util = __w_pdfjs_require__(2);
-var _colorspace = __w_pdfjs_require__(24);
+var _base_stream = __w_pdfjs_require__(9);
-var _primitives = __w_pdfjs_require__(5);
+var _colorspace = __w_pdfjs_require__(24);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
const ShadingType = {
FUNCTION_BASED: 1,
@@ -45399,7 +48603,7 @@ class Pattern {
}
static parseShading(shading, xref, res, handler, pdfFunctionFactory, localColorSpaceCache) {
- const dict = (0, _primitives.isStream)(shading) ? shading.dict : shading;
+ const dict = shading instanceof _base_stream.BaseStream ? shading.dict : shading;
const type = dict.get("ShadingType");
try {
@@ -45715,7 +48919,7 @@ class MeshShading extends BaseShading {
constructor(stream, xref, resources, pdfFunctionFactory, localColorSpaceCache) {
super();
- if (!(0, _primitives.isStream)(stream)) {
+ if (!(stream instanceof _base_stream.BaseStream)) {
throw new _util.FormatError("Mesh data is not a stream");
}
@@ -46307,7 +49511,7 @@ function getTilingPatternIR(operatorList, dict, color) {
}
/***/ }),
-/* 56 */
+/* 57 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -46322,9 +49526,11 @@ var _primitives = __w_pdfjs_require__(5);
var _util = __w_pdfjs_require__(2);
-var _ps_parser = __w_pdfjs_require__(57);
+var _ps_parser = __w_pdfjs_require__(58);
+
+var _base_stream = __w_pdfjs_require__(9);
-var _image_utils = __w_pdfjs_require__(58);
+var _image_utils = __w_pdfjs_require__(59);
class PDFFunctionFactory {
constructor({
@@ -46378,7 +49584,7 @@ class PDFFunctionFactory {
fnRef = cacheKey;
} else if (cacheKey instanceof _primitives.Dict) {
fnRef = cacheKey.objId;
- } else if ((0, _primitives.isStream)(cacheKey)) {
+ } else if (cacheKey instanceof _base_stream.BaseStream) {
fnRef = cacheKey.dict && cacheKey.dict.objId;
}
@@ -46404,7 +49610,7 @@ class PDFFunctionFactory {
fnRef = cacheKey;
} else if (cacheKey instanceof _primitives.Dict) {
fnRef = cacheKey.objId;
- } else if ((0, _primitives.isStream)(cacheKey)) {
+ } else if (cacheKey instanceof _base_stream.BaseStream) {
fnRef = cacheKey.dict && cacheKey.dict.objId;
}
@@ -46853,9 +50059,9 @@ function isPDFFunction(v) {
if (typeof v !== "object") {
return false;
- } else if ((0, _primitives.isDict)(v)) {
+ } else if (v instanceof _primitives.Dict) {
fnDict = v;
- } else if ((0, _primitives.isStream)(v)) {
+ } else if (v instanceof _base_stream.BaseStream) {
fnDict = v.dict;
} else {
return false;
@@ -46983,7 +50189,7 @@ class PostScriptEvaluator {
b = stack.pop();
a = stack.pop();
- if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {
+ if (typeof a === "boolean" && typeof b === "boolean") {
stack.push(a && b);
} else {
stack.push(a & b);
@@ -47137,7 +50343,7 @@ class PostScriptEvaluator {
case "not":
a = stack.pop();
- if ((0, _util.isBool)(a)) {
+ if (typeof a === "boolean") {
stack.push(!a);
} else {
stack.push(~a);
@@ -47149,7 +50355,7 @@ class PostScriptEvaluator {
b = stack.pop();
a = stack.pop();
- if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {
+ if (typeof a === "boolean" && typeof b === "boolean") {
stack.push(a || b);
} else {
stack.push(a | b);
@@ -47202,7 +50408,7 @@ class PostScriptEvaluator {
b = stack.pop();
a = stack.pop();
- if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {
+ if (typeof a === "boolean" && typeof b === "boolean") {
stack.push(a !== b);
} else {
stack.push(a ^ b);
@@ -47642,7 +50848,7 @@ const PostScriptCompiler = function PostScriptCompilerClosure() {
exports.PostScriptCompiler = PostScriptCompiler;
/***/ }),
-/* 57 */
+/* 58 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -47656,7 +50862,7 @@ var _util = __w_pdfjs_require__(2);
var _primitives = __w_pdfjs_require__(5);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
class PostScriptParser {
constructor(lexer) {
@@ -47893,7 +51099,7 @@ class PostScriptLexer {
exports.PostScriptLexer = PostScriptLexer;
/***/ }),
-/* 58 */
+/* 59 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -48215,7 +51421,7 @@ class GlobalImageCache {
exports.GlobalImageCache = GlobalImageCache;
/***/ }),
-/* 59 */
+/* 60 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -48526,2959 +51732,6 @@ function bidi(str, startLevel = -1, vertical = false) {
}
/***/ }),
-/* 60 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
- value: true
-}));
-exports.getMetrics = void 0;
-
-var _core_utils = __w_pdfjs_require__(9);
-
-const getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) {
- t.Courier = 600;
- t["Courier-Bold"] = 600;
- t["Courier-BoldOblique"] = 600;
- t["Courier-Oblique"] = 600;
- t.Helvetica = (0, _core_utils.getLookupTableFactory)(function (t) {
- t.space = 278;
- t.exclam = 278;
- t.quotedbl = 355;
- t.numbersign = 556;
- t.dollar = 556;
- t.percent = 889;
- t.ampersand = 667;
- t.quoteright = 222;
- t.parenleft = 333;
- t.parenright = 333;
- t.asterisk = 389;
- t.plus = 584;
- t.comma = 278;
- t.hyphen = 333;
- t.period = 278;
- t.slash = 278;
- t.zero = 556;
- t.one = 556;
- t.two = 556;
- t.three = 556;
- t.four = 556;
- t.five = 556;
- t.six = 556;
- t.seven = 556;
- t.eight = 556;
- t.nine = 556;
- t.colon = 278;
- t.semicolon = 278;
- t.less = 584;
- t.equal = 584;
- t.greater = 584;
- t.question = 556;
- t.at = 1015;
- t.A = 667;
- t.B = 667;
- t.C = 722;
- t.D = 722;
- t.E = 667;
- t.F = 611;
- t.G = 778;
- t.H = 722;
- t.I = 278;
- t.J = 500;
- t.K = 667;
- t.L = 556;
- t.M = 833;
- t.N = 722;
- t.O = 778;
- t.P = 667;
- t.Q = 778;
- t.R = 722;
- t.S = 667;
- t.T = 611;
- t.U = 722;
- t.V = 667;
- t.W = 944;
- t.X = 667;
- t.Y = 667;
- t.Z = 611;
- t.bracketleft = 278;
- t.backslash = 278;
- t.bracketright = 278;
- t.asciicircum = 469;
- t.underscore = 556;
- t.quoteleft = 222;
- t.a = 556;
- t.b = 556;
- t.c = 500;
- t.d = 556;
- t.e = 556;
- t.f = 278;
- t.g = 556;
- t.h = 556;
- t.i = 222;
- t.j = 222;
- t.k = 500;
- t.l = 222;
- t.m = 833;
- t.n = 556;
- t.o = 556;
- t.p = 556;
- t.q = 556;
- t.r = 333;
- t.s = 500;
- t.t = 278;
- t.u = 556;
- t.v = 500;
- t.w = 722;
- t.x = 500;
- t.y = 500;
- t.z = 500;
- t.braceleft = 334;
- t.bar = 260;
- t.braceright = 334;
- t.asciitilde = 584;
- t.exclamdown = 333;
- t.cent = 556;
- t.sterling = 556;
- t.fraction = 167;
- t.yen = 556;
- t.florin = 556;
- t.section = 556;
- t.currency = 556;
- t.quotesingle = 191;
- t.quotedblleft = 333;
- t.guillemotleft = 556;
- t.guilsinglleft = 333;
- t.guilsinglright = 333;
- t.fi = 500;
- t.fl = 500;
- t.endash = 556;
- t.dagger = 556;
- t.daggerdbl = 556;
- t.periodcentered = 278;
- t.paragraph = 537;
- t.bullet = 350;
- t.quotesinglbase = 222;
- t.quotedblbase = 333;
- t.quotedblright = 333;
- t.guillemotright = 556;
- t.ellipsis = 1000;
- t.perthousand = 1000;
- t.questiondown = 611;
- t.grave = 333;
- t.acute = 333;
- t.circumflex = 333;
- t.tilde = 333;
- t.macron = 333;
- t.breve = 333;
- t.dotaccent = 333;
- t.dieresis = 333;
- t.ring = 333;
- t.cedilla = 333;
- t.hungarumlaut = 333;
- t.ogonek = 333;
- t.caron = 333;
- t.emdash = 1000;
- t.AE = 1000;
- t.ordfeminine = 370;
- t.Lslash = 556;
- t.Oslash = 778;
- t.OE = 1000;
- t.ordmasculine = 365;
- t.ae = 889;
- t.dotlessi = 278;
- t.lslash = 222;
- t.oslash = 611;
- t.oe = 944;
- t.germandbls = 611;
- t.Idieresis = 278;
- t.eacute = 556;
- t.abreve = 556;
- t.uhungarumlaut = 556;
- t.ecaron = 556;
- t.Ydieresis = 667;
- t.divide = 584;
- t.Yacute = 667;
- t.Acircumflex = 667;
- t.aacute = 556;
- t.Ucircumflex = 722;
- t.yacute = 500;
- t.scommaaccent = 500;
- t.ecircumflex = 556;
- t.Uring = 722;
- t.Udieresis = 722;
- t.aogonek = 556;
- t.Uacute = 722;
- t.uogonek = 556;
- t.Edieresis = 667;
- t.Dcroat = 722;
- t.commaaccent = 250;
- t.copyright = 737;
- t.Emacron = 667;
- t.ccaron = 500;
- t.aring = 556;
- t.Ncommaaccent = 722;
- t.lacute = 222;
- t.agrave = 556;
- t.Tcommaaccent = 611;
- t.Cacute = 722;
- t.atilde = 556;
- t.Edotaccent = 667;
- t.scaron = 500;
- t.scedilla = 500;
- t.iacute = 278;
- t.lozenge = 471;
- t.Rcaron = 722;
- t.Gcommaaccent = 778;
- t.ucircumflex = 556;
- t.acircumflex = 556;
- t.Amacron = 667;
- t.rcaron = 333;
- t.ccedilla = 500;
- t.Zdotaccent = 611;
- t.Thorn = 667;
- t.Omacron = 778;
- t.Racute = 722;
- t.Sacute = 667;
- t.dcaron = 643;
- t.Umacron = 722;
- t.uring = 556;
- t.threesuperior = 333;
- t.Ograve = 778;
- t.Agrave = 667;
- t.Abreve = 667;
- t.multiply = 584;
- t.uacute = 556;
- t.Tcaron = 611;
- t.partialdiff = 476;
- t.ydieresis = 500;
- t.Nacute = 722;
- t.icircumflex = 278;
- t.Ecircumflex = 667;
- t.adieresis = 556;
- t.edieresis = 556;
- t.cacute = 500;
- t.nacute = 556;
- t.umacron = 556;
- t.Ncaron = 722;
- t.Iacute = 278;
- t.plusminus = 584;
- t.brokenbar = 260;
- t.registered = 737;
- t.Gbreve = 778;
- t.Idotaccent = 278;
- t.summation = 600;
- t.Egrave = 667;
- t.racute = 333;
- t.omacron = 556;
- t.Zacute = 611;
- t.Zcaron = 611;
- t.greaterequal = 549;
- t.Eth = 722;
- t.Ccedilla = 722;
- t.lcommaaccent = 222;
- t.tcaron = 317;
- t.eogonek = 556;
- t.Uogonek = 722;
- t.Aacute = 667;
- t.Adieresis = 667;
- t.egrave = 556;
- t.zacute = 500;
- t.iogonek = 222;
- t.Oacute = 778;
- t.oacute = 556;
- t.amacron = 556;
- t.sacute = 500;
- t.idieresis = 278;
- t.Ocircumflex = 778;
- t.Ugrave = 722;
- t.Delta = 612;
- t.thorn = 556;
- t.twosuperior = 333;
- t.Odieresis = 778;
- t.mu = 556;
- t.igrave = 278;
- t.ohungarumlaut = 556;
- t.Eogonek = 667;
- t.dcroat = 556;
- t.threequarters = 834;
- t.Scedilla = 667;
- t.lcaron = 299;
- t.Kcommaaccent = 667;
- t.Lacute = 556;
- t.trademark = 1000;
- t.edotaccent = 556;
- t.Igrave = 278;
- t.Imacron = 278;
- t.Lcaron = 556;
- t.onehalf = 834;
- t.lessequal = 549;
- t.ocircumflex = 556;
- t.ntilde = 556;
- t.Uhungarumlaut = 722;
- t.Eacute = 667;
- t.emacron = 556;
- t.gbreve = 556;
- t.onequarter = 834;
- t.Scaron = 667;
- t.Scommaaccent = 667;
- t.Ohungarumlaut = 778;
- t.degree = 400;
- t.ograve = 556;
- t.Ccaron = 722;
- t.ugrave = 556;
- t.radical = 453;
- t.Dcaron = 722;
- t.rcommaaccent = 333;
- t.Ntilde = 722;
- t.otilde = 556;
- t.Rcommaaccent = 722;
- t.Lcommaaccent = 556;
- t.Atilde = 667;
- t.Aogonek = 667;
- t.Aring = 667;
- t.Otilde = 778;
- t.zdotaccent = 500;
- t.Ecaron = 667;
- t.Iogonek = 278;
- t.kcommaaccent = 500;
- t.minus = 584;
- t.Icircumflex = 278;
- t.ncaron = 556;
- t.tcommaaccent = 278;
- t.logicalnot = 584;
- t.odieresis = 556;
- t.udieresis = 556;
- t.notequal = 549;
- t.gcommaaccent = 556;
- t.eth = 556;
- t.zcaron = 500;
- t.ncommaaccent = 556;
- t.onesuperior = 333;
- t.imacron = 278;
- t.Euro = 556;
- });
- t["Helvetica-Bold"] = (0, _core_utils.getLookupTableFactory)(function (t) {
- t.space = 278;
- t.exclam = 333;
- t.quotedbl = 474;
- t.numbersign = 556;
- t.dollar = 556;
- t.percent = 889;
- t.ampersand = 722;
- t.quoteright = 278;
- t.parenleft = 333;
- t.parenright = 333;
- t.asterisk = 389;
- t.plus = 584;
- t.comma = 278;
- t.hyphen = 333;
- t.period = 278;
- t.slash = 278;
- t.zero = 556;
- t.one = 556;
- t.two = 556;
- t.three = 556;
- t.four = 556;
- t.five = 556;
- t.six = 556;
- t.seven = 556;
- t.eight = 556;
- t.nine = 556;
- t.colon = 333;
- t.semicolon = 333;
- t.less = 584;
- t.equal = 584;
- t.greater = 584;
- t.question = 611;
- t.at = 975;
- t.A = 722;
- t.B = 722;
- t.C = 722;
- t.D = 722;
- t.E = 667;
- t.F = 611;
- t.G = 778;
- t.H = 722;
- t.I = 278;
- t.J = 556;
- t.K = 722;
- t.L = 611;
- t.M = 833;
- t.N = 722;
- t.O = 778;
- t.P = 667;
- t.Q = 778;
- t.R = 722;
- t.S = 667;
- t.T = 611;
- t.U = 722;
- t.V = 667;
- t.W = 944;
- t.X = 667;
- t.Y = 667;
- t.Z = 611;
- t.bracketleft = 333;
- t.backslash = 278;
- t.bracketright = 333;
- t.asciicircum = 584;
- t.underscore = 556;
- t.quoteleft = 278;
- t.a = 556;
- t.b = 611;
- t.c = 556;
- t.d = 611;
- t.e = 556;
- t.f = 333;
- t.g = 611;
- t.h = 611;
- t.i = 278;
- t.j = 278;
- t.k = 556;
- t.l = 278;
- t.m = 889;
- t.n = 611;
- t.o = 611;
- t.p = 611;
- t.q = 611;
- t.r = 389;
- t.s = 556;
- t.t = 333;
- t.u = 611;
- t.v = 556;
- t.w = 778;
- t.x = 556;
- t.y = 556;
- t.z = 500;
- t.braceleft = 389;
- t.bar = 280;
- t.braceright = 389;
- t.asciitilde = 584;
- t.exclamdown = 333;
- t.cent = 556;
- t.sterling = 556;
- t.fraction = 167;
- t.yen = 556;
- t.florin = 556;
- t.section = 556;
- t.currency = 556;
- t.quotesingle = 238;
- t.quotedblleft = 500;
- t.guillemotleft = 556;
- t.guilsinglleft = 333;
- t.guilsinglright = 333;
- t.fi = 611;
- t.fl = 611;
- t.endash = 556;
- t.dagger = 556;
- t.daggerdbl = 556;
- t.periodcentered = 278;
- t.paragraph = 556;
- t.bullet = 350;
- t.quotesinglbase = 278;
- t.quotedblbase = 500;
- t.quotedblright = 500;
- t.guillemotright = 556;
- t.ellipsis = 1000;
- t.perthousand = 1000;
- t.questiondown = 611;
- t.grave = 333;
- t.acute = 333;
- t.circumflex = 333;
- t.tilde = 333;
- t.macron = 333;
- t.breve = 333;
- t.dotaccent = 333;
- t.dieresis = 333;
- t.ring = 333;
- t.cedilla = 333;
- t.hungarumlaut = 333;
- t.ogonek = 333;
- t.caron = 333;
- t.emdash = 1000;
- t.AE = 1000;
- t.ordfeminine = 370;
- t.Lslash = 611;
- t.Oslash = 778;
- t.OE = 1000;
- t.ordmasculine = 365;
- t.ae = 889;
- t.dotlessi = 278;
- t.lslash = 278;
- t.oslash = 611;
- t.oe = 944;
- t.germandbls = 611;
- t.Idieresis = 278;
- t.eacute = 556;
- t.abreve = 556;
- t.uhungarumlaut = 611;
- t.ecaron = 556;
- t.Ydieresis = 667;
- t.divide = 584;
- t.Yacute = 667;
- t.Acircumflex = 722;
- t.aacute = 556;
- t.Ucircumflex = 722;
- t.yacute = 556;
- t.scommaaccent = 556;
- t.ecircumflex = 556;
- t.Uring = 722;
- t.Udieresis = 722;
- t.aogonek = 556;
- t.Uacute = 722;
- t.uogonek = 611;
- t.Edieresis = 667;
- t.Dcroat = 722;
- t.commaaccent = 250;
- t.copyright = 737;
- t.Emacron = 667;
- t.ccaron = 556;
- t.aring = 556;
- t.Ncommaaccent = 722;
- t.lacute = 278;
- t.agrave = 556;
- t.Tcommaaccent = 611;
- t.Cacute = 722;
- t.atilde = 556;
- t.Edotaccent = 667;
- t.scaron = 556;
- t.scedilla = 556;
- t.iacute = 278;
- t.lozenge = 494;
- t.Rcaron = 722;
- t.Gcommaaccent = 778;
- t.ucircumflex = 611;
- t.acircumflex = 556;
- t.Amacron = 722;
- t.rcaron = 389;
- t.ccedilla = 556;
- t.Zdotaccent = 611;
- t.Thorn = 667;
- t.Omacron = 778;
- t.Racute = 722;
- t.Sacute = 667;
- t.dcaron = 743;
- t.Umacron = 722;
- t.uring = 611;
- t.threesuperior = 333;
- t.Ograve = 778;
- t.Agrave = 722;
- t.Abreve = 722;
- t.multiply = 584;
- t.uacute = 611;
- t.Tcaron = 611;
- t.partialdiff = 494;
- t.ydieresis = 556;
- t.Nacute = 722;
- t.icircumflex = 278;
- t.Ecircumflex = 667;
- t.adieresis = 556;
- t.edieresis = 556;
- t.cacute = 556;
- t.nacute = 611;
- t.umacron = 611;
- t.Ncaron = 722;
- t.Iacute = 278;
- t.plusminus = 584;
- t.brokenbar = 280;
- t.registered = 737;
- t.Gbreve = 778;
- t.Idotaccent = 278;
- t.summation = 600;
- t.Egrave = 667;
- t.racute = 389;
- t.omacron = 611;
- t.Zacute = 611;
- t.Zcaron = 611;
- t.greaterequal = 549;
- t.Eth = 722;
- t.Ccedilla = 722;
- t.lcommaaccent = 278;
- t.tcaron = 389;
- t.eogonek = 556;
- t.Uogonek = 722;
- t.Aacute = 722;
- t.Adieresis = 722;
- t.egrave = 556;
- t.zacute = 500;
- t.iogonek = 278;
- t.Oacute = 778;
- t.oacute = 611;
- t.amacron = 556;
- t.sacute = 556;
- t.idieresis = 278;
- t.Ocircumflex = 778;
- t.Ugrave = 722;
- t.Delta = 612;
- t.thorn = 611;
- t.twosuperior = 333;
- t.Odieresis = 778;
- t.mu = 611;
- t.igrave = 278;
- t.ohungarumlaut = 611;
- t.Eogonek = 667;
- t.dcroat = 611;
- t.threequarters = 834;
- t.Scedilla = 667;
- t.lcaron = 400;
- t.Kcommaaccent = 722;
- t.Lacute = 611;
- t.trademark = 1000;
- t.edotaccent = 556;
- t.Igrave = 278;
- t.Imacron = 278;
- t.Lcaron = 611;
- t.onehalf = 834;
- t.lessequal = 549;
- t.ocircumflex = 611;
- t.ntilde = 611;
- t.Uhungarumlaut = 722;
- t.Eacute = 667;
- t.emacron = 556;
- t.gbreve = 611;
- t.onequarter = 834;
- t.Scaron = 667;
- t.Scommaaccent = 667;
- t.Ohungarumlaut = 778;
- t.degree = 400;
- t.ograve = 611;
- t.Ccaron = 722;
- t.ugrave = 611;
- t.radical = 549;
- t.Dcaron = 722;
- t.rcommaaccent = 389;
- t.Ntilde = 722;
- t.otilde = 611;
- t.Rcommaaccent = 722;
- t.Lcommaaccent = 611;
- t.Atilde = 722;
- t.Aogonek = 722;
- t.Aring = 722;
- t.Otilde = 778;
- t.zdotaccent = 500;
- t.Ecaron = 667;
- t.Iogonek = 278;
- t.kcommaaccent = 556;
- t.minus = 584;
- t.Icircumflex = 278;
- t.ncaron = 611;
- t.tcommaaccent = 333;
- t.logicalnot = 584;
- t.odieresis = 611;
- t.udieresis = 611;
- t.notequal = 549;
- t.gcommaaccent = 611;
- t.eth = 611;
- t.zcaron = 500;
- t.ncommaaccent = 611;
- t.onesuperior = 333;
- t.imacron = 278;
- t.Euro = 556;
- });
- t["Helvetica-BoldOblique"] = (0, _core_utils.getLookupTableFactory)(function (t) {
- t.space = 278;
- t.exclam = 333;
- t.quotedbl = 474;
- t.numbersign = 556;
- t.dollar = 556;
- t.percent = 889;
- t.ampersand = 722;
- t.quoteright = 278;
- t.parenleft = 333;
- t.parenright = 333;
- t.asterisk = 389;
- t.plus = 584;
- t.comma = 278;
- t.hyphen = 333;
- t.period = 278;
- t.slash = 278;
- t.zero = 556;
- t.one = 556;
- t.two = 556;
- t.three = 556;
- t.four = 556;
- t.five = 556;
- t.six = 556;
- t.seven = 556;
- t.eight = 556;
- t.nine = 556;
- t.colon = 333;
- t.semicolon = 333;
- t.less = 584;
- t.equal = 584;
- t.greater = 584;
- t.question = 611;
- t.at = 975;
- t.A = 722;
- t.B = 722;
- t.C = 722;
- t.D = 722;
- t.E = 667;
- t.F = 611;
- t.G = 778;
- t.H = 722;
- t.I = 278;
- t.J = 556;
- t.K = 722;
- t.L = 611;
- t.M = 833;
- t.N = 722;
- t.O = 778;
- t.P = 667;
- t.Q = 778;
- t.R = 722;
- t.S = 667;
- t.T = 611;
- t.U = 722;
- t.V = 667;
- t.W = 944;
- t.X = 667;
- t.Y = 667;
- t.Z = 611;
- t.bracketleft = 333;
- t.backslash = 278;
- t.bracketright = 333;
- t.asciicircum = 584;
- t.underscore = 556;
- t.quoteleft = 278;
- t.a = 556;
- t.b = 611;
- t.c = 556;
- t.d = 611;
- t.e = 556;
- t.f = 333;
- t.g = 611;
- t.h = 611;
- t.i = 278;
- t.j = 278;
- t.k = 556;
- t.l = 278;
- t.m = 889;
- t.n = 611;
- t.o = 611;
- t.p = 611;
- t.q = 611;
- t.r = 389;
- t.s = 556;
- t.t = 333;
- t.u = 611;
- t.v = 556;
- t.w = 778;
- t.x = 556;
- t.y = 556;
- t.z = 500;
- t.braceleft = 389;
- t.bar = 280;
- t.braceright = 389;
- t.asciitilde = 584;
- t.exclamdown = 333;
- t.cent = 556;
- t.sterling = 556;
- t.fraction = 167;
- t.yen = 556;
- t.florin = 556;
- t.section = 556;
- t.currency = 556;
- t.quotesingle = 238;
- t.quotedblleft = 500;
- t.guillemotleft = 556;
- t.guilsinglleft = 333;
- t.guilsinglright = 333;
- t.fi = 611;
- t.fl = 611;
- t.endash = 556;
- t.dagger = 556;
- t.daggerdbl = 556;
- t.periodcentered = 278;
- t.paragraph = 556;
- t.bullet = 350;
- t.quotesinglbase = 278;
- t.quotedblbase = 500;
- t.quotedblright = 500;
- t.guillemotright = 556;
- t.ellipsis = 1000;
- t.perthousand = 1000;
- t.questiondown = 611;
- t.grave = 333;
- t.acute = 333;
- t.circumflex = 333;
- t.tilde = 333;
- t.macron = 333;
- t.breve = 333;
- t.dotaccent = 333;
- t.dieresis = 333;
- t.ring = 333;
- t.cedilla = 333;
- t.hungarumlaut = 333;
- t.ogonek = 333;
- t.caron = 333;
- t.emdash = 1000;
- t.AE = 1000;
- t.ordfeminine = 370;
- t.Lslash = 611;
- t.Oslash = 778;
- t.OE = 1000;
- t.ordmasculine = 365;
- t.ae = 889;
- t.dotlessi = 278;
- t.lslash = 278;
- t.oslash = 611;
- t.oe = 944;
- t.germandbls = 611;
- t.Idieresis = 278;
- t.eacute = 556;
- t.abreve = 556;
- t.uhungarumlaut = 611;
- t.ecaron = 556;
- t.Ydieresis = 667;
- t.divide = 584;
- t.Yacute = 667;
- t.Acircumflex = 722;
- t.aacute = 556;
- t.Ucircumflex = 722;
- t.yacute = 556;
- t.scommaaccent = 556;
- t.ecircumflex = 556;
- t.Uring = 722;
- t.Udieresis = 722;
- t.aogonek = 556;
- t.Uacute = 722;
- t.uogonek = 611;
- t.Edieresis = 667;
- t.Dcroat = 722;
- t.commaaccent = 250;
- t.copyright = 737;
- t.Emacron = 667;
- t.ccaron = 556;
- t.aring = 556;
- t.Ncommaaccent = 722;
- t.lacute = 278;
- t.agrave = 556;
- t.Tcommaaccent = 611;
- t.Cacute = 722;
- t.atilde = 556;
- t.Edotaccent = 667;
- t.scaron = 556;
- t.scedilla = 556;
- t.iacute = 278;
- t.lozenge = 494;
- t.Rcaron = 722;
- t.Gcommaaccent = 778;
- t.ucircumflex = 611;
- t.acircumflex = 556;
- t.Amacron = 722;
- t.rcaron = 389;
- t.ccedilla = 556;
- t.Zdotaccent = 611;
- t.Thorn = 667;
- t.Omacron = 778;
- t.Racute = 722;
- t.Sacute = 667;
- t.dcaron = 743;
- t.Umacron = 722;
- t.uring = 611;
- t.threesuperior = 333;
- t.Ograve = 778;
- t.Agrave = 722;
- t.Abreve = 722;
- t.multiply = 584;
- t.uacute = 611;
- t.Tcaron = 611;
- t.partialdiff = 494;
- t.ydieresis = 556;
- t.Nacute = 722;
- t.icircumflex = 278;
- t.Ecircumflex = 667;
- t.adieresis = 556;
- t.edieresis = 556;
- t.cacute = 556;
- t.nacute = 611;
- t.umacron = 611;
- t.Ncaron = 722;
- t.Iacute = 278;
- t.plusminus = 584;
- t.brokenbar = 280;
- t.registered = 737;
- t.Gbreve = 778;
- t.Idotaccent = 278;
- t.summation = 600;
- t.Egrave = 667;
- t.racute = 389;
- t.omacron = 611;
- t.Zacute = 611;
- t.Zcaron = 611;
- t.greaterequal = 549;
- t.Eth = 722;
- t.Ccedilla = 722;
- t.lcommaaccent = 278;
- t.tcaron = 389;
- t.eogonek = 556;
- t.Uogonek = 722;
- t.Aacute = 722;
- t.Adieresis = 722;
- t.egrave = 556;
- t.zacute = 500;
- t.iogonek = 278;
- t.Oacute = 778;
- t.oacute = 611;
- t.amacron = 556;
- t.sacute = 556;
- t.idieresis = 278;
- t.Ocircumflex = 778;
- t.Ugrave = 722;
- t.Delta = 612;
- t.thorn = 611;
- t.twosuperior = 333;
- t.Odieresis = 778;
- t.mu = 611;
- t.igrave = 278;
- t.ohungarumlaut = 611;
- t.Eogonek = 667;
- t.dcroat = 611;
- t.threequarters = 834;
- t.Scedilla = 667;
- t.lcaron = 400;
- t.Kcommaaccent = 722;
- t.Lacute = 611;
- t.trademark = 1000;
- t.edotaccent = 556;
- t.Igrave = 278;
- t.Imacron = 278;
- t.Lcaron = 611;
- t.onehalf = 834;
- t.lessequal = 549;
- t.ocircumflex = 611;
- t.ntilde = 611;
- t.Uhungarumlaut = 722;
- t.Eacute = 667;
- t.emacron = 556;
- t.gbreve = 611;
- t.onequarter = 834;
- t.Scaron = 667;
- t.Scommaaccent = 667;
- t.Ohungarumlaut = 778;
- t.degree = 400;
- t.ograve = 611;
- t.Ccaron = 722;
- t.ugrave = 611;
- t.radical = 549;
- t.Dcaron = 722;
- t.rcommaaccent = 389;
- t.Ntilde = 722;
- t.otilde = 611;
- t.Rcommaaccent = 722;
- t.Lcommaaccent = 611;
- t.Atilde = 722;
- t.Aogonek = 722;
- t.Aring = 722;
- t.Otilde = 778;
- t.zdotaccent = 500;
- t.Ecaron = 667;
- t.Iogonek = 278;
- t.kcommaaccent = 556;
- t.minus = 584;
- t.Icircumflex = 278;
- t.ncaron = 611;
- t.tcommaaccent = 333;
- t.logicalnot = 584;
- t.odieresis = 611;
- t.udieresis = 611;
- t.notequal = 549;
- t.gcommaaccent = 611;
- t.eth = 611;
- t.zcaron = 500;
- t.ncommaaccent = 611;
- t.onesuperior = 333;
- t.imacron = 278;
- t.Euro = 556;
- });
- t["Helvetica-Oblique"] = (0, _core_utils.getLookupTableFactory)(function (t) {
- t.space = 278;
- t.exclam = 278;
- t.quotedbl = 355;
- t.numbersign = 556;
- t.dollar = 556;
- t.percent = 889;
- t.ampersand = 667;
- t.quoteright = 222;
- t.parenleft = 333;
- t.parenright = 333;
- t.asterisk = 389;
- t.plus = 584;
- t.comma = 278;
- t.hyphen = 333;
- t.period = 278;
- t.slash = 278;
- t.zero = 556;
- t.one = 556;
- t.two = 556;
- t.three = 556;
- t.four = 556;
- t.five = 556;
- t.six = 556;
- t.seven = 556;
- t.eight = 556;
- t.nine = 556;
- t.colon = 278;
- t.semicolon = 278;
- t.less = 584;
- t.equal = 584;
- t.greater = 584;
- t.question = 556;
- t.at = 1015;
- t.A = 667;
- t.B = 667;
- t.C = 722;
- t.D = 722;
- t.E = 667;
- t.F = 611;
- t.G = 778;
- t.H = 722;
- t.I = 278;
- t.J = 500;
- t.K = 667;
- t.L = 556;
- t.M = 833;
- t.N = 722;
- t.O = 778;
- t.P = 667;
- t.Q = 778;
- t.R = 722;
- t.S = 667;
- t.T = 611;
- t.U = 722;
- t.V = 667;
- t.W = 944;
- t.X = 667;
- t.Y = 667;
- t.Z = 611;
- t.bracketleft = 278;
- t.backslash = 278;
- t.bracketright = 278;
- t.asciicircum = 469;
- t.underscore = 556;
- t.quoteleft = 222;
- t.a = 556;
- t.b = 556;
- t.c = 500;
- t.d = 556;
- t.e = 556;
- t.f = 278;
- t.g = 556;
- t.h = 556;
- t.i = 222;
- t.j = 222;
- t.k = 500;
- t.l = 222;
- t.m = 833;
- t.n = 556;
- t.o = 556;
- t.p = 556;
- t.q = 556;
- t.r = 333;
- t.s = 500;
- t.t = 278;
- t.u = 556;
- t.v = 500;
- t.w = 722;
- t.x = 500;
- t.y = 500;
- t.z = 500;
- t.braceleft = 334;
- t.bar = 260;
- t.braceright = 334;
- t.asciitilde = 584;
- t.exclamdown = 333;
- t.cent = 556;
- t.sterling = 556;
- t.fraction = 167;
- t.yen = 556;
- t.florin = 556;
- t.section = 556;
- t.currency = 556;
- t.quotesingle = 191;
- t.quotedblleft = 333;
- t.guillemotleft = 556;
- t.guilsinglleft = 333;
- t.guilsinglright = 333;
- t.fi = 500;
- t.fl = 500;
- t.endash = 556;
- t.dagger = 556;
- t.daggerdbl = 556;
- t.periodcentered = 278;
- t.paragraph = 537;
- t.bullet = 350;
- t.quotesinglbase = 222;
- t.quotedblbase = 333;
- t.quotedblright = 333;
- t.guillemotright = 556;
- t.ellipsis = 1000;
- t.perthousand = 1000;
- t.questiondown = 611;
- t.grave = 333;
- t.acute = 333;
- t.circumflex = 333;
- t.tilde = 333;
- t.macron = 333;
- t.breve = 333;
- t.dotaccent = 333;
- t.dieresis = 333;
- t.ring = 333;
- t.cedilla = 333;
- t.hungarumlaut = 333;
- t.ogonek = 333;
- t.caron = 333;
- t.emdash = 1000;
- t.AE = 1000;
- t.ordfeminine = 370;
- t.Lslash = 556;
- t.Oslash = 778;
- t.OE = 1000;
- t.ordmasculine = 365;
- t.ae = 889;
- t.dotlessi = 278;
- t.lslash = 222;
- t.oslash = 611;
- t.oe = 944;
- t.germandbls = 611;
- t.Idieresis = 278;
- t.eacute = 556;
- t.abreve = 556;
- t.uhungarumlaut = 556;
- t.ecaron = 556;
- t.Ydieresis = 667;
- t.divide = 584;
- t.Yacute = 667;
- t.Acircumflex = 667;
- t.aacute = 556;
- t.Ucircumflex = 722;
- t.yacute = 500;
- t.scommaaccent = 500;
- t.ecircumflex = 556;
- t.Uring = 722;
- t.Udieresis = 722;
- t.aogonek = 556;
- t.Uacute = 722;
- t.uogonek = 556;
- t.Edieresis = 667;
- t.Dcroat = 722;
- t.commaaccent = 250;
- t.copyright = 737;
- t.Emacron = 667;
- t.ccaron = 500;
- t.aring = 556;
- t.Ncommaaccent = 722;
- t.lacute = 222;
- t.agrave = 556;
- t.Tcommaaccent = 611;
- t.Cacute = 722;
- t.atilde = 556;
- t.Edotaccent = 667;
- t.scaron = 500;
- t.scedilla = 500;
- t.iacute = 278;
- t.lozenge = 471;
- t.Rcaron = 722;
- t.Gcommaaccent = 778;
- t.ucircumflex = 556;
- t.acircumflex = 556;
- t.Amacron = 667;
- t.rcaron = 333;
- t.ccedilla = 500;
- t.Zdotaccent = 611;
- t.Thorn = 667;
- t.Omacron = 778;
- t.Racute = 722;
- t.Sacute = 667;
- t.dcaron = 643;
- t.Umacron = 722;
- t.uring = 556;
- t.threesuperior = 333;
- t.Ograve = 778;
- t.Agrave = 667;
- t.Abreve = 667;
- t.multiply = 584;
- t.uacute = 556;
- t.Tcaron = 611;
- t.partialdiff = 476;
- t.ydieresis = 500;
- t.Nacute = 722;
- t.icircumflex = 278;
- t.Ecircumflex = 667;
- t.adieresis = 556;
- t.edieresis = 556;
- t.cacute = 500;
- t.nacute = 556;
- t.umacron = 556;
- t.Ncaron = 722;
- t.Iacute = 278;
- t.plusminus = 584;
- t.brokenbar = 260;
- t.registered = 737;
- t.Gbreve = 778;
- t.Idotaccent = 278;
- t.summation = 600;
- t.Egrave = 667;
- t.racute = 333;
- t.omacron = 556;
- t.Zacute = 611;
- t.Zcaron = 611;
- t.greaterequal = 549;
- t.Eth = 722;
- t.Ccedilla = 722;
- t.lcommaaccent = 222;
- t.tcaron = 317;
- t.eogonek = 556;
- t.Uogonek = 722;
- t.Aacute = 667;
- t.Adieresis = 667;
- t.egrave = 556;
- t.zacute = 500;
- t.iogonek = 222;
- t.Oacute = 778;
- t.oacute = 556;
- t.amacron = 556;
- t.sacute = 500;
- t.idieresis = 278;
- t.Ocircumflex = 778;
- t.Ugrave = 722;
- t.Delta = 612;
- t.thorn = 556;
- t.twosuperior = 333;
- t.Odieresis = 778;
- t.mu = 556;
- t.igrave = 278;
- t.ohungarumlaut = 556;
- t.Eogonek = 667;
- t.dcroat = 556;
- t.threequarters = 834;
- t.Scedilla = 667;
- t.lcaron = 299;
- t.Kcommaaccent = 667;
- t.Lacute = 556;
- t.trademark = 1000;
- t.edotaccent = 556;
- t.Igrave = 278;
- t.Imacron = 278;
- t.Lcaron = 556;
- t.onehalf = 834;
- t.lessequal = 549;
- t.ocircumflex = 556;
- t.ntilde = 556;
- t.Uhungarumlaut = 722;
- t.Eacute = 667;
- t.emacron = 556;
- t.gbreve = 556;
- t.onequarter = 834;
- t.Scaron = 667;
- t.Scommaaccent = 667;
- t.Ohungarumlaut = 778;
- t.degree = 400;
- t.ograve = 556;
- t.Ccaron = 722;
- t.ugrave = 556;
- t.radical = 453;
- t.Dcaron = 722;
- t.rcommaaccent = 333;
- t.Ntilde = 722;
- t.otilde = 556;
- t.Rcommaaccent = 722;
- t.Lcommaaccent = 556;
- t.Atilde = 667;
- t.Aogonek = 667;
- t.Aring = 667;
- t.Otilde = 778;
- t.zdotaccent = 500;
- t.Ecaron = 667;
- t.Iogonek = 278;
- t.kcommaaccent = 500;
- t.minus = 584;
- t.Icircumflex = 278;
- t.ncaron = 556;
- t.tcommaaccent = 278;
- t.logicalnot = 584;
- t.odieresis = 556;
- t.udieresis = 556;
- t.notequal = 549;
- t.gcommaaccent = 556;
- t.eth = 556;
- t.zcaron = 500;
- t.ncommaaccent = 556;
- t.onesuperior = 333;
- t.imacron = 278;
- t.Euro = 556;
- });
- t.Symbol = (0, _core_utils.getLookupTableFactory)(function (t) {
- t.space = 250;
- t.exclam = 333;
- t.universal = 713;
- t.numbersign = 500;
- t.existential = 549;
- t.percent = 833;
- t.ampersand = 778;
- t.suchthat = 439;
- t.parenleft = 333;
- t.parenright = 333;
- t.asteriskmath = 500;
- t.plus = 549;
- t.comma = 250;
- t.minus = 549;
- t.period = 250;
- t.slash = 278;
- t.zero = 500;
- t.one = 500;
- t.two = 500;
- t.three = 500;
- t.four = 500;
- t.five = 500;
- t.six = 500;
- t.seven = 500;
- t.eight = 500;
- t.nine = 500;
- t.colon = 278;
- t.semicolon = 278;
- t.less = 549;
- t.equal = 549;
- t.greater = 549;
- t.question = 444;
- t.congruent = 549;
- t.Alpha = 722;
- t.Beta = 667;
- t.Chi = 722;
- t.Delta = 612;
- t.Epsilon = 611;
- t.Phi = 763;
- t.Gamma = 603;
- t.Eta = 722;
- t.Iota = 333;
- t.theta1 = 631;
- t.Kappa = 722;
- t.Lambda = 686;
- t.Mu = 889;
- t.Nu = 722;
- t.Omicron = 722;
- t.Pi = 768;
- t.Theta = 741;
- t.Rho = 556;
- t.Sigma = 592;
- t.Tau = 611;
- t.Upsilon = 690;
- t.sigma1 = 439;
- t.Omega = 768;
- t.Xi = 645;
- t.Psi = 795;
- t.Zeta = 611;
- t.bracketleft = 333;
- t.therefore = 863;
- t.bracketright = 333;
- t.perpendicular = 658;
- t.underscore = 500;
- t.radicalex = 500;
- t.alpha = 631;
- t.beta = 549;
- t.chi = 549;
- t.delta = 494;
- t.epsilon = 439;
- t.phi = 521;
- t.gamma = 411;
- t.eta = 603;
- t.iota = 329;
- t.phi1 = 603;
- t.kappa = 549;
- t.lambda = 549;
- t.mu = 576;
- t.nu = 521;
- t.omicron = 549;
- t.pi = 549;
- t.theta = 521;
- t.rho = 549;
- t.sigma = 603;
- t.tau = 439;
- t.upsilon = 576;
- t.omega1 = 713;
- t.omega = 686;
- t.xi = 493;
- t.psi = 686;
- t.zeta = 494;
- t.braceleft = 480;
- t.bar = 200;
- t.braceright = 480;
- t.similar = 549;
- t.Euro = 750;
- t.Upsilon1 = 620;
- t.minute = 247;
- t.lessequal = 549;
- t.fraction = 167;
- t.infinity = 713;
- t.florin = 500;
- t.club = 753;
- t.diamond = 753;
- t.heart = 753;
- t.spade = 753;
- t.arrowboth = 1042;
- t.arrowleft = 987;
- t.arrowup = 603;
- t.arrowright = 987;
- t.arrowdown = 603;
- t.degree = 400;
- t.plusminus = 549;
- t.second = 411;
- t.greaterequal = 549;
- t.multiply = 549;
- t.proportional = 713;
- t.partialdiff = 494;
- t.bullet = 460;
- t.divide = 549;
- t.notequal = 549;
- t.equivalence = 549;
- t.approxequal = 549;
- t.ellipsis = 1000;
- t.arrowvertex = 603;
- t.arrowhorizex = 1000;
- t.carriagereturn = 658;
- t.aleph = 823;
- t.Ifraktur = 686;
- t.Rfraktur = 795;
- t.weierstrass = 987;
- t.circlemultiply = 768;
- t.circleplus = 768;
- t.emptyset = 823;
- t.intersection = 768;
- t.union = 768;
- t.propersuperset = 713;
- t.reflexsuperset = 713;
- t.notsubset = 713;
- t.propersubset = 713;
- t.reflexsubset = 713;
- t.element = 713;
- t.notelement = 713;
- t.angle = 768;
- t.gradient = 713;
- t.registerserif = 790;
- t.copyrightserif = 790;
- t.trademarkserif = 890;
- t.product = 823;
- t.radical = 549;
- t.dotmath = 250;
- t.logicalnot = 713;
- t.logicaland = 603;
- t.logicalor = 603;
- t.arrowdblboth = 1042;
- t.arrowdblleft = 987;
- t.arrowdblup = 603;
- t.arrowdblright = 987;
- t.arrowdbldown = 603;
- t.lozenge = 494;
- t.angleleft = 329;
- t.registersans = 790;
- t.copyrightsans = 790;
- t.trademarksans = 786;
- t.summation = 713;
- t.parenlefttp = 384;
- t.parenleftex = 384;
- t.parenleftbt = 384;
- t.bracketlefttp = 384;
- t.bracketleftex = 384;
- t.bracketleftbt = 384;
- t.bracelefttp = 494;
- t.braceleftmid = 494;
- t.braceleftbt = 494;
- t.braceex = 494;
- t.angleright = 329;
- t.integral = 274;
- t.integraltp = 686;
- t.integralex = 686;
- t.integralbt = 686;
- t.parenrighttp = 384;
- t.parenrightex = 384;
- t.parenrightbt = 384;
- t.bracketrighttp = 384;
- t.bracketrightex = 384;
- t.bracketrightbt = 384;
- t.bracerighttp = 494;
- t.bracerightmid = 494;
- t.bracerightbt = 494;
- t.apple = 790;
- });
- t["Times-Roman"] = (0, _core_utils.getLookupTableFactory)(function (t) {
- t.space = 250;
- t.exclam = 333;
- t.quotedbl = 408;
- t.numbersign = 500;
- t.dollar = 500;
- t.percent = 833;
- t.ampersand = 778;
- t.quoteright = 333;
- t.parenleft = 333;
- t.parenright = 333;
- t.asterisk = 500;
- t.plus = 564;
- t.comma = 250;
- t.hyphen = 333;
- t.period = 250;
- t.slash = 278;
- t.zero = 500;
- t.one = 500;
- t.two = 500;
- t.three = 500;
- t.four = 500;
- t.five = 500;
- t.six = 500;
- t.seven = 500;
- t.eight = 500;
- t.nine = 500;
- t.colon = 278;
- t.semicolon = 278;
- t.less = 564;
- t.equal = 564;
- t.greater = 564;
- t.question = 444;
- t.at = 921;
- t.A = 722;
- t.B = 667;
- t.C = 667;
- t.D = 722;
- t.E = 611;
- t.F = 556;
- t.G = 722;
- t.H = 722;
- t.I = 333;
- t.J = 389;
- t.K = 722;
- t.L = 611;
- t.M = 889;
- t.N = 722;
- t.O = 722;
- t.P = 556;
- t.Q = 722;
- t.R = 667;
- t.S = 556;
- t.T = 611;
- t.U = 722;
- t.V = 722;
- t.W = 944;
- t.X = 722;
- t.Y = 722;
- t.Z = 611;
- t.bracketleft = 333;
- t.backslash = 278;
- t.bracketright = 333;
- t.asciicircum = 469;
- t.underscore = 500;
- t.quoteleft = 333;
- t.a = 444;
- t.b = 500;
- t.c = 444;
- t.d = 500;
- t.e = 444;
- t.f = 333;
- t.g = 500;
- t.h = 500;
- t.i = 278;
- t.j = 278;
- t.k = 500;
- t.l = 278;
- t.m = 778;
- t.n = 500;
- t.o = 500;
- t.p = 500;
- t.q = 500;
- t.r = 333;
- t.s = 389;
- t.t = 278;
- t.u = 500;
- t.v = 500;
- t.w = 722;
- t.x = 500;
- t.y = 500;
- t.z = 444;
- t.braceleft = 480;
- t.bar = 200;
- t.braceright = 480;
- t.asciitilde = 541;
- t.exclamdown = 333;
- t.cent = 500;
- t.sterling = 500;
- t.fraction = 167;
- t.yen = 500;
- t.florin = 500;
- t.section = 500;
- t.currency = 500;
- t.quotesingle = 180;
- t.quotedblleft = 444;
- t.guillemotleft = 500;
- t.guilsinglleft = 333;
- t.guilsinglright = 333;
- t.fi = 556;
- t.fl = 556;
- t.endash = 500;
- t.dagger = 500;
- t.daggerdbl = 500;
- t.periodcentered = 250;
- t.paragraph = 453;
- t.bullet = 350;
- t.quotesinglbase = 333;
- t.quotedblbase = 444;
- t.quotedblright = 444;
- t.guillemotright = 500;
- t.ellipsis = 1000;
- t.perthousand = 1000;
- t.questiondown = 444;
- t.grave = 333;
- t.acute = 333;
- t.circumflex = 333;
- t.tilde = 333;
- t.macron = 333;
- t.breve = 333;
- t.dotaccent = 333;
- t.dieresis = 333;
- t.ring = 333;
- t.cedilla = 333;
- t.hungarumlaut = 333;
- t.ogonek = 333;
- t.caron = 333;
- t.emdash = 1000;
- t.AE = 889;
- t.ordfeminine = 276;
- t.Lslash = 611;
- t.Oslash = 722;
- t.OE = 889;
- t.ordmasculine = 310;
- t.ae = 667;
- t.dotlessi = 278;
- t.lslash = 278;
- t.oslash = 500;
- t.oe = 722;
- t.germandbls = 500;
- t.Idieresis = 333;
- t.eacute = 444;
- t.abreve = 444;
- t.uhungarumlaut = 500;
- t.ecaron = 444;
- t.Ydieresis = 722;
- t.divide = 564;
- t.Yacute = 722;
- t.Acircumflex = 722;
- t.aacute = 444;
- t.Ucircumflex = 722;
- t.yacute = 500;
- t.scommaaccent = 389;
- t.ecircumflex = 444;
- t.Uring = 722;
- t.Udieresis = 722;
- t.aogonek = 444;
- t.Uacute = 722;
- t.uogonek = 500;
- t.Edieresis = 611;
- t.Dcroat = 722;
- t.commaaccent = 250;
- t.copyright = 760;
- t.Emacron = 611;
- t.ccaron = 444;
- t.aring = 444;
- t.Ncommaaccent = 722;
- t.lacute = 278;
- t.agrave = 444;
- t.Tcommaaccent = 611;
- t.Cacute = 667;
- t.atilde = 444;
- t.Edotaccent = 611;
- t.scaron = 389;
- t.scedilla = 389;
- t.iacute = 278;
- t.lozenge = 471;
- t.Rcaron = 667;
- t.Gcommaaccent = 722;
- t.ucircumflex = 500;
- t.acircumflex = 444;
- t.Amacron = 722;
- t.rcaron = 333;
- t.ccedilla = 444;
- t.Zdotaccent = 611;
- t.Thorn = 556;
- t.Omacron = 722;
- t.Racute = 667;
- t.Sacute = 556;
- t.dcaron = 588;
- t.Umacron = 722;
- t.uring = 500;
- t.threesuperior = 300;
- t.Ograve = 722;
- t.Agrave = 722;
- t.Abreve = 722;
- t.multiply = 564;
- t.uacute = 500;
- t.Tcaron = 611;
- t.partialdiff = 476;
- t.ydieresis = 500;
- t.Nacute = 722;
- t.icircumflex = 278;
- t.Ecircumflex = 611;
- t.adieresis = 444;
- t.edieresis = 444;
- t.cacute = 444;
- t.nacute = 500;
- t.umacron = 500;
- t.Ncaron = 722;
- t.Iacute = 333;
- t.plusminus = 564;
- t.brokenbar = 200;
- t.registered = 760;
- t.Gbreve = 722;
- t.Idotaccent = 333;
- t.summation = 600;
- t.Egrave = 611;
- t.racute = 333;
- t.omacron = 500;
- t.Zacute = 611;
- t.Zcaron = 611;
- t.greaterequal = 549;
- t.Eth = 722;
- t.Ccedilla = 667;
- t.lcommaaccent = 278;
- t.tcaron = 326;
- t.eogonek = 444;
- t.Uogonek = 722;
- t.Aacute = 722;
- t.Adieresis = 722;
- t.egrave = 444;
- t.zacute = 444;
- t.iogonek = 278;
- t.Oacute = 722;
- t.oacute = 500;
- t.amacron = 444;
- t.sacute = 389;
- t.idieresis = 278;
- t.Ocircumflex = 722;
- t.Ugrave = 722;
- t.Delta = 612;
- t.thorn = 500;
- t.twosuperior = 300;
- t.Odieresis = 722;
- t.mu = 500;
- t.igrave = 278;
- t.ohungarumlaut = 500;
- t.Eogonek = 611;
- t.dcroat = 500;
- t.threequarters = 750;
- t.Scedilla = 556;
- t.lcaron = 344;
- t.Kcommaaccent = 722;
- t.Lacute = 611;
- t.trademark = 980;
- t.edotaccent = 444;
- t.Igrave = 333;
- t.Imacron = 333;
- t.Lcaron = 611;
- t.onehalf = 750;
- t.lessequal = 549;
- t.ocircumflex = 500;
- t.ntilde = 500;
- t.Uhungarumlaut = 722;
- t.Eacute = 611;
- t.emacron = 444;
- t.gbreve = 500;
- t.onequarter = 750;
- t.Scaron = 556;
- t.Scommaaccent = 556;
- t.Ohungarumlaut = 722;
- t.degree = 400;
- t.ograve = 500;
- t.Ccaron = 667;
- t.ugrave = 500;
- t.radical = 453;
- t.Dcaron = 722;
- t.rcommaaccent = 333;
- t.Ntilde = 722;
- t.otilde = 500;
- t.Rcommaaccent = 667;
- t.Lcommaaccent = 611;
- t.Atilde = 722;
- t.Aogonek = 722;
- t.Aring = 722;
- t.Otilde = 722;
- t.zdotaccent = 444;
- t.Ecaron = 611;
- t.Iogonek = 333;
- t.kcommaaccent = 500;
- t.minus = 564;
- t.Icircumflex = 333;
- t.ncaron = 500;
- t.tcommaaccent = 278;
- t.logicalnot = 564;
- t.odieresis = 500;
- t.udieresis = 500;
- t.notequal = 549;
- t.gcommaaccent = 500;
- t.eth = 500;
- t.zcaron = 444;
- t.ncommaaccent = 500;
- t.onesuperior = 300;
- t.imacron = 278;
- t.Euro = 500;
- });
- t["Times-Bold"] = (0, _core_utils.getLookupTableFactory)(function (t) {
- t.space = 250;
- t.exclam = 333;
- t.quotedbl = 555;
- t.numbersign = 500;
- t.dollar = 500;
- t.percent = 1000;
- t.ampersand = 833;
- t.quoteright = 333;
- t.parenleft = 333;
- t.parenright = 333;
- t.asterisk = 500;
- t.plus = 570;
- t.comma = 250;
- t.hyphen = 333;
- t.period = 250;
- t.slash = 278;
- t.zero = 500;
- t.one = 500;
- t.two = 500;
- t.three = 500;
- t.four = 500;
- t.five = 500;
- t.six = 500;
- t.seven = 500;
- t.eight = 500;
- t.nine = 500;
- t.colon = 333;
- t.semicolon = 333;
- t.less = 570;
- t.equal = 570;
- t.greater = 570;
- t.question = 500;
- t.at = 930;
- t.A = 722;
- t.B = 667;
- t.C = 722;
- t.D = 722;
- t.E = 667;
- t.F = 611;
- t.G = 778;
- t.H = 778;
- t.I = 389;
- t.J = 500;
- t.K = 778;
- t.L = 667;
- t.M = 944;
- t.N = 722;
- t.O = 778;
- t.P = 611;
- t.Q = 778;
- t.R = 722;
- t.S = 556;
- t.T = 667;
- t.U = 722;
- t.V = 722;
- t.W = 1000;
- t.X = 722;
- t.Y = 722;
- t.Z = 667;
- t.bracketleft = 333;
- t.backslash = 278;
- t.bracketright = 333;
- t.asciicircum = 581;
- t.underscore = 500;
- t.quoteleft = 333;
- t.a = 500;
- t.b = 556;
- t.c = 444;
- t.d = 556;
- t.e = 444;
- t.f = 333;
- t.g = 500;
- t.h = 556;
- t.i = 278;
- t.j = 333;
- t.k = 556;
- t.l = 278;
- t.m = 833;
- t.n = 556;
- t.o = 500;
- t.p = 556;
- t.q = 556;
- t.r = 444;
- t.s = 389;
- t.t = 333;
- t.u = 556;
- t.v = 500;
- t.w = 722;
- t.x = 500;
- t.y = 500;
- t.z = 444;
- t.braceleft = 394;
- t.bar = 220;
- t.braceright = 394;
- t.asciitilde = 520;
- t.exclamdown = 333;
- t.cent = 500;
- t.sterling = 500;
- t.fraction = 167;
- t.yen = 500;
- t.florin = 500;
- t.section = 500;
- t.currency = 500;
- t.quotesingle = 278;
- t.quotedblleft = 500;
- t.guillemotleft = 500;
- t.guilsinglleft = 333;
- t.guilsinglright = 333;
- t.fi = 556;
- t.fl = 556;
- t.endash = 500;
- t.dagger = 500;
- t.daggerdbl = 500;
- t.periodcentered = 250;
- t.paragraph = 540;
- t.bullet = 350;
- t.quotesinglbase = 333;
- t.quotedblbase = 500;
- t.quotedblright = 500;
- t.guillemotright = 500;
- t.ellipsis = 1000;
- t.perthousand = 1000;
- t.questiondown = 500;
- t.grave = 333;
- t.acute = 333;
- t.circumflex = 333;
- t.tilde = 333;
- t.macron = 333;
- t.breve = 333;
- t.dotaccent = 333;
- t.dieresis = 333;
- t.ring = 333;
- t.cedilla = 333;
- t.hungarumlaut = 333;
- t.ogonek = 333;
- t.caron = 333;
- t.emdash = 1000;
- t.AE = 1000;
- t.ordfeminine = 300;
- t.Lslash = 667;
- t.Oslash = 778;
- t.OE = 1000;
- t.ordmasculine = 330;
- t.ae = 722;
- t.dotlessi = 278;
- t.lslash = 278;
- t.oslash = 500;
- t.oe = 722;
- t.germandbls = 556;
- t.Idieresis = 389;
- t.eacute = 444;
- t.abreve = 500;
- t.uhungarumlaut = 556;
- t.ecaron = 444;
- t.Ydieresis = 722;
- t.divide = 570;
- t.Yacute = 722;
- t.Acircumflex = 722;
- t.aacute = 500;
- t.Ucircumflex = 722;
- t.yacute = 500;
- t.scommaaccent = 389;
- t.ecircumflex = 444;
- t.Uring = 722;
- t.Udieresis = 722;
- t.aogonek = 500;
- t.Uacute = 722;
- t.uogonek = 556;
- t.Edieresis = 667;
- t.Dcroat = 722;
- t.commaaccent = 250;
- t.copyright = 747;
- t.Emacron = 667;
- t.ccaron = 444;
- t.aring = 500;
- t.Ncommaaccent = 722;
- t.lacute = 278;
- t.agrave = 500;
- t.Tcommaaccent = 667;
- t.Cacute = 722;
- t.atilde = 500;
- t.Edotaccent = 667;
- t.scaron = 389;
- t.scedilla = 389;
- t.iacute = 278;
- t.lozenge = 494;
- t.Rcaron = 722;
- t.Gcommaaccent = 778;
- t.ucircumflex = 556;
- t.acircumflex = 500;
- t.Amacron = 722;
- t.rcaron = 444;
- t.ccedilla = 444;
- t.Zdotaccent = 667;
- t.Thorn = 611;
- t.Omacron = 778;
- t.Racute = 722;
- t.Sacute = 556;
- t.dcaron = 672;
- t.Umacron = 722;
- t.uring = 556;
- t.threesuperior = 300;
- t.Ograve = 778;
- t.Agrave = 722;
- t.Abreve = 722;
- t.multiply = 570;
- t.uacute = 556;
- t.Tcaron = 667;
- t.partialdiff = 494;
- t.ydieresis = 500;
- t.Nacute = 722;
- t.icircumflex = 278;
- t.Ecircumflex = 667;
- t.adieresis = 500;
- t.edieresis = 444;
- t.cacute = 444;
- t.nacute = 556;
- t.umacron = 556;
- t.Ncaron = 722;
- t.Iacute = 389;
- t.plusminus = 570;
- t.brokenbar = 220;
- t.registered = 747;
- t.Gbreve = 778;
- t.Idotaccent = 389;
- t.summation = 600;
- t.Egrave = 667;
- t.racute = 444;
- t.omacron = 500;
- t.Zacute = 667;
- t.Zcaron = 667;
- t.greaterequal = 549;
- t.Eth = 722;
- t.Ccedilla = 722;
- t.lcommaaccent = 278;
- t.tcaron = 416;
- t.eogonek = 444;
- t.Uogonek = 722;
- t.Aacute = 722;
- t.Adieresis = 722;
- t.egrave = 444;
- t.zacute = 444;
- t.iogonek = 278;
- t.Oacute = 778;
- t.oacute = 500;
- t.amacron = 500;
- t.sacute = 389;
- t.idieresis = 278;
- t.Ocircumflex = 778;
- t.Ugrave = 722;
- t.Delta = 612;
- t.thorn = 556;
- t.twosuperior = 300;
- t.Odieresis = 778;
- t.mu = 556;
- t.igrave = 278;
- t.ohungarumlaut = 500;
- t.Eogonek = 667;
- t.dcroat = 556;
- t.threequarters = 750;
- t.Scedilla = 556;
- t.lcaron = 394;
- t.Kcommaaccent = 778;
- t.Lacute = 667;
- t.trademark = 1000;
- t.edotaccent = 444;
- t.Igrave = 389;
- t.Imacron = 389;
- t.Lcaron = 667;
- t.onehalf = 750;
- t.lessequal = 549;
- t.ocircumflex = 500;
- t.ntilde = 556;
- t.Uhungarumlaut = 722;
- t.Eacute = 667;
- t.emacron = 444;
- t.gbreve = 500;
- t.onequarter = 750;
- t.Scaron = 556;
- t.Scommaaccent = 556;
- t.Ohungarumlaut = 778;
- t.degree = 400;
- t.ograve = 500;
- t.Ccaron = 722;
- t.ugrave = 556;
- t.radical = 549;
- t.Dcaron = 722;
- t.rcommaaccent = 444;
- t.Ntilde = 722;
- t.otilde = 500;
- t.Rcommaaccent = 722;
- t.Lcommaaccent = 667;
- t.Atilde = 722;
- t.Aogonek = 722;
- t.Aring = 722;
- t.Otilde = 778;
- t.zdotaccent = 444;
- t.Ecaron = 667;
- t.Iogonek = 389;
- t.kcommaaccent = 556;
- t.minus = 570;
- t.Icircumflex = 389;
- t.ncaron = 556;
- t.tcommaaccent = 333;
- t.logicalnot = 570;
- t.odieresis = 500;
- t.udieresis = 556;
- t.notequal = 549;
- t.gcommaaccent = 500;
- t.eth = 500;
- t.zcaron = 444;
- t.ncommaaccent = 556;
- t.onesuperior = 300;
- t.imacron = 278;
- t.Euro = 500;
- });
- t["Times-BoldItalic"] = (0, _core_utils.getLookupTableFactory)(function (t) {
- t.space = 250;
- t.exclam = 389;
- t.quotedbl = 555;
- t.numbersign = 500;
- t.dollar = 500;
- t.percent = 833;
- t.ampersand = 778;
- t.quoteright = 333;
- t.parenleft = 333;
- t.parenright = 333;
- t.asterisk = 500;
- t.plus = 570;
- t.comma = 250;
- t.hyphen = 333;
- t.period = 250;
- t.slash = 278;
- t.zero = 500;
- t.one = 500;
- t.two = 500;
- t.three = 500;
- t.four = 500;
- t.five = 500;
- t.six = 500;
- t.seven = 500;
- t.eight = 500;
- t.nine = 500;
- t.colon = 333;
- t.semicolon = 333;
- t.less = 570;
- t.equal = 570;
- t.greater = 570;
- t.question = 500;
- t.at = 832;
- t.A = 667;
- t.B = 667;
- t.C = 667;
- t.D = 722;
- t.E = 667;
- t.F = 667;
- t.G = 722;
- t.H = 778;
- t.I = 389;
- t.J = 500;
- t.K = 667;
- t.L = 611;
- t.M = 889;
- t.N = 722;
- t.O = 722;
- t.P = 611;
- t.Q = 722;
- t.R = 667;
- t.S = 556;
- t.T = 611;
- t.U = 722;
- t.V = 667;
- t.W = 889;
- t.X = 667;
- t.Y = 611;
- t.Z = 611;
- t.bracketleft = 333;
- t.backslash = 278;
- t.bracketright = 333;
- t.asciicircum = 570;
- t.underscore = 500;
- t.quoteleft = 333;
- t.a = 500;
- t.b = 500;
- t.c = 444;
- t.d = 500;
- t.e = 444;
- t.f = 333;
- t.g = 500;
- t.h = 556;
- t.i = 278;
- t.j = 278;
- t.k = 500;
- t.l = 278;
- t.m = 778;
- t.n = 556;
- t.o = 500;
- t.p = 500;
- t.q = 500;
- t.r = 389;
- t.s = 389;
- t.t = 278;
- t.u = 556;
- t.v = 444;
- t.w = 667;
- t.x = 500;
- t.y = 444;
- t.z = 389;
- t.braceleft = 348;
- t.bar = 220;
- t.braceright = 348;
- t.asciitilde = 570;
- t.exclamdown = 389;
- t.cent = 500;
- t.sterling = 500;
- t.fraction = 167;
- t.yen = 500;
- t.florin = 500;
- t.section = 500;
- t.currency = 500;
- t.quotesingle = 278;
- t.quotedblleft = 500;
- t.guillemotleft = 500;
- t.guilsinglleft = 333;
- t.guilsinglright = 333;
- t.fi = 556;
- t.fl = 556;
- t.endash = 500;
- t.dagger = 500;
- t.daggerdbl = 500;
- t.periodcentered = 250;
- t.paragraph = 500;
- t.bullet = 350;
- t.quotesinglbase = 333;
- t.quotedblbase = 500;
- t.quotedblright = 500;
- t.guillemotright = 500;
- t.ellipsis = 1000;
- t.perthousand = 1000;
- t.questiondown = 500;
- t.grave = 333;
- t.acute = 333;
- t.circumflex = 333;
- t.tilde = 333;
- t.macron = 333;
- t.breve = 333;
- t.dotaccent = 333;
- t.dieresis = 333;
- t.ring = 333;
- t.cedilla = 333;
- t.hungarumlaut = 333;
- t.ogonek = 333;
- t.caron = 333;
- t.emdash = 1000;
- t.AE = 944;
- t.ordfeminine = 266;
- t.Lslash = 611;
- t.Oslash = 722;
- t.OE = 944;
- t.ordmasculine = 300;
- t.ae = 722;
- t.dotlessi = 278;
- t.lslash = 278;
- t.oslash = 500;
- t.oe = 722;
- t.germandbls = 500;
- t.Idieresis = 389;
- t.eacute = 444;
- t.abreve = 500;
- t.uhungarumlaut = 556;
- t.ecaron = 444;
- t.Ydieresis = 611;
- t.divide = 570;
- t.Yacute = 611;
- t.Acircumflex = 667;
- t.aacute = 500;
- t.Ucircumflex = 722;
- t.yacute = 444;
- t.scommaaccent = 389;
- t.ecircumflex = 444;
- t.Uring = 722;
- t.Udieresis = 722;
- t.aogonek = 500;
- t.Uacute = 722;
- t.uogonek = 556;
- t.Edieresis = 667;
- t.Dcroat = 722;
- t.commaaccent = 250;
- t.copyright = 747;
- t.Emacron = 667;
- t.ccaron = 444;
- t.aring = 500;
- t.Ncommaaccent = 722;
- t.lacute = 278;
- t.agrave = 500;
- t.Tcommaaccent = 611;
- t.Cacute = 667;
- t.atilde = 500;
- t.Edotaccent = 667;
- t.scaron = 389;
- t.scedilla = 389;
- t.iacute = 278;
- t.lozenge = 494;
- t.Rcaron = 667;
- t.Gcommaaccent = 722;
- t.ucircumflex = 556;
- t.acircumflex = 500;
- t.Amacron = 667;
- t.rcaron = 389;
- t.ccedilla = 444;
- t.Zdotaccent = 611;
- t.Thorn = 611;
- t.Omacron = 722;
- t.Racute = 667;
- t.Sacute = 556;
- t.dcaron = 608;
- t.Umacron = 722;
- t.uring = 556;
- t.threesuperior = 300;
- t.Ograve = 722;
- t.Agrave = 667;
- t.Abreve = 667;
- t.multiply = 570;
- t.uacute = 556;
- t.Tcaron = 611;
- t.partialdiff = 494;
- t.ydieresis = 444;
- t.Nacute = 722;
- t.icircumflex = 278;
- t.Ecircumflex = 667;
- t.adieresis = 500;
- t.edieresis = 444;
- t.cacute = 444;
- t.nacute = 556;
- t.umacron = 556;
- t.Ncaron = 722;
- t.Iacute = 389;
- t.plusminus = 570;
- t.brokenbar = 220;
- t.registered = 747;
- t.Gbreve = 722;
- t.Idotaccent = 389;
- t.summation = 600;
- t.Egrave = 667;
- t.racute = 389;
- t.omacron = 500;
- t.Zacute = 611;
- t.Zcaron = 611;
- t.greaterequal = 549;
- t.Eth = 722;
- t.Ccedilla = 667;
- t.lcommaaccent = 278;
- t.tcaron = 366;
- t.eogonek = 444;
- t.Uogonek = 722;
- t.Aacute = 667;
- t.Adieresis = 667;
- t.egrave = 444;
- t.zacute = 389;
- t.iogonek = 278;
- t.Oacute = 722;
- t.oacute = 500;
- t.amacron = 500;
- t.sacute = 389;
- t.idieresis = 278;
- t.Ocircumflex = 722;
- t.Ugrave = 722;
- t.Delta = 612;
- t.thorn = 500;
- t.twosuperior = 300;
- t.Odieresis = 722;
- t.mu = 576;
- t.igrave = 278;
- t.ohungarumlaut = 500;
- t.Eogonek = 667;
- t.dcroat = 500;
- t.threequarters = 750;
- t.Scedilla = 556;
- t.lcaron = 382;
- t.Kcommaaccent = 667;
- t.Lacute = 611;
- t.trademark = 1000;
- t.edotaccent = 444;
- t.Igrave = 389;
- t.Imacron = 389;
- t.Lcaron = 611;
- t.onehalf = 750;
- t.lessequal = 549;
- t.ocircumflex = 500;
- t.ntilde = 556;
- t.Uhungarumlaut = 722;
- t.Eacute = 667;
- t.emacron = 444;
- t.gbreve = 500;
- t.onequarter = 750;
- t.Scaron = 556;
- t.Scommaaccent = 556;
- t.Ohungarumlaut = 722;
- t.degree = 400;
- t.ograve = 500;
- t.Ccaron = 667;
- t.ugrave = 556;
- t.radical = 549;
- t.Dcaron = 722;
- t.rcommaaccent = 389;
- t.Ntilde = 722;
- t.otilde = 500;
- t.Rcommaaccent = 667;
- t.Lcommaaccent = 611;
- t.Atilde = 667;
- t.Aogonek = 667;
- t.Aring = 667;
- t.Otilde = 722;
- t.zdotaccent = 389;
- t.Ecaron = 667;
- t.Iogonek = 389;
- t.kcommaaccent = 500;
- t.minus = 606;
- t.Icircumflex = 389;
- t.ncaron = 556;
- t.tcommaaccent = 278;
- t.logicalnot = 606;
- t.odieresis = 500;
- t.udieresis = 556;
- t.notequal = 549;
- t.gcommaaccent = 500;
- t.eth = 500;
- t.zcaron = 389;
- t.ncommaaccent = 556;
- t.onesuperior = 300;
- t.imacron = 278;
- t.Euro = 500;
- });
- t["Times-Italic"] = (0, _core_utils.getLookupTableFactory)(function (t) {
- t.space = 250;
- t.exclam = 333;
- t.quotedbl = 420;
- t.numbersign = 500;
- t.dollar = 500;
- t.percent = 833;
- t.ampersand = 778;
- t.quoteright = 333;
- t.parenleft = 333;
- t.parenright = 333;
- t.asterisk = 500;
- t.plus = 675;
- t.comma = 250;
- t.hyphen = 333;
- t.period = 250;
- t.slash = 278;
- t.zero = 500;
- t.one = 500;
- t.two = 500;
- t.three = 500;
- t.four = 500;
- t.five = 500;
- t.six = 500;
- t.seven = 500;
- t.eight = 500;
- t.nine = 500;
- t.colon = 333;
- t.semicolon = 333;
- t.less = 675;
- t.equal = 675;
- t.greater = 675;
- t.question = 500;
- t.at = 920;
- t.A = 611;
- t.B = 611;
- t.C = 667;
- t.D = 722;
- t.E = 611;
- t.F = 611;
- t.G = 722;
- t.H = 722;
- t.I = 333;
- t.J = 444;
- t.K = 667;
- t.L = 556;
- t.M = 833;
- t.N = 667;
- t.O = 722;
- t.P = 611;
- t.Q = 722;
- t.R = 611;
- t.S = 500;
- t.T = 556;
- t.U = 722;
- t.V = 611;
- t.W = 833;
- t.X = 611;
- t.Y = 556;
- t.Z = 556;
- t.bracketleft = 389;
- t.backslash = 278;
- t.bracketright = 389;
- t.asciicircum = 422;
- t.underscore = 500;
- t.quoteleft = 333;
- t.a = 500;
- t.b = 500;
- t.c = 444;
- t.d = 500;
- t.e = 444;
- t.f = 278;
- t.g = 500;
- t.h = 500;
- t.i = 278;
- t.j = 278;
- t.k = 444;
- t.l = 278;
- t.m = 722;
- t.n = 500;
- t.o = 500;
- t.p = 500;
- t.q = 500;
- t.r = 389;
- t.s = 389;
- t.t = 278;
- t.u = 500;
- t.v = 444;
- t.w = 667;
- t.x = 444;
- t.y = 444;
- t.z = 389;
- t.braceleft = 400;
- t.bar = 275;
- t.braceright = 400;
- t.asciitilde = 541;
- t.exclamdown = 389;
- t.cent = 500;
- t.sterling = 500;
- t.fraction = 167;
- t.yen = 500;
- t.florin = 500;
- t.section = 500;
- t.currency = 500;
- t.quotesingle = 214;
- t.quotedblleft = 556;
- t.guillemotleft = 500;
- t.guilsinglleft = 333;
- t.guilsinglright = 333;
- t.fi = 500;
- t.fl = 500;
- t.endash = 500;
- t.dagger = 500;
- t.daggerdbl = 500;
- t.periodcentered = 250;
- t.paragraph = 523;
- t.bullet = 350;
- t.quotesinglbase = 333;
- t.quotedblbase = 556;
- t.quotedblright = 556;
- t.guillemotright = 500;
- t.ellipsis = 889;
- t.perthousand = 1000;
- t.questiondown = 500;
- t.grave = 333;
- t.acute = 333;
- t.circumflex = 333;
- t.tilde = 333;
- t.macron = 333;
- t.breve = 333;
- t.dotaccent = 333;
- t.dieresis = 333;
- t.ring = 333;
- t.cedilla = 333;
- t.hungarumlaut = 333;
- t.ogonek = 333;
- t.caron = 333;
- t.emdash = 889;
- t.AE = 889;
- t.ordfeminine = 276;
- t.Lslash = 556;
- t.Oslash = 722;
- t.OE = 944;
- t.ordmasculine = 310;
- t.ae = 667;
- t.dotlessi = 278;
- t.lslash = 278;
- t.oslash = 500;
- t.oe = 667;
- t.germandbls = 500;
- t.Idieresis = 333;
- t.eacute = 444;
- t.abreve = 500;
- t.uhungarumlaut = 500;
- t.ecaron = 444;
- t.Ydieresis = 556;
- t.divide = 675;
- t.Yacute = 556;
- t.Acircumflex = 611;
- t.aacute = 500;
- t.Ucircumflex = 722;
- t.yacute = 444;
- t.scommaaccent = 389;
- t.ecircumflex = 444;
- t.Uring = 722;
- t.Udieresis = 722;
- t.aogonek = 500;
- t.Uacute = 722;
- t.uogonek = 500;
- t.Edieresis = 611;
- t.Dcroat = 722;
- t.commaaccent = 250;
- t.copyright = 760;
- t.Emacron = 611;
- t.ccaron = 444;
- t.aring = 500;
- t.Ncommaaccent = 667;
- t.lacute = 278;
- t.agrave = 500;
- t.Tcommaaccent = 556;
- t.Cacute = 667;
- t.atilde = 500;
- t.Edotaccent = 611;
- t.scaron = 389;
- t.scedilla = 389;
- t.iacute = 278;
- t.lozenge = 471;
- t.Rcaron = 611;
- t.Gcommaaccent = 722;
- t.ucircumflex = 500;
- t.acircumflex = 500;
- t.Amacron = 611;
- t.rcaron = 389;
- t.ccedilla = 444;
- t.Zdotaccent = 556;
- t.Thorn = 611;
- t.Omacron = 722;
- t.Racute = 611;
- t.Sacute = 500;
- t.dcaron = 544;
- t.Umacron = 722;
- t.uring = 500;
- t.threesuperior = 300;
- t.Ograve = 722;
- t.Agrave = 611;
- t.Abreve = 611;
- t.multiply = 675;
- t.uacute = 500;
- t.Tcaron = 556;
- t.partialdiff = 476;
- t.ydieresis = 444;
- t.Nacute = 667;
- t.icircumflex = 278;
- t.Ecircumflex = 611;
- t.adieresis = 500;
- t.edieresis = 444;
- t.cacute = 444;
- t.nacute = 500;
- t.umacron = 500;
- t.Ncaron = 667;
- t.Iacute = 333;
- t.plusminus = 675;
- t.brokenbar = 275;
- t.registered = 760;
- t.Gbreve = 722;
- t.Idotaccent = 333;
- t.summation = 600;
- t.Egrave = 611;
- t.racute = 389;
- t.omacron = 500;
- t.Zacute = 556;
- t.Zcaron = 556;
- t.greaterequal = 549;
- t.Eth = 722;
- t.Ccedilla = 667;
- t.lcommaaccent = 278;
- t.tcaron = 300;
- t.eogonek = 444;
- t.Uogonek = 722;
- t.Aacute = 611;
- t.Adieresis = 611;
- t.egrave = 444;
- t.zacute = 389;
- t.iogonek = 278;
- t.Oacute = 722;
- t.oacute = 500;
- t.amacron = 500;
- t.sacute = 389;
- t.idieresis = 278;
- t.Ocircumflex = 722;
- t.Ugrave = 722;
- t.Delta = 612;
- t.thorn = 500;
- t.twosuperior = 300;
- t.Odieresis = 722;
- t.mu = 500;
- t.igrave = 278;
- t.ohungarumlaut = 500;
- t.Eogonek = 611;
- t.dcroat = 500;
- t.threequarters = 750;
- t.Scedilla = 500;
- t.lcaron = 300;
- t.Kcommaaccent = 667;
- t.Lacute = 556;
- t.trademark = 980;
- t.edotaccent = 444;
- t.Igrave = 333;
- t.Imacron = 333;
- t.Lcaron = 611;
- t.onehalf = 750;
- t.lessequal = 549;
- t.ocircumflex = 500;
- t.ntilde = 500;
- t.Uhungarumlaut = 722;
- t.Eacute = 611;
- t.emacron = 444;
- t.gbreve = 500;
- t.onequarter = 750;
- t.Scaron = 500;
- t.Scommaaccent = 500;
- t.Ohungarumlaut = 722;
- t.degree = 400;
- t.ograve = 500;
- t.Ccaron = 667;
- t.ugrave = 500;
- t.radical = 453;
- t.Dcaron = 722;
- t.rcommaaccent = 389;
- t.Ntilde = 667;
- t.otilde = 500;
- t.Rcommaaccent = 611;
- t.Lcommaaccent = 556;
- t.Atilde = 611;
- t.Aogonek = 611;
- t.Aring = 611;
- t.Otilde = 722;
- t.zdotaccent = 389;
- t.Ecaron = 611;
- t.Iogonek = 333;
- t.kcommaaccent = 444;
- t.minus = 675;
- t.Icircumflex = 333;
- t.ncaron = 500;
- t.tcommaaccent = 278;
- t.logicalnot = 675;
- t.odieresis = 500;
- t.udieresis = 500;
- t.notequal = 549;
- t.gcommaaccent = 500;
- t.eth = 500;
- t.zcaron = 389;
- t.ncommaaccent = 500;
- t.onesuperior = 300;
- t.imacron = 278;
- t.Euro = 500;
- });
- t.ZapfDingbats = (0, _core_utils.getLookupTableFactory)(function (t) {
- t.space = 278;
- t.a1 = 974;
- t.a2 = 961;
- t.a202 = 974;
- t.a3 = 980;
- t.a4 = 719;
- t.a5 = 789;
- t.a119 = 790;
- t.a118 = 791;
- t.a117 = 690;
- t.a11 = 960;
- t.a12 = 939;
- t.a13 = 549;
- t.a14 = 855;
- t.a15 = 911;
- t.a16 = 933;
- t.a105 = 911;
- t.a17 = 945;
- t.a18 = 974;
- t.a19 = 755;
- t.a20 = 846;
- t.a21 = 762;
- t.a22 = 761;
- t.a23 = 571;
- t.a24 = 677;
- t.a25 = 763;
- t.a26 = 760;
- t.a27 = 759;
- t.a28 = 754;
- t.a6 = 494;
- t.a7 = 552;
- t.a8 = 537;
- t.a9 = 577;
- t.a10 = 692;
- t.a29 = 786;
- t.a30 = 788;
- t.a31 = 788;
- t.a32 = 790;
- t.a33 = 793;
- t.a34 = 794;
- t.a35 = 816;
- t.a36 = 823;
- t.a37 = 789;
- t.a38 = 841;
- t.a39 = 823;
- t.a40 = 833;
- t.a41 = 816;
- t.a42 = 831;
- t.a43 = 923;
- t.a44 = 744;
- t.a45 = 723;
- t.a46 = 749;
- t.a47 = 790;
- t.a48 = 792;
- t.a49 = 695;
- t.a50 = 776;
- t.a51 = 768;
- t.a52 = 792;
- t.a53 = 759;
- t.a54 = 707;
- t.a55 = 708;
- t.a56 = 682;
- t.a57 = 701;
- t.a58 = 826;
- t.a59 = 815;
- t.a60 = 789;
- t.a61 = 789;
- t.a62 = 707;
- t.a63 = 687;
- t.a64 = 696;
- t.a65 = 689;
- t.a66 = 786;
- t.a67 = 787;
- t.a68 = 713;
- t.a69 = 791;
- t.a70 = 785;
- t.a71 = 791;
- t.a72 = 873;
- t.a73 = 761;
- t.a74 = 762;
- t.a203 = 762;
- t.a75 = 759;
- t.a204 = 759;
- t.a76 = 892;
- t.a77 = 892;
- t.a78 = 788;
- t.a79 = 784;
- t.a81 = 438;
- t.a82 = 138;
- t.a83 = 277;
- t.a84 = 415;
- t.a97 = 392;
- t.a98 = 392;
- t.a99 = 668;
- t.a100 = 668;
- t.a89 = 390;
- t.a90 = 390;
- t.a93 = 317;
- t.a94 = 317;
- t.a91 = 276;
- t.a92 = 276;
- t.a205 = 509;
- t.a85 = 509;
- t.a206 = 410;
- t.a86 = 410;
- t.a87 = 234;
- t.a88 = 234;
- t.a95 = 334;
- t.a96 = 334;
- t.a101 = 732;
- t.a102 = 544;
- t.a103 = 544;
- t.a104 = 910;
- t.a106 = 667;
- t.a107 = 760;
- t.a108 = 760;
- t.a112 = 776;
- t.a111 = 595;
- t.a110 = 694;
- t.a109 = 626;
- t.a120 = 788;
- t.a121 = 788;
- t.a122 = 788;
- t.a123 = 788;
- t.a124 = 788;
- t.a125 = 788;
- t.a126 = 788;
- t.a127 = 788;
- t.a128 = 788;
- t.a129 = 788;
- t.a130 = 788;
- t.a131 = 788;
- t.a132 = 788;
- t.a133 = 788;
- t.a134 = 788;
- t.a135 = 788;
- t.a136 = 788;
- t.a137 = 788;
- t.a138 = 788;
- t.a139 = 788;
- t.a140 = 788;
- t.a141 = 788;
- t.a142 = 788;
- t.a143 = 788;
- t.a144 = 788;
- t.a145 = 788;
- t.a146 = 788;
- t.a147 = 788;
- t.a148 = 788;
- t.a149 = 788;
- t.a150 = 788;
- t.a151 = 788;
- t.a152 = 788;
- t.a153 = 788;
- t.a154 = 788;
- t.a155 = 788;
- t.a156 = 788;
- t.a157 = 788;
- t.a158 = 788;
- t.a159 = 788;
- t.a160 = 894;
- t.a161 = 838;
- t.a163 = 1016;
- t.a164 = 458;
- t.a196 = 748;
- t.a165 = 924;
- t.a192 = 748;
- t.a166 = 918;
- t.a167 = 927;
- t.a168 = 928;
- t.a169 = 928;
- t.a170 = 834;
- t.a171 = 873;
- t.a172 = 828;
- t.a173 = 924;
- t.a162 = 924;
- t.a174 = 917;
- t.a175 = 930;
- t.a176 = 931;
- t.a177 = 463;
- t.a178 = 883;
- t.a179 = 836;
- t.a193 = 836;
- t.a180 = 867;
- t.a199 = 867;
- t.a181 = 696;
- t.a200 = 696;
- t.a182 = 874;
- t.a201 = 874;
- t.a183 = 760;
- t.a184 = 946;
- t.a197 = 771;
- t.a185 = 865;
- t.a194 = 771;
- t.a198 = 888;
- t.a186 = 967;
- t.a195 = 888;
- t.a187 = 831;
- t.a188 = 873;
- t.a189 = 927;
- t.a190 = 970;
- t.a191 = 918;
- });
-});
-exports.getMetrics = getMetrics;
-
-/***/ }),
/* 61 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -51504,7 +51757,7 @@ class MurmurHash3_64 {
update(input) {
let data, length;
- if ((0, _util.isString)(input)) {
+ if (typeof input === "string") {
data = new Uint8Array(input.length * 2);
length = 0;
@@ -52271,7 +52524,7 @@ exports.PDFImage = void 0;
var _util = __w_pdfjs_require__(2);
-var _primitives = __w_pdfjs_require__(5);
+var _base_stream = __w_pdfjs_require__(9);
var _colorspace = __w_pdfjs_require__(24);
@@ -52281,6 +52534,8 @@ var _jpeg_stream = __w_pdfjs_require__(37);
var _jpx = __w_pdfjs_require__(40);
+var _primitives = __w_pdfjs_require__(5);
+
function decodeAndClamp(value, addend, coefficient, max) {
value = addend + value * coefficient;
@@ -52347,7 +52602,7 @@ class PDFImage {
const dict = image.dict;
const filter = dict.get("F", "Filter");
- if ((0, _primitives.isName)(filter)) {
+ if (filter instanceof _primitives.Name) {
switch (filter.name) {
case "JPXDecode":
const jpxImage = new _jpx.JpxImage();
@@ -52462,7 +52717,7 @@ class PDFImage {
localColorSpaceCache
});
} else if (mask) {
- if ((0, _primitives.isStream)(mask)) {
+ if (mask instanceof _base_stream.BaseStream) {
const maskDict = mask.dict,
imageMask = maskDict.get("IM", "ImageMask");
@@ -52502,7 +52757,7 @@ class PDFImage {
if (smask) {
smaskData = smask;
} else if (mask) {
- if ((0, _primitives.isStream)(mask) || Array.isArray(mask)) {
+ if (mask instanceof _base_stream.BaseStream || Array.isArray(mask)) {
maskData = mask;
} else {
(0, _util.warn)("Unsupported mask format.");
@@ -52945,25 +53200,27 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.Catalog = void 0;
-var _primitives = __w_pdfjs_require__(5);
-
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _util = __w_pdfjs_require__(2);
+var _primitives = __w_pdfjs_require__(5);
+
var _name_number_tree = __w_pdfjs_require__(65);
-var _base_stream = __w_pdfjs_require__(6);
+var _base_stream = __w_pdfjs_require__(9);
+
+var _cleanup_helper = __w_pdfjs_require__(66);
var _colorspace = __w_pdfjs_require__(24);
-var _file_spec = __w_pdfjs_require__(66);
+var _file_spec = __w_pdfjs_require__(67);
-var _image_utils = __w_pdfjs_require__(58);
+var _image_utils = __w_pdfjs_require__(59);
-var _metadata_parser = __w_pdfjs_require__(67);
+var _metadata_parser = __w_pdfjs_require__(68);
-var _struct_tree = __w_pdfjs_require__(69);
+var _struct_tree = __w_pdfjs_require__(70);
function fetchDestination(dest) {
if (dest instanceof _primitives.Dict) {
@@ -53018,7 +53275,7 @@ class Catalog {
try {
const obj = this._catDict.get("Collection");
- if ((0, _primitives.isDict)(obj) && obj.size > 0) {
+ if (obj instanceof _primitives.Dict && obj.size > 0) {
collection = obj;
}
} catch (ex) {
@@ -53038,7 +53295,7 @@ class Catalog {
try {
const obj = this._catDict.get("AcroForm");
- if ((0, _primitives.isDict)(obj) && obj.size > 0) {
+ if (obj instanceof _primitives.Dict && obj.size > 0) {
acroForm = obj;
}
} catch (ex) {
@@ -53055,7 +53312,7 @@ class Catalog {
get acroFormRef() {
const value = this._catDict.getRaw("AcroForm");
- return (0, _util.shadow)(this, "acroFormRef", (0, _primitives.isRef)(value) ? value : null);
+ return (0, _util.shadow)(this, "acroFormRef", value instanceof _primitives.Ref ? value : null);
}
get metadata() {
@@ -53113,7 +53370,7 @@ class Catalog {
_readMarkInfo() {
const obj = this._catDict.get("MarkInfo");
- if (!(0, _primitives.isDict)(obj)) {
+ if (!(obj instanceof _primitives.Dict)) {
return null;
}
@@ -53130,7 +53387,7 @@ class Catalog {
const value = obj.get(key);
- if (!(0, _util.isBool)(value)) {
+ if (typeof value !== "boolean") {
continue;
}
@@ -53159,7 +53416,7 @@ class Catalog {
_readStructTreeRoot() {
const obj = this._catDict.get("StructTreeRoot");
- if (!(0, _primitives.isDict)(obj)) {
+ if (!(obj instanceof _primitives.Dict)) {
return null;
}
@@ -53171,7 +53428,7 @@ class Catalog {
get toplevelPagesDict() {
const pagesObj = this._catDict.get("Pages");
- if (!(0, _primitives.isDict)(pagesObj)) {
+ if (!(pagesObj instanceof _primitives.Dict)) {
throw new _util.FormatError("Invalid top-level pages dictionary.");
}
@@ -53197,13 +53454,13 @@ class Catalog {
_readDocumentOutline() {
let obj = this._catDict.get("Outlines");
- if (!(0, _primitives.isDict)(obj)) {
+ if (!(obj instanceof _primitives.Dict)) {
return null;
}
obj = obj.getRaw("First");
- if (!(0, _primitives.isRef)(obj)) {
+ if (!(obj instanceof _primitives.Ref)) {
return null;
}
@@ -53265,7 +53522,7 @@ class Catalog {
i.parent.items.push(outlineItem);
obj = outlineDict.getRaw("First");
- if ((0, _primitives.isRef)(obj) && !processed.has(obj)) {
+ if (obj instanceof _primitives.Ref && !processed.has(obj)) {
queue.push({
obj,
parent: outlineItem
@@ -53275,7 +53532,7 @@ class Catalog {
obj = outlineDict.getRaw("Next");
- if ((0, _primitives.isRef)(obj) && !processed.has(obj)) {
+ if (obj instanceof _primitives.Ref && !processed.has(obj)) {
queue.push({
obj,
parent: i.parent
@@ -53306,13 +53563,13 @@ class Catalog {
_readPermissions() {
const encrypt = this.xref.trailer.get("Encrypt");
- if (!(0, _primitives.isDict)(encrypt)) {
+ if (!(encrypt instanceof _primitives.Dict)) {
return null;
}
let flags = encrypt.get("P");
- if (!(0, _util.isNum)(flags)) {
+ if (typeof flags !== "number") {
return null;
}
@@ -53356,7 +53613,7 @@ class Catalog {
const groupRefs = [];
for (const groupRef of groupsData) {
- if (!(0, _primitives.isRef)(groupRef)) {
+ if (!(groupRef instanceof _primitives.Ref)) {
continue;
}
@@ -53364,8 +53621,8 @@ class Catalog {
const group = this.xref.fetchIfRef(groupRef);
groups.push({
id: groupRef.toString(),
- name: (0, _util.isString)(group.get("Name")) ? (0, _util.stringToPDFString)(group.get("Name")) : null,
- intent: (0, _util.isString)(group.get("Intent")) ? (0, _util.stringToPDFString)(group.get("Intent")) : null
+ name: typeof group.get("Name") === "string" ? (0, _util.stringToPDFString)(group.get("Name")) : null,
+ intent: typeof group.get("Intent") === "string" ? (0, _util.stringToPDFString)(group.get("Intent")) : null
});
}
@@ -53388,7 +53645,7 @@ class Catalog {
if (Array.isArray(refs)) {
for (const value of refs) {
- if (!(0, _primitives.isRef)(value)) {
+ if (!(value instanceof _primitives.Ref)) {
continue;
}
@@ -53409,7 +53666,7 @@ class Catalog {
const order = [];
for (const value of refs) {
- if ((0, _primitives.isRef)(value) && contentGroupRefs.includes(value)) {
+ if (value instanceof _primitives.Ref && contentGroupRefs.includes(value)) {
parsedOrderRefs.put(value);
order.push(value.toString());
continue;
@@ -53480,9 +53737,9 @@ class Catalog {
parsedOrderRefs = new _primitives.RefSet(),
MAX_NESTED_LEVELS = 10;
return {
- name: (0, _util.isString)(config.get("Name")) ? (0, _util.stringToPDFString)(config.get("Name")) : null,
- creator: (0, _util.isString)(config.get("Creator")) ? (0, _util.stringToPDFString)(config.get("Creator")) : null,
- baseState: (0, _primitives.isName)(config.get("BaseState")) ? config.get("BaseState").name : null,
+ name: typeof config.get("Name") === "string" ? (0, _util.stringToPDFString)(config.get("Name")) : null,
+ creator: typeof config.get("Creator") === "string" ? (0, _util.stringToPDFString)(config.get("Creator")) : null,
+ baseState: config.get("BaseState") instanceof _primitives.Name ? config.get("BaseState").name : null,
on: parseOnOff(config.get("ON")),
off: parseOnOff(config.get("OFF")),
order: parseOrder(config.get("Order")),
@@ -53611,7 +53868,7 @@ class Catalog {
const labelDict = nums.get(i);
if (labelDict !== undefined) {
- if (!(0, _primitives.isDict)(labelDict)) {
+ if (!(labelDict instanceof _primitives.Dict)) {
throw new _util.FormatError("PageLabel is not a dictionary.");
}
@@ -53622,7 +53879,7 @@ class Catalog {
if (labelDict.has("S")) {
const s = labelDict.get("S");
- if (!(0, _primitives.isName)(s)) {
+ if (!(s instanceof _primitives.Name)) {
throw new _util.FormatError("Invalid style in PageLabel dictionary.");
}
@@ -53634,7 +53891,7 @@ class Catalog {
if (labelDict.has("P")) {
const p = labelDict.get("P");
- if (!(0, _util.isString)(p)) {
+ if (typeof p !== "string") {
throw new _util.FormatError("Invalid prefix in PageLabel dictionary.");
}
@@ -53703,7 +53960,7 @@ class Catalog {
let pageLayout = "";
- if ((0, _primitives.isName)(obj)) {
+ if (obj instanceof _primitives.Name) {
switch (obj.name) {
case "SinglePage":
case "OneColumn":
@@ -53723,7 +53980,7 @@ class Catalog {
let pageMode = "UseNone";
- if ((0, _primitives.isName)(obj)) {
+ if (obj instanceof _primitives.Name) {
switch (obj.name) {
case "UseNone":
case "UseOutlines":
@@ -53739,47 +53996,34 @@ class Catalog {
}
get viewerPreferences() {
- const ViewerPreferencesValidators = {
- HideToolbar: _util.isBool,
- HideMenubar: _util.isBool,
- HideWindowUI: _util.isBool,
- FitWindow: _util.isBool,
- CenterWindow: _util.isBool,
- DisplayDocTitle: _util.isBool,
- NonFullScreenPageMode: _primitives.isName,
- Direction: _primitives.isName,
- ViewArea: _primitives.isName,
- ViewClip: _primitives.isName,
- PrintArea: _primitives.isName,
- PrintClip: _primitives.isName,
- PrintScaling: _primitives.isName,
- Duplex: _primitives.isName,
- PickTrayByPDFSize: _util.isBool,
- PrintPageRange: Array.isArray,
- NumCopies: Number.isInteger
- };
-
const obj = this._catDict.get("ViewerPreferences");
- let prefs = null;
+ if (!(obj instanceof _primitives.Dict)) {
+ return (0, _util.shadow)(this, "viewerPreferences", null);
+ }
- if ((0, _primitives.isDict)(obj)) {
- for (const key in ViewerPreferencesValidators) {
- if (!obj.has(key)) {
- continue;
- }
+ let prefs = null;
- const value = obj.get(key);
+ for (const key of obj.getKeys()) {
+ const value = obj.get(key);
+ let prefValue;
- if (!ViewerPreferencesValidators[key](value)) {
- (0, _util.info)(`Bad value in ViewerPreferences for "${key}".`);
- continue;
- }
+ switch (key) {
+ case "HideToolbar":
+ case "HideMenubar":
+ case "HideWindowUI":
+ case "FitWindow":
+ case "CenterWindow":
+ case "DisplayDocTitle":
+ case "PickTrayByPDFSize":
+ if (typeof value === "boolean") {
+ prefValue = value;
+ }
- let prefValue;
+ break;
- switch (key) {
- case "NonFullScreenPageMode":
+ case "NonFullScreenPageMode":
+ if (value instanceof _primitives.Name) {
switch (value.name) {
case "UseNone":
case "UseOutlines":
@@ -53791,10 +54035,12 @@ class Catalog {
default:
prefValue = "UseNone";
}
+ }
- break;
+ break;
- case "Direction":
+ case "Direction":
+ if (value instanceof _primitives.Name) {
switch (value.name) {
case "L2R":
case "R2L":
@@ -53804,13 +54050,15 @@ class Catalog {
default:
prefValue = "L2R";
}
+ }
- break;
+ break;
- case "ViewArea":
- case "ViewClip":
- case "PrintArea":
- case "PrintClip":
+ case "ViewArea":
+ case "ViewClip":
+ case "PrintArea":
+ case "PrintClip":
+ if (value instanceof _primitives.Name) {
switch (value.name) {
case "MediaBox":
case "CropBox":
@@ -53823,10 +54071,12 @@ class Catalog {
default:
prefValue = "CropBox";
}
+ }
- break;
+ break;
- case "PrintScaling":
+ case "PrintScaling":
+ if (value instanceof _primitives.Name) {
switch (value.name) {
case "None":
case "AppDefault":
@@ -53836,10 +54086,12 @@ class Catalog {
default:
prefValue = "AppDefault";
}
+ }
- break;
+ break;
- case "Duplex":
+ case "Duplex":
+ if (value instanceof _primitives.Name) {
switch (value.name) {
case "Simplex":
case "DuplexFlipShortEdge":
@@ -53850,16 +54102,12 @@ class Catalog {
default:
prefValue = "None";
}
+ }
- break;
-
- case "PrintPageRange":
- const length = value.length;
-
- if (length % 2 !== 0) {
- break;
- }
+ break;
+ case "PrintPageRange":
+ if (Array.isArray(value) && value.length % 2 === 0) {
const isValid = value.every((page, i, arr) => {
return Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= this.numPages;
});
@@ -53867,34 +54115,32 @@ class Catalog {
if (isValid) {
prefValue = value;
}
+ }
- break;
-
- case "NumCopies":
- if (value > 0) {
- prefValue = value;
- }
+ break;
- break;
+ case "NumCopies":
+ if (Number.isInteger(value) && value > 0) {
+ prefValue = value;
+ }
- default:
- if (typeof value !== "boolean") {
- throw new _util.FormatError(`viewerPreferences - expected a boolean value for: ${key}`);
- }
+ break;
- prefValue = value;
- }
+ default:
+ (0, _util.warn)(`Ignoring non-standard key in ViewerPreferences: ${key}.`);
+ continue;
+ }
- if (prefValue !== undefined) {
- if (!prefs) {
- prefs = Object.create(null);
- }
+ if (prefValue === undefined) {
+ (0, _util.warn)(`Bad value, for key "${key}", in ViewerPreferences: ${value}.`);
+ continue;
+ }
- prefs[key] = prefValue;
- } else {
- (0, _util.info)(`Bad value in ViewerPreferences for "${key}".`);
- }
+ if (!prefs) {
+ prefs = Object.create(null);
}
+
+ prefs[key] = prefValue;
}
return (0, _util.shadow)(this, "viewerPreferences", prefs);
@@ -53905,7 +54151,7 @@ class Catalog {
const openAction = Object.create(null);
- if ((0, _primitives.isDict)(obj)) {
+ if (obj instanceof _primitives.Dict) {
const destDict = new _primitives.Dict(this.xref);
destDict.set("A", obj);
const resultObj = {
@@ -53988,7 +54234,7 @@ class Catalog {
let js = jsDict.get("JS");
- if ((0, _primitives.isStream)(js)) {
+ if (js instanceof _base_stream.BaseStream) {
js = js.getString();
} else if (typeof js !== "string") {
return;
@@ -54062,7 +54308,7 @@ class Catalog {
}
cleanup(manuallyTriggered = false) {
- (0, _primitives.clearPrimitiveCaches)();
+ (0, _cleanup_helper.clearGlobalCaches)();
this.globalImageCache.clear(manuallyTriggered);
this.pageKidsCountCache.clear();
this.pageIndexCache.clear();
@@ -54084,8 +54330,7 @@ class Catalog {
});
}
- getPageDict(pageIndex) {
- const capability = (0, _util.createPromiseCapability)();
+ async getPageDict(pageIndex) {
const nodesToVisit = [this.toplevelPagesDict];
const visitedNodes = new _primitives.RefSet();
@@ -54096,125 +54341,115 @@ class Catalog {
}
const xref = this.xref,
- pageKidsCountCache = this.pageKidsCountCache;
+ pageKidsCountCache = this.pageKidsCountCache,
+ pageIndexCache = this.pageIndexCache;
let currentPageIndex = 0;
- function next() {
- while (nodesToVisit.length) {
- const currentNode = nodesToVisit.pop();
+ while (nodesToVisit.length) {
+ const currentNode = nodesToVisit.pop();
- if (currentNode instanceof _primitives.Ref) {
- const count = pageKidsCountCache.get(currentNode);
+ if (currentNode instanceof _primitives.Ref) {
+ const count = pageKidsCountCache.get(currentNode);
- if (count >= 0 && currentPageIndex + count <= pageIndex) {
- currentPageIndex += count;
- continue;
- }
+ if (count >= 0 && currentPageIndex + count <= pageIndex) {
+ currentPageIndex += count;
+ continue;
+ }
- if (visitedNodes.has(currentNode)) {
- capability.reject(new _util.FormatError("Pages tree contains circular reference."));
- return;
- }
+ if (visitedNodes.has(currentNode)) {
+ throw new _util.FormatError("Pages tree contains circular reference.");
+ }
- visitedNodes.put(currentNode);
- xref.fetchAsync(currentNode).then(function (obj) {
- if ((0, _primitives.isDict)(obj, "Page") || (0, _primitives.isDict)(obj) && !obj.has("Kids")) {
- if (currentNode && !pageKidsCountCache.has(currentNode)) {
- pageKidsCountCache.put(currentNode, 1);
- }
+ visitedNodes.put(currentNode);
+ const obj = await xref.fetchAsync(currentNode);
- if (pageIndex === currentPageIndex) {
- capability.resolve([obj, currentNode]);
- } else {
- currentPageIndex++;
- next();
- }
+ if (obj instanceof _primitives.Dict) {
+ let type = obj.getRaw("Type");
- return;
- }
+ if (type instanceof _primitives.Ref) {
+ type = await xref.fetchAsync(type);
+ }
- nodesToVisit.push(obj);
- next();
- }, capability.reject);
- return;
- }
+ if ((0, _primitives.isName)(type, "Page") || !obj.has("Kids")) {
+ if (!pageKidsCountCache.has(currentNode)) {
+ pageKidsCountCache.put(currentNode, 1);
+ }
- if (!(currentNode instanceof _primitives.Dict)) {
- capability.reject(new _util.FormatError("Page dictionary kid reference points to wrong type of object."));
- return;
- }
+ if (!pageIndexCache.has(currentNode)) {
+ pageIndexCache.put(currentNode, currentPageIndex);
+ }
- let count;
+ if (currentPageIndex === pageIndex) {
+ return [obj, currentNode];
+ }
- try {
- count = currentNode.get("Count");
- } catch (ex) {
- if (ex instanceof _core_utils.MissingDataException) {
- throw ex;
+ currentPageIndex++;
+ continue;
}
}
- if (Number.isInteger(count) && count >= 0) {
- const objId = currentNode.objId;
+ nodesToVisit.push(obj);
+ continue;
+ }
- if (objId && !pageKidsCountCache.has(objId)) {
- pageKidsCountCache.put(objId, count);
- }
+ if (!(currentNode instanceof _primitives.Dict)) {
+ throw new _util.FormatError("Page dictionary kid reference points to wrong type of object.");
+ }
- if (currentPageIndex + count <= pageIndex) {
- currentPageIndex += count;
- continue;
- }
- }
+ const {
+ objId
+ } = currentNode;
+ let count = currentNode.getRaw("Count");
- let kids;
+ if (count instanceof _primitives.Ref) {
+ count = await xref.fetchAsync(count);
+ }
- try {
- kids = currentNode.get("Kids");
- } catch (ex) {
- if (ex instanceof _core_utils.MissingDataException) {
- throw ex;
- }
+ if (Number.isInteger(count) && count >= 0) {
+ if (objId && !pageKidsCountCache.has(objId)) {
+ pageKidsCountCache.put(objId, count);
}
- if (!Array.isArray(kids)) {
- let type;
+ if (currentPageIndex + count <= pageIndex) {
+ currentPageIndex += count;
+ continue;
+ }
+ }
- try {
- type = currentNode.get("Type");
- } catch (ex) {
- if (ex instanceof _core_utils.MissingDataException) {
- throw ex;
- }
- }
+ let kids = currentNode.getRaw("Kids");
- if ((0, _primitives.isName)(type, "Page") || !currentNode.has("Type") && currentNode.has("Contents")) {
- if (currentPageIndex === pageIndex) {
- capability.resolve([currentNode, null]);
- return;
- }
+ if (kids instanceof _primitives.Ref) {
+ kids = await xref.fetchAsync(kids);
+ }
- currentPageIndex++;
- continue;
- }
+ if (!Array.isArray(kids)) {
+ let type = currentNode.getRaw("Type");
- capability.reject(new _util.FormatError("Page dictionary kids object is not an array."));
- return;
+ if (type instanceof _primitives.Ref) {
+ type = await xref.fetchAsync(type);
}
- for (let last = kids.length - 1; last >= 0; last--) {
- nodesToVisit.push(kids[last]);
+ if ((0, _primitives.isName)(type, "Page") || !currentNode.has("Kids")) {
+ if (currentPageIndex === pageIndex) {
+ return [currentNode, null];
+ }
+
+ currentPageIndex++;
+ continue;
}
+
+ throw new _util.FormatError("Page dictionary kids object is not an array.");
}
- capability.reject(new Error(`Page index ${pageIndex} not found.`));
+ for (let last = kids.length - 1; last >= 0; last--) {
+ nodesToVisit.push(kids[last]);
+ }
}
- next();
- return capability.promise;
+ throw new Error(`Page index ${pageIndex} not found.`);
}
- getAllPageDicts(recoveryMode = false) {
+ async getAllPageDicts(recoveryMode = false) {
const queue = [{
currentNode: this.toplevelPagesDict,
posInKids: 0
@@ -54227,14 +54462,24 @@ class Catalog {
visitedNodes.put(pagesRef);
}
- const map = new Map();
+ const map = new Map(),
+ xref = this.xref,
+ pageIndexCache = this.pageIndexCache;
let pageIndex = 0;
function addPageDict(pageDict, pageRef) {
+ if (pageRef && !pageIndexCache.has(pageRef)) {
+ pageIndexCache.put(pageRef, pageIndex);
+ }
+
map.set(pageIndex++, [pageDict, pageRef]);
}
function addPageError(error) {
+ if (error instanceof _core_utils.XRefEntryException && !recoveryMode) {
+ throw error;
+ }
+
map.set(pageIndex++, [error, null]);
}
@@ -54244,21 +54489,15 @@ class Catalog {
currentNode,
posInKids
} = queueItem;
- let kids;
-
- try {
- kids = currentNode.get("Kids");
- } catch (ex) {
- if (ex instanceof _core_utils.MissingDataException) {
- throw ex;
- }
+ let kids = currentNode.getRaw("Kids");
- if (ex instanceof _core_utils.XRefEntryException && !recoveryMode) {
- throw ex;
+ if (kids instanceof _primitives.Ref) {
+ try {
+ kids = await xref.fetchAsync(kids);
+ } catch (ex) {
+ addPageError(ex);
+ break;
}
-
- addPageError(ex);
- break;
}
if (!Array.isArray(kids)) {
@@ -54275,27 +54514,19 @@ class Catalog {
let obj;
if (kidObj instanceof _primitives.Ref) {
- try {
- obj = this.xref.fetch(kidObj);
- } catch (ex) {
- if (ex instanceof _core_utils.MissingDataException) {
- throw ex;
- }
-
- if (ex instanceof _core_utils.XRefEntryException && !recoveryMode) {
- throw ex;
- }
-
- addPageError(ex);
- break;
- }
-
if (visitedNodes.has(kidObj)) {
addPageError(new _util.FormatError("Pages tree contains circular reference."));
break;
}
visitedNodes.put(kidObj);
+
+ try {
+ obj = await xref.fetchAsync(kidObj);
+ } catch (ex) {
+ addPageError(ex);
+ break;
+ }
} else {
obj = kidObj;
}
@@ -54305,7 +54536,18 @@ class Catalog {
break;
}
- if ((0, _primitives.isDict)(obj, "Page") || !obj.has("Kids")) {
+ let type = obj.getRaw("Type");
+
+ if (type instanceof _primitives.Ref) {
+ try {
+ type = await xref.fetchAsync(type);
+ } catch (ex) {
+ addPageError(ex);
+ break;
+ }
+ }
+
+ if ((0, _primitives.isName)(type, "Page") || !obj.has("Kids")) {
addPageDict(obj, kidObj instanceof _primitives.Ref ? kidObj : null);
} else {
queue.push({
@@ -54333,7 +54575,7 @@ class Catalog {
let total = 0,
parentRef;
return xref.fetchAsync(kidRef).then(function (node) {
- if ((0, _primitives.isRefsEqual)(kidRef, pageRef) && !(0, _primitives.isDict)(node, "Page") && !((0, _primitives.isDict)(node) && !node.has("Type") && node.has("Contents"))) {
+ if ((0, _primitives.isRefsEqual)(kidRef, pageRef) && !(0, _primitives.isDict)(node, "Page") && !(node instanceof _primitives.Dict && !node.has("Type") && node.has("Contents"))) {
throw new _util.FormatError("The reference does not point to a /Page dictionary.");
}
@@ -54341,7 +54583,7 @@ class Catalog {
return null;
}
- if (!(0, _primitives.isDict)(node)) {
+ if (!(node instanceof _primitives.Dict)) {
throw new _util.FormatError("Node must be a dictionary.");
}
@@ -54352,7 +54594,7 @@ class Catalog {
return null;
}
- if (!(0, _primitives.isDict)(parent)) {
+ if (!(parent instanceof _primitives.Dict)) {
throw new _util.FormatError("Parent must be a dictionary.");
}
@@ -54368,7 +54610,7 @@ class Catalog {
for (let i = 0, ii = kids.length; i < ii; i++) {
const kid = kids[i];
- if (!(0, _primitives.isRef)(kid)) {
+ if (!(kid instanceof _primitives.Ref)) {
throw new _util.FormatError("Kid must be a reference.");
}
@@ -54378,7 +54620,7 @@ class Catalog {
}
kidPromises.push(xref.fetchAsync(kid).then(function (obj) {
- if (!(0, _primitives.isDict)(obj)) {
+ if (!(obj instanceof _primitives.Dict)) {
throw new _util.FormatError("Kid node must be a dictionary.");
}
@@ -54419,7 +54661,7 @@ class Catalog {
static parseDestDictionary(params) {
const destDict = params.destDict;
- if (!(0, _primitives.isDict)(destDict)) {
+ if (!(destDict instanceof _primitives.Dict)) {
(0, _util.warn)("parseDestDictionary: `destDict` must be a dictionary.");
return;
}
@@ -54436,13 +54678,13 @@ class Catalog {
url,
dest;
- if (!(0, _primitives.isDict)(action)) {
+ if (!(action instanceof _primitives.Dict)) {
if (destDict.has("Dest")) {
action = destDict.get("Dest");
} else {
action = destDict.get("AA");
- if ((0, _primitives.isDict)(action)) {
+ if (action instanceof _primitives.Dict) {
if (action.has("D")) {
action = action.get("D");
} else if (action.has("U")) {
@@ -54452,10 +54694,10 @@ class Catalog {
}
}
- if ((0, _primitives.isDict)(action)) {
+ if (action instanceof _primitives.Dict) {
const actionType = action.get("S");
- if (!(0, _primitives.isName)(actionType)) {
+ if (!(actionType instanceof _primitives.Name)) {
(0, _util.warn)("parseDestDictionary: Invalid type in Action dictionary.");
return;
}
@@ -54465,14 +54707,14 @@ class Catalog {
switch (actionName) {
case "ResetForm":
const flags = action.get("Flags");
- const include = (((0, _util.isNum)(flags) ? flags : 0) & 1) === 0;
+ const include = ((typeof flags === "number" ? flags : 0) & 1) === 0;
const fields = [];
const refs = [];
for (const obj of action.get("Fields") || []) {
- if ((0, _primitives.isRef)(obj)) {
+ if (obj instanceof _primitives.Ref) {
refs.push(obj.toString());
- } else if ((0, _util.isString)(obj)) {
+ } else if (typeof obj === "string") {
fields.push((0, _util.stringToPDFString)(obj));
}
}
@@ -54501,23 +54743,23 @@ class Catalog {
case "GoToR":
const urlDict = action.get("F");
- if ((0, _primitives.isDict)(urlDict)) {
+ if (urlDict instanceof _primitives.Dict) {
url = urlDict.get("F") || null;
- } else if ((0, _util.isString)(urlDict)) {
+ } else if (typeof urlDict === "string") {
url = urlDict;
}
let remoteDest = action.get("D");
if (remoteDest) {
- if ((0, _primitives.isName)(remoteDest)) {
+ if (remoteDest instanceof _primitives.Name) {
remoteDest = remoteDest.name;
}
- if ((0, _util.isString)(url)) {
+ if (typeof url === "string") {
const baseUrl = url.split("#")[0];
- if ((0, _util.isString)(remoteDest)) {
+ if (typeof remoteDest === "string") {
url = baseUrl + "#" + remoteDest;
} else if (Array.isArray(remoteDest)) {
url = baseUrl + "#" + JSON.stringify(remoteDest);
@@ -54527,7 +54769,7 @@ class Catalog {
const newWindow = action.get("NewWindow");
- if ((0, _util.isBool)(newWindow)) {
+ if (typeof newWindow === "boolean") {
resultObj.newWindow = newWindow;
}
@@ -54536,7 +54778,7 @@ class Catalog {
case "Named":
const namedAction = action.get("N");
- if ((0, _primitives.isName)(namedAction)) {
+ if (namedAction instanceof _primitives.Name) {
resultObj.action = namedAction.name;
}
@@ -54546,9 +54788,9 @@ class Catalog {
const jsAction = action.get("JS");
let js;
- if ((0, _primitives.isStream)(jsAction)) {
+ if (jsAction instanceof _base_stream.BaseStream) {
js = jsAction.getString();
- } else if ((0, _util.isString)(jsAction)) {
+ } else if (typeof jsAction === "string") {
js = jsAction;
}
@@ -54572,7 +54814,7 @@ class Catalog {
dest = destDict.get("Dest");
}
- if ((0, _util.isString)(url)) {
+ if (typeof url === "string") {
const absoluteUrl = (0, _util.createValidAbsoluteUrl)(url, docBaseUrl, {
addDefaultProtocol: true,
tryConvertEncoding: true
@@ -54586,11 +54828,11 @@ class Catalog {
}
if (dest) {
- if ((0, _primitives.isName)(dest)) {
+ if (dest instanceof _primitives.Name) {
dest = dest.name;
}
- if ((0, _util.isString)(dest) || Array.isArray(dest)) {
+ if (typeof dest === "string" || Array.isArray(dest)) {
resultObj.dest = dest;
}
}
@@ -54611,10 +54853,10 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.NumberTree = exports.NameTree = void 0;
-var _util = __w_pdfjs_require__(2);
-
var _primitives = __w_pdfjs_require__(5);
+var _util = __w_pdfjs_require__(2);
+
class NameOrNumberTree {
constructor(root, xref, type) {
if (this.constructor === NameOrNumberTree) {
@@ -54641,7 +54883,7 @@ class NameOrNumberTree {
while (queue.length > 0) {
const obj = xref.fetchIfRef(queue.shift());
- if (!(0, _primitives.isDict)(obj)) {
+ if (!(obj instanceof _primitives.Dict)) {
continue;
}
@@ -54774,12 +55016,34 @@ exports.NumberTree = NumberTree;
Object.defineProperty(exports, "__esModule", ({
value: true
}));
-exports.FileSpec = void 0;
+exports.clearGlobalCaches = clearGlobalCaches;
var _primitives = __w_pdfjs_require__(5);
+var _unicode = __w_pdfjs_require__(21);
+
+function clearGlobalCaches() {
+ (0, _primitives.clearPrimitiveCaches)();
+ (0, _unicode.clearUnicodeCaches)();
+}
+
+/***/ }),
+/* 67 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.FileSpec = void 0;
+
var _util = __w_pdfjs_require__(2);
+var _base_stream = __w_pdfjs_require__(9);
+
+var _primitives = __w_pdfjs_require__(5);
+
function pickPlatformItem(dict) {
if (dict.has("UF")) {
return dict.get("UF");
@@ -54798,7 +55062,7 @@ function pickPlatformItem(dict) {
class FileSpec {
constructor(root, xref) {
- if (!root || !(0, _primitives.isDict)(root)) {
+ if (!(root instanceof _primitives.Dict)) {
return;
}
@@ -54846,7 +55110,7 @@ class FileSpec {
if (this.contentRef) {
const fileObj = this.xref.fetchIfRef(this.contentRef);
- if (fileObj && (0, _primitives.isStream)(fileObj)) {
+ if (fileObj instanceof _base_stream.BaseStream) {
content = fileObj.getBytes();
} else {
(0, _util.warn)("Embedded file specification points to non-existing/invalid content");
@@ -54870,7 +55134,7 @@ class FileSpec {
exports.FileSpec = FileSpec;
/***/ }),
-/* 67 */
+/* 68 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -54880,7 +55144,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.MetadataParser = void 0;
-var _xml_parser = __w_pdfjs_require__(68);
+var _xml_parser = __w_pdfjs_require__(69);
class MetadataParser {
constructor(data) {
@@ -55009,7 +55273,7 @@ class MetadataParser {
exports.MetadataParser = MetadataParser;
/***/ }),
-/* 68 */
+/* 69 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -55019,7 +55283,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.XMLParserErrorCode = exports.XMLParserBase = exports.SimpleXMLParser = exports.SimpleDOMNode = void 0;
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
const XMLParserErrorCode = {
NoError: 0,
@@ -55556,7 +55820,7 @@ class SimpleXMLParser extends XMLParserBase {
exports.SimpleXMLParser = SimpleXMLParser;
/***/ }),
-/* 69 */
+/* 70 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -55593,12 +55857,12 @@ class StructTreeRoot {
readRoleMap() {
const roleMapDict = this.dict.get("RoleMap");
- if (!(0, _primitives.isDict)(roleMapDict)) {
+ if (!(roleMapDict instanceof _primitives.Dict)) {
return;
}
roleMapDict.forEach((key, value) => {
- if (!(0, _primitives.isName)(value)) {
+ if (!(value instanceof _primitives.Name)) {
return;
}
@@ -55620,7 +55884,7 @@ class StructElementNode {
get role() {
const nameObj = this.dict.get("S");
- const name = (0, _primitives.isName)(nameObj) ? nameObj.name : "";
+ const name = nameObj instanceof _primitives.Name ? nameObj.name : "";
const {
root
} = this.tree;
@@ -55636,7 +55900,7 @@ class StructElementNode {
let pageObjId = null;
const objRef = this.dict.getRaw("Pg");
- if ((0, _primitives.isRef)(objRef)) {
+ if (objRef instanceof _primitives.Ref) {
pageObjId = objRef.toString();
}
@@ -55674,9 +55938,9 @@ class StructElementNode {
let kidDict = null;
- if ((0, _primitives.isRef)(kid)) {
+ if (kid instanceof _primitives.Ref) {
kidDict = this.dict.xref.fetch(kid);
- } else if ((0, _primitives.isDict)(kid)) {
+ } else if (kid instanceof _primitives.Dict) {
kidDict = kid;
}
@@ -55686,11 +55950,11 @@ class StructElementNode {
const pageRef = kidDict.getRaw("Pg");
- if ((0, _primitives.isRef)(pageRef)) {
+ if (pageRef instanceof _primitives.Ref) {
pageObjId = pageRef.toString();
}
- const type = (0, _primitives.isName)(kidDict.get("Type")) ? kidDict.get("Type").name : null;
+ const type = kidDict.get("Type") instanceof _primitives.Name ? kidDict.get("Type").name : null;
if (type === "MCR") {
if (this.tree.pageDict.objId !== pageObjId) {
@@ -55699,7 +55963,7 @@ class StructElementNode {
return new StructElement({
type: StructElementType.STREAM_CONTENT,
- refObjId: (0, _primitives.isRef)(kidDict.getRaw("Stm")) ? kidDict.getRaw("Stm").toString() : null,
+ refObjId: kidDict.getRaw("Stm") instanceof _primitives.Ref ? kidDict.getRaw("Stm").toString() : null,
pageObjId,
mcid: kidDict.get("MCID")
});
@@ -55712,7 +55976,7 @@ class StructElementNode {
return new StructElement({
type: StructElementType.OBJECT,
- refObjId: (0, _primitives.isRef)(kidDict.getRaw("Obj")) ? kidDict.getRaw("Obj").toString() : null,
+ refObjId: kidDict.getRaw("Obj") instanceof _primitives.Ref ? kidDict.getRaw("Obj").toString() : null,
pageObjId
});
}
@@ -55778,7 +56042,7 @@ class StructTreePage {
const map = new Map();
for (const ref of parentArray) {
- if ((0, _primitives.isRef)(ref)) {
+ if (ref instanceof _primitives.Ref) {
this.addNode(this.rootDict.xref.fetch(ref), map);
}
}
@@ -55835,7 +56099,7 @@ class StructTreePage {
return false;
}
- if ((0, _primitives.isDict)(obj)) {
+ if (obj instanceof _primitives.Dict) {
if (obj.objId !== dict.objId) {
return false;
}
@@ -55875,13 +56139,13 @@ class StructTreePage {
parent.children.push(obj);
const alt = node.dict.get("Alt");
- if ((0, _util.isString)(alt)) {
+ if (typeof alt === "string") {
obj.alt = (0, _util.stringToPDFString)(alt);
}
const lang = node.dict.get("Lang");
- if ((0, _util.isString)(lang)) {
+ if (typeof lang === "string") {
obj.lang = (0, _util.stringToPDFString)(lang);
}
@@ -55925,7 +56189,7 @@ class StructTreePage {
exports.StructTreePage = StructTreePage;
/***/ }),
-/* 70 */
+/* 71 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -55937,18 +56201,20 @@ exports.ObjectLoader = void 0;
var _primitives = __w_pdfjs_require__(5);
-var _core_utils = __w_pdfjs_require__(9);
+var _base_stream = __w_pdfjs_require__(9);
+
+var _core_utils = __w_pdfjs_require__(8);
var _util = __w_pdfjs_require__(2);
function mayHaveChildren(value) {
- return value instanceof _primitives.Ref || value instanceof _primitives.Dict || Array.isArray(value) || (0, _primitives.isStream)(value);
+ return value instanceof _primitives.Ref || value instanceof _primitives.Dict || value instanceof _base_stream.BaseStream || Array.isArray(value);
}
function addChildren(node, nodesToVisit) {
if (node instanceof _primitives.Dict) {
node = node.getRawValues();
- } else if ((0, _primitives.isStream)(node)) {
+ } else if (node instanceof _base_stream.BaseStream) {
node = node.dict.getRawValues();
} else if (!Array.isArray(node)) {
return;
@@ -56025,7 +56291,7 @@ class ObjectLoader {
}
}
- if ((0, _primitives.isStream)(currentNode)) {
+ if (currentNode instanceof _base_stream.BaseStream) {
const baseStreams = currentNode.getBaseStreams();
if (baseStreams) {
@@ -56073,7 +56339,7 @@ class ObjectLoader {
exports.ObjectLoader = ObjectLoader;
/***/ }),
-/* 71 */
+/* 72 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -56088,11 +56354,13 @@ var _util = __w_pdfjs_require__(2);
var _primitives = __w_pdfjs_require__(5);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
-var _xml_parser = __w_pdfjs_require__(68);
+var _xml_parser = __w_pdfjs_require__(69);
-var _crypto = __w_pdfjs_require__(72);
+var _base_stream = __w_pdfjs_require__(9);
+
+var _crypto = __w_pdfjs_require__(73);
function writeDict(dict, buffer, transform) {
buffer.push("<<");
@@ -56153,9 +56421,9 @@ function numberToString(value) {
}
function writeValue(value, buffer, transform) {
- if ((0, _primitives.isName)(value)) {
+ if (value instanceof _primitives.Name) {
buffer.push(`/${(0, _core_utils.escapePDFName)(value.name)}`);
- } else if ((0, _primitives.isRef)(value)) {
+ } else if (value instanceof _primitives.Ref) {
buffer.push(`${value.num} ${value.gen} R`);
} else if (Array.isArray(value)) {
writeArray(value, buffer, transform);
@@ -56169,9 +56437,9 @@ function writeValue(value, buffer, transform) {
buffer.push(numberToString(value));
} else if (typeof value === "boolean") {
buffer.push(value.toString());
- } else if ((0, _primitives.isDict)(value)) {
+ } else if (value instanceof _primitives.Dict) {
writeDict(value, buffer, transform);
- } else if ((0, _primitives.isStream)(value)) {
+ } else if (value instanceof _base_stream.BaseStream) {
writeStream(value, buffer, transform);
} else if (value === null) {
buffer.push("null");
@@ -56427,7 +56695,7 @@ function incrementalUpdate({
}
/***/ }),
-/* 72 */
+/* 73 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -56443,7 +56711,7 @@ var _util = __w_pdfjs_require__(2);
var _primitives = __w_pdfjs_require__(5);
-var _decrypt_stream = __w_pdfjs_require__(73);
+var _decrypt_stream = __w_pdfjs_require__(74);
class ARCFourCipher {
constructor(key) {
@@ -57852,7 +58120,7 @@ const CipherTransformFactory = function CipherTransformFactoryClosure() {
}
function buildCipherConstructor(cf, name, num, gen, key) {
- if (!(0, _primitives.isName)(name)) {
+ if (!(name instanceof _primitives.Name)) {
throw new _util.FormatError("Invalid crypt filter name.");
}
@@ -57916,7 +58184,7 @@ const CipherTransformFactory = function CipherTransformFactoryClosure() {
const cfDict = dict.get("CF");
const streamCryptoName = dict.get("StmF");
- if ((0, _primitives.isDict)(cfDict) && (0, _primitives.isName)(streamCryptoName)) {
+ if (cfDict instanceof _primitives.Dict && streamCryptoName instanceof _primitives.Name) {
cfDict.suppressEncryption = true;
const handlerDict = cfDict.get(streamCryptoName.name);
keyLength = handlerDict && handlerDict.get("Length") || 128;
@@ -57985,7 +58253,7 @@ const CipherTransformFactory = function CipherTransformFactoryClosure() {
if (algorithm >= 4) {
const cf = dict.get("CF");
- if ((0, _primitives.isDict)(cf)) {
+ if (cf instanceof _primitives.Dict) {
cf.suppressEncryption = true;
}
@@ -58018,7 +58286,7 @@ const CipherTransformFactory = function CipherTransformFactoryClosure() {
exports.CipherTransformFactory = CipherTransformFactory;
/***/ }),
-/* 73 */
+/* 74 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -58077,7 +58345,7 @@ class DecryptStream extends _decode_stream.DecodeStream {
exports.DecryptStream = DecryptStream;
/***/ }),
-/* 74 */
+/* 75 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -58087,21 +58355,21 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.XFAFactory = void 0;
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
-var _bind = __w_pdfjs_require__(79);
+var _bind = __w_pdfjs_require__(80);
-var _data = __w_pdfjs_require__(85);
+var _data = __w_pdfjs_require__(86);
-var _fonts = __w_pdfjs_require__(83);
+var _fonts = __w_pdfjs_require__(84);
-var _utils = __w_pdfjs_require__(76);
+var _utils = __w_pdfjs_require__(77);
var _util = __w_pdfjs_require__(2);
-var _parser = __w_pdfjs_require__(86);
+var _parser = __w_pdfjs_require__(87);
-var _xhtml = __w_pdfjs_require__(96);
+var _xhtml = __w_pdfjs_require__(97);
class XFAFactory {
constructor(data) {
@@ -58273,7 +58541,7 @@ class XFAFactory {
exports.XFAFactory = XFAFactory;
/***/ }),
-/* 75 */
+/* 76 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -58283,15 +58551,15 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.XmlObject = exports.XFAObjectArray = exports.XFAObject = exports.XFAAttribute = exports.StringObject = exports.OptionObject = exports.Option10 = exports.Option01 = exports.IntegerObject = exports.ContentObject = exports.$uid = exports.$toStyle = exports.$toString = exports.$toPages = exports.$toHTML = exports.$text = exports.$tabIndex = exports.$setValue = exports.$setSetAttributes = exports.$setId = exports.$searchNode = exports.$root = exports.$resolvePrototypes = exports.$removeChild = exports.$pushPara = exports.$pushGlyphs = exports.$popPara = exports.$onText = exports.$onChildCheck = exports.$onChild = exports.$nsAttributes = exports.$nodeName = exports.$namespaceId = exports.$isUsable = exports.$isTransparent = exports.$isThereMoreWidth = exports.$isSplittable = exports.$isNsAgnostic = exports.$isDescendent = exports.$isDataValue = exports.$isCDATAXml = exports.$isBindable = exports.$insertAt = exports.$indexOf = exports.$ids = exports.$hasSettableValue = exports.$globalData = exports.$getTemplateRoot = exports.$getSubformParent = exports.$getRealChildrenByNameIt = exports.$getParent = exports.$getNextPage = exports.$getExtra = exports.$getDataValue = exports.$getContainedChildren = exports.$getChildrenByNameIt = exports.$getChildrenByName = exports.$getChildrenByClass = exports.$getChildren = exports.$getAvailableSpace = exports.$getAttributes = exports.$getAttributeIt = exports.$flushHTML = exports.$finalize = exports.$extra = exports.$dump = exports.$data = exports.$content = exports.$consumed = exports.$clone = exports.$cleanup = exports.$cleanPage = exports.$clean = exports.$childrenToHTML = exports.$appendChild = exports.$addHTML = exports.$acceptWhitespace = void 0;
-var _utils = __w_pdfjs_require__(76);
+var _utils = __w_pdfjs_require__(77);
var _util = __w_pdfjs_require__(2);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
-var _namespaces = __w_pdfjs_require__(77);
+var _namespaces = __w_pdfjs_require__(78);
-var _som = __w_pdfjs_require__(78);
+var _som = __w_pdfjs_require__(79);
const $acceptWhitespace = Symbol();
exports.$acceptWhitespace = $acceptWhitespace;
@@ -59471,7 +59739,7 @@ class Option10 extends IntegerObject {
exports.Option10 = Option10;
/***/ }),
-/* 76 */
+/* 77 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -59742,7 +60010,7 @@ class HTMLResult {
exports.HTMLResult = HTMLResult;
/***/ }),
-/* 77 */
+/* 78 */
/***/ ((__unused_webpack_module, exports) => {
@@ -59818,7 +60086,7 @@ const NamespaceIds = {
exports.NamespaceIds = NamespaceIds;
/***/ }),
-/* 78 */
+/* 79 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -59829,9 +60097,9 @@ Object.defineProperty(exports, "__esModule", ({
exports.createDataNode = createDataNode;
exports.searchNode = searchNode;
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
-var _namespaces = __w_pdfjs_require__(77);
+var _namespaces = __w_pdfjs_require__(78);
var _util = __w_pdfjs_require__(2);
@@ -60166,7 +60434,7 @@ function createDataNode(root, container, expr) {
}
/***/ }),
-/* 79 */
+/* 80 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -60176,13 +60444,13 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.Binder = void 0;
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
-var _template = __w_pdfjs_require__(80);
+var _template = __w_pdfjs_require__(81);
-var _som = __w_pdfjs_require__(78);
+var _som = __w_pdfjs_require__(79);
-var _namespaces = __w_pdfjs_require__(77);
+var _namespaces = __w_pdfjs_require__(78);
var _util = __w_pdfjs_require__(2);
@@ -60765,7 +61033,7 @@ class Binder {
exports.Binder = Binder;
/***/ }),
-/* 80 */
+/* 81 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -60775,23 +61043,23 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.Value = exports.Text = exports.TemplateNamespace = exports.Template = exports.SetProperty = exports.Items = exports.Field = exports.BindItems = void 0;
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
-var _namespaces = __w_pdfjs_require__(77);
+var _namespaces = __w_pdfjs_require__(78);
-var _layout = __w_pdfjs_require__(81);
+var _layout = __w_pdfjs_require__(82);
-var _html_utils = __w_pdfjs_require__(82);
+var _html_utils = __w_pdfjs_require__(83);
-var _utils = __w_pdfjs_require__(76);
+var _utils = __w_pdfjs_require__(77);
var _util = __w_pdfjs_require__(2);
-var _fonts = __w_pdfjs_require__(83);
+var _fonts = __w_pdfjs_require__(84);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
-var _som = __w_pdfjs_require__(78);
+var _som = __w_pdfjs_require__(79);
const TEMPLATE_NS_ID = _namespaces.NamespaceIds.template.id;
const SVG_NS = "http://www.w3.org/2000/svg";
@@ -66687,7 +66955,7 @@ class TemplateNamespace {
exports.TemplateNamespace = TemplateNamespace;
/***/ }),
-/* 81 */
+/* 82 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -66700,9 +66968,9 @@ exports.checkDimensions = checkDimensions;
exports.flushHTML = flushHTML;
exports.getAvailableSpace = getAvailableSpace;
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
-var _html_utils = __w_pdfjs_require__(82);
+var _html_utils = __w_pdfjs_require__(83);
function createLine(node, children) {
return {
@@ -67039,7 +67307,7 @@ function checkDimensions(node, space) {
}
/***/ }),
-/* 82 */
+/* 83 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -67062,15 +67330,15 @@ exports.setMinMaxDimensions = setMinMaxDimensions;
exports.setPara = setPara;
exports.toStyle = toStyle;
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
var _util = __w_pdfjs_require__(2);
-var _utils = __w_pdfjs_require__(76);
+var _utils = __w_pdfjs_require__(77);
-var _fonts = __w_pdfjs_require__(83);
+var _fonts = __w_pdfjs_require__(84);
-var _text = __w_pdfjs_require__(84);
+var _text = __w_pdfjs_require__(85);
function measureToString(m) {
if (typeof m === "string") {
@@ -67723,7 +67991,7 @@ function fixURL(str) {
}
/***/ }),
-/* 83 */
+/* 84 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -67735,9 +68003,9 @@ exports.FontFinder = void 0;
exports.getMetrics = getMetrics;
exports.selectFont = selectFont;
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
-var _utils = __w_pdfjs_require__(76);
+var _utils = __w_pdfjs_require__(77);
var _util = __w_pdfjs_require__(2);
@@ -67932,7 +68200,7 @@ function getMetrics(xfaFont, real = false) {
}
/***/ }),
-/* 84 */
+/* 85 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -67942,7 +68210,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.TextMeasure = void 0;
-var _fonts = __w_pdfjs_require__(83);
+var _fonts = __w_pdfjs_require__(84);
const WIDTH_FACTOR = 1.02;
@@ -68200,7 +68468,7 @@ class TextMeasure {
exports.TextMeasure = TextMeasure;
/***/ }),
-/* 85 */
+/* 86 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -68210,7 +68478,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.DataHandler = void 0;
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
class DataHandler {
constructor(root, data) {
@@ -68277,7 +68545,7 @@ class DataHandler {
exports.DataHandler = DataHandler;
/***/ }),
-/* 86 */
+/* 87 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -68287,11 +68555,11 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.XFAParser = void 0;
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
-var _xml_parser = __w_pdfjs_require__(68);
+var _xml_parser = __w_pdfjs_require__(69);
-var _builder = __w_pdfjs_require__(87);
+var _builder = __w_pdfjs_require__(88);
var _util = __w_pdfjs_require__(2);
@@ -68470,7 +68738,7 @@ class XFAParser extends _xml_parser.XMLParserBase {
exports.XFAParser = XFAParser;
/***/ }),
-/* 87 */
+/* 88 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -68480,15 +68748,15 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.Builder = void 0;
-var _namespaces = __w_pdfjs_require__(77);
+var _namespaces = __w_pdfjs_require__(78);
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
-var _setup = __w_pdfjs_require__(88);
+var _setup = __w_pdfjs_require__(89);
-var _template = __w_pdfjs_require__(80);
+var _template = __w_pdfjs_require__(81);
-var _unknown = __w_pdfjs_require__(97);
+var _unknown = __w_pdfjs_require__(98);
var _util = __w_pdfjs_require__(2);
@@ -68703,7 +68971,7 @@ class Builder {
exports.Builder = Builder;
/***/ }),
-/* 88 */
+/* 89 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -68713,23 +68981,23 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.NamespaceSetUp = void 0;
-var _config = __w_pdfjs_require__(89);
+var _config = __w_pdfjs_require__(90);
-var _connection_set = __w_pdfjs_require__(90);
+var _connection_set = __w_pdfjs_require__(91);
-var _datasets = __w_pdfjs_require__(91);
+var _datasets = __w_pdfjs_require__(92);
-var _locale_set = __w_pdfjs_require__(92);
+var _locale_set = __w_pdfjs_require__(93);
-var _signature = __w_pdfjs_require__(93);
+var _signature = __w_pdfjs_require__(94);
-var _stylesheet = __w_pdfjs_require__(94);
+var _stylesheet = __w_pdfjs_require__(95);
-var _template = __w_pdfjs_require__(80);
+var _template = __w_pdfjs_require__(81);
-var _xdp = __w_pdfjs_require__(95);
+var _xdp = __w_pdfjs_require__(96);
-var _xhtml = __w_pdfjs_require__(96);
+var _xhtml = __w_pdfjs_require__(97);
const NamespaceSetUp = {
config: _config.ConfigNamespace,
@@ -68745,7 +69013,7 @@ const NamespaceSetUp = {
exports.NamespaceSetUp = NamespaceSetUp;
/***/ }),
-/* 89 */
+/* 90 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -68755,11 +69023,11 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.ConfigNamespace = void 0;
-var _namespaces = __w_pdfjs_require__(77);
+var _namespaces = __w_pdfjs_require__(78);
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
-var _utils = __w_pdfjs_require__(76);
+var _utils = __w_pdfjs_require__(77);
var _util = __w_pdfjs_require__(2);
@@ -70634,7 +70902,7 @@ class ConfigNamespace {
exports.ConfigNamespace = ConfigNamespace;
/***/ }),
-/* 90 */
+/* 91 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -70644,9 +70912,9 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.ConnectionSetNamespace = void 0;
-var _namespaces = __w_pdfjs_require__(77);
+var _namespaces = __w_pdfjs_require__(78);
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
const CONNECTION_SET_NS_ID = _namespaces.NamespaceIds.connectionSet.id;
@@ -70848,7 +71116,7 @@ class ConnectionSetNamespace {
exports.ConnectionSetNamespace = ConnectionSetNamespace;
/***/ }),
-/* 91 */
+/* 92 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -70858,9 +71126,9 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.DatasetsNamespace = void 0;
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
-var _namespaces = __w_pdfjs_require__(77);
+var _namespaces = __w_pdfjs_require__(78);
const DATASETS_NS_ID = _namespaces.NamespaceIds.datasets.id;
@@ -70916,7 +71184,7 @@ class DatasetsNamespace {
exports.DatasetsNamespace = DatasetsNamespace;
/***/ }),
-/* 92 */
+/* 93 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -70926,11 +71194,11 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.LocaleSetNamespace = void 0;
-var _namespaces = __w_pdfjs_require__(77);
+var _namespaces = __w_pdfjs_require__(78);
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
-var _utils = __w_pdfjs_require__(76);
+var _utils = __w_pdfjs_require__(77);
const LOCALE_SET_NS_ID = _namespaces.NamespaceIds.localeSet.id;
@@ -71254,7 +71522,7 @@ class LocaleSetNamespace {
exports.LocaleSetNamespace = LocaleSetNamespace;
/***/ }),
-/* 93 */
+/* 94 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -71264,9 +71532,9 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.SignatureNamespace = void 0;
-var _namespaces = __w_pdfjs_require__(77);
+var _namespaces = __w_pdfjs_require__(78);
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
const SIGNATURE_NS_ID = _namespaces.NamespaceIds.signature.id;
@@ -71295,7 +71563,7 @@ class SignatureNamespace {
exports.SignatureNamespace = SignatureNamespace;
/***/ }),
-/* 94 */
+/* 95 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -71305,9 +71573,9 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.StylesheetNamespace = void 0;
-var _namespaces = __w_pdfjs_require__(77);
+var _namespaces = __w_pdfjs_require__(78);
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
const STYLESHEET_NS_ID = _namespaces.NamespaceIds.stylesheet.id;
@@ -71336,7 +71604,7 @@ class StylesheetNamespace {
exports.StylesheetNamespace = StylesheetNamespace;
/***/ }),
-/* 95 */
+/* 96 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -71346,9 +71614,9 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.XdpNamespace = void 0;
-var _namespaces = __w_pdfjs_require__(77);
+var _namespaces = __w_pdfjs_require__(78);
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
const XDP_NS_ID = _namespaces.NamespaceIds.xdp.id;
@@ -71390,7 +71658,7 @@ class XdpNamespace {
exports.XdpNamespace = XdpNamespace;
/***/ }),
-/* 96 */
+/* 97 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -71400,13 +71668,13 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.XhtmlNamespace = void 0;
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
-var _namespaces = __w_pdfjs_require__(77);
+var _namespaces = __w_pdfjs_require__(78);
-var _html_utils = __w_pdfjs_require__(82);
+var _html_utils = __w_pdfjs_require__(83);
-var _utils = __w_pdfjs_require__(76);
+var _utils = __w_pdfjs_require__(77);
const XHTML_NS_ID = _namespaces.NamespaceIds.xhtml.id;
const $richText = Symbol();
@@ -71925,7 +72193,7 @@ class XhtmlNamespace {
exports.XhtmlNamespace = XhtmlNamespace;
/***/ }),
-/* 97 */
+/* 98 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -71935,9 +72203,9 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.UnknownNamespace = void 0;
-var _namespaces = __w_pdfjs_require__(77);
+var _namespaces = __w_pdfjs_require__(78);
-var _xfa_object = __w_pdfjs_require__(75);
+var _xfa_object = __w_pdfjs_require__(76);
class UnknownNamespace {
constructor(nsId) {
@@ -71953,7 +72221,7 @@ class UnknownNamespace {
exports.UnknownNamespace = UnknownNamespace;
/***/ }),
-/* 98 */
+/* 99 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -71967,13 +72235,13 @@ var _util = __w_pdfjs_require__(2);
var _primitives = __w_pdfjs_require__(5);
-var _core_utils = __w_pdfjs_require__(9);
+var _core_utils = __w_pdfjs_require__(8);
var _parser = __w_pdfjs_require__(27);
-var _base_stream = __w_pdfjs_require__(6);
+var _base_stream = __w_pdfjs_require__(9);
-var _crypto = __w_pdfjs_require__(72);
+var _crypto = __w_pdfjs_require__(73);
class XRef {
constructor(stream, pdfManager) {
@@ -72839,7 +73107,7 @@ class XRef {
exports.XRef = XRef;
/***/ }),
-/* 99 */
+/* 100 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -72870,8 +73138,7 @@ const StreamKind = {
function wrapReason(reason) {
if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) {
- (0, _util.warn)('wrapReason: Expected "reason" to be a (possibly cloned) Error.');
- return reason;
+ (0, _util.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.');
}
switch (reason.name) {
@@ -73326,7 +73593,7 @@ class MessageHandler {
exports.MessageHandler = MessageHandler;
/***/ }),
-/* 100 */
+/* 101 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -73550,8 +73817,8 @@ Object.defineProperty(exports, "WorkerMessageHandler", ({
var _worker = __w_pdfjs_require__(1);
-const pdfjsVersion = '2.12.313';
-const pdfjsBuild = 'a2ae56f39';
+const pdfjsVersion = '2.13.216';
+const pdfjsBuild = '399a0ec60';
})();
/******/ return __webpack_exports__;
diff --git a/js/pdfjs/build/pdf.worker.js.map b/js/pdfjs/build/pdf.worker.js.map
index 62c49de..3d78757 100644
--- a/js/pdfjs/build/pdf.worker.js.map
+++ b/js/pdfjs/build/pdf.worker.js.map
@@ -1 +1 @@
-{"version":3,"file":"pdf.worker.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf.worker/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.worker/src/core/worker.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/util.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf.worker/src/core/primitives.js","webpack://pdfjs-dist/build/pdf.worker/src/core/base_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pdf_manager.js","webpack://pdfjs-dist/build/pdf.worker/src/core/chunked_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/core_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/document.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/calibri_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/helvetica_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/liberationsans_widths.js","webpack://pdfjs-dist/build/pdf.worker/src/core/myriadpro_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/segoeui_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/encodings.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyphlist.js","webpack://pdfjs-dist/build/pdf.worker/src/core/unicode.js","webpack://pdfjs-dist/build/pdf.worker/src/core/annotation.js","webpack://pdfjs-dist/build/pdf.worker/src/core/default_appearance.js","webpack://pdfjs-dist/build/pdf.worker/src/core/colorspace.js","webpack://pdfjs-dist/build/pdf.worker/src/core/evaluator.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cmap.js","webpack://pdfjs-dist/build/pdf.worker/src/core/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_85_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decode_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_hex_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt.js","webpack://pdfjs-dist/build/pdf.worker/src/core/flate_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2.js","webpack://pdfjs-dist/build/pdf.worker/src/core/arithmetic_decoder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpeg_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpg.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx.js","webpack://pdfjs-dist/build/pdf.worker/src/core/lzw_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/predictor_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/run_length_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/charsets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/standard_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/to_unicode_map.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/font_renderer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyf.js","webpack://pdfjs-dist/build/pdf.worker/src/core/opentype_file_builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pattern.js","webpack://pdfjs-dist/build/pdf.worker/src/core/function.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ps_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/bidi.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metrics.js","webpack://pdfjs-dist/build/pdf.worker/src/core/murmurhash3.js","webpack://pdfjs-dist/build/pdf.worker/src/core/operator_list.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image.js","webpack://pdfjs-dist/build/pdf.worker/src/core/catalog.js","webpack://pdfjs-dist/build/pdf.worker/src/core/name_number_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/file_spec.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metadata_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xml_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/struct_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/object_loader.js","webpack://pdfjs-dist/build/pdf.worker/src/core/writer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/crypto.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decrypt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/factory.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xfa_object.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/namespaces.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/som.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/bind.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/template.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/layout.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/html_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/text.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/data.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/setup.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/config.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/connection_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/datasets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/locale_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/signature.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/stylesheet.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xdp.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xhtml.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/unknown.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xref.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker_stream.js","webpack://pdfjs-dist/build/pdf.worker/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/define property getters","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/hasOwnProperty shorthand","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/make namespace object","webpack://pdfjs-dist/build/pdf.worker/src/pdf.worker.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = factory();\n})(this, function() {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n arrayByteLength,\n arraysToBytes,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isString,\n MissingPDFException,\n PasswordException,\n setVerbosityLevel,\n stringToPDFString,\n UnexpectedResponseException,\n UnknownErrorException,\n UNSUPPORTED_FEATURES,\n VerbosityLevel,\n warn,\n} from \"../shared/util.js\";\nimport { clearPrimitiveCaches, Dict, Ref } from \"./primitives.js\";\nimport { LocalPdfManager, NetworkPdfManager } from \"./pdf_manager.js\";\nimport { incrementalUpdate } from \"./writer.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { PDFWorkerStream } from \"./worker_stream.js\";\nimport { XRefParseException } from \"./core_utils.js\";\n\nclass WorkerTask {\n constructor(name) {\n this.name = name;\n this.terminated = false;\n this._capability = createPromiseCapability();\n }\n\n get finished() {\n return this._capability.promise;\n }\n\n finish() {\n this._capability.resolve();\n }\n\n terminate() {\n this.terminated = true;\n }\n\n ensureNotTerminated() {\n if (this.terminated) {\n throw new Error(\"Worker task was terminated\");\n }\n }\n}\n\nclass WorkerMessageHandler {\n static setup(handler, port) {\n let testMessageProcessed = false;\n handler.on(\"test\", function wphSetupTest(data) {\n if (testMessageProcessed) {\n return; // we already processed 'test' message once\n }\n testMessageProcessed = true;\n\n // Ensure that `TypedArray`s can be sent to the worker,\n // and that `postMessage` transfers are supported.\n handler.send(\"test\", data instanceof Uint8Array && data[0] === 255);\n });\n\n handler.on(\"configure\", function wphConfigure(data) {\n setVerbosityLevel(data.verbosity);\n });\n\n handler.on(\"GetDocRequest\", function wphSetupDoc(data) {\n return WorkerMessageHandler.createDocumentHandler(data, port);\n });\n }\n\n static createDocumentHandler(docParams, port) {\n // This context is actually holds references on pdfManager and handler,\n // until the latter is destroyed.\n let pdfManager;\n let terminated = false;\n let cancelXHRs = null;\n const WorkerTasks = [];\n const verbosity = getVerbosityLevel();\n\n const apiVersion = docParams.apiVersion;\n const workerVersion =\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null;\n if (apiVersion !== workerVersion) {\n throw new Error(\n `The API version \"${apiVersion}\" does not match ` +\n `the Worker version \"${workerVersion}\".`\n );\n }\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Fail early, and predictably, rather than having (some) fonts fail to\n // load/render with slightly cryptic error messages in environments where\n // the `Array.prototype` has been *incorrectly* extended.\n //\n // PLEASE NOTE: We do *not* want to slow down font parsing by adding\n // `hasOwnProperty` checks all over the code-base.\n const enumerableProperties = [];\n for (const property in []) {\n enumerableProperties.push(property);\n }\n if (enumerableProperties.length) {\n throw new Error(\n \"The `Array.prototype` contains unexpected enumerable properties: \" +\n enumerableProperties.join(\", \") +\n \"; thus breaking e.g. `for...in` iteration of `Array`s.\"\n );\n }\n\n // Ensure that (primarily) Node.js users won't accidentally attempt to use\n // a non-translated/non-polyfilled build of the library, since that would\n // quickly fail anyway because of missing functionality.\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"SKIP_BABEL\")) &&\n typeof ReadableStream === \"undefined\"\n ) {\n throw new Error(\n \"The browser/environment lacks native support for critical \" +\n \"functionality used by the PDF.js library (e.g. `ReadableStream`); \" +\n \"please use a `legacy`-build instead.\"\n );\n }\n }\n\n const docId = docParams.docId;\n const docBaseUrl = docParams.docBaseUrl;\n const workerHandlerName = docParams.docId + \"_worker\";\n let handler = new MessageHandler(workerHandlerName, docId, port);\n\n function ensureNotTerminated() {\n if (terminated) {\n throw new Error(\"Worker was terminated\");\n }\n }\n\n function startWorkerTask(task) {\n WorkerTasks.push(task);\n }\n\n function finishWorkerTask(task) {\n task.finish();\n const i = WorkerTasks.indexOf(task);\n WorkerTasks.splice(i, 1);\n }\n\n async function loadDocument(recoveryMode) {\n await pdfManager.ensureDoc(\"checkHeader\");\n await pdfManager.ensureDoc(\"parseStartXRef\");\n await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n\n // Check that at least the first page can be successfully loaded,\n // since otherwise the XRef table is definitely not valid.\n await pdfManager.ensureDoc(\"checkFirstPage\", [recoveryMode]);\n // Check that the last page can be sucessfully loaded, to ensure that\n // `numPages` is correct, and fallback to walking the entire /Pages-tree.\n await pdfManager.ensureDoc(\"checkLastPage\", [recoveryMode]);\n\n const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n if (isPureXfa) {\n const task = new WorkerTask(\"loadXfaFonts\");\n startWorkerTask(task);\n await Promise.all([\n pdfManager\n .loadXfaFonts(handler, task)\n .catch(reason => {\n // Ignore errors, to allow the document to load.\n })\n .then(() => finishWorkerTask(task)),\n pdfManager.loadXfaImages(),\n ]);\n }\n\n const [numPages, fingerprints] = await Promise.all([\n pdfManager.ensureDoc(\"numPages\"),\n pdfManager.ensureDoc(\"fingerprints\"),\n ]);\n\n // Get htmlForXfa after numPages to avoid to create HTML twice.\n const htmlForXfa = isPureXfa\n ? await pdfManager.ensureDoc(\"htmlForXfa\")\n : null;\n\n return { numPages, fingerprints, htmlForXfa };\n }\n\n function getPdfManager(data, evaluatorOptions, enableXfa) {\n const pdfManagerCapability = createPromiseCapability();\n let newPdfManager;\n\n const source = data.source;\n if (source.data) {\n try {\n newPdfManager = new LocalPdfManager(\n docId,\n source.data,\n source.password,\n handler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n return pdfManagerCapability.promise;\n }\n\n let pdfStream,\n cachedChunks = [];\n try {\n pdfStream = new PDFWorkerStream(handler);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n return pdfManagerCapability.promise;\n }\n\n const fullRequest = pdfStream.getFullReader();\n fullRequest.headersReady\n .then(function () {\n if (!fullRequest.isRangeSupported) {\n return;\n }\n\n // We don't need auto-fetch when streaming is enabled.\n const disableAutoFetch =\n source.disableAutoFetch || fullRequest.isStreamingSupported;\n newPdfManager = new NetworkPdfManager(\n docId,\n pdfStream,\n {\n msgHandler: handler,\n password: source.password,\n length: fullRequest.contentLength,\n disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n },\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n // There may be a chance that `newPdfManager` is not initialized for\n // the first few runs of `readchunk` block of code. Be sure to send\n // all cached chunks, if any, to chunked_stream via pdf_manager.\n for (let i = 0; i < cachedChunks.length; i++) {\n newPdfManager.sendProgressiveData(cachedChunks[i]);\n }\n\n cachedChunks = [];\n pdfManagerCapability.resolve(newPdfManager);\n cancelXHRs = null;\n })\n .catch(function (reason) {\n pdfManagerCapability.reject(reason);\n cancelXHRs = null;\n });\n\n let loaded = 0;\n const flushChunks = function () {\n const pdfFile = arraysToBytes(cachedChunks);\n if (source.length && pdfFile.length !== source.length) {\n warn(\"reported HTTP length is different from actual\");\n }\n // the data is array, instantiating directly from it\n try {\n newPdfManager = new LocalPdfManager(\n docId,\n pdfFile,\n source.password,\n handler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n cachedChunks = [];\n };\n const readPromise = new Promise(function (resolve, reject) {\n const readChunk = function ({ value, done }) {\n try {\n ensureNotTerminated();\n if (done) {\n if (!newPdfManager) {\n flushChunks();\n }\n cancelXHRs = null;\n return;\n }\n\n loaded += arrayByteLength(value);\n if (!fullRequest.isStreamingSupported) {\n handler.send(\"DocProgress\", {\n loaded,\n total: Math.max(loaded, fullRequest.contentLength || 0),\n });\n }\n\n if (newPdfManager) {\n newPdfManager.sendProgressiveData(value);\n } else {\n cachedChunks.push(value);\n }\n\n fullRequest.read().then(readChunk, reject);\n } catch (e) {\n reject(e);\n }\n };\n fullRequest.read().then(readChunk, reject);\n });\n readPromise.catch(function (e) {\n pdfManagerCapability.reject(e);\n cancelXHRs = null;\n });\n\n cancelXHRs = function (reason) {\n pdfStream.cancelAllRequests(reason);\n };\n\n return pdfManagerCapability.promise;\n }\n\n function setupDoc(data) {\n function onSuccess(doc) {\n ensureNotTerminated();\n handler.send(\"GetDoc\", { pdfInfo: doc });\n }\n\n function onFailure(ex) {\n ensureNotTerminated();\n\n if (ex instanceof PasswordException) {\n const task = new WorkerTask(`PasswordException: response ${ex.code}`);\n startWorkerTask(task);\n\n handler\n .sendWithPromise(\"PasswordRequest\", ex)\n .then(function ({ password }) {\n finishWorkerTask(task);\n pdfManager.updatePassword(password);\n pdfManagerReady();\n })\n .catch(function () {\n finishWorkerTask(task);\n handler.send(\"DocException\", ex);\n });\n } else if (\n ex instanceof InvalidPDFException ||\n ex instanceof MissingPDFException ||\n ex instanceof UnexpectedResponseException ||\n ex instanceof UnknownErrorException\n ) {\n handler.send(\"DocException\", ex);\n } else {\n handler.send(\n \"DocException\",\n new UnknownErrorException(ex.message, ex.toString())\n );\n }\n }\n\n function pdfManagerReady() {\n ensureNotTerminated();\n\n loadDocument(false).then(onSuccess, function (reason) {\n ensureNotTerminated();\n\n // Try again with recoveryMode == true\n if (!(reason instanceof XRefParseException)) {\n onFailure(reason);\n return;\n }\n pdfManager.requestLoadedStream();\n pdfManager.onLoadedStream().then(function () {\n ensureNotTerminated();\n\n loadDocument(true).then(onSuccess, onFailure);\n });\n });\n }\n\n ensureNotTerminated();\n\n const evaluatorOptions = {\n maxImageSize: data.maxImageSize,\n disableFontFace: data.disableFontFace,\n ignoreErrors: data.ignoreErrors,\n isEvalSupported: data.isEvalSupported,\n fontExtraProperties: data.fontExtraProperties,\n useSystemFonts: data.useSystemFonts,\n cMapUrl: data.cMapUrl,\n standardFontDataUrl: data.standardFontDataUrl,\n };\n\n getPdfManager(data, evaluatorOptions, data.enableXfa)\n .then(function (newPdfManager) {\n if (terminated) {\n // We were in a process of setting up the manager, but it got\n // terminated in the middle.\n newPdfManager.terminate(\n new AbortException(\"Worker was terminated.\")\n );\n throw new Error(\"Worker was terminated\");\n }\n pdfManager = newPdfManager;\n\n pdfManager.onLoadedStream().then(function (stream) {\n handler.send(\"DataLoaded\", { length: stream.bytes.byteLength });\n });\n })\n .then(pdfManagerReady, onFailure);\n }\n\n handler.on(\"GetPage\", function wphSetupGetPage(data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return Promise.all([\n pdfManager.ensure(page, \"rotate\"),\n pdfManager.ensure(page, \"ref\"),\n pdfManager.ensure(page, \"userUnit\"),\n pdfManager.ensure(page, \"view\"),\n ]).then(function ([rotate, ref, userUnit, view]) {\n return {\n rotate,\n ref,\n userUnit,\n view,\n };\n });\n });\n });\n\n handler.on(\"GetPageIndex\", function wphSetupGetPageIndex({ ref }) {\n const pageRef = Ref.get(ref.num, ref.gen);\n return pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n });\n\n handler.on(\"GetDestinations\", function wphSetupGetDestinations(data) {\n return pdfManager.ensureCatalog(\"destinations\");\n });\n\n handler.on(\"GetDestination\", function wphSetupGetDestination(data) {\n return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n });\n\n handler.on(\"GetPageLabels\", function wphSetupGetPageLabels(data) {\n return pdfManager.ensureCatalog(\"pageLabels\");\n });\n\n handler.on(\"GetPageLayout\", function wphSetupGetPageLayout(data) {\n return pdfManager.ensureCatalog(\"pageLayout\");\n });\n\n handler.on(\"GetPageMode\", function wphSetupGetPageMode(data) {\n return pdfManager.ensureCatalog(\"pageMode\");\n });\n\n handler.on(\"GetViewerPreferences\", function (data) {\n return pdfManager.ensureCatalog(\"viewerPreferences\");\n });\n\n handler.on(\"GetOpenAction\", function (data) {\n return pdfManager.ensureCatalog(\"openAction\");\n });\n\n handler.on(\"GetAttachments\", function wphSetupGetAttachments(data) {\n return pdfManager.ensureCatalog(\"attachments\");\n });\n\n handler.on(\"GetJavaScript\", function wphSetupGetJavaScript(data) {\n return pdfManager.ensureCatalog(\"javaScript\");\n });\n\n handler.on(\"GetDocJSActions\", function wphSetupGetDocJSActions(data) {\n return pdfManager.ensureCatalog(\"jsActions\");\n });\n\n handler.on(\"GetPageJSActions\", function ({ pageIndex }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"jsActions\");\n });\n });\n\n handler.on(\"GetOutline\", function wphSetupGetOutline(data) {\n return pdfManager.ensureCatalog(\"documentOutline\");\n });\n\n handler.on(\"GetOptionalContentConfig\", function (data) {\n return pdfManager.ensureCatalog(\"optionalContentConfig\");\n });\n\n handler.on(\"GetPermissions\", function (data) {\n return pdfManager.ensureCatalog(\"permissions\");\n });\n\n handler.on(\"GetMetadata\", function wphSetupGetMetadata(data) {\n return Promise.all([\n pdfManager.ensureDoc(\"documentInfo\"),\n pdfManager.ensureCatalog(\"metadata\"),\n ]);\n });\n\n handler.on(\"GetMarkInfo\", function wphSetupGetMarkInfo(data) {\n return pdfManager.ensureCatalog(\"markInfo\");\n });\n\n handler.on(\"GetData\", function wphSetupGetData(data) {\n pdfManager.requestLoadedStream();\n return pdfManager.onLoadedStream().then(function (stream) {\n return stream.bytes;\n });\n });\n\n handler.on(\"GetAnnotations\", function ({ pageIndex, intent }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return page.getAnnotationsData(intent);\n });\n });\n\n handler.on(\"GetFieldObjects\", function (data) {\n return pdfManager.ensureDoc(\"fieldObjects\");\n });\n\n handler.on(\"HasJSActions\", function (data) {\n return pdfManager.ensureDoc(\"hasJSActions\");\n });\n\n handler.on(\"GetCalculationOrderIds\", function (data) {\n return pdfManager.ensureDoc(\"calculationOrderIds\");\n });\n\n handler.on(\n \"SaveDocument\",\n function ({ isPureXfa, numPages, annotationStorage, filename }) {\n pdfManager.requestLoadedStream();\n\n const promises = [\n pdfManager.onLoadedStream(),\n pdfManager.ensureCatalog(\"acroForm\"),\n pdfManager.ensureCatalog(\"acroFormRef\"),\n pdfManager.ensureDoc(\"xref\"),\n pdfManager.ensureDoc(\"startXRef\"),\n ];\n\n if (isPureXfa) {\n promises.push(pdfManager.serializeXfaData(annotationStorage));\n } else {\n for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n promises.push(\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`Save: page ${pageIndex}`);\n return page\n .save(handler, task, annotationStorage)\n .finally(function () {\n finishWorkerTask(task);\n });\n })\n );\n }\n }\n\n return Promise.all(promises).then(function ([\n stream,\n acroForm,\n acroFormRef,\n xref,\n startXRef,\n ...refs\n ]) {\n let newRefs = [];\n let xfaData = null;\n if (isPureXfa) {\n xfaData = refs[0];\n if (!xfaData) {\n return stream.bytes;\n }\n } else {\n for (const ref of refs) {\n newRefs = ref\n .filter(x => x !== null)\n .reduce((a, b) => a.concat(b), newRefs);\n }\n\n if (newRefs.length === 0) {\n // No new refs so just return the initial bytes\n return stream.bytes;\n }\n }\n\n const xfa = (acroForm instanceof Dict && acroForm.get(\"XFA\")) || null;\n let xfaDatasetsRef = null;\n let hasXfaDatasetsEntry = false;\n if (Array.isArray(xfa)) {\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n if (xfa[i] === \"datasets\") {\n xfaDatasetsRef = xfa[i + 1];\n acroFormRef = null;\n hasXfaDatasetsEntry = true;\n }\n }\n if (xfaDatasetsRef === null) {\n xfaDatasetsRef = xref.getNewRef();\n }\n } else if (xfa) {\n acroFormRef = null;\n // TODO: Support XFA streams.\n warn(\"Unsupported XFA type.\");\n }\n\n let newXrefInfo = Object.create(null);\n if (xref.trailer) {\n // Get string info from Info in order to compute fileId.\n const infoObj = Object.create(null);\n const xrefInfo = xref.trailer.get(\"Info\") || null;\n if (xrefInfo instanceof Dict) {\n xrefInfo.forEach((key, value) => {\n if (isString(key) && isString(value)) {\n infoObj[key] = stringToPDFString(value);\n }\n });\n }\n\n newXrefInfo = {\n rootRef: xref.trailer.getRaw(\"Root\") || null,\n encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n newRef: xref.getNewRef(),\n infoRef: xref.trailer.getRaw(\"Info\") || null,\n info: infoObj,\n fileIds: xref.trailer.get(\"ID\") || null,\n startXRef,\n filename,\n };\n }\n xref.resetNewRef();\n\n return incrementalUpdate({\n originalData: stream.bytes,\n xrefInfo: newXrefInfo,\n newRefs,\n xref,\n hasXfa: !!xfa,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n xfaData,\n });\n });\n }\n );\n\n handler.on(\"GetOperatorList\", function wphSetupRenderPage(data, sink) {\n const pageIndex = data.pageIndex;\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n startWorkerTask(task);\n\n // NOTE: Keep this condition in sync with the `info` helper function.\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n // Pre compile the pdf page and fetch the fonts/images.\n page\n .getOperatorList({\n handler,\n sink,\n task,\n intent: data.intent,\n cacheKey: data.cacheKey,\n annotationStorage: data.annotationStorage,\n })\n .then(\n function (operatorListInfo) {\n finishWorkerTask(task);\n\n if (start) {\n info(\n `page=${pageIndex + 1} - getOperatorList: time=` +\n `${Date.now() - start}ms, len=${operatorListInfo.length}`\n );\n }\n sink.close();\n },\n function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return; // ignoring errors from the terminated thread\n }\n // For compatibility with older behavior, generating unknown\n // unsupported feature notification on errors.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n });\n\n sink.error(reason);\n\n // TODO: Should `reason` be re-thrown here (currently that casues\n // \"Uncaught exception: ...\" messages in the console)?\n }\n );\n });\n });\n\n handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n const pageIndex = data.pageIndex;\n\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n startWorkerTask(task);\n\n // NOTE: Keep this condition in sync with the `info` helper function.\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n page\n .extractTextContent({\n handler,\n task,\n sink,\n normalizeWhitespace: data.normalizeWhitespace,\n includeMarkedContent: data.includeMarkedContent,\n combineTextItems: data.combineTextItems,\n })\n .then(\n function () {\n finishWorkerTask(task);\n\n if (start) {\n info(\n `page=${pageIndex + 1} - getTextContent: time=` +\n `${Date.now() - start}ms`\n );\n }\n sink.close();\n },\n function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return; // ignoring errors from the terminated thread\n }\n sink.error(reason);\n\n // TODO: Should `reason` be re-thrown here (currently that casues\n // \"Uncaught exception: ...\" messages in the console)?\n }\n );\n });\n });\n\n handler.on(\"GetStructTree\", function wphGetStructTree(data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"getStructTree\");\n });\n });\n\n handler.on(\"FontFallback\", function (data) {\n return pdfManager.fontFallback(data.id, handler);\n });\n\n handler.on(\"Cleanup\", function wphCleanup(data) {\n return pdfManager.cleanup(/* manuallyTriggered = */ true);\n });\n\n handler.on(\"Terminate\", function wphTerminate(data) {\n terminated = true;\n\n const waitOn = [];\n if (pdfManager) {\n pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n\n const cleanupPromise = pdfManager.cleanup();\n waitOn.push(cleanupPromise);\n\n pdfManager = null;\n } else {\n clearPrimitiveCaches();\n }\n if (cancelXHRs) {\n cancelXHRs(new AbortException(\"Worker was terminated.\"));\n }\n\n for (const task of WorkerTasks) {\n waitOn.push(task.finished);\n task.terminate();\n }\n\n return Promise.all(waitOn).then(function () {\n // Notice that even if we destroying handler, resolved response promise\n // must be sent back.\n handler.destroy();\n handler = null;\n });\n });\n\n handler.on(\"Ready\", function wphReady(data) {\n setupDoc(docParams);\n docParams = null; // we don't need docParams anymore -- saving memory.\n });\n return workerHandlerName;\n }\n\n static initializeFromPort(port) {\n const handler = new MessageHandler(\"worker\", \"main\", port);\n WorkerMessageHandler.setup(handler, port);\n handler.send(\"ready\", null);\n }\n}\n\nfunction isMessagePort(maybePort) {\n return (\n typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort\n );\n}\n\n// Worker thread (and not Node.js)?\nif (\n typeof window === \"undefined\" &&\n !isNodeJS &&\n typeof self !== \"undefined\" &&\n isMessagePort(self)\n) {\n WorkerMessageHandler.initializeFromPort(self);\n}\n\nexport { WorkerMessageHandler, WorkerTask };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nconst NullCharactersRegExp = /\\x00+/g;\nconst InvisibleCharactersRegExp = /[\\x01-\\x1F]/g;\n\n/**\n * @param {string} str\n */\nfunction removeNullCharacters(str, replaceInvisible = false) {\n if (typeof str !== \"string\") {\n warn(\"The argument for removeNullCharacters must be a string.\");\n return str;\n }\n if (replaceInvisible) {\n str = str.replace(InvisibleCharactersRegExp, \" \");\n }\n return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n assert(\n bytes !== null && typeof bytes === \"object\" && bytes.length !== undefined,\n \"Invalid argument for bytesToString\"\n );\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n },\n};\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if (\n (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n ) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n // Y: first and second points belong to different rectangles?\n if (\n (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n ) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n const length = str.length,\n strBuf = [];\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n // UTF16BE BOM\n for (let i = 2; i < length; i += 2) {\n strBuf.push(\n String.fromCharCode((str.charCodeAt(i) << 8) | str.charCodeAt(i + 1))\n );\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n // UTF16LE BOM\n for (let i = 2; i < length; i += 2) {\n strBuf.push(\n String.fromCharCode((str.charCodeAt(i + 1) << 8) | str.charCodeAt(i))\n );\n }\n } else {\n for (let i = 0; i < length; ++i) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isBool(v) {\n return typeof v === \"boolean\";\n}\n\nfunction isNum(v) {\n return typeof v === \"number\";\n}\n\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nfunction createObjectURL(data, contentType = \"\", forceDataSchema = false) {\n if (URL.createObjectURL && typeof Blob !== \"undefined\" && !forceDataSchema) {\n return URL.createObjectURL(new Blob([data], { type: contentType }));\n }\n // Blob/createObjectURL is not available, falling back to data schema.\n const digits =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n let buffer = `data:${contentType};base64,`;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = ((b1 & 3) << 4) | (b2 >> 4);\n const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createObjectURL,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n isBool,\n IsEvalSupportedCached,\n IsLittleEndianCached,\n isNum,\n isSameOrigin,\n isString,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n removeNullCharacters,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n (typeof globalThis === \"undefined\" || !globalThis._pdfjsCompatibilityChecked)\n) {\n // Provides support for `globalThis` in legacy browsers.\n // Support: Firefox<65, Chrome<71, Safari<12.1, Node.js<12.0.0\n if (typeof globalThis === \"undefined\" || globalThis.Math !== Math) {\n // eslint-disable-next-line no-global-assign\n globalThis = require(\"core-js/es/global-this\");\n }\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = require(\"dommatrix/dist/dommatrix.js\");\n })();\n\n // Provides support for Object.fromEntries in legacy browsers.\n // Support: Firefox<63, Chrome<73, Safari<12.1, Node.js<12.0.0\n (function checkObjectFromEntries() {\n if (Object.fromEntries) {\n return;\n }\n require(\"core-js/es/object/from-entries.js\");\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `ReadableStream`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n // Slightly reduce the size of the Chromium-extension, given\n // that `ReadableStream` has been supported since Chrome 43.\n return;\n }\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream =\n require(\"web-streams-polyfill/dist/ponyfill.js\").ReadableStream;\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable } from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\n\nconst Name = (function NameClosure() {\n let nameCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Name {\n constructor(name) {\n this.name = name;\n }\n\n static get(name) {\n const nameValue = nameCache[name];\n // eslint-disable-next-line no-restricted-syntax\n return nameValue ? nameValue : (nameCache[name] = new Name(name));\n }\n\n static _clearCache() {\n nameCache = Object.create(null);\n }\n }\n\n return Name;\n})();\n\nconst Cmd = (function CmdClosure() {\n let cmdCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Cmd {\n constructor(cmd) {\n this.cmd = cmd;\n }\n\n static get(cmd) {\n const cmdValue = cmdCache[cmd];\n // eslint-disable-next-line no-restricted-syntax\n return cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd));\n }\n\n static _clearCache() {\n cmdCache = Object.create(null);\n }\n }\n\n return Cmd;\n})();\n\nconst nonSerializable = function nonSerializableClosure() {\n return nonSerializable; // Creating closure on some variable.\n};\n\nclass Dict {\n constructor(xref = null) {\n // Map should only be used internally, use functions below to access.\n this._map = Object.create(null);\n this.xref = xref;\n this.objId = null;\n this.suppressEncryption = false;\n this.__nonSerializable__ = nonSerializable; // Disable cloning of the Dict.\n }\n\n assignXref(newXref) {\n this.xref = newXref;\n }\n\n get size() {\n return Object.keys(this._map).length;\n }\n\n // Automatically dereferences Ref objects.\n get(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n return this.xref.fetch(value, this.suppressEncryption);\n }\n return value;\n }\n\n // Same as get(), but returns a promise and uses fetchIfRefAsync().\n async getAsync(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n return this.xref.fetchAsync(value, this.suppressEncryption);\n }\n return value;\n }\n\n // Same as get(), but dereferences all elements if the result is an Array.\n getArray(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n value = this.xref.fetch(value, this.suppressEncryption);\n }\n\n if (Array.isArray(value)) {\n value = value.slice(); // Ensure that we don't modify the Dict data.\n for (let i = 0, ii = value.length; i < ii; i++) {\n if (value[i] instanceof Ref && this.xref) {\n value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n }\n }\n }\n return value;\n }\n\n // No dereferencing.\n getRaw(key) {\n return this._map[key];\n }\n\n getKeys() {\n return Object.keys(this._map);\n }\n\n // No dereferencing.\n getRawValues() {\n return Object.values(this._map);\n }\n\n set(key, value) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n value === undefined\n ) {\n unreachable('Dict.set: The \"value\" cannot be undefined.');\n }\n this._map[key] = value;\n }\n\n has(key) {\n return this._map[key] !== undefined;\n }\n\n forEach(callback) {\n for (const key in this._map) {\n callback(key, this.get(key));\n }\n }\n\n static get empty() {\n const emptyDict = new Dict(null);\n\n emptyDict.set = (key, value) => {\n unreachable(\"Should not call `set` on the empty dictionary.\");\n };\n return shadow(this, \"empty\", emptyDict);\n }\n\n static merge({ xref, dictArray, mergeSubDicts = false }) {\n const mergedDict = new Dict(xref),\n properties = new Map();\n\n for (const dict of dictArray) {\n if (!(dict instanceof Dict)) {\n continue;\n }\n for (const [key, value] of Object.entries(dict._map)) {\n let property = properties.get(key);\n if (property === undefined) {\n property = [];\n properties.set(key, property);\n } else if (!mergeSubDicts || !(value instanceof Dict)) {\n // Ignore additional entries, if either:\n // - This is a \"shallow\" merge, where only the first element matters.\n // - The value is *not* a `Dict`, since other types cannot be merged.\n continue;\n }\n property.push(value);\n }\n }\n for (const [name, values] of properties) {\n if (values.length === 1 || !(values[0] instanceof Dict)) {\n mergedDict._map[name] = values[0];\n continue;\n }\n const subDict = new Dict(xref);\n\n for (const dict of values) {\n for (const [key, value] of Object.entries(dict._map)) {\n if (subDict._map[key] === undefined) {\n subDict._map[key] = value;\n }\n }\n }\n if (subDict.size > 0) {\n mergedDict._map[name] = subDict;\n }\n }\n properties.clear();\n\n return mergedDict.size > 0 ? mergedDict : Dict.empty;\n }\n}\n\nconst Ref = (function RefClosure() {\n let refCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Ref {\n constructor(num, gen) {\n this.num = num;\n this.gen = gen;\n }\n\n toString() {\n // This function is hot, so we make the string as compact as possible.\n // |this.gen| is almost always zero, so we treat that case specially.\n if (this.gen === 0) {\n return `${this.num}R`;\n }\n return `${this.num}R${this.gen}`;\n }\n\n static get(num, gen) {\n const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n const refValue = refCache[key];\n // eslint-disable-next-line no-restricted-syntax\n return refValue ? refValue : (refCache[key] = new Ref(num, gen));\n }\n\n static _clearCache() {\n refCache = Object.create(null);\n }\n }\n\n return Ref;\n})();\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nclass RefSet {\n constructor(parent = null) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n parent &&\n !(parent instanceof RefSet)\n ) {\n unreachable('RefSet: Invalid \"parent\" value.');\n }\n this._set = new Set(parent && parent._set);\n }\n\n has(ref) {\n return this._set.has(ref.toString());\n }\n\n put(ref) {\n this._set.add(ref.toString());\n }\n\n remove(ref) {\n this._set.delete(ref.toString());\n }\n\n forEach(callback) {\n for (const ref of this._set.values()) {\n callback(ref);\n }\n }\n\n clear() {\n this._set.clear();\n }\n}\n\nclass RefSetCache {\n constructor() {\n this._map = new Map();\n }\n\n get size() {\n return this._map.size;\n }\n\n get(ref) {\n return this._map.get(ref.toString());\n }\n\n has(ref) {\n return this._map.has(ref.toString());\n }\n\n put(ref, obj) {\n this._map.set(ref.toString(), obj);\n }\n\n putAlias(ref, aliasRef) {\n this._map.set(ref.toString(), this.get(aliasRef));\n }\n\n forEach(callback) {\n for (const value of this._map.values()) {\n callback(value);\n }\n }\n\n clear() {\n this._map.clear();\n }\n}\n\nfunction isName(v, name) {\n return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n return (\n v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n );\n}\n\nfunction isRef(v) {\n return v instanceof Ref;\n}\n\nfunction isRefsEqual(v1, v2) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n v1 instanceof Ref && v2 instanceof Ref,\n \"isRefsEqual: Both parameters should be `Ref`s.\"\n );\n }\n return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction isStream(v) {\n return v instanceof BaseStream;\n}\n\nfunction clearPrimitiveCaches() {\n Cmd._clearCache();\n Name._clearCache();\n Ref._clearCache();\n}\n\nexport {\n CIRCULAR_REF,\n clearPrimitiveCaches,\n Cmd,\n Dict,\n EOF,\n isCmd,\n isDict,\n isName,\n isRef,\n isRefsEqual,\n isStream,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, shadow, unreachable } from \"../shared/util.js\";\n\nclass BaseStream {\n constructor() {\n if (this.constructor === BaseStream) {\n unreachable(\"Cannot initialize BaseStream.\");\n }\n }\n\n // eslint-disable-next-line getter-return\n get length() {\n unreachable(\"Abstract getter `length` accessed\");\n }\n\n // eslint-disable-next-line getter-return\n get isEmpty() {\n unreachable(\"Abstract getter `isEmpty` accessed\");\n }\n\n get isDataLoaded() {\n return shadow(this, \"isDataLoaded\", true);\n }\n\n getByte() {\n unreachable(\"Abstract method `getByte` called\");\n }\n\n getBytes(length, forceClamped = false) {\n unreachable(\"Abstract method `getBytes` called\");\n }\n\n peekByte() {\n const peekedByte = this.getByte();\n if (peekedByte !== -1) {\n this.pos--;\n }\n return peekedByte;\n }\n\n peekBytes(length, forceClamped = false) {\n const bytes = this.getBytes(length, forceClamped);\n this.pos -= bytes.length;\n return bytes;\n }\n\n getUint16() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n }\n\n getInt32() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n const b2 = this.getByte();\n const b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n }\n\n getByteRange(begin, end) {\n unreachable(\"Abstract method `getByteRange` called\");\n }\n\n getString(length) {\n return bytesToString(this.getBytes(length, /* forceClamped = */ false));\n }\n\n skip(n) {\n this.pos += n || 1;\n }\n\n reset() {\n unreachable(\"Abstract method `reset` called\");\n }\n\n moveStart() {\n unreachable(\"Abstract method `moveStart` called\");\n }\n\n makeSubStream(start, length, dict = null) {\n unreachable(\"Abstract method `makeSubStream` called\");\n }\n\n /**\n * @returns {Array | null}\n */\n getBaseStreams() {\n return null;\n }\n}\n\nexport { BaseStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createValidAbsoluteUrl, unreachable, warn } from \"../shared/util.js\";\nimport { ChunkedStreamManager } from \"./chunked_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { PDFDocument } from \"./document.js\";\nimport { Stream } from \"./stream.js\";\n\nfunction parseDocBaseUrl(url) {\n if (url) {\n const absoluteUrl = createValidAbsoluteUrl(url);\n if (absoluteUrl) {\n return absoluteUrl.href;\n }\n warn(`Invalid absolute docBaseUrl: \"${url}\".`);\n }\n return null;\n}\n\nclass BasePdfManager {\n constructor() {\n if (this.constructor === BasePdfManager) {\n unreachable(\"Cannot initialize BasePdfManager.\");\n }\n }\n\n get docId() {\n return this._docId;\n }\n\n get password() {\n return this._password;\n }\n\n get docBaseUrl() {\n return this._docBaseUrl;\n }\n\n onLoadedStream() {\n unreachable(\"Abstract method `onLoadedStream` called\");\n }\n\n ensureDoc(prop, args) {\n return this.ensure(this.pdfDocument, prop, args);\n }\n\n ensureXRef(prop, args) {\n return this.ensure(this.pdfDocument.xref, prop, args);\n }\n\n ensureCatalog(prop, args) {\n return this.ensure(this.pdfDocument.catalog, prop, args);\n }\n\n getPage(pageIndex) {\n return this.pdfDocument.getPage(pageIndex);\n }\n\n fontFallback(id, handler) {\n return this.pdfDocument.fontFallback(id, handler);\n }\n\n loadXfaFonts(handler, task) {\n return this.pdfDocument.loadXfaFonts(handler, task);\n }\n\n loadXfaImages() {\n return this.pdfDocument.loadXfaImages();\n }\n\n serializeXfaData(annotationStorage) {\n return this.pdfDocument.serializeXfaData(annotationStorage);\n }\n\n cleanup(manuallyTriggered = false) {\n return this.pdfDocument.cleanup(manuallyTriggered);\n }\n\n async ensure(obj, prop, args) {\n unreachable(\"Abstract method `ensure` called\");\n }\n\n requestRange(begin, end) {\n unreachable(\"Abstract method `requestRange` called\");\n }\n\n requestLoadedStream() {\n unreachable(\"Abstract method `requestLoadedStream` called\");\n }\n\n sendProgressiveData(chunk) {\n unreachable(\"Abstract method `sendProgressiveData` called\");\n }\n\n updatePassword(password) {\n this._password = password;\n }\n\n terminate(reason) {\n unreachable(\"Abstract method `terminate` called\");\n }\n}\n\nclass LocalPdfManager extends BasePdfManager {\n constructor(\n docId,\n data,\n password,\n msgHandler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n ) {\n super();\n\n this._docId = docId;\n this._password = password;\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this.msgHandler = msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.enableXfa = enableXfa;\n\n const stream = new Stream(data);\n this.pdfDocument = new PDFDocument(this, stream);\n this._loadedStreamPromise = Promise.resolve(stream);\n }\n\n async ensure(obj, prop, args) {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n return value;\n }\n\n requestRange(begin, end) {\n return Promise.resolve();\n }\n\n requestLoadedStream() {}\n\n onLoadedStream() {\n return this._loadedStreamPromise;\n }\n\n terminate(reason) {}\n}\n\nclass NetworkPdfManager extends BasePdfManager {\n constructor(\n docId,\n pdfNetworkStream,\n args,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n ) {\n super();\n\n this._docId = docId;\n this._password = args.password;\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this.msgHandler = args.msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.enableXfa = enableXfa;\n\n this.streamManager = new ChunkedStreamManager(pdfNetworkStream, {\n msgHandler: args.msgHandler,\n length: args.length,\n disableAutoFetch: args.disableAutoFetch,\n rangeChunkSize: args.rangeChunkSize,\n });\n this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n }\n\n async ensure(obj, prop, args) {\n try {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n return value;\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.requestRange(ex.begin, ex.end);\n return this.ensure(obj, prop, args);\n }\n }\n\n requestRange(begin, end) {\n return this.streamManager.requestRange(begin, end);\n }\n\n requestLoadedStream() {\n this.streamManager.requestAllChunks();\n }\n\n sendProgressiveData(chunk) {\n this.streamManager.onReceiveData({ chunk });\n }\n\n onLoadedStream() {\n return this.streamManager.onLoadedStream();\n }\n\n terminate(reason) {\n this.streamManager.abort(reason);\n }\n}\n\nexport { LocalPdfManager, NetworkPdfManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n arrayByteLength,\n arraysToBytes,\n createPromiseCapability,\n} from \"../shared/util.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nclass ChunkedStream extends Stream {\n constructor(length, chunkSize, manager) {\n super(\n /* arrayBuffer = */ new Uint8Array(length),\n /* start = */ 0,\n /* length = */ length,\n /* dict = */ null\n );\n\n this.chunkSize = chunkSize;\n this._loadedChunks = new Set();\n this.numChunks = Math.ceil(length / chunkSize);\n this.manager = manager;\n this.progressiveDataLength = 0;\n this.lastSuccessfulEnsureByteChunk = -1; // Single-entry cache\n }\n\n // If a particular stream does not implement one or more of these methods,\n // an error should be thrown.\n getMissingChunks() {\n const chunks = [];\n for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n chunks.push(chunk);\n }\n }\n return chunks;\n }\n\n get numChunksLoaded() {\n return this._loadedChunks.size;\n }\n\n get isDataLoaded() {\n return this.numChunksLoaded === this.numChunks;\n }\n\n onReceiveData(begin, chunk) {\n const chunkSize = this.chunkSize;\n if (begin % chunkSize !== 0) {\n throw new Error(`Bad begin offset: ${begin}`);\n }\n\n // Using `this.length` is inaccurate here since `this.start` can be moved\n // (see the `moveStart` method).\n const end = begin + chunk.byteLength;\n if (end % chunkSize !== 0 && end !== this.bytes.length) {\n throw new Error(`Bad end offset: ${end}`);\n }\n\n this.bytes.set(new Uint8Array(chunk), begin);\n const beginChunk = Math.floor(begin / chunkSize);\n const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // Since a value can only occur *once* in a `Set`, there's no need to\n // manually check `Set.prototype.has()` before adding the value here.\n this._loadedChunks.add(curChunk);\n }\n }\n\n onReceiveProgressiveData(data) {\n let position = this.progressiveDataLength;\n const beginChunk = Math.floor(position / this.chunkSize);\n\n this.bytes.set(new Uint8Array(data), position);\n position += data.byteLength;\n this.progressiveDataLength = position;\n const endChunk =\n position >= this.end\n ? this.numChunks\n : Math.floor(position / this.chunkSize);\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // Since a value can only occur *once* in a `Set`, there's no need to\n // manually check `Set.prototype.has()` before adding the value here.\n this._loadedChunks.add(curChunk);\n }\n }\n\n ensureByte(pos) {\n if (pos < this.progressiveDataLength) {\n return;\n }\n\n const chunk = Math.floor(pos / this.chunkSize);\n if (chunk > this.numChunks) {\n return;\n }\n if (chunk === this.lastSuccessfulEnsureByteChunk) {\n return;\n }\n\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(pos, pos + 1);\n }\n this.lastSuccessfulEnsureByteChunk = chunk;\n }\n\n ensureRange(begin, end) {\n if (begin >= end) {\n return;\n }\n if (end <= this.progressiveDataLength) {\n return;\n }\n\n const beginChunk = Math.floor(begin / this.chunkSize);\n if (beginChunk > this.numChunks) {\n return;\n }\n const endChunk = Math.min(\n Math.floor((end - 1) / this.chunkSize) + 1,\n this.numChunks\n );\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(begin, end);\n }\n }\n }\n\n nextEmptyChunk(beginChunk) {\n const numChunks = this.numChunks;\n for (let i = 0; i < numChunks; ++i) {\n const chunk = (beginChunk + i) % numChunks; // Wrap around to beginning.\n if (!this._loadedChunks.has(chunk)) {\n return chunk;\n }\n }\n return null;\n }\n\n hasChunk(chunk) {\n return this._loadedChunks.has(chunk);\n }\n\n getByte() {\n const pos = this.pos;\n if (pos >= this.end) {\n return -1;\n }\n if (pos >= this.progressiveDataLength) {\n this.ensureByte(pos);\n }\n return this.bytes[this.pos++];\n }\n\n getBytes(length, forceClamped = false) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n\n if (!length) {\n if (strEnd > this.progressiveDataLength) {\n this.ensureRange(pos, strEnd);\n }\n const subarray = bytes.subarray(pos, strEnd);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n let end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n if (end > this.progressiveDataLength) {\n this.ensureRange(pos, end);\n }\n\n this.pos = end;\n const subarray = bytes.subarray(pos, end);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n if (end > this.progressiveDataLength) {\n this.ensureRange(begin, end);\n }\n return this.bytes.subarray(begin, end);\n }\n\n makeSubStream(start, length, dict = null) {\n if (length) {\n if (start + length > this.progressiveDataLength) {\n this.ensureRange(start, start + length);\n }\n } else {\n // When the `length` is undefined you do *not*, under any circumstances,\n // want to fallback on calling `this.ensureRange(start, this.end)` since\n // that would force the *entire* PDF file to be loaded, thus completely\n // breaking the whole purpose of using streaming and/or range requests.\n //\n // However, not doing any checking here could very easily lead to wasted\n // time/resources during e.g. parsing, since `MissingDataException`s will\n // require data to be re-parsed, which we attempt to minimize by at least\n // checking that the *beginning* of the data is available here.\n if (start >= this.progressiveDataLength) {\n this.ensureByte(start);\n }\n }\n\n function ChunkedStreamSubstream() {}\n ChunkedStreamSubstream.prototype = Object.create(this);\n ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n const chunkSize = this.chunkSize;\n const beginChunk = Math.floor(this.start / chunkSize);\n const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n const missingChunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n missingChunks.push(chunk);\n }\n }\n return missingChunks;\n };\n Object.defineProperty(ChunkedStreamSubstream.prototype, \"isDataLoaded\", {\n get() {\n if (this.numChunksLoaded === this.numChunks) {\n return true;\n }\n return this.getMissingChunks().length === 0;\n },\n configurable: true,\n });\n\n const subStream = new ChunkedStreamSubstream();\n subStream.pos = subStream.start = start;\n subStream.end = start + length || this.end;\n subStream.dict = dict;\n return subStream;\n }\n\n getBaseStreams() {\n return [this];\n }\n}\n\nclass ChunkedStreamManager {\n constructor(pdfNetworkStream, args) {\n this.length = args.length;\n this.chunkSize = args.rangeChunkSize;\n this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n this.pdfNetworkStream = pdfNetworkStream;\n this.disableAutoFetch = args.disableAutoFetch;\n this.msgHandler = args.msgHandler;\n\n this.currRequestId = 0;\n\n this._chunksNeededByRequest = new Map();\n this._requestsByChunk = new Map();\n this._promisesByRequest = new Map();\n this.progressiveDataLength = 0;\n this.aborted = false;\n\n this._loadedStreamCapability = createPromiseCapability();\n }\n\n onLoadedStream() {\n return this._loadedStreamCapability.promise;\n }\n\n sendRequest(begin, end) {\n const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n if (!rangeReader.isStreamingSupported) {\n rangeReader.onProgress = this.onProgress.bind(this);\n }\n\n let chunks = [],\n loaded = 0;\n return new Promise((resolve, reject) => {\n const readChunk = chunk => {\n try {\n if (!chunk.done) {\n const data = chunk.value;\n chunks.push(data);\n loaded += arrayByteLength(data);\n if (rangeReader.isStreamingSupported) {\n this.onProgress({ loaded });\n }\n rangeReader.read().then(readChunk, reject);\n return;\n }\n const chunkData = arraysToBytes(chunks);\n chunks = null;\n resolve(chunkData);\n } catch (e) {\n reject(e);\n }\n };\n rangeReader.read().then(readChunk, reject);\n }).then(data => {\n if (this.aborted) {\n return; // Ignoring any data after abort.\n }\n this.onReceiveData({ chunk: data, begin });\n });\n }\n\n /**\n * Get all the chunks that are not yet loaded and group them into\n * contiguous ranges to load in as few requests as possible.\n */\n requestAllChunks() {\n const missingChunks = this.stream.getMissingChunks();\n this._requestChunks(missingChunks);\n return this._loadedStreamCapability.promise;\n }\n\n _requestChunks(chunks) {\n const requestId = this.currRequestId++;\n\n const chunksNeeded = new Set();\n this._chunksNeededByRequest.set(requestId, chunksNeeded);\n for (const chunk of chunks) {\n if (!this.stream.hasChunk(chunk)) {\n chunksNeeded.add(chunk);\n }\n }\n\n if (chunksNeeded.size === 0) {\n return Promise.resolve();\n }\n\n const capability = createPromiseCapability();\n this._promisesByRequest.set(requestId, capability);\n\n const chunksToRequest = [];\n for (const chunk of chunksNeeded) {\n let requestIds = this._requestsByChunk.get(chunk);\n if (!requestIds) {\n requestIds = [];\n this._requestsByChunk.set(chunk, requestIds);\n\n chunksToRequest.push(chunk);\n }\n requestIds.push(requestId);\n }\n\n if (chunksToRequest.length > 0) {\n const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n for (const groupedChunk of groupedChunksToRequest) {\n const begin = groupedChunk.beginChunk * this.chunkSize;\n const end = Math.min(\n groupedChunk.endChunk * this.chunkSize,\n this.length\n );\n this.sendRequest(begin, end).catch(capability.reject);\n }\n }\n\n return capability.promise.catch(reason => {\n if (this.aborted) {\n return; // Ignoring any pending requests after abort.\n }\n throw reason;\n });\n }\n\n getStream() {\n return this.stream;\n }\n\n /**\n * Loads any chunks in the requested range that are not yet loaded.\n */\n requestRange(begin, end) {\n end = Math.min(end, this.length);\n\n const beginChunk = this.getBeginChunk(begin);\n const endChunk = this.getEndChunk(end);\n\n const chunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n chunks.push(chunk);\n }\n return this._requestChunks(chunks);\n }\n\n requestRanges(ranges = []) {\n const chunksToRequest = [];\n for (const range of ranges) {\n const beginChunk = this.getBeginChunk(range.begin);\n const endChunk = this.getEndChunk(range.end);\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!chunksToRequest.includes(chunk)) {\n chunksToRequest.push(chunk);\n }\n }\n }\n\n chunksToRequest.sort(function (a, b) {\n return a - b;\n });\n return this._requestChunks(chunksToRequest);\n }\n\n /**\n * Groups a sorted array of chunks into as few contiguous larger\n * chunks as possible.\n */\n groupChunks(chunks) {\n const groupedChunks = [];\n let beginChunk = -1;\n let prevChunk = -1;\n\n for (let i = 0, ii = chunks.length; i < ii; ++i) {\n const chunk = chunks[i];\n if (beginChunk < 0) {\n beginChunk = chunk;\n }\n\n if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n groupedChunks.push({ beginChunk, endChunk: prevChunk + 1 });\n beginChunk = chunk;\n }\n if (i + 1 === chunks.length) {\n groupedChunks.push({ beginChunk, endChunk: chunk + 1 });\n }\n\n prevChunk = chunk;\n }\n return groupedChunks;\n }\n\n onProgress(args) {\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n total: this.length,\n });\n }\n\n onReceiveData(args) {\n const chunk = args.chunk;\n const isProgressive = args.begin === undefined;\n const begin = isProgressive ? this.progressiveDataLength : args.begin;\n const end = begin + chunk.byteLength;\n\n const beginChunk = Math.floor(begin / this.chunkSize);\n const endChunk =\n end < this.length\n ? Math.floor(end / this.chunkSize)\n : Math.ceil(end / this.chunkSize);\n\n if (isProgressive) {\n this.stream.onReceiveProgressiveData(chunk);\n this.progressiveDataLength = end;\n } else {\n this.stream.onReceiveData(begin, chunk);\n }\n\n if (this.stream.isDataLoaded) {\n this._loadedStreamCapability.resolve(this.stream);\n }\n\n const loadedRequests = [];\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // The server might return more chunks than requested.\n const requestIds = this._requestsByChunk.get(curChunk);\n if (!requestIds) {\n continue;\n }\n this._requestsByChunk.delete(curChunk);\n\n for (const requestId of requestIds) {\n const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n if (chunksNeeded.has(curChunk)) {\n chunksNeeded.delete(curChunk);\n }\n\n if (chunksNeeded.size > 0) {\n continue;\n }\n loadedRequests.push(requestId);\n }\n }\n\n // If there are no pending requests, automatically fetch the next\n // unfetched chunk of the PDF file.\n if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n let nextEmptyChunk;\n if (this.stream.numChunksLoaded === 1) {\n // This is a special optimization so that after fetching the first\n // chunk, rather than fetching the second chunk, we fetch the last\n // chunk.\n const lastChunk = this.stream.numChunks - 1;\n if (!this.stream.hasChunk(lastChunk)) {\n nextEmptyChunk = lastChunk;\n }\n } else {\n nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n }\n if (Number.isInteger(nextEmptyChunk)) {\n this._requestChunks([nextEmptyChunk]);\n }\n }\n\n for (const requestId of loadedRequests) {\n const capability = this._promisesByRequest.get(requestId);\n this._promisesByRequest.delete(requestId);\n capability.resolve();\n }\n\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize,\n total: this.length,\n });\n }\n\n onError(err) {\n this._loadedStreamCapability.reject(err);\n }\n\n getBeginChunk(begin) {\n return Math.floor(begin / this.chunkSize);\n }\n\n getEndChunk(end) {\n return Math.floor((end - 1) / this.chunkSize) + 1;\n }\n\n abort(reason) {\n this.aborted = true;\n if (this.pdfNetworkStream) {\n this.pdfNetworkStream.cancelAllRequests(reason);\n }\n for (const capability of this._promisesByRequest.values()) {\n capability.reject(reason);\n }\n }\n}\n\nexport { ChunkedStream, ChunkedStreamManager };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n BaseException,\n FontType,\n objectSize,\n StreamType,\n stringToPDFString,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, isRef, isStream, RefSet } from \"./primitives.js\";\n\nfunction getLookupTableFactory(initializer) {\n let lookup;\n return function () {\n if (initializer) {\n lookup = Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n return lookup;\n };\n}\n\nfunction getArrayLookupTableFactory(initializer) {\n let lookup;\n return function () {\n if (initializer) {\n let arr = initializer();\n initializer = null;\n lookup = Object.create(null);\n for (let i = 0, ii = arr.length; i < ii; i += 2) {\n lookup[arr[i]] = arr[i + 1];\n }\n arr = null;\n }\n return lookup;\n };\n}\n\nclass MissingDataException extends BaseException {\n constructor(begin, end) {\n super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n this.begin = begin;\n this.end = end;\n }\n}\n\nclass ParserEOFException extends BaseException {\n constructor(msg) {\n super(msg, \"ParserEOFException\");\n }\n}\n\nclass XRefEntryException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefEntryException\");\n }\n}\n\nclass XRefParseException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefParseException\");\n }\n}\n\nclass DocStats {\n constructor(handler) {\n this._handler = handler;\n\n this._streamTypes = new Set();\n this._fontTypes = new Set();\n }\n\n _send() {\n const streamTypes = Object.create(null),\n fontTypes = Object.create(null);\n for (const type of this._streamTypes) {\n streamTypes[type] = true;\n }\n for (const type of this._fontTypes) {\n fontTypes[type] = true;\n }\n this._handler.send(\"DocStats\", { streamTypes, fontTypes });\n }\n\n addStreamType(type) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(StreamType[type] === type, 'addStreamType: Invalid \"type\" value.');\n }\n if (this._streamTypes.has(type)) {\n return;\n }\n this._streamTypes.add(type);\n this._send();\n }\n\n addFontType(type) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(FontType[type] === type, 'addFontType: Invalid \"type\" value.');\n }\n if (this._fontTypes.has(type)) {\n return;\n }\n this._fontTypes.add(type);\n this._send();\n }\n}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n * array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n * the key is found. If set to `false`, we always walk up the entire parent\n * chain, for example to be able to find `\\Resources` placed on multiple\n * levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n dict,\n key,\n getArray = false,\n stopWhenFound = true,\n}) {\n let values;\n const visited = new RefSet();\n\n while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\n if (dict.objId) {\n visited.put(dict.objId);\n }\n const value = getArray ? dict.getArray(key) : dict.get(key);\n if (value !== undefined) {\n if (stopWhenFound) {\n return value;\n }\n if (!values) {\n values = [];\n }\n values.push(value);\n }\n dict = dict.get(\"Parent\");\n }\n return values;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n * to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n assert(\n Number.isInteger(number) && number > 0,\n \"The number should be a positive integer.\"\n );\n const romanBuf = [];\n let pos;\n // Thousands\n while (number >= 1000) {\n number -= 1000;\n romanBuf.push(\"M\");\n }\n // Hundreds\n pos = (number / 100) | 0;\n number %= 100;\n romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n // Tens\n pos = (number / 10) | 0;\n number %= 10;\n romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n // Ones\n romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); // eslint-disable-line unicorn/no-array-push-push\n\n const romanStr = romanBuf.join(\"\");\n return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n if (x <= 0) {\n return 0;\n }\n return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n return (data[offset] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n return (\n ((data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]) >>>\n 0\n );\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\n/**\n * AcroForm field names use an array like notation to refer to\n * repeated XFA elements e.g. foo.bar[nnn].\n * see: XFA Spec Chapter 3 - Repeated Elements\n *\n * @param {string} path - XFA path name.\n * @returns {Array} - Array of Objects with the name and pos of\n * each part of the path.\n */\nfunction parseXFAPath(path) {\n const positionPattern = /(.+)\\[(\\d+)\\]$/;\n return path.split(\".\").map(component => {\n const m = component.match(positionPattern);\n if (m) {\n return { name: m[1], pos: parseInt(m[2], 10) };\n }\n return { name: component, pos: 0 };\n });\n}\n\nfunction escapePDFName(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n // Whitespace or delimiters aren't regular chars, so escape them.\n if (\n char < 0x21 ||\n char > 0x7e ||\n char === 0x23 /* # */ ||\n char === 0x28 /* ( */ ||\n char === 0x29 /* ) */ ||\n char === 0x3c /* < */ ||\n char === 0x3e /* > */ ||\n char === 0x5b /* [ */ ||\n char === 0x5d /* ] */ ||\n char === 0x7b /* { */ ||\n char === 0x7d /* } */ ||\n char === 0x2f /* / */ ||\n char === 0x25 /* % */\n ) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`#${char.toString(16)}`);\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n\n if (start < str.length) {\n buffer.push(str.substring(start, str.length));\n }\n\n return buffer.join(\"\");\n}\n\nfunction _collectJS(entry, xref, list, parents) {\n if (!entry) {\n return;\n }\n\n let parent = null;\n if (isRef(entry)) {\n if (parents.has(entry)) {\n // If we've already found entry then we've a cycle.\n return;\n }\n parent = entry;\n parents.put(parent);\n entry = xref.fetch(entry);\n }\n if (Array.isArray(entry)) {\n for (const element of entry) {\n _collectJS(element, xref, list, parents);\n }\n } else if (entry instanceof Dict) {\n if (isName(entry.get(\"S\"), \"JavaScript\") && entry.has(\"JS\")) {\n const js = entry.get(\"JS\");\n let code;\n if (isStream(js)) {\n code = js.getString();\n } else {\n code = js;\n }\n code = stringToPDFString(code);\n if (code) {\n list.push(code);\n }\n }\n _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n }\n\n if (parent) {\n parents.remove(parent);\n }\n}\n\nfunction collectActions(xref, dict, eventType) {\n const actions = Object.create(null);\n const additionalActionsDicts = getInheritableProperty({\n dict,\n key: \"AA\",\n stopWhenFound: false,\n });\n if (additionalActionsDicts) {\n // additionalActionsDicts contains dicts from ancestors\n // as they're found in the tree from bottom to top.\n // So the dicts are visited in reverse order to guarantee\n // that actions from elder ancestors will be overwritten\n // by ones from younger ancestors.\n for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n const additionalActions = additionalActionsDicts[i];\n if (!(additionalActions instanceof Dict)) {\n continue;\n }\n for (const key of additionalActions.getKeys()) {\n const action = eventType[key];\n if (!action) {\n continue;\n }\n const actionDict = additionalActions.getRaw(key);\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions[action] = list;\n }\n }\n }\n }\n // Collect the Action if any (we may have one on pushbutton).\n if (dict.has(\"A\")) {\n const actionDict = dict.get(\"A\");\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions.Action = list;\n }\n }\n return objectSize(actions) > 0 ? actions : null;\n}\n\nconst XMLEntities = {\n /* < */ 0x3c: \"&lt;\",\n /* > */ 0x3e: \"&gt;\",\n /* & */ 0x26: \"&amp;\",\n /* \" */ 0x22: \"&quot;\",\n /* ' */ 0x27: \"&apos;\",\n};\n\nfunction encodeToXmlString(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.codePointAt(i);\n if (0x20 <= char && char <= 0x7e) {\n // ascii\n const entity = XMLEntities[char];\n if (entity) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(entity);\n start = i + 1;\n }\n } else {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n // char is represented by two u16\n i++;\n }\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n if (start < str.length) {\n buffer.push(str.substring(start, str.length));\n }\n return buffer.join(\"\");\n}\n\nfunction validateCSSFont(cssFontInfo) {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-style.\n const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight.\n const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n const CSS_FONT_WEIGHT_VALUES = new Set([\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\",\n \"1000\",\n \"normal\",\n \"bold\",\n \"bolder\",\n \"lighter\",\n ]);\n\n const { fontFamily, fontWeight, italicAngle } = cssFontInfo;\n\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/string.\n if (/^\".*\"$/.test(fontFamily)) {\n if (/[^\\\\]\"/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n warn(`XFA - FontFamily contains some unescaped \": ${fontFamily}.`);\n return false;\n }\n } else if (/^'.*'$/.test(fontFamily)) {\n if (/[^\\\\]'/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n warn(`XFA - FontFamily contains some unescaped ': ${fontFamily}.`);\n return false;\n }\n } else {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident.\n for (const ident of fontFamily.split(/[ \\t]+/)) {\n if (/^(\\d|(-(\\d|-)))/.test(ident) || !/^[\\w-\\\\]+$/.test(ident)) {\n warn(\n `XFA - FontFamily contains some invalid <custom-ident>: ${fontFamily}.`\n );\n return false;\n }\n }\n }\n\n const weight = fontWeight ? fontWeight.toString() : \"\";\n cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight)\n ? weight\n : DEFAULT_CSS_FONT_WEIGHT;\n\n const angle = parseFloat(italicAngle);\n cssFontInfo.italicAngle =\n isNaN(angle) || angle < -90 || angle > 90\n ? DEFAULT_CSS_FONT_OBLIQUE\n : italicAngle.toString();\n\n return true;\n}\n\nfunction recoverJsURL(str) {\n // Attempt to recover valid URLs from `JS` entries with certain\n // white-listed formats:\n // - window.open('http://example.com')\n // - app.launchURL('http://example.com', true)\n // - xfa.host.gotoURL('http://example.com')\n const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n const regex = new RegExp(\n \"^\\\\s*(\" +\n URL_OPEN_METHODS.join(\"|\").split(\".\").join(\"\\\\.\") +\n \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n \"i\"\n );\n\n const jsUrl = regex.exec(str);\n if (jsUrl && jsUrl[2]) {\n const url = jsUrl[2];\n let newWindow = false;\n\n if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n newWindow = true;\n }\n return { url, newWindow };\n }\n\n return null;\n}\n\nexport {\n collectActions,\n DocStats,\n encodeToXmlString,\n escapePDFName,\n getArrayLookupTableFactory,\n getInheritableProperty,\n getLookupTableFactory,\n isWhiteSpace,\n log2,\n MissingDataException,\n ParserEOFException,\n parseXFAPath,\n readInt8,\n readUint16,\n readUint32,\n recoverJsURL,\n toRomanNumerals,\n validateCSSFont,\n XRefEntryException,\n XRefParseException,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { stringToBytes } from \"../shared/util.js\";\n\nclass Stream extends BaseStream {\n constructor(arrayBuffer, start, length, dict) {\n super();\n\n this.bytes =\n arrayBuffer instanceof Uint8Array\n ? arrayBuffer\n : new Uint8Array(arrayBuffer);\n this.start = start || 0;\n this.pos = this.start;\n this.end = start + length || this.bytes.length;\n this.dict = dict;\n }\n\n get length() {\n return this.end - this.start;\n }\n\n get isEmpty() {\n return this.length === 0;\n }\n\n getByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.bytes[this.pos++];\n }\n\n getBytes(length, forceClamped = false) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n\n if (!length) {\n const subarray = bytes.subarray(pos, strEnd);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n let end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n this.pos = end;\n const subarray = bytes.subarray(pos, end);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n return this.bytes.subarray(begin, end);\n }\n\n reset() {\n this.pos = this.start;\n }\n\n moveStart() {\n this.start = this.pos;\n }\n\n makeSubStream(start, length, dict = null) {\n return new Stream(this.bytes.buffer, start, length, dict);\n }\n}\n\nclass StringStream extends Stream {\n constructor(str) {\n super(stringToBytes(str));\n }\n}\n\nclass NullStream extends Stream {\n constructor() {\n super(new Uint8Array(0));\n }\n}\n\nexport { NullStream, Stream, StringStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isBool,\n isNum,\n isString,\n OPS,\n PageActionEventType,\n RenderingIntentFlag,\n shadow,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n unreachable,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n clearPrimitiveCaches,\n Dict,\n isDict,\n isName,\n isRef,\n isStream,\n Name,\n Ref,\n} from \"./primitives.js\";\nimport {\n collectActions,\n getInheritableProperty,\n isWhiteSpace,\n MissingDataException,\n validateCSSFont,\n XRefEntryException,\n XRefParseException,\n} from \"./core_utils.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { AnnotationFactory } from \"./annotation.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { Linearization } from \"./parser.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PartialEvaluator } from \"./evaluator.js\";\nimport { StreamsSequenceStream } from \"./decode_stream.js\";\nimport { StructTreePage } from \"./struct_tree.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\nimport { XRef } from \"./xref.js\";\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nclass Page {\n constructor({\n pdfManager,\n xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalImageCache,\n nonBlendModesSet,\n xfaFactory,\n }) {\n this.pdfManager = pdfManager;\n this.pageIndex = pageIndex;\n this.pageDict = pageDict;\n this.xref = xref;\n this.ref = ref;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalImageCache = globalImageCache;\n this.nonBlendModesSet = nonBlendModesSet;\n this.evaluatorOptions = pdfManager.evaluatorOptions;\n this.resourcesPromise = null;\n this.xfaFactory = xfaFactory;\n\n const idCounters = {\n obj: 0,\n };\n this._localIdFactory = class extends globalIdFactory {\n static createObjId() {\n return `p${pageIndex}_${++idCounters.obj}`;\n }\n\n static getPageObjId() {\n return `page${ref.toString()}`;\n }\n };\n }\n\n /**\n * @private\n */\n _getInheritableProperty(key, getArray = false) {\n const value = getInheritableProperty({\n dict: this.pageDict,\n key,\n getArray,\n stopWhenFound: false,\n });\n if (!Array.isArray(value)) {\n return value;\n }\n if (value.length === 1 || !isDict(value[0])) {\n return value[0];\n }\n return Dict.merge({ xref: this.xref, dictArray: value });\n }\n\n get content() {\n return this.pageDict.getArray(\"Contents\");\n }\n\n get resources() {\n // For robustness: The spec states that a \\Resources entry has to be\n // present, but can be empty. Some documents still omit it; in this case\n // we return an empty dictionary.\n return shadow(\n this,\n \"resources\",\n this._getInheritableProperty(\"Resources\") || Dict.empty\n );\n }\n\n _getBoundingBox(name) {\n if (this.xfaData) {\n return this.xfaData.bbox;\n }\n\n const box = this._getInheritableProperty(name, /* getArray = */ true);\n\n if (Array.isArray(box) && box.length === 4) {\n if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n return box;\n }\n warn(`Empty /${name} entry.`);\n }\n return null;\n }\n\n get mediaBox() {\n // Reset invalid media box to letter size.\n return shadow(\n this,\n \"mediaBox\",\n this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX\n );\n }\n\n get cropBox() {\n // Reset invalid crop box to media box.\n return shadow(\n this,\n \"cropBox\",\n this._getBoundingBox(\"CropBox\") || this.mediaBox\n );\n }\n\n get userUnit() {\n let obj = this.pageDict.get(\"UserUnit\");\n if (!isNum(obj) || obj <= 0) {\n obj = DEFAULT_USER_UNIT;\n }\n return shadow(this, \"userUnit\", obj);\n }\n\n get view() {\n // From the spec, 6th ed., p.963:\n // \"The crop, bleed, trim, and art boxes should not ordinarily\n // extend beyond the boundaries of the media box. If they do, they are\n // effectively reduced to their intersection with the media box.\"\n const { cropBox, mediaBox } = this;\n let view;\n if (cropBox === mediaBox || isArrayEqual(cropBox, mediaBox)) {\n view = mediaBox;\n } else {\n const box = Util.intersect(cropBox, mediaBox);\n if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n view = box;\n } else {\n warn(\"Empty /CropBox and /MediaBox intersection.\");\n }\n }\n return shadow(this, \"view\", view || mediaBox);\n }\n\n get rotate() {\n let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n // Normalize rotation so it's a multiple of 90 and between 0 and 270.\n if (rotate % 90 !== 0) {\n rotate = 0;\n } else if (rotate >= 360) {\n rotate %= 360;\n } else if (rotate < 0) {\n // The spec doesn't cover negatives. Assume it's counterclockwise\n // rotation. The following is the other implementation of modulo.\n rotate = ((rotate % 360) + 360) % 360;\n }\n return shadow(this, \"rotate\", rotate);\n }\n\n /**\n * @private\n */\n _onSubStreamError(handler, reason, objId) {\n if (this.evaluatorOptions.ignoreErrors) {\n // Error(s) when reading one of the /Contents sub-streams -- sending\n // unsupported feature notification and allow parsing to continue.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorContentSubStream,\n });\n warn(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n return;\n }\n throw reason;\n }\n\n /**\n * @returns {Promise<BaseStream>}\n */\n getContentStream(handler) {\n return this.pdfManager.ensure(this, \"content\").then(content => {\n if (content instanceof BaseStream) {\n return content;\n }\n if (Array.isArray(content)) {\n return new StreamsSequenceStream(\n content,\n this._onSubStreamError.bind(this, handler)\n );\n }\n // Replace non-existent page content with empty content.\n return new NullStream();\n });\n }\n\n get xfaData() {\n return shadow(\n this,\n \"xfaData\",\n this.xfaFactory\n ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) }\n : null\n );\n }\n\n save(handler, task, annotationStorage) {\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n // Fetch the page's annotations and save the content\n // in case of interactive form fields.\n return this._parsedAnnotations.then(function (annotations) {\n const newRefsPromises = [];\n for (const annotation of annotations) {\n if (!annotation.mustBePrinted(annotationStorage)) {\n continue;\n }\n newRefsPromises.push(\n annotation\n .save(partialEvaluator, task, annotationStorage)\n .catch(function (reason) {\n warn(\n \"save - ignoring annotation data during \" +\n `\"${task.name}\" task: \"${reason}\".`\n );\n return null;\n })\n );\n }\n\n return Promise.all(newRefsPromises);\n });\n }\n\n loadResources(keys) {\n if (!this.resourcesPromise) {\n // TODO: add async `_getInheritableProperty` and remove this.\n this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n }\n return this.resourcesPromise.then(() => {\n const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n return objectLoader.load();\n });\n }\n\n getOperatorList({\n handler,\n sink,\n task,\n intent,\n cacheKey,\n annotationStorage = null,\n }) {\n const contentStreamPromise = this.getContentStream(handler);\n const resourcesPromise = this.loadResources([\n \"ColorSpace\",\n \"ExtGState\",\n \"Font\",\n \"Pattern\",\n \"Properties\",\n \"Shading\",\n \"XObject\",\n ]);\n\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n const pageListPromise = dataPromises.then(([contentStream]) => {\n const opList = new OperatorList(intent, sink);\n\n handler.send(\"StartRenderPage\", {\n transparency: partialEvaluator.hasBlendModes(\n this.resources,\n this.nonBlendModesSet\n ),\n pageIndex: this.pageIndex,\n cacheKey,\n });\n\n return partialEvaluator\n .getOperatorList({\n stream: contentStream,\n task,\n resources: this.resources,\n operatorList: opList,\n })\n .then(function () {\n return opList;\n });\n });\n\n // Fetch the page's annotations and add their operator lists to the\n // page's operator list to render them.\n return Promise.all([pageListPromise, this._parsedAnnotations]).then(\n function ([pageOpList, annotations]) {\n if (\n annotations.length === 0 ||\n intent & RenderingIntentFlag.ANNOTATIONS_DISABLE\n ) {\n pageOpList.flush(true);\n return { length: pageOpList.totalLength };\n }\n const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n // Collect the operator list promises for the annotations. Each promise\n // is resolved with the complete operator list for a single annotation.\n const opListPromises = [];\n for (const annotation of annotations) {\n if (\n intentAny ||\n (intentDisplay && annotation.mustBeViewed(annotationStorage)) ||\n (intentPrint && annotation.mustBePrinted(annotationStorage))\n ) {\n opListPromises.push(\n annotation\n .getOperatorList(\n partialEvaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n )\n .catch(function (reason) {\n warn(\n \"getOperatorList - ignoring annotation data during \" +\n `\"${task.name}\" task: \"${reason}\".`\n );\n return null;\n })\n );\n }\n }\n\n return Promise.all(opListPromises).then(function (opLists) {\n pageOpList.addOp(OPS.beginAnnotations, []);\n for (const opList of opLists) {\n pageOpList.addOpList(opList);\n }\n pageOpList.addOp(OPS.endAnnotations, []);\n pageOpList.flush(true);\n return { length: pageOpList.totalLength };\n });\n }\n );\n }\n\n extractTextContent({\n handler,\n task,\n normalizeWhitespace,\n includeMarkedContent,\n sink,\n combineTextItems,\n }) {\n const contentStreamPromise = this.getContentStream(handler);\n const resourcesPromise = this.loadResources([\n \"ExtGState\",\n \"Font\",\n \"Properties\",\n \"XObject\",\n ]);\n\n const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n return dataPromises.then(([contentStream]) => {\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n return partialEvaluator.getTextContent({\n stream: contentStream,\n task,\n resources: this.resources,\n normalizeWhitespace,\n includeMarkedContent,\n combineTextItems,\n sink,\n });\n });\n }\n\n async getStructTree() {\n const structTreeRoot = await this.pdfManager.ensureCatalog(\n \"structTreeRoot\"\n );\n if (!structTreeRoot) {\n return null;\n }\n const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [\n structTreeRoot,\n ]);\n return structTree.serializable;\n }\n\n /**\n * @private\n */\n _parseStructTree(structTreeRoot) {\n const tree = new StructTreePage(structTreeRoot, this.pageDict);\n tree.parse();\n return tree;\n }\n\n getAnnotationsData(intent) {\n return this._parsedAnnotations.then(function (annotations) {\n const annotationsData = [];\n\n if (annotations.length === 0) {\n return annotationsData;\n }\n const intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n for (const annotation of annotations) {\n // Get the annotation even if it's hidden because\n // JS can change its display.\n if (\n intentAny ||\n (intentDisplay && annotation.viewable) ||\n (intentPrint && annotation.printable)\n ) {\n annotationsData.push(annotation.data);\n }\n }\n return annotationsData;\n });\n }\n\n get annotations() {\n const annots = this._getInheritableProperty(\"Annots\");\n return shadow(this, \"annotations\", Array.isArray(annots) ? annots : []);\n }\n\n get _parsedAnnotations() {\n const parsedAnnotations = this.pdfManager\n .ensure(this, \"annotations\")\n .then(() => {\n const annotationPromises = [];\n for (const annotationRef of this.annotations) {\n annotationPromises.push(\n AnnotationFactory.create(\n this.xref,\n annotationRef,\n this.pdfManager,\n this._localIdFactory,\n /* collectFields */ false\n ).catch(function (reason) {\n warn(`_parsedAnnotations: \"${reason}\".`);\n return null;\n })\n );\n }\n\n return Promise.all(annotationPromises).then(function (annotations) {\n return annotations.filter(annotation => !!annotation);\n });\n });\n\n return shadow(this, \"_parsedAnnotations\", parsedAnnotations);\n }\n\n get jsActions() {\n const actions = collectActions(\n this.xref,\n this.pageDict,\n PageActionEventType\n );\n return shadow(this, \"jsActions\", actions);\n }\n}\n\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([\n 0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66,\n]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\n\nconst FINGERPRINT_FIRST_BYTES = 1024;\nconst EMPTY_FINGERPRINT =\n \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\n\nconst PDF_HEADER_VERSION_REGEXP = /^[1-9]\\.\\d$/;\n\nfunction find(stream, signature, limit = 1024, backwards = false) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(limit > 0, 'The \"limit\" must be a positive integer.');\n }\n const signatureLength = signature.length;\n\n const scanBytes = stream.peekBytes(limit);\n const scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n return false;\n }\n if (backwards) {\n const signatureEnd = signatureLength - 1;\n\n let pos = scanBytes.length - 1;\n while (pos >= signatureEnd) {\n let j = 0;\n while (\n j < signatureLength &&\n scanBytes[pos - j] === signature[signatureEnd - j]\n ) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos - signatureEnd;\n return true;\n }\n pos--;\n }\n } else {\n // forwards\n let pos = 0;\n while (pos <= scanLength) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos;\n return true;\n }\n pos++;\n }\n }\n return false;\n}\n\n/**\n * The `PDFDocument` class holds all the (worker-thread) data of the PDF file.\n */\nclass PDFDocument {\n constructor(pdfManager, arg) {\n let stream;\n if (isStream(arg)) {\n stream = arg;\n } else if (isArrayBuffer(arg)) {\n stream = new Stream(arg);\n } else {\n throw new Error(\"PDFDocument: Unknown argument type\");\n }\n if (stream.length <= 0) {\n throw new InvalidPDFException(\n \"The PDF file is empty, i.e. its size is zero bytes.\"\n );\n }\n\n this.pdfManager = pdfManager;\n this.stream = stream;\n this.xref = new XRef(stream, pdfManager);\n this._pagePromises = new Map();\n this._version = null;\n\n const idCounters = {\n font: 0,\n };\n this._globalIdFactory = class {\n static getDocId() {\n return `g_${pdfManager.docId}`;\n }\n\n static createFontId() {\n return `f${++idCounters.font}`;\n }\n\n static createObjId() {\n unreachable(\"Abstract method `createObjId` called.\");\n }\n\n static getPageObjId() {\n unreachable(\"Abstract method `getPageObjId` called.\");\n }\n };\n }\n\n parse(recoveryMode) {\n this.xref.parse(recoveryMode);\n this.catalog = new Catalog(this.pdfManager, this.xref);\n\n // The `checkHeader` method is called before this method and parses the\n // version from the header. The specification states in section 7.5.2\n // that the version from the catalog, if present, should overwrite the\n // version from the header.\n if (this.catalog.version) {\n this._version = this.catalog.version;\n }\n }\n\n get linearization() {\n let linearization = null;\n try {\n linearization = Linearization.create(this.stream);\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(err);\n }\n return shadow(this, \"linearization\", linearization);\n }\n\n get startXRef() {\n const stream = this.stream;\n let startXRef = 0;\n\n if (this.linearization) {\n // Find the end of the first object.\n stream.reset();\n if (find(stream, ENDOBJ_SIGNATURE)) {\n startXRef = stream.pos + 6 - stream.start;\n }\n } else {\n // Find `startxref` by checking backwards from the end of the file.\n const step = 1024;\n const startXRefLength = STARTXREF_SIGNATURE.length;\n let found = false,\n pos = stream.end;\n\n while (!found && pos > 0) {\n pos -= step - startXRefLength;\n if (pos < 0) {\n pos = 0;\n }\n stream.pos = pos;\n found = find(stream, STARTXREF_SIGNATURE, step, true);\n }\n\n if (found) {\n stream.skip(9);\n let ch;\n do {\n ch = stream.getByte();\n } while (isWhiteSpace(ch));\n let str = \"\";\n while (ch >= /* Space = */ 0x20 && ch <= /* '9' = */ 0x39) {\n str += String.fromCharCode(ch);\n ch = stream.getByte();\n }\n startXRef = parseInt(str, 10);\n if (isNaN(startXRef)) {\n startXRef = 0;\n }\n }\n }\n return shadow(this, \"startXRef\", startXRef);\n }\n\n // Find the header, get the PDF format version and setup the\n // stream to start from the header.\n checkHeader() {\n const stream = this.stream;\n stream.reset();\n\n if (!find(stream, PDF_HEADER_SIGNATURE)) {\n // May not be a PDF file, but don't throw an error and let\n // parsing continue.\n return;\n }\n stream.moveStart();\n\n // Read the PDF format version.\n const MAX_PDF_VERSION_LENGTH = 12;\n let version = \"\",\n ch;\n while ((ch = stream.getByte()) > /* Space = */ 0x20) {\n if (version.length >= MAX_PDF_VERSION_LENGTH) {\n break;\n }\n version += String.fromCharCode(ch);\n }\n if (!this._version) {\n // Remove the \"%PDF-\" prefix.\n this._version = version.substring(5);\n }\n }\n\n parseStartXRef() {\n this.xref.setStartXRef(this.startXRef);\n }\n\n get numPages() {\n let num = 0;\n if (this.catalog.hasActualNumPages) {\n num = this.catalog.numPages;\n } else if (this.xfaFactory) {\n // num is a Promise.\n num = this.xfaFactory.getNumPages();\n } else if (this.linearization) {\n num = this.linearization.numPages;\n } else {\n num = this.catalog.numPages;\n }\n return shadow(this, \"numPages\", num);\n }\n\n /**\n * @private\n */\n _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n const RECURSION_LIMIT = 10;\n\n if (!Array.isArray(fields)) {\n return false;\n }\n return fields.every(field => {\n field = this.xref.fetchIfRef(field);\n if (!(field instanceof Dict)) {\n return false;\n }\n if (field.has(\"Kids\")) {\n if (++recursionDepth > RECURSION_LIMIT) {\n warn(\"_hasOnlyDocumentSignatures: maximum recursion depth reached\");\n return false;\n }\n return this._hasOnlyDocumentSignatures(\n field.get(\"Kids\"),\n recursionDepth\n );\n }\n const isSignature = isName(field.get(\"FT\"), \"Sig\");\n const rectangle = field.get(\"Rect\");\n const isInvisible =\n Array.isArray(rectangle) && rectangle.every(value => value === 0);\n return isSignature && isInvisible;\n });\n }\n\n get xfaData() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return null;\n }\n\n const xfa = acroForm.get(\"XFA\");\n const entries = {\n \"xdp:xdp\": \"\",\n template: \"\",\n datasets: \"\",\n config: \"\",\n connectionSet: \"\",\n localeSet: \"\",\n stylesheet: \"\",\n \"/xdp:xdp\": \"\",\n };\n if (isStream(xfa) && !xfa.isEmpty) {\n try {\n entries[\"xdp:xdp\"] = stringToUTF8String(xfa.getString());\n return entries;\n } catch (_) {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n\n if (!Array.isArray(xfa) || xfa.length === 0) {\n return null;\n }\n\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n let name;\n if (i === 0) {\n name = \"xdp:xdp\";\n } else if (i === ii - 2) {\n name = \"/xdp:xdp\";\n } else {\n name = xfa[i];\n }\n\n if (!entries.hasOwnProperty(name)) {\n continue;\n }\n const data = this.xref.fetchIfRef(xfa[i + 1]);\n if (!isStream(data) || data.isEmpty) {\n continue;\n }\n try {\n entries[name] = stringToUTF8String(data.getString());\n } catch (_) {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n return entries;\n }\n\n get xfaFactory() {\n let data;\n if (\n this.pdfManager.enableXfa &&\n this.catalog.needsRendering &&\n this.formInfo.hasXfa &&\n !this.formInfo.hasAcroForm\n ) {\n data = this.xfaData;\n }\n return shadow(this, \"xfaFactory\", data ? new XFAFactory(data) : null);\n }\n\n get isPureXfa() {\n return this.xfaFactory ? this.xfaFactory.isValid() : false;\n }\n\n get htmlForXfa() {\n return this.xfaFactory ? this.xfaFactory.getPages() : null;\n }\n\n async loadXfaImages() {\n const xfaImagesDict = await this.pdfManager.ensureCatalog(\"xfaImages\");\n if (!xfaImagesDict) {\n return;\n }\n\n const keys = xfaImagesDict.getKeys();\n const objectLoader = new ObjectLoader(xfaImagesDict, keys, this.xref);\n await objectLoader.load();\n\n const xfaImages = new Map();\n for (const key of keys) {\n const stream = xfaImagesDict.get(key);\n if (!isStream(stream)) {\n continue;\n }\n xfaImages.set(key, stream.getBytes());\n }\n\n this.xfaFactory.setImages(xfaImages);\n }\n\n async loadXfaFonts(handler, task) {\n const acroForm = await this.pdfManager.ensureCatalog(\"acroForm\");\n if (!acroForm) {\n return;\n }\n const resources = await acroForm.getAsync(\"DR\");\n if (!(resources instanceof Dict)) {\n return;\n }\n const objectLoader = new ObjectLoader(resources, [\"Font\"], this.xref);\n await objectLoader.load();\n\n const fontRes = resources.get(\"Font\");\n if (!(fontRes instanceof Dict)) {\n return;\n }\n\n const options = Object.assign(\n Object.create(null),\n this.pdfManager.evaluatorOptions\n );\n options.useSystemFonts = false;\n\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: -1,\n idFactory: this._globalIdFactory,\n fontCache: this.catalog.fontCache,\n builtInCMapCache: this.catalog.builtInCMapCache,\n standardFontDataCache: this.catalog.standardFontDataCache,\n options,\n });\n const operatorList = new OperatorList();\n const pdfFonts = [];\n const initialState = {\n get font() {\n return pdfFonts[pdfFonts.length - 1];\n },\n set font(font) {\n pdfFonts.push(font);\n },\n clone() {\n return this;\n },\n };\n\n const fonts = new Map();\n fontRes.forEach((fontName, font) => {\n fonts.set(fontName, font);\n });\n const promises = [];\n\n for (const [fontName, font] of fonts) {\n const descriptor = font.get(\"FontDescriptor\");\n if (!(descriptor instanceof Dict)) {\n continue;\n }\n let fontFamily = descriptor.get(\"FontFamily\");\n // For example, \"Wingdings 3\" is not a valid font name in the css specs.\n fontFamily = fontFamily.replace(/[ ]+(\\d)/g, \"$1\");\n const fontWeight = descriptor.get(\"FontWeight\");\n\n // Angle is expressed in degrees counterclockwise in PDF\n // when it's clockwise in CSS\n // (see https://drafts.csswg.org/css-fonts-4/#valdef-font-style-oblique-angle)\n const italicAngle = -descriptor.get(\"ItalicAngle\");\n const cssFontInfo = { fontFamily, fontWeight, italicAngle };\n\n if (!validateCSSFont(cssFontInfo)) {\n continue;\n }\n promises.push(\n partialEvaluator\n .handleSetFont(\n resources,\n [Name.get(fontName), 1],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ null,\n /* cssFontInfo = */ cssFontInfo\n )\n .catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n })\n );\n }\n\n await Promise.all(promises);\n const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n\n if (!missingFonts) {\n return;\n }\n\n options.ignoreErrors = true;\n promises.length = 0;\n pdfFonts.length = 0;\n\n const reallyMissingFonts = new Set();\n for (const missing of missingFonts) {\n if (!getXfaFontName(`${missing}-Regular`)) {\n // No substitution available: we'll fallback on Myriad.\n reallyMissingFonts.add(missing);\n }\n }\n\n if (reallyMissingFonts.size) {\n missingFonts.push(\"PdfJS-Fallback\");\n }\n\n for (const missing of missingFonts) {\n if (reallyMissingFonts.has(missing)) {\n continue;\n }\n for (const fontInfo of [\n { name: \"Regular\", fontWeight: 400, italicAngle: 0 },\n { name: \"Bold\", fontWeight: 700, italicAngle: 0 },\n { name: \"Italic\", fontWeight: 400, italicAngle: 12 },\n { name: \"BoldItalic\", fontWeight: 700, italicAngle: 12 },\n ]) {\n const name = `${missing}-${fontInfo.name}`;\n const dict = getXfaFontDict(name);\n\n promises.push(\n partialEvaluator\n .handleSetFont(\n resources,\n [Name.get(name), 1],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ dict,\n /* cssFontInfo = */ {\n fontFamily: missing,\n fontWeight: fontInfo.fontWeight,\n italicAngle: fontInfo.italicAngle,\n }\n )\n .catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n })\n );\n }\n }\n\n await Promise.all(promises);\n this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n }\n\n async serializeXfaData(annotationStorage) {\n return this.xfaFactory\n ? this.xfaFactory.serializeData(annotationStorage)\n : null;\n }\n\n get formInfo() {\n const formInfo = {\n hasFields: false,\n hasAcroForm: false,\n hasXfa: false,\n hasSignatures: false,\n };\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return shadow(this, \"formInfo\", formInfo);\n }\n\n try {\n const fields = acroForm.get(\"Fields\");\n const hasFields = Array.isArray(fields) && fields.length > 0;\n formInfo.hasFields = hasFields; // Used by the `fieldObjects` getter.\n\n // The document contains XFA data if the `XFA` entry is a non-empty\n // array or stream.\n const xfa = acroForm.get(\"XFA\");\n formInfo.hasXfa =\n (Array.isArray(xfa) && xfa.length > 0) ||\n (isStream(xfa) && !xfa.isEmpty);\n\n // The document contains AcroForm data if the `Fields` entry is a\n // non-empty array and it doesn't consist of only document signatures.\n // This second check is required for files that don't actually contain\n // AcroForm data (only XFA data), but that use the `Fields` entry to\n // store (invisible) document signatures. This can be detected using\n // the first bit of the `SigFlags` integer (see Table 219 in the\n // specification).\n const sigFlags = acroForm.get(\"SigFlags\");\n const hasSignatures = !!(sigFlags & 0x1);\n const hasOnlyDocumentSignatures =\n hasSignatures && this._hasOnlyDocumentSignatures(fields);\n formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n formInfo.hasSignatures = hasSignatures;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Cannot fetch form information: \"${ex}\".`);\n }\n return shadow(this, \"formInfo\", formInfo);\n }\n\n get documentInfo() {\n const DocumentInfoValidators = {\n Title: isString,\n Author: isString,\n Subject: isString,\n Keywords: isString,\n Creator: isString,\n Producer: isString,\n CreationDate: isString,\n ModDate: isString,\n Trapped: isName,\n };\n\n let version = this._version;\n if (\n typeof version !== \"string\" ||\n !PDF_HEADER_VERSION_REGEXP.test(version)\n ) {\n warn(`Invalid PDF header version number: ${version}`);\n version = null;\n }\n\n const docInfo = {\n PDFFormatVersion: version,\n Language: this.catalog.lang,\n EncryptFilterName: this.xref.encrypt\n ? this.xref.encrypt.filterName\n : null,\n IsLinearized: !!this.linearization,\n IsAcroFormPresent: this.formInfo.hasAcroForm,\n IsXFAPresent: this.formInfo.hasXfa,\n IsCollectionPresent: !!this.catalog.collection,\n IsSignaturesPresent: this.formInfo.hasSignatures,\n };\n\n let infoDict;\n try {\n infoDict = this.xref.trailer.get(\"Info\");\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(\"The document information dictionary is invalid.\");\n }\n\n if (isDict(infoDict)) {\n // Fill the document info with valid entries from the specification,\n // as well as any existing well-formed custom entries.\n for (const key of infoDict.getKeys()) {\n const value = infoDict.get(key);\n\n if (DocumentInfoValidators[key]) {\n // Make sure the (standard) value conforms to the specification.\n if (DocumentInfoValidators[key](value)) {\n docInfo[key] =\n typeof value !== \"string\" ? value : stringToPDFString(value);\n } else {\n info(`Bad value in document info for \"${key}\".`);\n }\n } else if (typeof key === \"string\") {\n // For custom values, only accept white-listed types to prevent\n // errors that would occur when trying to send non-serializable\n // objects to the main-thread (for example `Dict` or `Stream`).\n let customValue;\n if (isString(value)) {\n customValue = stringToPDFString(value);\n } else if (isName(value) || isNum(value) || isBool(value)) {\n customValue = value;\n } else {\n info(`Unsupported value in document info for (custom) \"${key}\".`);\n continue;\n }\n\n if (!docInfo.Custom) {\n docInfo.Custom = Object.create(null);\n }\n docInfo.Custom[key] = customValue;\n }\n }\n }\n return shadow(this, \"documentInfo\", docInfo);\n }\n\n get fingerprints() {\n function validate(data) {\n return (\n typeof data === \"string\" &&\n data.length > 0 &&\n data !== EMPTY_FINGERPRINT\n );\n }\n\n function hexString(hash) {\n const buf = [];\n for (let i = 0, ii = hash.length; i < ii; i++) {\n const hex = hash[i].toString(16);\n buf.push(hex.padStart(2, \"0\"));\n }\n return buf.join(\"\");\n }\n\n const idArray = this.xref.trailer.get(\"ID\");\n let hashOriginal, hashModified;\n if (Array.isArray(idArray) && validate(idArray[0])) {\n hashOriginal = stringToBytes(idArray[0]);\n\n if (idArray[1] !== idArray[0] && validate(idArray[1])) {\n hashModified = stringToBytes(idArray[1]);\n }\n } else {\n hashOriginal = calculateMD5(\n this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\n 0,\n FINGERPRINT_FIRST_BYTES\n );\n }\n\n return shadow(this, \"fingerprints\", [\n hexString(hashOriginal),\n hashModified ? hexString(hashModified) : null,\n ]);\n }\n\n async _getLinearizationPage(pageIndex) {\n const { catalog, linearization } = this;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n linearization && linearization.pageFirst === pageIndex,\n \"_getLinearizationPage - invalid pageIndex argument.\"\n );\n }\n\n const ref = Ref.get(linearization.objectNumberFirst, 0);\n try {\n const obj = await this.xref.fetchAsync(ref);\n // Ensure that the object that was found is actually a Page dictionary.\n if (\n isDict(obj, \"Page\") ||\n (isDict(obj) && !obj.has(\"Type\") && obj.has(\"Contents\"))\n ) {\n if (ref && !catalog.pageKidsCountCache.has(ref)) {\n catalog.pageKidsCountCache.put(ref, 1); // Cache the Page reference.\n }\n return [obj, ref];\n }\n throw new FormatError(\n \"The Linearization dictionary doesn't point to a valid Page dictionary.\"\n );\n } catch (reason) {\n info(reason);\n return catalog.getPageDict(pageIndex);\n }\n }\n\n getPage(pageIndex) {\n const cachedPromise = this._pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const { catalog, linearization, xfaFactory } = this;\n\n let promise;\n if (xfaFactory) {\n promise = Promise.resolve([Dict.empty, null]);\n } else if (linearization && linearization.pageFirst === pageIndex) {\n promise = this._getLinearizationPage(pageIndex);\n } else {\n promise = catalog.getPageDict(pageIndex);\n }\n promise = promise.then(([pageDict, ref]) => {\n return new Page({\n pdfManager: this.pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalImageCache: catalog.globalImageCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory,\n });\n });\n\n this._pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n async checkFirstPage(recoveryMode = false) {\n if (recoveryMode) {\n return;\n }\n try {\n await this.getPage(0);\n } catch (reason) {\n if (reason instanceof XRefEntryException) {\n // Clear out the various caches to ensure that we haven't stored any\n // inconsistent and/or incorrect state, since that could easily break\n // subsequent `this.getPage` calls.\n this._pagePromises.delete(0);\n await this.cleanup();\n\n throw new XRefParseException();\n }\n }\n }\n\n async checkLastPage(recoveryMode = false) {\n const { catalog, pdfManager } = this;\n\n catalog.setActualNumPages(); // Ensure that it's always reset.\n let numPages;\n\n try {\n await Promise.all([\n pdfManager.ensureDoc(\"xfaFactory\"),\n pdfManager.ensureDoc(\"linearization\"),\n pdfManager.ensureCatalog(\"numPages\"),\n ]);\n\n if (this.xfaFactory) {\n return; // The Page count is always calculated for XFA-documents.\n } else if (this.linearization) {\n numPages = this.linearization.numPages;\n } else {\n numPages = catalog.numPages;\n }\n\n if (!Number.isInteger(numPages)) {\n throw new FormatError(\"Page count is not an integer.\");\n } else if (numPages <= 1) {\n return;\n }\n await this.getPage(numPages - 1);\n } catch (reason) {\n // Clear out the various caches to ensure that we haven't stored any\n // inconsistent and/or incorrect state, since that could easily break\n // subsequent `this.getPage` calls.\n this._pagePromises.delete(numPages - 1);\n await this.cleanup();\n\n if (reason instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n warn(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`);\n\n let pagesTree;\n try {\n pagesTree = await pdfManager.ensureCatalog(\"getAllPageDicts\", [\n recoveryMode,\n ]);\n } catch (reasonAll) {\n if (reasonAll instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n catalog.setActualNumPages(1);\n return;\n }\n\n for (const [pageIndex, [pageDict, ref]] of pagesTree) {\n let promise;\n if (pageDict instanceof Error) {\n promise = Promise.reject(pageDict);\n\n // Prevent \"uncaught exception: Object\"-messages in the console.\n promise.catch(() => {});\n } else {\n promise = Promise.resolve(\n new Page({\n pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalImageCache: catalog.globalImageCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory: null,\n })\n );\n }\n\n this._pagePromises.set(pageIndex, promise);\n }\n catalog.setActualNumPages(pagesTree.size);\n }\n }\n\n fontFallback(id, handler) {\n return this.catalog.fontFallback(id, handler);\n }\n\n async cleanup(manuallyTriggered = false) {\n return this.catalog\n ? this.catalog.cleanup(manuallyTriggered)\n : clearPrimitiveCaches();\n }\n\n /**\n * @private\n */\n _collectFieldObjects(name, fieldRef, promises) {\n const field = this.xref.fetchIfRef(fieldRef);\n if (field.has(\"T\")) {\n const partName = stringToPDFString(field.get(\"T\"));\n if (name === \"\") {\n name = partName;\n } else {\n name = `${name}.${partName}`;\n }\n }\n\n if (!promises.has(name)) {\n promises.set(name, []);\n }\n promises.get(name).push(\n AnnotationFactory.create(\n this.xref,\n fieldRef,\n this.pdfManager,\n this._localIdFactory,\n /* collectFields */ true\n )\n .then(annotation => annotation && annotation.getFieldObject())\n .catch(function (reason) {\n warn(`_collectFieldObjects: \"${reason}\".`);\n return null;\n })\n );\n\n if (field.has(\"Kids\")) {\n const kids = field.get(\"Kids\");\n for (const kid of kids) {\n this._collectFieldObjects(name, kid, promises);\n }\n }\n }\n\n get fieldObjects() {\n if (!this.formInfo.hasFields) {\n return shadow(this, \"fieldObjects\", Promise.resolve(null));\n }\n\n const allFields = Object.create(null);\n const fieldPromises = new Map();\n for (const fieldRef of this.catalog.acroForm.get(\"Fields\")) {\n this._collectFieldObjects(\"\", fieldRef, fieldPromises);\n }\n\n const allPromises = [];\n for (const [name, promises] of fieldPromises) {\n allPromises.push(\n Promise.all(promises).then(fields => {\n fields = fields.filter(field => !!field);\n if (fields.length > 0) {\n allFields[name] = fields;\n }\n })\n );\n }\n\n return shadow(\n this,\n \"fieldObjects\",\n Promise.all(allPromises).then(() => allFields)\n );\n }\n\n get hasJSActions() {\n const promise = this.pdfManager.ensureDoc(\"_parseHasJSActions\");\n return shadow(this, \"hasJSActions\", promise);\n }\n\n /**\n * @private\n */\n async _parseHasJSActions() {\n const [catalogJsActions, fieldObjects] = await Promise.all([\n this.pdfManager.ensureCatalog(\"jsActions\"),\n this.pdfManager.ensureDoc(\"fieldObjects\"),\n ]);\n\n if (catalogJsActions) {\n return true;\n }\n if (fieldObjects) {\n return Object.values(fieldObjects).some(fieldObject =>\n fieldObject.some(object => object.actions !== null)\n );\n }\n return false;\n }\n\n get calculationOrderIds() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm || !acroForm.has(\"CO\")) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n\n const calculationOrder = acroForm.get(\"CO\");\n if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n\n const ids = calculationOrder.filter(isRef).map(ref => ref.toString());\n if (ids.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n return shadow(this, \"calculationOrderIds\", ids);\n }\n}\n\nexport { Page, PDFDocument };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CalibriBoldFactors,\n CalibriBoldItalicFactors,\n CalibriBoldItalicMetrics,\n CalibriBoldMetrics,\n CalibriItalicFactors,\n CalibriItalicMetrics,\n CalibriRegularFactors,\n CalibriRegularMetrics,\n} from \"./calibri_factors.js\";\nimport { Dict, Name } from \"./primitives.js\";\nimport {\n HelveticaBoldFactors,\n HelveticaBoldItalicFactors,\n HelveticaBoldItalicMetrics,\n HelveticaBoldMetrics,\n HelveticaItalicFactors,\n HelveticaItalicMetrics,\n HelveticaRegularFactors,\n HelveticaRegularMetrics,\n} from \"./helvetica_factors.js\";\nimport {\n LiberationSansBoldItalicMapping,\n LiberationSansBoldItalicWidths,\n LiberationSansBoldMapping,\n LiberationSansBoldWidths,\n LiberationSansItalicMapping,\n LiberationSansItalicWidths,\n LiberationSansRegularMapping,\n LiberationSansRegularWidths,\n} from \"./liberationsans_widths.js\";\nimport {\n MyriadProBoldFactors,\n MyriadProBoldItalicFactors,\n MyriadProBoldItalicMetrics,\n MyriadProBoldMetrics,\n MyriadProItalicFactors,\n MyriadProItalicMetrics,\n MyriadProRegularFactors,\n MyriadProRegularMetrics,\n} from \"./myriadpro_factors.js\";\nimport {\n SegoeuiBoldFactors,\n SegoeuiBoldItalicFactors,\n SegoeuiBoldItalicMetrics,\n SegoeuiBoldMetrics,\n SegoeuiItalicFactors,\n SegoeuiItalicMetrics,\n SegoeuiRegularFactors,\n SegoeuiRegularMetrics,\n} from \"./segoeui_factors.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\nconst getXFAFontMap = getLookupTableFactory(function (t) {\n t[\"MyriadPro-Regular\"] = t[\"PdfJS-Fallback-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: MyriadProRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: MyriadProRegularMetrics,\n };\n t[\"MyriadPro-Bold\"] = t[\"PdfJS-Fallback-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: MyriadProBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: MyriadProBoldMetrics,\n };\n t[\"MyriadPro-It\"] =\n t[\"MyriadPro-Italic\"] =\n t[\"PdfJS-Fallback-Italic\"] =\n {\n name: \"LiberationSans-Italic\",\n factors: MyriadProItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: MyriadProItalicMetrics,\n };\n t[\"MyriadPro-BoldIt\"] =\n t[\"MyriadPro-BoldItalic\"] =\n t[\"PdfJS-Fallback-BoldItalic\"] =\n {\n name: \"LiberationSans-BoldItalic\",\n factors: MyriadProBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: MyriadProBoldItalicMetrics,\n };\n t.ArialMT =\n t.Arial =\n t[\"Arial-Regular\"] =\n {\n name: \"LiberationSans-Regular\",\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n };\n t[\"Arial-BoldMT\"] = t[\"Arial-Bold\"] = {\n name: \"LiberationSans-Bold\",\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n };\n t[\"Arial-ItalicMT\"] = t[\"Arial-Italic\"] = {\n name: \"LiberationSans-Italic\",\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n };\n t[\"Arial-BoldItalicMT\"] = t[\"Arial-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n };\n t[\"Calibri-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: CalibriRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: CalibriRegularMetrics,\n };\n t[\"Calibri-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: CalibriBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: CalibriBoldMetrics,\n };\n t[\"Calibri-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: CalibriItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: CalibriItalicMetrics,\n };\n t[\"Calibri-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: CalibriBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: CalibriBoldItalicMetrics,\n };\n t[\"Segoeui-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: SegoeuiRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: SegoeuiRegularMetrics,\n };\n t[\"Segoeui-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: SegoeuiBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: SegoeuiBoldMetrics,\n };\n t[\"Segoeui-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: SegoeuiItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: SegoeuiItalicMetrics,\n };\n t[\"Segoeui-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: SegoeuiBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: SegoeuiBoldItalicMetrics,\n };\n t[\"Helvetica-Regular\"] = t.Helvetica = {\n name: \"LiberationSans-Regular\",\n factors: HelveticaRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: HelveticaRegularMetrics,\n };\n t[\"Helvetica-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: HelveticaBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: HelveticaBoldMetrics,\n };\n t[\"Helvetica-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: HelveticaItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: HelveticaItalicMetrics,\n };\n t[\"Helvetica-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: HelveticaBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: HelveticaBoldItalicMetrics,\n };\n});\n\nfunction getXfaFontName(name) {\n const fontName = normalizeFontName(name);\n const fontMap = getXFAFontMap();\n return fontMap[fontName];\n}\n\nfunction getXfaFontWidths(name) {\n const info = getXfaFontName(name);\n if (!info) {\n return null;\n }\n\n const { baseWidths, baseMapping, factors } = info;\n let rescaledBaseWidths;\n if (!factors) {\n rescaledBaseWidths = baseWidths;\n } else {\n rescaledBaseWidths = baseWidths.map((w, i) => w * factors[i]);\n }\n\n let currentCode = -2;\n let currentArray;\n\n // Widths array for composite font is:\n // CharCode1 [10, 20, 30] ...\n // which means:\n // - CharCode1 has a width equal to 10\n // - CharCode1+1 has a width equal to 20\n // - CharCode1+2 has a width equal to 30\n //\n // The baseMapping array contains a map for glyph index to unicode.\n // So from baseMapping we'll get sorted unicodes and their positions\n // (i.e. glyph indices) and then we put widths in an array for the\n // the consecutive unicodes.\n const newWidths = [];\n for (const [unicode, glyphIndex] of baseMapping\n .map(\n (charUnicode, index) => [\n charUnicode,\n index,\n ] /* collect unicode and glyph index */\n )\n .sort(\n ([unicode1], [unicode2]) =>\n unicode1 - unicode2 /* order by unicode only */\n )) {\n if (unicode === -1) {\n continue;\n }\n\n if (unicode === currentCode + 1) {\n currentArray.push(rescaledBaseWidths[glyphIndex]);\n currentCode += 1;\n } else {\n currentCode = unicode;\n currentArray = [rescaledBaseWidths[glyphIndex]];\n newWidths.push(unicode, currentArray);\n }\n }\n\n return newWidths;\n}\n\nfunction getXfaFontDict(name) {\n const widths = getXfaFontWidths(name);\n const dict = new Dict(null);\n dict.set(\"BaseFont\", Name.get(name));\n dict.set(\"Type\", Name.get(\"Font\"));\n dict.set(\"Subtype\", Name.get(\"CIDFontType2\"));\n dict.set(\"Encoding\", Name.get(\"Identity-H\"));\n dict.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n dict.set(\"W\", widths);\n dict.set(\"FirstChar\", widths[0]);\n dict.set(\n \"LastChar\",\n widths[widths.length - 2] + widths[widths.length - 1].length - 1\n );\n const descriptor = new Dict(null);\n dict.set(\"FontDescriptor\", descriptor);\n const systemInfo = new Dict(null);\n systemInfo.set(\"Ordering\", \"Identity\");\n systemInfo.set(\"Registry\", \"Adobe\");\n systemInfo.set(\"Supplement\", 0);\n dict.set(\"CIDSystemInfo\", systemInfo);\n\n return dict;\n}\n\nexport { getXfaFontDict, getXfaFontName };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as calibrib.ttf.\nconst CalibriBoldFactors = [\n 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795,\n 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577,\n 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176,\n 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401,\n 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343,\n 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331,\n 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133,\n 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787,\n 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056,\n 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908,\n 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133,\n 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506,\n 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508,\n 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762,\n 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518,\n 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785,\n 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785,\n 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762,\n 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241,\n 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518,\n 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518,\n 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785,\n 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401,\n 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1,\n 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823,\n 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785,\n 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958,\n 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864,\n 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399,\n 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785,\n 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257,\n 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908,\n 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528,\n 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161,\n 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029,\n 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257,\n 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943,\n 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819,\n 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211,\n 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813,\n 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638,\n 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926,\n 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1,\n 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1,\n 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012,\n 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372,\n 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133,\n 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527,\n 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018,\n 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747,\n 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572,\n 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as calibriz.ttf.\nconst CalibriBoldItalicFactors = [\n 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795,\n 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577,\n 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908,\n 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401,\n 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411,\n 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548,\n 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133,\n 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839,\n 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1,\n 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133,\n 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539,\n 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958,\n 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938,\n 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795,\n 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887,\n 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401,\n 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331,\n 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411,\n 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805,\n 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289,\n 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133,\n 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921,\n 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958,\n 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958,\n 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401,\n 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331,\n 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938,\n 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958,\n 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766,\n 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399,\n 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399,\n 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492,\n 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908,\n 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528,\n 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387,\n 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346,\n 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356,\n 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938,\n 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466,\n 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733,\n 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988,\n 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581,\n 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015,\n 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794,\n 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527,\n 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012,\n 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171,\n 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021,\n 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527,\n 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284,\n 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356,\n 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572,\n 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as calibrii.ttf.\nconst CalibriItalicFactors = [\n 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374,\n 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306,\n 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245,\n 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918,\n 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562,\n 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152,\n 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552,\n 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737,\n 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642,\n 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675,\n 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685,\n 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118,\n 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844,\n 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245,\n 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601,\n 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274,\n 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245,\n 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203,\n 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875,\n 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865,\n 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105,\n 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685,\n 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896,\n 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032,\n 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249,\n 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118,\n 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789,\n 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776,\n 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245,\n 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306,\n 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004,\n 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1,\n 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695,\n 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824,\n 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206,\n 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249,\n 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782,\n 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516,\n 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297,\n 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507,\n 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248,\n 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309,\n 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552,\n 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566,\n 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176,\n 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1,\n 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055,\n 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as calibri.ttf.\nconst CalibriRegularFactors = [\n 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503,\n 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306,\n 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128,\n 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297,\n 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469,\n 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527,\n 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133,\n 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098,\n 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1,\n 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972,\n 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834,\n 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685,\n 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284,\n 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331,\n 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464,\n 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469,\n 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469,\n 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675,\n 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457,\n 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206,\n 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105,\n 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872,\n 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685,\n 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918,\n 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429,\n 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122,\n 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692,\n 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223,\n 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469,\n 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469,\n 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004,\n 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128,\n 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622,\n 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387,\n 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254,\n 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275,\n 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122,\n 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772,\n 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018,\n 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516,\n 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442,\n 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181,\n 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986,\n 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527,\n 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566,\n 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523,\n 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1,\n 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055,\n 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1,\n 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriRegularMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\nexport {\n CalibriBoldFactors,\n CalibriBoldItalicFactors,\n CalibriBoldItalicMetrics,\n CalibriBoldMetrics,\n CalibriItalicFactors,\n CalibriItalicMetrics,\n CalibriRegularFactors,\n CalibriRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as NimbusSans-Bold.otf.\nconst HelveticaBoldFactors = [\n 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006,\n 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828,\n 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973,\n 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026,\n 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069,\n 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001,\n 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995,\n 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087,\n 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056,\n 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006,\n 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019,\n 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942,\n 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944,\n 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999,\n 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057,\n 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994,\n 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973,\n 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999,\n 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041,\n 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973,\n 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026,\n 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005,\n 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1,\n 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1,\n 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as NimbusSans-BoldItalic.otf.\nconst HelveticaBoldItalicFactors = [\n 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006,\n 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011,\n 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998,\n 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022,\n 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1,\n 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064,\n 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014,\n 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064,\n 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948,\n 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035,\n 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967,\n 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001,\n 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977,\n 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001,\n 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999,\n 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995,\n 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026,\n 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999,\n 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973,\n 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975,\n 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044,\n 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991,\n 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1,\n 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as NimbusSans-Italic.otf.\nconst HelveticaItalicFactors = [\n 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288,\n 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998,\n 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013,\n 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022,\n 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1,\n 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945,\n 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962,\n 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036,\n 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036,\n 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006,\n 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001,\n 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954,\n 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001,\n 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016,\n 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089,\n 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973,\n 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1,\n 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023,\n 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1,\n 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1,\n 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016,\n 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924,\n 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267,\n 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023,\n 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002,\n 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985,\n 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031,\n 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861,\n 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999,\n 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962,\n 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as NimbusSans-Regular.otf.\nconst HelveticaRegularFactors = [\n 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596,\n 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998,\n 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941,\n 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022,\n 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1,\n 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978,\n 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1,\n 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023,\n 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023,\n 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006,\n 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962,\n 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035,\n 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977,\n 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053,\n 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043,\n 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073,\n 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1,\n 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1,\n 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006,\n 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1,\n 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977,\n 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924,\n 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999,\n 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973,\n 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002,\n 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254,\n 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031,\n 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026,\n 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1,\n 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n HelveticaBoldFactors,\n HelveticaBoldItalicFactors,\n HelveticaBoldItalicMetrics,\n HelveticaBoldMetrics,\n HelveticaItalicFactors,\n HelveticaItalicMetrics,\n HelveticaRegularFactors,\n HelveticaRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Widths of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldWidths = [\n 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611,\n 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906,\n 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722,\n 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278,\n 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278,\n 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753,\n 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556,\n 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626,\n 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730,\n 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556,\n 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875,\n 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417,\n 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487,\n 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n 333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicWidths = [\n 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611,\n 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906,\n 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722,\n 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278,\n 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278,\n 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773,\n 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556,\n 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643,\n 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729,\n 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556,\n 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885,\n 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469,\n 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575,\n 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600,\n 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n 333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicWidths = [\n 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556,\n 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778,\n 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722,\n 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846,\n 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667,\n 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278,\n 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222,\n 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728,\n 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500,\n 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614,\n 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727,\n 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556,\n 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835,\n 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378,\n 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492,\n 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n 324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularWidths = [\n 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556,\n 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778,\n 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722,\n 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838,\n 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667,\n 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278,\n 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222,\n 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713,\n 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500,\n 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604,\n 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740,\n 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556,\n 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823,\n 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365,\n 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489,\n 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n 324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\nexport {\n LiberationSansBoldItalicMapping,\n LiberationSansBoldItalicWidths,\n LiberationSansBoldMapping,\n LiberationSansBoldWidths,\n LiberationSansItalicMapping,\n LiberationSansItalicWidths,\n LiberationSansRegularMapping,\n LiberationSansRegularWidths,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as MyriadPro-Bold.otf.\nconst MyriadProBoldFactors = [\n 1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884,\n 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582,\n 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793,\n 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275,\n 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179,\n 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083,\n 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903,\n 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933,\n 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407,\n 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938,\n 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793,\n 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295,\n 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1,\n 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838,\n 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061,\n 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179,\n 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438,\n 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938,\n 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938,\n 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446,\n 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039,\n 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938,\n 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093,\n 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938,\n 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768,\n 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258,\n 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621,\n 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1,\n 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1,\n 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446,\n 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646,\n 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713,\n 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438,\n 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083,\n 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446,\n 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1,\n 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088,\n 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261,\n 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019,\n 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156,\n 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704,\n 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933,\n 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933,\n 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367,\n 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774,\n 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083,\n 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582,\n 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1,\n 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1,\n 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169,\n 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as MyriadPro-BoldIt.otf.\nconst MyriadProBoldItalicFactors = [\n 1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222,\n 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582,\n 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276,\n 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655,\n 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222,\n 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605,\n 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058,\n 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796,\n 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168,\n 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236,\n 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276,\n 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074,\n 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1,\n 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043,\n 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729,\n 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621,\n 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058,\n 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951,\n 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216,\n 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381,\n 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595,\n 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364,\n 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216,\n 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783,\n 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083,\n 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523,\n 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621,\n 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036,\n 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726,\n 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222,\n 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513,\n 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077,\n 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651,\n 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677,\n 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236,\n 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1,\n 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275,\n 1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616,\n 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927,\n 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805,\n 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655,\n 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275,\n 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886,\n 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276,\n 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699,\n 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646,\n 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694,\n 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896,\n 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1,\n 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026,\n 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as MyriadPro-It.otf.\nconst MyriadProItalicFactors = [\n 1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307,\n 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945,\n 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465,\n 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058,\n 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125,\n 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588,\n 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832,\n 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012,\n 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075,\n 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493,\n 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537,\n 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537,\n 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353,\n 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446,\n 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158,\n 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864,\n 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588,\n 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512,\n 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424,\n 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882,\n 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852,\n 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399,\n 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453,\n 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1,\n 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424,\n 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728,\n 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475,\n 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865,\n 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867,\n 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866,\n 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658,\n 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578,\n 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512,\n 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773,\n 0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012,\n 1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901,\n 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947,\n 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588,\n 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701,\n 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386,\n 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298,\n 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787,\n 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737,\n 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859,\n 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219,\n 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027,\n 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1,\n 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233,\n 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as MyriadPro-Regular.otf.\nconst MyriadProRegularFactors = [\n 1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706,\n 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456,\n 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241,\n 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002,\n 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051,\n 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761,\n 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111,\n 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231,\n 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938,\n 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137,\n 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034,\n 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332,\n 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519,\n 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339,\n 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755,\n 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023,\n 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858,\n 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611,\n 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896,\n 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224,\n 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595,\n 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755,\n 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896,\n 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764,\n 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764,\n 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284,\n 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023,\n 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377,\n 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441,\n 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991,\n 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434,\n 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1,\n 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074,\n 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074,\n 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856,\n 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936,\n 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088,\n 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138,\n 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226,\n 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023,\n 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297,\n 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157,\n 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088,\n 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938,\n 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007,\n 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915,\n 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1,\n 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903,\n 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241,\n 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1,\n 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1,\n 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1,\n];\nconst MyriadProRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n MyriadProBoldFactors,\n MyriadProBoldItalicFactors,\n MyriadProBoldItalicMetrics,\n MyriadProBoldMetrics,\n MyriadProItalicFactors,\n MyriadProItalicMetrics,\n MyriadProRegularFactors,\n MyriadProRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as segoeuib.ttf.\nconst SegoeuiBoldFactors = [\n 1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647,\n 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578,\n 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424,\n 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847,\n 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406,\n 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489,\n 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361,\n 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304,\n 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527,\n 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862,\n 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579,\n 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727,\n 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826,\n 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866,\n 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363,\n 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795,\n 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426,\n 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135,\n 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752,\n 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278,\n 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826,\n 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752,\n 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641,\n 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517,\n 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278,\n 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1,\n 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406,\n 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285,\n 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418,\n 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251,\n 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931,\n 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104,\n 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862,\n 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041,\n 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752,\n 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733,\n 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923,\n 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912,\n 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167,\n 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134,\n 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889,\n 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996,\n 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008,\n 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008,\n 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434,\n 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439,\n 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511,\n 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1,\n 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633,\n 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372,\n 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1,\n 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279,\n 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416,\n 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as segoeuiz.ttf.\nconst SegoeuiBoldItalicFactors = [\n 1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953,\n 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754,\n 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378,\n 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723,\n 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128,\n 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527,\n 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293,\n 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042,\n 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236,\n 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922,\n 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107,\n 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754,\n 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047,\n 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356,\n 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363,\n 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429,\n 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552,\n 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135,\n 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585,\n 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236,\n 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165,\n 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922,\n 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363,\n 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897,\n 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503,\n 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042,\n 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922,\n 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406,\n 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236,\n 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922,\n 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552,\n 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641,\n 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527,\n 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135,\n 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135,\n 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168,\n 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385,\n 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818,\n 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126,\n 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205,\n 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815,\n 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552,\n 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945,\n 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961,\n 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518,\n 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377,\n 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514,\n 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777,\n 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1,\n 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633,\n 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372,\n 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1,\n 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279,\n 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416,\n 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as segoeuii.ttf.\nconst SegoeuiItalicFactors = [\n 1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373,\n 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383,\n 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308,\n 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016,\n 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989,\n 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143,\n 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627,\n 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454,\n 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225,\n 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973,\n 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748,\n 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781,\n 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971,\n 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836,\n 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729,\n 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782,\n 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924,\n 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402,\n 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454,\n 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146,\n 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225,\n 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351,\n 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729,\n 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506,\n 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533,\n 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454,\n 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176,\n 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484,\n 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231,\n 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989,\n 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225,\n 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1,\n 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004,\n 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351,\n 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351,\n 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043,\n 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498,\n 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839,\n 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965,\n 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2,\n 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924,\n 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642,\n 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284,\n 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205,\n 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119,\n 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679,\n 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675,\n 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973,\n 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945,\n 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621,\n 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1,\n 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836,\n 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1,\n 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622,\n 1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862,\n 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603,\n 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1,\n 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as segoeui.ttf.\nconst SegoeuiRegularFactors = [\n 1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985,\n 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246,\n 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084,\n 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831,\n 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968,\n 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433,\n 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484,\n 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011,\n 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399,\n 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043,\n 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912,\n 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808,\n 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032,\n 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381,\n 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734,\n 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782,\n 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714,\n 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049,\n 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383,\n 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527,\n 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923,\n 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706,\n 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734,\n 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093,\n 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403,\n 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1,\n 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782,\n 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011,\n 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298,\n 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444,\n 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066,\n 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649,\n 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771,\n 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132,\n 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287,\n 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571,\n 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771,\n 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572,\n 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366,\n 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491,\n 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796,\n 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287,\n 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424,\n 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424,\n 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087,\n 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205,\n 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965,\n 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088,\n 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196,\n 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483,\n 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518,\n 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279,\n 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714,\n 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238,\n 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025,\n 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1,\n 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1,\n 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiRegularMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\nexport {\n SegoeuiBoldFactors,\n SegoeuiBoldItalicFactors,\n SegoeuiBoldItalicMetrics,\n SegoeuiBoldMetrics,\n SegoeuiItalicFactors,\n SegoeuiItalicMetrics,\n SegoeuiRegularFactors,\n SegoeuiRegularMetrics,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FontType, info } from \"../shared/util.js\";\nimport { getEncoding, StandardEncoding } from \"./encodings.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getUnicodeForGlyph } from \"./unicode.js\";\n\n// Accented characters have issues on Windows and Linux. When this flag is\n// enabled glyphs that use seac and seac style endchar operators are truncated\n// and we instead just store the glyph id's of the base glyph and its accent to\n// be drawn individually.\n// Linux (freetype) requires that when a seac style endchar is used\n// that the charset must be a predefined one, however we build a\n// custom one. Windows just refuses to draw glyphs with seac operators.\nconst SEAC_ANALYSIS_ENABLED = true;\n\nconst FontFlags = {\n FixedPitch: 1,\n Serif: 2,\n Symbolic: 4,\n Script: 8,\n Nonsymbolic: 32,\n Italic: 64,\n AllCap: 65536,\n SmallCap: 131072,\n ForceBold: 262144,\n};\n\n// prettier-ignore\nconst MacStandardGlyphOrdering = [\n \".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\",\n \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\",\n \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\",\n \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\",\n \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\",\n \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\",\n \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\",\n \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\",\n \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\",\n \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\",\n \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\",\n \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\",\n \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\",\n \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\",\n \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\",\n \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\",\n \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\",\n \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\",\n \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\",\n \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\",\n \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\",\n \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\",\n \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\",\n \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\",\n \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\",\n \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\",\n \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\",\n \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\",\n \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\",\n \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\",\n \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\",\n \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\",\n \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\",\n \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\n\nfunction getFontType(type, subtype, isStandardFont = false) {\n switch (type) {\n case \"Type1\":\n if (isStandardFont) {\n return FontType.TYPE1STANDARD;\n }\n return subtype === \"Type1C\" ? FontType.TYPE1C : FontType.TYPE1;\n case \"CIDFontType0\":\n return subtype === \"CIDFontType0C\"\n ? FontType.CIDFONTTYPE0C\n : FontType.CIDFONTTYPE0;\n case \"OpenType\":\n return FontType.OPENTYPE;\n case \"TrueType\":\n return FontType.TRUETYPE;\n case \"CIDFontType2\":\n return FontType.CIDFONTTYPE2;\n case \"MMType1\":\n return FontType.MMTYPE1;\n case \"Type0\":\n return FontType.TYPE0;\n default:\n return FontType.UNKNOWN;\n }\n}\n\n// Some bad PDF generators, e.g. Scribus PDF, include glyph names\n// in a 'uniXXXX' format -- attempting to recover proper ones.\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n if (glyphsUnicodeMap[name] !== undefined) {\n return name;\n }\n // The glyph name is non-standard, trying to recover.\n const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n if (unicode !== -1) {\n for (const key in glyphsUnicodeMap) {\n if (glyphsUnicodeMap[key] === unicode) {\n return key;\n }\n }\n }\n info(\"Unable to recover a standard glyph name for: \" + name);\n return name;\n}\n\n/**\n * Shared logic for building a char code to glyph id mapping for Type1 and\n * simple CFF fonts. See section 9.6.6.2 of the spec.\n * @param {Object} properties Font properties object.\n * @param {Object} builtInEncoding The encoding contained within the actual font\n * data.\n * @param {Array} glyphNames Array of glyph names where the index is the\n * glyph ID.\n * @returns {Object} A char code to glyph ID map.\n */\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n const charCodeToGlyphId = Object.create(null);\n let glyphId, charCode, baseEncoding;\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n if (properties.isInternalFont) {\n baseEncoding = builtInEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n } else if (properties.baseEncodingName) {\n // If a valid base encoding name was used, the mapping is initialized with\n // that.\n baseEncoding = getEncoding(properties.baseEncodingName);\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n } else if (isSymbolicFont) {\n // For a symbolic font the encoding should be the fonts built-in encoding.\n for (charCode in builtInEncoding) {\n charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n }\n } else {\n // For non-symbolic fonts that don't have a base encoding the standard\n // encoding should be used.\n baseEncoding = StandardEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n }\n\n // Lastly, merge in the differences.\n const differences = properties.differences;\n let glyphsUnicodeMap;\n if (differences) {\n for (charCode in differences) {\n const glyphName = differences[charCode];\n glyphId = glyphNames.indexOf(glyphName);\n\n if (glyphId === -1) {\n if (!glyphsUnicodeMap) {\n glyphsUnicodeMap = getGlyphsUnicode();\n }\n const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n if (standardGlyphName !== glyphName) {\n glyphId = glyphNames.indexOf(standardGlyphName);\n }\n }\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n }\n return charCodeToGlyphId;\n}\n\nfunction normalizeFontName(name) {\n return name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n}\n\nexport {\n FontFlags,\n getFontType,\n MacStandardGlyphOrdering,\n normalizeFontName,\n recoverGlyphName,\n SEAC_ANALYSIS_ENABLED,\n type1FontGlyphMapping,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ExpertEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\",\n \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\",\n \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\",\n \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\",\n \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\",\n \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\",\n \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\",\n \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\",\n \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\",\n \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\",\n \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\",\n \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\",\n \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\",\n \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\",\n \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\",\n \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\",\n \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\",\n \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\",\n \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n \"Ydieresissmall\"];\n\n// prettier-ignore\nconst MacExpertEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\",\n \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\",\n \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\",\n \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\",\n \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\",\n \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\",\n \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\",\n \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\",\n \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\",\n \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\",\n \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\",\n \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\",\n \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\",\n \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\",\n \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\",\n \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\",\n \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\",\n \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\",\n \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\",\n \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\",\n \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\",\n \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\",\n \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\",\n \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\",\n \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\",\n \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\",\n \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\",\n \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\n\n// prettier-ignore\nconst MacRomanEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\",\n \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\",\n \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\",\n \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\",\n \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\",\n \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\",\n \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\",\n \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\",\n \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\",\n \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\",\n \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\",\n \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\",\n \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\",\n \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\",\n \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\",\n \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\",\n \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\",\n \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\",\n \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\",\n \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\",\n \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\",\n \"ogonek\", \"caron\"];\n\n// prettier-ignore\nconst StandardEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\",\n \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\",\n \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\",\n \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\",\n \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\",\n \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\",\n \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\",\n \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\",\n \"\", \"\", \"\"];\n\n// prettier-ignore\nconst WinAnsiEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\",\n \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\",\n \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\",\n \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\",\n \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\",\n \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\",\n \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\",\n \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\",\n \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\",\n \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\",\n \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\",\n \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\",\n \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\",\n \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\",\n \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\",\n \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\",\n \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\",\n \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\",\n \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\",\n \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\",\n \"ydieresis\"];\n\n// prettier-ignore\nconst SymbolSetEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\",\n \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\",\n \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\",\n \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\",\n \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\",\n \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\",\n \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\",\n \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\",\n \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\",\n \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\",\n \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\",\n \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\",\n \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\",\n \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\",\n \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\",\n \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\",\n \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\",\n \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\",\n \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\",\n \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\",\n \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\",\n \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\",\n \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\",\n \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\",\n \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\",\n \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\",\n \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\",\n \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\",\n \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\",\n \"bracerightbt\", \"\"];\n\n// prettier-ignore\nconst ZapfDingbatsEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\",\n \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\",\n \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\",\n \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\",\n \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\",\n \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\",\n \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\",\n \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\",\n \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\",\n \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\",\n \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\",\n \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\",\n \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\",\n \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\",\n \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\",\n \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\",\n \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\",\n \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\",\n \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\",\n \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\",\n \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\n\nfunction getEncoding(encodingName) {\n switch (encodingName) {\n case \"WinAnsiEncoding\":\n return WinAnsiEncoding;\n case \"StandardEncoding\":\n return StandardEncoding;\n case \"MacRomanEncoding\":\n return MacRomanEncoding;\n case \"SymbolSetEncoding\":\n return SymbolSetEncoding;\n case \"ZapfDingbatsEncoding\":\n return ZapfDingbatsEncoding;\n case \"ExpertEncoding\":\n return ExpertEncoding;\n case \"MacExpertEncoding\":\n return MacExpertEncoding;\n default:\n return null;\n }\n}\n\nexport {\n ExpertEncoding,\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport { getArrayLookupTableFactory } from \"./core_utils.js\";\n\nconst getGlyphsUnicode = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"A\", 0x0041,\n \"AE\", 0x00c6,\n \"AEacute\", 0x01fc,\n \"AEmacron\", 0x01e2,\n \"AEsmall\", 0xf7e6,\n \"Aacute\", 0x00c1,\n \"Aacutesmall\", 0xf7e1,\n \"Abreve\", 0x0102,\n \"Abreveacute\", 0x1eae,\n \"Abrevecyrillic\", 0x04d0,\n \"Abrevedotbelow\", 0x1eb6,\n \"Abrevegrave\", 0x1eb0,\n \"Abrevehookabove\", 0x1eb2,\n \"Abrevetilde\", 0x1eb4,\n \"Acaron\", 0x01cd,\n \"Acircle\", 0x24b6,\n \"Acircumflex\", 0x00c2,\n \"Acircumflexacute\", 0x1ea4,\n \"Acircumflexdotbelow\", 0x1eac,\n \"Acircumflexgrave\", 0x1ea6,\n \"Acircumflexhookabove\", 0x1ea8,\n \"Acircumflexsmall\", 0xf7e2,\n \"Acircumflextilde\", 0x1eaa,\n \"Acute\", 0xf6c9,\n \"Acutesmall\", 0xf7b4,\n \"Acyrillic\", 0x0410,\n \"Adblgrave\", 0x0200,\n \"Adieresis\", 0x00c4,\n \"Adieresiscyrillic\", 0x04d2,\n \"Adieresismacron\", 0x01de,\n \"Adieresissmall\", 0xf7e4,\n \"Adotbelow\", 0x1ea0,\n \"Adotmacron\", 0x01e0,\n \"Agrave\", 0x00c0,\n \"Agravesmall\", 0xf7e0,\n \"Ahookabove\", 0x1ea2,\n \"Aiecyrillic\", 0x04d4,\n \"Ainvertedbreve\", 0x0202,\n \"Alpha\", 0x0391,\n \"Alphatonos\", 0x0386,\n \"Amacron\", 0x0100,\n \"Amonospace\", 0xff21,\n \"Aogonek\", 0x0104,\n \"Aring\", 0x00c5,\n \"Aringacute\", 0x01fa,\n \"Aringbelow\", 0x1e00,\n \"Aringsmall\", 0xf7e5,\n \"Asmall\", 0xf761,\n \"Atilde\", 0x00c3,\n \"Atildesmall\", 0xf7e3,\n \"Aybarmenian\", 0x0531,\n \"B\", 0x0042,\n \"Bcircle\", 0x24b7,\n \"Bdotaccent\", 0x1e02,\n \"Bdotbelow\", 0x1e04,\n \"Becyrillic\", 0x0411,\n \"Benarmenian\", 0x0532,\n \"Beta\", 0x0392,\n \"Bhook\", 0x0181,\n \"Blinebelow\", 0x1e06,\n \"Bmonospace\", 0xff22,\n \"Brevesmall\", 0xf6f4,\n \"Bsmall\", 0xf762,\n \"Btopbar\", 0x0182,\n \"C\", 0x0043,\n \"Caarmenian\", 0x053e,\n \"Cacute\", 0x0106,\n \"Caron\", 0xf6ca,\n \"Caronsmall\", 0xf6f5,\n \"Ccaron\", 0x010c,\n \"Ccedilla\", 0x00c7,\n \"Ccedillaacute\", 0x1e08,\n \"Ccedillasmall\", 0xf7e7,\n \"Ccircle\", 0x24b8,\n \"Ccircumflex\", 0x0108,\n \"Cdot\", 0x010a,\n \"Cdotaccent\", 0x010a,\n \"Cedillasmall\", 0xf7b8,\n \"Chaarmenian\", 0x0549,\n \"Cheabkhasiancyrillic\", 0x04bc,\n \"Checyrillic\", 0x0427,\n \"Chedescenderabkhasiancyrillic\", 0x04be,\n \"Chedescendercyrillic\", 0x04b6,\n \"Chedieresiscyrillic\", 0x04f4,\n \"Cheharmenian\", 0x0543,\n \"Chekhakassiancyrillic\", 0x04cb,\n \"Cheverticalstrokecyrillic\", 0x04b8,\n \"Chi\", 0x03a7,\n \"Chook\", 0x0187,\n \"Circumflexsmall\", 0xf6f6,\n \"Cmonospace\", 0xff23,\n \"Coarmenian\", 0x0551,\n \"Csmall\", 0xf763,\n \"D\", 0x0044,\n \"DZ\", 0x01f1,\n \"DZcaron\", 0x01c4,\n \"Daarmenian\", 0x0534,\n \"Dafrican\", 0x0189,\n \"Dcaron\", 0x010e,\n \"Dcedilla\", 0x1e10,\n \"Dcircle\", 0x24b9,\n \"Dcircumflexbelow\", 0x1e12,\n \"Dcroat\", 0x0110,\n \"Ddotaccent\", 0x1e0a,\n \"Ddotbelow\", 0x1e0c,\n \"Decyrillic\", 0x0414,\n \"Deicoptic\", 0x03ee,\n \"Delta\", 0x2206,\n \"Deltagreek\", 0x0394,\n \"Dhook\", 0x018a,\n \"Dieresis\", 0xf6cb,\n \"DieresisAcute\", 0xf6cc,\n \"DieresisGrave\", 0xf6cd,\n \"Dieresissmall\", 0xf7a8,\n \"Digammagreek\", 0x03dc,\n \"Djecyrillic\", 0x0402,\n \"Dlinebelow\", 0x1e0e,\n \"Dmonospace\", 0xff24,\n \"Dotaccentsmall\", 0xf6f7,\n \"Dslash\", 0x0110,\n \"Dsmall\", 0xf764,\n \"Dtopbar\", 0x018b,\n \"Dz\", 0x01f2,\n \"Dzcaron\", 0x01c5,\n \"Dzeabkhasiancyrillic\", 0x04e0,\n \"Dzecyrillic\", 0x0405,\n \"Dzhecyrillic\", 0x040f,\n \"E\", 0x0045,\n \"Eacute\", 0x00c9,\n \"Eacutesmall\", 0xf7e9,\n \"Ebreve\", 0x0114,\n \"Ecaron\", 0x011a,\n \"Ecedillabreve\", 0x1e1c,\n \"Echarmenian\", 0x0535,\n \"Ecircle\", 0x24ba,\n \"Ecircumflex\", 0x00ca,\n \"Ecircumflexacute\", 0x1ebe,\n \"Ecircumflexbelow\", 0x1e18,\n \"Ecircumflexdotbelow\", 0x1ec6,\n \"Ecircumflexgrave\", 0x1ec0,\n \"Ecircumflexhookabove\", 0x1ec2,\n \"Ecircumflexsmall\", 0xf7ea,\n \"Ecircumflextilde\", 0x1ec4,\n \"Ecyrillic\", 0x0404,\n \"Edblgrave\", 0x0204,\n \"Edieresis\", 0x00cb,\n \"Edieresissmall\", 0xf7eb,\n \"Edot\", 0x0116,\n \"Edotaccent\", 0x0116,\n \"Edotbelow\", 0x1eb8,\n \"Efcyrillic\", 0x0424,\n \"Egrave\", 0x00c8,\n \"Egravesmall\", 0xf7e8,\n \"Eharmenian\", 0x0537,\n \"Ehookabove\", 0x1eba,\n \"Eightroman\", 0x2167,\n \"Einvertedbreve\", 0x0206,\n \"Eiotifiedcyrillic\", 0x0464,\n \"Elcyrillic\", 0x041b,\n \"Elevenroman\", 0x216a,\n \"Emacron\", 0x0112,\n \"Emacronacute\", 0x1e16,\n \"Emacrongrave\", 0x1e14,\n \"Emcyrillic\", 0x041c,\n \"Emonospace\", 0xff25,\n \"Encyrillic\", 0x041d,\n \"Endescendercyrillic\", 0x04a2,\n \"Eng\", 0x014a,\n \"Enghecyrillic\", 0x04a4,\n \"Enhookcyrillic\", 0x04c7,\n \"Eogonek\", 0x0118,\n \"Eopen\", 0x0190,\n \"Epsilon\", 0x0395,\n \"Epsilontonos\", 0x0388,\n \"Ercyrillic\", 0x0420,\n \"Ereversed\", 0x018e,\n \"Ereversedcyrillic\", 0x042d,\n \"Escyrillic\", 0x0421,\n \"Esdescendercyrillic\", 0x04aa,\n \"Esh\", 0x01a9,\n \"Esmall\", 0xf765,\n \"Eta\", 0x0397,\n \"Etarmenian\", 0x0538,\n \"Etatonos\", 0x0389,\n \"Eth\", 0x00d0,\n \"Ethsmall\", 0xf7f0,\n \"Etilde\", 0x1ebc,\n \"Etildebelow\", 0x1e1a,\n \"Euro\", 0x20ac,\n \"Ezh\", 0x01b7,\n \"Ezhcaron\", 0x01ee,\n \"Ezhreversed\", 0x01b8,\n \"F\", 0x0046,\n \"Fcircle\", 0x24bb,\n \"Fdotaccent\", 0x1e1e,\n \"Feharmenian\", 0x0556,\n \"Feicoptic\", 0x03e4,\n \"Fhook\", 0x0191,\n \"Fitacyrillic\", 0x0472,\n \"Fiveroman\", 0x2164,\n \"Fmonospace\", 0xff26,\n \"Fourroman\", 0x2163,\n \"Fsmall\", 0xf766,\n \"G\", 0x0047,\n \"GBsquare\", 0x3387,\n \"Gacute\", 0x01f4,\n \"Gamma\", 0x0393,\n \"Gammaafrican\", 0x0194,\n \"Gangiacoptic\", 0x03ea,\n \"Gbreve\", 0x011e,\n \"Gcaron\", 0x01e6,\n \"Gcedilla\", 0x0122,\n \"Gcircle\", 0x24bc,\n \"Gcircumflex\", 0x011c,\n \"Gcommaaccent\", 0x0122,\n \"Gdot\", 0x0120,\n \"Gdotaccent\", 0x0120,\n \"Gecyrillic\", 0x0413,\n \"Ghadarmenian\", 0x0542,\n \"Ghemiddlehookcyrillic\", 0x0494,\n \"Ghestrokecyrillic\", 0x0492,\n \"Gheupturncyrillic\", 0x0490,\n \"Ghook\", 0x0193,\n \"Gimarmenian\", 0x0533,\n \"Gjecyrillic\", 0x0403,\n \"Gmacron\", 0x1e20,\n \"Gmonospace\", 0xff27,\n \"Grave\", 0xf6ce,\n \"Gravesmall\", 0xf760,\n \"Gsmall\", 0xf767,\n \"Gsmallhook\", 0x029b,\n \"Gstroke\", 0x01e4,\n \"H\", 0x0048,\n \"H18533\", 0x25cf,\n \"H18543\", 0x25aa,\n \"H18551\", 0x25ab,\n \"H22073\", 0x25a1,\n \"HPsquare\", 0x33cb,\n \"Haabkhasiancyrillic\", 0x04a8,\n \"Hadescendercyrillic\", 0x04b2,\n \"Hardsigncyrillic\", 0x042a,\n \"Hbar\", 0x0126,\n \"Hbrevebelow\", 0x1e2a,\n \"Hcedilla\", 0x1e28,\n \"Hcircle\", 0x24bd,\n \"Hcircumflex\", 0x0124,\n \"Hdieresis\", 0x1e26,\n \"Hdotaccent\", 0x1e22,\n \"Hdotbelow\", 0x1e24,\n \"Hmonospace\", 0xff28,\n \"Hoarmenian\", 0x0540,\n \"Horicoptic\", 0x03e8,\n \"Hsmall\", 0xf768,\n \"Hungarumlaut\", 0xf6cf,\n \"Hungarumlautsmall\", 0xf6f8,\n \"Hzsquare\", 0x3390,\n \"I\", 0x0049,\n \"IAcyrillic\", 0x042f,\n \"IJ\", 0x0132,\n \"IUcyrillic\", 0x042e,\n \"Iacute\", 0x00cd,\n \"Iacutesmall\", 0xf7ed,\n \"Ibreve\", 0x012c,\n \"Icaron\", 0x01cf,\n \"Icircle\", 0x24be,\n \"Icircumflex\", 0x00ce,\n \"Icircumflexsmall\", 0xf7ee,\n \"Icyrillic\", 0x0406,\n \"Idblgrave\", 0x0208,\n \"Idieresis\", 0x00cf,\n \"Idieresisacute\", 0x1e2e,\n \"Idieresiscyrillic\", 0x04e4,\n \"Idieresissmall\", 0xf7ef,\n \"Idot\", 0x0130,\n \"Idotaccent\", 0x0130,\n \"Idotbelow\", 0x1eca,\n \"Iebrevecyrillic\", 0x04d6,\n \"Iecyrillic\", 0x0415,\n \"Ifraktur\", 0x2111,\n \"Igrave\", 0x00cc,\n \"Igravesmall\", 0xf7ec,\n \"Ihookabove\", 0x1ec8,\n \"Iicyrillic\", 0x0418,\n \"Iinvertedbreve\", 0x020a,\n \"Iishortcyrillic\", 0x0419,\n \"Imacron\", 0x012a,\n \"Imacroncyrillic\", 0x04e2,\n \"Imonospace\", 0xff29,\n \"Iniarmenian\", 0x053b,\n \"Iocyrillic\", 0x0401,\n \"Iogonek\", 0x012e,\n \"Iota\", 0x0399,\n \"Iotaafrican\", 0x0196,\n \"Iotadieresis\", 0x03aa,\n \"Iotatonos\", 0x038a,\n \"Ismall\", 0xf769,\n \"Istroke\", 0x0197,\n \"Itilde\", 0x0128,\n \"Itildebelow\", 0x1e2c,\n \"Izhitsacyrillic\", 0x0474,\n \"Izhitsadblgravecyrillic\", 0x0476,\n \"J\", 0x004a,\n \"Jaarmenian\", 0x0541,\n \"Jcircle\", 0x24bf,\n \"Jcircumflex\", 0x0134,\n \"Jecyrillic\", 0x0408,\n \"Jheharmenian\", 0x054b,\n \"Jmonospace\", 0xff2a,\n \"Jsmall\", 0xf76a,\n \"K\", 0x004b,\n \"KBsquare\", 0x3385,\n \"KKsquare\", 0x33cd,\n \"Kabashkircyrillic\", 0x04a0,\n \"Kacute\", 0x1e30,\n \"Kacyrillic\", 0x041a,\n \"Kadescendercyrillic\", 0x049a,\n \"Kahookcyrillic\", 0x04c3,\n \"Kappa\", 0x039a,\n \"Kastrokecyrillic\", 0x049e,\n \"Kaverticalstrokecyrillic\", 0x049c,\n \"Kcaron\", 0x01e8,\n \"Kcedilla\", 0x0136,\n \"Kcircle\", 0x24c0,\n \"Kcommaaccent\", 0x0136,\n \"Kdotbelow\", 0x1e32,\n \"Keharmenian\", 0x0554,\n \"Kenarmenian\", 0x053f,\n \"Khacyrillic\", 0x0425,\n \"Kheicoptic\", 0x03e6,\n \"Khook\", 0x0198,\n \"Kjecyrillic\", 0x040c,\n \"Klinebelow\", 0x1e34,\n \"Kmonospace\", 0xff2b,\n \"Koppacyrillic\", 0x0480,\n \"Koppagreek\", 0x03de,\n \"Ksicyrillic\", 0x046e,\n \"Ksmall\", 0xf76b,\n \"L\", 0x004c,\n \"LJ\", 0x01c7,\n \"LL\", 0xf6bf,\n \"Lacute\", 0x0139,\n \"Lambda\", 0x039b,\n \"Lcaron\", 0x013d,\n \"Lcedilla\", 0x013b,\n \"Lcircle\", 0x24c1,\n \"Lcircumflexbelow\", 0x1e3c,\n \"Lcommaaccent\", 0x013b,\n \"Ldot\", 0x013f,\n \"Ldotaccent\", 0x013f,\n \"Ldotbelow\", 0x1e36,\n \"Ldotbelowmacron\", 0x1e38,\n \"Liwnarmenian\", 0x053c,\n \"Lj\", 0x01c8,\n \"Ljecyrillic\", 0x0409,\n \"Llinebelow\", 0x1e3a,\n \"Lmonospace\", 0xff2c,\n \"Lslash\", 0x0141,\n \"Lslashsmall\", 0xf6f9,\n \"Lsmall\", 0xf76c,\n \"M\", 0x004d,\n \"MBsquare\", 0x3386,\n \"Macron\", 0xf6d0,\n \"Macronsmall\", 0xf7af,\n \"Macute\", 0x1e3e,\n \"Mcircle\", 0x24c2,\n \"Mdotaccent\", 0x1e40,\n \"Mdotbelow\", 0x1e42,\n \"Menarmenian\", 0x0544,\n \"Mmonospace\", 0xff2d,\n \"Msmall\", 0xf76d,\n \"Mturned\", 0x019c,\n \"Mu\", 0x039c,\n \"N\", 0x004e,\n \"NJ\", 0x01ca,\n \"Nacute\", 0x0143,\n \"Ncaron\", 0x0147,\n \"Ncedilla\", 0x0145,\n \"Ncircle\", 0x24c3,\n \"Ncircumflexbelow\", 0x1e4a,\n \"Ncommaaccent\", 0x0145,\n \"Ndotaccent\", 0x1e44,\n \"Ndotbelow\", 0x1e46,\n \"Nhookleft\", 0x019d,\n \"Nineroman\", 0x2168,\n \"Nj\", 0x01cb,\n \"Njecyrillic\", 0x040a,\n \"Nlinebelow\", 0x1e48,\n \"Nmonospace\", 0xff2e,\n \"Nowarmenian\", 0x0546,\n \"Nsmall\", 0xf76e,\n \"Ntilde\", 0x00d1,\n \"Ntildesmall\", 0xf7f1,\n \"Nu\", 0x039d,\n \"O\", 0x004f,\n \"OE\", 0x0152,\n \"OEsmall\", 0xf6fa,\n \"Oacute\", 0x00d3,\n \"Oacutesmall\", 0xf7f3,\n \"Obarredcyrillic\", 0x04e8,\n \"Obarreddieresiscyrillic\", 0x04ea,\n \"Obreve\", 0x014e,\n \"Ocaron\", 0x01d1,\n \"Ocenteredtilde\", 0x019f,\n \"Ocircle\", 0x24c4,\n \"Ocircumflex\", 0x00d4,\n \"Ocircumflexacute\", 0x1ed0,\n \"Ocircumflexdotbelow\", 0x1ed8,\n \"Ocircumflexgrave\", 0x1ed2,\n \"Ocircumflexhookabove\", 0x1ed4,\n \"Ocircumflexsmall\", 0xf7f4,\n \"Ocircumflextilde\", 0x1ed6,\n \"Ocyrillic\", 0x041e,\n \"Odblacute\", 0x0150,\n \"Odblgrave\", 0x020c,\n \"Odieresis\", 0x00d6,\n \"Odieresiscyrillic\", 0x04e6,\n \"Odieresissmall\", 0xf7f6,\n \"Odotbelow\", 0x1ecc,\n \"Ogoneksmall\", 0xf6fb,\n \"Ograve\", 0x00d2,\n \"Ogravesmall\", 0xf7f2,\n \"Oharmenian\", 0x0555,\n \"Ohm\", 0x2126,\n \"Ohookabove\", 0x1ece,\n \"Ohorn\", 0x01a0,\n \"Ohornacute\", 0x1eda,\n \"Ohorndotbelow\", 0x1ee2,\n \"Ohorngrave\", 0x1edc,\n \"Ohornhookabove\", 0x1ede,\n \"Ohorntilde\", 0x1ee0,\n \"Ohungarumlaut\", 0x0150,\n \"Oi\", 0x01a2,\n \"Oinvertedbreve\", 0x020e,\n \"Omacron\", 0x014c,\n \"Omacronacute\", 0x1e52,\n \"Omacrongrave\", 0x1e50,\n \"Omega\", 0x2126,\n \"Omegacyrillic\", 0x0460,\n \"Omegagreek\", 0x03a9,\n \"Omegaroundcyrillic\", 0x047a,\n \"Omegatitlocyrillic\", 0x047c,\n \"Omegatonos\", 0x038f,\n \"Omicron\", 0x039f,\n \"Omicrontonos\", 0x038c,\n \"Omonospace\", 0xff2f,\n \"Oneroman\", 0x2160,\n \"Oogonek\", 0x01ea,\n \"Oogonekmacron\", 0x01ec,\n \"Oopen\", 0x0186,\n \"Oslash\", 0x00d8,\n \"Oslashacute\", 0x01fe,\n \"Oslashsmall\", 0xf7f8,\n \"Osmall\", 0xf76f,\n \"Ostrokeacute\", 0x01fe,\n \"Otcyrillic\", 0x047e,\n \"Otilde\", 0x00d5,\n \"Otildeacute\", 0x1e4c,\n \"Otildedieresis\", 0x1e4e,\n \"Otildesmall\", 0xf7f5,\n \"P\", 0x0050,\n \"Pacute\", 0x1e54,\n \"Pcircle\", 0x24c5,\n \"Pdotaccent\", 0x1e56,\n \"Pecyrillic\", 0x041f,\n \"Peharmenian\", 0x054a,\n \"Pemiddlehookcyrillic\", 0x04a6,\n \"Phi\", 0x03a6,\n \"Phook\", 0x01a4,\n \"Pi\", 0x03a0,\n \"Piwrarmenian\", 0x0553,\n \"Pmonospace\", 0xff30,\n \"Psi\", 0x03a8,\n \"Psicyrillic\", 0x0470,\n \"Psmall\", 0xf770,\n \"Q\", 0x0051,\n \"Qcircle\", 0x24c6,\n \"Qmonospace\", 0xff31,\n \"Qsmall\", 0xf771,\n \"R\", 0x0052,\n \"Raarmenian\", 0x054c,\n \"Racute\", 0x0154,\n \"Rcaron\", 0x0158,\n \"Rcedilla\", 0x0156,\n \"Rcircle\", 0x24c7,\n \"Rcommaaccent\", 0x0156,\n \"Rdblgrave\", 0x0210,\n \"Rdotaccent\", 0x1e58,\n \"Rdotbelow\", 0x1e5a,\n \"Rdotbelowmacron\", 0x1e5c,\n \"Reharmenian\", 0x0550,\n \"Rfraktur\", 0x211c,\n \"Rho\", 0x03a1,\n \"Ringsmall\", 0xf6fc,\n \"Rinvertedbreve\", 0x0212,\n \"Rlinebelow\", 0x1e5e,\n \"Rmonospace\", 0xff32,\n \"Rsmall\", 0xf772,\n \"Rsmallinverted\", 0x0281,\n \"Rsmallinvertedsuperior\", 0x02b6,\n \"S\", 0x0053,\n \"SF010000\", 0x250c,\n \"SF020000\", 0x2514,\n \"SF030000\", 0x2510,\n \"SF040000\", 0x2518,\n \"SF050000\", 0x253c,\n \"SF060000\", 0x252c,\n \"SF070000\", 0x2534,\n \"SF080000\", 0x251c,\n \"SF090000\", 0x2524,\n \"SF100000\", 0x2500,\n \"SF110000\", 0x2502,\n \"SF190000\", 0x2561,\n \"SF200000\", 0x2562,\n \"SF210000\", 0x2556,\n \"SF220000\", 0x2555,\n \"SF230000\", 0x2563,\n \"SF240000\", 0x2551,\n \"SF250000\", 0x2557,\n \"SF260000\", 0x255d,\n \"SF270000\", 0x255c,\n \"SF280000\", 0x255b,\n \"SF360000\", 0x255e,\n \"SF370000\", 0x255f,\n \"SF380000\", 0x255a,\n \"SF390000\", 0x2554,\n \"SF400000\", 0x2569,\n \"SF410000\", 0x2566,\n \"SF420000\", 0x2560,\n \"SF430000\", 0x2550,\n \"SF440000\", 0x256c,\n \"SF450000\", 0x2567,\n \"SF460000\", 0x2568,\n \"SF470000\", 0x2564,\n \"SF480000\", 0x2565,\n \"SF490000\", 0x2559,\n \"SF500000\", 0x2558,\n \"SF510000\", 0x2552,\n \"SF520000\", 0x2553,\n \"SF530000\", 0x256b,\n \"SF540000\", 0x256a,\n \"Sacute\", 0x015a,\n \"Sacutedotaccent\", 0x1e64,\n \"Sampigreek\", 0x03e0,\n \"Scaron\", 0x0160,\n \"Scarondotaccent\", 0x1e66,\n \"Scaronsmall\", 0xf6fd,\n \"Scedilla\", 0x015e,\n \"Schwa\", 0x018f,\n \"Schwacyrillic\", 0x04d8,\n \"Schwadieresiscyrillic\", 0x04da,\n \"Scircle\", 0x24c8,\n \"Scircumflex\", 0x015c,\n \"Scommaaccent\", 0x0218,\n \"Sdotaccent\", 0x1e60,\n \"Sdotbelow\", 0x1e62,\n \"Sdotbelowdotaccent\", 0x1e68,\n \"Seharmenian\", 0x054d,\n \"Sevenroman\", 0x2166,\n \"Shaarmenian\", 0x0547,\n \"Shacyrillic\", 0x0428,\n \"Shchacyrillic\", 0x0429,\n \"Sheicoptic\", 0x03e2,\n \"Shhacyrillic\", 0x04ba,\n \"Shimacoptic\", 0x03ec,\n \"Sigma\", 0x03a3,\n \"Sixroman\", 0x2165,\n \"Smonospace\", 0xff33,\n \"Softsigncyrillic\", 0x042c,\n \"Ssmall\", 0xf773,\n \"Stigmagreek\", 0x03da,\n \"T\", 0x0054,\n \"Tau\", 0x03a4,\n \"Tbar\", 0x0166,\n \"Tcaron\", 0x0164,\n \"Tcedilla\", 0x0162,\n \"Tcircle\", 0x24c9,\n \"Tcircumflexbelow\", 0x1e70,\n \"Tcommaaccent\", 0x0162,\n \"Tdotaccent\", 0x1e6a,\n \"Tdotbelow\", 0x1e6c,\n \"Tecyrillic\", 0x0422,\n \"Tedescendercyrillic\", 0x04ac,\n \"Tenroman\", 0x2169,\n \"Tetsecyrillic\", 0x04b4,\n \"Theta\", 0x0398,\n \"Thook\", 0x01ac,\n \"Thorn\", 0x00de,\n \"Thornsmall\", 0xf7fe,\n \"Threeroman\", 0x2162,\n \"Tildesmall\", 0xf6fe,\n \"Tiwnarmenian\", 0x054f,\n \"Tlinebelow\", 0x1e6e,\n \"Tmonospace\", 0xff34,\n \"Toarmenian\", 0x0539,\n \"Tonefive\", 0x01bc,\n \"Tonesix\", 0x0184,\n \"Tonetwo\", 0x01a7,\n \"Tretroflexhook\", 0x01ae,\n \"Tsecyrillic\", 0x0426,\n \"Tshecyrillic\", 0x040b,\n \"Tsmall\", 0xf774,\n \"Twelveroman\", 0x216b,\n \"Tworoman\", 0x2161,\n \"U\", 0x0055,\n \"Uacute\", 0x00da,\n \"Uacutesmall\", 0xf7fa,\n \"Ubreve\", 0x016c,\n \"Ucaron\", 0x01d3,\n \"Ucircle\", 0x24ca,\n \"Ucircumflex\", 0x00db,\n \"Ucircumflexbelow\", 0x1e76,\n \"Ucircumflexsmall\", 0xf7fb,\n \"Ucyrillic\", 0x0423,\n \"Udblacute\", 0x0170,\n \"Udblgrave\", 0x0214,\n \"Udieresis\", 0x00dc,\n \"Udieresisacute\", 0x01d7,\n \"Udieresisbelow\", 0x1e72,\n \"Udieresiscaron\", 0x01d9,\n \"Udieresiscyrillic\", 0x04f0,\n \"Udieresisgrave\", 0x01db,\n \"Udieresismacron\", 0x01d5,\n \"Udieresissmall\", 0xf7fc,\n \"Udotbelow\", 0x1ee4,\n \"Ugrave\", 0x00d9,\n \"Ugravesmall\", 0xf7f9,\n \"Uhookabove\", 0x1ee6,\n \"Uhorn\", 0x01af,\n \"Uhornacute\", 0x1ee8,\n \"Uhorndotbelow\", 0x1ef0,\n \"Uhorngrave\", 0x1eea,\n \"Uhornhookabove\", 0x1eec,\n \"Uhorntilde\", 0x1eee,\n \"Uhungarumlaut\", 0x0170,\n \"Uhungarumlautcyrillic\", 0x04f2,\n \"Uinvertedbreve\", 0x0216,\n \"Ukcyrillic\", 0x0478,\n \"Umacron\", 0x016a,\n \"Umacroncyrillic\", 0x04ee,\n \"Umacrondieresis\", 0x1e7a,\n \"Umonospace\", 0xff35,\n \"Uogonek\", 0x0172,\n \"Upsilon\", 0x03a5,\n \"Upsilon1\", 0x03d2,\n \"Upsilonacutehooksymbolgreek\", 0x03d3,\n \"Upsilonafrican\", 0x01b1,\n \"Upsilondieresis\", 0x03ab,\n \"Upsilondieresishooksymbolgreek\", 0x03d4,\n \"Upsilonhooksymbol\", 0x03d2,\n \"Upsilontonos\", 0x038e,\n \"Uring\", 0x016e,\n \"Ushortcyrillic\", 0x040e,\n \"Usmall\", 0xf775,\n \"Ustraightcyrillic\", 0x04ae,\n \"Ustraightstrokecyrillic\", 0x04b0,\n \"Utilde\", 0x0168,\n \"Utildeacute\", 0x1e78,\n \"Utildebelow\", 0x1e74,\n \"V\", 0x0056,\n \"Vcircle\", 0x24cb,\n \"Vdotbelow\", 0x1e7e,\n \"Vecyrillic\", 0x0412,\n \"Vewarmenian\", 0x054e,\n \"Vhook\", 0x01b2,\n \"Vmonospace\", 0xff36,\n \"Voarmenian\", 0x0548,\n \"Vsmall\", 0xf776,\n \"Vtilde\", 0x1e7c,\n \"W\", 0x0057,\n \"Wacute\", 0x1e82,\n \"Wcircle\", 0x24cc,\n \"Wcircumflex\", 0x0174,\n \"Wdieresis\", 0x1e84,\n \"Wdotaccent\", 0x1e86,\n \"Wdotbelow\", 0x1e88,\n \"Wgrave\", 0x1e80,\n \"Wmonospace\", 0xff37,\n \"Wsmall\", 0xf777,\n \"X\", 0x0058,\n \"Xcircle\", 0x24cd,\n \"Xdieresis\", 0x1e8c,\n \"Xdotaccent\", 0x1e8a,\n \"Xeharmenian\", 0x053d,\n \"Xi\", 0x039e,\n \"Xmonospace\", 0xff38,\n \"Xsmall\", 0xf778,\n \"Y\", 0x0059,\n \"Yacute\", 0x00dd,\n \"Yacutesmall\", 0xf7fd,\n \"Yatcyrillic\", 0x0462,\n \"Ycircle\", 0x24ce,\n \"Ycircumflex\", 0x0176,\n \"Ydieresis\", 0x0178,\n \"Ydieresissmall\", 0xf7ff,\n \"Ydotaccent\", 0x1e8e,\n \"Ydotbelow\", 0x1ef4,\n \"Yericyrillic\", 0x042b,\n \"Yerudieresiscyrillic\", 0x04f8,\n \"Ygrave\", 0x1ef2,\n \"Yhook\", 0x01b3,\n \"Yhookabove\", 0x1ef6,\n \"Yiarmenian\", 0x0545,\n \"Yicyrillic\", 0x0407,\n \"Yiwnarmenian\", 0x0552,\n \"Ymonospace\", 0xff39,\n \"Ysmall\", 0xf779,\n \"Ytilde\", 0x1ef8,\n \"Yusbigcyrillic\", 0x046a,\n \"Yusbigiotifiedcyrillic\", 0x046c,\n \"Yuslittlecyrillic\", 0x0466,\n \"Yuslittleiotifiedcyrillic\", 0x0468,\n \"Z\", 0x005a,\n \"Zaarmenian\", 0x0536,\n \"Zacute\", 0x0179,\n \"Zcaron\", 0x017d,\n \"Zcaronsmall\", 0xf6ff,\n \"Zcircle\", 0x24cf,\n \"Zcircumflex\", 0x1e90,\n \"Zdot\", 0x017b,\n \"Zdotaccent\", 0x017b,\n \"Zdotbelow\", 0x1e92,\n \"Zecyrillic\", 0x0417,\n \"Zedescendercyrillic\", 0x0498,\n \"Zedieresiscyrillic\", 0x04de,\n \"Zeta\", 0x0396,\n \"Zhearmenian\", 0x053a,\n \"Zhebrevecyrillic\", 0x04c1,\n \"Zhecyrillic\", 0x0416,\n \"Zhedescendercyrillic\", 0x0496,\n \"Zhedieresiscyrillic\", 0x04dc,\n \"Zlinebelow\", 0x1e94,\n \"Zmonospace\", 0xff3a,\n \"Zsmall\", 0xf77a,\n \"Zstroke\", 0x01b5,\n \"a\", 0x0061,\n \"aabengali\", 0x0986,\n \"aacute\", 0x00e1,\n \"aadeva\", 0x0906,\n \"aagujarati\", 0x0a86,\n \"aagurmukhi\", 0x0a06,\n \"aamatragurmukhi\", 0x0a3e,\n \"aarusquare\", 0x3303,\n \"aavowelsignbengali\", 0x09be,\n \"aavowelsigndeva\", 0x093e,\n \"aavowelsigngujarati\", 0x0abe,\n \"abbreviationmarkarmenian\", 0x055f,\n \"abbreviationsigndeva\", 0x0970,\n \"abengali\", 0x0985,\n \"abopomofo\", 0x311a,\n \"abreve\", 0x0103,\n \"abreveacute\", 0x1eaf,\n \"abrevecyrillic\", 0x04d1,\n \"abrevedotbelow\", 0x1eb7,\n \"abrevegrave\", 0x1eb1,\n \"abrevehookabove\", 0x1eb3,\n \"abrevetilde\", 0x1eb5,\n \"acaron\", 0x01ce,\n \"acircle\", 0x24d0,\n \"acircumflex\", 0x00e2,\n \"acircumflexacute\", 0x1ea5,\n \"acircumflexdotbelow\", 0x1ead,\n \"acircumflexgrave\", 0x1ea7,\n \"acircumflexhookabove\", 0x1ea9,\n \"acircumflextilde\", 0x1eab,\n \"acute\", 0x00b4,\n \"acutebelowcmb\", 0x0317,\n \"acutecmb\", 0x0301,\n \"acutecomb\", 0x0301,\n \"acutedeva\", 0x0954,\n \"acutelowmod\", 0x02cf,\n \"acutetonecmb\", 0x0341,\n \"acyrillic\", 0x0430,\n \"adblgrave\", 0x0201,\n \"addakgurmukhi\", 0x0a71,\n \"adeva\", 0x0905,\n \"adieresis\", 0x00e4,\n \"adieresiscyrillic\", 0x04d3,\n \"adieresismacron\", 0x01df,\n \"adotbelow\", 0x1ea1,\n \"adotmacron\", 0x01e1,\n \"ae\", 0x00e6,\n \"aeacute\", 0x01fd,\n \"aekorean\", 0x3150,\n \"aemacron\", 0x01e3,\n \"afii00208\", 0x2015,\n \"afii08941\", 0x20a4,\n \"afii10017\", 0x0410,\n \"afii10018\", 0x0411,\n \"afii10019\", 0x0412,\n \"afii10020\", 0x0413,\n \"afii10021\", 0x0414,\n \"afii10022\", 0x0415,\n \"afii10023\", 0x0401,\n \"afii10024\", 0x0416,\n \"afii10025\", 0x0417,\n \"afii10026\", 0x0418,\n \"afii10027\", 0x0419,\n \"afii10028\", 0x041a,\n \"afii10029\", 0x041b,\n \"afii10030\", 0x041c,\n \"afii10031\", 0x041d,\n \"afii10032\", 0x041e,\n \"afii10033\", 0x041f,\n \"afii10034\", 0x0420,\n \"afii10035\", 0x0421,\n \"afii10036\", 0x0422,\n \"afii10037\", 0x0423,\n \"afii10038\", 0x0424,\n \"afii10039\", 0x0425,\n \"afii10040\", 0x0426,\n \"afii10041\", 0x0427,\n \"afii10042\", 0x0428,\n \"afii10043\", 0x0429,\n \"afii10044\", 0x042a,\n \"afii10045\", 0x042b,\n \"afii10046\", 0x042c,\n \"afii10047\", 0x042d,\n \"afii10048\", 0x042e,\n \"afii10049\", 0x042f,\n \"afii10050\", 0x0490,\n \"afii10051\", 0x0402,\n \"afii10052\", 0x0403,\n \"afii10053\", 0x0404,\n \"afii10054\", 0x0405,\n \"afii10055\", 0x0406,\n \"afii10056\", 0x0407,\n \"afii10057\", 0x0408,\n \"afii10058\", 0x0409,\n \"afii10059\", 0x040a,\n \"afii10060\", 0x040b,\n \"afii10061\", 0x040c,\n \"afii10062\", 0x040e,\n \"afii10063\", 0xf6c4,\n \"afii10064\", 0xf6c5,\n \"afii10065\", 0x0430,\n \"afii10066\", 0x0431,\n \"afii10067\", 0x0432,\n \"afii10068\", 0x0433,\n \"afii10069\", 0x0434,\n \"afii10070\", 0x0435,\n \"afii10071\", 0x0451,\n \"afii10072\", 0x0436,\n \"afii10073\", 0x0437,\n \"afii10074\", 0x0438,\n \"afii10075\", 0x0439,\n \"afii10076\", 0x043a,\n \"afii10077\", 0x043b,\n \"afii10078\", 0x043c,\n \"afii10079\", 0x043d,\n \"afii10080\", 0x043e,\n \"afii10081\", 0x043f,\n \"afii10082\", 0x0440,\n \"afii10083\", 0x0441,\n \"afii10084\", 0x0442,\n \"afii10085\", 0x0443,\n \"afii10086\", 0x0444,\n \"afii10087\", 0x0445,\n \"afii10088\", 0x0446,\n \"afii10089\", 0x0447,\n \"afii10090\", 0x0448,\n \"afii10091\", 0x0449,\n \"afii10092\", 0x044a,\n \"afii10093\", 0x044b,\n \"afii10094\", 0x044c,\n \"afii10095\", 0x044d,\n \"afii10096\", 0x044e,\n \"afii10097\", 0x044f,\n \"afii10098\", 0x0491,\n \"afii10099\", 0x0452,\n \"afii10100\", 0x0453,\n \"afii10101\", 0x0454,\n \"afii10102\", 0x0455,\n \"afii10103\", 0x0456,\n \"afii10104\", 0x0457,\n \"afii10105\", 0x0458,\n \"afii10106\", 0x0459,\n \"afii10107\", 0x045a,\n \"afii10108\", 0x045b,\n \"afii10109\", 0x045c,\n \"afii10110\", 0x045e,\n \"afii10145\", 0x040f,\n \"afii10146\", 0x0462,\n \"afii10147\", 0x0472,\n \"afii10148\", 0x0474,\n \"afii10192\", 0xf6c6,\n \"afii10193\", 0x045f,\n \"afii10194\", 0x0463,\n \"afii10195\", 0x0473,\n \"afii10196\", 0x0475,\n \"afii10831\", 0xf6c7,\n \"afii10832\", 0xf6c8,\n \"afii10846\", 0x04d9,\n \"afii299\", 0x200e,\n \"afii300\", 0x200f,\n \"afii301\", 0x200d,\n \"afii57381\", 0x066a,\n \"afii57388\", 0x060c,\n \"afii57392\", 0x0660,\n \"afii57393\", 0x0661,\n \"afii57394\", 0x0662,\n \"afii57395\", 0x0663,\n \"afii57396\", 0x0664,\n \"afii57397\", 0x0665,\n \"afii57398\", 0x0666,\n \"afii57399\", 0x0667,\n \"afii57400\", 0x0668,\n \"afii57401\", 0x0669,\n \"afii57403\", 0x061b,\n \"afii57407\", 0x061f,\n \"afii57409\", 0x0621,\n \"afii57410\", 0x0622,\n \"afii57411\", 0x0623,\n \"afii57412\", 0x0624,\n \"afii57413\", 0x0625,\n \"afii57414\", 0x0626,\n \"afii57415\", 0x0627,\n \"afii57416\", 0x0628,\n \"afii57417\", 0x0629,\n \"afii57418\", 0x062a,\n \"afii57419\", 0x062b,\n \"afii57420\", 0x062c,\n \"afii57421\", 0x062d,\n \"afii57422\", 0x062e,\n \"afii57423\", 0x062f,\n \"afii57424\", 0x0630,\n \"afii57425\", 0x0631,\n \"afii57426\", 0x0632,\n \"afii57427\", 0x0633,\n \"afii57428\", 0x0634,\n \"afii57429\", 0x0635,\n \"afii57430\", 0x0636,\n \"afii57431\", 0x0637,\n \"afii57432\", 0x0638,\n \"afii57433\", 0x0639,\n \"afii57434\", 0x063a,\n \"afii57440\", 0x0640,\n \"afii57441\", 0x0641,\n \"afii57442\", 0x0642,\n \"afii57443\", 0x0643,\n \"afii57444\", 0x0644,\n \"afii57445\", 0x0645,\n \"afii57446\", 0x0646,\n \"afii57448\", 0x0648,\n \"afii57449\", 0x0649,\n \"afii57450\", 0x064a,\n \"afii57451\", 0x064b,\n \"afii57452\", 0x064c,\n \"afii57453\", 0x064d,\n \"afii57454\", 0x064e,\n \"afii57455\", 0x064f,\n \"afii57456\", 0x0650,\n \"afii57457\", 0x0651,\n \"afii57458\", 0x0652,\n \"afii57470\", 0x0647,\n \"afii57505\", 0x06a4,\n \"afii57506\", 0x067e,\n \"afii57507\", 0x0686,\n \"afii57508\", 0x0698,\n \"afii57509\", 0x06af,\n \"afii57511\", 0x0679,\n \"afii57512\", 0x0688,\n \"afii57513\", 0x0691,\n \"afii57514\", 0x06ba,\n \"afii57519\", 0x06d2,\n \"afii57534\", 0x06d5,\n \"afii57636\", 0x20aa,\n \"afii57645\", 0x05be,\n \"afii57658\", 0x05c3,\n \"afii57664\", 0x05d0,\n \"afii57665\", 0x05d1,\n \"afii57666\", 0x05d2,\n \"afii57667\", 0x05d3,\n \"afii57668\", 0x05d4,\n \"afii57669\", 0x05d5,\n \"afii57670\", 0x05d6,\n \"afii57671\", 0x05d7,\n \"afii57672\", 0x05d8,\n \"afii57673\", 0x05d9,\n \"afii57674\", 0x05da,\n \"afii57675\", 0x05db,\n \"afii57676\", 0x05dc,\n \"afii57677\", 0x05dd,\n \"afii57678\", 0x05de,\n \"afii57679\", 0x05df,\n \"afii57680\", 0x05e0,\n \"afii57681\", 0x05e1,\n \"afii57682\", 0x05e2,\n \"afii57683\", 0x05e3,\n \"afii57684\", 0x05e4,\n \"afii57685\", 0x05e5,\n \"afii57686\", 0x05e6,\n \"afii57687\", 0x05e7,\n \"afii57688\", 0x05e8,\n \"afii57689\", 0x05e9,\n \"afii57690\", 0x05ea,\n \"afii57694\", 0xfb2a,\n \"afii57695\", 0xfb2b,\n \"afii57700\", 0xfb4b,\n \"afii57705\", 0xfb1f,\n \"afii57716\", 0x05f0,\n \"afii57717\", 0x05f1,\n \"afii57718\", 0x05f2,\n \"afii57723\", 0xfb35,\n \"afii57793\", 0x05b4,\n \"afii57794\", 0x05b5,\n \"afii57795\", 0x05b6,\n \"afii57796\", 0x05bb,\n \"afii57797\", 0x05b8,\n \"afii57798\", 0x05b7,\n \"afii57799\", 0x05b0,\n \"afii57800\", 0x05b2,\n \"afii57801\", 0x05b1,\n \"afii57802\", 0x05b3,\n \"afii57803\", 0x05c2,\n \"afii57804\", 0x05c1,\n \"afii57806\", 0x05b9,\n \"afii57807\", 0x05bc,\n \"afii57839\", 0x05bd,\n \"afii57841\", 0x05bf,\n \"afii57842\", 0x05c0,\n \"afii57929\", 0x02bc,\n \"afii61248\", 0x2105,\n \"afii61289\", 0x2113,\n \"afii61352\", 0x2116,\n \"afii61573\", 0x202c,\n \"afii61574\", 0x202d,\n \"afii61575\", 0x202e,\n \"afii61664\", 0x200c,\n \"afii63167\", 0x066d,\n \"afii64937\", 0x02bd,\n \"agrave\", 0x00e0,\n \"agujarati\", 0x0a85,\n \"agurmukhi\", 0x0a05,\n \"ahiragana\", 0x3042,\n \"ahookabove\", 0x1ea3,\n \"aibengali\", 0x0990,\n \"aibopomofo\", 0x311e,\n \"aideva\", 0x0910,\n \"aiecyrillic\", 0x04d5,\n \"aigujarati\", 0x0a90,\n \"aigurmukhi\", 0x0a10,\n \"aimatragurmukhi\", 0x0a48,\n \"ainarabic\", 0x0639,\n \"ainfinalarabic\", 0xfeca,\n \"aininitialarabic\", 0xfecb,\n \"ainmedialarabic\", 0xfecc,\n \"ainvertedbreve\", 0x0203,\n \"aivowelsignbengali\", 0x09c8,\n \"aivowelsigndeva\", 0x0948,\n \"aivowelsigngujarati\", 0x0ac8,\n \"akatakana\", 0x30a2,\n \"akatakanahalfwidth\", 0xff71,\n \"akorean\", 0x314f,\n \"alef\", 0x05d0,\n \"alefarabic\", 0x0627,\n \"alefdageshhebrew\", 0xfb30,\n \"aleffinalarabic\", 0xfe8e,\n \"alefhamzaabovearabic\", 0x0623,\n \"alefhamzaabovefinalarabic\", 0xfe84,\n \"alefhamzabelowarabic\", 0x0625,\n \"alefhamzabelowfinalarabic\", 0xfe88,\n \"alefhebrew\", 0x05d0,\n \"aleflamedhebrew\", 0xfb4f,\n \"alefmaddaabovearabic\", 0x0622,\n \"alefmaddaabovefinalarabic\", 0xfe82,\n \"alefmaksuraarabic\", 0x0649,\n \"alefmaksurafinalarabic\", 0xfef0,\n \"alefmaksurainitialarabic\", 0xfef3,\n \"alefmaksuramedialarabic\", 0xfef4,\n \"alefpatahhebrew\", 0xfb2e,\n \"alefqamatshebrew\", 0xfb2f,\n \"aleph\", 0x2135,\n \"allequal\", 0x224c,\n \"alpha\", 0x03b1,\n \"alphatonos\", 0x03ac,\n \"amacron\", 0x0101,\n \"amonospace\", 0xff41,\n \"ampersand\", 0x0026,\n \"ampersandmonospace\", 0xff06,\n \"ampersandsmall\", 0xf726,\n \"amsquare\", 0x33c2,\n \"anbopomofo\", 0x3122,\n \"angbopomofo\", 0x3124,\n \"angbracketleft\", 0x3008, // Glyph is missing from Adobe's original list.\n \"angbracketright\", 0x3009, // Glyph is missing from Adobe's original list.\n \"angkhankhuthai\", 0x0e5a,\n \"angle\", 0x2220,\n \"anglebracketleft\", 0x3008,\n \"anglebracketleftvertical\", 0xfe3f,\n \"anglebracketright\", 0x3009,\n \"anglebracketrightvertical\", 0xfe40,\n \"angleleft\", 0x2329,\n \"angleright\", 0x232a,\n \"angstrom\", 0x212b,\n \"anoteleia\", 0x0387,\n \"anudattadeva\", 0x0952,\n \"anusvarabengali\", 0x0982,\n \"anusvaradeva\", 0x0902,\n \"anusvaragujarati\", 0x0a82,\n \"aogonek\", 0x0105,\n \"apaatosquare\", 0x3300,\n \"aparen\", 0x249c,\n \"apostrophearmenian\", 0x055a,\n \"apostrophemod\", 0x02bc,\n \"apple\", 0xf8ff,\n \"approaches\", 0x2250,\n \"approxequal\", 0x2248,\n \"approxequalorimage\", 0x2252,\n \"approximatelyequal\", 0x2245,\n \"araeaekorean\", 0x318e,\n \"araeakorean\", 0x318d,\n \"arc\", 0x2312,\n \"arighthalfring\", 0x1e9a,\n \"aring\", 0x00e5,\n \"aringacute\", 0x01fb,\n \"aringbelow\", 0x1e01,\n \"arrowboth\", 0x2194,\n \"arrowdashdown\", 0x21e3,\n \"arrowdashleft\", 0x21e0,\n \"arrowdashright\", 0x21e2,\n \"arrowdashup\", 0x21e1,\n \"arrowdblboth\", 0x21d4,\n \"arrowdbldown\", 0x21d3,\n \"arrowdblleft\", 0x21d0,\n \"arrowdblright\", 0x21d2,\n \"arrowdblup\", 0x21d1,\n \"arrowdown\", 0x2193,\n \"arrowdownleft\", 0x2199,\n \"arrowdownright\", 0x2198,\n \"arrowdownwhite\", 0x21e9,\n \"arrowheaddownmod\", 0x02c5,\n \"arrowheadleftmod\", 0x02c2,\n \"arrowheadrightmod\", 0x02c3,\n \"arrowheadupmod\", 0x02c4,\n \"arrowhorizex\", 0xf8e7,\n \"arrowleft\", 0x2190,\n \"arrowleftdbl\", 0x21d0,\n \"arrowleftdblstroke\", 0x21cd,\n \"arrowleftoverright\", 0x21c6,\n \"arrowleftwhite\", 0x21e6,\n \"arrowright\", 0x2192,\n \"arrowrightdblstroke\", 0x21cf,\n \"arrowrightheavy\", 0x279e,\n \"arrowrightoverleft\", 0x21c4,\n \"arrowrightwhite\", 0x21e8,\n \"arrowtableft\", 0x21e4,\n \"arrowtabright\", 0x21e5,\n \"arrowup\", 0x2191,\n \"arrowupdn\", 0x2195,\n \"arrowupdnbse\", 0x21a8,\n \"arrowupdownbase\", 0x21a8,\n \"arrowupleft\", 0x2196,\n \"arrowupleftofdown\", 0x21c5,\n \"arrowupright\", 0x2197,\n \"arrowupwhite\", 0x21e7,\n \"arrowvertex\", 0xf8e6,\n \"asciicircum\", 0x005e,\n \"asciicircummonospace\", 0xff3e,\n \"asciitilde\", 0x007e,\n \"asciitildemonospace\", 0xff5e,\n \"ascript\", 0x0251,\n \"ascriptturned\", 0x0252,\n \"asmallhiragana\", 0x3041,\n \"asmallkatakana\", 0x30a1,\n \"asmallkatakanahalfwidth\", 0xff67,\n \"asterisk\", 0x002a,\n \"asteriskaltonearabic\", 0x066d,\n \"asteriskarabic\", 0x066d,\n \"asteriskmath\", 0x2217,\n \"asteriskmonospace\", 0xff0a,\n \"asterisksmall\", 0xfe61,\n \"asterism\", 0x2042,\n \"asuperior\", 0xf6e9,\n \"asymptoticallyequal\", 0x2243,\n \"at\", 0x0040,\n \"atilde\", 0x00e3,\n \"atmonospace\", 0xff20,\n \"atsmall\", 0xfe6b,\n \"aturned\", 0x0250,\n \"aubengali\", 0x0994,\n \"aubopomofo\", 0x3120,\n \"audeva\", 0x0914,\n \"augujarati\", 0x0a94,\n \"augurmukhi\", 0x0a14,\n \"aulengthmarkbengali\", 0x09d7,\n \"aumatragurmukhi\", 0x0a4c,\n \"auvowelsignbengali\", 0x09cc,\n \"auvowelsigndeva\", 0x094c,\n \"auvowelsigngujarati\", 0x0acc,\n \"avagrahadeva\", 0x093d,\n \"aybarmenian\", 0x0561,\n \"ayin\", 0x05e2,\n \"ayinaltonehebrew\", 0xfb20,\n \"ayinhebrew\", 0x05e2,\n \"b\", 0x0062,\n \"babengali\", 0x09ac,\n \"backslash\", 0x005c,\n \"backslashmonospace\", 0xff3c,\n \"badeva\", 0x092c,\n \"bagujarati\", 0x0aac,\n \"bagurmukhi\", 0x0a2c,\n \"bahiragana\", 0x3070,\n \"bahtthai\", 0x0e3f,\n \"bakatakana\", 0x30d0,\n \"bar\", 0x007c,\n \"barmonospace\", 0xff5c,\n \"bbopomofo\", 0x3105,\n \"bcircle\", 0x24d1,\n \"bdotaccent\", 0x1e03,\n \"bdotbelow\", 0x1e05,\n \"beamedsixteenthnotes\", 0x266c,\n \"because\", 0x2235,\n \"becyrillic\", 0x0431,\n \"beharabic\", 0x0628,\n \"behfinalarabic\", 0xfe90,\n \"behinitialarabic\", 0xfe91,\n \"behiragana\", 0x3079,\n \"behmedialarabic\", 0xfe92,\n \"behmeeminitialarabic\", 0xfc9f,\n \"behmeemisolatedarabic\", 0xfc08,\n \"behnoonfinalarabic\", 0xfc6d,\n \"bekatakana\", 0x30d9,\n \"benarmenian\", 0x0562,\n \"bet\", 0x05d1,\n \"beta\", 0x03b2,\n \"betasymbolgreek\", 0x03d0,\n \"betdagesh\", 0xfb31,\n \"betdageshhebrew\", 0xfb31,\n \"bethebrew\", 0x05d1,\n \"betrafehebrew\", 0xfb4c,\n \"bhabengali\", 0x09ad,\n \"bhadeva\", 0x092d,\n \"bhagujarati\", 0x0aad,\n \"bhagurmukhi\", 0x0a2d,\n \"bhook\", 0x0253,\n \"bihiragana\", 0x3073,\n \"bikatakana\", 0x30d3,\n \"bilabialclick\", 0x0298,\n \"bindigurmukhi\", 0x0a02,\n \"birusquare\", 0x3331,\n \"blackcircle\", 0x25cf,\n \"blackdiamond\", 0x25c6,\n \"blackdownpointingtriangle\", 0x25bc,\n \"blackleftpointingpointer\", 0x25c4,\n \"blackleftpointingtriangle\", 0x25c0,\n \"blacklenticularbracketleft\", 0x3010,\n \"blacklenticularbracketleftvertical\", 0xfe3b,\n \"blacklenticularbracketright\", 0x3011,\n \"blacklenticularbracketrightvertical\", 0xfe3c,\n \"blacklowerlefttriangle\", 0x25e3,\n \"blacklowerrighttriangle\", 0x25e2,\n \"blackrectangle\", 0x25ac,\n \"blackrightpointingpointer\", 0x25ba,\n \"blackrightpointingtriangle\", 0x25b6,\n \"blacksmallsquare\", 0x25aa,\n \"blacksmilingface\", 0x263b,\n \"blacksquare\", 0x25a0,\n \"blackstar\", 0x2605,\n \"blackupperlefttriangle\", 0x25e4,\n \"blackupperrighttriangle\", 0x25e5,\n \"blackuppointingsmalltriangle\", 0x25b4,\n \"blackuppointingtriangle\", 0x25b2,\n \"blank\", 0x2423,\n \"blinebelow\", 0x1e07,\n \"block\", 0x2588,\n \"bmonospace\", 0xff42,\n \"bobaimaithai\", 0x0e1a,\n \"bohiragana\", 0x307c,\n \"bokatakana\", 0x30dc,\n \"bparen\", 0x249d,\n \"bqsquare\", 0x33c3,\n \"braceex\", 0xf8f4,\n \"braceleft\", 0x007b,\n \"braceleftbt\", 0xf8f3,\n \"braceleftmid\", 0xf8f2,\n \"braceleftmonospace\", 0xff5b,\n \"braceleftsmall\", 0xfe5b,\n \"bracelefttp\", 0xf8f1,\n \"braceleftvertical\", 0xfe37,\n \"braceright\", 0x007d,\n \"bracerightbt\", 0xf8fe,\n \"bracerightmid\", 0xf8fd,\n \"bracerightmonospace\", 0xff5d,\n \"bracerightsmall\", 0xfe5c,\n \"bracerighttp\", 0xf8fc,\n \"bracerightvertical\", 0xfe38,\n \"bracketleft\", 0x005b,\n \"bracketleftbt\", 0xf8f0,\n \"bracketleftex\", 0xf8ef,\n \"bracketleftmonospace\", 0xff3b,\n \"bracketlefttp\", 0xf8ee,\n \"bracketright\", 0x005d,\n \"bracketrightbt\", 0xf8fb,\n \"bracketrightex\", 0xf8fa,\n \"bracketrightmonospace\", 0xff3d,\n \"bracketrighttp\", 0xf8f9,\n \"breve\", 0x02d8,\n \"brevebelowcmb\", 0x032e,\n \"brevecmb\", 0x0306,\n \"breveinvertedbelowcmb\", 0x032f,\n \"breveinvertedcmb\", 0x0311,\n \"breveinverteddoublecmb\", 0x0361,\n \"bridgebelowcmb\", 0x032a,\n \"bridgeinvertedbelowcmb\", 0x033a,\n \"brokenbar\", 0x00a6,\n \"bstroke\", 0x0180,\n \"bsuperior\", 0xf6ea,\n \"btopbar\", 0x0183,\n \"buhiragana\", 0x3076,\n \"bukatakana\", 0x30d6,\n \"bullet\", 0x2022,\n \"bulletinverse\", 0x25d8,\n \"bulletoperator\", 0x2219,\n \"bullseye\", 0x25ce,\n \"c\", 0x0063,\n \"caarmenian\", 0x056e,\n \"cabengali\", 0x099a,\n \"cacute\", 0x0107,\n \"cadeva\", 0x091a,\n \"cagujarati\", 0x0a9a,\n \"cagurmukhi\", 0x0a1a,\n \"calsquare\", 0x3388,\n \"candrabindubengali\", 0x0981,\n \"candrabinducmb\", 0x0310,\n \"candrabindudeva\", 0x0901,\n \"candrabindugujarati\", 0x0a81,\n \"capslock\", 0x21ea,\n \"careof\", 0x2105,\n \"caron\", 0x02c7,\n \"caronbelowcmb\", 0x032c,\n \"caroncmb\", 0x030c,\n \"carriagereturn\", 0x21b5,\n \"cbopomofo\", 0x3118,\n \"ccaron\", 0x010d,\n \"ccedilla\", 0x00e7,\n \"ccedillaacute\", 0x1e09,\n \"ccircle\", 0x24d2,\n \"ccircumflex\", 0x0109,\n \"ccurl\", 0x0255,\n \"cdot\", 0x010b,\n \"cdotaccent\", 0x010b,\n \"cdsquare\", 0x33c5,\n \"cedilla\", 0x00b8,\n \"cedillacmb\", 0x0327,\n \"cent\", 0x00a2,\n \"centigrade\", 0x2103,\n \"centinferior\", 0xf6df,\n \"centmonospace\", 0xffe0,\n \"centoldstyle\", 0xf7a2,\n \"centsuperior\", 0xf6e0,\n \"chaarmenian\", 0x0579,\n \"chabengali\", 0x099b,\n \"chadeva\", 0x091b,\n \"chagujarati\", 0x0a9b,\n \"chagurmukhi\", 0x0a1b,\n \"chbopomofo\", 0x3114,\n \"cheabkhasiancyrillic\", 0x04bd,\n \"checkmark\", 0x2713,\n \"checyrillic\", 0x0447,\n \"chedescenderabkhasiancyrillic\", 0x04bf,\n \"chedescendercyrillic\", 0x04b7,\n \"chedieresiscyrillic\", 0x04f5,\n \"cheharmenian\", 0x0573,\n \"chekhakassiancyrillic\", 0x04cc,\n \"cheverticalstrokecyrillic\", 0x04b9,\n \"chi\", 0x03c7,\n \"chieuchacirclekorean\", 0x3277,\n \"chieuchaparenkorean\", 0x3217,\n \"chieuchcirclekorean\", 0x3269,\n \"chieuchkorean\", 0x314a,\n \"chieuchparenkorean\", 0x3209,\n \"chochangthai\", 0x0e0a,\n \"chochanthai\", 0x0e08,\n \"chochingthai\", 0x0e09,\n \"chochoethai\", 0x0e0c,\n \"chook\", 0x0188,\n \"cieucacirclekorean\", 0x3276,\n \"cieucaparenkorean\", 0x3216,\n \"cieuccirclekorean\", 0x3268,\n \"cieuckorean\", 0x3148,\n \"cieucparenkorean\", 0x3208,\n \"cieucuparenkorean\", 0x321c,\n \"circle\", 0x25cb,\n \"circlecopyrt\", 0x00a9, // Glyph is missing from Adobe's original list.\n \"circlemultiply\", 0x2297,\n \"circleot\", 0x2299,\n \"circleplus\", 0x2295,\n \"circlepostalmark\", 0x3036,\n \"circlewithlefthalfblack\", 0x25d0,\n \"circlewithrighthalfblack\", 0x25d1,\n \"circumflex\", 0x02c6,\n \"circumflexbelowcmb\", 0x032d,\n \"circumflexcmb\", 0x0302,\n \"clear\", 0x2327,\n \"clickalveolar\", 0x01c2,\n \"clickdental\", 0x01c0,\n \"clicklateral\", 0x01c1,\n \"clickretroflex\", 0x01c3,\n \"club\", 0x2663,\n \"clubsuitblack\", 0x2663,\n \"clubsuitwhite\", 0x2667,\n \"cmcubedsquare\", 0x33a4,\n \"cmonospace\", 0xff43,\n \"cmsquaredsquare\", 0x33a0,\n \"coarmenian\", 0x0581,\n \"colon\", 0x003a,\n \"colonmonetary\", 0x20a1,\n \"colonmonospace\", 0xff1a,\n \"colonsign\", 0x20a1,\n \"colonsmall\", 0xfe55,\n \"colontriangularhalfmod\", 0x02d1,\n \"colontriangularmod\", 0x02d0,\n \"comma\", 0x002c,\n \"commaabovecmb\", 0x0313,\n \"commaaboverightcmb\", 0x0315,\n \"commaaccent\", 0xf6c3,\n \"commaarabic\", 0x060c,\n \"commaarmenian\", 0x055d,\n \"commainferior\", 0xf6e1,\n \"commamonospace\", 0xff0c,\n \"commareversedabovecmb\", 0x0314,\n \"commareversedmod\", 0x02bd,\n \"commasmall\", 0xfe50,\n \"commasuperior\", 0xf6e2,\n \"commaturnedabovecmb\", 0x0312,\n \"commaturnedmod\", 0x02bb,\n \"compass\", 0x263c,\n \"congruent\", 0x2245,\n \"contourintegral\", 0x222e,\n \"control\", 0x2303,\n \"controlACK\", 0x0006,\n \"controlBEL\", 0x0007,\n \"controlBS\", 0x0008,\n \"controlCAN\", 0x0018,\n \"controlCR\", 0x000d,\n \"controlDC1\", 0x0011,\n \"controlDC2\", 0x0012,\n \"controlDC3\", 0x0013,\n \"controlDC4\", 0x0014,\n \"controlDEL\", 0x007f,\n \"controlDLE\", 0x0010,\n \"controlEM\", 0x0019,\n \"controlENQ\", 0x0005,\n \"controlEOT\", 0x0004,\n \"controlESC\", 0x001b,\n \"controlETB\", 0x0017,\n \"controlETX\", 0x0003,\n \"controlFF\", 0x000c,\n \"controlFS\", 0x001c,\n \"controlGS\", 0x001d,\n \"controlHT\", 0x0009,\n \"controlLF\", 0x000a,\n \"controlNAK\", 0x0015,\n \"controlNULL\", 0x0000, // Glyph is missing from Adobe's original list.\n \"controlRS\", 0x001e,\n \"controlSI\", 0x000f,\n \"controlSO\", 0x000e,\n \"controlSOT\", 0x0002,\n \"controlSTX\", 0x0001,\n \"controlSUB\", 0x001a,\n \"controlSYN\", 0x0016,\n \"controlUS\", 0x001f,\n \"controlVT\", 0x000b,\n \"copyright\", 0x00a9,\n \"copyrightsans\", 0xf8e9,\n \"copyrightserif\", 0xf6d9,\n \"cornerbracketleft\", 0x300c,\n \"cornerbracketlefthalfwidth\", 0xff62,\n \"cornerbracketleftvertical\", 0xfe41,\n \"cornerbracketright\", 0x300d,\n \"cornerbracketrighthalfwidth\", 0xff63,\n \"cornerbracketrightvertical\", 0xfe42,\n \"corporationsquare\", 0x337f,\n \"cosquare\", 0x33c7,\n \"coverkgsquare\", 0x33c6,\n \"cparen\", 0x249e,\n \"cruzeiro\", 0x20a2,\n \"cstretched\", 0x0297,\n \"curlyand\", 0x22cf,\n \"curlyor\", 0x22ce,\n \"currency\", 0x00a4,\n \"cyrBreve\", 0xf6d1,\n \"cyrFlex\", 0xf6d2,\n \"cyrbreve\", 0xf6d4,\n \"cyrflex\", 0xf6d5,\n \"d\", 0x0064,\n \"daarmenian\", 0x0564,\n \"dabengali\", 0x09a6,\n \"dadarabic\", 0x0636,\n \"dadeva\", 0x0926,\n \"dadfinalarabic\", 0xfebe,\n \"dadinitialarabic\", 0xfebf,\n \"dadmedialarabic\", 0xfec0,\n \"dagesh\", 0x05bc,\n \"dageshhebrew\", 0x05bc,\n \"dagger\", 0x2020,\n \"daggerdbl\", 0x2021,\n \"dagujarati\", 0x0aa6,\n \"dagurmukhi\", 0x0a26,\n \"dahiragana\", 0x3060,\n \"dakatakana\", 0x30c0,\n \"dalarabic\", 0x062f,\n \"dalet\", 0x05d3,\n \"daletdagesh\", 0xfb33,\n \"daletdageshhebrew\", 0xfb33,\n \"dalethebrew\", 0x05d3,\n \"dalfinalarabic\", 0xfeaa,\n \"dammaarabic\", 0x064f,\n \"dammalowarabic\", 0x064f,\n \"dammatanaltonearabic\", 0x064c,\n \"dammatanarabic\", 0x064c,\n \"danda\", 0x0964,\n \"dargahebrew\", 0x05a7,\n \"dargalefthebrew\", 0x05a7,\n \"dasiapneumatacyrilliccmb\", 0x0485,\n \"dblGrave\", 0xf6d3,\n \"dblanglebracketleft\", 0x300a,\n \"dblanglebracketleftvertical\", 0xfe3d,\n \"dblanglebracketright\", 0x300b,\n \"dblanglebracketrightvertical\", 0xfe3e,\n \"dblarchinvertedbelowcmb\", 0x032b,\n \"dblarrowleft\", 0x21d4,\n \"dblarrowright\", 0x21d2,\n \"dbldanda\", 0x0965,\n \"dblgrave\", 0xf6d6,\n \"dblgravecmb\", 0x030f,\n \"dblintegral\", 0x222c,\n \"dbllowline\", 0x2017,\n \"dbllowlinecmb\", 0x0333,\n \"dbloverlinecmb\", 0x033f,\n \"dblprimemod\", 0x02ba,\n \"dblverticalbar\", 0x2016,\n \"dblverticallineabovecmb\", 0x030e,\n \"dbopomofo\", 0x3109,\n \"dbsquare\", 0x33c8,\n \"dcaron\", 0x010f,\n \"dcedilla\", 0x1e11,\n \"dcircle\", 0x24d3,\n \"dcircumflexbelow\", 0x1e13,\n \"dcroat\", 0x0111,\n \"ddabengali\", 0x09a1,\n \"ddadeva\", 0x0921,\n \"ddagujarati\", 0x0aa1,\n \"ddagurmukhi\", 0x0a21,\n \"ddalarabic\", 0x0688,\n \"ddalfinalarabic\", 0xfb89,\n \"dddhadeva\", 0x095c,\n \"ddhabengali\", 0x09a2,\n \"ddhadeva\", 0x0922,\n \"ddhagujarati\", 0x0aa2,\n \"ddhagurmukhi\", 0x0a22,\n \"ddotaccent\", 0x1e0b,\n \"ddotbelow\", 0x1e0d,\n \"decimalseparatorarabic\", 0x066b,\n \"decimalseparatorpersian\", 0x066b,\n \"decyrillic\", 0x0434,\n \"degree\", 0x00b0,\n \"dehihebrew\", 0x05ad,\n \"dehiragana\", 0x3067,\n \"deicoptic\", 0x03ef,\n \"dekatakana\", 0x30c7,\n \"deleteleft\", 0x232b,\n \"deleteright\", 0x2326,\n \"delta\", 0x03b4,\n \"deltaturned\", 0x018d,\n \"denominatorminusonenumeratorbengali\", 0x09f8,\n \"dezh\", 0x02a4,\n \"dhabengali\", 0x09a7,\n \"dhadeva\", 0x0927,\n \"dhagujarati\", 0x0aa7,\n \"dhagurmukhi\", 0x0a27,\n \"dhook\", 0x0257,\n \"dialytikatonos\", 0x0385,\n \"dialytikatonoscmb\", 0x0344,\n \"diamond\", 0x2666,\n \"diamondsuitwhite\", 0x2662,\n \"dieresis\", 0x00a8,\n \"dieresisacute\", 0xf6d7,\n \"dieresisbelowcmb\", 0x0324,\n \"dieresiscmb\", 0x0308,\n \"dieresisgrave\", 0xf6d8,\n \"dieresistonos\", 0x0385,\n \"dihiragana\", 0x3062,\n \"dikatakana\", 0x30c2,\n \"dittomark\", 0x3003,\n \"divide\", 0x00f7,\n \"divides\", 0x2223,\n \"divisionslash\", 0x2215,\n \"djecyrillic\", 0x0452,\n \"dkshade\", 0x2593,\n \"dlinebelow\", 0x1e0f,\n \"dlsquare\", 0x3397,\n \"dmacron\", 0x0111,\n \"dmonospace\", 0xff44,\n \"dnblock\", 0x2584,\n \"dochadathai\", 0x0e0e,\n \"dodekthai\", 0x0e14,\n \"dohiragana\", 0x3069,\n \"dokatakana\", 0x30c9,\n \"dollar\", 0x0024,\n \"dollarinferior\", 0xf6e3,\n \"dollarmonospace\", 0xff04,\n \"dollaroldstyle\", 0xf724,\n \"dollarsmall\", 0xfe69,\n \"dollarsuperior\", 0xf6e4,\n \"dong\", 0x20ab,\n \"dorusquare\", 0x3326,\n \"dotaccent\", 0x02d9,\n \"dotaccentcmb\", 0x0307,\n \"dotbelowcmb\", 0x0323,\n \"dotbelowcomb\", 0x0323,\n \"dotkatakana\", 0x30fb,\n \"dotlessi\", 0x0131,\n \"dotlessj\", 0xf6be,\n \"dotlessjstrokehook\", 0x0284,\n \"dotmath\", 0x22c5,\n \"dottedcircle\", 0x25cc,\n \"doubleyodpatah\", 0xfb1f,\n \"doubleyodpatahhebrew\", 0xfb1f,\n \"downtackbelowcmb\", 0x031e,\n \"downtackmod\", 0x02d5,\n \"dparen\", 0x249f,\n \"dsuperior\", 0xf6eb,\n \"dtail\", 0x0256,\n \"dtopbar\", 0x018c,\n \"duhiragana\", 0x3065,\n \"dukatakana\", 0x30c5,\n \"dz\", 0x01f3,\n \"dzaltone\", 0x02a3,\n \"dzcaron\", 0x01c6,\n \"dzcurl\", 0x02a5,\n \"dzeabkhasiancyrillic\", 0x04e1,\n \"dzecyrillic\", 0x0455,\n \"dzhecyrillic\", 0x045f,\n \"e\", 0x0065,\n \"eacute\", 0x00e9,\n \"earth\", 0x2641,\n \"ebengali\", 0x098f,\n \"ebopomofo\", 0x311c,\n \"ebreve\", 0x0115,\n \"ecandradeva\", 0x090d,\n \"ecandragujarati\", 0x0a8d,\n \"ecandravowelsigndeva\", 0x0945,\n \"ecandravowelsigngujarati\", 0x0ac5,\n \"ecaron\", 0x011b,\n \"ecedillabreve\", 0x1e1d,\n \"echarmenian\", 0x0565,\n \"echyiwnarmenian\", 0x0587,\n \"ecircle\", 0x24d4,\n \"ecircumflex\", 0x00ea,\n \"ecircumflexacute\", 0x1ebf,\n \"ecircumflexbelow\", 0x1e19,\n \"ecircumflexdotbelow\", 0x1ec7,\n \"ecircumflexgrave\", 0x1ec1,\n \"ecircumflexhookabove\", 0x1ec3,\n \"ecircumflextilde\", 0x1ec5,\n \"ecyrillic\", 0x0454,\n \"edblgrave\", 0x0205,\n \"edeva\", 0x090f,\n \"edieresis\", 0x00eb,\n \"edot\", 0x0117,\n \"edotaccent\", 0x0117,\n \"edotbelow\", 0x1eb9,\n \"eegurmukhi\", 0x0a0f,\n \"eematragurmukhi\", 0x0a47,\n \"efcyrillic\", 0x0444,\n \"egrave\", 0x00e8,\n \"egujarati\", 0x0a8f,\n \"eharmenian\", 0x0567,\n \"ehbopomofo\", 0x311d,\n \"ehiragana\", 0x3048,\n \"ehookabove\", 0x1ebb,\n \"eibopomofo\", 0x311f,\n \"eight\", 0x0038,\n \"eightarabic\", 0x0668,\n \"eightbengali\", 0x09ee,\n \"eightcircle\", 0x2467,\n \"eightcircleinversesansserif\", 0x2791,\n \"eightdeva\", 0x096e,\n \"eighteencircle\", 0x2471,\n \"eighteenparen\", 0x2485,\n \"eighteenperiod\", 0x2499,\n \"eightgujarati\", 0x0aee,\n \"eightgurmukhi\", 0x0a6e,\n \"eighthackarabic\", 0x0668,\n \"eighthangzhou\", 0x3028,\n \"eighthnotebeamed\", 0x266b,\n \"eightideographicparen\", 0x3227,\n \"eightinferior\", 0x2088,\n \"eightmonospace\", 0xff18,\n \"eightoldstyle\", 0xf738,\n \"eightparen\", 0x247b,\n \"eightperiod\", 0x248f,\n \"eightpersian\", 0x06f8,\n \"eightroman\", 0x2177,\n \"eightsuperior\", 0x2078,\n \"eightthai\", 0x0e58,\n \"einvertedbreve\", 0x0207,\n \"eiotifiedcyrillic\", 0x0465,\n \"ekatakana\", 0x30a8,\n \"ekatakanahalfwidth\", 0xff74,\n \"ekonkargurmukhi\", 0x0a74,\n \"ekorean\", 0x3154,\n \"elcyrillic\", 0x043b,\n \"element\", 0x2208,\n \"elevencircle\", 0x246a,\n \"elevenparen\", 0x247e,\n \"elevenperiod\", 0x2492,\n \"elevenroman\", 0x217a,\n \"ellipsis\", 0x2026,\n \"ellipsisvertical\", 0x22ee,\n \"emacron\", 0x0113,\n \"emacronacute\", 0x1e17,\n \"emacrongrave\", 0x1e15,\n \"emcyrillic\", 0x043c,\n \"emdash\", 0x2014,\n \"emdashvertical\", 0xfe31,\n \"emonospace\", 0xff45,\n \"emphasismarkarmenian\", 0x055b,\n \"emptyset\", 0x2205,\n \"enbopomofo\", 0x3123,\n \"encyrillic\", 0x043d,\n \"endash\", 0x2013,\n \"endashvertical\", 0xfe32,\n \"endescendercyrillic\", 0x04a3,\n \"eng\", 0x014b,\n \"engbopomofo\", 0x3125,\n \"enghecyrillic\", 0x04a5,\n \"enhookcyrillic\", 0x04c8,\n \"enspace\", 0x2002,\n \"eogonek\", 0x0119,\n \"eokorean\", 0x3153,\n \"eopen\", 0x025b,\n \"eopenclosed\", 0x029a,\n \"eopenreversed\", 0x025c,\n \"eopenreversedclosed\", 0x025e,\n \"eopenreversedhook\", 0x025d,\n \"eparen\", 0x24a0,\n \"epsilon\", 0x03b5,\n \"epsilontonos\", 0x03ad,\n \"equal\", 0x003d,\n \"equalmonospace\", 0xff1d,\n \"equalsmall\", 0xfe66,\n \"equalsuperior\", 0x207c,\n \"equivalence\", 0x2261,\n \"erbopomofo\", 0x3126,\n \"ercyrillic\", 0x0440,\n \"ereversed\", 0x0258,\n \"ereversedcyrillic\", 0x044d,\n \"escyrillic\", 0x0441,\n \"esdescendercyrillic\", 0x04ab,\n \"esh\", 0x0283,\n \"eshcurl\", 0x0286,\n \"eshortdeva\", 0x090e,\n \"eshortvowelsigndeva\", 0x0946,\n \"eshreversedloop\", 0x01aa,\n \"eshsquatreversed\", 0x0285,\n \"esmallhiragana\", 0x3047,\n \"esmallkatakana\", 0x30a7,\n \"esmallkatakanahalfwidth\", 0xff6a,\n \"estimated\", 0x212e,\n \"esuperior\", 0xf6ec,\n \"eta\", 0x03b7,\n \"etarmenian\", 0x0568,\n \"etatonos\", 0x03ae,\n \"eth\", 0x00f0,\n \"etilde\", 0x1ebd,\n \"etildebelow\", 0x1e1b,\n \"etnahtafoukhhebrew\", 0x0591,\n \"etnahtafoukhlefthebrew\", 0x0591,\n \"etnahtahebrew\", 0x0591,\n \"etnahtalefthebrew\", 0x0591,\n \"eturned\", 0x01dd,\n \"eukorean\", 0x3161,\n \"euro\", 0x20ac,\n \"evowelsignbengali\", 0x09c7,\n \"evowelsigndeva\", 0x0947,\n \"evowelsigngujarati\", 0x0ac7,\n \"exclam\", 0x0021,\n \"exclamarmenian\", 0x055c,\n \"exclamdbl\", 0x203c,\n \"exclamdown\", 0x00a1,\n \"exclamdownsmall\", 0xf7a1,\n \"exclammonospace\", 0xff01,\n \"exclamsmall\", 0xf721,\n \"existential\", 0x2203,\n \"ezh\", 0x0292,\n \"ezhcaron\", 0x01ef,\n \"ezhcurl\", 0x0293,\n \"ezhreversed\", 0x01b9,\n \"ezhtail\", 0x01ba,\n \"f\", 0x0066,\n \"fadeva\", 0x095e,\n \"fagurmukhi\", 0x0a5e,\n \"fahrenheit\", 0x2109,\n \"fathaarabic\", 0x064e,\n \"fathalowarabic\", 0x064e,\n \"fathatanarabic\", 0x064b,\n \"fbopomofo\", 0x3108,\n \"fcircle\", 0x24d5,\n \"fdotaccent\", 0x1e1f,\n \"feharabic\", 0x0641,\n \"feharmenian\", 0x0586,\n \"fehfinalarabic\", 0xfed2,\n \"fehinitialarabic\", 0xfed3,\n \"fehmedialarabic\", 0xfed4,\n \"feicoptic\", 0x03e5,\n \"female\", 0x2640,\n \"ff\", 0xfb00,\n \"f_f\", 0xfb00, // Fixes issue 11016.\n \"ffi\", 0xfb03,\n \"ffl\", 0xfb04,\n \"fi\", 0xfb01,\n \"fifteencircle\", 0x246e,\n \"fifteenparen\", 0x2482,\n \"fifteenperiod\", 0x2496,\n \"figuredash\", 0x2012,\n \"filledbox\", 0x25a0,\n \"filledrect\", 0x25ac,\n \"finalkaf\", 0x05da,\n \"finalkafdagesh\", 0xfb3a,\n \"finalkafdageshhebrew\", 0xfb3a,\n \"finalkafhebrew\", 0x05da,\n \"finalmem\", 0x05dd,\n \"finalmemhebrew\", 0x05dd,\n \"finalnun\", 0x05df,\n \"finalnunhebrew\", 0x05df,\n \"finalpe\", 0x05e3,\n \"finalpehebrew\", 0x05e3,\n \"finaltsadi\", 0x05e5,\n \"finaltsadihebrew\", 0x05e5,\n \"firsttonechinese\", 0x02c9,\n \"fisheye\", 0x25c9,\n \"fitacyrillic\", 0x0473,\n \"five\", 0x0035,\n \"fivearabic\", 0x0665,\n \"fivebengali\", 0x09eb,\n \"fivecircle\", 0x2464,\n \"fivecircleinversesansserif\", 0x278e,\n \"fivedeva\", 0x096b,\n \"fiveeighths\", 0x215d,\n \"fivegujarati\", 0x0aeb,\n \"fivegurmukhi\", 0x0a6b,\n \"fivehackarabic\", 0x0665,\n \"fivehangzhou\", 0x3025,\n \"fiveideographicparen\", 0x3224,\n \"fiveinferior\", 0x2085,\n \"fivemonospace\", 0xff15,\n \"fiveoldstyle\", 0xf735,\n \"fiveparen\", 0x2478,\n \"fiveperiod\", 0x248c,\n \"fivepersian\", 0x06f5,\n \"fiveroman\", 0x2174,\n \"fivesuperior\", 0x2075,\n \"fivethai\", 0x0e55,\n \"fl\", 0xfb02,\n \"florin\", 0x0192,\n \"fmonospace\", 0xff46,\n \"fmsquare\", 0x3399,\n \"fofanthai\", 0x0e1f,\n \"fofathai\", 0x0e1d,\n \"fongmanthai\", 0x0e4f,\n \"forall\", 0x2200,\n \"four\", 0x0034,\n \"fourarabic\", 0x0664,\n \"fourbengali\", 0x09ea,\n \"fourcircle\", 0x2463,\n \"fourcircleinversesansserif\", 0x278d,\n \"fourdeva\", 0x096a,\n \"fourgujarati\", 0x0aea,\n \"fourgurmukhi\", 0x0a6a,\n \"fourhackarabic\", 0x0664,\n \"fourhangzhou\", 0x3024,\n \"fourideographicparen\", 0x3223,\n \"fourinferior\", 0x2084,\n \"fourmonospace\", 0xff14,\n \"fournumeratorbengali\", 0x09f7,\n \"fouroldstyle\", 0xf734,\n \"fourparen\", 0x2477,\n \"fourperiod\", 0x248b,\n \"fourpersian\", 0x06f4,\n \"fourroman\", 0x2173,\n \"foursuperior\", 0x2074,\n \"fourteencircle\", 0x246d,\n \"fourteenparen\", 0x2481,\n \"fourteenperiod\", 0x2495,\n \"fourthai\", 0x0e54,\n \"fourthtonechinese\", 0x02cb,\n \"fparen\", 0x24a1,\n \"fraction\", 0x2044,\n \"franc\", 0x20a3,\n \"g\", 0x0067,\n \"gabengali\", 0x0997,\n \"gacute\", 0x01f5,\n \"gadeva\", 0x0917,\n \"gafarabic\", 0x06af,\n \"gaffinalarabic\", 0xfb93,\n \"gafinitialarabic\", 0xfb94,\n \"gafmedialarabic\", 0xfb95,\n \"gagujarati\", 0x0a97,\n \"gagurmukhi\", 0x0a17,\n \"gahiragana\", 0x304c,\n \"gakatakana\", 0x30ac,\n \"gamma\", 0x03b3,\n \"gammalatinsmall\", 0x0263,\n \"gammasuperior\", 0x02e0,\n \"gangiacoptic\", 0x03eb,\n \"gbopomofo\", 0x310d,\n \"gbreve\", 0x011f,\n \"gcaron\", 0x01e7,\n \"gcedilla\", 0x0123,\n \"gcircle\", 0x24d6,\n \"gcircumflex\", 0x011d,\n \"gcommaaccent\", 0x0123,\n \"gdot\", 0x0121,\n \"gdotaccent\", 0x0121,\n \"gecyrillic\", 0x0433,\n \"gehiragana\", 0x3052,\n \"gekatakana\", 0x30b2,\n \"geometricallyequal\", 0x2251,\n \"gereshaccenthebrew\", 0x059c,\n \"gereshhebrew\", 0x05f3,\n \"gereshmuqdamhebrew\", 0x059d,\n \"germandbls\", 0x00df,\n \"gershayimaccenthebrew\", 0x059e,\n \"gershayimhebrew\", 0x05f4,\n \"getamark\", 0x3013,\n \"ghabengali\", 0x0998,\n \"ghadarmenian\", 0x0572,\n \"ghadeva\", 0x0918,\n \"ghagujarati\", 0x0a98,\n \"ghagurmukhi\", 0x0a18,\n \"ghainarabic\", 0x063a,\n \"ghainfinalarabic\", 0xfece,\n \"ghaininitialarabic\", 0xfecf,\n \"ghainmedialarabic\", 0xfed0,\n \"ghemiddlehookcyrillic\", 0x0495,\n \"ghestrokecyrillic\", 0x0493,\n \"gheupturncyrillic\", 0x0491,\n \"ghhadeva\", 0x095a,\n \"ghhagurmukhi\", 0x0a5a,\n \"ghook\", 0x0260,\n \"ghzsquare\", 0x3393,\n \"gihiragana\", 0x304e,\n \"gikatakana\", 0x30ae,\n \"gimarmenian\", 0x0563,\n \"gimel\", 0x05d2,\n \"gimeldagesh\", 0xfb32,\n \"gimeldageshhebrew\", 0xfb32,\n \"gimelhebrew\", 0x05d2,\n \"gjecyrillic\", 0x0453,\n \"glottalinvertedstroke\", 0x01be,\n \"glottalstop\", 0x0294,\n \"glottalstopinverted\", 0x0296,\n \"glottalstopmod\", 0x02c0,\n \"glottalstopreversed\", 0x0295,\n \"glottalstopreversedmod\", 0x02c1,\n \"glottalstopreversedsuperior\", 0x02e4,\n \"glottalstopstroke\", 0x02a1,\n \"glottalstopstrokereversed\", 0x02a2,\n \"gmacron\", 0x1e21,\n \"gmonospace\", 0xff47,\n \"gohiragana\", 0x3054,\n \"gokatakana\", 0x30b4,\n \"gparen\", 0x24a2,\n \"gpasquare\", 0x33ac,\n \"gradient\", 0x2207,\n \"grave\", 0x0060,\n \"gravebelowcmb\", 0x0316,\n \"gravecmb\", 0x0300,\n \"gravecomb\", 0x0300,\n \"gravedeva\", 0x0953,\n \"gravelowmod\", 0x02ce,\n \"gravemonospace\", 0xff40,\n \"gravetonecmb\", 0x0340,\n \"greater\", 0x003e,\n \"greaterequal\", 0x2265,\n \"greaterequalorless\", 0x22db,\n \"greatermonospace\", 0xff1e,\n \"greaterorequivalent\", 0x2273,\n \"greaterorless\", 0x2277,\n \"greateroverequal\", 0x2267,\n \"greatersmall\", 0xfe65,\n \"gscript\", 0x0261,\n \"gstroke\", 0x01e5,\n \"guhiragana\", 0x3050,\n \"guillemotleft\", 0x00ab,\n \"guillemotright\", 0x00bb,\n \"guilsinglleft\", 0x2039,\n \"guilsinglright\", 0x203a,\n \"gukatakana\", 0x30b0,\n \"guramusquare\", 0x3318,\n \"gysquare\", 0x33c9,\n \"h\", 0x0068,\n \"haabkhasiancyrillic\", 0x04a9,\n \"haaltonearabic\", 0x06c1,\n \"habengali\", 0x09b9,\n \"hadescendercyrillic\", 0x04b3,\n \"hadeva\", 0x0939,\n \"hagujarati\", 0x0ab9,\n \"hagurmukhi\", 0x0a39,\n \"haharabic\", 0x062d,\n \"hahfinalarabic\", 0xfea2,\n \"hahinitialarabic\", 0xfea3,\n \"hahiragana\", 0x306f,\n \"hahmedialarabic\", 0xfea4,\n \"haitusquare\", 0x332a,\n \"hakatakana\", 0x30cf,\n \"hakatakanahalfwidth\", 0xff8a,\n \"halantgurmukhi\", 0x0a4d,\n \"hamzaarabic\", 0x0621,\n \"hamzalowarabic\", 0x0621,\n \"hangulfiller\", 0x3164,\n \"hardsigncyrillic\", 0x044a,\n \"harpoonleftbarbup\", 0x21bc,\n \"harpoonrightbarbup\", 0x21c0,\n \"hasquare\", 0x33ca,\n \"hatafpatah\", 0x05b2,\n \"hatafpatah16\", 0x05b2,\n \"hatafpatah23\", 0x05b2,\n \"hatafpatah2f\", 0x05b2,\n \"hatafpatahhebrew\", 0x05b2,\n \"hatafpatahnarrowhebrew\", 0x05b2,\n \"hatafpatahquarterhebrew\", 0x05b2,\n \"hatafpatahwidehebrew\", 0x05b2,\n \"hatafqamats\", 0x05b3,\n \"hatafqamats1b\", 0x05b3,\n \"hatafqamats28\", 0x05b3,\n \"hatafqamats34\", 0x05b3,\n \"hatafqamatshebrew\", 0x05b3,\n \"hatafqamatsnarrowhebrew\", 0x05b3,\n \"hatafqamatsquarterhebrew\", 0x05b3,\n \"hatafqamatswidehebrew\", 0x05b3,\n \"hatafsegol\", 0x05b1,\n \"hatafsegol17\", 0x05b1,\n \"hatafsegol24\", 0x05b1,\n \"hatafsegol30\", 0x05b1,\n \"hatafsegolhebrew\", 0x05b1,\n \"hatafsegolnarrowhebrew\", 0x05b1,\n \"hatafsegolquarterhebrew\", 0x05b1,\n \"hatafsegolwidehebrew\", 0x05b1,\n \"hbar\", 0x0127,\n \"hbopomofo\", 0x310f,\n \"hbrevebelow\", 0x1e2b,\n \"hcedilla\", 0x1e29,\n \"hcircle\", 0x24d7,\n \"hcircumflex\", 0x0125,\n \"hdieresis\", 0x1e27,\n \"hdotaccent\", 0x1e23,\n \"hdotbelow\", 0x1e25,\n \"he\", 0x05d4,\n \"heart\", 0x2665,\n \"heartsuitblack\", 0x2665,\n \"heartsuitwhite\", 0x2661,\n \"hedagesh\", 0xfb34,\n \"hedageshhebrew\", 0xfb34,\n \"hehaltonearabic\", 0x06c1,\n \"heharabic\", 0x0647,\n \"hehebrew\", 0x05d4,\n \"hehfinalaltonearabic\", 0xfba7,\n \"hehfinalalttwoarabic\", 0xfeea,\n \"hehfinalarabic\", 0xfeea,\n \"hehhamzaabovefinalarabic\", 0xfba5,\n \"hehhamzaaboveisolatedarabic\", 0xfba4,\n \"hehinitialaltonearabic\", 0xfba8,\n \"hehinitialarabic\", 0xfeeb,\n \"hehiragana\", 0x3078,\n \"hehmedialaltonearabic\", 0xfba9,\n \"hehmedialarabic\", 0xfeec,\n \"heiseierasquare\", 0x337b,\n \"hekatakana\", 0x30d8,\n \"hekatakanahalfwidth\", 0xff8d,\n \"hekutaarusquare\", 0x3336,\n \"henghook\", 0x0267,\n \"herutusquare\", 0x3339,\n \"het\", 0x05d7,\n \"hethebrew\", 0x05d7,\n \"hhook\", 0x0266,\n \"hhooksuperior\", 0x02b1,\n \"hieuhacirclekorean\", 0x327b,\n \"hieuhaparenkorean\", 0x321b,\n \"hieuhcirclekorean\", 0x326d,\n \"hieuhkorean\", 0x314e,\n \"hieuhparenkorean\", 0x320d,\n \"hihiragana\", 0x3072,\n \"hikatakana\", 0x30d2,\n \"hikatakanahalfwidth\", 0xff8b,\n \"hiriq\", 0x05b4,\n \"hiriq14\", 0x05b4,\n \"hiriq21\", 0x05b4,\n \"hiriq2d\", 0x05b4,\n \"hiriqhebrew\", 0x05b4,\n \"hiriqnarrowhebrew\", 0x05b4,\n \"hiriqquarterhebrew\", 0x05b4,\n \"hiriqwidehebrew\", 0x05b4,\n \"hlinebelow\", 0x1e96,\n \"hmonospace\", 0xff48,\n \"hoarmenian\", 0x0570,\n \"hohipthai\", 0x0e2b,\n \"hohiragana\", 0x307b,\n \"hokatakana\", 0x30db,\n \"hokatakanahalfwidth\", 0xff8e,\n \"holam\", 0x05b9,\n \"holam19\", 0x05b9,\n \"holam26\", 0x05b9,\n \"holam32\", 0x05b9,\n \"holamhebrew\", 0x05b9,\n \"holamnarrowhebrew\", 0x05b9,\n \"holamquarterhebrew\", 0x05b9,\n \"holamwidehebrew\", 0x05b9,\n \"honokhukthai\", 0x0e2e,\n \"hookabovecomb\", 0x0309,\n \"hookcmb\", 0x0309,\n \"hookpalatalizedbelowcmb\", 0x0321,\n \"hookretroflexbelowcmb\", 0x0322,\n \"hoonsquare\", 0x3342,\n \"horicoptic\", 0x03e9,\n \"horizontalbar\", 0x2015,\n \"horncmb\", 0x031b,\n \"hotsprings\", 0x2668,\n \"house\", 0x2302,\n \"hparen\", 0x24a3,\n \"hsuperior\", 0x02b0,\n \"hturned\", 0x0265,\n \"huhiragana\", 0x3075,\n \"huiitosquare\", 0x3333,\n \"hukatakana\", 0x30d5,\n \"hukatakanahalfwidth\", 0xff8c,\n \"hungarumlaut\", 0x02dd,\n \"hungarumlautcmb\", 0x030b,\n \"hv\", 0x0195,\n \"hyphen\", 0x002d,\n \"hypheninferior\", 0xf6e5,\n \"hyphenmonospace\", 0xff0d,\n \"hyphensmall\", 0xfe63,\n \"hyphensuperior\", 0xf6e6,\n \"hyphentwo\", 0x2010,\n \"i\", 0x0069,\n \"iacute\", 0x00ed,\n \"iacyrillic\", 0x044f,\n \"ibengali\", 0x0987,\n \"ibopomofo\", 0x3127,\n \"ibreve\", 0x012d,\n \"icaron\", 0x01d0,\n \"icircle\", 0x24d8,\n \"icircumflex\", 0x00ee,\n \"icyrillic\", 0x0456,\n \"idblgrave\", 0x0209,\n \"ideographearthcircle\", 0x328f,\n \"ideographfirecircle\", 0x328b,\n \"ideographicallianceparen\", 0x323f,\n \"ideographiccallparen\", 0x323a,\n \"ideographiccentrecircle\", 0x32a5,\n \"ideographicclose\", 0x3006,\n \"ideographiccomma\", 0x3001,\n \"ideographiccommaleft\", 0xff64,\n \"ideographiccongratulationparen\", 0x3237,\n \"ideographiccorrectcircle\", 0x32a3,\n \"ideographicearthparen\", 0x322f,\n \"ideographicenterpriseparen\", 0x323d,\n \"ideographicexcellentcircle\", 0x329d,\n \"ideographicfestivalparen\", 0x3240,\n \"ideographicfinancialcircle\", 0x3296,\n \"ideographicfinancialparen\", 0x3236,\n \"ideographicfireparen\", 0x322b,\n \"ideographichaveparen\", 0x3232,\n \"ideographichighcircle\", 0x32a4,\n \"ideographiciterationmark\", 0x3005,\n \"ideographiclaborcircle\", 0x3298,\n \"ideographiclaborparen\", 0x3238,\n \"ideographicleftcircle\", 0x32a7,\n \"ideographiclowcircle\", 0x32a6,\n \"ideographicmedicinecircle\", 0x32a9,\n \"ideographicmetalparen\", 0x322e,\n \"ideographicmoonparen\", 0x322a,\n \"ideographicnameparen\", 0x3234,\n \"ideographicperiod\", 0x3002,\n \"ideographicprintcircle\", 0x329e,\n \"ideographicreachparen\", 0x3243,\n \"ideographicrepresentparen\", 0x3239,\n \"ideographicresourceparen\", 0x323e,\n \"ideographicrightcircle\", 0x32a8,\n \"ideographicsecretcircle\", 0x3299,\n \"ideographicselfparen\", 0x3242,\n \"ideographicsocietyparen\", 0x3233,\n \"ideographicspace\", 0x3000,\n \"ideographicspecialparen\", 0x3235,\n \"ideographicstockparen\", 0x3231,\n \"ideographicstudyparen\", 0x323b,\n \"ideographicsunparen\", 0x3230,\n \"ideographicsuperviseparen\", 0x323c,\n \"ideographicwaterparen\", 0x322c,\n \"ideographicwoodparen\", 0x322d,\n \"ideographiczero\", 0x3007,\n \"ideographmetalcircle\", 0x328e,\n \"ideographmooncircle\", 0x328a,\n \"ideographnamecircle\", 0x3294,\n \"ideographsuncircle\", 0x3290,\n \"ideographwatercircle\", 0x328c,\n \"ideographwoodcircle\", 0x328d,\n \"ideva\", 0x0907,\n \"idieresis\", 0x00ef,\n \"idieresisacute\", 0x1e2f,\n \"idieresiscyrillic\", 0x04e5,\n \"idotbelow\", 0x1ecb,\n \"iebrevecyrillic\", 0x04d7,\n \"iecyrillic\", 0x0435,\n \"ieungacirclekorean\", 0x3275,\n \"ieungaparenkorean\", 0x3215,\n \"ieungcirclekorean\", 0x3267,\n \"ieungkorean\", 0x3147,\n \"ieungparenkorean\", 0x3207,\n \"igrave\", 0x00ec,\n \"igujarati\", 0x0a87,\n \"igurmukhi\", 0x0a07,\n \"ihiragana\", 0x3044,\n \"ihookabove\", 0x1ec9,\n \"iibengali\", 0x0988,\n \"iicyrillic\", 0x0438,\n \"iideva\", 0x0908,\n \"iigujarati\", 0x0a88,\n \"iigurmukhi\", 0x0a08,\n \"iimatragurmukhi\", 0x0a40,\n \"iinvertedbreve\", 0x020b,\n \"iishortcyrillic\", 0x0439,\n \"iivowelsignbengali\", 0x09c0,\n \"iivowelsigndeva\", 0x0940,\n \"iivowelsigngujarati\", 0x0ac0,\n \"ij\", 0x0133,\n \"ikatakana\", 0x30a4,\n \"ikatakanahalfwidth\", 0xff72,\n \"ikorean\", 0x3163,\n \"ilde\", 0x02dc,\n \"iluyhebrew\", 0x05ac,\n \"imacron\", 0x012b,\n \"imacroncyrillic\", 0x04e3,\n \"imageorapproximatelyequal\", 0x2253,\n \"imatragurmukhi\", 0x0a3f,\n \"imonospace\", 0xff49,\n \"increment\", 0x2206,\n \"infinity\", 0x221e,\n \"iniarmenian\", 0x056b,\n \"integral\", 0x222b,\n \"integralbottom\", 0x2321,\n \"integralbt\", 0x2321,\n \"integralex\", 0xf8f5,\n \"integraltop\", 0x2320,\n \"integraltp\", 0x2320,\n \"intersection\", 0x2229,\n \"intisquare\", 0x3305,\n \"invbullet\", 0x25d8,\n \"invcircle\", 0x25d9,\n \"invsmileface\", 0x263b,\n \"iocyrillic\", 0x0451,\n \"iogonek\", 0x012f,\n \"iota\", 0x03b9,\n \"iotadieresis\", 0x03ca,\n \"iotadieresistonos\", 0x0390,\n \"iotalatin\", 0x0269,\n \"iotatonos\", 0x03af,\n \"iparen\", 0x24a4,\n \"irigurmukhi\", 0x0a72,\n \"ismallhiragana\", 0x3043,\n \"ismallkatakana\", 0x30a3,\n \"ismallkatakanahalfwidth\", 0xff68,\n \"issharbengali\", 0x09fa,\n \"istroke\", 0x0268,\n \"isuperior\", 0xf6ed,\n \"iterationhiragana\", 0x309d,\n \"iterationkatakana\", 0x30fd,\n \"itilde\", 0x0129,\n \"itildebelow\", 0x1e2d,\n \"iubopomofo\", 0x3129,\n \"iucyrillic\", 0x044e,\n \"ivowelsignbengali\", 0x09bf,\n \"ivowelsigndeva\", 0x093f,\n \"ivowelsigngujarati\", 0x0abf,\n \"izhitsacyrillic\", 0x0475,\n \"izhitsadblgravecyrillic\", 0x0477,\n \"j\", 0x006a,\n \"jaarmenian\", 0x0571,\n \"jabengali\", 0x099c,\n \"jadeva\", 0x091c,\n \"jagujarati\", 0x0a9c,\n \"jagurmukhi\", 0x0a1c,\n \"jbopomofo\", 0x3110,\n \"jcaron\", 0x01f0,\n \"jcircle\", 0x24d9,\n \"jcircumflex\", 0x0135,\n \"jcrossedtail\", 0x029d,\n \"jdotlessstroke\", 0x025f,\n \"jecyrillic\", 0x0458,\n \"jeemarabic\", 0x062c,\n \"jeemfinalarabic\", 0xfe9e,\n \"jeeminitialarabic\", 0xfe9f,\n \"jeemmedialarabic\", 0xfea0,\n \"jeharabic\", 0x0698,\n \"jehfinalarabic\", 0xfb8b,\n \"jhabengali\", 0x099d,\n \"jhadeva\", 0x091d,\n \"jhagujarati\", 0x0a9d,\n \"jhagurmukhi\", 0x0a1d,\n \"jheharmenian\", 0x057b,\n \"jis\", 0x3004,\n \"jmonospace\", 0xff4a,\n \"jparen\", 0x24a5,\n \"jsuperior\", 0x02b2,\n \"k\", 0x006b,\n \"kabashkircyrillic\", 0x04a1,\n \"kabengali\", 0x0995,\n \"kacute\", 0x1e31,\n \"kacyrillic\", 0x043a,\n \"kadescendercyrillic\", 0x049b,\n \"kadeva\", 0x0915,\n \"kaf\", 0x05db,\n \"kafarabic\", 0x0643,\n \"kafdagesh\", 0xfb3b,\n \"kafdageshhebrew\", 0xfb3b,\n \"kaffinalarabic\", 0xfeda,\n \"kafhebrew\", 0x05db,\n \"kafinitialarabic\", 0xfedb,\n \"kafmedialarabic\", 0xfedc,\n \"kafrafehebrew\", 0xfb4d,\n \"kagujarati\", 0x0a95,\n \"kagurmukhi\", 0x0a15,\n \"kahiragana\", 0x304b,\n \"kahookcyrillic\", 0x04c4,\n \"kakatakana\", 0x30ab,\n \"kakatakanahalfwidth\", 0xff76,\n \"kappa\", 0x03ba,\n \"kappasymbolgreek\", 0x03f0,\n \"kapyeounmieumkorean\", 0x3171,\n \"kapyeounphieuphkorean\", 0x3184,\n \"kapyeounpieupkorean\", 0x3178,\n \"kapyeounssangpieupkorean\", 0x3179,\n \"karoriisquare\", 0x330d,\n \"kashidaautoarabic\", 0x0640,\n \"kashidaautonosidebearingarabic\", 0x0640,\n \"kasmallkatakana\", 0x30f5,\n \"kasquare\", 0x3384,\n \"kasraarabic\", 0x0650,\n \"kasratanarabic\", 0x064d,\n \"kastrokecyrillic\", 0x049f,\n \"katahiraprolongmarkhalfwidth\", 0xff70,\n \"kaverticalstrokecyrillic\", 0x049d,\n \"kbopomofo\", 0x310e,\n \"kcalsquare\", 0x3389,\n \"kcaron\", 0x01e9,\n \"kcedilla\", 0x0137,\n \"kcircle\", 0x24da,\n \"kcommaaccent\", 0x0137,\n \"kdotbelow\", 0x1e33,\n \"keharmenian\", 0x0584,\n \"kehiragana\", 0x3051,\n \"kekatakana\", 0x30b1,\n \"kekatakanahalfwidth\", 0xff79,\n \"kenarmenian\", 0x056f,\n \"kesmallkatakana\", 0x30f6,\n \"kgreenlandic\", 0x0138,\n \"khabengali\", 0x0996,\n \"khacyrillic\", 0x0445,\n \"khadeva\", 0x0916,\n \"khagujarati\", 0x0a96,\n \"khagurmukhi\", 0x0a16,\n \"khaharabic\", 0x062e,\n \"khahfinalarabic\", 0xfea6,\n \"khahinitialarabic\", 0xfea7,\n \"khahmedialarabic\", 0xfea8,\n \"kheicoptic\", 0x03e7,\n \"khhadeva\", 0x0959,\n \"khhagurmukhi\", 0x0a59,\n \"khieukhacirclekorean\", 0x3278,\n \"khieukhaparenkorean\", 0x3218,\n \"khieukhcirclekorean\", 0x326a,\n \"khieukhkorean\", 0x314b,\n \"khieukhparenkorean\", 0x320a,\n \"khokhaithai\", 0x0e02,\n \"khokhonthai\", 0x0e05,\n \"khokhuatthai\", 0x0e03,\n \"khokhwaithai\", 0x0e04,\n \"khomutthai\", 0x0e5b,\n \"khook\", 0x0199,\n \"khorakhangthai\", 0x0e06,\n \"khzsquare\", 0x3391,\n \"kihiragana\", 0x304d,\n \"kikatakana\", 0x30ad,\n \"kikatakanahalfwidth\", 0xff77,\n \"kiroguramusquare\", 0x3315,\n \"kiromeetorusquare\", 0x3316,\n \"kirosquare\", 0x3314,\n \"kiyeokacirclekorean\", 0x326e,\n \"kiyeokaparenkorean\", 0x320e,\n \"kiyeokcirclekorean\", 0x3260,\n \"kiyeokkorean\", 0x3131,\n \"kiyeokparenkorean\", 0x3200,\n \"kiyeoksioskorean\", 0x3133,\n \"kjecyrillic\", 0x045c,\n \"klinebelow\", 0x1e35,\n \"klsquare\", 0x3398,\n \"kmcubedsquare\", 0x33a6,\n \"kmonospace\", 0xff4b,\n \"kmsquaredsquare\", 0x33a2,\n \"kohiragana\", 0x3053,\n \"kohmsquare\", 0x33c0,\n \"kokaithai\", 0x0e01,\n \"kokatakana\", 0x30b3,\n \"kokatakanahalfwidth\", 0xff7a,\n \"kooposquare\", 0x331e,\n \"koppacyrillic\", 0x0481,\n \"koreanstandardsymbol\", 0x327f,\n \"koroniscmb\", 0x0343,\n \"kparen\", 0x24a6,\n \"kpasquare\", 0x33aa,\n \"ksicyrillic\", 0x046f,\n \"ktsquare\", 0x33cf,\n \"kturned\", 0x029e,\n \"kuhiragana\", 0x304f,\n \"kukatakana\", 0x30af,\n \"kukatakanahalfwidth\", 0xff78,\n \"kvsquare\", 0x33b8,\n \"kwsquare\", 0x33be,\n \"l\", 0x006c,\n \"labengali\", 0x09b2,\n \"lacute\", 0x013a,\n \"ladeva\", 0x0932,\n \"lagujarati\", 0x0ab2,\n \"lagurmukhi\", 0x0a32,\n \"lakkhangyaothai\", 0x0e45,\n \"lamaleffinalarabic\", 0xfefc,\n \"lamalefhamzaabovefinalarabic\", 0xfef8,\n \"lamalefhamzaaboveisolatedarabic\", 0xfef7,\n \"lamalefhamzabelowfinalarabic\", 0xfefa,\n \"lamalefhamzabelowisolatedarabic\", 0xfef9,\n \"lamalefisolatedarabic\", 0xfefb,\n \"lamalefmaddaabovefinalarabic\", 0xfef6,\n \"lamalefmaddaaboveisolatedarabic\", 0xfef5,\n \"lamarabic\", 0x0644,\n \"lambda\", 0x03bb,\n \"lambdastroke\", 0x019b,\n \"lamed\", 0x05dc,\n \"lameddagesh\", 0xfb3c,\n \"lameddageshhebrew\", 0xfb3c,\n \"lamedhebrew\", 0x05dc,\n \"lamfinalarabic\", 0xfede,\n \"lamhahinitialarabic\", 0xfcca,\n \"laminitialarabic\", 0xfedf,\n \"lamjeeminitialarabic\", 0xfcc9,\n \"lamkhahinitialarabic\", 0xfccb,\n \"lamlamhehisolatedarabic\", 0xfdf2,\n \"lammedialarabic\", 0xfee0,\n \"lammeemhahinitialarabic\", 0xfd88,\n \"lammeeminitialarabic\", 0xfccc,\n \"largecircle\", 0x25ef,\n \"lbar\", 0x019a,\n \"lbelt\", 0x026c,\n \"lbopomofo\", 0x310c,\n \"lcaron\", 0x013e,\n \"lcedilla\", 0x013c,\n \"lcircle\", 0x24db,\n \"lcircumflexbelow\", 0x1e3d,\n \"lcommaaccent\", 0x013c,\n \"ldot\", 0x0140,\n \"ldotaccent\", 0x0140,\n \"ldotbelow\", 0x1e37,\n \"ldotbelowmacron\", 0x1e39,\n \"leftangleabovecmb\", 0x031a,\n \"lefttackbelowcmb\", 0x0318,\n \"less\", 0x003c,\n \"lessequal\", 0x2264,\n \"lessequalorgreater\", 0x22da,\n \"lessmonospace\", 0xff1c,\n \"lessorequivalent\", 0x2272,\n \"lessorgreater\", 0x2276,\n \"lessoverequal\", 0x2266,\n \"lesssmall\", 0xfe64,\n \"lezh\", 0x026e,\n \"lfblock\", 0x258c,\n \"lhookretroflex\", 0x026d,\n \"lira\", 0x20a4,\n \"liwnarmenian\", 0x056c,\n \"lj\", 0x01c9,\n \"ljecyrillic\", 0x0459,\n \"ll\", 0xf6c0,\n \"lladeva\", 0x0933,\n \"llagujarati\", 0x0ab3,\n \"llinebelow\", 0x1e3b,\n \"llladeva\", 0x0934,\n \"llvocalicbengali\", 0x09e1,\n \"llvocalicdeva\", 0x0961,\n \"llvocalicvowelsignbengali\", 0x09e3,\n \"llvocalicvowelsigndeva\", 0x0963,\n \"lmiddletilde\", 0x026b,\n \"lmonospace\", 0xff4c,\n \"lmsquare\", 0x33d0,\n \"lochulathai\", 0x0e2c,\n \"logicaland\", 0x2227,\n \"logicalnot\", 0x00ac,\n \"logicalnotreversed\", 0x2310,\n \"logicalor\", 0x2228,\n \"lolingthai\", 0x0e25,\n \"longs\", 0x017f,\n \"lowlinecenterline\", 0xfe4e,\n \"lowlinecmb\", 0x0332,\n \"lowlinedashed\", 0xfe4d,\n \"lozenge\", 0x25ca,\n \"lparen\", 0x24a7,\n \"lslash\", 0x0142,\n \"lsquare\", 0x2113,\n \"lsuperior\", 0xf6ee,\n \"ltshade\", 0x2591,\n \"luthai\", 0x0e26,\n \"lvocalicbengali\", 0x098c,\n \"lvocalicdeva\", 0x090c,\n \"lvocalicvowelsignbengali\", 0x09e2,\n \"lvocalicvowelsigndeva\", 0x0962,\n \"lxsquare\", 0x33d3,\n \"m\", 0x006d,\n \"mabengali\", 0x09ae,\n \"macron\", 0x00af,\n \"macronbelowcmb\", 0x0331,\n \"macroncmb\", 0x0304,\n \"macronlowmod\", 0x02cd,\n \"macronmonospace\", 0xffe3,\n \"macute\", 0x1e3f,\n \"madeva\", 0x092e,\n \"magujarati\", 0x0aae,\n \"magurmukhi\", 0x0a2e,\n \"mahapakhhebrew\", 0x05a4,\n \"mahapakhlefthebrew\", 0x05a4,\n \"mahiragana\", 0x307e,\n \"maichattawalowleftthai\", 0xf895,\n \"maichattawalowrightthai\", 0xf894,\n \"maichattawathai\", 0x0e4b,\n \"maichattawaupperleftthai\", 0xf893,\n \"maieklowleftthai\", 0xf88c,\n \"maieklowrightthai\", 0xf88b,\n \"maiekthai\", 0x0e48,\n \"maiekupperleftthai\", 0xf88a,\n \"maihanakatleftthai\", 0xf884,\n \"maihanakatthai\", 0x0e31,\n \"maitaikhuleftthai\", 0xf889,\n \"maitaikhuthai\", 0x0e47,\n \"maitholowleftthai\", 0xf88f,\n \"maitholowrightthai\", 0xf88e,\n \"maithothai\", 0x0e49,\n \"maithoupperleftthai\", 0xf88d,\n \"maitrilowleftthai\", 0xf892,\n \"maitrilowrightthai\", 0xf891,\n \"maitrithai\", 0x0e4a,\n \"maitriupperleftthai\", 0xf890,\n \"maiyamokthai\", 0x0e46,\n \"makatakana\", 0x30de,\n \"makatakanahalfwidth\", 0xff8f,\n \"male\", 0x2642,\n \"mansyonsquare\", 0x3347,\n \"maqafhebrew\", 0x05be,\n \"mars\", 0x2642,\n \"masoracirclehebrew\", 0x05af,\n \"masquare\", 0x3383,\n \"mbopomofo\", 0x3107,\n \"mbsquare\", 0x33d4,\n \"mcircle\", 0x24dc,\n \"mcubedsquare\", 0x33a5,\n \"mdotaccent\", 0x1e41,\n \"mdotbelow\", 0x1e43,\n \"meemarabic\", 0x0645,\n \"meemfinalarabic\", 0xfee2,\n \"meeminitialarabic\", 0xfee3,\n \"meemmedialarabic\", 0xfee4,\n \"meemmeeminitialarabic\", 0xfcd1,\n \"meemmeemisolatedarabic\", 0xfc48,\n \"meetorusquare\", 0x334d,\n \"mehiragana\", 0x3081,\n \"meizierasquare\", 0x337e,\n \"mekatakana\", 0x30e1,\n \"mekatakanahalfwidth\", 0xff92,\n \"mem\", 0x05de,\n \"memdagesh\", 0xfb3e,\n \"memdageshhebrew\", 0xfb3e,\n \"memhebrew\", 0x05de,\n \"menarmenian\", 0x0574,\n \"merkhahebrew\", 0x05a5,\n \"merkhakefulahebrew\", 0x05a6,\n \"merkhakefulalefthebrew\", 0x05a6,\n \"merkhalefthebrew\", 0x05a5,\n \"mhook\", 0x0271,\n \"mhzsquare\", 0x3392,\n \"middledotkatakanahalfwidth\", 0xff65,\n \"middot\", 0x00b7,\n \"mieumacirclekorean\", 0x3272,\n \"mieumaparenkorean\", 0x3212,\n \"mieumcirclekorean\", 0x3264,\n \"mieumkorean\", 0x3141,\n \"mieumpansioskorean\", 0x3170,\n \"mieumparenkorean\", 0x3204,\n \"mieumpieupkorean\", 0x316e,\n \"mieumsioskorean\", 0x316f,\n \"mihiragana\", 0x307f,\n \"mikatakana\", 0x30df,\n \"mikatakanahalfwidth\", 0xff90,\n \"minus\", 0x2212,\n \"minusbelowcmb\", 0x0320,\n \"minuscircle\", 0x2296,\n \"minusmod\", 0x02d7,\n \"minusplus\", 0x2213,\n \"minute\", 0x2032,\n \"miribaarusquare\", 0x334a,\n \"mirisquare\", 0x3349,\n \"mlonglegturned\", 0x0270,\n \"mlsquare\", 0x3396,\n \"mmcubedsquare\", 0x33a3,\n \"mmonospace\", 0xff4d,\n \"mmsquaredsquare\", 0x339f,\n \"mohiragana\", 0x3082,\n \"mohmsquare\", 0x33c1,\n \"mokatakana\", 0x30e2,\n \"mokatakanahalfwidth\", 0xff93,\n \"molsquare\", 0x33d6,\n \"momathai\", 0x0e21,\n \"moverssquare\", 0x33a7,\n \"moverssquaredsquare\", 0x33a8,\n \"mparen\", 0x24a8,\n \"mpasquare\", 0x33ab,\n \"mssquare\", 0x33b3,\n \"msuperior\", 0xf6ef,\n \"mturned\", 0x026f,\n \"mu\", 0x00b5,\n \"mu1\", 0x00b5,\n \"muasquare\", 0x3382,\n \"muchgreater\", 0x226b,\n \"muchless\", 0x226a,\n \"mufsquare\", 0x338c,\n \"mugreek\", 0x03bc,\n \"mugsquare\", 0x338d,\n \"muhiragana\", 0x3080,\n \"mukatakana\", 0x30e0,\n \"mukatakanahalfwidth\", 0xff91,\n \"mulsquare\", 0x3395,\n \"multiply\", 0x00d7,\n \"mumsquare\", 0x339b,\n \"munahhebrew\", 0x05a3,\n \"munahlefthebrew\", 0x05a3,\n \"musicalnote\", 0x266a,\n \"musicalnotedbl\", 0x266b,\n \"musicflatsign\", 0x266d,\n \"musicsharpsign\", 0x266f,\n \"mussquare\", 0x33b2,\n \"muvsquare\", 0x33b6,\n \"muwsquare\", 0x33bc,\n \"mvmegasquare\", 0x33b9,\n \"mvsquare\", 0x33b7,\n \"mwmegasquare\", 0x33bf,\n \"mwsquare\", 0x33bd,\n \"n\", 0x006e,\n \"nabengali\", 0x09a8,\n \"nabla\", 0x2207,\n \"nacute\", 0x0144,\n \"nadeva\", 0x0928,\n \"nagujarati\", 0x0aa8,\n \"nagurmukhi\", 0x0a28,\n \"nahiragana\", 0x306a,\n \"nakatakana\", 0x30ca,\n \"nakatakanahalfwidth\", 0xff85,\n \"napostrophe\", 0x0149,\n \"nasquare\", 0x3381,\n \"nbopomofo\", 0x310b,\n \"nbspace\", 0x00a0,\n \"ncaron\", 0x0148,\n \"ncedilla\", 0x0146,\n \"ncircle\", 0x24dd,\n \"ncircumflexbelow\", 0x1e4b,\n \"ncommaaccent\", 0x0146,\n \"ndotaccent\", 0x1e45,\n \"ndotbelow\", 0x1e47,\n \"nehiragana\", 0x306d,\n \"nekatakana\", 0x30cd,\n \"nekatakanahalfwidth\", 0xff88,\n \"newsheqelsign\", 0x20aa,\n \"nfsquare\", 0x338b,\n \"ngabengali\", 0x0999,\n \"ngadeva\", 0x0919,\n \"ngagujarati\", 0x0a99,\n \"ngagurmukhi\", 0x0a19,\n \"ngonguthai\", 0x0e07,\n \"nhiragana\", 0x3093,\n \"nhookleft\", 0x0272,\n \"nhookretroflex\", 0x0273,\n \"nieunacirclekorean\", 0x326f,\n \"nieunaparenkorean\", 0x320f,\n \"nieuncieuckorean\", 0x3135,\n \"nieuncirclekorean\", 0x3261,\n \"nieunhieuhkorean\", 0x3136,\n \"nieunkorean\", 0x3134,\n \"nieunpansioskorean\", 0x3168,\n \"nieunparenkorean\", 0x3201,\n \"nieunsioskorean\", 0x3167,\n \"nieuntikeutkorean\", 0x3166,\n \"nihiragana\", 0x306b,\n \"nikatakana\", 0x30cb,\n \"nikatakanahalfwidth\", 0xff86,\n \"nikhahitleftthai\", 0xf899,\n \"nikhahitthai\", 0x0e4d,\n \"nine\", 0x0039,\n \"ninearabic\", 0x0669,\n \"ninebengali\", 0x09ef,\n \"ninecircle\", 0x2468,\n \"ninecircleinversesansserif\", 0x2792,\n \"ninedeva\", 0x096f,\n \"ninegujarati\", 0x0aef,\n \"ninegurmukhi\", 0x0a6f,\n \"ninehackarabic\", 0x0669,\n \"ninehangzhou\", 0x3029,\n \"nineideographicparen\", 0x3228,\n \"nineinferior\", 0x2089,\n \"ninemonospace\", 0xff19,\n \"nineoldstyle\", 0xf739,\n \"nineparen\", 0x247c,\n \"nineperiod\", 0x2490,\n \"ninepersian\", 0x06f9,\n \"nineroman\", 0x2178,\n \"ninesuperior\", 0x2079,\n \"nineteencircle\", 0x2472,\n \"nineteenparen\", 0x2486,\n \"nineteenperiod\", 0x249a,\n \"ninethai\", 0x0e59,\n \"nj\", 0x01cc,\n \"njecyrillic\", 0x045a,\n \"nkatakana\", 0x30f3,\n \"nkatakanahalfwidth\", 0xff9d,\n \"nlegrightlong\", 0x019e,\n \"nlinebelow\", 0x1e49,\n \"nmonospace\", 0xff4e,\n \"nmsquare\", 0x339a,\n \"nnabengali\", 0x09a3,\n \"nnadeva\", 0x0923,\n \"nnagujarati\", 0x0aa3,\n \"nnagurmukhi\", 0x0a23,\n \"nnnadeva\", 0x0929,\n \"nohiragana\", 0x306e,\n \"nokatakana\", 0x30ce,\n \"nokatakanahalfwidth\", 0xff89,\n \"nonbreakingspace\", 0x00a0,\n \"nonenthai\", 0x0e13,\n \"nonuthai\", 0x0e19,\n \"noonarabic\", 0x0646,\n \"noonfinalarabic\", 0xfee6,\n \"noonghunnaarabic\", 0x06ba,\n \"noonghunnafinalarabic\", 0xfb9f,\n \"nooninitialarabic\", 0xfee7,\n \"noonjeeminitialarabic\", 0xfcd2,\n \"noonjeemisolatedarabic\", 0xfc4b,\n \"noonmedialarabic\", 0xfee8,\n \"noonmeeminitialarabic\", 0xfcd5,\n \"noonmeemisolatedarabic\", 0xfc4e,\n \"noonnoonfinalarabic\", 0xfc8d,\n \"notcontains\", 0x220c,\n \"notelement\", 0x2209,\n \"notelementof\", 0x2209,\n \"notequal\", 0x2260,\n \"notgreater\", 0x226f,\n \"notgreaternorequal\", 0x2271,\n \"notgreaternorless\", 0x2279,\n \"notidentical\", 0x2262,\n \"notless\", 0x226e,\n \"notlessnorequal\", 0x2270,\n \"notparallel\", 0x2226,\n \"notprecedes\", 0x2280,\n \"notsubset\", 0x2284,\n \"notsucceeds\", 0x2281,\n \"notsuperset\", 0x2285,\n \"nowarmenian\", 0x0576,\n \"nparen\", 0x24a9,\n \"nssquare\", 0x33b1,\n \"nsuperior\", 0x207f,\n \"ntilde\", 0x00f1,\n \"nu\", 0x03bd,\n \"nuhiragana\", 0x306c,\n \"nukatakana\", 0x30cc,\n \"nukatakanahalfwidth\", 0xff87,\n \"nuktabengali\", 0x09bc,\n \"nuktadeva\", 0x093c,\n \"nuktagujarati\", 0x0abc,\n \"nuktagurmukhi\", 0x0a3c,\n \"numbersign\", 0x0023,\n \"numbersignmonospace\", 0xff03,\n \"numbersignsmall\", 0xfe5f,\n \"numeralsigngreek\", 0x0374,\n \"numeralsignlowergreek\", 0x0375,\n \"numero\", 0x2116,\n \"nun\", 0x05e0,\n \"nundagesh\", 0xfb40,\n \"nundageshhebrew\", 0xfb40,\n \"nunhebrew\", 0x05e0,\n \"nvsquare\", 0x33b5,\n \"nwsquare\", 0x33bb,\n \"nyabengali\", 0x099e,\n \"nyadeva\", 0x091e,\n \"nyagujarati\", 0x0a9e,\n \"nyagurmukhi\", 0x0a1e,\n \"o\", 0x006f,\n \"oacute\", 0x00f3,\n \"oangthai\", 0x0e2d,\n \"obarred\", 0x0275,\n \"obarredcyrillic\", 0x04e9,\n \"obarreddieresiscyrillic\", 0x04eb,\n \"obengali\", 0x0993,\n \"obopomofo\", 0x311b,\n \"obreve\", 0x014f,\n \"ocandradeva\", 0x0911,\n \"ocandragujarati\", 0x0a91,\n \"ocandravowelsigndeva\", 0x0949,\n \"ocandravowelsigngujarati\", 0x0ac9,\n \"ocaron\", 0x01d2,\n \"ocircle\", 0x24de,\n \"ocircumflex\", 0x00f4,\n \"ocircumflexacute\", 0x1ed1,\n \"ocircumflexdotbelow\", 0x1ed9,\n \"ocircumflexgrave\", 0x1ed3,\n \"ocircumflexhookabove\", 0x1ed5,\n \"ocircumflextilde\", 0x1ed7,\n \"ocyrillic\", 0x043e,\n \"odblacute\", 0x0151,\n \"odblgrave\", 0x020d,\n \"odeva\", 0x0913,\n \"odieresis\", 0x00f6,\n \"odieresiscyrillic\", 0x04e7,\n \"odotbelow\", 0x1ecd,\n \"oe\", 0x0153,\n \"oekorean\", 0x315a,\n \"ogonek\", 0x02db,\n \"ogonekcmb\", 0x0328,\n \"ograve\", 0x00f2,\n \"ogujarati\", 0x0a93,\n \"oharmenian\", 0x0585,\n \"ohiragana\", 0x304a,\n \"ohookabove\", 0x1ecf,\n \"ohorn\", 0x01a1,\n \"ohornacute\", 0x1edb,\n \"ohorndotbelow\", 0x1ee3,\n \"ohorngrave\", 0x1edd,\n \"ohornhookabove\", 0x1edf,\n \"ohorntilde\", 0x1ee1,\n \"ohungarumlaut\", 0x0151,\n \"oi\", 0x01a3,\n \"oinvertedbreve\", 0x020f,\n \"okatakana\", 0x30aa,\n \"okatakanahalfwidth\", 0xff75,\n \"okorean\", 0x3157,\n \"olehebrew\", 0x05ab,\n \"omacron\", 0x014d,\n \"omacronacute\", 0x1e53,\n \"omacrongrave\", 0x1e51,\n \"omdeva\", 0x0950,\n \"omega\", 0x03c9,\n \"omega1\", 0x03d6,\n \"omegacyrillic\", 0x0461,\n \"omegalatinclosed\", 0x0277,\n \"omegaroundcyrillic\", 0x047b,\n \"omegatitlocyrillic\", 0x047d,\n \"omegatonos\", 0x03ce,\n \"omgujarati\", 0x0ad0,\n \"omicron\", 0x03bf,\n \"omicrontonos\", 0x03cc,\n \"omonospace\", 0xff4f,\n \"one\", 0x0031,\n \"onearabic\", 0x0661,\n \"onebengali\", 0x09e7,\n \"onecircle\", 0x2460,\n \"onecircleinversesansserif\", 0x278a,\n \"onedeva\", 0x0967,\n \"onedotenleader\", 0x2024,\n \"oneeighth\", 0x215b,\n \"onefitted\", 0xf6dc,\n \"onegujarati\", 0x0ae7,\n \"onegurmukhi\", 0x0a67,\n \"onehackarabic\", 0x0661,\n \"onehalf\", 0x00bd,\n \"onehangzhou\", 0x3021,\n \"oneideographicparen\", 0x3220,\n \"oneinferior\", 0x2081,\n \"onemonospace\", 0xff11,\n \"onenumeratorbengali\", 0x09f4,\n \"oneoldstyle\", 0xf731,\n \"oneparen\", 0x2474,\n \"oneperiod\", 0x2488,\n \"onepersian\", 0x06f1,\n \"onequarter\", 0x00bc,\n \"oneroman\", 0x2170,\n \"onesuperior\", 0x00b9,\n \"onethai\", 0x0e51,\n \"onethird\", 0x2153,\n \"oogonek\", 0x01eb,\n \"oogonekmacron\", 0x01ed,\n \"oogurmukhi\", 0x0a13,\n \"oomatragurmukhi\", 0x0a4b,\n \"oopen\", 0x0254,\n \"oparen\", 0x24aa,\n \"openbullet\", 0x25e6,\n \"option\", 0x2325,\n \"ordfeminine\", 0x00aa,\n \"ordmasculine\", 0x00ba,\n \"orthogonal\", 0x221f,\n \"oshortdeva\", 0x0912,\n \"oshortvowelsigndeva\", 0x094a,\n \"oslash\", 0x00f8,\n \"oslashacute\", 0x01ff,\n \"osmallhiragana\", 0x3049,\n \"osmallkatakana\", 0x30a9,\n \"osmallkatakanahalfwidth\", 0xff6b,\n \"ostrokeacute\", 0x01ff,\n \"osuperior\", 0xf6f0,\n \"otcyrillic\", 0x047f,\n \"otilde\", 0x00f5,\n \"otildeacute\", 0x1e4d,\n \"otildedieresis\", 0x1e4f,\n \"oubopomofo\", 0x3121,\n \"overline\", 0x203e,\n \"overlinecenterline\", 0xfe4a,\n \"overlinecmb\", 0x0305,\n \"overlinedashed\", 0xfe49,\n \"overlinedblwavy\", 0xfe4c,\n \"overlinewavy\", 0xfe4b,\n \"overscore\", 0x00af,\n \"ovowelsignbengali\", 0x09cb,\n \"ovowelsigndeva\", 0x094b,\n \"ovowelsigngujarati\", 0x0acb,\n \"p\", 0x0070,\n \"paampssquare\", 0x3380,\n \"paasentosquare\", 0x332b,\n \"pabengali\", 0x09aa,\n \"pacute\", 0x1e55,\n \"padeva\", 0x092a,\n \"pagedown\", 0x21df,\n \"pageup\", 0x21de,\n \"pagujarati\", 0x0aaa,\n \"pagurmukhi\", 0x0a2a,\n \"pahiragana\", 0x3071,\n \"paiyannoithai\", 0x0e2f,\n \"pakatakana\", 0x30d1,\n \"palatalizationcyrilliccmb\", 0x0484,\n \"palochkacyrillic\", 0x04c0,\n \"pansioskorean\", 0x317f,\n \"paragraph\", 0x00b6,\n \"parallel\", 0x2225,\n \"parenleft\", 0x0028,\n \"parenleftaltonearabic\", 0xfd3e,\n \"parenleftbt\", 0xf8ed,\n \"parenleftex\", 0xf8ec,\n \"parenleftinferior\", 0x208d,\n \"parenleftmonospace\", 0xff08,\n \"parenleftsmall\", 0xfe59,\n \"parenleftsuperior\", 0x207d,\n \"parenlefttp\", 0xf8eb,\n \"parenleftvertical\", 0xfe35,\n \"parenright\", 0x0029,\n \"parenrightaltonearabic\", 0xfd3f,\n \"parenrightbt\", 0xf8f8,\n \"parenrightex\", 0xf8f7,\n \"parenrightinferior\", 0x208e,\n \"parenrightmonospace\", 0xff09,\n \"parenrightsmall\", 0xfe5a,\n \"parenrightsuperior\", 0x207e,\n \"parenrighttp\", 0xf8f6,\n \"parenrightvertical\", 0xfe36,\n \"partialdiff\", 0x2202,\n \"paseqhebrew\", 0x05c0,\n \"pashtahebrew\", 0x0599,\n \"pasquare\", 0x33a9,\n \"patah\", 0x05b7,\n \"patah11\", 0x05b7,\n \"patah1d\", 0x05b7,\n \"patah2a\", 0x05b7,\n \"patahhebrew\", 0x05b7,\n \"patahnarrowhebrew\", 0x05b7,\n \"patahquarterhebrew\", 0x05b7,\n \"patahwidehebrew\", 0x05b7,\n \"pazerhebrew\", 0x05a1,\n \"pbopomofo\", 0x3106,\n \"pcircle\", 0x24df,\n \"pdotaccent\", 0x1e57,\n \"pe\", 0x05e4,\n \"pecyrillic\", 0x043f,\n \"pedagesh\", 0xfb44,\n \"pedageshhebrew\", 0xfb44,\n \"peezisquare\", 0x333b,\n \"pefinaldageshhebrew\", 0xfb43,\n \"peharabic\", 0x067e,\n \"peharmenian\", 0x057a,\n \"pehebrew\", 0x05e4,\n \"pehfinalarabic\", 0xfb57,\n \"pehinitialarabic\", 0xfb58,\n \"pehiragana\", 0x307a,\n \"pehmedialarabic\", 0xfb59,\n \"pekatakana\", 0x30da,\n \"pemiddlehookcyrillic\", 0x04a7,\n \"perafehebrew\", 0xfb4e,\n \"percent\", 0x0025,\n \"percentarabic\", 0x066a,\n \"percentmonospace\", 0xff05,\n \"percentsmall\", 0xfe6a,\n \"period\", 0x002e,\n \"periodarmenian\", 0x0589,\n \"periodcentered\", 0x00b7,\n \"periodhalfwidth\", 0xff61,\n \"periodinferior\", 0xf6e7,\n \"periodmonospace\", 0xff0e,\n \"periodsmall\", 0xfe52,\n \"periodsuperior\", 0xf6e8,\n \"perispomenigreekcmb\", 0x0342,\n \"perpendicular\", 0x22a5,\n \"perthousand\", 0x2030,\n \"peseta\", 0x20a7,\n \"pfsquare\", 0x338a,\n \"phabengali\", 0x09ab,\n \"phadeva\", 0x092b,\n \"phagujarati\", 0x0aab,\n \"phagurmukhi\", 0x0a2b,\n \"phi\", 0x03c6,\n \"phi1\", 0x03d5,\n \"phieuphacirclekorean\", 0x327a,\n \"phieuphaparenkorean\", 0x321a,\n \"phieuphcirclekorean\", 0x326c,\n \"phieuphkorean\", 0x314d,\n \"phieuphparenkorean\", 0x320c,\n \"philatin\", 0x0278,\n \"phinthuthai\", 0x0e3a,\n \"phisymbolgreek\", 0x03d5,\n \"phook\", 0x01a5,\n \"phophanthai\", 0x0e1e,\n \"phophungthai\", 0x0e1c,\n \"phosamphaothai\", 0x0e20,\n \"pi\", 0x03c0,\n \"pieupacirclekorean\", 0x3273,\n \"pieupaparenkorean\", 0x3213,\n \"pieupcieuckorean\", 0x3176,\n \"pieupcirclekorean\", 0x3265,\n \"pieupkiyeokkorean\", 0x3172,\n \"pieupkorean\", 0x3142,\n \"pieupparenkorean\", 0x3205,\n \"pieupsioskiyeokkorean\", 0x3174,\n \"pieupsioskorean\", 0x3144,\n \"pieupsiostikeutkorean\", 0x3175,\n \"pieupthieuthkorean\", 0x3177,\n \"pieuptikeutkorean\", 0x3173,\n \"pihiragana\", 0x3074,\n \"pikatakana\", 0x30d4,\n \"pisymbolgreek\", 0x03d6,\n \"piwrarmenian\", 0x0583,\n \"plus\", 0x002b,\n \"plusbelowcmb\", 0x031f,\n \"pluscircle\", 0x2295,\n \"plusminus\", 0x00b1,\n \"plusmod\", 0x02d6,\n \"plusmonospace\", 0xff0b,\n \"plussmall\", 0xfe62,\n \"plussuperior\", 0x207a,\n \"pmonospace\", 0xff50,\n \"pmsquare\", 0x33d8,\n \"pohiragana\", 0x307d,\n \"pointingindexdownwhite\", 0x261f,\n \"pointingindexleftwhite\", 0x261c,\n \"pointingindexrightwhite\", 0x261e,\n \"pointingindexupwhite\", 0x261d,\n \"pokatakana\", 0x30dd,\n \"poplathai\", 0x0e1b,\n \"postalmark\", 0x3012,\n \"postalmarkface\", 0x3020,\n \"pparen\", 0x24ab,\n \"precedes\", 0x227a,\n \"prescription\", 0x211e,\n \"primemod\", 0x02b9,\n \"primereversed\", 0x2035,\n \"product\", 0x220f,\n \"projective\", 0x2305,\n \"prolongedkana\", 0x30fc,\n \"propellor\", 0x2318,\n \"propersubset\", 0x2282,\n \"propersuperset\", 0x2283,\n \"proportion\", 0x2237,\n \"proportional\", 0x221d,\n \"psi\", 0x03c8,\n \"psicyrillic\", 0x0471,\n \"psilipneumatacyrilliccmb\", 0x0486,\n \"pssquare\", 0x33b0,\n \"puhiragana\", 0x3077,\n \"pukatakana\", 0x30d7,\n \"pvsquare\", 0x33b4,\n \"pwsquare\", 0x33ba,\n \"q\", 0x0071,\n \"qadeva\", 0x0958,\n \"qadmahebrew\", 0x05a8,\n \"qafarabic\", 0x0642,\n \"qaffinalarabic\", 0xfed6,\n \"qafinitialarabic\", 0xfed7,\n \"qafmedialarabic\", 0xfed8,\n \"qamats\", 0x05b8,\n \"qamats10\", 0x05b8,\n \"qamats1a\", 0x05b8,\n \"qamats1c\", 0x05b8,\n \"qamats27\", 0x05b8,\n \"qamats29\", 0x05b8,\n \"qamats33\", 0x05b8,\n \"qamatsde\", 0x05b8,\n \"qamatshebrew\", 0x05b8,\n \"qamatsnarrowhebrew\", 0x05b8,\n \"qamatsqatanhebrew\", 0x05b8,\n \"qamatsqatannarrowhebrew\", 0x05b8,\n \"qamatsqatanquarterhebrew\", 0x05b8,\n \"qamatsqatanwidehebrew\", 0x05b8,\n \"qamatsquarterhebrew\", 0x05b8,\n \"qamatswidehebrew\", 0x05b8,\n \"qarneyparahebrew\", 0x059f,\n \"qbopomofo\", 0x3111,\n \"qcircle\", 0x24e0,\n \"qhook\", 0x02a0,\n \"qmonospace\", 0xff51,\n \"qof\", 0x05e7,\n \"qofdagesh\", 0xfb47,\n \"qofdageshhebrew\", 0xfb47,\n \"qofhebrew\", 0x05e7,\n \"qparen\", 0x24ac,\n \"quarternote\", 0x2669,\n \"qubuts\", 0x05bb,\n \"qubuts18\", 0x05bb,\n \"qubuts25\", 0x05bb,\n \"qubuts31\", 0x05bb,\n \"qubutshebrew\", 0x05bb,\n \"qubutsnarrowhebrew\", 0x05bb,\n \"qubutsquarterhebrew\", 0x05bb,\n \"qubutswidehebrew\", 0x05bb,\n \"question\", 0x003f,\n \"questionarabic\", 0x061f,\n \"questionarmenian\", 0x055e,\n \"questiondown\", 0x00bf,\n \"questiondownsmall\", 0xf7bf,\n \"questiongreek\", 0x037e,\n \"questionmonospace\", 0xff1f,\n \"questionsmall\", 0xf73f,\n \"quotedbl\", 0x0022,\n \"quotedblbase\", 0x201e,\n \"quotedblleft\", 0x201c,\n \"quotedblmonospace\", 0xff02,\n \"quotedblprime\", 0x301e,\n \"quotedblprimereversed\", 0x301d,\n \"quotedblright\", 0x201d,\n \"quoteleft\", 0x2018,\n \"quoteleftreversed\", 0x201b,\n \"quotereversed\", 0x201b,\n \"quoteright\", 0x2019,\n \"quoterightn\", 0x0149,\n \"quotesinglbase\", 0x201a,\n \"quotesingle\", 0x0027,\n \"quotesinglemonospace\", 0xff07,\n \"r\", 0x0072,\n \"raarmenian\", 0x057c,\n \"rabengali\", 0x09b0,\n \"racute\", 0x0155,\n \"radeva\", 0x0930,\n \"radical\", 0x221a,\n \"radicalex\", 0xf8e5,\n \"radoverssquare\", 0x33ae,\n \"radoverssquaredsquare\", 0x33af,\n \"radsquare\", 0x33ad,\n \"rafe\", 0x05bf,\n \"rafehebrew\", 0x05bf,\n \"ragujarati\", 0x0ab0,\n \"ragurmukhi\", 0x0a30,\n \"rahiragana\", 0x3089,\n \"rakatakana\", 0x30e9,\n \"rakatakanahalfwidth\", 0xff97,\n \"ralowerdiagonalbengali\", 0x09f1,\n \"ramiddlediagonalbengali\", 0x09f0,\n \"ramshorn\", 0x0264,\n \"ratio\", 0x2236,\n \"rbopomofo\", 0x3116,\n \"rcaron\", 0x0159,\n \"rcedilla\", 0x0157,\n \"rcircle\", 0x24e1,\n \"rcommaaccent\", 0x0157,\n \"rdblgrave\", 0x0211,\n \"rdotaccent\", 0x1e59,\n \"rdotbelow\", 0x1e5b,\n \"rdotbelowmacron\", 0x1e5d,\n \"referencemark\", 0x203b,\n \"reflexsubset\", 0x2286,\n \"reflexsuperset\", 0x2287,\n \"registered\", 0x00ae,\n \"registersans\", 0xf8e8,\n \"registerserif\", 0xf6da,\n \"reharabic\", 0x0631,\n \"reharmenian\", 0x0580,\n \"rehfinalarabic\", 0xfeae,\n \"rehiragana\", 0x308c,\n \"rekatakana\", 0x30ec,\n \"rekatakanahalfwidth\", 0xff9a,\n \"resh\", 0x05e8,\n \"reshdageshhebrew\", 0xfb48,\n \"reshhebrew\", 0x05e8,\n \"reversedtilde\", 0x223d,\n \"reviahebrew\", 0x0597,\n \"reviamugrashhebrew\", 0x0597,\n \"revlogicalnot\", 0x2310,\n \"rfishhook\", 0x027e,\n \"rfishhookreversed\", 0x027f,\n \"rhabengali\", 0x09dd,\n \"rhadeva\", 0x095d,\n \"rho\", 0x03c1,\n \"rhook\", 0x027d,\n \"rhookturned\", 0x027b,\n \"rhookturnedsuperior\", 0x02b5,\n \"rhosymbolgreek\", 0x03f1,\n \"rhotichookmod\", 0x02de,\n \"rieulacirclekorean\", 0x3271,\n \"rieulaparenkorean\", 0x3211,\n \"rieulcirclekorean\", 0x3263,\n \"rieulhieuhkorean\", 0x3140,\n \"rieulkiyeokkorean\", 0x313a,\n \"rieulkiyeoksioskorean\", 0x3169,\n \"rieulkorean\", 0x3139,\n \"rieulmieumkorean\", 0x313b,\n \"rieulpansioskorean\", 0x316c,\n \"rieulparenkorean\", 0x3203,\n \"rieulphieuphkorean\", 0x313f,\n \"rieulpieupkorean\", 0x313c,\n \"rieulpieupsioskorean\", 0x316b,\n \"rieulsioskorean\", 0x313d,\n \"rieulthieuthkorean\", 0x313e,\n \"rieultikeutkorean\", 0x316a,\n \"rieulyeorinhieuhkorean\", 0x316d,\n \"rightangle\", 0x221f,\n \"righttackbelowcmb\", 0x0319,\n \"righttriangle\", 0x22bf,\n \"rihiragana\", 0x308a,\n \"rikatakana\", 0x30ea,\n \"rikatakanahalfwidth\", 0xff98,\n \"ring\", 0x02da,\n \"ringbelowcmb\", 0x0325,\n \"ringcmb\", 0x030a,\n \"ringhalfleft\", 0x02bf,\n \"ringhalfleftarmenian\", 0x0559,\n \"ringhalfleftbelowcmb\", 0x031c,\n \"ringhalfleftcentered\", 0x02d3,\n \"ringhalfright\", 0x02be,\n \"ringhalfrightbelowcmb\", 0x0339,\n \"ringhalfrightcentered\", 0x02d2,\n \"rinvertedbreve\", 0x0213,\n \"rittorusquare\", 0x3351,\n \"rlinebelow\", 0x1e5f,\n \"rlongleg\", 0x027c,\n \"rlonglegturned\", 0x027a,\n \"rmonospace\", 0xff52,\n \"rohiragana\", 0x308d,\n \"rokatakana\", 0x30ed,\n \"rokatakanahalfwidth\", 0xff9b,\n \"roruathai\", 0x0e23,\n \"rparen\", 0x24ad,\n \"rrabengali\", 0x09dc,\n \"rradeva\", 0x0931,\n \"rragurmukhi\", 0x0a5c,\n \"rreharabic\", 0x0691,\n \"rrehfinalarabic\", 0xfb8d,\n \"rrvocalicbengali\", 0x09e0,\n \"rrvocalicdeva\", 0x0960,\n \"rrvocalicgujarati\", 0x0ae0,\n \"rrvocalicvowelsignbengali\", 0x09c4,\n \"rrvocalicvowelsigndeva\", 0x0944,\n \"rrvocalicvowelsigngujarati\", 0x0ac4,\n \"rsuperior\", 0xf6f1,\n \"rtblock\", 0x2590,\n \"rturned\", 0x0279,\n \"rturnedsuperior\", 0x02b4,\n \"ruhiragana\", 0x308b,\n \"rukatakana\", 0x30eb,\n \"rukatakanahalfwidth\", 0xff99,\n \"rupeemarkbengali\", 0x09f2,\n \"rupeesignbengali\", 0x09f3,\n \"rupiah\", 0xf6dd,\n \"ruthai\", 0x0e24,\n \"rvocalicbengali\", 0x098b,\n \"rvocalicdeva\", 0x090b,\n \"rvocalicgujarati\", 0x0a8b,\n \"rvocalicvowelsignbengali\", 0x09c3,\n \"rvocalicvowelsigndeva\", 0x0943,\n \"rvocalicvowelsigngujarati\", 0x0ac3,\n \"s\", 0x0073,\n \"sabengali\", 0x09b8,\n \"sacute\", 0x015b,\n \"sacutedotaccent\", 0x1e65,\n \"sadarabic\", 0x0635,\n \"sadeva\", 0x0938,\n \"sadfinalarabic\", 0xfeba,\n \"sadinitialarabic\", 0xfebb,\n \"sadmedialarabic\", 0xfebc,\n \"sagujarati\", 0x0ab8,\n \"sagurmukhi\", 0x0a38,\n \"sahiragana\", 0x3055,\n \"sakatakana\", 0x30b5,\n \"sakatakanahalfwidth\", 0xff7b,\n \"sallallahoualayhewasallamarabic\", 0xfdfa,\n \"samekh\", 0x05e1,\n \"samekhdagesh\", 0xfb41,\n \"samekhdageshhebrew\", 0xfb41,\n \"samekhhebrew\", 0x05e1,\n \"saraaathai\", 0x0e32,\n \"saraaethai\", 0x0e41,\n \"saraaimaimalaithai\", 0x0e44,\n \"saraaimaimuanthai\", 0x0e43,\n \"saraamthai\", 0x0e33,\n \"saraathai\", 0x0e30,\n \"saraethai\", 0x0e40,\n \"saraiileftthai\", 0xf886,\n \"saraiithai\", 0x0e35,\n \"saraileftthai\", 0xf885,\n \"saraithai\", 0x0e34,\n \"saraothai\", 0x0e42,\n \"saraueeleftthai\", 0xf888,\n \"saraueethai\", 0x0e37,\n \"saraueleftthai\", 0xf887,\n \"sarauethai\", 0x0e36,\n \"sarauthai\", 0x0e38,\n \"sarauuthai\", 0x0e39,\n \"sbopomofo\", 0x3119,\n \"scaron\", 0x0161,\n \"scarondotaccent\", 0x1e67,\n \"scedilla\", 0x015f,\n \"schwa\", 0x0259,\n \"schwacyrillic\", 0x04d9,\n \"schwadieresiscyrillic\", 0x04db,\n \"schwahook\", 0x025a,\n \"scircle\", 0x24e2,\n \"scircumflex\", 0x015d,\n \"scommaaccent\", 0x0219,\n \"sdotaccent\", 0x1e61,\n \"sdotbelow\", 0x1e63,\n \"sdotbelowdotaccent\", 0x1e69,\n \"seagullbelowcmb\", 0x033c,\n \"second\", 0x2033,\n \"secondtonechinese\", 0x02ca,\n \"section\", 0x00a7,\n \"seenarabic\", 0x0633,\n \"seenfinalarabic\", 0xfeb2,\n \"seeninitialarabic\", 0xfeb3,\n \"seenmedialarabic\", 0xfeb4,\n \"segol\", 0x05b6,\n \"segol13\", 0x05b6,\n \"segol1f\", 0x05b6,\n \"segol2c\", 0x05b6,\n \"segolhebrew\", 0x05b6,\n \"segolnarrowhebrew\", 0x05b6,\n \"segolquarterhebrew\", 0x05b6,\n \"segoltahebrew\", 0x0592,\n \"segolwidehebrew\", 0x05b6,\n \"seharmenian\", 0x057d,\n \"sehiragana\", 0x305b,\n \"sekatakana\", 0x30bb,\n \"sekatakanahalfwidth\", 0xff7e,\n \"semicolon\", 0x003b,\n \"semicolonarabic\", 0x061b,\n \"semicolonmonospace\", 0xff1b,\n \"semicolonsmall\", 0xfe54,\n \"semivoicedmarkkana\", 0x309c,\n \"semivoicedmarkkanahalfwidth\", 0xff9f,\n \"sentisquare\", 0x3322,\n \"sentosquare\", 0x3323,\n \"seven\", 0x0037,\n \"sevenarabic\", 0x0667,\n \"sevenbengali\", 0x09ed,\n \"sevencircle\", 0x2466,\n \"sevencircleinversesansserif\", 0x2790,\n \"sevendeva\", 0x096d,\n \"seveneighths\", 0x215e,\n \"sevengujarati\", 0x0aed,\n \"sevengurmukhi\", 0x0a6d,\n \"sevenhackarabic\", 0x0667,\n \"sevenhangzhou\", 0x3027,\n \"sevenideographicparen\", 0x3226,\n \"seveninferior\", 0x2087,\n \"sevenmonospace\", 0xff17,\n \"sevenoldstyle\", 0xf737,\n \"sevenparen\", 0x247a,\n \"sevenperiod\", 0x248e,\n \"sevenpersian\", 0x06f7,\n \"sevenroman\", 0x2176,\n \"sevensuperior\", 0x2077,\n \"seventeencircle\", 0x2470,\n \"seventeenparen\", 0x2484,\n \"seventeenperiod\", 0x2498,\n \"seventhai\", 0x0e57,\n \"sfthyphen\", 0x00ad,\n \"shaarmenian\", 0x0577,\n \"shabengali\", 0x09b6,\n \"shacyrillic\", 0x0448,\n \"shaddaarabic\", 0x0651,\n \"shaddadammaarabic\", 0xfc61,\n \"shaddadammatanarabic\", 0xfc5e,\n \"shaddafathaarabic\", 0xfc60,\n \"shaddakasraarabic\", 0xfc62,\n \"shaddakasratanarabic\", 0xfc5f,\n \"shade\", 0x2592,\n \"shadedark\", 0x2593,\n \"shadelight\", 0x2591,\n \"shademedium\", 0x2592,\n \"shadeva\", 0x0936,\n \"shagujarati\", 0x0ab6,\n \"shagurmukhi\", 0x0a36,\n \"shalshelethebrew\", 0x0593,\n \"shbopomofo\", 0x3115,\n \"shchacyrillic\", 0x0449,\n \"sheenarabic\", 0x0634,\n \"sheenfinalarabic\", 0xfeb6,\n \"sheeninitialarabic\", 0xfeb7,\n \"sheenmedialarabic\", 0xfeb8,\n \"sheicoptic\", 0x03e3,\n \"sheqel\", 0x20aa,\n \"sheqelhebrew\", 0x20aa,\n \"sheva\", 0x05b0,\n \"sheva115\", 0x05b0,\n \"sheva15\", 0x05b0,\n \"sheva22\", 0x05b0,\n \"sheva2e\", 0x05b0,\n \"shevahebrew\", 0x05b0,\n \"shevanarrowhebrew\", 0x05b0,\n \"shevaquarterhebrew\", 0x05b0,\n \"shevawidehebrew\", 0x05b0,\n \"shhacyrillic\", 0x04bb,\n \"shimacoptic\", 0x03ed,\n \"shin\", 0x05e9,\n \"shindagesh\", 0xfb49,\n \"shindageshhebrew\", 0xfb49,\n \"shindageshshindot\", 0xfb2c,\n \"shindageshshindothebrew\", 0xfb2c,\n \"shindageshsindot\", 0xfb2d,\n \"shindageshsindothebrew\", 0xfb2d,\n \"shindothebrew\", 0x05c1,\n \"shinhebrew\", 0x05e9,\n \"shinshindot\", 0xfb2a,\n \"shinshindothebrew\", 0xfb2a,\n \"shinsindot\", 0xfb2b,\n \"shinsindothebrew\", 0xfb2b,\n \"shook\", 0x0282,\n \"sigma\", 0x03c3,\n \"sigma1\", 0x03c2,\n \"sigmafinal\", 0x03c2,\n \"sigmalunatesymbolgreek\", 0x03f2,\n \"sihiragana\", 0x3057,\n \"sikatakana\", 0x30b7,\n \"sikatakanahalfwidth\", 0xff7c,\n \"siluqhebrew\", 0x05bd,\n \"siluqlefthebrew\", 0x05bd,\n \"similar\", 0x223c,\n \"sindothebrew\", 0x05c2,\n \"siosacirclekorean\", 0x3274,\n \"siosaparenkorean\", 0x3214,\n \"sioscieuckorean\", 0x317e,\n \"sioscirclekorean\", 0x3266,\n \"sioskiyeokkorean\", 0x317a,\n \"sioskorean\", 0x3145,\n \"siosnieunkorean\", 0x317b,\n \"siosparenkorean\", 0x3206,\n \"siospieupkorean\", 0x317d,\n \"siostikeutkorean\", 0x317c,\n \"six\", 0x0036,\n \"sixarabic\", 0x0666,\n \"sixbengali\", 0x09ec,\n \"sixcircle\", 0x2465,\n \"sixcircleinversesansserif\", 0x278f,\n \"sixdeva\", 0x096c,\n \"sixgujarati\", 0x0aec,\n \"sixgurmukhi\", 0x0a6c,\n \"sixhackarabic\", 0x0666,\n \"sixhangzhou\", 0x3026,\n \"sixideographicparen\", 0x3225,\n \"sixinferior\", 0x2086,\n \"sixmonospace\", 0xff16,\n \"sixoldstyle\", 0xf736,\n \"sixparen\", 0x2479,\n \"sixperiod\", 0x248d,\n \"sixpersian\", 0x06f6,\n \"sixroman\", 0x2175,\n \"sixsuperior\", 0x2076,\n \"sixteencircle\", 0x246f,\n \"sixteencurrencydenominatorbengali\", 0x09f9,\n \"sixteenparen\", 0x2483,\n \"sixteenperiod\", 0x2497,\n \"sixthai\", 0x0e56,\n \"slash\", 0x002f,\n \"slashmonospace\", 0xff0f,\n \"slong\", 0x017f,\n \"slongdotaccent\", 0x1e9b,\n \"smileface\", 0x263a,\n \"smonospace\", 0xff53,\n \"sofpasuqhebrew\", 0x05c3,\n \"softhyphen\", 0x00ad,\n \"softsigncyrillic\", 0x044c,\n \"sohiragana\", 0x305d,\n \"sokatakana\", 0x30bd,\n \"sokatakanahalfwidth\", 0xff7f,\n \"soliduslongoverlaycmb\", 0x0338,\n \"solidusshortoverlaycmb\", 0x0337,\n \"sorusithai\", 0x0e29,\n \"sosalathai\", 0x0e28,\n \"sosothai\", 0x0e0b,\n \"sosuathai\", 0x0e2a,\n \"space\", 0x0020,\n \"spacehackarabic\", 0x0020,\n \"spade\", 0x2660,\n \"spadesuitblack\", 0x2660,\n \"spadesuitwhite\", 0x2664,\n \"sparen\", 0x24ae,\n \"squarebelowcmb\", 0x033b,\n \"squarecc\", 0x33c4,\n \"squarecm\", 0x339d,\n \"squarediagonalcrosshatchfill\", 0x25a9,\n \"squarehorizontalfill\", 0x25a4,\n \"squarekg\", 0x338f,\n \"squarekm\", 0x339e,\n \"squarekmcapital\", 0x33ce,\n \"squareln\", 0x33d1,\n \"squarelog\", 0x33d2,\n \"squaremg\", 0x338e,\n \"squaremil\", 0x33d5,\n \"squaremm\", 0x339c,\n \"squaremsquared\", 0x33a1,\n \"squareorthogonalcrosshatchfill\", 0x25a6,\n \"squareupperlefttolowerrightfill\", 0x25a7,\n \"squareupperrighttolowerleftfill\", 0x25a8,\n \"squareverticalfill\", 0x25a5,\n \"squarewhitewithsmallblack\", 0x25a3,\n \"srsquare\", 0x33db,\n \"ssabengali\", 0x09b7,\n \"ssadeva\", 0x0937,\n \"ssagujarati\", 0x0ab7,\n \"ssangcieuckorean\", 0x3149,\n \"ssanghieuhkorean\", 0x3185,\n \"ssangieungkorean\", 0x3180,\n \"ssangkiyeokkorean\", 0x3132,\n \"ssangnieunkorean\", 0x3165,\n \"ssangpieupkorean\", 0x3143,\n \"ssangsioskorean\", 0x3146,\n \"ssangtikeutkorean\", 0x3138,\n \"ssuperior\", 0xf6f2,\n \"sterling\", 0x00a3,\n \"sterlingmonospace\", 0xffe1,\n \"strokelongoverlaycmb\", 0x0336,\n \"strokeshortoverlaycmb\", 0x0335,\n \"subset\", 0x2282,\n \"subsetnotequal\", 0x228a,\n \"subsetorequal\", 0x2286,\n \"succeeds\", 0x227b,\n \"suchthat\", 0x220b,\n \"suhiragana\", 0x3059,\n \"sukatakana\", 0x30b9,\n \"sukatakanahalfwidth\", 0xff7d,\n \"sukunarabic\", 0x0652,\n \"summation\", 0x2211,\n \"sun\", 0x263c,\n \"superset\", 0x2283,\n \"supersetnotequal\", 0x228b,\n \"supersetorequal\", 0x2287,\n \"svsquare\", 0x33dc,\n \"syouwaerasquare\", 0x337c,\n \"t\", 0x0074,\n \"tabengali\", 0x09a4,\n \"tackdown\", 0x22a4,\n \"tackleft\", 0x22a3,\n \"tadeva\", 0x0924,\n \"tagujarati\", 0x0aa4,\n \"tagurmukhi\", 0x0a24,\n \"taharabic\", 0x0637,\n \"tahfinalarabic\", 0xfec2,\n \"tahinitialarabic\", 0xfec3,\n \"tahiragana\", 0x305f,\n \"tahmedialarabic\", 0xfec4,\n \"taisyouerasquare\", 0x337d,\n \"takatakana\", 0x30bf,\n \"takatakanahalfwidth\", 0xff80,\n \"tatweelarabic\", 0x0640,\n \"tau\", 0x03c4,\n \"tav\", 0x05ea,\n \"tavdages\", 0xfb4a,\n \"tavdagesh\", 0xfb4a,\n \"tavdageshhebrew\", 0xfb4a,\n \"tavhebrew\", 0x05ea,\n \"tbar\", 0x0167,\n \"tbopomofo\", 0x310a,\n \"tcaron\", 0x0165,\n \"tccurl\", 0x02a8,\n \"tcedilla\", 0x0163,\n \"tcheharabic\", 0x0686,\n \"tchehfinalarabic\", 0xfb7b,\n \"tchehinitialarabic\", 0xfb7c,\n \"tchehmedialarabic\", 0xfb7d,\n \"tcircle\", 0x24e3,\n \"tcircumflexbelow\", 0x1e71,\n \"tcommaaccent\", 0x0163,\n \"tdieresis\", 0x1e97,\n \"tdotaccent\", 0x1e6b,\n \"tdotbelow\", 0x1e6d,\n \"tecyrillic\", 0x0442,\n \"tedescendercyrillic\", 0x04ad,\n \"teharabic\", 0x062a,\n \"tehfinalarabic\", 0xfe96,\n \"tehhahinitialarabic\", 0xfca2,\n \"tehhahisolatedarabic\", 0xfc0c,\n \"tehinitialarabic\", 0xfe97,\n \"tehiragana\", 0x3066,\n \"tehjeeminitialarabic\", 0xfca1,\n \"tehjeemisolatedarabic\", 0xfc0b,\n \"tehmarbutaarabic\", 0x0629,\n \"tehmarbutafinalarabic\", 0xfe94,\n \"tehmedialarabic\", 0xfe98,\n \"tehmeeminitialarabic\", 0xfca4,\n \"tehmeemisolatedarabic\", 0xfc0e,\n \"tehnoonfinalarabic\", 0xfc73,\n \"tekatakana\", 0x30c6,\n \"tekatakanahalfwidth\", 0xff83,\n \"telephone\", 0x2121,\n \"telephoneblack\", 0x260e,\n \"telishagedolahebrew\", 0x05a0,\n \"telishaqetanahebrew\", 0x05a9,\n \"tencircle\", 0x2469,\n \"tenideographicparen\", 0x3229,\n \"tenparen\", 0x247d,\n \"tenperiod\", 0x2491,\n \"tenroman\", 0x2179,\n \"tesh\", 0x02a7,\n \"tet\", 0x05d8,\n \"tetdagesh\", 0xfb38,\n \"tetdageshhebrew\", 0xfb38,\n \"tethebrew\", 0x05d8,\n \"tetsecyrillic\", 0x04b5,\n \"tevirhebrew\", 0x059b,\n \"tevirlefthebrew\", 0x059b,\n \"thabengali\", 0x09a5,\n \"thadeva\", 0x0925,\n \"thagujarati\", 0x0aa5,\n \"thagurmukhi\", 0x0a25,\n \"thalarabic\", 0x0630,\n \"thalfinalarabic\", 0xfeac,\n \"thanthakhatlowleftthai\", 0xf898,\n \"thanthakhatlowrightthai\", 0xf897,\n \"thanthakhatthai\", 0x0e4c,\n \"thanthakhatupperleftthai\", 0xf896,\n \"theharabic\", 0x062b,\n \"thehfinalarabic\", 0xfe9a,\n \"thehinitialarabic\", 0xfe9b,\n \"thehmedialarabic\", 0xfe9c,\n \"thereexists\", 0x2203,\n \"therefore\", 0x2234,\n \"theta\", 0x03b8,\n \"theta1\", 0x03d1,\n \"thetasymbolgreek\", 0x03d1,\n \"thieuthacirclekorean\", 0x3279,\n \"thieuthaparenkorean\", 0x3219,\n \"thieuthcirclekorean\", 0x326b,\n \"thieuthkorean\", 0x314c,\n \"thieuthparenkorean\", 0x320b,\n \"thirteencircle\", 0x246c,\n \"thirteenparen\", 0x2480,\n \"thirteenperiod\", 0x2494,\n \"thonangmonthothai\", 0x0e11,\n \"thook\", 0x01ad,\n \"thophuthaothai\", 0x0e12,\n \"thorn\", 0x00fe,\n \"thothahanthai\", 0x0e17,\n \"thothanthai\", 0x0e10,\n \"thothongthai\", 0x0e18,\n \"thothungthai\", 0x0e16,\n \"thousandcyrillic\", 0x0482,\n \"thousandsseparatorarabic\", 0x066c,\n \"thousandsseparatorpersian\", 0x066c,\n \"three\", 0x0033,\n \"threearabic\", 0x0663,\n \"threebengali\", 0x09e9,\n \"threecircle\", 0x2462,\n \"threecircleinversesansserif\", 0x278c,\n \"threedeva\", 0x0969,\n \"threeeighths\", 0x215c,\n \"threegujarati\", 0x0ae9,\n \"threegurmukhi\", 0x0a69,\n \"threehackarabic\", 0x0663,\n \"threehangzhou\", 0x3023,\n \"threeideographicparen\", 0x3222,\n \"threeinferior\", 0x2083,\n \"threemonospace\", 0xff13,\n \"threenumeratorbengali\", 0x09f6,\n \"threeoldstyle\", 0xf733,\n \"threeparen\", 0x2476,\n \"threeperiod\", 0x248a,\n \"threepersian\", 0x06f3,\n \"threequarters\", 0x00be,\n \"threequartersemdash\", 0xf6de,\n \"threeroman\", 0x2172,\n \"threesuperior\", 0x00b3,\n \"threethai\", 0x0e53,\n \"thzsquare\", 0x3394,\n \"tihiragana\", 0x3061,\n \"tikatakana\", 0x30c1,\n \"tikatakanahalfwidth\", 0xff81,\n \"tikeutacirclekorean\", 0x3270,\n \"tikeutaparenkorean\", 0x3210,\n \"tikeutcirclekorean\", 0x3262,\n \"tikeutkorean\", 0x3137,\n \"tikeutparenkorean\", 0x3202,\n \"tilde\", 0x02dc,\n \"tildebelowcmb\", 0x0330,\n \"tildecmb\", 0x0303,\n \"tildecomb\", 0x0303,\n \"tildedoublecmb\", 0x0360,\n \"tildeoperator\", 0x223c,\n \"tildeoverlaycmb\", 0x0334,\n \"tildeverticalcmb\", 0x033e,\n \"timescircle\", 0x2297,\n \"tipehahebrew\", 0x0596,\n \"tipehalefthebrew\", 0x0596,\n \"tippigurmukhi\", 0x0a70,\n \"titlocyrilliccmb\", 0x0483,\n \"tiwnarmenian\", 0x057f,\n \"tlinebelow\", 0x1e6f,\n \"tmonospace\", 0xff54,\n \"toarmenian\", 0x0569,\n \"tohiragana\", 0x3068,\n \"tokatakana\", 0x30c8,\n \"tokatakanahalfwidth\", 0xff84,\n \"tonebarextrahighmod\", 0x02e5,\n \"tonebarextralowmod\", 0x02e9,\n \"tonebarhighmod\", 0x02e6,\n \"tonebarlowmod\", 0x02e8,\n \"tonebarmidmod\", 0x02e7,\n \"tonefive\", 0x01bd,\n \"tonesix\", 0x0185,\n \"tonetwo\", 0x01a8,\n \"tonos\", 0x0384,\n \"tonsquare\", 0x3327,\n \"topatakthai\", 0x0e0f,\n \"tortoiseshellbracketleft\", 0x3014,\n \"tortoiseshellbracketleftsmall\", 0xfe5d,\n \"tortoiseshellbracketleftvertical\", 0xfe39,\n \"tortoiseshellbracketright\", 0x3015,\n \"tortoiseshellbracketrightsmall\", 0xfe5e,\n \"tortoiseshellbracketrightvertical\", 0xfe3a,\n \"totaothai\", 0x0e15,\n \"tpalatalhook\", 0x01ab,\n \"tparen\", 0x24af,\n \"trademark\", 0x2122,\n \"trademarksans\", 0xf8ea,\n \"trademarkserif\", 0xf6db,\n \"tretroflexhook\", 0x0288,\n \"triagdn\", 0x25bc,\n \"triaglf\", 0x25c4,\n \"triagrt\", 0x25ba,\n \"triagup\", 0x25b2,\n \"ts\", 0x02a6,\n \"tsadi\", 0x05e6,\n \"tsadidagesh\", 0xfb46,\n \"tsadidageshhebrew\", 0xfb46,\n \"tsadihebrew\", 0x05e6,\n \"tsecyrillic\", 0x0446,\n \"tsere\", 0x05b5,\n \"tsere12\", 0x05b5,\n \"tsere1e\", 0x05b5,\n \"tsere2b\", 0x05b5,\n \"tserehebrew\", 0x05b5,\n \"tserenarrowhebrew\", 0x05b5,\n \"tserequarterhebrew\", 0x05b5,\n \"tserewidehebrew\", 0x05b5,\n \"tshecyrillic\", 0x045b,\n \"tsuperior\", 0xf6f3,\n \"ttabengali\", 0x099f,\n \"ttadeva\", 0x091f,\n \"ttagujarati\", 0x0a9f,\n \"ttagurmukhi\", 0x0a1f,\n \"tteharabic\", 0x0679,\n \"ttehfinalarabic\", 0xfb67,\n \"ttehinitialarabic\", 0xfb68,\n \"ttehmedialarabic\", 0xfb69,\n \"tthabengali\", 0x09a0,\n \"tthadeva\", 0x0920,\n \"tthagujarati\", 0x0aa0,\n \"tthagurmukhi\", 0x0a20,\n \"tturned\", 0x0287,\n \"tuhiragana\", 0x3064,\n \"tukatakana\", 0x30c4,\n \"tukatakanahalfwidth\", 0xff82,\n \"tusmallhiragana\", 0x3063,\n \"tusmallkatakana\", 0x30c3,\n \"tusmallkatakanahalfwidth\", 0xff6f,\n \"twelvecircle\", 0x246b,\n \"twelveparen\", 0x247f,\n \"twelveperiod\", 0x2493,\n \"twelveroman\", 0x217b,\n \"twentycircle\", 0x2473,\n \"twentyhangzhou\", 0x5344,\n \"twentyparen\", 0x2487,\n \"twentyperiod\", 0x249b,\n \"two\", 0x0032,\n \"twoarabic\", 0x0662,\n \"twobengali\", 0x09e8,\n \"twocircle\", 0x2461,\n \"twocircleinversesansserif\", 0x278b,\n \"twodeva\", 0x0968,\n \"twodotenleader\", 0x2025,\n \"twodotleader\", 0x2025,\n \"twodotleadervertical\", 0xfe30,\n \"twogujarati\", 0x0ae8,\n \"twogurmukhi\", 0x0a68,\n \"twohackarabic\", 0x0662,\n \"twohangzhou\", 0x3022,\n \"twoideographicparen\", 0x3221,\n \"twoinferior\", 0x2082,\n \"twomonospace\", 0xff12,\n \"twonumeratorbengali\", 0x09f5,\n \"twooldstyle\", 0xf732,\n \"twoparen\", 0x2475,\n \"twoperiod\", 0x2489,\n \"twopersian\", 0x06f2,\n \"tworoman\", 0x2171,\n \"twostroke\", 0x01bb,\n \"twosuperior\", 0x00b2,\n \"twothai\", 0x0e52,\n \"twothirds\", 0x2154,\n \"u\", 0x0075,\n \"uacute\", 0x00fa,\n \"ubar\", 0x0289,\n \"ubengali\", 0x0989,\n \"ubopomofo\", 0x3128,\n \"ubreve\", 0x016d,\n \"ucaron\", 0x01d4,\n \"ucircle\", 0x24e4,\n \"ucircumflex\", 0x00fb,\n \"ucircumflexbelow\", 0x1e77,\n \"ucyrillic\", 0x0443,\n \"udattadeva\", 0x0951,\n \"udblacute\", 0x0171,\n \"udblgrave\", 0x0215,\n \"udeva\", 0x0909,\n \"udieresis\", 0x00fc,\n \"udieresisacute\", 0x01d8,\n \"udieresisbelow\", 0x1e73,\n \"udieresiscaron\", 0x01da,\n \"udieresiscyrillic\", 0x04f1,\n \"udieresisgrave\", 0x01dc,\n \"udieresismacron\", 0x01d6,\n \"udotbelow\", 0x1ee5,\n \"ugrave\", 0x00f9,\n \"ugujarati\", 0x0a89,\n \"ugurmukhi\", 0x0a09,\n \"uhiragana\", 0x3046,\n \"uhookabove\", 0x1ee7,\n \"uhorn\", 0x01b0,\n \"uhornacute\", 0x1ee9,\n \"uhorndotbelow\", 0x1ef1,\n \"uhorngrave\", 0x1eeb,\n \"uhornhookabove\", 0x1eed,\n \"uhorntilde\", 0x1eef,\n \"uhungarumlaut\", 0x0171,\n \"uhungarumlautcyrillic\", 0x04f3,\n \"uinvertedbreve\", 0x0217,\n \"ukatakana\", 0x30a6,\n \"ukatakanahalfwidth\", 0xff73,\n \"ukcyrillic\", 0x0479,\n \"ukorean\", 0x315c,\n \"umacron\", 0x016b,\n \"umacroncyrillic\", 0x04ef,\n \"umacrondieresis\", 0x1e7b,\n \"umatragurmukhi\", 0x0a41,\n \"umonospace\", 0xff55,\n \"underscore\", 0x005f,\n \"underscoredbl\", 0x2017,\n \"underscoremonospace\", 0xff3f,\n \"underscorevertical\", 0xfe33,\n \"underscorewavy\", 0xfe4f,\n \"union\", 0x222a,\n \"universal\", 0x2200,\n \"uogonek\", 0x0173,\n \"uparen\", 0x24b0,\n \"upblock\", 0x2580,\n \"upperdothebrew\", 0x05c4,\n \"upsilon\", 0x03c5,\n \"upsilondieresis\", 0x03cb,\n \"upsilondieresistonos\", 0x03b0,\n \"upsilonlatin\", 0x028a,\n \"upsilontonos\", 0x03cd,\n \"uptackbelowcmb\", 0x031d,\n \"uptackmod\", 0x02d4,\n \"uragurmukhi\", 0x0a73,\n \"uring\", 0x016f,\n \"ushortcyrillic\", 0x045e,\n \"usmallhiragana\", 0x3045,\n \"usmallkatakana\", 0x30a5,\n \"usmallkatakanahalfwidth\", 0xff69,\n \"ustraightcyrillic\", 0x04af,\n \"ustraightstrokecyrillic\", 0x04b1,\n \"utilde\", 0x0169,\n \"utildeacute\", 0x1e79,\n \"utildebelow\", 0x1e75,\n \"uubengali\", 0x098a,\n \"uudeva\", 0x090a,\n \"uugujarati\", 0x0a8a,\n \"uugurmukhi\", 0x0a0a,\n \"uumatragurmukhi\", 0x0a42,\n \"uuvowelsignbengali\", 0x09c2,\n \"uuvowelsigndeva\", 0x0942,\n \"uuvowelsigngujarati\", 0x0ac2,\n \"uvowelsignbengali\", 0x09c1,\n \"uvowelsigndeva\", 0x0941,\n \"uvowelsigngujarati\", 0x0ac1,\n \"v\", 0x0076,\n \"vadeva\", 0x0935,\n \"vagujarati\", 0x0ab5,\n \"vagurmukhi\", 0x0a35,\n \"vakatakana\", 0x30f7,\n \"vav\", 0x05d5,\n \"vavdagesh\", 0xfb35,\n \"vavdagesh65\", 0xfb35,\n \"vavdageshhebrew\", 0xfb35,\n \"vavhebrew\", 0x05d5,\n \"vavholam\", 0xfb4b,\n \"vavholamhebrew\", 0xfb4b,\n \"vavvavhebrew\", 0x05f0,\n \"vavyodhebrew\", 0x05f1,\n \"vcircle\", 0x24e5,\n \"vdotbelow\", 0x1e7f,\n \"vecyrillic\", 0x0432,\n \"veharabic\", 0x06a4,\n \"vehfinalarabic\", 0xfb6b,\n \"vehinitialarabic\", 0xfb6c,\n \"vehmedialarabic\", 0xfb6d,\n \"vekatakana\", 0x30f9,\n \"venus\", 0x2640,\n \"verticalbar\", 0x007c,\n \"verticallineabovecmb\", 0x030d,\n \"verticallinebelowcmb\", 0x0329,\n \"verticallinelowmod\", 0x02cc,\n \"verticallinemod\", 0x02c8,\n \"vewarmenian\", 0x057e,\n \"vhook\", 0x028b,\n \"vikatakana\", 0x30f8,\n \"viramabengali\", 0x09cd,\n \"viramadeva\", 0x094d,\n \"viramagujarati\", 0x0acd,\n \"visargabengali\", 0x0983,\n \"visargadeva\", 0x0903,\n \"visargagujarati\", 0x0a83,\n \"vmonospace\", 0xff56,\n \"voarmenian\", 0x0578,\n \"voicediterationhiragana\", 0x309e,\n \"voicediterationkatakana\", 0x30fe,\n \"voicedmarkkana\", 0x309b,\n \"voicedmarkkanahalfwidth\", 0xff9e,\n \"vokatakana\", 0x30fa,\n \"vparen\", 0x24b1,\n \"vtilde\", 0x1e7d,\n \"vturned\", 0x028c,\n \"vuhiragana\", 0x3094,\n \"vukatakana\", 0x30f4,\n \"w\", 0x0077,\n \"wacute\", 0x1e83,\n \"waekorean\", 0x3159,\n \"wahiragana\", 0x308f,\n \"wakatakana\", 0x30ef,\n \"wakatakanahalfwidth\", 0xff9c,\n \"wakorean\", 0x3158,\n \"wasmallhiragana\", 0x308e,\n \"wasmallkatakana\", 0x30ee,\n \"wattosquare\", 0x3357,\n \"wavedash\", 0x301c,\n \"wavyunderscorevertical\", 0xfe34,\n \"wawarabic\", 0x0648,\n \"wawfinalarabic\", 0xfeee,\n \"wawhamzaabovearabic\", 0x0624,\n \"wawhamzaabovefinalarabic\", 0xfe86,\n \"wbsquare\", 0x33dd,\n \"wcircle\", 0x24e6,\n \"wcircumflex\", 0x0175,\n \"wdieresis\", 0x1e85,\n \"wdotaccent\", 0x1e87,\n \"wdotbelow\", 0x1e89,\n \"wehiragana\", 0x3091,\n \"weierstrass\", 0x2118,\n \"wekatakana\", 0x30f1,\n \"wekorean\", 0x315e,\n \"weokorean\", 0x315d,\n \"wgrave\", 0x1e81,\n \"whitebullet\", 0x25e6,\n \"whitecircle\", 0x25cb,\n \"whitecircleinverse\", 0x25d9,\n \"whitecornerbracketleft\", 0x300e,\n \"whitecornerbracketleftvertical\", 0xfe43,\n \"whitecornerbracketright\", 0x300f,\n \"whitecornerbracketrightvertical\", 0xfe44,\n \"whitediamond\", 0x25c7,\n \"whitediamondcontainingblacksmalldiamond\", 0x25c8,\n \"whitedownpointingsmalltriangle\", 0x25bf,\n \"whitedownpointingtriangle\", 0x25bd,\n \"whiteleftpointingsmalltriangle\", 0x25c3,\n \"whiteleftpointingtriangle\", 0x25c1,\n \"whitelenticularbracketleft\", 0x3016,\n \"whitelenticularbracketright\", 0x3017,\n \"whiterightpointingsmalltriangle\", 0x25b9,\n \"whiterightpointingtriangle\", 0x25b7,\n \"whitesmallsquare\", 0x25ab,\n \"whitesmilingface\", 0x263a,\n \"whitesquare\", 0x25a1,\n \"whitestar\", 0x2606,\n \"whitetelephone\", 0x260f,\n \"whitetortoiseshellbracketleft\", 0x3018,\n \"whitetortoiseshellbracketright\", 0x3019,\n \"whiteuppointingsmalltriangle\", 0x25b5,\n \"whiteuppointingtriangle\", 0x25b3,\n \"wihiragana\", 0x3090,\n \"wikatakana\", 0x30f0,\n \"wikorean\", 0x315f,\n \"wmonospace\", 0xff57,\n \"wohiragana\", 0x3092,\n \"wokatakana\", 0x30f2,\n \"wokatakanahalfwidth\", 0xff66,\n \"won\", 0x20a9,\n \"wonmonospace\", 0xffe6,\n \"wowaenthai\", 0x0e27,\n \"wparen\", 0x24b2,\n \"wring\", 0x1e98,\n \"wsuperior\", 0x02b7,\n \"wturned\", 0x028d,\n \"wynn\", 0x01bf,\n \"x\", 0x0078,\n \"xabovecmb\", 0x033d,\n \"xbopomofo\", 0x3112,\n \"xcircle\", 0x24e7,\n \"xdieresis\", 0x1e8d,\n \"xdotaccent\", 0x1e8b,\n \"xeharmenian\", 0x056d,\n \"xi\", 0x03be,\n \"xmonospace\", 0xff58,\n \"xparen\", 0x24b3,\n \"xsuperior\", 0x02e3,\n \"y\", 0x0079,\n \"yaadosquare\", 0x334e,\n \"yabengali\", 0x09af,\n \"yacute\", 0x00fd,\n \"yadeva\", 0x092f,\n \"yaekorean\", 0x3152,\n \"yagujarati\", 0x0aaf,\n \"yagurmukhi\", 0x0a2f,\n \"yahiragana\", 0x3084,\n \"yakatakana\", 0x30e4,\n \"yakatakanahalfwidth\", 0xff94,\n \"yakorean\", 0x3151,\n \"yamakkanthai\", 0x0e4e,\n \"yasmallhiragana\", 0x3083,\n \"yasmallkatakana\", 0x30e3,\n \"yasmallkatakanahalfwidth\", 0xff6c,\n \"yatcyrillic\", 0x0463,\n \"ycircle\", 0x24e8,\n \"ycircumflex\", 0x0177,\n \"ydieresis\", 0x00ff,\n \"ydotaccent\", 0x1e8f,\n \"ydotbelow\", 0x1ef5,\n \"yeharabic\", 0x064a,\n \"yehbarreearabic\", 0x06d2,\n \"yehbarreefinalarabic\", 0xfbaf,\n \"yehfinalarabic\", 0xfef2,\n \"yehhamzaabovearabic\", 0x0626,\n \"yehhamzaabovefinalarabic\", 0xfe8a,\n \"yehhamzaaboveinitialarabic\", 0xfe8b,\n \"yehhamzaabovemedialarabic\", 0xfe8c,\n \"yehinitialarabic\", 0xfef3,\n \"yehmedialarabic\", 0xfef4,\n \"yehmeeminitialarabic\", 0xfcdd,\n \"yehmeemisolatedarabic\", 0xfc58,\n \"yehnoonfinalarabic\", 0xfc94,\n \"yehthreedotsbelowarabic\", 0x06d1,\n \"yekorean\", 0x3156,\n \"yen\", 0x00a5,\n \"yenmonospace\", 0xffe5,\n \"yeokorean\", 0x3155,\n \"yeorinhieuhkorean\", 0x3186,\n \"yerahbenyomohebrew\", 0x05aa,\n \"yerahbenyomolefthebrew\", 0x05aa,\n \"yericyrillic\", 0x044b,\n \"yerudieresiscyrillic\", 0x04f9,\n \"yesieungkorean\", 0x3181,\n \"yesieungpansioskorean\", 0x3183,\n \"yesieungsioskorean\", 0x3182,\n \"yetivhebrew\", 0x059a,\n \"ygrave\", 0x1ef3,\n \"yhook\", 0x01b4,\n \"yhookabove\", 0x1ef7,\n \"yiarmenian\", 0x0575,\n \"yicyrillic\", 0x0457,\n \"yikorean\", 0x3162,\n \"yinyang\", 0x262f,\n \"yiwnarmenian\", 0x0582,\n \"ymonospace\", 0xff59,\n \"yod\", 0x05d9,\n \"yoddagesh\", 0xfb39,\n \"yoddageshhebrew\", 0xfb39,\n \"yodhebrew\", 0x05d9,\n \"yodyodhebrew\", 0x05f2,\n \"yodyodpatahhebrew\", 0xfb1f,\n \"yohiragana\", 0x3088,\n \"yoikorean\", 0x3189,\n \"yokatakana\", 0x30e8,\n \"yokatakanahalfwidth\", 0xff96,\n \"yokorean\", 0x315b,\n \"yosmallhiragana\", 0x3087,\n \"yosmallkatakana\", 0x30e7,\n \"yosmallkatakanahalfwidth\", 0xff6e,\n \"yotgreek\", 0x03f3,\n \"yoyaekorean\", 0x3188,\n \"yoyakorean\", 0x3187,\n \"yoyakthai\", 0x0e22,\n \"yoyingthai\", 0x0e0d,\n \"yparen\", 0x24b4,\n \"ypogegrammeni\", 0x037a,\n \"ypogegrammenigreekcmb\", 0x0345,\n \"yr\", 0x01a6,\n \"yring\", 0x1e99,\n \"ysuperior\", 0x02b8,\n \"ytilde\", 0x1ef9,\n \"yturned\", 0x028e,\n \"yuhiragana\", 0x3086,\n \"yuikorean\", 0x318c,\n \"yukatakana\", 0x30e6,\n \"yukatakanahalfwidth\", 0xff95,\n \"yukorean\", 0x3160,\n \"yusbigcyrillic\", 0x046b,\n \"yusbigiotifiedcyrillic\", 0x046d,\n \"yuslittlecyrillic\", 0x0467,\n \"yuslittleiotifiedcyrillic\", 0x0469,\n \"yusmallhiragana\", 0x3085,\n \"yusmallkatakana\", 0x30e5,\n \"yusmallkatakanahalfwidth\", 0xff6d,\n \"yuyekorean\", 0x318b,\n \"yuyeokorean\", 0x318a,\n \"yyabengali\", 0x09df,\n \"yyadeva\", 0x095f,\n \"z\", 0x007a,\n \"zaarmenian\", 0x0566,\n \"zacute\", 0x017a,\n \"zadeva\", 0x095b,\n \"zagurmukhi\", 0x0a5b,\n \"zaharabic\", 0x0638,\n \"zahfinalarabic\", 0xfec6,\n \"zahinitialarabic\", 0xfec7,\n \"zahiragana\", 0x3056,\n \"zahmedialarabic\", 0xfec8,\n \"zainarabic\", 0x0632,\n \"zainfinalarabic\", 0xfeb0,\n \"zakatakana\", 0x30b6,\n \"zaqefgadolhebrew\", 0x0595,\n \"zaqefqatanhebrew\", 0x0594,\n \"zarqahebrew\", 0x0598,\n \"zayin\", 0x05d6,\n \"zayindagesh\", 0xfb36,\n \"zayindageshhebrew\", 0xfb36,\n \"zayinhebrew\", 0x05d6,\n \"zbopomofo\", 0x3117,\n \"zcaron\", 0x017e,\n \"zcircle\", 0x24e9,\n \"zcircumflex\", 0x1e91,\n \"zcurl\", 0x0291,\n \"zdot\", 0x017c,\n \"zdotaccent\", 0x017c,\n \"zdotbelow\", 0x1e93,\n \"zecyrillic\", 0x0437,\n \"zedescendercyrillic\", 0x0499,\n \"zedieresiscyrillic\", 0x04df,\n \"zehiragana\", 0x305c,\n \"zekatakana\", 0x30bc,\n \"zero\", 0x0030,\n \"zeroarabic\", 0x0660,\n \"zerobengali\", 0x09e6,\n \"zerodeva\", 0x0966,\n \"zerogujarati\", 0x0ae6,\n \"zerogurmukhi\", 0x0a66,\n \"zerohackarabic\", 0x0660,\n \"zeroinferior\", 0x2080,\n \"zeromonospace\", 0xff10,\n \"zerooldstyle\", 0xf730,\n \"zeropersian\", 0x06f0,\n \"zerosuperior\", 0x2070,\n \"zerothai\", 0x0e50,\n \"zerowidthjoiner\", 0xfeff,\n \"zerowidthnonjoiner\", 0x200c,\n \"zerowidthspace\", 0x200b,\n \"zeta\", 0x03b6,\n \"zhbopomofo\", 0x3113,\n \"zhearmenian\", 0x056a,\n \"zhebrevecyrillic\", 0x04c2,\n \"zhecyrillic\", 0x0436,\n \"zhedescendercyrillic\", 0x0497,\n \"zhedieresiscyrillic\", 0x04dd,\n \"zihiragana\", 0x3058,\n \"zikatakana\", 0x30b8,\n \"zinorhebrew\", 0x05ae,\n \"zlinebelow\", 0x1e95,\n \"zmonospace\", 0xff5a,\n \"zohiragana\", 0x305e,\n \"zokatakana\", 0x30be,\n \"zparen\", 0x24b5,\n \"zretroflexhook\", 0x0290,\n \"zstroke\", 0x01b6,\n \"zuhiragana\", 0x305a,\n \"zukatakana\", 0x30ba,\n \".notdef\", 0x0000,\n\n // TeX-specific glyph names.\n \"angbracketleftbig\", 0x2329,\n \"angbracketleftBig\", 0x2329,\n \"angbracketleftbigg\", 0x2329,\n \"angbracketleftBigg\", 0x2329,\n \"angbracketrightBig\", 0x232a,\n \"angbracketrightbig\", 0x232a,\n \"angbracketrightBigg\", 0x232a,\n \"angbracketrightbigg\", 0x232a,\n \"arrowhookleft\", 0x21aa,\n \"arrowhookright\", 0x21a9,\n \"arrowlefttophalf\", 0x21bc,\n \"arrowleftbothalf\", 0x21bd,\n \"arrownortheast\", 0x2197,\n \"arrownorthwest\", 0x2196,\n \"arrowrighttophalf\", 0x21c0,\n \"arrowrightbothalf\", 0x21c1,\n \"arrowsoutheast\", 0x2198,\n \"arrowsouthwest\", 0x2199,\n \"backslashbig\", 0x2216,\n \"backslashBig\", 0x2216,\n \"backslashBigg\", 0x2216,\n \"backslashbigg\", 0x2216,\n \"bardbl\", 0x2016,\n \"bracehtipdownleft\", 0xfe37,\n \"bracehtipdownright\", 0xfe37,\n \"bracehtipupleft\", 0xfe38,\n \"bracehtipupright\", 0xfe38,\n \"braceleftBig\", 0x007b,\n \"braceleftbig\", 0x007b,\n \"braceleftbigg\", 0x007b,\n \"braceleftBigg\", 0x007b,\n \"bracerightBig\", 0x007d,\n \"bracerightbig\", 0x007d,\n \"bracerightbigg\", 0x007d,\n \"bracerightBigg\", 0x007d,\n \"bracketleftbig\", 0x005b,\n \"bracketleftBig\", 0x005b,\n \"bracketleftbigg\", 0x005b,\n \"bracketleftBigg\", 0x005b,\n \"bracketrightBig\", 0x005d,\n \"bracketrightbig\", 0x005d,\n \"bracketrightbigg\", 0x005d,\n \"bracketrightBigg\", 0x005d,\n \"ceilingleftbig\", 0x2308,\n \"ceilingleftBig\", 0x2308,\n \"ceilingleftBigg\", 0x2308,\n \"ceilingleftbigg\", 0x2308,\n \"ceilingrightbig\", 0x2309,\n \"ceilingrightBig\", 0x2309,\n \"ceilingrightbigg\", 0x2309,\n \"ceilingrightBigg\", 0x2309,\n \"circledotdisplay\", 0x2299,\n \"circledottext\", 0x2299,\n \"circlemultiplydisplay\", 0x2297,\n \"circlemultiplytext\", 0x2297,\n \"circleplusdisplay\", 0x2295,\n \"circleplustext\", 0x2295,\n \"contintegraldisplay\", 0x222e,\n \"contintegraltext\", 0x222e,\n \"coproductdisplay\", 0x2210,\n \"coproducttext\", 0x2210,\n \"floorleftBig\", 0x230a,\n \"floorleftbig\", 0x230a,\n \"floorleftbigg\", 0x230a,\n \"floorleftBigg\", 0x230a,\n \"floorrightbig\", 0x230b,\n \"floorrightBig\", 0x230b,\n \"floorrightBigg\", 0x230b,\n \"floorrightbigg\", 0x230b,\n \"hatwide\", 0x0302,\n \"hatwider\", 0x0302,\n \"hatwidest\", 0x0302,\n \"intercal\", 0x1d40,\n \"integraldisplay\", 0x222b,\n \"integraltext\", 0x222b,\n \"intersectiondisplay\", 0x22c2,\n \"intersectiontext\", 0x22c2,\n \"logicalanddisplay\", 0x2227,\n \"logicalandtext\", 0x2227,\n \"logicalordisplay\", 0x2228,\n \"logicalortext\", 0x2228,\n \"parenleftBig\", 0x0028,\n \"parenleftbig\", 0x0028,\n \"parenleftBigg\", 0x0028,\n \"parenleftbigg\", 0x0028,\n \"parenrightBig\", 0x0029,\n \"parenrightbig\", 0x0029,\n \"parenrightBigg\", 0x0029,\n \"parenrightbigg\", 0x0029,\n \"prime\", 0x2032,\n \"productdisplay\", 0x220f,\n \"producttext\", 0x220f,\n \"radicalbig\", 0x221a,\n \"radicalBig\", 0x221a,\n \"radicalBigg\", 0x221a,\n \"radicalbigg\", 0x221a,\n \"radicalbt\", 0x221a,\n \"radicaltp\", 0x221a,\n \"radicalvertex\", 0x221a,\n \"slashbig\", 0x002f,\n \"slashBig\", 0x002f,\n \"slashBigg\", 0x002f,\n \"slashbigg\", 0x002f,\n \"summationdisplay\", 0x2211,\n \"summationtext\", 0x2211,\n \"tildewide\", 0x02dc,\n \"tildewider\", 0x02dc,\n \"tildewidest\", 0x02dc,\n \"uniondisplay\", 0x22c3,\n \"unionmultidisplay\", 0x228e,\n \"unionmultitext\", 0x228e,\n \"unionsqdisplay\", 0x2294,\n \"unionsqtext\", 0x2294,\n \"uniontext\", 0x22c3,\n \"vextenddouble\", 0x2225,\n \"vextendsingle\", 0x2223,\n ];\n});\n\nconst getDingbatsGlyphsUnicode = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"space\", 0x0020,\n \"a1\", 0x2701,\n \"a2\", 0x2702,\n \"a202\", 0x2703,\n \"a3\", 0x2704,\n \"a4\", 0x260e,\n \"a5\", 0x2706,\n \"a119\", 0x2707,\n \"a118\", 0x2708,\n \"a117\", 0x2709,\n \"a11\", 0x261b,\n \"a12\", 0x261e,\n \"a13\", 0x270c,\n \"a14\", 0x270d,\n \"a15\", 0x270e,\n \"a16\", 0x270f,\n \"a105\", 0x2710,\n \"a17\", 0x2711,\n \"a18\", 0x2712,\n \"a19\", 0x2713,\n \"a20\", 0x2714,\n \"a21\", 0x2715,\n \"a22\", 0x2716,\n \"a23\", 0x2717,\n \"a24\", 0x2718,\n \"a25\", 0x2719,\n \"a26\", 0x271a,\n \"a27\", 0x271b,\n \"a28\", 0x271c,\n \"a6\", 0x271d,\n \"a7\", 0x271e,\n \"a8\", 0x271f,\n \"a9\", 0x2720,\n \"a10\", 0x2721,\n \"a29\", 0x2722,\n \"a30\", 0x2723,\n \"a31\", 0x2724,\n \"a32\", 0x2725,\n \"a33\", 0x2726,\n \"a34\", 0x2727,\n \"a35\", 0x2605,\n \"a36\", 0x2729,\n \"a37\", 0x272a,\n \"a38\", 0x272b,\n \"a39\", 0x272c,\n \"a40\", 0x272d,\n \"a41\", 0x272e,\n \"a42\", 0x272f,\n \"a43\", 0x2730,\n \"a44\", 0x2731,\n \"a45\", 0x2732,\n \"a46\", 0x2733,\n \"a47\", 0x2734,\n \"a48\", 0x2735,\n \"a49\", 0x2736,\n \"a50\", 0x2737,\n \"a51\", 0x2738,\n \"a52\", 0x2739,\n \"a53\", 0x273a,\n \"a54\", 0x273b,\n \"a55\", 0x273c,\n \"a56\", 0x273d,\n \"a57\", 0x273e,\n \"a58\", 0x273f,\n \"a59\", 0x2740,\n \"a60\", 0x2741,\n \"a61\", 0x2742,\n \"a62\", 0x2743,\n \"a63\", 0x2744,\n \"a64\", 0x2745,\n \"a65\", 0x2746,\n \"a66\", 0x2747,\n \"a67\", 0x2748,\n \"a68\", 0x2749,\n \"a69\", 0x274a,\n \"a70\", 0x274b,\n \"a71\", 0x25cf,\n \"a72\", 0x274d,\n \"a73\", 0x25a0,\n \"a74\", 0x274f,\n \"a203\", 0x2750,\n \"a75\", 0x2751,\n \"a204\", 0x2752,\n \"a76\", 0x25b2,\n \"a77\", 0x25bc,\n \"a78\", 0x25c6,\n \"a79\", 0x2756,\n \"a81\", 0x25d7,\n \"a82\", 0x2758,\n \"a83\", 0x2759,\n \"a84\", 0x275a,\n \"a97\", 0x275b,\n \"a98\", 0x275c,\n \"a99\", 0x275d,\n \"a100\", 0x275e,\n \"a101\", 0x2761,\n \"a102\", 0x2762,\n \"a103\", 0x2763,\n \"a104\", 0x2764,\n \"a106\", 0x2765,\n \"a107\", 0x2766,\n \"a108\", 0x2767,\n \"a112\", 0x2663,\n \"a111\", 0x2666,\n \"a110\", 0x2665,\n \"a109\", 0x2660,\n \"a120\", 0x2460,\n \"a121\", 0x2461,\n \"a122\", 0x2462,\n \"a123\", 0x2463,\n \"a124\", 0x2464,\n \"a125\", 0x2465,\n \"a126\", 0x2466,\n \"a127\", 0x2467,\n \"a128\", 0x2468,\n \"a129\", 0x2469,\n \"a130\", 0x2776,\n \"a131\", 0x2777,\n \"a132\", 0x2778,\n \"a133\", 0x2779,\n \"a134\", 0x277a,\n \"a135\", 0x277b,\n \"a136\", 0x277c,\n \"a137\", 0x277d,\n \"a138\", 0x277e,\n \"a139\", 0x277f,\n \"a140\", 0x2780,\n \"a141\", 0x2781,\n \"a142\", 0x2782,\n \"a143\", 0x2783,\n \"a144\", 0x2784,\n \"a145\", 0x2785,\n \"a146\", 0x2786,\n \"a147\", 0x2787,\n \"a148\", 0x2788,\n \"a149\", 0x2789,\n \"a150\", 0x278a,\n \"a151\", 0x278b,\n \"a152\", 0x278c,\n \"a153\", 0x278d,\n \"a154\", 0x278e,\n \"a155\", 0x278f,\n \"a156\", 0x2790,\n \"a157\", 0x2791,\n \"a158\", 0x2792,\n \"a159\", 0x2793,\n \"a160\", 0x2794,\n \"a161\", 0x2192,\n \"a163\", 0x2194,\n \"a164\", 0x2195,\n \"a196\", 0x2798,\n \"a165\", 0x2799,\n \"a192\", 0x279a,\n \"a166\", 0x279b,\n \"a167\", 0x279c,\n \"a168\", 0x279d,\n \"a169\", 0x279e,\n \"a170\", 0x279f,\n \"a171\", 0x27a0,\n \"a172\", 0x27a1,\n \"a173\", 0x27a2,\n \"a162\", 0x27a3,\n \"a174\", 0x27a4,\n \"a175\", 0x27a5,\n \"a176\", 0x27a6,\n \"a177\", 0x27a7,\n \"a178\", 0x27a8,\n \"a179\", 0x27a9,\n \"a193\", 0x27aa,\n \"a180\", 0x27ab,\n \"a199\", 0x27ac,\n \"a181\", 0x27ad,\n \"a200\", 0x27ae,\n \"a182\", 0x27af,\n \"a201\", 0x27b1,\n \"a183\", 0x27b2,\n \"a184\", 0x27b3,\n \"a197\", 0x27b4,\n \"a185\", 0x27b5,\n \"a194\", 0x27b6,\n \"a198\", 0x27b7,\n \"a186\", 0x27b8,\n \"a195\", 0x27b9,\n \"a187\", 0x27ba,\n \"a188\", 0x27bb,\n \"a189\", 0x27bc,\n \"a190\", 0x27bd,\n \"a191\", 0x27be,\n \"a89\", 0x2768, // 0xF8D7\n \"a90\", 0x2769, // 0xF8D8\n \"a93\", 0x276a, // 0xF8D9\n \"a94\", 0x276b, // 0xF8DA\n \"a91\", 0x276c, // 0xF8DB\n \"a92\", 0x276d, // 0xF8DC\n \"a205\", 0x276e, // 0xF8DD\n \"a85\", 0x276f, // 0xF8DE\n \"a206\", 0x2770, // 0xF8DF\n \"a86\", 0x2771, // 0xF8E0\n \"a87\", 0x2772, // 0xF8E1\n \"a88\", 0x2773, // 0xF8E2\n \"a95\", 0x2774, // 0xF8E3\n \"a96\", 0x2775, // 0xF8E4\n \".notdef\", 0x0000,\n ];\n});\n\nexport { getDingbatsGlyphsUnicode, getGlyphsUnicode };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport {\n getArrayLookupTableFactory,\n getLookupTableFactory,\n} from \"./core_utils.js\";\n\n// Some characters, e.g. copyrightserif, are mapped to the private use area\n// and might not be displayed using standard fonts. Mapping/hacking well-known\n// chars to the similar equivalents in the normal characters range.\nconst getSpecialPUASymbols = getLookupTableFactory(function (t) {\n t[63721] = 0x00a9; // copyrightsans (0xF8E9) => copyright\n t[63193] = 0x00a9; // copyrightserif (0xF6D9) => copyright\n t[63720] = 0x00ae; // registersans (0xF8E8) => registered\n t[63194] = 0x00ae; // registerserif (0xF6DA) => registered\n t[63722] = 0x2122; // trademarksans (0xF8EA) => trademark\n t[63195] = 0x2122; // trademarkserif (0xF6DB) => trademark\n t[63729] = 0x23a7; // bracelefttp (0xF8F1)\n t[63730] = 0x23a8; // braceleftmid (0xF8F2)\n t[63731] = 0x23a9; // braceleftbt (0xF8F3)\n t[63740] = 0x23ab; // bracerighttp (0xF8FC)\n t[63741] = 0x23ac; // bracerightmid (0xF8FD)\n t[63742] = 0x23ad; // bracerightbt (0xF8FE)\n t[63726] = 0x23a1; // bracketlefttp (0xF8EE)\n t[63727] = 0x23a2; // bracketleftex (0xF8EF)\n t[63728] = 0x23a3; // bracketleftbt (0xF8F0)\n t[63737] = 0x23a4; // bracketrighttp (0xF8F9)\n t[63738] = 0x23a5; // bracketrightex (0xF8FA)\n t[63739] = 0x23a6; // bracketrightbt (0xF8FB)\n t[63723] = 0x239b; // parenlefttp (0xF8EB)\n t[63724] = 0x239c; // parenleftex (0xF8EC)\n t[63725] = 0x239d; // parenleftbt (0xF8ED)\n t[63734] = 0x239e; // parenrighttp (0xF8F6)\n t[63735] = 0x239f; // parenrightex (0xF8F7)\n t[63736] = 0x23a0; // parenrightbt (0xF8F8)\n});\n\nfunction mapSpecialUnicodeValues(code) {\n if (code >= 0xfff0 && code <= 0xffff) {\n // Specials unicode block.\n return 0;\n } else if (code >= 0xf600 && code <= 0xf8ff) {\n return getSpecialPUASymbols()[code] || code;\n } else if (code === /* softhyphen = */ 0x00ad) {\n return 0x002d; // hyphen\n }\n return code;\n}\n\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n let unicode = glyphsUnicodeMap[name];\n if (unicode !== undefined) {\n return unicode;\n }\n if (!name) {\n return -1;\n }\n // Try to recover valid Unicode values from 'uniXXXX'/'uXXXX{XX}' glyphs.\n if (name[0] === \"u\") {\n const nameLen = name.length;\n let hexStr;\n\n if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n // 'uniXXXX'\n hexStr = name.substring(3);\n } else if (nameLen >= 5 && nameLen <= 7) {\n // 'uXXXX{XX}'\n hexStr = name.substring(1);\n } else {\n return -1;\n }\n // Check for upper-case hexadecimal characters, to avoid false positives.\n if (hexStr === hexStr.toUpperCase()) {\n unicode = parseInt(hexStr, 16);\n if (unicode >= 0) {\n return unicode;\n }\n }\n }\n return -1;\n}\n\nconst UnicodeRanges = [\n { begin: 0x0000, end: 0x007f }, // Basic Latin\n { begin: 0x0080, end: 0x00ff }, // Latin-1 Supplement\n { begin: 0x0100, end: 0x017f }, // Latin Extended-A\n { begin: 0x0180, end: 0x024f }, // Latin Extended-B\n { begin: 0x0250, end: 0x02af }, // IPA Extensions\n { begin: 0x02b0, end: 0x02ff }, // Spacing Modifier Letters\n { begin: 0x0300, end: 0x036f }, // Combining Diacritical Marks\n { begin: 0x0370, end: 0x03ff }, // Greek and Coptic\n { begin: 0x2c80, end: 0x2cff }, // Coptic\n { begin: 0x0400, end: 0x04ff }, // Cyrillic\n { begin: 0x0530, end: 0x058f }, // Armenian\n { begin: 0x0590, end: 0x05ff }, // Hebrew\n { begin: 0xa500, end: 0xa63f }, // Vai\n { begin: 0x0600, end: 0x06ff }, // Arabic\n { begin: 0x07c0, end: 0x07ff }, // NKo\n { begin: 0x0900, end: 0x097f }, // Devanagari\n { begin: 0x0980, end: 0x09ff }, // Bengali\n { begin: 0x0a00, end: 0x0a7f }, // Gurmukhi\n { begin: 0x0a80, end: 0x0aff }, // Gujarati\n { begin: 0x0b00, end: 0x0b7f }, // Oriya\n { begin: 0x0b80, end: 0x0bff }, // Tamil\n { begin: 0x0c00, end: 0x0c7f }, // Telugu\n { begin: 0x0c80, end: 0x0cff }, // Kannada\n { begin: 0x0d00, end: 0x0d7f }, // Malayalam\n { begin: 0x0e00, end: 0x0e7f }, // Thai\n { begin: 0x0e80, end: 0x0eff }, // Lao\n { begin: 0x10a0, end: 0x10ff }, // Georgian\n { begin: 0x1b00, end: 0x1b7f }, // Balinese\n { begin: 0x1100, end: 0x11ff }, // Hangul Jamo\n { begin: 0x1e00, end: 0x1eff }, // Latin Extended Additional\n { begin: 0x1f00, end: 0x1fff }, // Greek Extended\n { begin: 0x2000, end: 0x206f }, // General Punctuation\n { begin: 0x2070, end: 0x209f }, // Superscripts And Subscripts\n { begin: 0x20a0, end: 0x20cf }, // Currency Symbol\n { begin: 0x20d0, end: 0x20ff }, // Combining Diacritical Marks\n { begin: 0x2100, end: 0x214f }, // Letterlike Symbols\n { begin: 0x2150, end: 0x218f }, // Number Forms\n { begin: 0x2190, end: 0x21ff }, // Arrows\n { begin: 0x2200, end: 0x22ff }, // Mathematical Operators\n { begin: 0x2300, end: 0x23ff }, // Miscellaneous Technical\n { begin: 0x2400, end: 0x243f }, // Control Pictures\n { begin: 0x2440, end: 0x245f }, // Optical Character Recognition\n { begin: 0x2460, end: 0x24ff }, // Enclosed Alphanumerics\n { begin: 0x2500, end: 0x257f }, // Box Drawing\n { begin: 0x2580, end: 0x259f }, // Block Elements\n { begin: 0x25a0, end: 0x25ff }, // Geometric Shapes\n { begin: 0x2600, end: 0x26ff }, // Miscellaneous Symbols\n { begin: 0x2700, end: 0x27bf }, // Dingbats\n { begin: 0x3000, end: 0x303f }, // CJK Symbols And Punctuation\n { begin: 0x3040, end: 0x309f }, // Hiragana\n { begin: 0x30a0, end: 0x30ff }, // Katakana\n { begin: 0x3100, end: 0x312f }, // Bopomofo\n { begin: 0x3130, end: 0x318f }, // Hangul Compatibility Jamo\n { begin: 0xa840, end: 0xa87f }, // Phags-pa\n { begin: 0x3200, end: 0x32ff }, // Enclosed CJK Letters And Months\n { begin: 0x3300, end: 0x33ff }, // CJK Compatibility\n { begin: 0xac00, end: 0xd7af }, // Hangul Syllables\n { begin: 0xd800, end: 0xdfff }, // Non-Plane 0 *\n { begin: 0x10900, end: 0x1091f }, // Phoenicia\n { begin: 0x4e00, end: 0x9fff }, // CJK Unified Ideographs\n { begin: 0xe000, end: 0xf8ff }, // Private Use Area (plane 0)\n { begin: 0x31c0, end: 0x31ef }, // CJK Strokes\n { begin: 0xfb00, end: 0xfb4f }, // Alphabetic Presentation Forms\n { begin: 0xfb50, end: 0xfdff }, // Arabic Presentation Forms-A\n { begin: 0xfe20, end: 0xfe2f }, // Combining Half Marks\n { begin: 0xfe10, end: 0xfe1f }, // Vertical Forms\n { begin: 0xfe50, end: 0xfe6f }, // Small Form Variants\n { begin: 0xfe70, end: 0xfeff }, // Arabic Presentation Forms-B\n { begin: 0xff00, end: 0xffef }, // Halfwidth And Fullwidth Forms\n { begin: 0xfff0, end: 0xffff }, // Specials\n { begin: 0x0f00, end: 0x0fff }, // Tibetan\n { begin: 0x0700, end: 0x074f }, // Syriac\n { begin: 0x0780, end: 0x07bf }, // Thaana\n { begin: 0x0d80, end: 0x0dff }, // Sinhala\n { begin: 0x1000, end: 0x109f }, // Myanmar\n { begin: 0x1200, end: 0x137f }, // Ethiopic\n { begin: 0x13a0, end: 0x13ff }, // Cherokee\n { begin: 0x1400, end: 0x167f }, // Unified Canadian Aboriginal Syllabics\n { begin: 0x1680, end: 0x169f }, // Ogham\n { begin: 0x16a0, end: 0x16ff }, // Runic\n { begin: 0x1780, end: 0x17ff }, // Khmer\n { begin: 0x1800, end: 0x18af }, // Mongolian\n { begin: 0x2800, end: 0x28ff }, // Braille Patterns\n { begin: 0xa000, end: 0xa48f }, // Yi Syllables\n { begin: 0x1700, end: 0x171f }, // Tagalog\n { begin: 0x10300, end: 0x1032f }, // Old Italic\n { begin: 0x10330, end: 0x1034f }, // Gothic\n { begin: 0x10400, end: 0x1044f }, // Deseret\n { begin: 0x1d000, end: 0x1d0ff }, // Byzantine Musical Symbols\n { begin: 0x1d400, end: 0x1d7ff }, // Mathematical Alphanumeric Symbols\n { begin: 0xff000, end: 0xffffd }, // Private Use (plane 15)\n { begin: 0xfe00, end: 0xfe0f }, // Variation Selectors\n { begin: 0xe0000, end: 0xe007f }, // Tags\n { begin: 0x1900, end: 0x194f }, // Limbu\n { begin: 0x1950, end: 0x197f }, // Tai Le\n { begin: 0x1980, end: 0x19df }, // New Tai Lue\n { begin: 0x1a00, end: 0x1a1f }, // Buginese\n { begin: 0x2c00, end: 0x2c5f }, // Glagolitic\n { begin: 0x2d30, end: 0x2d7f }, // Tifinagh\n { begin: 0x4dc0, end: 0x4dff }, // Yijing Hexagram Symbols\n { begin: 0xa800, end: 0xa82f }, // Syloti Nagri\n { begin: 0x10000, end: 0x1007f }, // Linear B Syllabary\n { begin: 0x10140, end: 0x1018f }, // Ancient Greek Numbers\n { begin: 0x10380, end: 0x1039f }, // Ugaritic\n { begin: 0x103a0, end: 0x103df }, // Old Persian\n { begin: 0x10450, end: 0x1047f }, // Shavian\n { begin: 0x10480, end: 0x104af }, // Osmanya\n { begin: 0x10800, end: 0x1083f }, // Cypriot Syllabary\n { begin: 0x10a00, end: 0x10a5f }, // Kharoshthi\n { begin: 0x1d300, end: 0x1d35f }, // Tai Xuan Jing Symbols\n { begin: 0x12000, end: 0x123ff }, // Cuneiform\n { begin: 0x1d360, end: 0x1d37f }, // Counting Rod Numerals\n { begin: 0x1b80, end: 0x1bbf }, // Sundanese\n { begin: 0x1c00, end: 0x1c4f }, // Lepcha\n { begin: 0x1c50, end: 0x1c7f }, // Ol Chiki\n { begin: 0xa880, end: 0xa8df }, // Saurashtra\n { begin: 0xa900, end: 0xa92f }, // Kayah Li\n { begin: 0xa930, end: 0xa95f }, // Rejang\n { begin: 0xaa00, end: 0xaa5f }, // Cham\n { begin: 0x10190, end: 0x101cf }, // Ancient Symbols\n { begin: 0x101d0, end: 0x101ff }, // Phaistos Disc\n { begin: 0x102a0, end: 0x102df }, // Carian\n { begin: 0x1f030, end: 0x1f09f }, // Domino Tiles\n];\n\nfunction getUnicodeRangeFor(value) {\n for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n const range = UnicodeRanges[i];\n if (value >= range.begin && value < range.end) {\n return i;\n }\n }\n return -1;\n}\n\nfunction isRTLRangeFor(value) {\n let range = UnicodeRanges[13];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n range = UnicodeRanges[11];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n return false;\n}\n\n// The normalization table is obtained by filtering the Unicode characters\n// database with <compat> entries.\nconst getNormalizedUnicodes = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"\\u00A8\", \"\\u0020\\u0308\",\n \"\\u00AF\", \"\\u0020\\u0304\",\n \"\\u00B4\", \"\\u0020\\u0301\",\n \"\\u00B5\", \"\\u03BC\",\n \"\\u00B8\", \"\\u0020\\u0327\",\n \"\\u0132\", \"\\u0049\\u004A\",\n \"\\u0133\", \"\\u0069\\u006A\",\n \"\\u013F\", \"\\u004C\\u00B7\",\n \"\\u0140\", \"\\u006C\\u00B7\",\n \"\\u0149\", \"\\u02BC\\u006E\",\n \"\\u017F\", \"\\u0073\",\n \"\\u01C4\", \"\\u0044\\u017D\",\n \"\\u01C5\", \"\\u0044\\u017E\",\n \"\\u01C6\", \"\\u0064\\u017E\",\n \"\\u01C7\", \"\\u004C\\u004A\",\n \"\\u01C8\", \"\\u004C\\u006A\",\n \"\\u01C9\", \"\\u006C\\u006A\",\n \"\\u01CA\", \"\\u004E\\u004A\",\n \"\\u01CB\", \"\\u004E\\u006A\",\n \"\\u01CC\", \"\\u006E\\u006A\",\n \"\\u01F1\", \"\\u0044\\u005A\",\n \"\\u01F2\", \"\\u0044\\u007A\",\n \"\\u01F3\", \"\\u0064\\u007A\",\n \"\\u02D8\", \"\\u0020\\u0306\",\n \"\\u02D9\", \"\\u0020\\u0307\",\n \"\\u02DA\", \"\\u0020\\u030A\",\n \"\\u02DB\", \"\\u0020\\u0328\",\n \"\\u02DC\", \"\\u0020\\u0303\",\n \"\\u02DD\", \"\\u0020\\u030B\",\n \"\\u037A\", \"\\u0020\\u0345\",\n \"\\u0384\", \"\\u0020\\u0301\",\n \"\\u03D0\", \"\\u03B2\",\n \"\\u03D1\", \"\\u03B8\",\n \"\\u03D2\", \"\\u03A5\",\n \"\\u03D5\", \"\\u03C6\",\n \"\\u03D6\", \"\\u03C0\",\n \"\\u03F0\", \"\\u03BA\",\n \"\\u03F1\", \"\\u03C1\",\n \"\\u03F2\", \"\\u03C2\",\n \"\\u03F4\", \"\\u0398\",\n \"\\u03F5\", \"\\u03B5\",\n \"\\u03F9\", \"\\u03A3\",\n \"\\u0587\", \"\\u0565\\u0582\",\n \"\\u0675\", \"\\u0627\\u0674\",\n \"\\u0676\", \"\\u0648\\u0674\",\n \"\\u0677\", \"\\u06C7\\u0674\",\n \"\\u0678\", \"\\u064A\\u0674\",\n \"\\u0E33\", \"\\u0E4D\\u0E32\",\n \"\\u0EB3\", \"\\u0ECD\\u0EB2\",\n \"\\u0EDC\", \"\\u0EAB\\u0E99\",\n \"\\u0EDD\", \"\\u0EAB\\u0EA1\",\n \"\\u0F77\", \"\\u0FB2\\u0F81\",\n \"\\u0F79\", \"\\u0FB3\\u0F81\",\n \"\\u1E9A\", \"\\u0061\\u02BE\",\n \"\\u1FBD\", \"\\u0020\\u0313\",\n \"\\u1FBF\", \"\\u0020\\u0313\",\n \"\\u1FC0\", \"\\u0020\\u0342\",\n \"\\u1FFE\", \"\\u0020\\u0314\",\n \"\\u2002\", \"\\u0020\",\n \"\\u2003\", \"\\u0020\",\n \"\\u2004\", \"\\u0020\",\n \"\\u2005\", \"\\u0020\",\n \"\\u2006\", \"\\u0020\",\n \"\\u2008\", \"\\u0020\",\n \"\\u2009\", \"\\u0020\",\n \"\\u200A\", \"\\u0020\",\n \"\\u2017\", \"\\u0020\\u0333\",\n \"\\u2024\", \"\\u002E\",\n \"\\u2025\", \"\\u002E\\u002E\",\n \"\\u2026\", \"\\u002E\\u002E\\u002E\",\n \"\\u2033\", \"\\u2032\\u2032\",\n \"\\u2034\", \"\\u2032\\u2032\\u2032\",\n \"\\u2036\", \"\\u2035\\u2035\",\n \"\\u2037\", \"\\u2035\\u2035\\u2035\",\n \"\\u203C\", \"\\u0021\\u0021\",\n \"\\u203E\", \"\\u0020\\u0305\",\n \"\\u2047\", \"\\u003F\\u003F\",\n \"\\u2048\", \"\\u003F\\u0021\",\n \"\\u2049\", \"\\u0021\\u003F\",\n \"\\u2057\", \"\\u2032\\u2032\\u2032\\u2032\",\n \"\\u205F\", \"\\u0020\",\n \"\\u20A8\", \"\\u0052\\u0073\",\n \"\\u2100\", \"\\u0061\\u002F\\u0063\",\n \"\\u2101\", \"\\u0061\\u002F\\u0073\",\n \"\\u2103\", \"\\u00B0\\u0043\",\n \"\\u2105\", \"\\u0063\\u002F\\u006F\",\n \"\\u2106\", \"\\u0063\\u002F\\u0075\",\n \"\\u2107\", \"\\u0190\",\n \"\\u2109\", \"\\u00B0\\u0046\",\n \"\\u2116\", \"\\u004E\\u006F\",\n \"\\u2121\", \"\\u0054\\u0045\\u004C\",\n \"\\u2135\", \"\\u05D0\",\n \"\\u2136\", \"\\u05D1\",\n \"\\u2137\", \"\\u05D2\",\n \"\\u2138\", \"\\u05D3\",\n \"\\u213B\", \"\\u0046\\u0041\\u0058\",\n \"\\u2160\", \"\\u0049\",\n \"\\u2161\", \"\\u0049\\u0049\",\n \"\\u2162\", \"\\u0049\\u0049\\u0049\",\n \"\\u2163\", \"\\u0049\\u0056\",\n \"\\u2164\", \"\\u0056\",\n \"\\u2165\", \"\\u0056\\u0049\",\n \"\\u2166\", \"\\u0056\\u0049\\u0049\",\n \"\\u2167\", \"\\u0056\\u0049\\u0049\\u0049\",\n \"\\u2168\", \"\\u0049\\u0058\",\n \"\\u2169\", \"\\u0058\",\n \"\\u216A\", \"\\u0058\\u0049\",\n \"\\u216B\", \"\\u0058\\u0049\\u0049\",\n \"\\u216C\", \"\\u004C\",\n \"\\u216D\", \"\\u0043\",\n \"\\u216E\", \"\\u0044\",\n \"\\u216F\", \"\\u004D\",\n \"\\u2170\", \"\\u0069\",\n \"\\u2171\", \"\\u0069\\u0069\",\n \"\\u2172\", \"\\u0069\\u0069\\u0069\",\n \"\\u2173\", \"\\u0069\\u0076\",\n \"\\u2174\", \"\\u0076\",\n \"\\u2175\", \"\\u0076\\u0069\",\n \"\\u2176\", \"\\u0076\\u0069\\u0069\",\n \"\\u2177\", \"\\u0076\\u0069\\u0069\\u0069\",\n \"\\u2178\", \"\\u0069\\u0078\",\n \"\\u2179\", \"\\u0078\",\n \"\\u217A\", \"\\u0078\\u0069\",\n \"\\u217B\", \"\\u0078\\u0069\\u0069\",\n \"\\u217C\", \"\\u006C\",\n \"\\u217D\", \"\\u0063\",\n \"\\u217E\", \"\\u0064\",\n \"\\u217F\", \"\\u006D\",\n \"\\u222C\", \"\\u222B\\u222B\",\n \"\\u222D\", \"\\u222B\\u222B\\u222B\",\n \"\\u222F\", \"\\u222E\\u222E\",\n \"\\u2230\", \"\\u222E\\u222E\\u222E\",\n \"\\u2474\", \"\\u0028\\u0031\\u0029\",\n \"\\u2475\", \"\\u0028\\u0032\\u0029\",\n \"\\u2476\", \"\\u0028\\u0033\\u0029\",\n \"\\u2477\", \"\\u0028\\u0034\\u0029\",\n \"\\u2478\", \"\\u0028\\u0035\\u0029\",\n \"\\u2479\", \"\\u0028\\u0036\\u0029\",\n \"\\u247A\", \"\\u0028\\u0037\\u0029\",\n \"\\u247B\", \"\\u0028\\u0038\\u0029\",\n \"\\u247C\", \"\\u0028\\u0039\\u0029\",\n \"\\u247D\", \"\\u0028\\u0031\\u0030\\u0029\",\n \"\\u247E\", \"\\u0028\\u0031\\u0031\\u0029\",\n \"\\u247F\", \"\\u0028\\u0031\\u0032\\u0029\",\n \"\\u2480\", \"\\u0028\\u0031\\u0033\\u0029\",\n \"\\u2481\", \"\\u0028\\u0031\\u0034\\u0029\",\n \"\\u2482\", \"\\u0028\\u0031\\u0035\\u0029\",\n \"\\u2483\", \"\\u0028\\u0031\\u0036\\u0029\",\n \"\\u2484\", \"\\u0028\\u0031\\u0037\\u0029\",\n \"\\u2485\", \"\\u0028\\u0031\\u0038\\u0029\",\n \"\\u2486\", \"\\u0028\\u0031\\u0039\\u0029\",\n \"\\u2487\", \"\\u0028\\u0032\\u0030\\u0029\",\n \"\\u2488\", \"\\u0031\\u002E\",\n \"\\u2489\", \"\\u0032\\u002E\",\n \"\\u248A\", \"\\u0033\\u002E\",\n \"\\u248B\", \"\\u0034\\u002E\",\n \"\\u248C\", \"\\u0035\\u002E\",\n \"\\u248D\", \"\\u0036\\u002E\",\n \"\\u248E\", \"\\u0037\\u002E\",\n \"\\u248F\", \"\\u0038\\u002E\",\n \"\\u2490\", \"\\u0039\\u002E\",\n \"\\u2491\", \"\\u0031\\u0030\\u002E\",\n \"\\u2492\", \"\\u0031\\u0031\\u002E\",\n \"\\u2493\", \"\\u0031\\u0032\\u002E\",\n \"\\u2494\", \"\\u0031\\u0033\\u002E\",\n \"\\u2495\", \"\\u0031\\u0034\\u002E\",\n \"\\u2496\", \"\\u0031\\u0035\\u002E\",\n \"\\u2497\", \"\\u0031\\u0036\\u002E\",\n \"\\u2498\", \"\\u0031\\u0037\\u002E\",\n \"\\u2499\", \"\\u0031\\u0038\\u002E\",\n \"\\u249A\", \"\\u0031\\u0039\\u002E\",\n \"\\u249B\", \"\\u0032\\u0030\\u002E\",\n \"\\u249C\", \"\\u0028\\u0061\\u0029\",\n \"\\u249D\", \"\\u0028\\u0062\\u0029\",\n \"\\u249E\", \"\\u0028\\u0063\\u0029\",\n \"\\u249F\", \"\\u0028\\u0064\\u0029\",\n \"\\u24A0\", \"\\u0028\\u0065\\u0029\",\n \"\\u24A1\", \"\\u0028\\u0066\\u0029\",\n \"\\u24A2\", \"\\u0028\\u0067\\u0029\",\n \"\\u24A3\", \"\\u0028\\u0068\\u0029\",\n \"\\u24A4\", \"\\u0028\\u0069\\u0029\",\n \"\\u24A5\", \"\\u0028\\u006A\\u0029\",\n \"\\u24A6\", \"\\u0028\\u006B\\u0029\",\n \"\\u24A7\", \"\\u0028\\u006C\\u0029\",\n \"\\u24A8\", \"\\u0028\\u006D\\u0029\",\n \"\\u24A9\", \"\\u0028\\u006E\\u0029\",\n \"\\u24AA\", \"\\u0028\\u006F\\u0029\",\n \"\\u24AB\", \"\\u0028\\u0070\\u0029\",\n \"\\u24AC\", \"\\u0028\\u0071\\u0029\",\n \"\\u24AD\", \"\\u0028\\u0072\\u0029\",\n \"\\u24AE\", \"\\u0028\\u0073\\u0029\",\n \"\\u24AF\", \"\\u0028\\u0074\\u0029\",\n \"\\u24B0\", \"\\u0028\\u0075\\u0029\",\n \"\\u24B1\", \"\\u0028\\u0076\\u0029\",\n \"\\u24B2\", \"\\u0028\\u0077\\u0029\",\n \"\\u24B3\", \"\\u0028\\u0078\\u0029\",\n \"\\u24B4\", \"\\u0028\\u0079\\u0029\",\n \"\\u24B5\", \"\\u0028\\u007A\\u0029\",\n \"\\u2A0C\", \"\\u222B\\u222B\\u222B\\u222B\",\n \"\\u2A74\", \"\\u003A\\u003A\\u003D\",\n \"\\u2A75\", \"\\u003D\\u003D\",\n \"\\u2A76\", \"\\u003D\\u003D\\u003D\",\n \"\\u2E9F\", \"\\u6BCD\",\n \"\\u2EF3\", \"\\u9F9F\",\n \"\\u2F00\", \"\\u4E00\",\n \"\\u2F01\", \"\\u4E28\",\n \"\\u2F02\", \"\\u4E36\",\n \"\\u2F03\", \"\\u4E3F\",\n \"\\u2F04\", \"\\u4E59\",\n \"\\u2F05\", \"\\u4E85\",\n \"\\u2F06\", \"\\u4E8C\",\n \"\\u2F07\", \"\\u4EA0\",\n \"\\u2F08\", \"\\u4EBA\",\n \"\\u2F09\", \"\\u513F\",\n \"\\u2F0A\", \"\\u5165\",\n \"\\u2F0B\", \"\\u516B\",\n \"\\u2F0C\", \"\\u5182\",\n \"\\u2F0D\", \"\\u5196\",\n \"\\u2F0E\", \"\\u51AB\",\n \"\\u2F0F\", \"\\u51E0\",\n \"\\u2F10\", \"\\u51F5\",\n \"\\u2F11\", \"\\u5200\",\n \"\\u2F12\", \"\\u529B\",\n \"\\u2F13\", \"\\u52F9\",\n \"\\u2F14\", \"\\u5315\",\n \"\\u2F15\", \"\\u531A\",\n \"\\u2F16\", \"\\u5338\",\n \"\\u2F17\", \"\\u5341\",\n \"\\u2F18\", \"\\u535C\",\n \"\\u2F19\", \"\\u5369\",\n \"\\u2F1A\", \"\\u5382\",\n \"\\u2F1B\", \"\\u53B6\",\n \"\\u2F1C\", \"\\u53C8\",\n \"\\u2F1D\", \"\\u53E3\",\n \"\\u2F1E\", \"\\u56D7\",\n \"\\u2F1F\", \"\\u571F\",\n \"\\u2F20\", \"\\u58EB\",\n \"\\u2F21\", \"\\u5902\",\n \"\\u2F22\", \"\\u590A\",\n \"\\u2F23\", \"\\u5915\",\n \"\\u2F24\", \"\\u5927\",\n \"\\u2F25\", \"\\u5973\",\n \"\\u2F26\", \"\\u5B50\",\n \"\\u2F27\", \"\\u5B80\",\n \"\\u2F28\", \"\\u5BF8\",\n \"\\u2F29\", \"\\u5C0F\",\n \"\\u2F2A\", \"\\u5C22\",\n \"\\u2F2B\", \"\\u5C38\",\n \"\\u2F2C\", \"\\u5C6E\",\n \"\\u2F2D\", \"\\u5C71\",\n \"\\u2F2E\", \"\\u5DDB\",\n \"\\u2F2F\", \"\\u5DE5\",\n \"\\u2F30\", \"\\u5DF1\",\n \"\\u2F31\", \"\\u5DFE\",\n \"\\u2F32\", \"\\u5E72\",\n \"\\u2F33\", \"\\u5E7A\",\n \"\\u2F34\", \"\\u5E7F\",\n \"\\u2F35\", \"\\u5EF4\",\n \"\\u2F36\", \"\\u5EFE\",\n \"\\u2F37\", \"\\u5F0B\",\n \"\\u2F38\", \"\\u5F13\",\n \"\\u2F39\", \"\\u5F50\",\n \"\\u2F3A\", \"\\u5F61\",\n \"\\u2F3B\", \"\\u5F73\",\n \"\\u2F3C\", \"\\u5FC3\",\n \"\\u2F3D\", \"\\u6208\",\n \"\\u2F3E\", \"\\u6236\",\n \"\\u2F3F\", \"\\u624B\",\n \"\\u2F40\", \"\\u652F\",\n \"\\u2F41\", \"\\u6534\",\n \"\\u2F42\", \"\\u6587\",\n \"\\u2F43\", \"\\u6597\",\n \"\\u2F44\", \"\\u65A4\",\n \"\\u2F45\", \"\\u65B9\",\n \"\\u2F46\", \"\\u65E0\",\n \"\\u2F47\", \"\\u65E5\",\n \"\\u2F48\", \"\\u66F0\",\n \"\\u2F49\", \"\\u6708\",\n \"\\u2F4A\", \"\\u6728\",\n \"\\u2F4B\", \"\\u6B20\",\n \"\\u2F4C\", \"\\u6B62\",\n \"\\u2F4D\", \"\\u6B79\",\n \"\\u2F4E\", \"\\u6BB3\",\n \"\\u2F4F\", \"\\u6BCB\",\n \"\\u2F50\", \"\\u6BD4\",\n \"\\u2F51\", \"\\u6BDB\",\n \"\\u2F52\", \"\\u6C0F\",\n \"\\u2F53\", \"\\u6C14\",\n \"\\u2F54\", \"\\u6C34\",\n \"\\u2F55\", \"\\u706B\",\n \"\\u2F56\", \"\\u722A\",\n \"\\u2F57\", \"\\u7236\",\n \"\\u2F58\", \"\\u723B\",\n \"\\u2F59\", \"\\u723F\",\n \"\\u2F5A\", \"\\u7247\",\n \"\\u2F5B\", \"\\u7259\",\n \"\\u2F5C\", \"\\u725B\",\n \"\\u2F5D\", \"\\u72AC\",\n \"\\u2F5E\", \"\\u7384\",\n \"\\u2F5F\", \"\\u7389\",\n \"\\u2F60\", \"\\u74DC\",\n \"\\u2F61\", \"\\u74E6\",\n \"\\u2F62\", \"\\u7518\",\n \"\\u2F63\", \"\\u751F\",\n \"\\u2F64\", \"\\u7528\",\n \"\\u2F65\", \"\\u7530\",\n \"\\u2F66\", \"\\u758B\",\n \"\\u2F67\", \"\\u7592\",\n \"\\u2F68\", \"\\u7676\",\n \"\\u2F69\", \"\\u767D\",\n \"\\u2F6A\", \"\\u76AE\",\n \"\\u2F6B\", \"\\u76BF\",\n \"\\u2F6C\", \"\\u76EE\",\n \"\\u2F6D\", \"\\u77DB\",\n \"\\u2F6E\", \"\\u77E2\",\n \"\\u2F6F\", \"\\u77F3\",\n \"\\u2F70\", \"\\u793A\",\n \"\\u2F71\", \"\\u79B8\",\n \"\\u2F72\", \"\\u79BE\",\n \"\\u2F73\", \"\\u7A74\",\n \"\\u2F74\", \"\\u7ACB\",\n \"\\u2F75\", \"\\u7AF9\",\n \"\\u2F76\", \"\\u7C73\",\n \"\\u2F77\", \"\\u7CF8\",\n \"\\u2F78\", \"\\u7F36\",\n \"\\u2F79\", \"\\u7F51\",\n \"\\u2F7A\", \"\\u7F8A\",\n \"\\u2F7B\", \"\\u7FBD\",\n \"\\u2F7C\", \"\\u8001\",\n \"\\u2F7D\", \"\\u800C\",\n \"\\u2F7E\", \"\\u8012\",\n \"\\u2F7F\", \"\\u8033\",\n \"\\u2F80\", \"\\u807F\",\n \"\\u2F81\", \"\\u8089\",\n \"\\u2F82\", \"\\u81E3\",\n \"\\u2F83\", \"\\u81EA\",\n \"\\u2F84\", \"\\u81F3\",\n \"\\u2F85\", \"\\u81FC\",\n \"\\u2F86\", \"\\u820C\",\n \"\\u2F87\", \"\\u821B\",\n \"\\u2F88\", \"\\u821F\",\n \"\\u2F89\", \"\\u826E\",\n \"\\u2F8A\", \"\\u8272\",\n \"\\u2F8B\", \"\\u8278\",\n \"\\u2F8C\", \"\\u864D\",\n \"\\u2F8D\", \"\\u866B\",\n \"\\u2F8E\", \"\\u8840\",\n \"\\u2F8F\", \"\\u884C\",\n \"\\u2F90\", \"\\u8863\",\n \"\\u2F91\", \"\\u897E\",\n \"\\u2F92\", \"\\u898B\",\n \"\\u2F93\", \"\\u89D2\",\n \"\\u2F94\", \"\\u8A00\",\n \"\\u2F95\", \"\\u8C37\",\n \"\\u2F96\", \"\\u8C46\",\n \"\\u2F97\", \"\\u8C55\",\n \"\\u2F98\", \"\\u8C78\",\n \"\\u2F99\", \"\\u8C9D\",\n \"\\u2F9A\", \"\\u8D64\",\n \"\\u2F9B\", \"\\u8D70\",\n \"\\u2F9C\", \"\\u8DB3\",\n \"\\u2F9D\", \"\\u8EAB\",\n \"\\u2F9E\", \"\\u8ECA\",\n \"\\u2F9F\", \"\\u8F9B\",\n \"\\u2FA0\", \"\\u8FB0\",\n \"\\u2FA1\", \"\\u8FB5\",\n \"\\u2FA2\", \"\\u9091\",\n \"\\u2FA3\", \"\\u9149\",\n \"\\u2FA4\", \"\\u91C6\",\n \"\\u2FA5\", \"\\u91CC\",\n \"\\u2FA6\", \"\\u91D1\",\n \"\\u2FA7\", \"\\u9577\",\n \"\\u2FA8\", \"\\u9580\",\n \"\\u2FA9\", \"\\u961C\",\n \"\\u2FAA\", \"\\u96B6\",\n \"\\u2FAB\", \"\\u96B9\",\n \"\\u2FAC\", \"\\u96E8\",\n \"\\u2FAD\", \"\\u9751\",\n \"\\u2FAE\", \"\\u975E\",\n \"\\u2FAF\", \"\\u9762\",\n \"\\u2FB0\", \"\\u9769\",\n \"\\u2FB1\", \"\\u97CB\",\n \"\\u2FB2\", \"\\u97ED\",\n \"\\u2FB3\", \"\\u97F3\",\n \"\\u2FB4\", \"\\u9801\",\n \"\\u2FB5\", \"\\u98A8\",\n \"\\u2FB6\", \"\\u98DB\",\n \"\\u2FB7\", \"\\u98DF\",\n \"\\u2FB8\", \"\\u9996\",\n \"\\u2FB9\", \"\\u9999\",\n \"\\u2FBA\", \"\\u99AC\",\n \"\\u2FBB\", \"\\u9AA8\",\n \"\\u2FBC\", \"\\u9AD8\",\n \"\\u2FBD\", \"\\u9ADF\",\n \"\\u2FBE\", \"\\u9B25\",\n \"\\u2FBF\", \"\\u9B2F\",\n \"\\u2FC0\", \"\\u9B32\",\n \"\\u2FC1\", \"\\u9B3C\",\n \"\\u2FC2\", \"\\u9B5A\",\n \"\\u2FC3\", \"\\u9CE5\",\n \"\\u2FC4\", \"\\u9E75\",\n \"\\u2FC5\", \"\\u9E7F\",\n \"\\u2FC6\", \"\\u9EA5\",\n \"\\u2FC7\", \"\\u9EBB\",\n \"\\u2FC8\", \"\\u9EC3\",\n \"\\u2FC9\", \"\\u9ECD\",\n \"\\u2FCA\", \"\\u9ED1\",\n \"\\u2FCB\", \"\\u9EF9\",\n \"\\u2FCC\", \"\\u9EFD\",\n \"\\u2FCD\", \"\\u9F0E\",\n \"\\u2FCE\", \"\\u9F13\",\n \"\\u2FCF\", \"\\u9F20\",\n \"\\u2FD0\", \"\\u9F3B\",\n \"\\u2FD1\", \"\\u9F4A\",\n \"\\u2FD2\", \"\\u9F52\",\n \"\\u2FD3\", \"\\u9F8D\",\n \"\\u2FD4\", \"\\u9F9C\",\n \"\\u2FD5\", \"\\u9FA0\",\n \"\\u3036\", \"\\u3012\",\n \"\\u3038\", \"\\u5341\",\n \"\\u3039\", \"\\u5344\",\n \"\\u303A\", \"\\u5345\",\n \"\\u309B\", \"\\u0020\\u3099\",\n \"\\u309C\", \"\\u0020\\u309A\",\n \"\\u3131\", \"\\u1100\",\n \"\\u3132\", \"\\u1101\",\n \"\\u3133\", \"\\u11AA\",\n \"\\u3134\", \"\\u1102\",\n \"\\u3135\", \"\\u11AC\",\n \"\\u3136\", \"\\u11AD\",\n \"\\u3137\", \"\\u1103\",\n \"\\u3138\", \"\\u1104\",\n \"\\u3139\", \"\\u1105\",\n \"\\u313A\", \"\\u11B0\",\n \"\\u313B\", \"\\u11B1\",\n \"\\u313C\", \"\\u11B2\",\n \"\\u313D\", \"\\u11B3\",\n \"\\u313E\", \"\\u11B4\",\n \"\\u313F\", \"\\u11B5\",\n \"\\u3140\", \"\\u111A\",\n \"\\u3141\", \"\\u1106\",\n \"\\u3142\", \"\\u1107\",\n \"\\u3143\", \"\\u1108\",\n \"\\u3144\", \"\\u1121\",\n \"\\u3145\", \"\\u1109\",\n \"\\u3146\", \"\\u110A\",\n \"\\u3147\", \"\\u110B\",\n \"\\u3148\", \"\\u110C\",\n \"\\u3149\", \"\\u110D\",\n \"\\u314A\", \"\\u110E\",\n \"\\u314B\", \"\\u110F\",\n \"\\u314C\", \"\\u1110\",\n \"\\u314D\", \"\\u1111\",\n \"\\u314E\", \"\\u1112\",\n \"\\u314F\", \"\\u1161\",\n \"\\u3150\", \"\\u1162\",\n \"\\u3151\", \"\\u1163\",\n \"\\u3152\", \"\\u1164\",\n \"\\u3153\", \"\\u1165\",\n \"\\u3154\", \"\\u1166\",\n \"\\u3155\", \"\\u1167\",\n \"\\u3156\", \"\\u1168\",\n \"\\u3157\", \"\\u1169\",\n \"\\u3158\", \"\\u116A\",\n \"\\u3159\", \"\\u116B\",\n \"\\u315A\", \"\\u116C\",\n \"\\u315B\", \"\\u116D\",\n \"\\u315C\", \"\\u116E\",\n \"\\u315D\", \"\\u116F\",\n \"\\u315E\", \"\\u1170\",\n \"\\u315F\", \"\\u1171\",\n \"\\u3160\", \"\\u1172\",\n \"\\u3161\", \"\\u1173\",\n \"\\u3162\", \"\\u1174\",\n \"\\u3163\", \"\\u1175\",\n \"\\u3164\", \"\\u1160\",\n \"\\u3165\", \"\\u1114\",\n \"\\u3166\", \"\\u1115\",\n \"\\u3167\", \"\\u11C7\",\n \"\\u3168\", \"\\u11C8\",\n \"\\u3169\", \"\\u11CC\",\n \"\\u316A\", \"\\u11CE\",\n \"\\u316B\", \"\\u11D3\",\n \"\\u316C\", \"\\u11D7\",\n \"\\u316D\", \"\\u11D9\",\n \"\\u316E\", \"\\u111C\",\n \"\\u316F\", \"\\u11DD\",\n \"\\u3170\", \"\\u11DF\",\n \"\\u3171\", \"\\u111D\",\n \"\\u3172\", \"\\u111E\",\n \"\\u3173\", \"\\u1120\",\n \"\\u3174\", \"\\u1122\",\n \"\\u3175\", \"\\u1123\",\n \"\\u3176\", \"\\u1127\",\n \"\\u3177\", \"\\u1129\",\n \"\\u3178\", \"\\u112B\",\n \"\\u3179\", \"\\u112C\",\n \"\\u317A\", \"\\u112D\",\n \"\\u317B\", \"\\u112E\",\n \"\\u317C\", \"\\u112F\",\n \"\\u317D\", \"\\u1132\",\n \"\\u317E\", \"\\u1136\",\n \"\\u317F\", \"\\u1140\",\n \"\\u3180\", \"\\u1147\",\n \"\\u3181\", \"\\u114C\",\n \"\\u3182\", \"\\u11F1\",\n \"\\u3183\", \"\\u11F2\",\n \"\\u3184\", \"\\u1157\",\n \"\\u3185\", \"\\u1158\",\n \"\\u3186\", \"\\u1159\",\n \"\\u3187\", \"\\u1184\",\n \"\\u3188\", \"\\u1185\",\n \"\\u3189\", \"\\u1188\",\n \"\\u318A\", \"\\u1191\",\n \"\\u318B\", \"\\u1192\",\n \"\\u318C\", \"\\u1194\",\n \"\\u318D\", \"\\u119E\",\n \"\\u318E\", \"\\u11A1\",\n \"\\u3200\", \"\\u0028\\u1100\\u0029\",\n \"\\u3201\", \"\\u0028\\u1102\\u0029\",\n \"\\u3202\", \"\\u0028\\u1103\\u0029\",\n \"\\u3203\", \"\\u0028\\u1105\\u0029\",\n \"\\u3204\", \"\\u0028\\u1106\\u0029\",\n \"\\u3205\", \"\\u0028\\u1107\\u0029\",\n \"\\u3206\", \"\\u0028\\u1109\\u0029\",\n \"\\u3207\", \"\\u0028\\u110B\\u0029\",\n \"\\u3208\", \"\\u0028\\u110C\\u0029\",\n \"\\u3209\", \"\\u0028\\u110E\\u0029\",\n \"\\u320A\", \"\\u0028\\u110F\\u0029\",\n \"\\u320B\", \"\\u0028\\u1110\\u0029\",\n \"\\u320C\", \"\\u0028\\u1111\\u0029\",\n \"\\u320D\", \"\\u0028\\u1112\\u0029\",\n \"\\u320E\", \"\\u0028\\u1100\\u1161\\u0029\",\n \"\\u320F\", \"\\u0028\\u1102\\u1161\\u0029\",\n \"\\u3210\", \"\\u0028\\u1103\\u1161\\u0029\",\n \"\\u3211\", \"\\u0028\\u1105\\u1161\\u0029\",\n \"\\u3212\", \"\\u0028\\u1106\\u1161\\u0029\",\n \"\\u3213\", \"\\u0028\\u1107\\u1161\\u0029\",\n \"\\u3214\", \"\\u0028\\u1109\\u1161\\u0029\",\n \"\\u3215\", \"\\u0028\\u110B\\u1161\\u0029\",\n \"\\u3216\", \"\\u0028\\u110C\\u1161\\u0029\",\n \"\\u3217\", \"\\u0028\\u110E\\u1161\\u0029\",\n \"\\u3218\", \"\\u0028\\u110F\\u1161\\u0029\",\n \"\\u3219\", \"\\u0028\\u1110\\u1161\\u0029\",\n \"\\u321A\", \"\\u0028\\u1111\\u1161\\u0029\",\n \"\\u321B\", \"\\u0028\\u1112\\u1161\\u0029\",\n \"\\u321C\", \"\\u0028\\u110C\\u116E\\u0029\",\n \"\\u321D\", \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\",\n \"\\u321E\", \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\",\n \"\\u3220\", \"\\u0028\\u4E00\\u0029\",\n \"\\u3221\", \"\\u0028\\u4E8C\\u0029\",\n \"\\u3222\", \"\\u0028\\u4E09\\u0029\",\n \"\\u3223\", \"\\u0028\\u56DB\\u0029\",\n \"\\u3224\", \"\\u0028\\u4E94\\u0029\",\n \"\\u3225\", \"\\u0028\\u516D\\u0029\",\n \"\\u3226\", \"\\u0028\\u4E03\\u0029\",\n \"\\u3227\", \"\\u0028\\u516B\\u0029\",\n \"\\u3228\", \"\\u0028\\u4E5D\\u0029\",\n \"\\u3229\", \"\\u0028\\u5341\\u0029\",\n \"\\u322A\", \"\\u0028\\u6708\\u0029\",\n \"\\u322B\", \"\\u0028\\u706B\\u0029\",\n \"\\u322C\", \"\\u0028\\u6C34\\u0029\",\n \"\\u322D\", \"\\u0028\\u6728\\u0029\",\n \"\\u322E\", \"\\u0028\\u91D1\\u0029\",\n \"\\u322F\", \"\\u0028\\u571F\\u0029\",\n \"\\u3230\", \"\\u0028\\u65E5\\u0029\",\n \"\\u3231\", \"\\u0028\\u682A\\u0029\",\n \"\\u3232\", \"\\u0028\\u6709\\u0029\",\n \"\\u3233\", \"\\u0028\\u793E\\u0029\",\n \"\\u3234\", \"\\u0028\\u540D\\u0029\",\n \"\\u3235\", \"\\u0028\\u7279\\u0029\",\n \"\\u3236\", \"\\u0028\\u8CA1\\u0029\",\n \"\\u3237\", \"\\u0028\\u795D\\u0029\",\n \"\\u3238\", \"\\u0028\\u52B4\\u0029\",\n \"\\u3239\", \"\\u0028\\u4EE3\\u0029\",\n \"\\u323A\", \"\\u0028\\u547C\\u0029\",\n \"\\u323B\", \"\\u0028\\u5B66\\u0029\",\n \"\\u323C\", \"\\u0028\\u76E3\\u0029\",\n \"\\u323D\", \"\\u0028\\u4F01\\u0029\",\n \"\\u323E\", \"\\u0028\\u8CC7\\u0029\",\n \"\\u323F\", \"\\u0028\\u5354\\u0029\",\n \"\\u3240\", \"\\u0028\\u796D\\u0029\",\n \"\\u3241\", \"\\u0028\\u4F11\\u0029\",\n \"\\u3242\", \"\\u0028\\u81EA\\u0029\",\n \"\\u3243\", \"\\u0028\\u81F3\\u0029\",\n \"\\u32C0\", \"\\u0031\\u6708\",\n \"\\u32C1\", \"\\u0032\\u6708\",\n \"\\u32C2\", \"\\u0033\\u6708\",\n \"\\u32C3\", \"\\u0034\\u6708\",\n \"\\u32C4\", \"\\u0035\\u6708\",\n \"\\u32C5\", \"\\u0036\\u6708\",\n \"\\u32C6\", \"\\u0037\\u6708\",\n \"\\u32C7\", \"\\u0038\\u6708\",\n \"\\u32C8\", \"\\u0039\\u6708\",\n \"\\u32C9\", \"\\u0031\\u0030\\u6708\",\n \"\\u32CA\", \"\\u0031\\u0031\\u6708\",\n \"\\u32CB\", \"\\u0031\\u0032\\u6708\",\n \"\\u3358\", \"\\u0030\\u70B9\",\n \"\\u3359\", \"\\u0031\\u70B9\",\n \"\\u335A\", \"\\u0032\\u70B9\",\n \"\\u335B\", \"\\u0033\\u70B9\",\n \"\\u335C\", \"\\u0034\\u70B9\",\n \"\\u335D\", \"\\u0035\\u70B9\",\n \"\\u335E\", \"\\u0036\\u70B9\",\n \"\\u335F\", \"\\u0037\\u70B9\",\n \"\\u3360\", \"\\u0038\\u70B9\",\n \"\\u3361\", \"\\u0039\\u70B9\",\n \"\\u3362\", \"\\u0031\\u0030\\u70B9\",\n \"\\u3363\", \"\\u0031\\u0031\\u70B9\",\n \"\\u3364\", \"\\u0031\\u0032\\u70B9\",\n \"\\u3365\", \"\\u0031\\u0033\\u70B9\",\n \"\\u3366\", \"\\u0031\\u0034\\u70B9\",\n \"\\u3367\", \"\\u0031\\u0035\\u70B9\",\n \"\\u3368\", \"\\u0031\\u0036\\u70B9\",\n \"\\u3369\", \"\\u0031\\u0037\\u70B9\",\n \"\\u336A\", \"\\u0031\\u0038\\u70B9\",\n \"\\u336B\", \"\\u0031\\u0039\\u70B9\",\n \"\\u336C\", \"\\u0032\\u0030\\u70B9\",\n \"\\u336D\", \"\\u0032\\u0031\\u70B9\",\n \"\\u336E\", \"\\u0032\\u0032\\u70B9\",\n \"\\u336F\", \"\\u0032\\u0033\\u70B9\",\n \"\\u3370\", \"\\u0032\\u0034\\u70B9\",\n \"\\u33E0\", \"\\u0031\\u65E5\",\n \"\\u33E1\", \"\\u0032\\u65E5\",\n \"\\u33E2\", \"\\u0033\\u65E5\",\n \"\\u33E3\", \"\\u0034\\u65E5\",\n \"\\u33E4\", \"\\u0035\\u65E5\",\n \"\\u33E5\", \"\\u0036\\u65E5\",\n \"\\u33E6\", \"\\u0037\\u65E5\",\n \"\\u33E7\", \"\\u0038\\u65E5\",\n \"\\u33E8\", \"\\u0039\\u65E5\",\n \"\\u33E9\", \"\\u0031\\u0030\\u65E5\",\n \"\\u33EA\", \"\\u0031\\u0031\\u65E5\",\n \"\\u33EB\", \"\\u0031\\u0032\\u65E5\",\n \"\\u33EC\", \"\\u0031\\u0033\\u65E5\",\n \"\\u33ED\", \"\\u0031\\u0034\\u65E5\",\n \"\\u33EE\", \"\\u0031\\u0035\\u65E5\",\n \"\\u33EF\", \"\\u0031\\u0036\\u65E5\",\n \"\\u33F0\", \"\\u0031\\u0037\\u65E5\",\n \"\\u33F1\", \"\\u0031\\u0038\\u65E5\",\n \"\\u33F2\", \"\\u0031\\u0039\\u65E5\",\n \"\\u33F3\", \"\\u0032\\u0030\\u65E5\",\n \"\\u33F4\", \"\\u0032\\u0031\\u65E5\",\n \"\\u33F5\", \"\\u0032\\u0032\\u65E5\",\n \"\\u33F6\", \"\\u0032\\u0033\\u65E5\",\n \"\\u33F7\", \"\\u0032\\u0034\\u65E5\",\n \"\\u33F8\", \"\\u0032\\u0035\\u65E5\",\n \"\\u33F9\", \"\\u0032\\u0036\\u65E5\",\n \"\\u33FA\", \"\\u0032\\u0037\\u65E5\",\n \"\\u33FB\", \"\\u0032\\u0038\\u65E5\",\n \"\\u33FC\", \"\\u0032\\u0039\\u65E5\",\n \"\\u33FD\", \"\\u0033\\u0030\\u65E5\",\n \"\\u33FE\", \"\\u0033\\u0031\\u65E5\",\n \"\\uFB00\", \"\\u0066\\u0066\",\n \"\\uFB01\", \"\\u0066\\u0069\",\n \"\\uFB02\", \"\\u0066\\u006C\",\n \"\\uFB03\", \"\\u0066\\u0066\\u0069\",\n \"\\uFB04\", \"\\u0066\\u0066\\u006C\",\n \"\\uFB05\", \"\\u017F\\u0074\",\n \"\\uFB06\", \"\\u0073\\u0074\",\n \"\\uFB13\", \"\\u0574\\u0576\",\n \"\\uFB14\", \"\\u0574\\u0565\",\n \"\\uFB15\", \"\\u0574\\u056B\",\n \"\\uFB16\", \"\\u057E\\u0576\",\n \"\\uFB17\", \"\\u0574\\u056D\",\n \"\\uFB4F\", \"\\u05D0\\u05DC\",\n \"\\uFB50\", \"\\u0671\",\n \"\\uFB51\", \"\\u0671\",\n \"\\uFB52\", \"\\u067B\",\n \"\\uFB53\", \"\\u067B\",\n \"\\uFB54\", \"\\u067B\",\n \"\\uFB55\", \"\\u067B\",\n \"\\uFB56\", \"\\u067E\",\n \"\\uFB57\", \"\\u067E\",\n \"\\uFB58\", \"\\u067E\",\n \"\\uFB59\", \"\\u067E\",\n \"\\uFB5A\", \"\\u0680\",\n \"\\uFB5B\", \"\\u0680\",\n \"\\uFB5C\", \"\\u0680\",\n \"\\uFB5D\", \"\\u0680\",\n \"\\uFB5E\", \"\\u067A\",\n \"\\uFB5F\", \"\\u067A\",\n \"\\uFB60\", \"\\u067A\",\n \"\\uFB61\", \"\\u067A\",\n \"\\uFB62\", \"\\u067F\",\n \"\\uFB63\", \"\\u067F\",\n \"\\uFB64\", \"\\u067F\",\n \"\\uFB65\", \"\\u067F\",\n \"\\uFB66\", \"\\u0679\",\n \"\\uFB67\", \"\\u0679\",\n \"\\uFB68\", \"\\u0679\",\n \"\\uFB69\", \"\\u0679\",\n \"\\uFB6A\", \"\\u06A4\",\n \"\\uFB6B\", \"\\u06A4\",\n \"\\uFB6C\", \"\\u06A4\",\n \"\\uFB6D\", \"\\u06A4\",\n \"\\uFB6E\", \"\\u06A6\",\n \"\\uFB6F\", \"\\u06A6\",\n \"\\uFB70\", \"\\u06A6\",\n \"\\uFB71\", \"\\u06A6\",\n \"\\uFB72\", \"\\u0684\",\n \"\\uFB73\", \"\\u0684\",\n \"\\uFB74\", \"\\u0684\",\n \"\\uFB75\", \"\\u0684\",\n \"\\uFB76\", \"\\u0683\",\n \"\\uFB77\", \"\\u0683\",\n \"\\uFB78\", \"\\u0683\",\n \"\\uFB79\", \"\\u0683\",\n \"\\uFB7A\", \"\\u0686\",\n \"\\uFB7B\", \"\\u0686\",\n \"\\uFB7C\", \"\\u0686\",\n \"\\uFB7D\", \"\\u0686\",\n \"\\uFB7E\", \"\\u0687\",\n \"\\uFB7F\", \"\\u0687\",\n \"\\uFB80\", \"\\u0687\",\n \"\\uFB81\", \"\\u0687\",\n \"\\uFB82\", \"\\u068D\",\n \"\\uFB83\", \"\\u068D\",\n \"\\uFB84\", \"\\u068C\",\n \"\\uFB85\", \"\\u068C\",\n \"\\uFB86\", \"\\u068E\",\n \"\\uFB87\", \"\\u068E\",\n \"\\uFB88\", \"\\u0688\",\n \"\\uFB89\", \"\\u0688\",\n \"\\uFB8A\", \"\\u0698\",\n \"\\uFB8B\", \"\\u0698\",\n \"\\uFB8C\", \"\\u0691\",\n \"\\uFB8D\", \"\\u0691\",\n \"\\uFB8E\", \"\\u06A9\",\n \"\\uFB8F\", \"\\u06A9\",\n \"\\uFB90\", \"\\u06A9\",\n \"\\uFB91\", \"\\u06A9\",\n \"\\uFB92\", \"\\u06AF\",\n \"\\uFB93\", \"\\u06AF\",\n \"\\uFB94\", \"\\u06AF\",\n \"\\uFB95\", \"\\u06AF\",\n \"\\uFB96\", \"\\u06B3\",\n \"\\uFB97\", \"\\u06B3\",\n \"\\uFB98\", \"\\u06B3\",\n \"\\uFB99\", \"\\u06B3\",\n \"\\uFB9A\", \"\\u06B1\",\n \"\\uFB9B\", \"\\u06B1\",\n \"\\uFB9C\", \"\\u06B1\",\n \"\\uFB9D\", \"\\u06B1\",\n \"\\uFB9E\", \"\\u06BA\",\n \"\\uFB9F\", \"\\u06BA\",\n \"\\uFBA0\", \"\\u06BB\",\n \"\\uFBA1\", \"\\u06BB\",\n \"\\uFBA2\", \"\\u06BB\",\n \"\\uFBA3\", \"\\u06BB\",\n \"\\uFBA4\", \"\\u06C0\",\n \"\\uFBA5\", \"\\u06C0\",\n \"\\uFBA6\", \"\\u06C1\",\n \"\\uFBA7\", \"\\u06C1\",\n \"\\uFBA8\", \"\\u06C1\",\n \"\\uFBA9\", \"\\u06C1\",\n \"\\uFBAA\", \"\\u06BE\",\n \"\\uFBAB\", \"\\u06BE\",\n \"\\uFBAC\", \"\\u06BE\",\n \"\\uFBAD\", \"\\u06BE\",\n \"\\uFBAE\", \"\\u06D2\",\n \"\\uFBAF\", \"\\u06D2\",\n \"\\uFBB0\", \"\\u06D3\",\n \"\\uFBB1\", \"\\u06D3\",\n \"\\uFBD3\", \"\\u06AD\",\n \"\\uFBD4\", \"\\u06AD\",\n \"\\uFBD5\", \"\\u06AD\",\n \"\\uFBD6\", \"\\u06AD\",\n \"\\uFBD7\", \"\\u06C7\",\n \"\\uFBD8\", \"\\u06C7\",\n \"\\uFBD9\", \"\\u06C6\",\n \"\\uFBDA\", \"\\u06C6\",\n \"\\uFBDB\", \"\\u06C8\",\n \"\\uFBDC\", \"\\u06C8\",\n \"\\uFBDD\", \"\\u0677\",\n \"\\uFBDE\", \"\\u06CB\",\n \"\\uFBDF\", \"\\u06CB\",\n \"\\uFBE0\", \"\\u06C5\",\n \"\\uFBE1\", \"\\u06C5\",\n \"\\uFBE2\", \"\\u06C9\",\n \"\\uFBE3\", \"\\u06C9\",\n \"\\uFBE4\", \"\\u06D0\",\n \"\\uFBE5\", \"\\u06D0\",\n \"\\uFBE6\", \"\\u06D0\",\n \"\\uFBE7\", \"\\u06D0\",\n \"\\uFBE8\", \"\\u0649\",\n \"\\uFBE9\", \"\\u0649\",\n \"\\uFBEA\", \"\\u0626\\u0627\",\n \"\\uFBEB\", \"\\u0626\\u0627\",\n \"\\uFBEC\", \"\\u0626\\u06D5\",\n \"\\uFBED\", \"\\u0626\\u06D5\",\n \"\\uFBEE\", \"\\u0626\\u0648\",\n \"\\uFBEF\", \"\\u0626\\u0648\",\n \"\\uFBF0\", \"\\u0626\\u06C7\",\n \"\\uFBF1\", \"\\u0626\\u06C7\",\n \"\\uFBF2\", \"\\u0626\\u06C6\",\n \"\\uFBF3\", \"\\u0626\\u06C6\",\n \"\\uFBF4\", \"\\u0626\\u06C8\",\n \"\\uFBF5\", \"\\u0626\\u06C8\",\n \"\\uFBF6\", \"\\u0626\\u06D0\",\n \"\\uFBF7\", \"\\u0626\\u06D0\",\n \"\\uFBF8\", \"\\u0626\\u06D0\",\n \"\\uFBF9\", \"\\u0626\\u0649\",\n \"\\uFBFA\", \"\\u0626\\u0649\",\n \"\\uFBFB\", \"\\u0626\\u0649\",\n \"\\uFBFC\", \"\\u06CC\",\n \"\\uFBFD\", \"\\u06CC\",\n \"\\uFBFE\", \"\\u06CC\",\n \"\\uFBFF\", \"\\u06CC\",\n \"\\uFC00\", \"\\u0626\\u062C\",\n \"\\uFC01\", \"\\u0626\\u062D\",\n \"\\uFC02\", \"\\u0626\\u0645\",\n \"\\uFC03\", \"\\u0626\\u0649\",\n \"\\uFC04\", \"\\u0626\\u064A\",\n \"\\uFC05\", \"\\u0628\\u062C\",\n \"\\uFC06\", \"\\u0628\\u062D\",\n \"\\uFC07\", \"\\u0628\\u062E\",\n \"\\uFC08\", \"\\u0628\\u0645\",\n \"\\uFC09\", \"\\u0628\\u0649\",\n \"\\uFC0A\", \"\\u0628\\u064A\",\n \"\\uFC0B\", \"\\u062A\\u062C\",\n \"\\uFC0C\", \"\\u062A\\u062D\",\n \"\\uFC0D\", \"\\u062A\\u062E\",\n \"\\uFC0E\", \"\\u062A\\u0645\",\n \"\\uFC0F\", \"\\u062A\\u0649\",\n \"\\uFC10\", \"\\u062A\\u064A\",\n \"\\uFC11\", \"\\u062B\\u062C\",\n \"\\uFC12\", \"\\u062B\\u0645\",\n \"\\uFC13\", \"\\u062B\\u0649\",\n \"\\uFC14\", \"\\u062B\\u064A\",\n \"\\uFC15\", \"\\u062C\\u062D\",\n \"\\uFC16\", \"\\u062C\\u0645\",\n \"\\uFC17\", \"\\u062D\\u062C\",\n \"\\uFC18\", \"\\u062D\\u0645\",\n \"\\uFC19\", \"\\u062E\\u062C\",\n \"\\uFC1A\", \"\\u062E\\u062D\",\n \"\\uFC1B\", \"\\u062E\\u0645\",\n \"\\uFC1C\", \"\\u0633\\u062C\",\n \"\\uFC1D\", \"\\u0633\\u062D\",\n \"\\uFC1E\", \"\\u0633\\u062E\",\n \"\\uFC1F\", \"\\u0633\\u0645\",\n \"\\uFC20\", \"\\u0635\\u062D\",\n \"\\uFC21\", \"\\u0635\\u0645\",\n \"\\uFC22\", \"\\u0636\\u062C\",\n \"\\uFC23\", \"\\u0636\\u062D\",\n \"\\uFC24\", \"\\u0636\\u062E\",\n \"\\uFC25\", \"\\u0636\\u0645\",\n \"\\uFC26\", \"\\u0637\\u062D\",\n \"\\uFC27\", \"\\u0637\\u0645\",\n \"\\uFC28\", \"\\u0638\\u0645\",\n \"\\uFC29\", \"\\u0639\\u062C\",\n \"\\uFC2A\", \"\\u0639\\u0645\",\n \"\\uFC2B\", \"\\u063A\\u062C\",\n \"\\uFC2C\", \"\\u063A\\u0645\",\n \"\\uFC2D\", \"\\u0641\\u062C\",\n \"\\uFC2E\", \"\\u0641\\u062D\",\n \"\\uFC2F\", \"\\u0641\\u062E\",\n \"\\uFC30\", \"\\u0641\\u0645\",\n \"\\uFC31\", \"\\u0641\\u0649\",\n \"\\uFC32\", \"\\u0641\\u064A\",\n \"\\uFC33\", \"\\u0642\\u062D\",\n \"\\uFC34\", \"\\u0642\\u0645\",\n \"\\uFC35\", \"\\u0642\\u0649\",\n \"\\uFC36\", \"\\u0642\\u064A\",\n \"\\uFC37\", \"\\u0643\\u0627\",\n \"\\uFC38\", \"\\u0643\\u062C\",\n \"\\uFC39\", \"\\u0643\\u062D\",\n \"\\uFC3A\", \"\\u0643\\u062E\",\n \"\\uFC3B\", \"\\u0643\\u0644\",\n \"\\uFC3C\", \"\\u0643\\u0645\",\n \"\\uFC3D\", \"\\u0643\\u0649\",\n \"\\uFC3E\", \"\\u0643\\u064A\",\n \"\\uFC3F\", \"\\u0644\\u062C\",\n \"\\uFC40\", \"\\u0644\\u062D\",\n \"\\uFC41\", \"\\u0644\\u062E\",\n \"\\uFC42\", \"\\u0644\\u0645\",\n \"\\uFC43\", \"\\u0644\\u0649\",\n \"\\uFC44\", \"\\u0644\\u064A\",\n \"\\uFC45\", \"\\u0645\\u062C\",\n \"\\uFC46\", \"\\u0645\\u062D\",\n \"\\uFC47\", \"\\u0645\\u062E\",\n \"\\uFC48\", \"\\u0645\\u0645\",\n \"\\uFC49\", \"\\u0645\\u0649\",\n \"\\uFC4A\", \"\\u0645\\u064A\",\n \"\\uFC4B\", \"\\u0646\\u062C\",\n \"\\uFC4C\", \"\\u0646\\u062D\",\n \"\\uFC4D\", \"\\u0646\\u062E\",\n \"\\uFC4E\", \"\\u0646\\u0645\",\n \"\\uFC4F\", \"\\u0646\\u0649\",\n \"\\uFC50\", \"\\u0646\\u064A\",\n \"\\uFC51\", \"\\u0647\\u062C\",\n \"\\uFC52\", \"\\u0647\\u0645\",\n \"\\uFC53\", \"\\u0647\\u0649\",\n \"\\uFC54\", \"\\u0647\\u064A\",\n \"\\uFC55\", \"\\u064A\\u062C\",\n \"\\uFC56\", \"\\u064A\\u062D\",\n \"\\uFC57\", \"\\u064A\\u062E\",\n \"\\uFC58\", \"\\u064A\\u0645\",\n \"\\uFC59\", \"\\u064A\\u0649\",\n \"\\uFC5A\", \"\\u064A\\u064A\",\n \"\\uFC5B\", \"\\u0630\\u0670\",\n \"\\uFC5C\", \"\\u0631\\u0670\",\n \"\\uFC5D\", \"\\u0649\\u0670\",\n \"\\uFC5E\", \"\\u0020\\u064C\\u0651\",\n \"\\uFC5F\", \"\\u0020\\u064D\\u0651\",\n \"\\uFC60\", \"\\u0020\\u064E\\u0651\",\n \"\\uFC61\", \"\\u0020\\u064F\\u0651\",\n \"\\uFC62\", \"\\u0020\\u0650\\u0651\",\n \"\\uFC63\", \"\\u0020\\u0651\\u0670\",\n \"\\uFC64\", \"\\u0626\\u0631\",\n \"\\uFC65\", \"\\u0626\\u0632\",\n \"\\uFC66\", \"\\u0626\\u0645\",\n \"\\uFC67\", \"\\u0626\\u0646\",\n \"\\uFC68\", \"\\u0626\\u0649\",\n \"\\uFC69\", \"\\u0626\\u064A\",\n \"\\uFC6A\", \"\\u0628\\u0631\",\n \"\\uFC6B\", \"\\u0628\\u0632\",\n \"\\uFC6C\", \"\\u0628\\u0645\",\n \"\\uFC6D\", \"\\u0628\\u0646\",\n \"\\uFC6E\", \"\\u0628\\u0649\",\n \"\\uFC6F\", \"\\u0628\\u064A\",\n \"\\uFC70\", \"\\u062A\\u0631\",\n \"\\uFC71\", \"\\u062A\\u0632\",\n \"\\uFC72\", \"\\u062A\\u0645\",\n \"\\uFC73\", \"\\u062A\\u0646\",\n \"\\uFC74\", \"\\u062A\\u0649\",\n \"\\uFC75\", \"\\u062A\\u064A\",\n \"\\uFC76\", \"\\u062B\\u0631\",\n \"\\uFC77\", \"\\u062B\\u0632\",\n \"\\uFC78\", \"\\u062B\\u0645\",\n \"\\uFC79\", \"\\u062B\\u0646\",\n \"\\uFC7A\", \"\\u062B\\u0649\",\n \"\\uFC7B\", \"\\u062B\\u064A\",\n \"\\uFC7C\", \"\\u0641\\u0649\",\n \"\\uFC7D\", \"\\u0641\\u064A\",\n \"\\uFC7E\", \"\\u0642\\u0649\",\n \"\\uFC7F\", \"\\u0642\\u064A\",\n \"\\uFC80\", \"\\u0643\\u0627\",\n \"\\uFC81\", \"\\u0643\\u0644\",\n \"\\uFC82\", \"\\u0643\\u0645\",\n \"\\uFC83\", \"\\u0643\\u0649\",\n \"\\uFC84\", \"\\u0643\\u064A\",\n \"\\uFC85\", \"\\u0644\\u0645\",\n \"\\uFC86\", \"\\u0644\\u0649\",\n \"\\uFC87\", \"\\u0644\\u064A\",\n \"\\uFC88\", \"\\u0645\\u0627\",\n \"\\uFC89\", \"\\u0645\\u0645\",\n \"\\uFC8A\", \"\\u0646\\u0631\",\n \"\\uFC8B\", \"\\u0646\\u0632\",\n \"\\uFC8C\", \"\\u0646\\u0645\",\n \"\\uFC8D\", \"\\u0646\\u0646\",\n \"\\uFC8E\", \"\\u0646\\u0649\",\n \"\\uFC8F\", \"\\u0646\\u064A\",\n \"\\uFC90\", \"\\u0649\\u0670\",\n \"\\uFC91\", \"\\u064A\\u0631\",\n \"\\uFC92\", \"\\u064A\\u0632\",\n \"\\uFC93\", \"\\u064A\\u0645\",\n \"\\uFC94\", \"\\u064A\\u0646\",\n \"\\uFC95\", \"\\u064A\\u0649\",\n \"\\uFC96\", \"\\u064A\\u064A\",\n \"\\uFC97\", \"\\u0626\\u062C\",\n \"\\uFC98\", \"\\u0626\\u062D\",\n \"\\uFC99\", \"\\u0626\\u062E\",\n \"\\uFC9A\", \"\\u0626\\u0645\",\n \"\\uFC9B\", \"\\u0626\\u0647\",\n \"\\uFC9C\", \"\\u0628\\u062C\",\n \"\\uFC9D\", \"\\u0628\\u062D\",\n \"\\uFC9E\", \"\\u0628\\u062E\",\n \"\\uFC9F\", \"\\u0628\\u0645\",\n \"\\uFCA0\", \"\\u0628\\u0647\",\n \"\\uFCA1\", \"\\u062A\\u062C\",\n \"\\uFCA2\", \"\\u062A\\u062D\",\n \"\\uFCA3\", \"\\u062A\\u062E\",\n \"\\uFCA4\", \"\\u062A\\u0645\",\n \"\\uFCA5\", \"\\u062A\\u0647\",\n \"\\uFCA6\", \"\\u062B\\u0645\",\n \"\\uFCA7\", \"\\u062C\\u062D\",\n \"\\uFCA8\", \"\\u062C\\u0645\",\n \"\\uFCA9\", \"\\u062D\\u062C\",\n \"\\uFCAA\", \"\\u062D\\u0645\",\n \"\\uFCAB\", \"\\u062E\\u062C\",\n \"\\uFCAC\", \"\\u062E\\u0645\",\n \"\\uFCAD\", \"\\u0633\\u062C\",\n \"\\uFCAE\", \"\\u0633\\u062D\",\n \"\\uFCAF\", \"\\u0633\\u062E\",\n \"\\uFCB0\", \"\\u0633\\u0645\",\n \"\\uFCB1\", \"\\u0635\\u062D\",\n \"\\uFCB2\", \"\\u0635\\u062E\",\n \"\\uFCB3\", \"\\u0635\\u0645\",\n \"\\uFCB4\", \"\\u0636\\u062C\",\n \"\\uFCB5\", \"\\u0636\\u062D\",\n \"\\uFCB6\", \"\\u0636\\u062E\",\n \"\\uFCB7\", \"\\u0636\\u0645\",\n \"\\uFCB8\", \"\\u0637\\u062D\",\n \"\\uFCB9\", \"\\u0638\\u0645\",\n \"\\uFCBA\", \"\\u0639\\u062C\",\n \"\\uFCBB\", \"\\u0639\\u0645\",\n \"\\uFCBC\", \"\\u063A\\u062C\",\n \"\\uFCBD\", \"\\u063A\\u0645\",\n \"\\uFCBE\", \"\\u0641\\u062C\",\n \"\\uFCBF\", \"\\u0641\\u062D\",\n \"\\uFCC0\", \"\\u0641\\u062E\",\n \"\\uFCC1\", \"\\u0641\\u0645\",\n \"\\uFCC2\", \"\\u0642\\u062D\",\n \"\\uFCC3\", \"\\u0642\\u0645\",\n \"\\uFCC4\", \"\\u0643\\u062C\",\n \"\\uFCC5\", \"\\u0643\\u062D\",\n \"\\uFCC6\", \"\\u0643\\u062E\",\n \"\\uFCC7\", \"\\u0643\\u0644\",\n \"\\uFCC8\", \"\\u0643\\u0645\",\n \"\\uFCC9\", \"\\u0644\\u062C\",\n \"\\uFCCA\", \"\\u0644\\u062D\",\n \"\\uFCCB\", \"\\u0644\\u062E\",\n \"\\uFCCC\", \"\\u0644\\u0645\",\n \"\\uFCCD\", \"\\u0644\\u0647\",\n \"\\uFCCE\", \"\\u0645\\u062C\",\n \"\\uFCCF\", \"\\u0645\\u062D\",\n \"\\uFCD0\", \"\\u0645\\u062E\",\n \"\\uFCD1\", \"\\u0645\\u0645\",\n \"\\uFCD2\", \"\\u0646\\u062C\",\n \"\\uFCD3\", \"\\u0646\\u062D\",\n \"\\uFCD4\", \"\\u0646\\u062E\",\n \"\\uFCD5\", \"\\u0646\\u0645\",\n \"\\uFCD6\", \"\\u0646\\u0647\",\n \"\\uFCD7\", \"\\u0647\\u062C\",\n \"\\uFCD8\", \"\\u0647\\u0645\",\n \"\\uFCD9\", \"\\u0647\\u0670\",\n \"\\uFCDA\", \"\\u064A\\u062C\",\n \"\\uFCDB\", \"\\u064A\\u062D\",\n \"\\uFCDC\", \"\\u064A\\u062E\",\n \"\\uFCDD\", \"\\u064A\\u0645\",\n \"\\uFCDE\", \"\\u064A\\u0647\",\n \"\\uFCDF\", \"\\u0626\\u0645\",\n \"\\uFCE0\", \"\\u0626\\u0647\",\n \"\\uFCE1\", \"\\u0628\\u0645\",\n \"\\uFCE2\", \"\\u0628\\u0647\",\n \"\\uFCE3\", \"\\u062A\\u0645\",\n \"\\uFCE4\", \"\\u062A\\u0647\",\n \"\\uFCE5\", \"\\u062B\\u0645\",\n \"\\uFCE6\", \"\\u062B\\u0647\",\n \"\\uFCE7\", \"\\u0633\\u0645\",\n \"\\uFCE8\", \"\\u0633\\u0647\",\n \"\\uFCE9\", \"\\u0634\\u0645\",\n \"\\uFCEA\", \"\\u0634\\u0647\",\n \"\\uFCEB\", \"\\u0643\\u0644\",\n \"\\uFCEC\", \"\\u0643\\u0645\",\n \"\\uFCED\", \"\\u0644\\u0645\",\n \"\\uFCEE\", \"\\u0646\\u0645\",\n \"\\uFCEF\", \"\\u0646\\u0647\",\n \"\\uFCF0\", \"\\u064A\\u0645\",\n \"\\uFCF1\", \"\\u064A\\u0647\",\n \"\\uFCF2\", \"\\u0640\\u064E\\u0651\",\n \"\\uFCF3\", \"\\u0640\\u064F\\u0651\",\n \"\\uFCF4\", \"\\u0640\\u0650\\u0651\",\n \"\\uFCF5\", \"\\u0637\\u0649\",\n \"\\uFCF6\", \"\\u0637\\u064A\",\n \"\\uFCF7\", \"\\u0639\\u0649\",\n \"\\uFCF8\", \"\\u0639\\u064A\",\n \"\\uFCF9\", \"\\u063A\\u0649\",\n \"\\uFCFA\", \"\\u063A\\u064A\",\n \"\\uFCFB\", \"\\u0633\\u0649\",\n \"\\uFCFC\", \"\\u0633\\u064A\",\n \"\\uFCFD\", \"\\u0634\\u0649\",\n \"\\uFCFE\", \"\\u0634\\u064A\",\n \"\\uFCFF\", \"\\u062D\\u0649\",\n \"\\uFD00\", \"\\u062D\\u064A\",\n \"\\uFD01\", \"\\u062C\\u0649\",\n \"\\uFD02\", \"\\u062C\\u064A\",\n \"\\uFD03\", \"\\u062E\\u0649\",\n \"\\uFD04\", \"\\u062E\\u064A\",\n \"\\uFD05\", \"\\u0635\\u0649\",\n \"\\uFD06\", \"\\u0635\\u064A\",\n \"\\uFD07\", \"\\u0636\\u0649\",\n \"\\uFD08\", \"\\u0636\\u064A\",\n \"\\uFD09\", \"\\u0634\\u062C\",\n \"\\uFD0A\", \"\\u0634\\u062D\",\n \"\\uFD0B\", \"\\u0634\\u062E\",\n \"\\uFD0C\", \"\\u0634\\u0645\",\n \"\\uFD0D\", \"\\u0634\\u0631\",\n \"\\uFD0E\", \"\\u0633\\u0631\",\n \"\\uFD0F\", \"\\u0635\\u0631\",\n \"\\uFD10\", \"\\u0636\\u0631\",\n \"\\uFD11\", \"\\u0637\\u0649\",\n \"\\uFD12\", \"\\u0637\\u064A\",\n \"\\uFD13\", \"\\u0639\\u0649\",\n \"\\uFD14\", \"\\u0639\\u064A\",\n \"\\uFD15\", \"\\u063A\\u0649\",\n \"\\uFD16\", \"\\u063A\\u064A\",\n \"\\uFD17\", \"\\u0633\\u0649\",\n \"\\uFD18\", \"\\u0633\\u064A\",\n \"\\uFD19\", \"\\u0634\\u0649\",\n \"\\uFD1A\", \"\\u0634\\u064A\",\n \"\\uFD1B\", \"\\u062D\\u0649\",\n \"\\uFD1C\", \"\\u062D\\u064A\",\n \"\\uFD1D\", \"\\u062C\\u0649\",\n \"\\uFD1E\", \"\\u062C\\u064A\",\n \"\\uFD1F\", \"\\u062E\\u0649\",\n \"\\uFD20\", \"\\u062E\\u064A\",\n \"\\uFD21\", \"\\u0635\\u0649\",\n \"\\uFD22\", \"\\u0635\\u064A\",\n \"\\uFD23\", \"\\u0636\\u0649\",\n \"\\uFD24\", \"\\u0636\\u064A\",\n \"\\uFD25\", \"\\u0634\\u062C\",\n \"\\uFD26\", \"\\u0634\\u062D\",\n \"\\uFD27\", \"\\u0634\\u062E\",\n \"\\uFD28\", \"\\u0634\\u0645\",\n \"\\uFD29\", \"\\u0634\\u0631\",\n \"\\uFD2A\", \"\\u0633\\u0631\",\n \"\\uFD2B\", \"\\u0635\\u0631\",\n \"\\uFD2C\", \"\\u0636\\u0631\",\n \"\\uFD2D\", \"\\u0634\\u062C\",\n \"\\uFD2E\", \"\\u0634\\u062D\",\n \"\\uFD2F\", \"\\u0634\\u062E\",\n \"\\uFD30\", \"\\u0634\\u0645\",\n \"\\uFD31\", \"\\u0633\\u0647\",\n \"\\uFD32\", \"\\u0634\\u0647\",\n \"\\uFD33\", \"\\u0637\\u0645\",\n \"\\uFD34\", \"\\u0633\\u062C\",\n \"\\uFD35\", \"\\u0633\\u062D\",\n \"\\uFD36\", \"\\u0633\\u062E\",\n \"\\uFD37\", \"\\u0634\\u062C\",\n \"\\uFD38\", \"\\u0634\\u062D\",\n \"\\uFD39\", \"\\u0634\\u062E\",\n \"\\uFD3A\", \"\\u0637\\u0645\",\n \"\\uFD3B\", \"\\u0638\\u0645\",\n \"\\uFD3C\", \"\\u0627\\u064B\",\n \"\\uFD3D\", \"\\u0627\\u064B\",\n \"\\uFD50\", \"\\u062A\\u062C\\u0645\",\n \"\\uFD51\", \"\\u062A\\u062D\\u062C\",\n \"\\uFD52\", \"\\u062A\\u062D\\u062C\",\n \"\\uFD53\", \"\\u062A\\u062D\\u0645\",\n \"\\uFD54\", \"\\u062A\\u062E\\u0645\",\n \"\\uFD55\", \"\\u062A\\u0645\\u062C\",\n \"\\uFD56\", \"\\u062A\\u0645\\u062D\",\n \"\\uFD57\", \"\\u062A\\u0645\\u062E\",\n \"\\uFD58\", \"\\u062C\\u0645\\u062D\",\n \"\\uFD59\", \"\\u062C\\u0645\\u062D\",\n \"\\uFD5A\", \"\\u062D\\u0645\\u064A\",\n \"\\uFD5B\", \"\\u062D\\u0645\\u0649\",\n \"\\uFD5C\", \"\\u0633\\u062D\\u062C\",\n \"\\uFD5D\", \"\\u0633\\u062C\\u062D\",\n \"\\uFD5E\", \"\\u0633\\u062C\\u0649\",\n \"\\uFD5F\", \"\\u0633\\u0645\\u062D\",\n \"\\uFD60\", \"\\u0633\\u0645\\u062D\",\n \"\\uFD61\", \"\\u0633\\u0645\\u062C\",\n \"\\uFD62\", \"\\u0633\\u0645\\u0645\",\n \"\\uFD63\", \"\\u0633\\u0645\\u0645\",\n \"\\uFD64\", \"\\u0635\\u062D\\u062D\",\n \"\\uFD65\", \"\\u0635\\u062D\\u062D\",\n \"\\uFD66\", \"\\u0635\\u0645\\u0645\",\n \"\\uFD67\", \"\\u0634\\u062D\\u0645\",\n \"\\uFD68\", \"\\u0634\\u062D\\u0645\",\n \"\\uFD69\", \"\\u0634\\u062C\\u064A\",\n \"\\uFD6A\", \"\\u0634\\u0645\\u062E\",\n \"\\uFD6B\", \"\\u0634\\u0645\\u062E\",\n \"\\uFD6C\", \"\\u0634\\u0645\\u0645\",\n \"\\uFD6D\", \"\\u0634\\u0645\\u0645\",\n \"\\uFD6E\", \"\\u0636\\u062D\\u0649\",\n \"\\uFD6F\", \"\\u0636\\u062E\\u0645\",\n \"\\uFD70\", \"\\u0636\\u062E\\u0645\",\n \"\\uFD71\", \"\\u0637\\u0645\\u062D\",\n \"\\uFD72\", \"\\u0637\\u0645\\u062D\",\n \"\\uFD73\", \"\\u0637\\u0645\\u0645\",\n \"\\uFD74\", \"\\u0637\\u0645\\u064A\",\n \"\\uFD75\", \"\\u0639\\u062C\\u0645\",\n \"\\uFD76\", \"\\u0639\\u0645\\u0645\",\n \"\\uFD77\", \"\\u0639\\u0645\\u0645\",\n \"\\uFD78\", \"\\u0639\\u0645\\u0649\",\n \"\\uFD79\", \"\\u063A\\u0645\\u0645\",\n \"\\uFD7A\", \"\\u063A\\u0645\\u064A\",\n \"\\uFD7B\", \"\\u063A\\u0645\\u0649\",\n \"\\uFD7C\", \"\\u0641\\u062E\\u0645\",\n \"\\uFD7D\", \"\\u0641\\u062E\\u0645\",\n \"\\uFD7E\", \"\\u0642\\u0645\\u062D\",\n \"\\uFD7F\", \"\\u0642\\u0645\\u0645\",\n \"\\uFD80\", \"\\u0644\\u062D\\u0645\",\n \"\\uFD81\", \"\\u0644\\u062D\\u064A\",\n \"\\uFD82\", \"\\u0644\\u062D\\u0649\",\n \"\\uFD83\", \"\\u0644\\u062C\\u062C\",\n \"\\uFD84\", \"\\u0644\\u062C\\u062C\",\n \"\\uFD85\", \"\\u0644\\u062E\\u0645\",\n \"\\uFD86\", \"\\u0644\\u062E\\u0645\",\n \"\\uFD87\", \"\\u0644\\u0645\\u062D\",\n \"\\uFD88\", \"\\u0644\\u0645\\u062D\",\n \"\\uFD89\", \"\\u0645\\u062D\\u062C\",\n \"\\uFD8A\", \"\\u0645\\u062D\\u0645\",\n \"\\uFD8B\", \"\\u0645\\u062D\\u064A\",\n \"\\uFD8C\", \"\\u0645\\u062C\\u062D\",\n \"\\uFD8D\", \"\\u0645\\u062C\\u0645\",\n \"\\uFD8E\", \"\\u0645\\u062E\\u062C\",\n \"\\uFD8F\", \"\\u0645\\u062E\\u0645\",\n \"\\uFD92\", \"\\u0645\\u062C\\u062E\",\n \"\\uFD93\", \"\\u0647\\u0645\\u062C\",\n \"\\uFD94\", \"\\u0647\\u0645\\u0645\",\n \"\\uFD95\", \"\\u0646\\u062D\\u0645\",\n \"\\uFD96\", \"\\u0646\\u062D\\u0649\",\n \"\\uFD97\", \"\\u0646\\u062C\\u0645\",\n \"\\uFD98\", \"\\u0646\\u062C\\u0645\",\n \"\\uFD99\", \"\\u0646\\u062C\\u0649\",\n \"\\uFD9A\", \"\\u0646\\u0645\\u064A\",\n \"\\uFD9B\", \"\\u0646\\u0645\\u0649\",\n \"\\uFD9C\", \"\\u064A\\u0645\\u0645\",\n \"\\uFD9D\", \"\\u064A\\u0645\\u0645\",\n \"\\uFD9E\", \"\\u0628\\u062E\\u064A\",\n \"\\uFD9F\", \"\\u062A\\u062C\\u064A\",\n \"\\uFDA0\", \"\\u062A\\u062C\\u0649\",\n \"\\uFDA1\", \"\\u062A\\u062E\\u064A\",\n \"\\uFDA2\", \"\\u062A\\u062E\\u0649\",\n \"\\uFDA3\", \"\\u062A\\u0645\\u064A\",\n \"\\uFDA4\", \"\\u062A\\u0645\\u0649\",\n \"\\uFDA5\", \"\\u062C\\u0645\\u064A\",\n \"\\uFDA6\", \"\\u062C\\u062D\\u0649\",\n \"\\uFDA7\", \"\\u062C\\u0645\\u0649\",\n \"\\uFDA8\", \"\\u0633\\u062E\\u0649\",\n \"\\uFDA9\", \"\\u0635\\u062D\\u064A\",\n \"\\uFDAA\", \"\\u0634\\u062D\\u064A\",\n \"\\uFDAB\", \"\\u0636\\u062D\\u064A\",\n \"\\uFDAC\", \"\\u0644\\u062C\\u064A\",\n \"\\uFDAD\", \"\\u0644\\u0645\\u064A\",\n \"\\uFDAE\", \"\\u064A\\u062D\\u064A\",\n \"\\uFDAF\", \"\\u064A\\u062C\\u064A\",\n \"\\uFDB0\", \"\\u064A\\u0645\\u064A\",\n \"\\uFDB1\", \"\\u0645\\u0645\\u064A\",\n \"\\uFDB2\", \"\\u0642\\u0645\\u064A\",\n \"\\uFDB3\", \"\\u0646\\u062D\\u064A\",\n \"\\uFDB4\", \"\\u0642\\u0645\\u062D\",\n \"\\uFDB5\", \"\\u0644\\u062D\\u0645\",\n \"\\uFDB6\", \"\\u0639\\u0645\\u064A\",\n \"\\uFDB7\", \"\\u0643\\u0645\\u064A\",\n \"\\uFDB8\", \"\\u0646\\u062C\\u062D\",\n \"\\uFDB9\", \"\\u0645\\u062E\\u064A\",\n \"\\uFDBA\", \"\\u0644\\u062C\\u0645\",\n \"\\uFDBB\", \"\\u0643\\u0645\\u0645\",\n \"\\uFDBC\", \"\\u0644\\u062C\\u0645\",\n \"\\uFDBD\", \"\\u0646\\u062C\\u062D\",\n \"\\uFDBE\", \"\\u062C\\u062D\\u064A\",\n \"\\uFDBF\", \"\\u062D\\u062C\\u064A\",\n \"\\uFDC0\", \"\\u0645\\u062C\\u064A\",\n \"\\uFDC1\", \"\\u0641\\u0645\\u064A\",\n \"\\uFDC2\", \"\\u0628\\u062D\\u064A\",\n \"\\uFDC3\", \"\\u0643\\u0645\\u0645\",\n \"\\uFDC4\", \"\\u0639\\u062C\\u0645\",\n \"\\uFDC5\", \"\\u0635\\u0645\\u0645\",\n \"\\uFDC6\", \"\\u0633\\u062E\\u064A\",\n \"\\uFDC7\", \"\\u0646\\u062C\\u064A\",\n \"\\uFE49\", \"\\u203E\",\n \"\\uFE4A\", \"\\u203E\",\n \"\\uFE4B\", \"\\u203E\",\n \"\\uFE4C\", \"\\u203E\",\n \"\\uFE4D\", \"\\u005F\",\n \"\\uFE4E\", \"\\u005F\",\n \"\\uFE4F\", \"\\u005F\",\n \"\\uFE80\", \"\\u0621\",\n \"\\uFE81\", \"\\u0622\",\n \"\\uFE82\", \"\\u0622\",\n \"\\uFE83\", \"\\u0623\",\n \"\\uFE84\", \"\\u0623\",\n \"\\uFE85\", \"\\u0624\",\n \"\\uFE86\", \"\\u0624\",\n \"\\uFE87\", \"\\u0625\",\n \"\\uFE88\", \"\\u0625\",\n \"\\uFE89\", \"\\u0626\",\n \"\\uFE8A\", \"\\u0626\",\n \"\\uFE8B\", \"\\u0626\",\n \"\\uFE8C\", \"\\u0626\",\n \"\\uFE8D\", \"\\u0627\",\n \"\\uFE8E\", \"\\u0627\",\n \"\\uFE8F\", \"\\u0628\",\n \"\\uFE90\", \"\\u0628\",\n \"\\uFE91\", \"\\u0628\",\n \"\\uFE92\", \"\\u0628\",\n \"\\uFE93\", \"\\u0629\",\n \"\\uFE94\", \"\\u0629\",\n \"\\uFE95\", \"\\u062A\",\n \"\\uFE96\", \"\\u062A\",\n \"\\uFE97\", \"\\u062A\",\n \"\\uFE98\", \"\\u062A\",\n \"\\uFE99\", \"\\u062B\",\n \"\\uFE9A\", \"\\u062B\",\n \"\\uFE9B\", \"\\u062B\",\n \"\\uFE9C\", \"\\u062B\",\n \"\\uFE9D\", \"\\u062C\",\n \"\\uFE9E\", \"\\u062C\",\n \"\\uFE9F\", \"\\u062C\",\n \"\\uFEA0\", \"\\u062C\",\n \"\\uFEA1\", \"\\u062D\",\n \"\\uFEA2\", \"\\u062D\",\n \"\\uFEA3\", \"\\u062D\",\n \"\\uFEA4\", \"\\u062D\",\n \"\\uFEA5\", \"\\u062E\",\n \"\\uFEA6\", \"\\u062E\",\n \"\\uFEA7\", \"\\u062E\",\n \"\\uFEA8\", \"\\u062E\",\n \"\\uFEA9\", \"\\u062F\",\n \"\\uFEAA\", \"\\u062F\",\n \"\\uFEAB\", \"\\u0630\",\n \"\\uFEAC\", \"\\u0630\",\n \"\\uFEAD\", \"\\u0631\",\n \"\\uFEAE\", \"\\u0631\",\n \"\\uFEAF\", \"\\u0632\",\n \"\\uFEB0\", \"\\u0632\",\n \"\\uFEB1\", \"\\u0633\",\n \"\\uFEB2\", \"\\u0633\",\n \"\\uFEB3\", \"\\u0633\",\n \"\\uFEB4\", \"\\u0633\",\n \"\\uFEB5\", \"\\u0634\",\n \"\\uFEB6\", \"\\u0634\",\n \"\\uFEB7\", \"\\u0634\",\n \"\\uFEB8\", \"\\u0634\",\n \"\\uFEB9\", \"\\u0635\",\n \"\\uFEBA\", \"\\u0635\",\n \"\\uFEBB\", \"\\u0635\",\n \"\\uFEBC\", \"\\u0635\",\n \"\\uFEBD\", \"\\u0636\",\n \"\\uFEBE\", \"\\u0636\",\n \"\\uFEBF\", \"\\u0636\",\n \"\\uFEC0\", \"\\u0636\",\n \"\\uFEC1\", \"\\u0637\",\n \"\\uFEC2\", \"\\u0637\",\n \"\\uFEC3\", \"\\u0637\",\n \"\\uFEC4\", \"\\u0637\",\n \"\\uFEC5\", \"\\u0638\",\n \"\\uFEC6\", \"\\u0638\",\n \"\\uFEC7\", \"\\u0638\",\n \"\\uFEC8\", \"\\u0638\",\n \"\\uFEC9\", \"\\u0639\",\n \"\\uFECA\", \"\\u0639\",\n \"\\uFECB\", \"\\u0639\",\n \"\\uFECC\", \"\\u0639\",\n \"\\uFECD\", \"\\u063A\",\n \"\\uFECE\", \"\\u063A\",\n \"\\uFECF\", \"\\u063A\",\n \"\\uFED0\", \"\\u063A\",\n \"\\uFED1\", \"\\u0641\",\n \"\\uFED2\", \"\\u0641\",\n \"\\uFED3\", \"\\u0641\",\n \"\\uFED4\", \"\\u0641\",\n \"\\uFED5\", \"\\u0642\",\n \"\\uFED6\", \"\\u0642\",\n \"\\uFED7\", \"\\u0642\",\n \"\\uFED8\", \"\\u0642\",\n \"\\uFED9\", \"\\u0643\",\n \"\\uFEDA\", \"\\u0643\",\n \"\\uFEDB\", \"\\u0643\",\n \"\\uFEDC\", \"\\u0643\",\n \"\\uFEDD\", \"\\u0644\",\n \"\\uFEDE\", \"\\u0644\",\n \"\\uFEDF\", \"\\u0644\",\n \"\\uFEE0\", \"\\u0644\",\n \"\\uFEE1\", \"\\u0645\",\n \"\\uFEE2\", \"\\u0645\",\n \"\\uFEE3\", \"\\u0645\",\n \"\\uFEE4\", \"\\u0645\",\n \"\\uFEE5\", \"\\u0646\",\n \"\\uFEE6\", \"\\u0646\",\n \"\\uFEE7\", \"\\u0646\",\n \"\\uFEE8\", \"\\u0646\",\n \"\\uFEE9\", \"\\u0647\",\n \"\\uFEEA\", \"\\u0647\",\n \"\\uFEEB\", \"\\u0647\",\n \"\\uFEEC\", \"\\u0647\",\n \"\\uFEED\", \"\\u0648\",\n \"\\uFEEE\", \"\\u0648\",\n \"\\uFEEF\", \"\\u0649\",\n \"\\uFEF0\", \"\\u0649\",\n \"\\uFEF1\", \"\\u064A\",\n \"\\uFEF2\", \"\\u064A\",\n \"\\uFEF3\", \"\\u064A\",\n \"\\uFEF4\", \"\\u064A\",\n \"\\uFEF5\", \"\\u0644\\u0622\",\n \"\\uFEF6\", \"\\u0644\\u0622\",\n \"\\uFEF7\", \"\\u0644\\u0623\",\n \"\\uFEF8\", \"\\u0644\\u0623\",\n \"\\uFEF9\", \"\\u0644\\u0625\",\n \"\\uFEFA\", \"\\u0644\\u0625\",\n \"\\uFEFB\", \"\\u0644\\u0627\",\n \"\\uFEFC\", \"\\u0644\\u0627\",\n ];\n});\n\nfunction reverseIfRtl(chars) {\n const charsLength = chars.length;\n // Reverse an arabic ligature.\n if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n return chars;\n }\n const buf = [];\n for (let ii = charsLength - 1; ii >= 0; ii--) {\n buf.push(chars[ii]);\n }\n return buf.join(\"\");\n}\n\nexport {\n getNormalizedUnicodes,\n getUnicodeForGlyph,\n getUnicodeRangeFor,\n mapSpecialUnicodeValues,\n reverseIfRtl,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationReplyType,\n AnnotationType,\n assert,\n escapeString,\n getModificationDate,\n isAscii,\n isString,\n OPS,\n RenderingIntentFlag,\n shadow,\n stringToPDFString,\n stringToUTF16BEString,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { collectActions, getInheritableProperty } from \"./core_utils.js\";\nimport {\n createDefaultAppearance,\n parseDefaultAppearance,\n} from \"./default_appearance.js\";\nimport {\n Dict,\n isDict,\n isName,\n isRef,\n isStream,\n Name,\n RefSet,\n} from \"./primitives.js\";\nimport { bidi } from \"./bidi.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { StringStream } from \"./stream.js\";\nimport { writeDict } from \"./writer.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\n\nclass AnnotationFactory {\n /**\n * Create an `Annotation` object of the correct type for the given reference\n * to an annotation dictionary. This yields a promise that is resolved when\n * the `Annotation` object is constructed.\n *\n * @param {XRef} xref\n * @param {Object} ref\n * @param {PDFManager} pdfManager\n * @param {Object} idFactory\n * @param {boolean} collectFields\n * @returns {Promise} A promise that is resolved with an {Annotation}\n * instance.\n */\n static create(xref, ref, pdfManager, idFactory, collectFields) {\n return Promise.all([\n pdfManager.ensureCatalog(\"acroForm\"),\n collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1,\n ]).then(([acroForm, pageIndex]) =>\n pdfManager.ensure(this, \"_create\", [\n xref,\n ref,\n pdfManager,\n idFactory,\n acroForm,\n collectFields,\n pageIndex,\n ])\n );\n }\n\n /**\n * @private\n */\n static _create(\n xref,\n ref,\n pdfManager,\n idFactory,\n acroForm,\n collectFields,\n pageIndex = -1\n ) {\n const dict = xref.fetchIfRef(ref);\n if (!isDict(dict)) {\n return undefined;\n }\n\n const id = isRef(ref) ? ref.toString() : `annot_${idFactory.createObjId()}`;\n\n // Determine the annotation's subtype.\n let subtype = dict.get(\"Subtype\");\n subtype = isName(subtype) ? subtype.name : null;\n\n // Return the right annotation object based on the subtype and field type.\n const parameters = {\n xref,\n ref,\n dict,\n subtype,\n id,\n pdfManager,\n acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n collectFields,\n pageIndex,\n };\n\n switch (subtype) {\n case \"Link\":\n return new LinkAnnotation(parameters);\n\n case \"Text\":\n return new TextAnnotation(parameters);\n\n case \"Widget\":\n let fieldType = getInheritableProperty({ dict, key: \"FT\" });\n fieldType = isName(fieldType) ? fieldType.name : null;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotation(parameters);\n case \"Btn\":\n return new ButtonWidgetAnnotation(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotation(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotation(parameters);\n }\n warn(\n `Unimplemented widget field type \"${fieldType}\", ` +\n \"falling back to base field type.\"\n );\n return new WidgetAnnotation(parameters);\n\n case \"Popup\":\n return new PopupAnnotation(parameters);\n\n case \"FreeText\":\n return new FreeTextAnnotation(parameters);\n\n case \"Line\":\n return new LineAnnotation(parameters);\n\n case \"Square\":\n return new SquareAnnotation(parameters);\n\n case \"Circle\":\n return new CircleAnnotation(parameters);\n\n case \"PolyLine\":\n return new PolylineAnnotation(parameters);\n\n case \"Polygon\":\n return new PolygonAnnotation(parameters);\n\n case \"Caret\":\n return new CaretAnnotation(parameters);\n\n case \"Ink\":\n return new InkAnnotation(parameters);\n\n case \"Highlight\":\n return new HighlightAnnotation(parameters);\n\n case \"Underline\":\n return new UnderlineAnnotation(parameters);\n\n case \"Squiggly\":\n return new SquigglyAnnotation(parameters);\n\n case \"StrikeOut\":\n return new StrikeOutAnnotation(parameters);\n\n case \"Stamp\":\n return new StampAnnotation(parameters);\n\n case \"FileAttachment\":\n return new FileAttachmentAnnotation(parameters);\n\n default:\n if (!collectFields) {\n if (!subtype) {\n warn(\"Annotation is missing the required /Subtype.\");\n } else {\n warn(\n `Unimplemented annotation type \"${subtype}\", ` +\n \"falling back to base annotation.\"\n );\n }\n }\n return new Annotation(parameters);\n }\n }\n\n static async _getPageIndex(xref, ref, pdfManager) {\n try {\n const annotDict = await xref.fetchIfRefAsync(ref);\n if (!isDict(annotDict)) {\n return -1;\n }\n const pageRef = annotDict.getRaw(\"P\");\n if (!isRef(pageRef)) {\n return -1;\n }\n const pageIndex = await pdfManager.ensureCatalog(\"getPageIndex\", [\n pageRef,\n ]);\n return pageIndex;\n } catch (ex) {\n warn(`_getPageIndex: \"${ex}\".`);\n return -1;\n }\n }\n}\n\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n\n const rgbColor = defaultColor || new Uint8ClampedArray(3);\n switch (color.length) {\n case 0: // Transparent, which we indicate with a null value\n return null;\n\n case 1: // Convert grayscale to RGB\n ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n case 3: // Convert RGB percentages to RGB\n ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n case 4: // Convert CMYK to RGB\n ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n default:\n return defaultColor;\n }\n}\n\nfunction getQuadPoints(dict, rect) {\n if (!dict.has(\"QuadPoints\")) {\n return null;\n }\n\n // The region is described as a number of quadrilaterals.\n // Each quadrilateral must consist of eight coordinates.\n const quadPoints = dict.getArray(\"QuadPoints\");\n if (\n !Array.isArray(quadPoints) ||\n quadPoints.length === 0 ||\n quadPoints.length % 8 > 0\n ) {\n return null;\n }\n\n const quadPointsLists = [];\n for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n // Each series of eight numbers represents the coordinates for one\n // quadrilateral in the order [x1, y1, x2, y2, x3, y3, x4, y4].\n // Convert this to an array of objects with x and y coordinates.\n quadPointsLists.push([]);\n for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n const x = quadPoints[j];\n const y = quadPoints[j + 1];\n\n // The quadpoints should be ignored if any coordinate in the array\n // lies outside the region specified by the rectangle. The rectangle\n // can be `null` for markup annotations since their rectangle may be\n // incorrect (fixes bug 1538111).\n if (\n rect !== null &&\n (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])\n ) {\n return null;\n }\n quadPointsLists[i].push({ x, y });\n }\n }\n\n // The PDF specification states in section 12.5.6.10 (figure 64) that the\n // order of the quadpoints should be bottom left, bottom right, top right\n // and top left. However, in practice PDF files use a different order,\n // namely bottom left, bottom right, top left and top right (this is also\n // mentioned on https://github.com/highkite/pdfAnnotate#QuadPoints), so\n // this is the actual order we should work with. However, the situation is\n // even worse since Adobe's own applications and other applications violate\n // the specification and create annotations with other orders, namely top\n // left, top right, bottom left and bottom right or even top left, top right,\n // bottom right and bottom left. To avoid inconsistency and broken rendering,\n // we normalize all lists to put the quadpoints in the same standard order\n // (see https://stackoverflow.com/a/10729881).\n return quadPointsLists.map(quadPointsList => {\n const [minX, maxX, minY, maxY] = quadPointsList.reduce(\n ([mX, MX, mY, MY], quadPoint) => [\n Math.min(mX, quadPoint.x),\n Math.max(MX, quadPoint.x),\n Math.min(mY, quadPoint.y),\n Math.max(MY, quadPoint.y),\n ],\n [Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]\n );\n return [\n { x: minX, y: maxY },\n { x: maxX, y: maxY },\n { x: minX, y: minY },\n { x: maxX, y: minY },\n ];\n });\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n // 12.5.5: Algorithm: Appearance streams\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n bbox,\n matrix\n );\n if (minX === maxX || minY === maxY) {\n // From real-life file, bbox was [0, 0, 0, 0]. In this case,\n // just apply the transform for rect\n return [1, 0, 0, 1, rect[0], rect[1]];\n }\n\n const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n return [\n xRatio,\n 0,\n 0,\n yRatio,\n rect[0] - minX * xRatio,\n rect[1] - minY * yRatio,\n ];\n}\n\nclass Annotation {\n constructor(params) {\n const dict = params.dict;\n\n this.setTitle(dict.get(\"T\"));\n this.setContents(dict.get(\"Contents\"));\n this.setModificationDate(dict.get(\"M\"));\n this.setFlags(dict.get(\"F\"));\n this.setRectangle(dict.getArray(\"Rect\"));\n this.setColor(dict.getArray(\"C\"));\n this.setBorderStyle(dict);\n this.setAppearance(dict);\n this.setBorderAndBackgroundColors(dict.get(\"MK\"));\n\n this._streams = [];\n if (this.appearance) {\n this._streams.push(this.appearance);\n }\n\n // Expose public properties using a data object.\n this.data = {\n annotationFlags: this.flags,\n borderStyle: this.borderStyle,\n color: this.color,\n backgroundColor: this.backgroundColor,\n borderColor: this.borderColor,\n contentsObj: this._contents,\n hasAppearance: !!this.appearance,\n id: params.id,\n modificationDate: this.modificationDate,\n rect: this.rectangle,\n subtype: params.subtype,\n hasOwnCanvas: false,\n };\n\n if (params.collectFields) {\n // Fields can act as container for other fields and have\n // some actions even if no Annotation inherit from them.\n // Those fields can be referenced by CO (calculation order).\n const kids = dict.get(\"Kids\");\n if (Array.isArray(kids)) {\n const kidIds = [];\n for (const kid of kids) {\n if (isRef(kid)) {\n kidIds.push(kid.toString());\n }\n }\n if (kidIds.length !== 0) {\n this.data.kidIds = kidIds;\n }\n }\n\n this.data.actions = collectActions(\n params.xref,\n dict,\n AnnotationActionEventType\n );\n this.data.fieldName = this._constructFieldName(dict);\n this.data.pageIndex = params.pageIndex;\n }\n\n this._fallbackFontDict = null;\n }\n\n /**\n * @private\n */\n _hasFlag(flags, flag) {\n return !!(flags & flag);\n }\n\n /**\n * @private\n */\n _isViewable(flags) {\n return (\n !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n !this._hasFlag(flags, AnnotationFlag.NOVIEW)\n );\n }\n\n /**\n * @private\n */\n _isPrintable(flags) {\n return (\n this._hasFlag(flags, AnnotationFlag.PRINT) &&\n !this._hasFlag(flags, AnnotationFlag.INVISIBLE)\n );\n }\n\n /**\n * Check if the annotation must be displayed by taking into account\n * the value found in the annotationStorage which may have been set\n * through JS.\n *\n * @public\n * @memberof Annotation\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n */\n mustBeViewed(annotationStorage) {\n const storageEntry =\n annotationStorage && annotationStorage.get(this.data.id);\n if (storageEntry && storageEntry.hidden !== undefined) {\n return !storageEntry.hidden;\n }\n return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\n }\n\n /**\n * Check if the annotation must be printed by taking into account\n * the value found in the annotationStorage which may have been set\n * through JS.\n *\n * @public\n * @memberof Annotation\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n */\n mustBePrinted(annotationStorage) {\n const storageEntry =\n annotationStorage && annotationStorage.get(this.data.id);\n if (storageEntry && storageEntry.print !== undefined) {\n return storageEntry.print;\n }\n return this.printable;\n }\n\n /**\n * @type {boolean}\n */\n get viewable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return true;\n }\n return this._isViewable(this.flags);\n }\n\n /**\n * @type {boolean}\n */\n get printable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return false;\n }\n return this._isPrintable(this.flags);\n }\n\n /**\n * @private\n */\n _parseStringHelper(data) {\n const str = typeof data === \"string\" ? stringToPDFString(data) : \"\";\n const dir = str && bidi(str).dir === \"rtl\" ? \"rtl\" : \"ltr\";\n\n return { str, dir };\n }\n\n /**\n * Set the title.\n *\n * @param {string} title - The title of the annotation, used e.g. with\n * PopupAnnotations.\n */\n setTitle(title) {\n this._title = this._parseStringHelper(title);\n }\n\n /**\n * Set the contents.\n *\n * @param {string} contents - Text to display for the annotation or, if the\n * type of annotation does not display text, a\n * description of the annotation's contents\n */\n setContents(contents) {\n this._contents = this._parseStringHelper(contents);\n }\n\n /**\n * Set the modification date.\n *\n * @public\n * @memberof Annotation\n * @param {string} modificationDate - PDF date string that indicates when the\n * annotation was last modified\n */\n setModificationDate(modificationDate) {\n this.modificationDate = isString(modificationDate)\n ? modificationDate\n : null;\n }\n\n /**\n * Set the flags.\n *\n * @public\n * @memberof Annotation\n * @param {number} flags - Unsigned 32-bit integer specifying annotation\n * characteristics\n * @see {@link shared/util.js}\n */\n setFlags(flags) {\n this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n }\n\n /**\n * Check if a provided flag is set.\n *\n * @public\n * @memberof Annotation\n * @param {number} flag - Hexadecimal representation for an annotation\n * characteristic\n * @returns {boolean}\n * @see {@link shared/util.js}\n */\n hasFlag(flag) {\n return this._hasFlag(this.flags, flag);\n }\n\n /**\n * Set the rectangle.\n *\n * @public\n * @memberof Annotation\n * @param {Array} rectangle - The rectangle array with exactly four entries\n */\n setRectangle(rectangle) {\n if (Array.isArray(rectangle) && rectangle.length === 4) {\n this.rectangle = Util.normalizeRect(rectangle);\n } else {\n this.rectangle = [0, 0, 0, 0];\n }\n }\n\n /**\n * Set the color and take care of color space conversion.\n * The default value is black, in RGB color space.\n *\n * @public\n * @memberof Annotation\n * @param {Array} color - The color array containing either 0\n * (transparent), 1 (grayscale), 3 (RGB) or\n * 4 (CMYK) elements\n */\n setColor(color) {\n this.color = getRgbColor(color);\n }\n\n /**\n * Set the color for background and border if any.\n * The default values are transparent.\n *\n * @public\n * @memberof Annotation\n * @param {Dict} mk - The MK dictionary\n */\n setBorderAndBackgroundColors(mk) {\n if (mk instanceof Dict) {\n this.borderColor = getRgbColor(mk.getArray(\"BC\"), null);\n this.backgroundColor = getRgbColor(mk.getArray(\"BG\"), null);\n } else {\n this.borderColor = this.backgroundColor = null;\n }\n }\n\n /**\n * Set the border style (as AnnotationBorderStyle object).\n *\n * @public\n * @memberof Annotation\n * @param {Dict} borderStyle - The border style dictionary\n */\n setBorderStyle(borderStyle) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(this.rectangle, \"setRectangle must have been called previously.\");\n }\n\n this.borderStyle = new AnnotationBorderStyle();\n if (!isDict(borderStyle)) {\n return;\n }\n if (borderStyle.has(\"BS\")) {\n const dict = borderStyle.get(\"BS\");\n const dictType = dict.get(\"Type\");\n\n if (!dictType || isName(dictType, \"Border\")) {\n this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n this.borderStyle.setStyle(dict.get(\"S\"));\n this.borderStyle.setDashArray(dict.getArray(\"D\"));\n }\n } else if (borderStyle.has(\"Border\")) {\n const array = borderStyle.getArray(\"Border\");\n if (Array.isArray(array) && array.length >= 3) {\n this.borderStyle.setHorizontalCornerRadius(array[0]);\n this.borderStyle.setVerticalCornerRadius(array[1]);\n this.borderStyle.setWidth(array[2], this.rectangle);\n\n if (array.length === 4) {\n // Dash array available\n this.borderStyle.setDashArray(array[3], /* forceStyle = */ true);\n }\n }\n } else {\n // There are no border entries in the dictionary. According to the\n // specification, we should draw a solid border of width 1 in that\n // case, but Adobe Reader did not implement that part of the\n // specification and instead draws no border at all, so we do the same.\n // See also https://github.com/mozilla/pdf.js/issues/6179.\n this.borderStyle.setWidth(0);\n }\n }\n\n /**\n * Set the (normal) appearance.\n *\n * @public\n * @memberof Annotation\n * @param {Dict} dict - The annotation's data dictionary\n */\n setAppearance(dict) {\n this.appearance = null;\n\n const appearanceStates = dict.get(\"AP\");\n if (!isDict(appearanceStates)) {\n return;\n }\n\n // In case the normal appearance is a stream, then it is used directly.\n const normalAppearanceState = appearanceStates.get(\"N\");\n if (isStream(normalAppearanceState)) {\n this.appearance = normalAppearanceState;\n return;\n }\n if (!isDict(normalAppearanceState)) {\n return;\n }\n\n // In case the normal appearance is a dictionary, the `AS` entry provides\n // the key of the stream in this dictionary.\n const as = dict.get(\"AS\");\n if (!isName(as) || !normalAppearanceState.has(as.name)) {\n return;\n }\n this.appearance = normalAppearanceState.get(as.name);\n }\n\n loadResources(keys, appearance) {\n return appearance.dict.getAsync(\"Resources\").then(resources => {\n if (!resources) {\n return undefined;\n }\n\n const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n return objectLoader.load().then(function () {\n return resources;\n });\n });\n }\n\n getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n const data = this.data;\n let appearance = this.appearance;\n const isUsingOwnCanvas =\n data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY;\n if (!appearance) {\n if (!isUsingOwnCanvas) {\n return Promise.resolve(new OperatorList());\n }\n appearance = new StringStream(\"\");\n appearance.dict = new Dict();\n }\n\n const appearanceDict = appearance.dict;\n const resourcesPromise = this.loadResources(\n [\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"],\n appearance\n );\n const bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n const matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n const transform = getTransformMatrix(data.rect, bbox, matrix);\n\n return resourcesPromise.then(resources => {\n const opList = new OperatorList();\n opList.addOp(OPS.beginAnnotation, [\n data.id,\n data.rect,\n transform,\n matrix,\n isUsingOwnCanvas,\n ]);\n\n return evaluator\n .getOperatorList({\n stream: appearance,\n task,\n resources,\n operatorList: opList,\n fallbackFontDict: this._fallbackFontDict,\n })\n .then(() => {\n opList.addOp(OPS.endAnnotation, []);\n this.reset();\n return opList;\n });\n });\n }\n\n async save(evaluator, task, annotationStorage) {\n return null;\n }\n\n /**\n * Get field data for usage in JS sandbox.\n *\n * Field object is defined here:\n * https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf#page=16\n *\n * @public\n * @memberof Annotation\n * @returns {Object | null}\n */\n getFieldObject() {\n if (this.data.kidIds) {\n return {\n id: this.data.id,\n actions: this.data.actions,\n name: this.data.fieldName,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"\",\n kidIds: this.data.kidIds,\n page: this.data.pageIndex,\n };\n }\n return null;\n }\n\n /**\n * Reset the annotation.\n *\n * This involves resetting the various streams that are either cached on the\n * annotation instance or created during its construction.\n *\n * @public\n * @memberof Annotation\n */\n reset() {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n this.appearance &&\n !this._streams.includes(this.appearance)\n ) {\n unreachable(\"The appearance stream should always be reset.\");\n }\n\n for (const stream of this._streams) {\n stream.reset();\n }\n }\n\n /**\n * Construct the (fully qualified) field name from the (partial) field\n * names of the field and its ancestors.\n *\n * @private\n * @memberof Annotation\n * @param {Dict} dict - Complete widget annotation dictionary\n * @returns {string}\n */\n _constructFieldName(dict) {\n // Both the `Parent` and `T` fields are optional. While at least one of\n // them should be provided, bad PDF generators may fail to do so.\n if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n warn(\"Unknown field name, falling back to empty field name.\");\n return \"\";\n }\n\n // If no parent exists, the partial and fully qualified names are equal.\n if (!dict.has(\"Parent\")) {\n return stringToPDFString(dict.get(\"T\"));\n }\n\n // Form the fully qualified field name by appending the partial name to\n // the parent's fully qualified name, separated by a period.\n const fieldName = [];\n if (dict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n }\n\n let loopDict = dict;\n const visited = new RefSet();\n if (dict.objId) {\n visited.put(dict.objId);\n }\n while (loopDict.has(\"Parent\")) {\n loopDict = loopDict.get(\"Parent\");\n if (\n !(loopDict instanceof Dict) ||\n (loopDict.objId && visited.has(loopDict.objId))\n ) {\n // Even though it is not allowed according to the PDF specification,\n // bad PDF generators may provide a `Parent` entry that is not a\n // dictionary, but `null` for example (issue 8143).\n //\n // If parent has been already visited, it means that we're\n // in an infinite loop.\n break;\n }\n if (loopDict.objId) {\n visited.put(loopDict.objId);\n }\n\n if (loopDict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n }\n }\n return fieldName.join(\".\");\n }\n}\n\n/**\n * Contains all data regarding an annotation's border style.\n */\nclass AnnotationBorderStyle {\n constructor() {\n this.width = 1;\n this.style = AnnotationBorderStyleType.SOLID;\n this.dashArray = [3];\n this.horizontalCornerRadius = 0;\n this.verticalCornerRadius = 0;\n }\n\n /**\n * Set the width.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} width - The width.\n * @param {Array} rect - The annotation `Rect` entry.\n */\n setWidth(width, rect = [0, 0, 0, 0]) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Array.isArray(rect) && rect.length === 4,\n \"A valid `rect` parameter must be provided.\"\n );\n }\n\n // Some corrupt PDF generators may provide the width as a `Name`,\n // rather than as a number (fixes issue 10385).\n if (isName(width)) {\n this.width = 0; // This is consistent with the behaviour in Adobe Reader.\n return;\n }\n if (Number.isInteger(width)) {\n if (width > 0) {\n const maxWidth = (rect[2] - rect[0]) / 2;\n const maxHeight = (rect[3] - rect[1]) / 2;\n\n // Ignore large `width`s, since they lead to the Annotation overflowing\n // the size set by the `Rect` entry thus causing the `annotationLayer`\n // to render it over the surrounding document (fixes bug1552113.pdf).\n if (\n maxWidth > 0 &&\n maxHeight > 0 &&\n (width > maxWidth || width > maxHeight)\n ) {\n warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n width = 1;\n }\n }\n this.width = width;\n }\n }\n\n /**\n * Set the style.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {Name} style - The annotation style.\n * @see {@link shared/util.js}\n */\n setStyle(style) {\n if (!isName(style)) {\n return;\n }\n switch (style.name) {\n case \"S\":\n this.style = AnnotationBorderStyleType.SOLID;\n break;\n\n case \"D\":\n this.style = AnnotationBorderStyleType.DASHED;\n break;\n\n case \"B\":\n this.style = AnnotationBorderStyleType.BEVELED;\n break;\n\n case \"I\":\n this.style = AnnotationBorderStyleType.INSET;\n break;\n\n case \"U\":\n this.style = AnnotationBorderStyleType.UNDERLINE;\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Set the dash array.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {Array} dashArray - The dash array with at least one element\n * @param {boolean} [forceStyle]\n */\n setDashArray(dashArray, forceStyle = false) {\n // We validate the dash array, but we do not use it because CSS does not\n // allow us to change spacing of dashes. For more information, visit\n // http://www.w3.org/TR/css3-background/#the-border-style.\n if (Array.isArray(dashArray) && dashArray.length > 0) {\n // According to the PDF specification: the elements in `dashArray`\n // shall be numbers that are nonnegative and not all equal to zero.\n let isValid = true;\n let allZeros = true;\n for (const element of dashArray) {\n const validNumber = +element >= 0;\n if (!validNumber) {\n isValid = false;\n break;\n } else if (element > 0) {\n allZeros = false;\n }\n }\n if (isValid && !allZeros) {\n this.dashArray = dashArray;\n\n if (forceStyle) {\n // Even though we cannot use the dash array in the display layer,\n // at least ensure that we use the correct border-style.\n this.setStyle(Name.get(\"D\"));\n }\n } else {\n this.width = 0; // Adobe behavior when the array is invalid.\n }\n } else if (dashArray) {\n this.width = 0; // Adobe behavior when the array is invalid.\n }\n }\n\n /**\n * Set the horizontal corner radius (from a Border dictionary).\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} radius - The horizontal corner radius.\n */\n setHorizontalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.horizontalCornerRadius = radius;\n }\n }\n\n /**\n * Set the vertical corner radius (from a Border dictionary).\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} radius - The vertical corner radius.\n */\n setVerticalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.verticalCornerRadius = radius;\n }\n }\n}\n\nclass MarkupAnnotation extends Annotation {\n constructor(parameters) {\n super(parameters);\n\n const dict = parameters.dict;\n\n if (dict.has(\"IRT\")) {\n const rawIRT = dict.getRaw(\"IRT\");\n this.data.inReplyTo = isRef(rawIRT) ? rawIRT.toString() : null;\n\n const rt = dict.get(\"RT\");\n this.data.replyType = isName(rt) ? rt.name : AnnotationReplyType.REPLY;\n }\n\n if (this.data.replyType === AnnotationReplyType.GROUP) {\n // Subordinate annotations in a group should inherit\n // the group attributes from the primary annotation.\n const parent = dict.get(\"IRT\");\n\n this.setTitle(parent.get(\"T\"));\n this.data.titleObj = this._title;\n\n this.setContents(parent.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n\n if (!parent.has(\"CreationDate\")) {\n this.data.creationDate = null;\n } else {\n this.setCreationDate(parent.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n }\n\n if (!parent.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parent.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n\n this.data.hasPopup = parent.has(\"Popup\");\n\n if (!parent.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n } else {\n this.setColor(parent.getArray(\"C\"));\n this.data.color = this.color;\n }\n } else {\n this.data.titleObj = this._title;\n\n this.setCreationDate(dict.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n\n this.data.hasPopup = dict.has(\"Popup\");\n\n if (!dict.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n }\n }\n\n if (dict.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\"RC\"));\n }\n }\n\n /**\n * Set the creation date.\n *\n * @public\n * @memberof MarkupAnnotation\n * @param {string} creationDate - PDF date string that indicates when the\n * annotation was originally created\n */\n setCreationDate(creationDate) {\n this.creationDate = isString(creationDate) ? creationDate : null;\n }\n\n _setDefaultAppearance({\n xref,\n extra,\n strokeColor,\n fillColor,\n blendMode,\n strokeAlpha,\n fillAlpha,\n pointsCallback,\n }) {\n let minX = Number.MAX_VALUE;\n let minY = Number.MAX_VALUE;\n let maxX = Number.MIN_VALUE;\n let maxY = Number.MIN_VALUE;\n\n const buffer = [\"q\"];\n if (extra) {\n buffer.push(extra);\n }\n if (strokeColor) {\n buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\n }\n if (fillColor) {\n buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\n }\n\n let pointsArray = this.data.quadPoints;\n if (!pointsArray) {\n // If there are no quadpoints, the rectangle should be used instead.\n // Convert the rectangle definition to a points array similar to how the\n // quadpoints are defined.\n pointsArray = [\n [\n { x: this.rectangle[0], y: this.rectangle[3] },\n { x: this.rectangle[2], y: this.rectangle[3] },\n { x: this.rectangle[0], y: this.rectangle[1] },\n { x: this.rectangle[2], y: this.rectangle[1] },\n ],\n ];\n }\n\n for (const points of pointsArray) {\n const [mX, MX, mY, MY] = pointsCallback(buffer, points);\n minX = Math.min(minX, mX);\n maxX = Math.max(maxX, MX);\n minY = Math.min(minY, mY);\n maxY = Math.max(maxY, MY);\n }\n buffer.push(\"Q\");\n\n const formDict = new Dict(xref);\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n\n const appearanceStream = new StringStream(buffer.join(\" \"));\n appearanceStream.dict = appearanceStreamDict;\n formDict.set(\"Fm0\", appearanceStream);\n\n const gsDict = new Dict(xref);\n if (blendMode) {\n gsDict.set(\"BM\", Name.get(blendMode));\n }\n if (typeof strokeAlpha === \"number\") {\n gsDict.set(\"CA\", strokeAlpha);\n }\n if (typeof fillAlpha === \"number\") {\n gsDict.set(\"ca\", fillAlpha);\n }\n\n const stateDict = new Dict(xref);\n stateDict.set(\"GS0\", gsDict);\n\n const resources = new Dict(xref);\n resources.set(\"ExtGState\", stateDict);\n resources.set(\"XObject\", formDict);\n\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Resources\", resources);\n const bbox = (this.data.rect = [minX, minY, maxX, maxY]);\n appearanceDict.set(\"BBox\", bbox);\n\n this.appearance = new StringStream(\"/GS0 gs /Fm0 Do\");\n this.appearance.dict = appearanceDict;\n\n // This method is only called if there is no appearance for the annotation,\n // so `this.appearance` is not pushed yet in the `Annotation` constructor.\n this._streams.push(this.appearance, appearanceStream);\n }\n}\n\nclass WidgetAnnotation extends Annotation {\n constructor(params) {\n super(params);\n\n const dict = params.dict;\n const data = this.data;\n this.ref = params.ref;\n\n data.annotationType = AnnotationType.WIDGET;\n if (data.fieldName === undefined) {\n data.fieldName = this._constructFieldName(dict);\n }\n if (data.actions === undefined) {\n data.actions = collectActions(\n params.xref,\n dict,\n AnnotationActionEventType\n );\n }\n\n const fieldValue = getInheritableProperty({\n dict,\n key: \"V\",\n getArray: true,\n });\n data.fieldValue = this._decodeFormValue(fieldValue);\n\n const defaultFieldValue = getInheritableProperty({\n dict,\n key: \"DV\",\n getArray: true,\n });\n data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\n\n // When no \"V\" entry exists, let the fieldValue fallback to the \"DV\" entry\n // (fixes issue13823.pdf).\n if (fieldValue === undefined && data.defaultFieldValue !== null) {\n data.fieldValue = data.defaultFieldValue;\n }\n\n data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n\n const defaultAppearance =\n getInheritableProperty({ dict, key: \"DA\" }) || params.acroForm.get(\"DA\");\n this._defaultAppearance = isString(defaultAppearance)\n ? defaultAppearance\n : \"\";\n data.defaultAppearanceData = parseDefaultAppearance(\n this._defaultAppearance\n );\n\n const fieldType = getInheritableProperty({ dict, key: \"FT\" });\n data.fieldType = isName(fieldType) ? fieldType.name : null;\n\n const localResources = getInheritableProperty({ dict, key: \"DR\" });\n const acroFormResources = params.acroForm.get(\"DR\");\n const appearanceResources =\n this.appearance && this.appearance.dict.get(\"Resources\");\n\n this._fieldResources = {\n localResources,\n acroFormResources,\n appearanceResources,\n mergedResources: Dict.merge({\n xref: params.xref,\n dictArray: [localResources, appearanceResources, acroFormResources],\n mergeSubDicts: true,\n }),\n };\n\n data.fieldFlags = getInheritableProperty({ dict, key: \"Ff\" });\n if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n data.fieldFlags = 0;\n }\n\n data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN);\n }\n\n /**\n * Decode the given form value.\n *\n * @private\n * @memberof WidgetAnnotation\n * @param {Array<string>|Name|string} formValue - The (possibly encoded)\n * form value.\n * @returns {Array<string>|string|null}\n */\n _decodeFormValue(formValue) {\n if (Array.isArray(formValue)) {\n return formValue\n .filter(item => isString(item))\n .map(item => stringToPDFString(item));\n } else if (isName(formValue)) {\n return stringToPDFString(formValue.name);\n } else if (isString(formValue)) {\n return stringToPDFString(formValue);\n }\n return null;\n }\n\n /**\n * Check if a provided field flag is set.\n *\n * @public\n * @memberof WidgetAnnotation\n * @param {number} flag - Hexadecimal representation for an annotation\n * field characteristic\n * @returns {boolean}\n * @see {@link shared/util.js}\n */\n hasFieldFlag(flag) {\n return !!(this.data.fieldFlags & flag);\n }\n\n getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n // Do not render form elements on the canvas when interactive forms are\n // enabled. The display layer is responsible for rendering them instead.\n if (renderForms && !(this instanceof SignatureWidgetAnnotation)) {\n return Promise.resolve(new OperatorList());\n }\n\n if (!this._hasText) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n return this._getAppearance(evaluator, task, annotationStorage).then(\n content => {\n if (this.appearance && content === null) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n const operatorList = new OperatorList();\n\n // Even if there is an appearance stream, ignore it. This is the\n // behaviour used by Adobe Reader.\n if (!this._defaultAppearance || content === null) {\n return operatorList;\n }\n\n const matrix = [1, 0, 0, 1, 0, 0];\n const bbox = [\n 0,\n 0,\n this.data.rect[2] - this.data.rect[0],\n this.data.rect[3] - this.data.rect[1],\n ];\n\n const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n operatorList.addOp(OPS.beginAnnotation, [\n this.data.id,\n this.data.rect,\n transform,\n matrix,\n ]);\n\n const stream = new StringStream(content);\n return evaluator\n .getOperatorList({\n stream,\n task,\n resources: this._fieldResources.mergedResources,\n operatorList,\n })\n .then(function () {\n operatorList.addOp(OPS.endAnnotation, []);\n return operatorList;\n });\n }\n );\n }\n\n async save(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === this.data.fieldValue || value === undefined) {\n return null;\n }\n\n let appearance = await this._getAppearance(\n evaluator,\n task,\n annotationStorage\n );\n if (appearance === null) {\n return null;\n }\n const { xref } = evaluator;\n\n const dict = xref.fetchIfRef(this.ref);\n if (!isDict(dict)) {\n return null;\n }\n\n const bbox = [\n 0,\n 0,\n this.data.rect[2] - this.data.rect[0],\n this.data.rect[3] - this.data.rect[1],\n ];\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value,\n };\n\n const newRef = xref.getNewRef();\n const AP = new Dict(xref);\n AP.set(\"N\", newRef);\n\n const encrypt = xref.encrypt;\n let originalTransform = null;\n let newTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);\n appearance = newTransform.encryptString(appearance);\n }\n\n dict.set(\"V\", isAscii(value) ? value : stringToUTF16BEString(value));\n dict.set(\"AP\", AP);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Length\", appearance.length);\n appearanceDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceDict.set(\"Resources\", this._getSaveFieldResources(xref));\n appearanceDict.set(\"BBox\", bbox);\n\n const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, bufferOriginal, originalTransform);\n bufferOriginal.push(\"\\nendobj\\n\");\n\n const bufferNew = [`${newRef.num} ${newRef.gen} obj\\n`];\n writeDict(appearanceDict, bufferNew, newTransform);\n bufferNew.push(\" stream\\n\", appearance, \"\\nendstream\\nendobj\\n\");\n\n return [\n // data for the original object\n // V field changed + reference for new AP\n { ref: this.ref, data: bufferOriginal.join(\"\"), xfa },\n // data for the new AP\n { ref: newRef, data: bufferNew.join(\"\"), xfa: null },\n ];\n }\n\n async _getAppearance(evaluator, task, annotationStorage) {\n const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n if (!annotationStorage || isPassword) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n let value = storageEntry && storageEntry.value;\n if (value === undefined) {\n // The annotation hasn't been rendered so use the appearance\n return null;\n }\n\n value = value.trim();\n\n if (value === \"\") {\n // the field is empty: nothing to render\n return \"\";\n }\n\n let lineCount = -1;\n if (this.data.multiLine) {\n lineCount = value.split(/\\r\\n|\\r|\\n/).length;\n }\n\n const defaultPadding = 2;\n const hPadding = defaultPadding;\n const totalHeight = this.data.rect[3] - this.data.rect[1];\n const totalWidth = this.data.rect[2] - this.data.rect[0];\n\n if (!this._defaultAppearance) {\n // The DA is required and must be a string.\n // If there is no font named Helvetica in the resource dictionary,\n // the evaluator will fall back to a default font.\n // Doing so prevents exceptions and allows saving/printing\n // the file as expected.\n this.data.defaultAppearanceData = parseDefaultAppearance(\n (this._defaultAppearance = \"/Helvetica 0 Tf 0 g\")\n );\n }\n\n const [defaultAppearance, fontSize] = this._computeFontSize(\n totalHeight,\n lineCount\n );\n\n const font = await this._getFontData(evaluator, task);\n\n let descent = font.descent;\n if (isNaN(descent)) {\n descent = 0;\n }\n\n const vPadding = defaultPadding + Math.abs(descent) * fontSize;\n const alignment = this.data.textAlignment;\n\n if (this.data.multiLine) {\n return this._getMultilineAppearance(\n defaultAppearance,\n value,\n font,\n fontSize,\n totalWidth,\n totalHeight,\n alignment,\n hPadding,\n vPadding\n );\n }\n\n // TODO: need to handle chars which are not in the font.\n const encodedString = font.encodeString(value).join(\"\");\n\n if (this.data.comb) {\n return this._getCombAppearance(\n defaultAppearance,\n font,\n encodedString,\n totalWidth,\n hPadding,\n vPadding\n );\n }\n\n if (alignment === 0 || alignment > 2) {\n // Left alignment: nothing to do\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${escapeString(\n encodedString\n )}) Tj` +\n \" ET Q EMC\"\n );\n }\n\n const renderedText = this._renderText(\n encodedString,\n font,\n fontSize,\n totalWidth,\n alignment,\n hPadding,\n vPadding\n );\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 0 0 Tm ${renderedText}` +\n \" ET Q EMC\"\n );\n }\n\n async _getFontData(evaluator, task) {\n const operatorList = new OperatorList();\n const initialState = {\n font: null,\n clone() {\n return this;\n },\n };\n\n const { fontName, fontSize } = this.data.defaultAppearanceData;\n await evaluator.handleSetFont(\n this._fieldResources.mergedResources,\n [fontName && Name.get(fontName), fontSize],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ null\n );\n\n return initialState.font;\n }\n\n _computeFontSize(height, lineCount) {\n let { fontSize } = this.data.defaultAppearanceData;\n if (!fontSize) {\n // A zero value for size means that the font shall be auto-sized:\n // its size shall be computed as a function of the height of the\n // annotation rectangle (see 12.7.3.3).\n\n const roundWithOneDigit = x => Math.round(x * 10) / 10;\n\n // Represent the percentage of the font size over the height\n // of a single-line field.\n const FONT_FACTOR = 0.8;\n if (lineCount === -1) {\n fontSize = roundWithOneDigit(FONT_FACTOR * height);\n } else {\n // Hard to guess how many lines there are.\n // The field may have been sized to have 10 lines\n // and the user entered only 1 so if we get font size from\n // height and number of lines then we'll get something too big.\n // So we compute a fake number of lines based on height and\n // a font size equal to 10.\n // Then we'll adjust font size to what we have really.\n fontSize = 10;\n let lineHeight = fontSize / FONT_FACTOR;\n let numberOfLines = Math.round(height / lineHeight);\n numberOfLines = Math.max(numberOfLines, lineCount);\n lineHeight = height / numberOfLines;\n fontSize = roundWithOneDigit(FONT_FACTOR * lineHeight);\n }\n\n const { fontName, fontColor } = this.data.defaultAppearanceData;\n this._defaultAppearance = createDefaultAppearance({\n fontSize,\n fontName,\n fontColor,\n });\n }\n return [this._defaultAppearance, fontSize];\n }\n\n _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {\n // We need to get the width of the text in order to align it correctly\n const glyphs = font.charsToGlyphs(text);\n const scale = fontSize / 1000;\n let width = 0;\n for (const glyph of glyphs) {\n width += glyph.width * scale;\n }\n\n let shift;\n if (alignment === 1) {\n // Center\n shift = (totalWidth - width) / 2;\n } else if (alignment === 2) {\n // Right\n shift = totalWidth - width - hPadding;\n } else {\n shift = hPadding;\n }\n shift = shift.toFixed(2);\n vPadding = vPadding.toFixed(2);\n\n return `${shift} ${vPadding} Td (${escapeString(text)}) Tj`;\n }\n\n /**\n * @private\n */\n _getSaveFieldResources(xref) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n this.data.defaultAppearanceData,\n \"Expected `_defaultAppearanceData` to have been set.\"\n );\n }\n const { localResources, appearanceResources, acroFormResources } =\n this._fieldResources;\n\n const fontName =\n this.data.defaultAppearanceData &&\n this.data.defaultAppearanceData.fontName;\n if (!fontName) {\n return localResources || Dict.empty;\n }\n\n for (const resources of [localResources, appearanceResources]) {\n if (resources instanceof Dict) {\n const localFont = resources.get(\"Font\");\n if (localFont instanceof Dict && localFont.has(fontName)) {\n return resources;\n }\n }\n }\n if (acroFormResources instanceof Dict) {\n const acroFormFont = acroFormResources.get(\"Font\");\n if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) {\n const subFontDict = new Dict(xref);\n subFontDict.set(fontName, acroFormFont.getRaw(fontName));\n\n const subResourcesDict = new Dict(xref);\n subResourcesDict.set(\"Font\", subFontDict);\n\n return Dict.merge({\n xref,\n dictArray: [subResourcesDict, localResources],\n mergeSubDicts: true,\n });\n }\n }\n return localResources || Dict.empty;\n }\n\n getFieldObject() {\n return null;\n }\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n this._hasText = true;\n\n const dict = params.dict;\n\n // The field value is always a string.\n if (!isString(this.data.fieldValue)) {\n this.data.fieldValue = \"\";\n }\n\n // Determine the alignment of text in the field.\n let alignment = getInheritableProperty({ dict, key: \"Q\" });\n if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n alignment = null;\n }\n this.data.textAlignment = alignment;\n\n // Determine the maximum length of text in the field.\n let maximumLength = getInheritableProperty({ dict, key: \"MaxLen\" });\n if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n maximumLength = null;\n }\n this.data.maxLen = maximumLength;\n\n // Process field flags for the display layer.\n this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n this.data.comb =\n this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\n !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\n !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\n this.data.maxLen !== null;\n }\n\n _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding) {\n const combWidth = (width / this.data.maxLen).toFixed(2);\n const buf = [];\n const positions = font.getCharPositions(text);\n for (const [start, end] of positions) {\n buf.push(`(${escapeString(text.substring(start, end))}) Tj`);\n }\n\n const renderedComb = buf.join(` ${combWidth} 0 Td `);\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` +\n \" ET Q EMC\"\n );\n }\n\n _getMultilineAppearance(\n defaultAppearance,\n text,\n font,\n fontSize,\n width,\n height,\n alignment,\n hPadding,\n vPadding\n ) {\n const lines = text.split(/\\r\\n|\\r|\\n/);\n const buf = [];\n const totalWidth = width - 2 * hPadding;\n for (const line of lines) {\n const chunks = this._splitLine(line, font, fontSize, totalWidth);\n for (const chunk of chunks) {\n const padding = buf.length === 0 ? hPadding : 0;\n buf.push(\n this._renderText(\n chunk,\n font,\n fontSize,\n width,\n alignment,\n padding,\n -fontSize // <0 because a line is below the previous one\n )\n );\n }\n }\n\n const renderedText = buf.join(\"\\n\");\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 0 ${height} Tm ${renderedText}` +\n \" ET Q EMC\"\n );\n }\n\n _splitLine(line, font, fontSize, width) {\n // TODO: need to handle chars which are not in the font.\n line = font.encodeString(line).join(\"\");\n\n const glyphs = font.charsToGlyphs(line);\n\n if (glyphs.length <= 1) {\n // Nothing to split\n return [line];\n }\n\n const positions = font.getCharPositions(line);\n const scale = fontSize / 1000;\n const chunks = [];\n\n let lastSpacePosInStringStart = -1,\n lastSpacePosInStringEnd = -1,\n lastSpacePos = -1,\n startChunk = 0,\n currentWidth = 0;\n\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const [start, end] = positions[i];\n const glyph = glyphs[i];\n const glyphWidth = glyph.width * scale;\n if (glyph.unicode === \" \") {\n if (currentWidth + glyphWidth > width) {\n // We can break here\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n lastSpacePosInStringStart = -1;\n lastSpacePos = -1;\n } else {\n currentWidth += glyphWidth;\n lastSpacePosInStringStart = start;\n lastSpacePosInStringEnd = end;\n lastSpacePos = i;\n }\n } else {\n if (currentWidth + glyphWidth > width) {\n // We must break to the last white position (if available)\n if (lastSpacePosInStringStart !== -1) {\n chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\n startChunk = lastSpacePosInStringEnd;\n i = lastSpacePos + 1;\n lastSpacePosInStringStart = -1;\n currentWidth = 0;\n } else {\n // Just break in the middle of the word\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n }\n } else {\n currentWidth += glyphWidth;\n }\n }\n }\n\n if (startChunk < line.length) {\n chunks.push(line.substring(startChunk, line.length));\n }\n\n return chunks;\n }\n\n getFieldObject() {\n return {\n id: this.data.id,\n value: this.data.fieldValue,\n defaultValue: this.data.defaultFieldValue,\n multiline: this.data.multiLine,\n password: this.hasFieldFlag(AnnotationFieldFlag.PASSWORD),\n charLimit: this.data.maxLen,\n comb: this.data.comb,\n editable: !this.data.readOnly,\n hidden: this.data.hidden,\n name: this.data.fieldName,\n rect: this.data.rect,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"text\",\n };\n }\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n this.checkedAppearance = null;\n this.uncheckedAppearance = null;\n\n this.data.checkBox =\n !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.radioButton =\n this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.isTooltipOnly = false;\n\n if (this.data.checkBox) {\n this._processCheckBox(params);\n } else if (this.data.radioButton) {\n this._processRadioButton(params);\n } else if (this.data.pushButton) {\n this.data.hasOwnCanvas = true;\n this._processPushButton(params);\n } else {\n warn(\"Invalid field flags for button widget annotation\");\n }\n }\n\n async getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n ) {\n if (this.data.pushButton) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n false, // we use normalAppearance to render the button\n annotationStorage\n );\n }\n\n let value = null;\n if (annotationStorage) {\n const storageEntry = annotationStorage.get(this.data.id);\n value = storageEntry ? storageEntry.value : null;\n }\n\n if (value === null) {\n // Nothing in the annotationStorage.\n if (this.appearance) {\n // But we've a default appearance so use it.\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n // There is no default appearance so use the one derived\n // from the field value.\n if (this.data.checkBox) {\n value = this.data.fieldValue === this.data.exportValue;\n } else {\n value = this.data.fieldValue === this.data.buttonValue;\n }\n }\n\n const appearance = value\n ? this.checkedAppearance\n : this.uncheckedAppearance;\n if (appearance) {\n const savedAppearance = this.appearance;\n this.appearance = appearance;\n const operatorList = super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n this.appearance = savedAppearance;\n return operatorList;\n }\n\n // No appearance\n return new OperatorList();\n }\n\n async save(evaluator, task, annotationStorage) {\n if (this.data.checkBox) {\n return this._saveCheckbox(evaluator, task, annotationStorage);\n }\n\n if (this.data.radioButton) {\n return this._saveRadioButton(evaluator, task, annotationStorage);\n }\n\n // Nothing to save\n return null;\n }\n\n async _saveCheckbox(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === undefined) {\n return null;\n }\n\n const defaultValue = this.data.fieldValue === this.data.exportValue;\n if (defaultValue === value) {\n return null;\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n if (!isDict(dict)) {\n return null;\n }\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value: value ? this.data.exportValue : \"\",\n };\n\n const name = Name.get(value ? this.data.exportValue : \"Off\");\n dict.set(\"V\", name);\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n const encrypt = evaluator.xref.encrypt;\n let originalTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n }\n\n const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, buffer, originalTransform);\n buffer.push(\"\\nendobj\\n\");\n\n return [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n }\n\n async _saveRadioButton(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === undefined) {\n return null;\n }\n\n const defaultValue = this.data.fieldValue === this.data.buttonValue;\n if (defaultValue === value) {\n return null;\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n if (!isDict(dict)) {\n return null;\n }\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value: value ? this.data.buttonValue : \"\",\n };\n\n const name = Name.get(value ? this.data.buttonValue : \"Off\");\n let parentBuffer = null;\n const encrypt = evaluator.xref.encrypt;\n\n if (value) {\n if (isRef(this.parent)) {\n const parent = evaluator.xref.fetch(this.parent);\n let parentTransform = null;\n if (encrypt) {\n parentTransform = encrypt.createCipherTransform(\n this.parent.num,\n this.parent.gen\n );\n }\n parent.set(\"V\", name);\n parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\\n`];\n writeDict(parent, parentBuffer, parentTransform);\n parentBuffer.push(\"\\nendobj\\n\");\n } else if (isDict(this.parent)) {\n this.parent.set(\"V\", name);\n }\n }\n\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n let originalTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n }\n\n const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, buffer, originalTransform);\n buffer.push(\"\\nendobj\\n\");\n\n const newRefs = [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n if (parentBuffer !== null) {\n newRefs.push({\n ref: this.parent,\n data: parentBuffer.join(\"\"),\n xfa: null,\n });\n }\n\n return newRefs;\n }\n\n _getDefaultCheckedAppearance(params, type) {\n const width = this.data.rect[2] - this.data.rect[0];\n const height = this.data.rect[3] - this.data.rect[1];\n const bbox = [0, 0, width, height];\n\n // Ratio used to have a mark slightly smaller than the bbox.\n const FONT_RATIO = 0.8;\n const fontSize = Math.min(width, height) * FONT_RATIO;\n\n // Char Metrics\n // Widths came from widths for ZapfDingbats.\n // Heights are guessed with Fontforge and FoxitDingbats.pfb.\n let metrics, char;\n if (type === \"check\") {\n // Char 33 (2713 in unicode)\n metrics = {\n width: 0.755 * fontSize,\n height: 0.705 * fontSize,\n };\n char = \"\\x33\";\n } else if (type === \"disc\") {\n // Char 6C (25CF in unicode)\n metrics = {\n width: 0.791 * fontSize,\n height: 0.705 * fontSize,\n };\n char = \"\\x6C\";\n } else {\n unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\n }\n\n // Values to center the glyph in the bbox.\n const xShift = (width - metrics.width) / 2;\n const yShift = (height - metrics.height) / 2;\n\n const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\n\n const appearanceStreamDict = new Dict(params.xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", bbox);\n appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, 0, 0]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n\n const resources = new Dict(params.xref);\n const font = new Dict(params.xref);\n font.set(\"PdfJsZaDb\", this.fallbackFontDict);\n resources.set(\"Font\", font);\n\n appearanceStreamDict.set(\"Resources\", resources);\n\n this.checkedAppearance = new StringStream(appearance);\n this.checkedAppearance.dict = appearanceStreamDict;\n\n this._streams.push(this.checkedAppearance);\n }\n\n _processCheckBox(params) {\n const customAppearance = params.dict.get(\"AP\");\n if (!isDict(customAppearance)) {\n return;\n }\n\n const normalAppearance = customAppearance.get(\"N\");\n if (!isDict(normalAppearance)) {\n return;\n }\n\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=1722036.\n // If we've an AS and a V then take AS.\n const asValue = this._decodeFormValue(params.dict.get(\"AS\"));\n if (typeof asValue === \"string\") {\n this.data.fieldValue = asValue;\n }\n\n const yes =\n this.data.fieldValue !== null && this.data.fieldValue !== \"Off\"\n ? this.data.fieldValue\n : \"Yes\";\n\n const exportValues = normalAppearance.getKeys();\n if (exportValues.length === 0) {\n exportValues.push(\"Off\", yes);\n } else if (exportValues.length === 1) {\n if (exportValues[0] === \"Off\") {\n exportValues.push(yes);\n } else {\n exportValues.unshift(\"Off\");\n }\n } else if (exportValues.includes(yes)) {\n exportValues.length = 0;\n exportValues.push(\"Off\", yes);\n } else {\n const otherYes = exportValues.find(v => v !== \"Off\");\n exportValues.length = 0;\n exportValues.push(\"Off\", otherYes);\n }\n\n // Don't use a \"V\" entry pointing to a non-existent appearance state,\n // see e.g. bug1720411.pdf where it's an *empty* Name-instance.\n if (!exportValues.includes(this.data.fieldValue)) {\n this.data.fieldValue = \"Off\";\n }\n\n this.data.exportValue = exportValues[1];\n\n this.checkedAppearance =\n normalAppearance.get(this.data.exportValue) || null;\n this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"check\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n }\n\n _processRadioButton(params) {\n this.data.fieldValue = this.data.buttonValue = null;\n\n // The parent field's `V` entry holds a `Name` object with the appearance\n // state of whichever child field is currently in the \"on\" state.\n const fieldParent = params.dict.get(\"Parent\");\n if (isDict(fieldParent)) {\n this.parent = params.dict.getRaw(\"Parent\");\n const fieldParentValue = fieldParent.get(\"V\");\n if (isName(fieldParentValue)) {\n this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n }\n }\n\n // The button's value corresponds to its appearance state.\n const appearanceStates = params.dict.get(\"AP\");\n if (!isDict(appearanceStates)) {\n return;\n }\n const normalAppearance = appearanceStates.get(\"N\");\n if (!isDict(normalAppearance)) {\n return;\n }\n for (const key of normalAppearance.getKeys()) {\n if (key !== \"Off\") {\n this.data.buttonValue = this._decodeFormValue(key);\n break;\n }\n }\n\n this.checkedAppearance =\n normalAppearance.get(this.data.buttonValue) || null;\n this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"disc\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n }\n\n _processPushButton(params) {\n if (\n !params.dict.has(\"A\") &&\n !params.dict.has(\"AA\") &&\n !this.data.alternativeText\n ) {\n warn(\"Push buttons without action dictionaries are not supported\");\n return;\n }\n\n this.data.isTooltipOnly = !params.dict.has(\"A\") && !params.dict.has(\"AA\");\n\n Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl,\n });\n }\n\n getFieldObject() {\n let type = \"button\";\n let exportValues;\n if (this.data.checkBox) {\n type = \"checkbox\";\n exportValues = this.data.exportValue;\n } else if (this.data.radioButton) {\n type = \"radiobutton\";\n exportValues = this.data.buttonValue;\n }\n return {\n id: this.data.id,\n value: this.data.fieldValue || \"Off\",\n defaultValue: this.data.defaultFieldValue,\n exportValues,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type,\n };\n }\n\n get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"ZapfDingbats\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"ZapfDingbatsEncoding\"));\n\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n // Determine the options. The options array may consist of strings or\n // arrays. If the array consists of arrays, then the first element of\n // each array is the export value and the second element of each array is\n // the display value. If the array consists of strings, then these\n // represent both the export and display value. In this case, we convert\n // it to an array of arrays as well for convenience in the display layer.\n // Note that the specification does not state that the `Opt` field is\n // inheritable, but in practice PDF generators do make annotations\n // inherit the options from a parent annotation (issue 8094).\n this.data.options = [];\n\n const options = getInheritableProperty({ dict: params.dict, key: \"Opt\" });\n if (Array.isArray(options)) {\n const xref = params.xref;\n for (let i = 0, ii = options.length; i < ii; i++) {\n const option = xref.fetchIfRef(options[i]);\n const isOptionArray = Array.isArray(option);\n\n this.data.options[i] = {\n exportValue: this._decodeFormValue(\n isOptionArray ? xref.fetchIfRef(option[0]) : option\n ),\n displayValue: this._decodeFormValue(\n isOptionArray ? xref.fetchIfRef(option[1]) : option\n ),\n };\n }\n }\n\n // The field value can be `null` if no item is selected, a string if one\n // item is selected or an array of strings if multiple items are selected.\n // For consistency in the API and convenience in the display layer, we\n // always make the field value an array with zero, one or multiple items.\n if (isString(this.data.fieldValue)) {\n this.data.fieldValue = [this.data.fieldValue];\n } else if (!this.data.fieldValue) {\n this.data.fieldValue = [];\n }\n\n // Process field flags for the display layer.\n this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n this._hasText = true;\n }\n\n getFieldObject() {\n const type = this.data.combo ? \"combobox\" : \"listbox\";\n const value =\n this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\n return {\n id: this.data.id,\n value,\n defaultValue: this.data.defaultFieldValue,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n numItems: this.data.fieldValue.length,\n multipleSelection: this.data.multiSelect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n items: this.data.options,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type,\n };\n }\n}\n\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n // Unset the fieldValue since it's (most likely) a `Dict` which is\n // non-serializable and will thus cause errors when sending annotations\n // to the main-thread (issue 10347).\n this.data.fieldValue = null;\n }\n\n getFieldObject() {\n return {\n id: this.data.id,\n value: null,\n page: this.data.pageIndex,\n type: \"signature\",\n };\n }\n}\n\nclass TextAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n const DEFAULT_ICON_SIZE = 22; // px\n\n super(parameters);\n\n const dict = parameters.dict;\n this.data.annotationType = AnnotationType.TEXT;\n\n if (this.data.hasAppearance) {\n this.data.name = \"NoIcon\";\n } else {\n this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n }\n\n if (dict.has(\"State\")) {\n this.data.state = dict.get(\"State\") || null;\n this.data.stateModel = dict.get(\"StateModel\") || null;\n } else {\n this.data.state = null;\n this.data.stateModel = null;\n }\n }\n}\n\nclass LinkAnnotation extends Annotation {\n constructor(params) {\n super(params);\n\n this.data.annotationType = AnnotationType.LINK;\n\n const quadPoints = getQuadPoints(params.dict, this.rectangle);\n if (quadPoints) {\n this.data.quadPoints = quadPoints;\n }\n\n Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl,\n });\n }\n}\n\nclass PopupAnnotation extends Annotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.POPUP;\n\n let parentItem = parameters.dict.get(\"Parent\");\n if (!parentItem) {\n warn(\"Popup annotation has a missing or invalid parent annotation.\");\n return;\n }\n\n const parentSubtype = parentItem.get(\"Subtype\");\n this.data.parentType = isName(parentSubtype) ? parentSubtype.name : null;\n const rawParent = parameters.dict.getRaw(\"Parent\");\n this.data.parentId = isRef(rawParent) ? rawParent.toString() : null;\n\n const parentRect = parentItem.getArray(\"Rect\");\n if (Array.isArray(parentRect) && parentRect.length === 4) {\n this.data.parentRect = Util.normalizeRect(parentRect);\n } else {\n this.data.parentRect = [0, 0, 0, 0];\n }\n\n const rt = parentItem.get(\"RT\");\n if (isName(rt, AnnotationReplyType.GROUP)) {\n // Subordinate annotations in a group should inherit\n // the group attributes from the primary annotation.\n parentItem = parentItem.get(\"IRT\");\n }\n\n if (!parentItem.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parentItem.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n\n if (!parentItem.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n } else {\n this.setColor(parentItem.getArray(\"C\"));\n this.data.color = this.color;\n }\n\n // If the Popup annotation is not viewable, but the parent annotation is,\n // that is most likely a bug. Fallback to inherit the flags from the parent\n // annotation (this is consistent with the behaviour in Adobe Reader).\n if (!this.viewable) {\n const parentFlags = parentItem.get(\"F\");\n if (this._isViewable(parentFlags)) {\n this.setFlags(parentFlags);\n }\n }\n\n this.setTitle(parentItem.get(\"T\"));\n this.data.titleObj = this._title;\n\n this.setContents(parentItem.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n\n if (parentItem.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\"RC\"));\n }\n }\n}\n\nclass FreeTextAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.FREETEXT;\n }\n}\n\nclass LineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.LINE;\n\n const lineCoordinates = parameters.dict.getArray(\"L\");\n this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent. Setting the fill colour is\n // necessary if/when we want to add support for non-default line endings.\n let fillColor = null,\n interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [\n this.data.lineCoordinates[0] - borderAdjust,\n this.data.lineCoordinates[1] - borderAdjust,\n this.data.lineCoordinates[2] + borderAdjust,\n this.data.lineCoordinates[3] + borderAdjust,\n ];\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${lineCoordinates[0]} ${lineCoordinates[1]} m`,\n `${lineCoordinates[2]} ${lineCoordinates[3]} l`,\n \"S\"\n );\n return [\n points[0].x - borderWidth,\n points[1].x + borderWidth,\n points[3].y - borderWidth,\n points[1].y + borderWidth,\n ];\n },\n });\n }\n }\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.SQUARE;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent.\n let fillColor = null,\n interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n if (this.borderStyle.width === 0 && !fillColor) {\n // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n return;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x = points[2].x + this.borderStyle.width / 2;\n const y = points[2].y + this.borderStyle.width / 2;\n const width = points[3].x - points[2].x - this.borderStyle.width;\n const height = points[1].y - points[3].y - this.borderStyle.width;\n buffer.push(`${x} ${y} ${width} ${height} re`);\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.CIRCLE;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent.\n let fillColor = null;\n let interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n if (this.borderStyle.width === 0 && !fillColor) {\n // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n return;\n }\n\n // Circles are approximated by Bézier curves with four segments since\n // there is no circle primitive in the PDF specification. For the control\n // points distance, see https://stackoverflow.com/a/27863181.\n const controlPointsDistance = (4 / 3) * Math.tan(Math.PI / (2 * 4));\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x0 = points[0].x + this.borderStyle.width / 2;\n const y0 = points[0].y - this.borderStyle.width / 2;\n const x1 = points[3].x - this.borderStyle.width / 2;\n const y1 = points[3].y + this.borderStyle.width / 2;\n const xMid = x0 + (x1 - x0) / 2;\n const yMid = y0 + (y1 - y0) / 2;\n const xOffset = ((x1 - x0) / 2) * controlPointsDistance;\n const yOffset = ((y1 - y0) / 2) * controlPointsDistance;\n\n buffer.push(\n `${xMid} ${y1} m`,\n `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`,\n `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`,\n `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`,\n `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`,\n \"h\"\n );\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.POLYLINE;\n this.data.vertices = [];\n\n // The vertices array is an array of numbers representing the alternating\n // horizontal and vertical coordinates, respectively, of each vertex.\n // Convert this to an array of objects with x and y coordinates.\n const rawVertices = parameters.dict.getArray(\"Vertices\");\n if (!Array.isArray(rawVertices)) {\n return;\n }\n for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n this.data.vertices.push({\n x: rawVertices[i],\n y: rawVertices[i + 1],\n });\n }\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const vertex of this.data.vertices) {\n bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const vertices = this.data.vertices;\n for (let i = 0, ii = vertices.length; i < ii; i++) {\n buffer.push(\n `${vertices[i].x} ${vertices[i].y} ${i === 0 ? \"m\" : \"l\"}`\n );\n }\n buffer.push(\"S\");\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.data.annotationType = AnnotationType.POLYGON;\n }\n}\n\nclass CaretAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.CARET;\n }\n}\n\nclass InkAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.INK;\n this.data.inkLists = [];\n\n const rawInkLists = parameters.dict.getArray(\"InkList\");\n if (!Array.isArray(rawInkLists)) {\n return;\n }\n const xref = parameters.xref;\n for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {\n // The raw ink lists array contains arrays of numbers representing\n // the alternating horizontal and vertical coordinates, respectively,\n // of each vertex. Convert this to an array of objects with x and y\n // coordinates.\n this.data.inkLists.push([]);\n for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {\n this.data.inkLists[i].push({\n x: xref.fetchIfRef(rawInkLists[i][j]),\n y: xref.fetchIfRef(rawInkLists[i][j + 1]),\n });\n }\n }\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const inkLists of this.data.inkLists) {\n for (const vertex of inkLists) {\n bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n }\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n // According to the specification, see \"12.5.6.13 Ink Annotations\":\n // When drawn, the points shall be connected by straight lines or\n // curves in an implementation-dependent way.\n // In order to simplify things, we utilize straight lines for now.\n for (const inkList of this.data.inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i++) {\n buffer.push(\n `${inkList[i].x} ${inkList[i].y} ${i === 0 ? \"m\" : \"l\"}`\n );\n }\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.HIGHLIGHT;\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n const resources =\n this.appearance && this.appearance.dict.get(\"Resources\");\n\n if (!this.appearance || !(resources && resources.has(\"ExtGState\"))) {\n if (this.appearance) {\n // Workaround for cases where there's no /ExtGState-entry directly\n // available, e.g. when the appearance stream contains a /XObject of\n // the /Form-type, since that causes the highlighting to completely\n // obsure the PDF content below it (fixes issue13242.pdf).\n warn(\"HighlightAnnotation - ignoring built-in appearance stream.\");\n }\n // Default color is yellow in Acrobat Reader\n const fillColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [1, 1, 0];\n const fillAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n fillColor,\n blendMode: \"Multiply\",\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${points[0].x} ${points[0].y} m`,\n `${points[1].x} ${points[1].y} l`,\n `${points[3].x} ${points[3].y} l`,\n `${points[2].x} ${points[2].y} l`,\n \"f\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.UNDERLINE;\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${points[2].x} ${points[2].y} m`,\n `${points[3].x} ${points[3].y} l`,\n \"S\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass SquigglyAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.SQUIGGLY;\n\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const dy = (points[0].y - points[2].y) / 6;\n let shift = dy;\n let x = points[2].x;\n const y = points[2].y;\n const xEnd = points[3].x;\n buffer.push(`${x} ${y + shift} m`);\n do {\n x += 2;\n shift = shift === 0 ? dy : 0;\n buffer.push(`${x} ${y + shift} l`);\n } while (x < xEnd);\n buffer.push(\"S\");\n return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass StrikeOutAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.STRIKEOUT;\n\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${(points[0].x + points[2].x) / 2} ` +\n `${(points[0].y + points[2].y) / 2} m`,\n `${(points[1].x + points[3].x) / 2} ` +\n `${(points[1].y + points[3].y) / 2} l`,\n \"S\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass StampAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.STAMP;\n }\n}\n\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n const file = new FileSpec(parameters.dict.get(\"FS\"), parameters.xref);\n\n this.data.annotationType = AnnotationType.FILEATTACHMENT;\n this.data.file = file.serializable;\n }\n}\n\nexport {\n Annotation,\n AnnotationBorderStyle,\n AnnotationFactory,\n getQuadPoints,\n MarkupAnnotation,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OPS, warn } from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { escapePDFName } from \"./core_utils.js\";\nimport { EvaluatorPreprocessor } from \"./evaluator.js\";\nimport { Name } from \"./primitives.js\";\nimport { StringStream } from \"./stream.js\";\n\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\n constructor(str) {\n super(new StringStream(str));\n }\n\n parse() {\n const operation = {\n fn: 0,\n args: [],\n };\n const result = {\n fontSize: 0,\n fontName: \"\",\n fontColor: /* black = */ new Uint8ClampedArray(3),\n };\n\n try {\n while (true) {\n operation.args.length = 0; // Ensure that `args` it's always reset.\n\n if (!this.read(operation)) {\n break;\n }\n if (this.savedStatesDepth !== 0) {\n continue; // Don't get info in save/restore sections.\n }\n const { fn, args } = operation;\n\n switch (fn | 0) {\n case OPS.setFont:\n const [fontName, fontSize] = args;\n if (fontName instanceof Name) {\n result.fontName = fontName.name;\n }\n if (typeof fontSize === \"number\" && fontSize > 0) {\n result.fontSize = fontSize;\n }\n break;\n case OPS.setFillRGBColor:\n ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillGray:\n ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillColorSpace:\n ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n break;\n }\n }\n } catch (reason) {\n warn(`parseDefaultAppearance - ignoring errors: \"${reason}\".`);\n }\n\n return result;\n }\n}\n\n// Parse DA to extract font and color information.\nfunction parseDefaultAppearance(str) {\n return new DefaultAppearanceEvaluator(str).parse();\n}\n\n// Create default appearance string from some information.\nfunction createDefaultAppearance({ fontSize, fontName, fontColor }) {\n let colorCmd;\n if (fontColor.every(c => c === 0)) {\n colorCmd = \"0 g\";\n } else {\n colorCmd =\n Array.from(fontColor)\n .map(c => (c / 255).toFixed(2))\n .join(\" \") + \" rg\";\n }\n return `/${escapePDFName(fontName)} ${fontSize} Tf ${colorCmd}`;\n}\n\nexport { createDefaultAppearance, parseDefaultAppearance };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n shadow,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { isDict, isName, isStream, Name, Ref } from \"./primitives.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @param {number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n const COMPONENTS = 3;\n alpha01 = alpha01 !== 1 ? 0 : alpha01;\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1 * COMPONENTS;\n\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n for (let i = 0; i < h2; i++) {\n const py = Math.floor(i * yRatio) * w1Scanline;\n for (let j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n newIndex += alpha01;\n }\n }\n}\n\nclass ColorSpace {\n constructor(name, numComps) {\n if (this.constructor === ColorSpace) {\n unreachable(\"Cannot initialize ColorSpace.\");\n }\n this.name = name;\n this.numComps = numComps;\n }\n\n /**\n * Converts the color value to the RGB color. The color components are\n * located in the src array starting from the srcOffset. Returns the array\n * of the rgb components, each value ranging from [0,255].\n */\n getRgb(src, srcOffset) {\n const rgb = new Uint8ClampedArray(3);\n this.getRgbItem(src, srcOffset, rgb, 0);\n return rgb;\n }\n\n /**\n * Converts the color value to the RGB color, similar to the getRgb method.\n * The result placed into the dest array starting from the destOffset.\n */\n getRgbItem(src, srcOffset, dest, destOffset) {\n unreachable(\"Should not call ColorSpace.getRgbItem\");\n }\n\n /**\n * Converts the specified number of the color values to the RGB colors.\n * The colors are located in the src array starting from the srcOffset.\n * The result is placed into the dest array starting from the destOffset.\n * The src array items shall be in [0,2^bits) range, the dest array items\n * will be in [0,255] range. alpha01 indicates how many alpha components\n * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n * array).\n */\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n }\n\n /**\n * Determines the number of bytes required to store the result of the\n * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n */\n getOutputLength(inputLength, alpha01) {\n unreachable(\"Should not call ColorSpace.getOutputLength\");\n }\n\n /**\n * Returns true if source data will be equal the result/output data.\n */\n isPassthrough(bits) {\n return false;\n }\n\n /**\n * Refer to the static `ColorSpace.isDefaultDecode` method below.\n */\n isDefaultDecode(decodeMap, bpc) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n }\n\n /**\n * Fills in the RGB colors in the destination buffer. alpha01 indicates\n * how many alpha components there are in the dest array; it will be either\n * 0 (RGB array) or 1 (RGBA array).\n */\n fillRgb(\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n actualHeight,\n bpc,\n comps,\n alpha01\n ) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'ColorSpace.fillRgb: Unsupported \"dest\" type.'\n );\n }\n const count = originalWidth * originalHeight;\n let rgbBuf = null;\n const numComponentColors = 1 << bpc;\n const needsResizing = originalHeight !== height || originalWidth !== width;\n\n if (this.isPassthrough(bpc)) {\n rgbBuf = comps;\n } else if (\n this.numComps === 1 &&\n count > numComponentColors &&\n this.name !== \"DeviceGray\" &&\n this.name !== \"DeviceRGB\"\n ) {\n // Optimization: create a color map when there is just one component and\n // we are converting more colors than the size of the color map. We\n // don't build the map if the colorspace is gray or rgb since those\n // methods are faster than building a map. This mainly offers big speed\n // ups for indexed and alternate colorspaces.\n //\n // TODO it may be worth while to cache the color map. While running\n // testing I never hit a cache so I will leave that out for now (perhaps\n // we are reparsing colorspaces too much?).\n const allColors =\n bpc <= 8\n ? new Uint8Array(numComponentColors)\n : new Uint16Array(numComponentColors);\n for (let i = 0; i < numComponentColors; i++) {\n allColors[i] = i;\n }\n const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n this.getRgbBuffer(\n allColors,\n 0,\n numComponentColors,\n colorMap,\n 0,\n bpc,\n /* alpha01 = */ 0\n );\n\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n let destPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n dest[destPos++] = colorMap[key];\n dest[destPos++] = colorMap[key + 1];\n dest[destPos++] = colorMap[key + 2];\n destPos += alpha01;\n }\n } else {\n rgbBuf = new Uint8Array(count * 3);\n let rgbPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n rgbBuf[rgbPos++] = colorMap[key];\n rgbBuf[rgbPos++] = colorMap[key + 1];\n rgbBuf[rgbPos++] = colorMap[key + 2];\n }\n }\n } else {\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n this.getRgbBuffer(\n comps,\n 0,\n width * actualHeight,\n dest,\n 0,\n bpc,\n alpha01\n );\n } else {\n rgbBuf = new Uint8ClampedArray(count * 3);\n this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n }\n }\n\n if (rgbBuf) {\n if (needsResizing) {\n resizeRgbImage(\n rgbBuf,\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n alpha01\n );\n } else {\n let destPos = 0,\n rgbPos = 0;\n for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n destPos += alpha01;\n }\n }\n }\n }\n\n /**\n * True if the colorspace has components in the default range of [0, 1].\n * This should be true for all colorspaces except for lab color spaces\n * which are [0,100], [-128, 127], [-128, 127].\n */\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", true);\n }\n\n /**\n * @private\n */\n static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n if (!localColorSpaceCache) {\n throw new Error(\n 'ColorSpace._cache - expected \"localColorSpaceCache\" argument.'\n );\n }\n if (!parsedColorSpace) {\n throw new Error(\n 'ColorSpace._cache - expected \"parsedColorSpace\" argument.'\n );\n }\n let csName, csRef;\n if (cacheKey instanceof Ref) {\n csRef = cacheKey;\n\n // If parsing succeeded, we know that this call cannot throw.\n cacheKey = xref.fetch(cacheKey);\n }\n if (cacheKey instanceof Name) {\n csName = cacheKey.name;\n }\n if (csName || csRef) {\n localColorSpaceCache.set(csName, csRef, parsedColorSpace);\n }\n }\n\n static getCached(cacheKey, xref, localColorSpaceCache) {\n if (!localColorSpaceCache) {\n throw new Error(\n 'ColorSpace.getCached - expected \"localColorSpaceCache\" argument.'\n );\n }\n if (cacheKey instanceof Ref) {\n const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n if (localColorSpace) {\n return localColorSpace;\n }\n\n try {\n cacheKey = xref.fetch(cacheKey);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n // Any errors should be handled during parsing, rather than here.\n }\n }\n if (cacheKey instanceof Name) {\n const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\n if (localColorSpace) {\n return localColorSpace;\n }\n }\n return null;\n }\n\n static async parseAsync({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n !this.getCached(cs, xref, localColorSpaceCache),\n \"Expected `ColorSpace.getCached` to have been manually checked \" +\n \"before calling `ColorSpace.parseAsync`.\"\n );\n }\n const parsedColorSpace = this._parse(\n cs,\n xref,\n resources,\n pdfFunctionFactory\n );\n\n // Attempt to cache the parsed ColorSpace, by name and/or reference.\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n return parsedColorSpace;\n }\n\n static parse({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\n if (cachedColorSpace) {\n return cachedColorSpace;\n }\n const parsedColorSpace = this._parse(\n cs,\n xref,\n resources,\n pdfFunctionFactory\n );\n\n // Attempt to cache the parsed ColorSpace, by name and/or reference.\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n return parsedColorSpace;\n }\n\n /**\n * @private\n */\n static _parse(cs, xref, resources = null, pdfFunctionFactory) {\n cs = xref.fetchIfRef(cs);\n if (isName(cs)) {\n switch (cs.name) {\n case \"G\":\n case \"DeviceGray\":\n return this.singletons.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.singletons.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.singletons.cmyk;\n case \"Pattern\":\n return new PatternCS(/* baseCS = */ null);\n default:\n if (isDict(resources)) {\n const colorSpaces = resources.get(\"ColorSpace\");\n if (isDict(colorSpaces)) {\n const resourcesCS = colorSpaces.get(cs.name);\n if (resourcesCS) {\n if (isName(resourcesCS)) {\n return this._parse(\n resourcesCS,\n xref,\n resources,\n pdfFunctionFactory\n );\n }\n cs = resourcesCS;\n break;\n }\n }\n }\n throw new FormatError(`Unrecognized ColorSpace: ${cs.name}`);\n }\n }\n if (Array.isArray(cs)) {\n const mode = xref.fetchIfRef(cs[0]).name;\n let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n\n switch (mode) {\n case \"G\":\n case \"DeviceGray\":\n return this.singletons.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.singletons.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.singletons.cmyk;\n case \"CalGray\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.get(\"Gamma\");\n return new CalGrayCS(whitePoint, blackPoint, gamma);\n case \"CalRGB\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.getArray(\"Gamma\");\n const matrix = params.getArray(\"Matrix\");\n return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n case \"ICCBased\":\n const stream = xref.fetchIfRef(cs[1]);\n const dict = stream.dict;\n numComps = dict.get(\"N\");\n const alt = dict.get(\"Alternate\");\n if (alt) {\n const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\n // Ensure that the number of components are correct,\n // and also (indirectly) that it is not a PatternCS.\n if (altCS.numComps === numComps) {\n return altCS;\n }\n warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n }\n if (numComps === 1) {\n return this.singletons.gray;\n } else if (numComps === 3) {\n return this.singletons.rgb;\n } else if (numComps === 4) {\n return this.singletons.cmyk;\n }\n break;\n case \"Pattern\":\n baseCS = cs[1] || null;\n if (baseCS) {\n baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\n }\n return new PatternCS(baseCS);\n case \"I\":\n case \"Indexed\":\n baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\n const hiVal = xref.fetchIfRef(cs[2]) + 1;\n const lookup = xref.fetchIfRef(cs[3]);\n return new IndexedCS(baseCS, hiVal, lookup);\n case \"Separation\":\n case \"DeviceN\":\n const name = xref.fetchIfRef(cs[1]);\n numComps = Array.isArray(name) ? name.length : 1;\n baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\n const tintFn = pdfFunctionFactory.create(cs[3]);\n return new AlternateCS(numComps, baseCS, tintFn);\n case \"Lab\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n const range = params.getArray(\"Range\");\n return new LabCS(whitePoint, blackPoint, range);\n default:\n throw new FormatError(`Unimplemented ColorSpace object: ${mode}`);\n }\n }\n throw new FormatError(`Unrecognized ColorSpace object: ${cs}`);\n }\n\n /**\n * Checks if a decode map matches the default decode map for a color space.\n * This handles the general decode maps where there are two values per\n * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n * This does not handle Lab, Indexed, or Pattern decode maps since they are\n * slightly different.\n * @param {Array} decode - Decode map (usually from an image).\n * @param {number} numComps - Number of components the color space has.\n */\n static isDefaultDecode(decode, numComps) {\n if (!Array.isArray(decode)) {\n return true;\n }\n if (numComps * 2 !== decode.length) {\n warn(\"The decode map is not the correct length\");\n return true;\n }\n for (let i = 0, ii = decode.length; i < ii; i += 2) {\n if (decode[i] !== 0 || decode[i + 1] !== 1) {\n return false;\n }\n }\n return true;\n }\n\n static get singletons() {\n return shadow(this, \"singletons\", {\n get gray() {\n return shadow(this, \"gray\", new DeviceGrayCS());\n },\n get rgb() {\n return shadow(this, \"rgb\", new DeviceRgbCS());\n },\n get cmyk() {\n return shadow(this, \"cmyk\", new DeviceCmykCS());\n },\n });\n }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces. A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n constructor(numComps, base, tintFn) {\n super(\"Alternate\", numComps);\n this.base = base;\n this.tintFn = tintFn;\n this.tmpBuf = new Float32Array(base.numComps);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'AlternateCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const tmpBuf = this.tmpBuf;\n this.tintFn(src, srcOffset, tmpBuf, 0);\n this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const tintFn = this.tintFn;\n const base = this.base;\n const scale = 1 / ((1 << bits) - 1);\n const baseNumComps = base.numComps;\n const usesZeroToOneRange = base.usesZeroToOneRange;\n const isPassthrough =\n (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n let pos = isPassthrough ? destOffset : 0;\n const baseBuf = isPassthrough\n ? dest\n : new Uint8ClampedArray(baseNumComps * count);\n const numComps = this.numComps;\n\n const scaled = new Float32Array(numComps);\n const tinted = new Float32Array(baseNumComps);\n let i, j;\n\n for (i = 0; i < count; i++) {\n for (j = 0; j < numComps; j++) {\n scaled[j] = src[srcOffset++] * scale;\n }\n tintFn(scaled, 0, tinted, 0);\n if (usesZeroToOneRange) {\n for (j = 0; j < baseNumComps; j++) {\n baseBuf[pos++] = tinted[j] * 255;\n }\n } else {\n base.getRgbItem(tinted, 0, baseBuf, pos);\n pos += baseNumComps;\n }\n }\n\n if (!isPassthrough) {\n base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(\n (inputLength * this.base.numComps) / this.numComps,\n alpha01\n );\n }\n}\n\nclass PatternCS extends ColorSpace {\n constructor(baseCS) {\n super(\"Pattern\", null);\n this.base = baseCS;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n unreachable(\"Should not call PatternCS.isDefaultDecode\");\n }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n constructor(base, highVal, lookup) {\n super(\"Indexed\", 1);\n this.base = base;\n this.highVal = highVal;\n\n const length = base.numComps * highVal;\n this.lookup = new Uint8Array(length);\n\n if (isStream(lookup)) {\n const bytes = lookup.getBytes(length);\n this.lookup.set(bytes);\n } else if (typeof lookup === \"string\") {\n for (let i = 0; i < length; ++i) {\n this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n }\n } else {\n throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'IndexedCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const numComps = this.base.numComps;\n const start = src[srcOffset] * numComps;\n this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const base = this.base;\n const numComps = base.numComps;\n const outputDelta = base.getOutputLength(numComps, alpha01);\n const lookup = this.lookup;\n\n for (let i = 0; i < count; ++i) {\n const lookupPos = src[srcOffset++] * numComps;\n base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n destOffset += outputDelta;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n }\n\n isDefaultDecode(decodeMap, bpc) {\n if (!Array.isArray(decodeMap)) {\n return true;\n }\n if (decodeMap.length !== 2) {\n warn(\"Decode map length is not correct\");\n return true;\n }\n if (!Number.isInteger(bpc) || bpc < 1) {\n warn(\"Bits per component is not correct\");\n return true;\n }\n return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n constructor() {\n super(\"DeviceGray\", 1);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const c = src[srcOffset] * 255;\n dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n const c = scale * src[j++];\n dest[q++] = c;\n dest[q++] = c;\n dest[q++] = c;\n q += alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGB\", 3);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n dest[destOffset] = src[srcOffset] * 255;\n dest[destOffset + 1] = src[srcOffset + 1] * 255;\n dest[destOffset + 2] = src[srcOffset + 2] * 255;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n if (bits === 8 && alpha01 === 0) {\n dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n return;\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n q += alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n\n isPassthrough(bits) {\n return bits === 8;\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nconst DeviceCmykCS = (function DeviceCmykCSClosure() {\n // The coefficients below was found using numerical analysis: the method of\n // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n // where color_value is the tabular value from the table of sampled RGB colors\n // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n // CMYK color conversion using the estimation below:\n // f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n const c = src[srcOffset] * srcScale;\n const m = src[srcOffset + 1] * srcScale;\n const y = src[srcOffset + 2] * srcScale;\n const k = src[srcOffset + 3] * srcScale;\n\n dest[destOffset] =\n 255 +\n c *\n (-4.387332384609988 * c +\n 54.48615194189176 * m +\n 18.82290502165302 * y +\n 212.25662451639585 * k +\n -285.2331026137004) +\n m *\n (1.7149763477362134 * m -\n 5.6096736904047315 * y +\n -17.873870861415444 * k -\n 5.497006427196366) +\n y *\n (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\n k * (-21.86122147463605 * k - 189.48180835922747);\n\n dest[destOffset + 1] =\n 255 +\n c *\n (8.841041422036149 * c +\n 60.118027045597366 * m +\n 6.871425592049007 * y +\n 31.159100130055922 * k +\n -79.2970844816548) +\n m *\n (-15.310361306967817 * m +\n 17.575251261109482 * y +\n 131.35250912493976 * k -\n 190.9453302588951) +\n y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n k * (-20.737325471181034 * k - 187.80453709719578);\n\n dest[destOffset + 2] =\n 255 +\n c *\n (0.8842522430003296 * c +\n 8.078677503112928 * m +\n 30.89978309703729 * y -\n 0.23883238689178934 * k +\n -14.183576799673286) +\n m *\n (10.49593273432072 * m +\n 63.02378494754052 * y +\n 50.606957656360734 * k -\n 112.23884253719248) +\n y *\n (0.03296041114873217 * y +\n 115.60384449646641 * k +\n -193.58209356861505) +\n k * (-22.33816807309886 * k - 180.12613974708367);\n }\n\n // eslint-disable-next-line no-shadow\n class DeviceCmykCS extends ColorSpace {\n constructor() {\n super(\"DeviceCMYK\", 4);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(src, srcOffset, 1, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; i++) {\n convertToRgb(src, srcOffset, scale, dest, destOffset);\n srcOffset += 4;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength / 4) * (3 + alpha01)) | 0;\n }\n }\n return DeviceCmykCS;\n})();\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nconst CalGrayCS = (function CalGrayCSClosure() {\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n // A represents a gray component of a calibrated gray space.\n // A <---> AG in the spec\n const A = src[srcOffset] * scale;\n const AG = A ** cs.G;\n\n // Computes L as per spec. ( = cs.YW * AG )\n // Except if other than default BlackPoint values are used.\n const L = cs.YW * AG;\n // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n // Convert values to rgb range [0, 255].\n const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n dest[destOffset] = val;\n dest[destOffset + 1] = val;\n dest[destOffset + 2] = val;\n }\n\n // eslint-disable-next-line no-shadow\n class CalGrayCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma) {\n super(\"CalGray\", 1);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space CalGray\"\n );\n }\n blackPoint = blackPoint || [0, 0, 0];\n gamma = gamma || 1;\n\n // Translate arguments to spec variables.\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n this.G = gamma;\n\n // Validate variables as per spec.\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n `Invalid WhitePoint components for ${this.name}` +\n \", no fallback available\"\n );\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n warn(\n `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n `ZB: ${this.ZB}, only default values are supported.`\n );\n }\n\n if (this.G < 1) {\n info(\n `Invalid Gamma: ${this.G} for ${this.name}, ` +\n \"falling back to default.\"\n );\n this.G = 1;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalGrayCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 1;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n }\n return CalGrayCS;\n})();\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst CalRGBCS = (function CalRGBCSClosure() {\n // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n // matrices.\n // prettier-ignore\n const BRADFORD_SCALE_MATRIX = new Float32Array([\n 0.8951, 0.2664, -0.1614,\n -0.7502, 1.7135, 0.0367,\n 0.0389, -0.0685, 1.0296]);\n\n // prettier-ignore\n const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n 0.9869929, -0.1470543, 0.1599627,\n 0.4323053, 0.5183603, 0.0492912,\n -0.0085287, 0.0400428, 0.9684867]);\n\n // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n // prettier-ignore\n const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n 3.2404542, -1.5371385, -0.4985314,\n -0.9692660, 1.8760108, 0.0415560,\n 0.0556434, -0.2040259, 1.0572252]);\n\n const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n const tempNormalizeMatrix = new Float32Array(3);\n const tempConvertMatrix1 = new Float32Array(3);\n const tempConvertMatrix2 = new Float32Array(3);\n\n const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n function matrixProduct(a, b, result) {\n result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n }\n\n function convertToFlat(sourceWhitePoint, LMS, result) {\n result[0] = (LMS[0] * 1) / sourceWhitePoint[0];\n result[1] = (LMS[1] * 1) / sourceWhitePoint[1];\n result[2] = (LMS[2] * 1) / sourceWhitePoint[2];\n }\n\n function convertToD65(sourceWhitePoint, LMS, result) {\n const D65X = 0.95047;\n const D65Y = 1;\n const D65Z = 1.08883;\n\n result[0] = (LMS[0] * D65X) / sourceWhitePoint[0];\n result[1] = (LMS[1] * D65Y) / sourceWhitePoint[1];\n result[2] = (LMS[2] * D65Z) / sourceWhitePoint[2];\n }\n\n function sRGBTransferFunction(color) {\n // See http://en.wikipedia.org/wiki/SRGB.\n if (color <= 0.0031308) {\n return adjustToRange(0, 1, 12.92 * color);\n }\n // Optimization:\n // If color is close enough to 1, skip calling the following transform\n // since calling Math.pow is expensive. If color is larger than\n // the threshold, the final result is larger than 254.5 since\n // ((1 + 0.055) * 0.99554525 ** (1 / 2.4) - 0.055) * 255 ===\n // 254.50000003134699\n if (color >= 0.99554525) {\n return 1;\n }\n return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n }\n\n function adjustToRange(min, max, value) {\n return Math.max(min, Math.min(max, value));\n }\n\n function decodeL(L) {\n if (L < 0) {\n return -decodeL(-L);\n }\n if (L > 8.0) {\n return ((L + 16) / 116) ** 3;\n }\n return L * DECODE_L_CONSTANT;\n }\n\n function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n // In case the blackPoint is already the default blackPoint then there is\n // no need to do compensation.\n if (\n sourceBlackPoint[0] === 0 &&\n sourceBlackPoint[1] === 0 &&\n sourceBlackPoint[2] === 0\n ) {\n result[0] = XYZ_Flat[0];\n result[1] = XYZ_Flat[1];\n result[2] = XYZ_Flat[2];\n return;\n }\n\n // For the blackPoint calculation details, please see\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n // The destination blackPoint is the default blackPoint [0, 0, 0].\n const zeroDecodeL = decodeL(0);\n\n const X_DST = zeroDecodeL;\n const X_SRC = decodeL(sourceBlackPoint[0]);\n\n const Y_DST = zeroDecodeL;\n const Y_SRC = decodeL(sourceBlackPoint[1]);\n\n const Z_DST = zeroDecodeL;\n const Z_SRC = decodeL(sourceBlackPoint[2]);\n\n const X_Scale = (1 - X_DST) / (1 - X_SRC);\n const X_Offset = 1 - X_Scale;\n\n const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n const Y_Offset = 1 - Y_Scale;\n\n const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n const Z_Offset = 1 - Z_Scale;\n\n result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n }\n\n function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n // In case the whitePoint is already flat then there is no need to do\n // normalization.\n if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n result[0] = XYZ_In[0];\n result[1] = XYZ_In[1];\n result[2] = XYZ_In[2];\n return;\n }\n\n const LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n const LMS_Flat = tempNormalizeMatrix;\n convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n }\n\n function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n const LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n const LMS_D65 = tempNormalizeMatrix;\n convertToD65(sourceWhitePoint, LMS, LMS_D65);\n\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n }\n\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n // A, B and C represent a red, green and blue components of a calibrated\n // rgb space.\n const A = adjustToRange(0, 1, src[srcOffset] * scale);\n const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n\n // A <---> AGR in the spec\n // B <---> BGG in the spec\n // C <---> CGB in the spec\n const AGR = A === 1 ? 1 : A ** cs.GR;\n const BGG = B === 1 ? 1 : B ** cs.GG;\n const CGB = C === 1 ? 1 : C ** cs.GB;\n\n // Computes intermediate variables L, M, N as per spec.\n // To decode X, Y, Z values map L, M, N directly to them.\n const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n\n // The following calculations are based on this document:\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n const XYZ = tempConvertMatrix1;\n XYZ[0] = X;\n XYZ[1] = Y;\n XYZ[2] = Z;\n const XYZ_Flat = tempConvertMatrix2;\n\n normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n\n const XYZ_Black = tempConvertMatrix1;\n compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n\n const XYZ_D65 = tempConvertMatrix2;\n normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n\n const SRGB = tempConvertMatrix1;\n matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n // Convert the values to rgb range [0, 255].\n dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n }\n\n // eslint-disable-next-line no-shadow\n class CalRGBCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma, matrix) {\n super(\"CalRGB\", 3);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space CalRGB\"\n );\n }\n blackPoint = blackPoint || new Float32Array(3);\n gamma = gamma || new Float32Array([1, 1, 1]);\n matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n // Translate arguments to spec variables.\n const XW = whitePoint[0];\n const YW = whitePoint[1];\n const ZW = whitePoint[2];\n this.whitePoint = whitePoint;\n\n const XB = blackPoint[0];\n const YB = blackPoint[1];\n const ZB = blackPoint[2];\n this.blackPoint = blackPoint;\n\n this.GR = gamma[0];\n this.GG = gamma[1];\n this.GB = gamma[2];\n\n this.MXA = matrix[0];\n this.MYA = matrix[1];\n this.MZA = matrix[2];\n this.MXB = matrix[3];\n this.MYB = matrix[4];\n this.MZB = matrix[5];\n this.MXC = matrix[6];\n this.MYC = matrix[7];\n this.MZC = matrix[8];\n\n // Validate variables as per spec.\n if (XW < 0 || ZW < 0 || YW !== 1) {\n throw new FormatError(\n `Invalid WhitePoint components for ${this.name}` +\n \", no fallback available\"\n );\n }\n\n if (XB < 0 || YB < 0 || ZB < 0) {\n info(\n `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n \"falling back to default.\"\n );\n this.blackPoint = new Float32Array(3);\n }\n\n if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n info(\n `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n `${this.name}, falling back to default.`\n );\n this.GR = this.GG = this.GB = 1;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalRGBCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n }\n return CalRGBCS;\n})();\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst LabCS = (function LabCSClosure() {\n // Function g(x) from spec\n function fn_g(x) {\n let result;\n if (x >= 6 / 29) {\n result = x ** 3;\n } else {\n result = (108 / 841) * (x - 4 / 29);\n }\n return result;\n }\n\n function decode(value, high1, low2, high2) {\n return low2 + (value * (high2 - low2)) / high1;\n }\n\n // If decoding is needed maxVal should be 2^bits per component - 1.\n function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n // not the usual [0, 1]. If a command like setFillColor is used the src\n // values will already be within the correct range. However, if we are\n // converting an image we have to map the values to the correct range given\n // above.\n // Ls,as,bs <---> L*,a*,b* in the spec\n let Ls = src[srcOffset];\n let as = src[srcOffset + 1];\n let bs = src[srcOffset + 2];\n if (maxVal !== false) {\n Ls = decode(Ls, maxVal, 0, 100);\n as = decode(as, maxVal, cs.amin, cs.amax);\n bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n }\n\n // Adjust limits of 'as' and 'bs'\n if (as > cs.amax) {\n as = cs.amax;\n } else if (as < cs.amin) {\n as = cs.amin;\n }\n if (bs > cs.bmax) {\n bs = cs.bmax;\n } else if (bs < cs.bmin) {\n bs = cs.bmin;\n }\n\n // Computes intermediate variables X,Y,Z as per spec\n const M = (Ls + 16) / 116;\n const L = M + as / 500;\n const N = M - bs / 200;\n\n const X = cs.XW * fn_g(L);\n const Y = cs.YW * fn_g(M);\n const Z = cs.ZW * fn_g(N);\n\n let r, g, b;\n // Using different conversions for D50 and D65 white points,\n // per http://www.color.org/srgb.pdf\n if (cs.ZW < 1) {\n // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n } else {\n // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n }\n // Convert the color values to the [0,255] range (clamping is automatic).\n dest[destOffset] = Math.sqrt(r) * 255;\n dest[destOffset + 1] = Math.sqrt(g) * 255;\n dest[destOffset + 2] = Math.sqrt(b) * 255;\n }\n\n // eslint-disable-next-line no-shadow\n class LabCS extends ColorSpace {\n constructor(whitePoint, blackPoint, range) {\n super(\"Lab\", 3);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space Lab\"\n );\n }\n blackPoint = blackPoint || [0, 0, 0];\n range = range || [-100, 100, -100, 100];\n\n // Translate args to spec variables\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n this.amin = range[0];\n this.amax = range[1];\n this.bmin = range[2];\n this.bmax = range[3];\n\n // These are here just for completeness - the spec doesn't offer any\n // formulas that use BlackPoint in Lab\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n // Validate vars as per spec\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n \"Invalid WhitePoint components, no fallback available\"\n );\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(\"Invalid BlackPoint, falling back to default\");\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.amin > this.amax || this.bmin > this.bmax) {\n info(\"Invalid Range, falling back to defaults\");\n this.amin = -100;\n this.amax = 100;\n this.bmin = -100;\n this.bmax = 100;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'LabCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, false, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'LabCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const maxVal = (1 << bits) - 1;\n for (let i = 0; i < count; i++) {\n convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n // XXX: Decoding is handled with the lab conversion because of the strange\n // ranges that are used.\n return true;\n }\n\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", false);\n }\n }\n return LabCS;\n})();\n\nexport { ColorSpace };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-var */\n\nimport {\n AbortException,\n assert,\n CMapCompressionType,\n createPromiseCapability,\n FONT_IDENTITY_MATRIX,\n FormatError,\n IDENTITY_MATRIX,\n info,\n isArrayEqual,\n isNum,\n isString,\n OPS,\n shadow,\n stringToPDFString,\n TextRenderingMode,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { CMapFactory, IdentityCMap } from \"./cmap.js\";\nimport {\n Cmd,\n Dict,\n EOF,\n isDict,\n isName,\n isRef,\n isStream,\n Name,\n Ref,\n RefSet,\n} from \"./primitives.js\";\nimport { ErrorFont, Font } from \"./fonts.js\";\nimport { FontFlags, getFontType } from \"./fonts_utils.js\";\nimport {\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n getFontNameToFileMap,\n getSerifFonts,\n getStandardFontName,\n getStdFontMap,\n getSymbolsFonts,\n} from \"./standard_fonts.js\";\nimport {\n getNormalizedUnicodes,\n getUnicodeForGlyph,\n reverseIfRtl,\n} from \"./unicode.js\";\nimport { getTilingPatternIR, Pattern } from \"./pattern.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { isPDFFunction, PDFFunctionFactory } from \"./function.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n LocalColorSpaceCache,\n LocalGStateCache,\n LocalImageCache,\n LocalTilingPatternCache,\n} from \"./image_utils.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { getMetrics } from \"./metrics.js\";\nimport { MurmurHash3_64 } from \"./murmurhash3.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PDFImage } from \"./image.js\";\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n maxImageSize: -1,\n disableFontFace: false,\n ignoreErrors: false,\n isEvalSupported: true,\n fontExtraProperties: false,\n useSystemFonts: true,\n cMapUrl: null,\n standardFontDataUrl: null,\n});\n\nconst PatternType = {\n TILING: 1,\n SHADING: 2,\n};\n\n// Optionally avoid sending individual, or very few, text chunks to reduce\n// `postMessage` overhead with ReadableStream (see issue 13962).\n//\n// PLEASE NOTE: This value should *not* be too large (it's used as a lower limit\n// in `enqueueChunk`), since that would cause streaming of textContent to become\n// essentially useless in practice by sending all (or most) chunks at once.\n// Also, a too large value would (indirectly) affect the main-thread `textLayer`\n// building negatively by forcing all textContent to be handled at once, which\n// could easily end up hurting *overall* performance (e.g. rendering as well).\nconst TEXT_CHUNK_BATCH_SIZE = 10;\n\nconst deferred = Promise.resolve();\n\n// Convert PDF blend mode names to HTML5 blend mode names.\nfunction normalizeBlendMode(value, parsingArray = false) {\n if (Array.isArray(value)) {\n // Use the first *supported* BM value in the Array (fixes issue11279.pdf).\n for (let i = 0, ii = value.length; i < ii; i++) {\n const maybeBM = normalizeBlendMode(value[i], /* parsingArray = */ true);\n if (maybeBM) {\n return maybeBM;\n }\n }\n warn(`Unsupported blend mode Array: ${value}`);\n return \"source-over\";\n }\n\n if (!isName(value)) {\n if (parsingArray) {\n return null;\n }\n return \"source-over\";\n }\n switch (value.name) {\n case \"Normal\":\n case \"Compatible\":\n return \"source-over\";\n case \"Multiply\":\n return \"multiply\";\n case \"Screen\":\n return \"screen\";\n case \"Overlay\":\n return \"overlay\";\n case \"Darken\":\n return \"darken\";\n case \"Lighten\":\n return \"lighten\";\n case \"ColorDodge\":\n return \"color-dodge\";\n case \"ColorBurn\":\n return \"color-burn\";\n case \"HardLight\":\n return \"hard-light\";\n case \"SoftLight\":\n return \"soft-light\";\n case \"Difference\":\n return \"difference\";\n case \"Exclusion\":\n return \"exclusion\";\n case \"Hue\":\n return \"hue\";\n case \"Saturation\":\n return \"saturation\";\n case \"Color\":\n return \"color\";\n case \"Luminosity\":\n return \"luminosity\";\n }\n if (parsingArray) {\n return null;\n }\n warn(`Unsupported blend mode: ${value.name}`);\n return \"source-over\";\n}\n\n// Trying to minimize Date.now() usage and check every 100 time.\nclass TimeSlotManager {\n static get TIME_SLOT_DURATION_MS() {\n return shadow(this, \"TIME_SLOT_DURATION_MS\", 20);\n }\n\n static get CHECK_TIME_EVERY() {\n return shadow(this, \"CHECK_TIME_EVERY\", 100);\n }\n\n constructor() {\n this.reset();\n }\n\n check() {\n if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n return false;\n }\n this.checked = 0;\n return this.endTime <= Date.now();\n }\n\n reset() {\n this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n this.checked = 0;\n }\n}\n\nclass PartialEvaluator {\n constructor({\n xref,\n handler,\n pageIndex,\n idFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalImageCache,\n options = null,\n }) {\n this.xref = xref;\n this.handler = handler;\n this.pageIndex = pageIndex;\n this.idFactory = idFactory;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalImageCache = globalImageCache;\n this.options = options || DefaultPartialEvaluatorOptions;\n this.parsingType3Font = false;\n\n this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n }\n\n /**\n * Since Functions are only cached (locally) by reference, we can share one\n * `PDFFunctionFactory` instance within this `PartialEvaluator` instance.\n */\n get _pdfFunctionFactory() {\n const pdfFunctionFactory = new PDFFunctionFactory({\n xref: this.xref,\n isEvalSupported: this.options.isEvalSupported,\n });\n return shadow(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n }\n\n clone(newOptions = null) {\n const newEvaluator = Object.create(this);\n newEvaluator.options = Object.assign(\n Object.create(null),\n this.options,\n newOptions\n );\n return newEvaluator;\n }\n\n hasBlendModes(resources, nonBlendModesSet) {\n if (!(resources instanceof Dict)) {\n return false;\n }\n if (resources.objId && nonBlendModesSet.has(resources.objId)) {\n return false;\n }\n\n const processed = new RefSet(nonBlendModesSet);\n if (resources.objId) {\n processed.put(resources.objId);\n }\n\n const nodes = [resources],\n xref = this.xref;\n while (nodes.length) {\n const node = nodes.shift();\n // First check the current resources for blend modes.\n const graphicStates = node.get(\"ExtGState\");\n if (graphicStates instanceof Dict) {\n for (let graphicState of graphicStates.getRawValues()) {\n if (graphicState instanceof Ref) {\n if (processed.has(graphicState)) {\n continue; // The ExtGState has already been processed.\n }\n try {\n graphicState = xref.fetch(graphicState);\n } catch (ex) {\n // Avoid parsing a corrupt ExtGState more than once.\n processed.put(graphicState);\n\n info(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n continue;\n }\n }\n if (!(graphicState instanceof Dict)) {\n continue;\n }\n if (graphicState.objId) {\n processed.put(graphicState.objId);\n }\n\n const bm = graphicState.get(\"BM\");\n if (bm instanceof Name) {\n if (bm.name !== \"Normal\") {\n return true;\n }\n continue;\n }\n if (bm !== undefined && Array.isArray(bm)) {\n for (const element of bm) {\n if (element instanceof Name && element.name !== \"Normal\") {\n return true;\n }\n }\n }\n }\n }\n // Descend into the XObjects to look for more resources and blend modes.\n const xObjects = node.get(\"XObject\");\n if (!(xObjects instanceof Dict)) {\n continue;\n }\n for (let xObject of xObjects.getRawValues()) {\n if (xObject instanceof Ref) {\n if (processed.has(xObject)) {\n // The XObject has already been processed, and by avoiding a\n // redundant `xref.fetch` we can *significantly* reduce the load\n // time for badly generated PDF files (fixes issue6961.pdf).\n continue;\n }\n try {\n xObject = xref.fetch(xObject);\n } catch (ex) {\n // Avoid parsing a corrupt XObject more than once.\n processed.put(xObject);\n\n info(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n continue;\n }\n }\n if (!isStream(xObject)) {\n continue;\n }\n if (xObject.dict.objId) {\n processed.put(xObject.dict.objId);\n }\n const xResources = xObject.dict.get(\"Resources\");\n if (!(xResources instanceof Dict)) {\n continue;\n }\n // Checking objId to detect an infinite loop.\n if (xResources.objId && processed.has(xResources.objId)) {\n continue;\n }\n\n nodes.push(xResources);\n if (xResources.objId) {\n processed.put(xResources.objId);\n }\n }\n }\n\n // When no blend modes exist, there's no need re-fetch/re-parse any of the\n // processed `Ref`s again for subsequent pages. This helps reduce redundant\n // `XRef.fetch` calls for some documents (e.g. issue6961.pdf).\n processed.forEach(ref => {\n nonBlendModesSet.put(ref);\n });\n return false;\n }\n\n async fetchBuiltInCMap(name) {\n const cachedData = this.builtInCMapCache.get(name);\n if (cachedData) {\n return cachedData;\n }\n let data;\n\n if (this.options.cMapUrl !== null) {\n // Only compressed CMaps are (currently) supported here.\n const url = `${this.options.cMapUrl}${name}.bcmap`;\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `fetchBuiltInCMap: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n }\n data = {\n cMapData: new Uint8Array(await response.arrayBuffer()),\n compressionType: CMapCompressionType.BINARY,\n };\n } else {\n // Get the data on the main-thread instead.\n data = await this.handler.sendWithPromise(\"FetchBuiltInCMap\", { name });\n }\n\n if (data.compressionType !== CMapCompressionType.NONE) {\n // Given the size of uncompressed CMaps, only cache compressed ones.\n this.builtInCMapCache.set(name, data);\n }\n return data;\n }\n\n async fetchStandardFontData(name) {\n const cachedData = this.standardFontDataCache.get(name);\n if (cachedData) {\n return new Stream(cachedData);\n }\n\n // The symbol fonts are not consistent across platforms, always load the\n // standard font data for them.\n if (\n this.options.useSystemFonts &&\n name !== \"Symbol\" &&\n name !== \"ZapfDingbats\"\n ) {\n return null;\n }\n\n const standardFontNameToFileName = getFontNameToFileMap(),\n filename = standardFontNameToFileName[name];\n let data;\n\n if (this.options.standardFontDataUrl !== null) {\n const url = `${this.options.standardFontDataUrl}${filename}`;\n const response = await fetch(url);\n if (!response.ok) {\n warn(\n `fetchStandardFontData: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n } else {\n data = await response.arrayBuffer();\n }\n } else {\n // Get the data on the main-thread instead.\n try {\n data = await this.handler.sendWithPromise(\"FetchStandardFontData\", {\n filename,\n });\n } catch (e) {\n warn(\n `fetchStandardFontData: failed to fetch file \"${filename}\" with \"${e}\".`\n );\n }\n }\n\n if (!data) {\n return null;\n }\n // Cache the \"raw\" standard font data, to avoid fetching it repeateadly\n // (see e.g. issue 11399).\n this.standardFontDataCache.set(name, data);\n\n return new Stream(data);\n }\n\n async buildFormXObject(\n resources,\n xobj,\n smask,\n operatorList,\n task,\n initialState,\n localColorSpaceCache\n ) {\n const dict = xobj.dict;\n const matrix = dict.getArray(\"Matrix\");\n let bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n bbox = Util.normalizeRect(bbox);\n } else {\n bbox = null;\n }\n\n let optionalContent, groupOptions;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(\n dict.get(\"OC\"),\n resources\n );\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n const group = dict.get(\"Group\");\n if (group) {\n groupOptions = {\n matrix,\n bbox,\n smask,\n isolated: false,\n knockout: false,\n };\n\n const groupSubtype = group.get(\"S\");\n let colorSpace = null;\n if (isName(groupSubtype, \"Transparency\")) {\n groupOptions.isolated = group.get(\"I\") || false;\n groupOptions.knockout = group.get(\"K\") || false;\n if (group.has(\"CS\")) {\n const cs = group.getRaw(\"CS\");\n\n const cachedColorSpace = ColorSpace.getCached(\n cs,\n this.xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n colorSpace = cachedColorSpace;\n } else {\n colorSpace = await this.parseColorSpace({\n cs,\n resources,\n localColorSpaceCache,\n });\n }\n }\n }\n\n if (smask && smask.backdrop) {\n colorSpace = colorSpace || ColorSpace.singletons.rgb;\n smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n }\n\n operatorList.addOp(OPS.beginGroup, [groupOptions]);\n }\n\n // If it's a group, a new canvas will be created that is the size of the\n // bounding box and translated to the correct position so we don't need to\n // apply the bounding box to it.\n const args = group ? [matrix, null] : [matrix, bbox];\n operatorList.addOp(OPS.paintFormXObjectBegin, args);\n\n return this.getOperatorList({\n stream: xobj,\n task,\n resources: dict.get(\"Resources\") || resources,\n operatorList,\n initialState,\n }).then(function () {\n operatorList.addOp(OPS.paintFormXObjectEnd, []);\n\n if (group) {\n operatorList.addOp(OPS.endGroup, [groupOptions]);\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n });\n }\n\n _sendImgData(objId, imgData, cacheGlobally = false) {\n const transfers = imgData ? [imgData.data.buffer] : null;\n\n if (this.parsingType3Font || cacheGlobally) {\n return this.handler.send(\n \"commonobj\",\n [objId, \"Image\", imgData],\n transfers\n );\n }\n return this.handler.send(\n \"obj\",\n [objId, this.pageIndex, \"Image\", imgData],\n transfers\n );\n }\n\n async buildPaintImageXObject({\n resources,\n image,\n isInline = false,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache,\n }) {\n const dict = image.dict;\n const imageRef = dict.objId;\n const w = dict.get(\"W\", \"Width\");\n const h = dict.get(\"H\", \"Height\");\n\n if (!(w && isNum(w)) || !(h && isNum(h))) {\n warn(\"Image dimensions are missing, or not numbers.\");\n return;\n }\n const maxImageSize = this.options.maxImageSize;\n if (maxImageSize !== -1 && w * h > maxImageSize) {\n warn(\"Image exceeded maximum allowed size and was removed.\");\n return;\n }\n\n let optionalContent;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(\n dict.get(\"OC\"),\n resources\n );\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n\n const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n const interpolate = dict.get(\"I\", \"Interpolate\");\n let imgData, args;\n if (imageMask) {\n // This depends on a tmpCanvas being filled with the\n // current fillStyle, such that processing the pixel\n // data can't be done here. Instead of creating a\n // complete PDFImage, only read the information needed\n // for later.\n const bitStrideLength = (w + 7) >> 3;\n const imgArray = image.getBytes(\n bitStrideLength * h,\n /* forceClamped = */ true\n );\n const decode = dict.getArray(\"D\", \"Decode\");\n\n imgData = PDFImage.createMask({\n imgArray,\n width: w,\n height: h,\n imageIsFromDecodeStream: image instanceof DecodeStream,\n inverseDecode: !!decode && decode[0] > 0,\n interpolate,\n });\n imgData.cached = !!cacheKey;\n args = [imgData];\n\n operatorList.addOp(OPS.paintImageMaskXObject, args);\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintImageMaskXObject,\n args,\n });\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n return;\n }\n\n const softMask = dict.get(\"SM\", \"SMask\") || false;\n const mask = dict.get(\"Mask\") || false;\n\n const SMALL_IMAGE_DIMENSIONS = 200;\n // Inlining small images into the queue as RGB data\n if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {\n const imageObj = new PDFImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n });\n // We force the use of RGBA_32BPP images here, because we can't handle\n // any other kind.\n imgData = imageObj.createImageData(/* forceRGBA = */ true);\n operatorList.addOp(OPS.paintInlineImageXObject, [imgData]);\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n return;\n }\n\n // If there is no imageMask, create the PDFImage and a lot\n // of image processing can be done here.\n let objId = `img_${this.idFactory.createObjId()}`,\n cacheGlobally = false;\n\n if (this.parsingType3Font) {\n objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n } else if (imageRef) {\n cacheGlobally = this.globalImageCache.shouldCache(\n imageRef,\n this.pageIndex\n );\n\n if (cacheGlobally) {\n objId = `${this.idFactory.getDocId()}_${objId}`;\n }\n }\n\n // Ensure that the dependency is added before the image is decoded.\n operatorList.addDependency(objId);\n args = [objId, w, h];\n\n PDFImage.buildImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n })\n .then(imageObj => {\n imgData = imageObj.createImageData(/* forceRGBA = */ false);\n\n if (cacheKey && imageRef && cacheGlobally) {\n this.globalImageCache.addByteSize(imageRef, imgData.data.length);\n }\n return this._sendImgData(objId, imgData, cacheGlobally);\n })\n .catch(reason => {\n warn(`Unable to decode image \"${objId}\": \"${reason}\".`);\n\n return this._sendImgData(objId, /* imgData = */ null, cacheGlobally);\n });\n\n operatorList.addOp(OPS.paintImageXObject, args);\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintImageXObject,\n args,\n });\n\n if (imageRef) {\n assert(!isInline, \"Cannot cache an inline image globally.\");\n this.globalImageCache.addPageIndex(imageRef, this.pageIndex);\n\n if (cacheGlobally) {\n this.globalImageCache.setData(imageRef, {\n objId,\n fn: OPS.paintImageXObject,\n args,\n byteSize: 0, // Temporary entry, note `addByteSize` above.\n });\n }\n }\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n }\n\n handleSMask(\n smask,\n resources,\n operatorList,\n task,\n stateManager,\n localColorSpaceCache\n ) {\n const smaskContent = smask.get(\"G\");\n const smaskOptions = {\n subtype: smask.get(\"S\").name,\n backdrop: smask.get(\"BC\"),\n };\n\n // The SMask might have a alpha/luminosity value transfer function --\n // we will build a map of integer values in range 0..255 to be fast.\n const transferObj = smask.get(\"TR\");\n if (isPDFFunction(transferObj)) {\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n const transferMap = new Uint8Array(256);\n const tmp = new Float32Array(1);\n for (let i = 0; i < 256; i++) {\n tmp[0] = i / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[i] = (tmp[0] * 255) | 0;\n }\n smaskOptions.transferMap = transferMap;\n }\n\n return this.buildFormXObject(\n resources,\n smaskContent,\n smaskOptions,\n operatorList,\n task,\n stateManager.state.clone(),\n localColorSpaceCache\n );\n }\n\n handleTransferFunction(tr) {\n let transferArray;\n if (Array.isArray(tr)) {\n transferArray = tr;\n } else if (isPDFFunction(tr)) {\n transferArray = [tr];\n } else {\n return null; // Not a valid transfer function entry.\n }\n\n const transferMaps = [];\n let numFns = 0,\n numEffectfulFns = 0;\n for (const entry of transferArray) {\n const transferObj = this.xref.fetchIfRef(entry);\n numFns++;\n\n if (isName(transferObj, \"Identity\")) {\n transferMaps.push(null);\n continue;\n } else if (!isPDFFunction(transferObj)) {\n return null; // Not a valid transfer function object.\n }\n\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n const transferMap = new Uint8Array(256),\n tmp = new Float32Array(1);\n for (let j = 0; j < 256; j++) {\n tmp[0] = j / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[j] = (tmp[0] * 255) | 0;\n }\n transferMaps.push(transferMap);\n numEffectfulFns++;\n }\n\n if (!(numFns === 1 || numFns === 4)) {\n return null; // Only 1 or 4 functions are supported, by the specification.\n }\n if (numEffectfulFns === 0) {\n return null; // Only /Identity transfer functions found, which are no-ops.\n }\n return transferMaps;\n }\n\n handleTilingType(\n fn,\n color,\n resources,\n pattern,\n patternDict,\n operatorList,\n task,\n localTilingPatternCache\n ) {\n // Create an IR of the pattern code.\n const tilingOpList = new OperatorList();\n // Merge the available resources, to prevent issues when the patternDict\n // is missing some /Resources entries (fixes issue6541.pdf).\n const patternResources = Dict.merge({\n xref: this.xref,\n dictArray: [patternDict.get(\"Resources\"), resources],\n });\n\n return this.getOperatorList({\n stream: pattern,\n task,\n resources: patternResources,\n operatorList: tilingOpList,\n })\n .then(function () {\n const operatorListIR = tilingOpList.getIR();\n const tilingPatternIR = getTilingPatternIR(\n operatorListIR,\n patternDict,\n color\n );\n // Add the dependencies to the parent operator list so they are\n // resolved before the sub operator list is executed synchronously.\n operatorList.addDependencies(tilingOpList.dependencies);\n operatorList.addOp(fn, tilingPatternIR);\n\n if (patternDict.objId) {\n localTilingPatternCache.set(/* name = */ null, patternDict.objId, {\n operatorListIR,\n dict: patternDict,\n });\n }\n })\n .catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the TilingPattern -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorTilingPattern,\n });\n warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n return;\n }\n throw reason;\n });\n }\n\n handleSetFont(\n resources,\n fontArgs,\n fontRef,\n operatorList,\n task,\n state,\n fallbackFontDict = null,\n cssFontInfo = null\n ) {\n const fontName =\n fontArgs && fontArgs[0] instanceof Name ? fontArgs[0].name : null;\n\n return this.loadFont(\n fontName,\n fontRef,\n resources,\n fallbackFontDict,\n cssFontInfo\n )\n .then(translated => {\n if (!translated.font.isType3Font) {\n return translated;\n }\n return translated\n .loadType3Data(this, resources, task)\n .then(function () {\n // Add the dependencies to the parent operatorList so they are\n // resolved before Type3 operatorLists are executed synchronously.\n operatorList.addDependencies(translated.type3Dependencies);\n\n return translated;\n })\n .catch(reason => {\n // Error in the font data -- sending unsupported feature\n // notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontLoadType3,\n });\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Type3 font load error: ${reason}`),\n dict: translated.font,\n evaluatorOptions: this.options,\n });\n });\n })\n .then(translated => {\n state.font = translated.font;\n translated.send(this.handler);\n return translated.loadedName;\n });\n }\n\n handleText(chars, state) {\n const font = state.font;\n const glyphs = font.charsToGlyphs(chars);\n\n if (font.data) {\n const isAddToPathSet = !!(\n state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n if (\n isAddToPathSet ||\n state.fillColorSpace.name === \"Pattern\" ||\n font.disableFontFace ||\n this.options.disableFontFace\n ) {\n PartialEvaluator.buildFontPaths(\n font,\n glyphs,\n this.handler,\n this.options\n );\n }\n }\n return glyphs;\n }\n\n ensureStateFont(state) {\n if (state.font) {\n return;\n }\n const reason = new FormatError(\n \"Missing setFont (Tf) operator before text rendering operator.\"\n );\n\n if (this.options.ignoreErrors) {\n // Missing setFont operator before text rendering operator -- sending\n // unsupported feature notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontState,\n });\n warn(`ensureStateFont: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n\n async setGState({\n resources,\n gState,\n operatorList,\n cacheKey,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n }) {\n const gStateRef = gState.objId;\n let isSimpleGState = true;\n // This array holds the converted/processed state data.\n const gStateObj = [];\n const gStateKeys = gState.getKeys();\n let promise = Promise.resolve();\n for (let i = 0, ii = gStateKeys.length; i < ii; i++) {\n const key = gStateKeys[i];\n const value = gState.get(key);\n switch (key) {\n case \"Type\":\n break;\n case \"LW\":\n case \"LC\":\n case \"LJ\":\n case \"ML\":\n case \"D\":\n case \"RI\":\n case \"FL\":\n case \"CA\":\n case \"ca\":\n gStateObj.push([key, value]);\n break;\n case \"Font\":\n isSimpleGState = false;\n\n promise = promise.then(() => {\n return this.handleSetFont(\n resources,\n null,\n value[0],\n operatorList,\n task,\n stateManager.state\n ).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n gStateObj.push([key, [loadedName, value[1]]]);\n });\n });\n break;\n case \"BM\":\n gStateObj.push([key, normalizeBlendMode(value)]);\n break;\n case \"SMask\":\n if (isName(value, \"None\")) {\n gStateObj.push([key, false]);\n break;\n }\n if (isDict(value)) {\n isSimpleGState = false;\n\n promise = promise.then(() => {\n return this.handleSMask(\n value,\n resources,\n operatorList,\n task,\n stateManager,\n localColorSpaceCache\n );\n });\n gStateObj.push([key, true]);\n } else {\n warn(\"Unsupported SMask type\");\n }\n break;\n case \"TR\":\n const transferMaps = this.handleTransferFunction(value);\n gStateObj.push([key, transferMaps]);\n break;\n // Only generate info log messages for the following since\n // they are unlikely to have a big impact on the rendering.\n case \"OP\":\n case \"op\":\n case \"OPM\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n case \"TR2\":\n case \"HT\":\n case \"SM\":\n case \"SA\":\n case \"AIS\":\n case \"TK\":\n // TODO implement these operators.\n info(\"graphic state operator \" + key);\n break;\n default:\n info(\"Unknown graphic state operator \" + key);\n break;\n }\n }\n return promise.then(function () {\n if (gStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [gStateObj]);\n }\n\n if (isSimpleGState) {\n localGStateCache.set(cacheKey, gStateRef, gStateObj);\n }\n });\n }\n\n loadFont(\n fontName,\n font,\n resources,\n fallbackFontDict = null,\n cssFontInfo = null\n ) {\n const errorFont = async () => {\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n dict: font,\n evaluatorOptions: this.options,\n });\n };\n\n const xref = this.xref;\n let fontRef;\n if (font) {\n // Loading by ref.\n if (!isRef(font)) {\n throw new FormatError('The \"font\" object should be a reference.');\n }\n fontRef = font;\n } else {\n // Loading by name.\n const fontRes = resources.get(\"Font\");\n if (fontRes) {\n fontRef = fontRes.getRaw(fontName);\n }\n }\n if (!fontRef) {\n const partialMsg = `Font \"${\n fontName || (font && font.toString())\n }\" is not available`;\n\n if (!this.options.ignoreErrors && !this.parsingType3Font) {\n warn(`${partialMsg}.`);\n return errorFont();\n }\n // Font not found -- sending unsupported feature notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontMissing,\n });\n warn(`${partialMsg} -- attempting to fallback to a default font.`);\n\n // Falling back to a default font to avoid completely broken rendering,\n // but note that there're no guarantees that things will look \"correct\".\n if (fallbackFontDict) {\n fontRef = fallbackFontDict;\n } else {\n fontRef = PartialEvaluator.fallbackFontDict;\n }\n }\n\n if (this.fontCache.has(fontRef)) {\n return this.fontCache.get(fontRef);\n }\n\n font = xref.fetchIfRef(fontRef);\n if (!isDict(font)) {\n return errorFont();\n }\n\n // We are holding `font.cacheKey` references only for `fontRef`s that\n // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\n return this.fontCache.get(font.cacheKey);\n }\n\n const fontCapability = createPromiseCapability();\n\n let preEvaluatedFont;\n try {\n preEvaluatedFont = this.preEvaluateFont(font);\n preEvaluatedFont.cssFontInfo = cssFontInfo;\n } catch (reason) {\n warn(`loadFont - preEvaluateFont failed: \"${reason}\".`);\n return errorFont();\n }\n const { descriptor, hash } = preEvaluatedFont;\n\n const fontRefIsRef = isRef(fontRef);\n let fontID;\n if (fontRefIsRef) {\n fontID = `f${fontRef.toString()}`;\n }\n\n if (hash && isDict(descriptor)) {\n if (!descriptor.fontAliases) {\n descriptor.fontAliases = Object.create(null);\n }\n const fontAliases = descriptor.fontAliases;\n\n if (fontAliases[hash]) {\n const aliasFontRef = fontAliases[hash].aliasRef;\n if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n this.fontCache.putAlias(fontRef, aliasFontRef);\n return this.fontCache.get(fontRef);\n }\n } else {\n fontAliases[hash] = {\n fontID: this.idFactory.createFontId(),\n };\n }\n\n if (fontRefIsRef) {\n fontAliases[hash].aliasRef = fontRef;\n }\n fontID = fontAliases[hash].fontID;\n }\n\n // Workaround for bad PDF generators that reference fonts incorrectly,\n // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\n // In this case we cannot put the font into `this.fontCache` (which is\n // a `RefSetCache`), since it's not possible to use a `Dict` as a key.\n //\n // However, if we don't cache the font it's not possible to remove it\n // when `cleanup` is triggered from the API, which causes issues on\n // subsequent rendering operations (see issue7403.pdf) and would force us\n // to unnecessarily load the same fonts over and over.\n //\n // Instead, we cheat a bit by using a modified `fontID` as a key in\n // `this.fontCache`, to allow the font to be cached.\n // NOTE: This works because `RefSetCache` calls `toString()` on provided\n // keys. Also, since `fontRef` is used when getting cached fonts,\n // we'll not accidentally match fonts cached with the `fontID`.\n if (fontRefIsRef) {\n this.fontCache.put(fontRef, fontCapability.promise);\n } else {\n if (!fontID) {\n fontID = this.idFactory.createFontId();\n }\n font.cacheKey = `cacheKey_${fontID}`;\n this.fontCache.put(font.cacheKey, fontCapability.promise);\n }\n assert(\n fontID && fontID.startsWith(\"f\"),\n 'The \"fontID\" must be (correctly) defined.'\n );\n\n // Keep track of each font we translated so the caller can\n // load them asynchronously before calling display on a page.\n font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n\n this.translateFont(preEvaluatedFont)\n .then(translatedFont => {\n if (translatedFont.fontType !== undefined) {\n xref.stats.addFontType(translatedFont.fontType);\n }\n\n fontCapability.resolve(\n new TranslatedFont({\n loadedName: font.loadedName,\n font: translatedFont,\n dict: font,\n evaluatorOptions: this.options,\n })\n );\n })\n .catch(reason => {\n // TODO fontCapability.reject?\n // Error in the font data -- sending unsupported feature notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontTranslate,\n });\n warn(`loadFont - translateFont failed: \"${reason}\".`);\n\n try {\n // error, but it's still nice to have font type reported\n const fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n const subtype = fontFile3 && fontFile3.get(\"Subtype\");\n const fontType = getFontType(\n preEvaluatedFont.type,\n subtype && subtype.name\n );\n if (fontType !== undefined) {\n xref.stats.addFontType(fontType);\n }\n } catch (ex) {}\n\n fontCapability.resolve(\n new TranslatedFont({\n loadedName: font.loadedName,\n font: new ErrorFont(\n reason instanceof Error ? reason.message : reason\n ),\n dict: font,\n evaluatorOptions: this.options,\n })\n );\n });\n return fontCapability.promise;\n }\n\n buildPath(operatorList, fn, args, parsingText = false) {\n const lastIndex = operatorList.length - 1;\n if (!args) {\n args = [];\n }\n if (\n lastIndex < 0 ||\n operatorList.fnArray[lastIndex] !== OPS.constructPath\n ) {\n // Handle corrupt PDF documents that contains path operators inside of\n // text objects, which may shift subsequent text, by enclosing the path\n // operator in save/restore operators (fixes issue10542_reduced.pdf).\n //\n // Note that this will effectively disable the optimization in the\n // `else` branch below, but given that this type of corruption is\n // *extremely* rare that shouldn't really matter much in practice.\n if (parsingText) {\n warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n operatorList.addOp(OPS.save, null);\n }\n\n operatorList.addOp(OPS.constructPath, [[fn], args]);\n\n if (parsingText) {\n operatorList.addOp(OPS.restore, null);\n }\n } else {\n const opArgs = operatorList.argsArray[lastIndex];\n opArgs[0].push(fn);\n Array.prototype.push.apply(opArgs[1], args);\n }\n }\n\n parseColorSpace({ cs, resources, localColorSpaceCache }) {\n return ColorSpace.parseAsync({\n cs,\n xref: this.xref,\n resources,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the ColorSpace -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorColorSpace,\n });\n warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n return null;\n }\n throw reason;\n });\n }\n\n parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n }) {\n // Shadings and patterns may be referenced by the same name but the resource\n // dictionary could be different so we can't use the name for the cache key.\n let id = localShadingPatternCache.get(shading);\n if (!id) {\n var shadingFill = Pattern.parseShading(\n shading,\n this.xref,\n resources,\n this.handler,\n this._pdfFunctionFactory,\n localColorSpaceCache\n );\n const patternIR = shadingFill.getIR();\n id = `pattern_${this.idFactory.createObjId()}`;\n localShadingPatternCache.set(shading, id);\n this.handler.send(\"obj\", [id, this.pageIndex, \"Pattern\", patternIR]);\n }\n return id;\n }\n\n handleColorN(\n operatorList,\n fn,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n ) {\n // compile tiling patterns\n const patternName = args.pop();\n // SCN/scn applies patterns along with normal colors\n if (patternName instanceof Name) {\n const rawPattern = patterns.getRaw(patternName.name);\n\n const localTilingPattern =\n rawPattern instanceof Ref &&\n localTilingPatternCache.getByRef(rawPattern);\n if (localTilingPattern) {\n try {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n const tilingPatternIR = getTilingPatternIR(\n localTilingPattern.operatorListIR,\n localTilingPattern.dict,\n color\n );\n operatorList.addOp(fn, tilingPatternIR);\n return undefined;\n } catch (ex) {\n // Handle any errors during normal TilingPattern parsing.\n }\n }\n\n const pattern = this.xref.fetchIfRef(rawPattern);\n if (pattern) {\n const dict = isStream(pattern) ? pattern.dict : pattern;\n const typeNum = dict.get(\"PatternType\");\n\n if (typeNum === PatternType.TILING) {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n return this.handleTilingType(\n fn,\n color,\n resources,\n pattern,\n dict,\n operatorList,\n task,\n localTilingPatternCache\n );\n } else if (typeNum === PatternType.SHADING) {\n const shading = dict.get(\"Shading\");\n const matrix = dict.getArray(\"Matrix\");\n const objId = this.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n });\n operatorList.addOp(fn, [\"Shading\", objId, matrix]);\n return undefined;\n }\n throw new FormatError(`Unknown PatternType: ${typeNum}`);\n }\n }\n throw new FormatError(`Unknown PatternName: ${patternName}`);\n }\n\n _parseVisibilityExpression(array, nestingCounter, currentResult) {\n const MAX_NESTING = 10;\n if (++nestingCounter > MAX_NESTING) {\n warn(\"Visibility expression is too deeply nested\");\n return;\n }\n const length = array.length;\n const operator = this.xref.fetchIfRef(array[0]);\n if (length < 2 || !isName(operator)) {\n warn(\"Invalid visibility expression\");\n return;\n }\n switch (operator.name) {\n case \"And\":\n case \"Or\":\n case \"Not\":\n currentResult.push(operator.name);\n break;\n default:\n warn(`Invalid operator ${operator.name} in visibility expression`);\n return;\n }\n for (let i = 1; i < length; i++) {\n const raw = array[i];\n const object = this.xref.fetchIfRef(raw);\n if (Array.isArray(object)) {\n const nestedResult = [];\n currentResult.push(nestedResult);\n // Recursively parse a subarray.\n this._parseVisibilityExpression(object, nestingCounter, nestedResult);\n } else if (isRef(raw)) {\n // Reference to an OCG dictionary.\n currentResult.push(raw.toString());\n }\n }\n }\n\n async parseMarkedContentProps(contentProperties, resources) {\n let optionalContent;\n if (isName(contentProperties)) {\n const properties = resources.get(\"Properties\");\n optionalContent = properties.get(contentProperties.name);\n } else if (isDict(contentProperties)) {\n optionalContent = contentProperties;\n } else {\n throw new FormatError(\"Optional content properties malformed.\");\n }\n\n const optionalContentType = optionalContent.get(\"Type\").name;\n if (optionalContentType === \"OCG\") {\n return {\n type: optionalContentType,\n id: optionalContent.objId,\n };\n } else if (optionalContentType === \"OCMD\") {\n const expression = optionalContent.get(\"VE\");\n if (Array.isArray(expression)) {\n const result = [];\n this._parseVisibilityExpression(expression, 0, result);\n if (result.length > 0) {\n return {\n type: \"OCMD\",\n expression: result,\n };\n }\n }\n\n const optionalContentGroups = optionalContent.get(\"OCGs\");\n if (\n Array.isArray(optionalContentGroups) ||\n isDict(optionalContentGroups)\n ) {\n const groupIds = [];\n if (Array.isArray(optionalContentGroups)) {\n for (const ocg of optionalContentGroups) {\n groupIds.push(ocg.toString());\n }\n } else {\n // Dictionary, just use the obj id.\n groupIds.push(optionalContentGroups.objId);\n }\n\n return {\n type: optionalContentType,\n ids: groupIds,\n policy: isName(optionalContent.get(\"P\"))\n ? optionalContent.get(\"P\").name\n : null,\n expression: null,\n };\n } else if (isRef(optionalContentGroups)) {\n return {\n type: optionalContentType,\n id: optionalContentGroups.toString(),\n };\n }\n }\n return null;\n }\n\n getOperatorList({\n stream,\n task,\n resources,\n operatorList,\n initialState = null,\n fallbackFontDict = null,\n }) {\n // Ensure that `resources`/`initialState` is correctly initialized,\n // even if the provided parameter is e.g. `null`.\n resources = resources || Dict.empty;\n initialState = initialState || new EvalState();\n\n if (!operatorList) {\n throw new Error('getOperatorList: missing \"operatorList\" parameter');\n }\n\n const self = this;\n const xref = this.xref;\n let parsingText = false;\n const localImageCache = new LocalImageCache();\n const localColorSpaceCache = new LocalColorSpaceCache();\n const localGStateCache = new LocalGStateCache();\n const localTilingPatternCache = new LocalTilingPatternCache();\n const localShadingPatternCache = new Map();\n\n const xobjs = resources.get(\"XObject\") || Dict.empty;\n const patterns = resources.get(\"Pattern\") || Dict.empty;\n const stateManager = new StateManager(initialState);\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n const timeSlotManager = new TimeSlotManager();\n\n function closePendingRestoreOPS(argument) {\n for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n operatorList.addOp(OPS.restore, []);\n }\n }\n\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n Promise.all([promise, operatorList.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n\n const operation = {};\n let stop, i, ii, cs, name, isValidName;\n while (!(stop = timeSlotManager.check())) {\n // The arguments parsed by read() are used beyond this loop, so we\n // cannot reuse the same array on each iteration. Therefore we pass\n // in |null| as the initial value (see the comment on\n // EvaluatorPreprocessor_read() for why).\n operation.args = null;\n if (!preprocessor.read(operation)) {\n break;\n }\n let args = operation.args;\n let fn = operation.fn;\n\n switch (fn | 0) {\n case OPS.paintXObject:\n // eagerly compile XForm objects\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName) {\n const localImage = localImageCache.getByName(name);\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n args = null;\n continue;\n }\n }\n\n next(\n new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n const localImage = localImageCache.getByRef(xobj);\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n\n resolveXObject();\n return;\n }\n\n const globalImage = self.globalImageCache.getData(\n xobj,\n self.pageIndex\n );\n if (globalImage) {\n operatorList.addDependency(globalImage.objId);\n operatorList.addOp(globalImage.fn, globalImage.args);\n\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!isStream(xobj)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n\n const type = xobj.dict.get(\"Subtype\");\n if (!isName(type)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name === \"Form\") {\n stateManager.save();\n self\n .buildFormXObject(\n resources,\n xobj,\n null,\n operatorList,\n task,\n stateManager.state.clone(),\n localColorSpaceCache\n )\n .then(function () {\n stateManager.restore();\n resolveXObject();\n }, rejectXObject);\n return;\n } else if (type.name === \"Image\") {\n self\n .buildPaintImageXObject({\n resources,\n image: xobj,\n operatorList,\n cacheKey: name,\n localImageCache,\n localColorSpaceCache,\n })\n .then(resolveXObject, rejectXObject);\n return;\n } else if (type.name === \"PS\") {\n // PostScript XObjects are unused when viewing documents.\n // See section 4.7.1 of Adobe's PDF reference.\n info(\"Ignored XObject subtype PS\");\n } else {\n throw new FormatError(\n `Unhandled XObject subtype ${type.name}`\n );\n }\n resolveXObject();\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the XObject -- sending unsupported feature\n // notification and allow rendering to continue.\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorXObject,\n });\n warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.setFont:\n var fontSize = args[1];\n // eagerly collect all fonts\n next(\n self\n .handleSetFont(\n resources,\n args,\n null,\n operatorList,\n task,\n stateManager.state,\n fallbackFontDict\n )\n .then(function (loadedName) {\n operatorList.addDependency(loadedName);\n operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n })\n );\n return;\n case OPS.beginText:\n parsingText = true;\n break;\n case OPS.endText:\n parsingText = false;\n break;\n case OPS.endInlineImage:\n var cacheKey = args[0].cacheKey;\n if (cacheKey) {\n const localImage = localImageCache.getByName(cacheKey);\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n args = null;\n continue;\n }\n }\n next(\n self.buildPaintImageXObject({\n resources,\n image: args[0],\n isInline: true,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache,\n })\n );\n return;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n args[0] = self.handleText(args[0], stateManager.state);\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n var arr = args[0];\n var combinedGlyphs = [];\n var arrLength = arr.length;\n var state = stateManager.state;\n for (i = 0; i < arrLength; ++i) {\n const arrItem = arr[i];\n if (isString(arrItem)) {\n Array.prototype.push.apply(\n combinedGlyphs,\n self.handleText(arrItem, state)\n );\n } else if (isNum(arrItem)) {\n combinedGlyphs.push(arrItem);\n }\n }\n args[0] = combinedGlyphs;\n fn = OPS.showText;\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.setTextRenderingMode:\n stateManager.state.textRenderingMode = args[0];\n break;\n\n case OPS.setFillColorSpace: {\n const cachedColorSpace = ColorSpace.getCached(\n args[0],\n xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n stateManager.state.fillColorSpace = cachedColorSpace;\n continue;\n }\n\n next(\n self\n .parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache,\n })\n .then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.fillColorSpace = colorSpace;\n }\n })\n );\n return;\n }\n case OPS.setStrokeColorSpace: {\n const cachedColorSpace = ColorSpace.getCached(\n args[0],\n xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n stateManager.state.strokeColorSpace = cachedColorSpace;\n continue;\n }\n\n next(\n self\n .parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache,\n })\n .then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.strokeColorSpace = colorSpace;\n }\n })\n );\n return;\n }\n case OPS.setFillColor:\n cs = stateManager.state.fillColorSpace;\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColor:\n cs = stateManager.state.strokeColorSpace;\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillGray:\n stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeGray:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillCMYKColor:\n stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeCMYKColor:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillRGBColor:\n stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n args = ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n case OPS.setStrokeRGBColor:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n args = ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n case OPS.setFillColorN:\n cs = stateManager.state.fillColorSpace;\n if (cs.name === \"Pattern\") {\n next(\n self.handleColorN(\n operatorList,\n OPS.setFillColorN,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n )\n );\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColorN:\n cs = stateManager.state.strokeColorSpace;\n if (cs.name === \"Pattern\") {\n next(\n self.handleColorN(\n operatorList,\n OPS.setStrokeColorN,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n )\n );\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n\n case OPS.shadingFill:\n var shadingRes = resources.get(\"Shading\");\n if (!shadingRes) {\n throw new FormatError(\"No shading resource found\");\n }\n\n var shading = shadingRes.get(args[0].name);\n if (!shading) {\n throw new FormatError(\"No shading object found\");\n }\n const patternId = self.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n });\n args = [patternId];\n fn = OPS.shadingFill;\n break;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName) {\n const localGStateObj = localGStateCache.getByName(name);\n if (localGStateObj) {\n if (localGStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [localGStateObj]);\n }\n args = null;\n continue;\n }\n }\n\n next(\n new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n\n const gState = extGState.get(name);\n // TODO: Attempt to lookup cached GStates by reference as well,\n // if and only if there are PDF documents where doing so\n // would significantly improve performance.\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n\n self\n .setGState({\n resources,\n gState,\n operatorList,\n cacheKey: name,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n })\n .then(resolveGState, rejectGState);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the ExtGState -- sending unsupported feature\n // notification and allow parsing/rendering to continue.\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorExtGState,\n });\n warn(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.moveTo:\n case OPS.lineTo:\n case OPS.curveTo:\n case OPS.curveTo2:\n case OPS.curveTo3:\n case OPS.closePath:\n case OPS.rectangle:\n self.buildPath(operatorList, fn, args, parsingText);\n continue;\n case OPS.markPoint:\n case OPS.markPointProps:\n case OPS.beginCompat:\n case OPS.endCompat:\n // Ignore operators where the corresponding handlers are known to\n // be no-op in CanvasGraphics (display/canvas.js). This prevents\n // serialization errors and is also a bit more efficient.\n // We could also try to serialize all objects in a general way,\n // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266,\n // but doing so is meaningless without knowing the semantics.\n continue;\n case OPS.beginMarkedContentProps:\n if (!isName(args[0])) {\n warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n continue;\n }\n if (args[0].name === \"OC\") {\n next(\n self\n .parseMarkedContentProps(args[1], resources)\n .then(data => {\n operatorList.addOp(OPS.beginMarkedContentProps, [\n \"OC\",\n data,\n ]);\n })\n .catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorMarkedContent,\n });\n warn(\n `getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`\n );\n return;\n }\n throw reason;\n })\n );\n return;\n }\n // Other marked content types aren't supported yet.\n args = [\n args[0].name,\n args[1] instanceof Dict ? args[1].get(\"MCID\") : null,\n ];\n\n break;\n case OPS.beginMarkedContent:\n case OPS.endMarkedContent:\n default:\n // Note: Ignore the operator if it has `Dict` arguments, since\n // those are non-serializable, otherwise postMessage will throw\n // \"An object could not be cloned.\".\n if (args !== null) {\n for (i = 0, ii = args.length; i < ii; i++) {\n if (args[i] instanceof Dict) {\n break;\n }\n }\n if (i < ii) {\n warn(\"getOperatorList - ignoring operator: \" + fn);\n continue;\n }\n }\n }\n operatorList.addOp(fn, args);\n }\n if (stop) {\n next(deferred);\n return;\n }\n // Some PDFs don't close all restores inside object/form.\n // Closing those for them.\n closePendingRestoreOPS();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the OperatorList -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n });\n warn(\n `getOperatorList - ignoring errors during \"${task.name}\" ` +\n `task: \"${reason}\".`\n );\n\n closePendingRestoreOPS();\n return;\n }\n throw reason;\n });\n }\n\n getTextContent({\n stream,\n task,\n resources,\n stateManager = null,\n normalizeWhitespace = false,\n combineTextItems = false,\n includeMarkedContent = false,\n sink,\n seenStyles = new Set(),\n }) {\n // Ensure that `resources`/`stateManager` is correctly initialized,\n // even if the provided parameter is e.g. `null`.\n resources = resources || Dict.empty;\n stateManager = stateManager || new StateManager(new TextState());\n\n const WhitespaceRegexp = /\\s/g;\n const DiacriticRegExp = new RegExp(\"^\\\\p{Mn}$\", \"u\");\n const NormalizedUnicodes = getNormalizedUnicodes();\n\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n const textContentItem = {\n initialized: false,\n str: [],\n totalWidth: 0,\n totalHeight: 0,\n width: 0,\n height: 0,\n vertical: false,\n prevTransform: null,\n textAdvanceScale: 0,\n spaceInFlowMin: 0,\n spaceInFlowMax: 0,\n trackingSpaceMin: Infinity,\n negativeSpaceMax: -Infinity,\n transform: null,\n fontName: null,\n hasEOL: false,\n };\n\n // Used in addFakeSpaces.\n\n // A white <= fontSize * TRACKING_SPACE_FACTOR is a tracking space\n // so it doesn't count as a space.\n const TRACKING_SPACE_FACTOR = 0.1;\n\n // A negative white < fontSize * NEGATIVE_SPACE_FACTOR induces\n // a break (a new chunk of text is created).\n // It doesn't change anything when the text is copied but\n // it improves potential mismatch between text layer and canvas.\n const NEGATIVE_SPACE_FACTOR = -0.2;\n\n // A white with a width in [fontSize * MIN_FACTOR; fontSize * MAX_FACTOR]\n // is a space which will be inserted in the current flow of words.\n // If the width is outside of this range then the flow is broken\n // (which means a new span in the text layer).\n // It's useful to adjust the best as possible the span in the layer\n // to what is displayed in the canvas.\n const SPACE_IN_FLOW_MIN_FACTOR = 0.1;\n const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\n\n const self = this;\n const xref = this.xref;\n const showSpacedTextBuffer = [];\n\n // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n let xobjs = null;\n const emptyXObjectCache = new LocalImageCache();\n const emptyGStateCache = new LocalGStateCache();\n\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n let textState;\n\n function getCurrentTextTransform() {\n // 9.4.4 Text Space Details\n const font = textState.font;\n const tsm = [\n textState.fontSize * textState.textHScale,\n 0,\n 0,\n textState.fontSize,\n 0,\n textState.textRise,\n ];\n\n if (\n font.isType3Font &&\n (textState.fontSize <= 1 || font.isCharBBox) &&\n !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)\n ) {\n const glyphHeight = font.bbox[3] - font.bbox[1];\n if (glyphHeight > 0) {\n tsm[3] *= glyphHeight * textState.fontMatrix[3];\n }\n }\n\n return Util.transform(\n textState.ctm,\n Util.transform(textState.textMatrix, tsm)\n );\n }\n\n function ensureTextContentItem() {\n if (textContentItem.initialized) {\n return textContentItem;\n }\n const font = textState.font,\n loadedName = font.loadedName;\n if (!seenStyles.has(loadedName)) {\n seenStyles.add(loadedName);\n\n textContent.styles[loadedName] = {\n fontFamily: font.fallbackName,\n ascent: font.ascent,\n descent: font.descent,\n vertical: font.vertical,\n };\n }\n textContentItem.fontName = loadedName;\n\n const trm = (textContentItem.transform = getCurrentTextTransform());\n if (!font.vertical) {\n textContentItem.width = textContentItem.totalWidth = 0;\n textContentItem.height = textContentItem.totalHeight = Math.hypot(\n trm[2],\n trm[3]\n );\n textContentItem.vertical = false;\n } else {\n textContentItem.width = textContentItem.totalWidth = Math.hypot(\n trm[0],\n trm[1]\n );\n textContentItem.height = textContentItem.totalHeight = 0;\n textContentItem.vertical = true;\n }\n\n const scaleLineX = Math.hypot(\n textState.textLineMatrix[0],\n textState.textLineMatrix[1]\n );\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n\n textContentItem.trackingSpaceMin =\n textState.fontSize * TRACKING_SPACE_FACTOR;\n textContentItem.negativeSpaceMax =\n textState.fontSize * NEGATIVE_SPACE_FACTOR;\n textContentItem.spaceInFlowMin =\n textState.fontSize * SPACE_IN_FLOW_MIN_FACTOR;\n textContentItem.spaceInFlowMax =\n textState.fontSize * SPACE_IN_FLOW_MAX_FACTOR;\n\n textContentItem.hasEOL = false;\n\n textContentItem.initialized = true;\n return textContentItem;\n }\n\n function updateAdvanceScale() {\n if (!textContentItem.initialized) {\n return;\n }\n\n const scaleLineX = Math.hypot(\n textState.textLineMatrix[0],\n textState.textLineMatrix[1]\n );\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n const scaleFactor = scaleCtmX * scaleLineX;\n if (scaleFactor === textContentItem.textAdvanceScale) {\n return;\n }\n\n if (!textContentItem.vertical) {\n textContentItem.totalWidth +=\n textContentItem.width * textContentItem.textAdvanceScale;\n textContentItem.width = 0;\n } else {\n textContentItem.totalHeight +=\n textContentItem.height * textContentItem.textAdvanceScale;\n textContentItem.height = 0;\n }\n\n textContentItem.textAdvanceScale = scaleFactor;\n }\n\n function replaceWhitespace(str) {\n // Replaces all whitespaces with standard spaces (0x20), to avoid\n // alignment issues between the textLayer and the canvas if the text\n // contains e.g. tabs (fixes issue6612.pdf).\n const ii = str.length;\n let i = 0,\n code;\n while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {\n i++;\n }\n return i < ii ? str.replace(WhitespaceRegexp, \" \") : str;\n }\n\n function runBidiTransform(textChunk) {\n const text = textChunk.str.join(\"\");\n const bidiResult = bidi(text, -1, textChunk.vertical);\n const str = normalizeWhitespace\n ? replaceWhitespace(bidiResult.str)\n : bidiResult.str;\n return {\n str,\n dir: bidiResult.dir,\n width: textChunk.totalWidth,\n height: textChunk.totalHeight,\n transform: textChunk.transform,\n fontName: textChunk.fontName,\n hasEOL: textChunk.hasEOL,\n };\n }\n\n function handleSetFont(fontName, fontRef) {\n return self\n .loadFont(fontName, fontRef, resources)\n .then(function (translated) {\n if (!translated.font.isType3Font) {\n return translated;\n }\n return translated\n .loadType3Data(self, resources, task)\n .catch(function () {\n // Ignore Type3-parsing errors, since we only use `loadType3Data`\n // here to ensure that we'll always obtain a useful /FontBBox.\n })\n .then(function () {\n return translated;\n });\n })\n .then(function (translated) {\n textState.font = translated.font;\n textState.fontMatrix =\n translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n });\n }\n\n function compareWithLastPosition() {\n if (\n !combineTextItems ||\n !textState.font ||\n !textContentItem.prevTransform\n ) {\n return;\n }\n\n const currentTransform = getCurrentTextTransform();\n let posX = currentTransform[4];\n let posY = currentTransform[5];\n let lastPosX = textContentItem.prevTransform[4];\n let lastPosY = textContentItem.prevTransform[5];\n\n if (lastPosX === posX && lastPosY === posY) {\n return;\n }\n\n let rotate = 0;\n // Take into account the rotation is the current transform.\n // Only rotations with an angle of 0, 90, 180 or 270 are considered.\n if (\n currentTransform[0] &&\n currentTransform[1] === 0 &&\n currentTransform[2] === 0\n ) {\n rotate = currentTransform[0] > 0 ? 0 : 180;\n } else if (\n currentTransform[1] &&\n currentTransform[0] === 0 &&\n currentTransform[3] === 0\n ) {\n rotate += currentTransform[1] > 0 ? 90 : 270;\n }\n\n if (rotate !== 0) {\n switch (rotate) {\n case 90:\n [posX, posY] = [posY, posX];\n [lastPosX, lastPosY] = [lastPosY, lastPosX];\n break;\n case 180:\n [posX, posY, lastPosX, lastPosY] = [\n -posX,\n -posY,\n -lastPosX,\n -lastPosY,\n ];\n break;\n case 270:\n [posX, posY] = [-posY, -posX];\n [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\n break;\n }\n }\n\n if (textState.font.vertical) {\n const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;\n const advanceX = posX - lastPosX;\n if (advanceY < textContentItem.negativeSpaceMax) {\n if (\n Math.abs(advanceX) >\n 0.5 * textContentItem.width /* not the same column */\n ) {\n appendEOL();\n return;\n }\n\n flushTextContentItem();\n return;\n }\n\n if (Math.abs(advanceX) > textContentItem.height) {\n appendEOL();\n return;\n }\n if (advanceY <= textContentItem.trackingSpaceMin) {\n textContentItem.height += advanceY;\n } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform)) {\n if (textContentItem.str.length === 0) {\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width: 0,\n height: advanceY,\n transform: textContentItem.prevTransform,\n fontName: textContentItem.fontName,\n hasEOL: false,\n });\n } else {\n textContentItem.height += advanceY;\n }\n }\n\n return;\n }\n\n const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;\n const advanceY = posY - lastPosY;\n if (advanceX < textContentItem.negativeSpaceMax) {\n if (\n Math.abs(advanceY) >\n 0.5 * textContentItem.height /* not the same line */\n ) {\n appendEOL();\n return;\n }\n flushTextContentItem();\n return;\n }\n\n if (Math.abs(advanceY) > textContentItem.height) {\n appendEOL();\n return;\n }\n\n if (advanceX <= textContentItem.trackingSpaceMin) {\n textContentItem.width += advanceX;\n } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform)) {\n if (textContentItem.str.length === 0) {\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width: advanceX,\n height: 0,\n transform: textContentItem.prevTransform,\n fontName: textContentItem.fontName,\n hasEOL: false,\n });\n } else {\n textContentItem.width += advanceX;\n }\n }\n }\n\n function buildTextContentItem({ chars, extraSpacing }) {\n const font = textState.font;\n if (!chars) {\n // Just move according to the space we have.\n const charSpacing = textState.charSpacing + extraSpacing;\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n\n return;\n }\n\n const glyphs = font.charsToGlyphs(chars);\n const scale = textState.fontMatrix[0] * textState.fontSize;\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const glyph = glyphs[i];\n let charSpacing =\n textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);\n\n let glyphWidth = glyph.width;\n if (font.vertical) {\n glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\n }\n let scaledDim = glyphWidth * scale;\n\n let glyphUnicode = glyph.unicode;\n if (\n glyphUnicode === \" \" &&\n (i === 0 ||\n i + 1 === ii ||\n glyphs[i - 1].unicode === \" \" ||\n glyphs[i + 1].unicode === \" \" ||\n extraSpacing)\n ) {\n // Don't push a \" \" in the textContentItem\n // (except when it's between two non-spaces chars),\n // it will be done (if required) in next call to\n // compareWithLastPosition.\n // This way we can merge real spaces and spaces due to cursor moves.\n if (!font.vertical) {\n charSpacing += scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n charSpacing += -scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(0, -charSpacing);\n }\n continue;\n }\n\n compareWithLastPosition();\n\n // Must be called after compareWithLastPosition because\n // the textContentItem could have been flushed.\n const textChunk = ensureTextContentItem();\n if (DiacriticRegExp.test(glyph.unicode)) {\n scaledDim = 0;\n }\n\n if (!font.vertical) {\n scaledDim *= textState.textHScale;\n textState.translateTextMatrix(scaledDim, 0);\n textChunk.width += scaledDim;\n } else {\n textState.translateTextMatrix(0, scaledDim);\n scaledDim = Math.abs(scaledDim);\n textChunk.height += scaledDim;\n }\n\n if (scaledDim) {\n // Save the position of the last visible character.\n textChunk.prevTransform = getCurrentTextTransform();\n }\n\n glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;\n glyphUnicode = reverseIfRtl(glyphUnicode);\n textChunk.str.push(glyphUnicode);\n\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n }\n }\n\n function appendEOL() {\n if (textContentItem.initialized) {\n textContentItem.hasEOL = true;\n flushTextContentItem();\n } else {\n textContent.items.push({\n str: \"\",\n dir: \"ltr\",\n width: 0,\n height: 0,\n transform: getCurrentTextTransform(),\n fontName: textState.font.loadedName,\n hasEOL: true,\n });\n }\n }\n\n function addFakeSpaces(width, transf) {\n if (\n textContentItem.spaceInFlowMin <= width &&\n width <= textContentItem.spaceInFlowMax\n ) {\n if (textContentItem.initialized) {\n textContentItem.str.push(\" \");\n }\n return false;\n }\n\n const fontName = textContentItem.fontName;\n\n let height = 0;\n if (textContentItem.vertical) {\n height = width;\n width = 0;\n }\n\n flushTextContentItem();\n textContent.items.push({\n str: \" \",\n // TODO: check if using the orientation from last chunk is\n // better or not.\n dir: \"ltr\",\n width,\n height,\n transform: transf || getCurrentTextTransform(),\n fontName,\n hasEOL: false,\n });\n\n return true;\n }\n\n function flushTextContentItem() {\n if (!textContentItem.initialized || !textContentItem.str) {\n return;\n }\n\n // Do final text scaling.\n if (!textContentItem.vertical) {\n textContentItem.totalWidth +=\n textContentItem.width * textContentItem.textAdvanceScale;\n } else {\n textContentItem.totalHeight +=\n textContentItem.height * textContentItem.textAdvanceScale;\n }\n\n textContent.items.push(runBidiTransform(textContentItem));\n textContentItem.initialized = false;\n textContentItem.str.length = 0;\n }\n\n function enqueueChunk(batch = false) {\n const length = textContent.items.length;\n if (length === 0) {\n return;\n }\n if (batch && length < TEXT_CHUNK_BATCH_SIZE) {\n return;\n }\n sink.enqueue(textContent, length);\n textContent.items = [];\n textContent.styles = Object.create(null);\n }\n\n const timeSlotManager = new TimeSlotManager();\n\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n enqueueChunk(/* batch = */ true);\n Promise.all([promise, sink.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n\n const operation = {};\n let stop,\n args = [];\n while (!(stop = timeSlotManager.check())) {\n // The arguments parsed by read() are not used beyond this loop, so\n // we can reuse the same array on every iteration, thus avoiding\n // unnecessary allocations.\n args.length = 0;\n operation.args = args;\n if (!preprocessor.read(operation)) {\n break;\n }\n textState = stateManager.state;\n const fn = operation.fn;\n args = operation.args;\n\n switch (fn | 0) {\n case OPS.setFont:\n // Optimization to ignore multiple identical Tf commands.\n var fontNameArg = args[0].name,\n fontSizeArg = args[1];\n if (\n textState.font &&\n fontNameArg === textState.fontName &&\n fontSizeArg === textState.fontSize\n ) {\n break;\n }\n\n flushTextContentItem();\n textState.fontName = fontNameArg;\n textState.fontSize = fontSizeArg;\n next(handleSetFont(fontNameArg, null));\n return;\n case OPS.setTextRise:\n textState.textRise = args[0];\n break;\n case OPS.setHScale:\n textState.textHScale = args[0] / 100;\n break;\n case OPS.setLeading:\n textState.leading = args[0];\n break;\n case OPS.moveText:\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.setLeadingMoveText:\n textState.leading = -args[1];\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.nextLine:\n textState.carriageReturn();\n break;\n case OPS.setTextMatrix:\n textState.setTextMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n textState.setTextLineMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n updateAdvanceScale();\n break;\n case OPS.setCharSpacing:\n textState.charSpacing = args[0];\n break;\n case OPS.setWordSpacing:\n textState.wordSpacing = args[0];\n break;\n case OPS.beginText:\n textState.textMatrix = IDENTITY_MATRIX.slice();\n textState.textLineMatrix = IDENTITY_MATRIX.slice();\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n const spaceFactor =\n ((textState.font.vertical ? 1 : -1) * textState.fontSize) / 1000;\n const elements = args[0];\n for (let i = 0, ii = elements.length; i < ii - 1; i++) {\n const item = elements[i];\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n } else if (typeof item === \"number\" && item !== 0) {\n // PDF Specification 5.3.2 states:\n // The number is expressed in thousandths of a unit of text\n // space.\n // This amount is subtracted from the current horizontal or\n // vertical coordinate, depending on the writing mode.\n // In the default coordinate system, a positive adjustment\n // has the effect of moving the next glyph painted either to\n // the left or down by the given amount.\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: item * spaceFactor,\n });\n }\n }\n\n const item = elements[elements.length - 1];\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n }\n\n if (showSpacedTextBuffer.length > 0) {\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: 0,\n });\n }\n break;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0,\n });\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0,\n });\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.wordSpacing = args[0];\n textState.charSpacing = args[1];\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[2],\n extraSpacing: 0,\n });\n break;\n case OPS.paintXObject:\n flushTextContentItem();\n if (!xobjs) {\n xobjs = resources.get(\"XObject\") || Dict.empty;\n }\n\n var isValidName = args[0] instanceof Name;\n var name = args[0].name;\n\n if (isValidName && emptyXObjectCache.getByName(name)) {\n break;\n }\n\n next(\n new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n if (emptyXObjectCache.getByRef(xobj)) {\n resolveXObject();\n return;\n }\n\n const globalImage = self.globalImageCache.getData(\n xobj,\n self.pageIndex\n );\n if (globalImage) {\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!isStream(xobj)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n\n const type = xobj.dict.get(\"Subtype\");\n if (!isName(type)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name !== \"Form\") {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n\n resolveXObject();\n return;\n }\n\n // Use a new `StateManager` to prevent incorrect positioning\n // of textItems *after* the Form XObject, since errors in the\n // data can otherwise prevent `restore` operators from\n // executing.\n // NOTE: Only an issue when `options.ignoreErrors === true`.\n const currentState = stateManager.state.clone();\n const xObjStateManager = new StateManager(currentState);\n\n const matrix = xobj.dict.getArray(\"Matrix\");\n if (Array.isArray(matrix) && matrix.length === 6) {\n xObjStateManager.transform(matrix);\n }\n\n // Enqueue the `textContent` chunk before parsing the /Form\n // XObject.\n enqueueChunk();\n const sinkWrapper = {\n enqueueInvoked: false,\n\n enqueue(chunk, size) {\n this.enqueueInvoked = true;\n sink.enqueue(chunk, size);\n },\n\n get desiredSize() {\n return sink.desiredSize;\n },\n\n get ready() {\n return sink.ready;\n },\n };\n\n self\n .getTextContent({\n stream: xobj,\n task,\n resources: xobj.dict.get(\"Resources\") || resources,\n stateManager: xObjStateManager,\n normalizeWhitespace,\n combineTextItems,\n includeMarkedContent,\n sink: sinkWrapper,\n seenStyles,\n })\n .then(function () {\n if (!sinkWrapper.enqueueInvoked) {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n }\n resolveXObject();\n }, rejectXObject);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the XObject -- allow text-extraction to\n // continue.\n warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName && emptyGStateCache.getByName(name)) {\n break;\n }\n\n next(\n new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n\n const gState = extGState.get(name);\n // TODO: Attempt to lookup cached GStates by reference as well,\n // if and only if there are PDF documents where doing so\n // would significantly improve performance.\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n\n const gStateFont = gState.get(\"Font\");\n if (!gStateFont) {\n emptyGStateCache.set(name, gState.objId, true);\n\n resolveGState();\n return;\n }\n flushTextContentItem();\n\n textState.fontName = null;\n textState.fontSize = gStateFont[1];\n handleSetFont(null, gStateFont[0]).then(\n resolveGState,\n rejectGState\n );\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the ExtGState -- allow text-extraction to\n // continue.\n warn(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.beginMarkedContent:\n if (includeMarkedContent) {\n textContent.items.push({\n type: \"beginMarkedContent\",\n tag: isName(args[0]) ? args[0].name : null,\n });\n }\n break;\n case OPS.beginMarkedContentProps:\n if (includeMarkedContent) {\n flushTextContentItem();\n let mcid = null;\n if (isDict(args[1])) {\n mcid = args[1].get(\"MCID\");\n }\n textContent.items.push({\n type: \"beginMarkedContentProps\",\n id: Number.isInteger(mcid)\n ? `${self.idFactory.getPageObjId()}_mcid${mcid}`\n : null,\n tag: isName(args[0]) ? args[0].name : null,\n });\n }\n break;\n case OPS.endMarkedContent:\n if (includeMarkedContent) {\n flushTextContentItem();\n textContent.items.push({\n type: \"endMarkedContent\",\n });\n }\n break;\n } // switch\n if (textContent.items.length >= sink.desiredSize) {\n // Wait for ready, if we reach highWaterMark.\n stop = true;\n break;\n }\n } // while\n if (stop) {\n next(deferred);\n return;\n }\n flushTextContentItem();\n enqueueChunk();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the TextContent -- allow text-extraction to continue.\n warn(\n `getTextContent - ignoring errors during \"${task.name}\" ` +\n `task: \"${reason}\".`\n );\n\n flushTextContentItem();\n enqueueChunk();\n return;\n }\n throw reason;\n });\n }\n\n extractDataStructures(dict, baseDict, properties) {\n const xref = this.xref;\n let cidToGidBytes;\n // 9.10.2\n const toUnicodePromise = this.readToUnicode(\n properties.toUnicode || dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\")\n );\n\n if (properties.composite) {\n // CIDSystemInfo helps to match CID to glyphs\n const cidSystemInfo = dict.get(\"CIDSystemInfo\");\n if (isDict(cidSystemInfo)) {\n properties.cidSystemInfo = {\n registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n supplement: cidSystemInfo.get(\"Supplement\"),\n };\n }\n\n const cidToGidMap = dict.get(\"CIDToGIDMap\");\n if (cidToGidMap instanceof BaseStream) {\n cidToGidBytes = cidToGidMap.getBytes();\n }\n }\n\n // Based on 9.6.6 of the spec the encoding can come from multiple places\n // and depends on the font type. The base encoding and differences are\n // read here, but the encoding that is actually used is chosen during\n // glyph mapping in the font.\n // TODO: Loading the built in encoding in the font would allow the\n // differences to be merged in here not require us to hold on to it.\n const differences = [];\n let baseEncodingName = null;\n let encoding;\n if (dict.has(\"Encoding\")) {\n encoding = dict.get(\"Encoding\");\n if (isDict(encoding)) {\n baseEncodingName = encoding.get(\"BaseEncoding\");\n baseEncodingName = isName(baseEncodingName)\n ? baseEncodingName.name\n : null;\n // Load the differences between the base and original\n if (encoding.has(\"Differences\")) {\n const diffEncoding = encoding.get(\"Differences\");\n let index = 0;\n for (let j = 0, jj = diffEncoding.length; j < jj; j++) {\n const data = xref.fetchIfRef(diffEncoding[j]);\n if (isNum(data)) {\n index = data;\n } else if (isName(data)) {\n differences[index++] = data.name;\n } else {\n throw new FormatError(\n `Invalid entry in 'Differences' array: ${data}`\n );\n }\n }\n }\n } else if (isName(encoding)) {\n baseEncodingName = encoding.name;\n } else {\n throw new FormatError(\"Encoding is not a Name nor a Dict\");\n }\n // According to table 114 if the encoding is a named encoding it must be\n // one of these predefined encodings.\n if (\n baseEncodingName !== \"MacRomanEncoding\" &&\n baseEncodingName !== \"MacExpertEncoding\" &&\n baseEncodingName !== \"WinAnsiEncoding\"\n ) {\n baseEncodingName = null;\n }\n }\n\n if (baseEncodingName) {\n properties.defaultEncoding = getEncoding(baseEncodingName);\n } else {\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n // According to \"Table 114\" in section \"9.6.6.1 General\" (under\n // \"9.6.6 Character Encoding\") of the PDF specification, a Nonsymbolic\n // font should use the `StandardEncoding` if no encoding is specified.\n encoding = StandardEncoding;\n if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n encoding = WinAnsiEncoding;\n }\n // The Symbolic attribute can be misused for regular fonts\n // Heuristic: we have to check if the font is a standard one also\n if (isSymbolicFont) {\n encoding = MacRomanEncoding;\n if (!properties.file || properties.isInternalFont) {\n if (/Symbol/i.test(properties.name)) {\n encoding = SymbolSetEncoding;\n } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n encoding = ZapfDingbatsEncoding;\n }\n }\n }\n properties.defaultEncoding = encoding;\n }\n\n properties.differences = differences;\n properties.baseEncodingName = baseEncodingName;\n properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n properties.dict = dict;\n return toUnicodePromise\n .then(readToUnicode => {\n properties.toUnicode = readToUnicode;\n return this.buildToUnicode(properties);\n })\n .then(builtToUnicode => {\n properties.toUnicode = builtToUnicode;\n if (cidToGidBytes) {\n properties.cidToGidMap = this.readCidToGidMap(\n cidToGidBytes,\n builtToUnicode\n );\n }\n return properties;\n });\n }\n\n /**\n * @returns {Array}\n * @private\n */\n _simpleFontToUnicode(properties, forceGlyphs = false) {\n assert(!properties.composite, \"Must be a simple font.\");\n\n const toUnicode = [];\n const encoding = properties.defaultEncoding.slice();\n const baseEncodingName = properties.baseEncodingName;\n // Merge in the differences array.\n const differences = properties.differences;\n for (const charcode in differences) {\n const glyphName = differences[charcode];\n if (glyphName === \".notdef\") {\n // Skip .notdef to prevent rendering errors, e.g. boxes appearing\n // where there should be spaces (fixes issue5256.pdf).\n continue;\n }\n encoding[charcode] = glyphName;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (const charcode in encoding) {\n // a) Map the character code to a character name.\n let glyphName = encoding[charcode];\n // b) Look up the character name in the Adobe Glyph List (see the\n // Bibliography) to obtain the corresponding Unicode value.\n if (glyphName === \"\") {\n continue;\n } else if (glyphsUnicodeMap[glyphName] === undefined) {\n // (undocumented) c) Few heuristics to recognize unknown glyphs\n // NOTE: Adobe Reader does not do this step, but OSX Preview does\n let code = 0;\n switch (glyphName[0]) {\n case \"G\": // Gxx glyph\n if (glyphName.length === 3) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"g\": // g00xx glyph\n if (glyphName.length === 5) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"C\": // Cdd{d} glyph\n case \"c\": // cdd{d} glyph\n if (glyphName.length >= 3 && glyphName.length <= 4) {\n const codeStr = glyphName.substring(1);\n\n if (forceGlyphs) {\n code = parseInt(codeStr, 16);\n break;\n }\n // Normally the Cdd{d}/cdd{d} glyphName format will contain\n // regular, i.e. base 10, charCodes (see issue4550.pdf)...\n code = +codeStr;\n\n // ... however some PDF generators violate that assumption by\n // containing glyph, i.e. base 16, codes instead.\n // In that case we need to re-parse the *entire* encoding to\n // prevent broken text-selection (fixes issue9655_reduced.pdf).\n if (\n Number.isNaN(code) &&\n Number.isInteger(parseInt(codeStr, 16))\n ) {\n return this._simpleFontToUnicode(\n properties,\n /* forceGlyphs */ true\n );\n }\n }\n break;\n default:\n // 'uniXXXX'/'uXXXX{XX}' glyphs\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n code = unicode;\n }\n }\n if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n // If `baseEncodingName` is one the predefined encodings, and `code`\n // equals `charcode`, using the glyph defined in the baseEncoding\n // seems to yield a better `toUnicode` mapping (fixes issue 5070).\n if (baseEncodingName && code === +charcode) {\n const baseEncoding = getEncoding(baseEncodingName);\n if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n toUnicode[charcode] = String.fromCharCode(\n glyphsUnicodeMap[glyphName]\n );\n continue;\n }\n }\n toUnicode[charcode] = String.fromCodePoint(code);\n }\n continue;\n }\n toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n }\n return toUnicode;\n }\n\n /**\n * Builds a char code to unicode map based on section 9.10 of the spec.\n * @param {Object} properties Font properties object.\n * @returns {Promise} A Promise that is resolved with a\n * {ToUnicodeMap|IdentityToUnicodeMap} object.\n */\n async buildToUnicode(properties) {\n properties.hasIncludedToUnicodeMap =\n !!properties.toUnicode && properties.toUnicode.length > 0;\n\n // Section 9.10.2 Mapping Character Codes to Unicode Values\n if (properties.hasIncludedToUnicodeMap) {\n // Some fonts contain incomplete ToUnicode data, causing issues with\n // text-extraction. For simple fonts, containing encoding information,\n // use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\n if (!properties.composite && properties.hasEncoding) {\n properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\n }\n return properties.toUnicode;\n }\n\n // According to the spec if the font is a simple font we should only map\n // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\n // the differences array only contains adobe standard or symbol set names,\n // in pratice it seems better to always try to create a toUnicode map\n // based of the default encoding.\n if (!properties.composite /* is simple font */) {\n return new ToUnicodeMap(this._simpleFontToUnicode(properties));\n }\n\n // If the font is a composite font that uses one of the predefined CMaps\n // listed in Table 118 (except Identity–H and Identity–V) or whose\n // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\n // Adobe-Korea1 character collection:\n if (\n properties.composite &&\n ((properties.cMap.builtInCMap &&\n !(properties.cMap instanceof IdentityCMap)) ||\n (properties.cidSystemInfo.registry === \"Adobe\" &&\n (properties.cidSystemInfo.ordering === \"GB1\" ||\n properties.cidSystemInfo.ordering === \"CNS1\" ||\n properties.cidSystemInfo.ordering === \"Japan1\" ||\n properties.cidSystemInfo.ordering === \"Korea1\")))\n ) {\n // Then:\n // a) Map the character code to a character identifier (CID) according\n // to the font’s CMap.\n // b) Obtain the registry and ordering of the character collection used\n // by the font’s CMap (for example, Adobe and Japan1) from its\n // CIDSystemInfo dictionary.\n const { registry, ordering } = properties.cidSystemInfo;\n // c) Construct a second CMap name by concatenating the registry and\n // ordering obtained in step (b) in the format registry–ordering–UCS2\n // (for example, Adobe–Japan1–UCS2).\n const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`);\n // d) Obtain the CMap with the name constructed in step (c) (available\n // from the ASN Web site; see the Bibliography).\n const ucs2CMap = await CMapFactory.create({\n encoding: ucs2CMapName,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n });\n const toUnicode = [];\n properties.cMap.forEach(function (charcode, cid) {\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n // e) Map the CID obtained in step (a) according to the CMap\n // obtained in step (d), producing a Unicode value.\n const ucs2 = ucs2CMap.lookup(cid);\n if (ucs2) {\n toUnicode[charcode] = String.fromCharCode(\n (ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)\n );\n }\n });\n return new ToUnicodeMap(toUnicode);\n }\n\n // The viewer's choice, just use an identity map.\n return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\n }\n\n readToUnicode(cmapObj) {\n if (!cmapObj) {\n return Promise.resolve(null);\n }\n if (isName(cmapObj)) {\n return CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n }).then(function (cmap) {\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n return new ToUnicodeMap(cmap.getMap());\n });\n } else if (isStream(cmapObj)) {\n return CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n }).then(\n function (cmap) {\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n const map = new Array(cmap.length);\n // Convert UTF-16BE\n // NOTE: cmap can be a sparse array, so use forEach instead of\n // `for(;;)` to iterate over all keys.\n cmap.forEach(function (charCode, token) {\n // Some cmaps contain *only* CID characters (fixes issue9367.pdf).\n if (typeof token === \"number\") {\n map[charCode] = String.fromCodePoint(token);\n return;\n }\n const str = [];\n for (let k = 0; k < token.length; k += 2) {\n const w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n if ((w1 & 0xf800) !== 0xd800) {\n // w1 < 0xD800 || w1 > 0xDFFF\n str.push(w1);\n continue;\n }\n k += 2;\n const w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n }\n map[charCode] = String.fromCodePoint.apply(String, str);\n });\n return new ToUnicodeMap(map);\n },\n reason => {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n // Error in the ToUnicode data -- sending unsupported feature\n // notification and allow font parsing to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontToUnicode,\n });\n warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n return null;\n }\n throw reason;\n }\n );\n }\n return Promise.resolve(null);\n }\n\n readCidToGidMap(glyphsData, toUnicode) {\n // Extract the encoding from the CIDToGIDMap\n\n // Set encoding 0 to later verify the font has an encoding\n const result = [];\n for (let j = 0, jj = glyphsData.length; j < jj; j++) {\n const glyphID = (glyphsData[j++] << 8) | glyphsData[j];\n const code = j >> 1;\n if (glyphID === 0 && !toUnicode.has(code)) {\n continue;\n }\n result[code] = glyphID;\n }\n return result;\n }\n\n extractWidths(dict, descriptor, properties) {\n const xref = this.xref;\n let glyphsWidths = [];\n let defaultWidth = 0;\n const glyphsVMetrics = [];\n let defaultVMetrics;\n let i, ii, j, jj, start, code, widths;\n if (properties.composite) {\n defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n\n widths = dict.get(\"W\");\n if (widths) {\n for (i = 0, ii = widths.length; i < ii; i++) {\n start = xref.fetchIfRef(widths[i++]);\n code = xref.fetchIfRef(widths[i]);\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n }\n } else {\n const width = xref.fetchIfRef(widths[++i]);\n for (j = start; j <= code; j++) {\n glyphsWidths[j] = width;\n }\n }\n }\n }\n\n if (properties.vertical) {\n let vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n vmetrics = dict.get(\"W2\");\n if (vmetrics) {\n for (i = 0, ii = vmetrics.length; i < ii; i++) {\n start = xref.fetchIfRef(vmetrics[i++]);\n code = xref.fetchIfRef(vmetrics[i]);\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsVMetrics[start++] = [\n xref.fetchIfRef(code[j++]),\n xref.fetchIfRef(code[j++]),\n xref.fetchIfRef(code[j]),\n ];\n }\n } else {\n const vmetric = [\n xref.fetchIfRef(vmetrics[++i]),\n xref.fetchIfRef(vmetrics[++i]),\n xref.fetchIfRef(vmetrics[++i]),\n ];\n for (j = start; j <= code; j++) {\n glyphsVMetrics[j] = vmetric;\n }\n }\n }\n }\n }\n } else {\n const firstChar = properties.firstChar;\n widths = dict.get(\"Widths\");\n if (widths) {\n j = firstChar;\n for (i = 0, ii = widths.length; i < ii; i++) {\n glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n }\n defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n } else {\n // Trying get the BaseFont metrics (see comment above).\n const baseFontName = dict.get(\"BaseFont\");\n if (isName(baseFontName)) {\n const metrics = this.getBaseFontMetrics(baseFontName.name);\n\n glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n defaultWidth = metrics.defaultWidth;\n }\n }\n }\n\n // Heuristic: detection of monospace font by checking all non-zero widths\n let isMonospace = true;\n let firstWidth = defaultWidth;\n for (const glyph in glyphsWidths) {\n const glyphWidth = glyphsWidths[glyph];\n if (!glyphWidth) {\n continue;\n }\n if (!firstWidth) {\n firstWidth = glyphWidth;\n continue;\n }\n if (firstWidth !== glyphWidth) {\n isMonospace = false;\n break;\n }\n }\n if (isMonospace) {\n properties.flags |= FontFlags.FixedPitch;\n }\n\n properties.defaultWidth = defaultWidth;\n properties.widths = glyphsWidths;\n properties.defaultVMetrics = defaultVMetrics;\n properties.vmetrics = glyphsVMetrics;\n }\n\n isSerifFont(baseFontName) {\n // Simulating descriptor flags attribute\n const fontNameWoStyle = baseFontName.split(\"-\")[0];\n return (\n fontNameWoStyle in getSerifFonts() ||\n fontNameWoStyle.search(/serif/gi) !== -1\n );\n }\n\n getBaseFontMetrics(name) {\n let defaultWidth = 0;\n let widths = Object.create(null);\n let monospace = false;\n const stdFontMap = getStdFontMap();\n let lookupName = stdFontMap[name] || name;\n const Metrics = getMetrics();\n\n if (!(lookupName in Metrics)) {\n // Use default fonts for looking up font metrics if the passed\n // font is not a base font\n if (this.isSerifFont(name)) {\n lookupName = \"Times-Roman\";\n } else {\n lookupName = \"Helvetica\";\n }\n }\n const glyphWidths = Metrics[lookupName];\n\n if (isNum(glyphWidths)) {\n defaultWidth = glyphWidths;\n monospace = true;\n } else {\n widths = glyphWidths(); // expand lazy widths array\n }\n\n return {\n defaultWidth,\n monospace,\n widths,\n };\n }\n\n buildCharCodeToWidth(widthsByGlyphName, properties) {\n const widths = Object.create(null);\n const differences = properties.differences;\n const encoding = properties.defaultEncoding;\n for (let charCode = 0; charCode < 256; charCode++) {\n if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n widths[charCode] = widthsByGlyphName[differences[charCode]];\n continue;\n }\n if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n widths[charCode] = widthsByGlyphName[encoding[charCode]];\n continue;\n }\n }\n return widths;\n }\n\n preEvaluateFont(dict) {\n const baseDict = dict;\n let type = dict.get(\"Subtype\");\n if (!isName(type)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n\n let composite = false;\n let hash, toUnicode;\n if (type.name === \"Type0\") {\n // If font is a composite\n // - get the descendant font\n // - set the type according to the descendant font\n // - get the FontDescriptor from the descendant font\n const df = dict.get(\"DescendantFonts\");\n if (!df) {\n throw new FormatError(\"Descendant fonts are not specified\");\n }\n dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n\n if (!(dict instanceof Dict)) {\n throw new FormatError(\"Descendant font is not a dictionary.\");\n }\n type = dict.get(\"Subtype\");\n if (!isName(type)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n composite = true;\n }\n\n const firstChar = dict.get(\"FirstChar\") || 0,\n lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n const descriptor = dict.get(\"FontDescriptor\");\n if (descriptor) {\n hash = new MurmurHash3_64();\n\n const encoding = baseDict.getRaw(\"Encoding\");\n if (isName(encoding)) {\n hash.update(encoding.name);\n } else if (isRef(encoding)) {\n hash.update(encoding.toString());\n } else if (isDict(encoding)) {\n for (const entry of encoding.getRawValues()) {\n if (isName(entry)) {\n hash.update(entry.name);\n } else if (isRef(entry)) {\n hash.update(entry.toString());\n } else if (Array.isArray(entry)) {\n // 'Differences' array (fixes bug1157493.pdf).\n const diffLength = entry.length,\n diffBuf = new Array(diffLength);\n\n for (let j = 0; j < diffLength; j++) {\n const diffEntry = entry[j];\n if (isName(diffEntry)) {\n diffBuf[j] = diffEntry.name;\n } else if (isNum(diffEntry) || isRef(diffEntry)) {\n diffBuf[j] = diffEntry.toString();\n }\n }\n hash.update(diffBuf.join());\n }\n }\n }\n\n hash.update(`${firstChar}-${lastChar}`); // Fixes issue10665_reduced.pdf\n\n toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n if (isStream(toUnicode)) {\n const stream = toUnicode.str || toUnicode;\n const uint8array = stream.buffer\n ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength)\n : new Uint8Array(\n stream.bytes.buffer,\n stream.start,\n stream.end - stream.start\n );\n hash.update(uint8array);\n } else if (isName(toUnicode)) {\n hash.update(toUnicode.name);\n }\n\n const widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n if (Array.isArray(widths)) {\n const widthsBuf = [];\n for (const entry of widths) {\n if (isNum(entry) || isRef(entry)) {\n widthsBuf.push(entry.toString());\n }\n }\n hash.update(widthsBuf.join());\n }\n\n if (composite) {\n hash.update(\"compositeFont\");\n\n const compositeWidths = dict.get(\"W\") || baseDict.get(\"W\");\n if (Array.isArray(compositeWidths)) {\n const widthsBuf = [];\n for (const entry of compositeWidths) {\n if (isNum(entry) || isRef(entry)) {\n widthsBuf.push(entry.toString());\n } else if (Array.isArray(entry)) {\n const subWidthsBuf = [];\n for (const element of entry) {\n if (isNum(element) || isRef(element)) {\n subWidthsBuf.push(element.toString());\n }\n }\n widthsBuf.push(`[${subWidthsBuf.join()}]`);\n }\n }\n hash.update(widthsBuf.join());\n }\n\n const cidToGidMap =\n dict.getRaw(\"CIDToGIDMap\") || baseDict.getRaw(\"CIDToGIDMap\");\n if (cidToGidMap instanceof Name) {\n hash.update(cidToGidMap.name);\n } else if (cidToGidMap instanceof Ref) {\n hash.update(cidToGidMap.toString());\n } else if (cidToGidMap instanceof BaseStream) {\n hash.update(cidToGidMap.peekBytes());\n }\n }\n }\n\n return {\n descriptor,\n dict,\n baseDict,\n composite,\n type: type.name,\n firstChar,\n lastChar,\n toUnicode,\n hash: hash ? hash.hexdigest() : \"\",\n };\n }\n\n async translateFont({\n descriptor,\n dict,\n baseDict,\n composite,\n type,\n firstChar,\n lastChar,\n toUnicode,\n cssFontInfo,\n }) {\n const isType3Font = type === \"Type3\";\n let properties;\n\n if (!descriptor) {\n if (isType3Font) {\n // FontDescriptor is only required for Type3 fonts when the document\n // is a tagged pdf. Create a barbebones one to get by.\n descriptor = new Dict(null);\n descriptor.set(\"FontName\", Name.get(type));\n descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n } else {\n // Before PDF 1.5 if the font was one of the base 14 fonts, having a\n // FontDescriptor was not required.\n // This case is here for compatibility.\n let baseFontName = dict.get(\"BaseFont\");\n if (!isName(baseFontName)) {\n throw new FormatError(\"Base font is not specified\");\n }\n\n // Using base font name as a font name.\n baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n const metrics = this.getBaseFontMetrics(baseFontName);\n\n // Simulating descriptor flags attribute\n const fontNameWoStyle = baseFontName.split(\"-\")[0];\n const flags =\n (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\n (metrics.monospace ? FontFlags.FixedPitch : 0) |\n (getSymbolsFonts()[fontNameWoStyle]\n ? FontFlags.Symbolic\n : FontFlags.Nonsymbolic);\n\n properties = {\n type,\n name: baseFontName,\n loadedName: baseDict.loadedName,\n widths: metrics.widths,\n defaultWidth: metrics.defaultWidth,\n isSimulatedFlags: true,\n flags,\n firstChar,\n lastChar,\n toUnicode,\n xHeight: 0,\n capHeight: 0,\n italicAngle: 0,\n isType3Font,\n };\n const widths = dict.get(\"Widths\");\n\n const standardFontName = getStandardFontName(baseFontName);\n let file = null;\n if (standardFontName) {\n properties.isStandardFont = true;\n file = await this.fetchStandardFontData(standardFontName);\n properties.isInternalFont = !!file;\n }\n return this.extractDataStructures(dict, dict, properties).then(\n newProperties => {\n if (widths) {\n const glyphWidths = [];\n let j = firstChar;\n for (let i = 0, ii = widths.length; i < ii; i++) {\n glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);\n }\n newProperties.widths = glyphWidths;\n } else {\n newProperties.widths = this.buildCharCodeToWidth(\n metrics.widths,\n newProperties\n );\n }\n return new Font(baseFontName, file, newProperties);\n }\n );\n }\n }\n\n // According to the spec if 'FontDescriptor' is declared, 'FirstChar',\n // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\n // to ignore this rule when a variant of a standard font is used.\n // TODO Fill the width array depending on which of the base font this is\n // a variant.\n\n let fontName = descriptor.get(\"FontName\");\n let baseFont = dict.get(\"BaseFont\");\n // Some bad PDFs have a string as the font name.\n if (isString(fontName)) {\n fontName = Name.get(fontName);\n }\n if (isString(baseFont)) {\n baseFont = Name.get(baseFont);\n }\n\n if (!isType3Font) {\n const fontNameStr = fontName && fontName.name;\n const baseFontStr = baseFont && baseFont.name;\n if (fontNameStr !== baseFontStr) {\n info(\n `The FontDescriptor's FontName is \"${fontNameStr}\" but ` +\n `should be the same as the Font's BaseFont \"${baseFontStr}\".`\n );\n // Workaround for cases where e.g. fontNameStr = 'Arial' and\n // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\n if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {\n fontName = baseFont;\n }\n }\n }\n fontName = fontName || baseFont;\n\n if (!isName(fontName)) {\n throw new FormatError(\"invalid font name\");\n }\n\n let fontFile, subtype, length1, length2, length3;\n try {\n fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n } catch (ex) {\n if (!this.options.ignoreErrors) {\n throw ex;\n }\n warn(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n fontFile = new NullStream();\n }\n let isStandardFont = false;\n let isInternalFont = false;\n let glyphScaleFactors = null;\n if (fontFile) {\n if (fontFile.dict) {\n const subtypeEntry = fontFile.dict.get(\"Subtype\");\n if (subtypeEntry instanceof Name) {\n subtype = subtypeEntry.name;\n }\n length1 = fontFile.dict.get(\"Length1\");\n length2 = fontFile.dict.get(\"Length2\");\n length3 = fontFile.dict.get(\"Length3\");\n }\n } else if (cssFontInfo) {\n // We've a missing XFA font.\n const standardFontName = getXfaFontName(fontName.name);\n if (standardFontName) {\n cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\n cssFontInfo.metrics = standardFontName.metrics || null;\n glyphScaleFactors = standardFontName.factors || null;\n fontFile = await this.fetchStandardFontData(standardFontName.name);\n isInternalFont = !!fontFile;\n\n // We're using a substitution font but for example widths (if any)\n // are related to the glyph positions in the font.\n // So we overwrite everything here to be sure that widths are\n // correct.\n baseDict = dict = getXfaFontDict(fontName.name);\n composite = true;\n }\n } else if (!isType3Font) {\n const standardFontName = getStandardFontName(fontName.name);\n if (standardFontName) {\n isStandardFont = true;\n fontFile = await this.fetchStandardFontData(standardFontName);\n isInternalFont = !!fontFile;\n }\n }\n\n properties = {\n type,\n name: fontName.name,\n subtype,\n file: fontFile,\n length1,\n length2,\n length3,\n isStandardFont,\n isInternalFont,\n loadedName: baseDict.loadedName,\n composite,\n fixedPitch: false,\n fontMatrix: dict.getArray(\"FontMatrix\") || FONT_IDENTITY_MATRIX,\n firstChar,\n lastChar,\n toUnicode,\n bbox: descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"),\n ascent: descriptor.get(\"Ascent\"),\n descent: descriptor.get(\"Descent\"),\n xHeight: descriptor.get(\"XHeight\") || 0,\n capHeight: descriptor.get(\"CapHeight\") || 0,\n flags: descriptor.get(\"Flags\"),\n italicAngle: descriptor.get(\"ItalicAngle\") || 0,\n isType3Font,\n cssFontInfo,\n scaleFactors: glyphScaleFactors,\n };\n\n if (composite) {\n const cidEncoding = baseDict.get(\"Encoding\");\n if (isName(cidEncoding)) {\n properties.cidEncoding = cidEncoding.name;\n }\n const cMap = await CMapFactory.create({\n encoding: cidEncoding,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n });\n properties.cMap = cMap;\n properties.vertical = properties.cMap.vertical;\n }\n\n return this.extractDataStructures(dict, baseDict, properties).then(\n newProperties => {\n this.extractWidths(dict, descriptor, newProperties);\n\n return new Font(fontName.name, fontFile, newProperties);\n }\n );\n }\n\n static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\n function buildPath(fontChar) {\n const glyphName = `${font.loadedName}_path_${fontChar}`;\n try {\n if (font.renderer.hasBuiltPath(fontChar)) {\n return;\n }\n handler.send(\"commonobj\", [\n glyphName,\n \"FontPath\",\n font.renderer.getPathJs(fontChar),\n ]);\n } catch (reason) {\n if (evaluatorOptions.ignoreErrors) {\n // Error in the font data -- sending unsupported feature notification\n // and allow glyph path building to continue.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontBuildPath,\n });\n warn(`buildFontPaths - ignoring ${glyphName} glyph: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n }\n\n for (const glyph of glyphs) {\n buildPath(glyph.fontChar);\n\n // If the glyph has an accent we need to build a path for its\n // fontChar too, otherwise CanvasGraphics_paintChar will fail.\n const accent = glyph.accent;\n if (accent && accent.fontChar) {\n buildPath(accent.fontChar);\n }\n }\n }\n\n static get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"PDFJS-FallbackFont\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\n\nclass TranslatedFont {\n constructor({ loadedName, font, dict, evaluatorOptions }) {\n this.loadedName = loadedName;\n this.font = font;\n this.dict = dict;\n this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;\n this.type3Loaded = null;\n this.type3Dependencies = font.isType3Font ? new Set() : null;\n this.sent = false;\n }\n\n send(handler) {\n if (this.sent) {\n return;\n }\n this.sent = true;\n\n handler.send(\"commonobj\", [\n this.loadedName,\n \"Font\",\n this.font.exportData(this._evaluatorOptions.fontExtraProperties),\n ]);\n }\n\n fallback(handler) {\n if (!this.font.data) {\n return;\n }\n // When font loading failed, fall back to the built-in font renderer.\n this.font.disableFontFace = true;\n // An arbitrary number of text rendering operators could have been\n // encountered between the point in time when the 'Font' message was sent\n // to the main-thread, and the point in time when the 'FontFallback'\n // message was received on the worker-thread.\n // To ensure that all 'FontPath's are available on the main-thread, when\n // font loading failed, attempt to resend *all* previously parsed glyphs.\n PartialEvaluator.buildFontPaths(\n this.font,\n /* glyphs = */ this.font.glyphCacheValues,\n handler,\n this._evaluatorOptions\n );\n }\n\n loadType3Data(evaluator, resources, task) {\n if (this.type3Loaded) {\n return this.type3Loaded;\n }\n if (!this.font.isType3Font) {\n throw new Error(\"Must be a Type3 font.\");\n }\n // When parsing Type3 glyphs, always ignore them if there are errors.\n // Compared to the parsing of e.g. an entire page, it doesn't really\n // make sense to only be able to render a Type3 glyph partially.\n const type3Evaluator = evaluator.clone({ ignoreErrors: false });\n type3Evaluator.parsingType3Font = true;\n\n const translatedFont = this.font,\n type3Dependencies = this.type3Dependencies;\n let loadCharProcsPromise = Promise.resolve();\n const charProcs = this.dict.get(\"CharProcs\");\n const fontResources = this.dict.get(\"Resources\") || resources;\n const charProcOperatorList = Object.create(null);\n\n const isEmptyBBox =\n !translatedFont.bbox || isArrayEqual(translatedFont.bbox, [0, 0, 0, 0]);\n\n for (const key of charProcs.getKeys()) {\n loadCharProcsPromise = loadCharProcsPromise.then(() => {\n const glyphStream = charProcs.get(key);\n const operatorList = new OperatorList();\n return type3Evaluator\n .getOperatorList({\n stream: glyphStream,\n task,\n resources: fontResources,\n operatorList,\n })\n .then(() => {\n // According to the PDF specification, section \"9.6.5 Type 3 Fonts\"\n // and \"Table 113\":\n // \"A glyph description that begins with the d1 operator should\n // not execute any operators that set the colour (or other\n // colour-related parameters) in the graphics state;\n // any use of such operators shall be ignored.\"\n if (operatorList.fnArray[0] === OPS.setCharWidthAndBounds) {\n this._removeType3ColorOperators(operatorList, isEmptyBBox);\n }\n charProcOperatorList[key] = operatorList.getIR();\n\n for (const dependency of operatorList.dependencies) {\n type3Dependencies.add(dependency);\n }\n })\n .catch(function (reason) {\n warn(`Type3 font resource \"${key}\" is not available.`);\n const dummyOperatorList = new OperatorList();\n charProcOperatorList[key] = dummyOperatorList.getIR();\n });\n });\n }\n this.type3Loaded = loadCharProcsPromise.then(() => {\n translatedFont.charProcOperatorList = charProcOperatorList;\n if (this._bbox) {\n translatedFont.isCharBBox = true;\n translatedFont.bbox = this._bbox;\n }\n });\n return this.type3Loaded;\n }\n\n /**\n * @private\n */\n _removeType3ColorOperators(operatorList, isEmptyBBox = false) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n operatorList.fnArray[0] === OPS.setCharWidthAndBounds,\n \"Type3 glyph shall start with the d1 operator.\"\n );\n }\n if (isEmptyBBox) {\n if (!this._bbox) {\n this._bbox = [Infinity, Infinity, -Infinity, -Infinity];\n }\n const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2));\n\n this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);\n this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);\n this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);\n this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);\n }\n let i = 1,\n ii = operatorList.length;\n while (i < ii) {\n switch (operatorList.fnArray[i]) {\n case OPS.setStrokeColorSpace:\n case OPS.setFillColorSpace:\n case OPS.setStrokeColor:\n case OPS.setStrokeColorN:\n case OPS.setFillColor:\n case OPS.setFillColorN:\n case OPS.setStrokeGray:\n case OPS.setFillGray:\n case OPS.setStrokeRGBColor:\n case OPS.setFillRGBColor:\n case OPS.setStrokeCMYKColor:\n case OPS.setFillCMYKColor:\n case OPS.shadingFill:\n case OPS.setRenderingIntent:\n operatorList.fnArray.splice(i, 1);\n operatorList.argsArray.splice(i, 1);\n ii--;\n continue;\n\n case OPS.setGState:\n const [gStateObj] = operatorList.argsArray[i];\n let j = 0,\n jj = gStateObj.length;\n while (j < jj) {\n const [gStateKey] = gStateObj[j];\n switch (gStateKey) {\n case \"TR\":\n case \"TR2\":\n case \"HT\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n gStateObj.splice(j, 1);\n jj--;\n continue;\n }\n j++;\n }\n break;\n }\n i++;\n }\n }\n}\n\nclass StateManager {\n constructor(initialState = new EvalState()) {\n this.state = initialState;\n this.stateStack = [];\n }\n\n save() {\n const old = this.state;\n this.stateStack.push(this.state);\n this.state = old.clone();\n }\n\n restore() {\n const prev = this.stateStack.pop();\n if (prev) {\n this.state = prev;\n }\n }\n\n transform(args) {\n this.state.ctm = Util.transform(this.state.ctm, args);\n }\n}\n\nclass TextState {\n constructor() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.fontName = null;\n this.fontSize = 0;\n this.font = null;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.textMatrix = IDENTITY_MATRIX.slice();\n this.textLineMatrix = IDENTITY_MATRIX.slice();\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.leading = 0;\n this.textHScale = 1;\n this.textRise = 0;\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const m = this.textMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n\n setTextLineMatrix(a, b, c, d, e, f) {\n const m = this.textLineMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n\n translateTextMatrix(x, y) {\n const m = this.textMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n\n translateTextLineMatrix(x, y) {\n const m = this.textLineMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n\n carriageReturn() {\n this.translateTextLineMatrix(0, -this.leading);\n this.textMatrix = this.textLineMatrix.slice();\n }\n\n clone() {\n const clone = Object.create(this);\n clone.textMatrix = this.textMatrix.slice();\n clone.textLineMatrix = this.textLineMatrix.slice();\n clone.fontMatrix = this.fontMatrix.slice();\n return clone;\n }\n}\n\nclass EvalState {\n constructor() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.font = null;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.fillColorSpace = ColorSpace.singletons.gray;\n this.strokeColorSpace = ColorSpace.singletons.gray;\n }\n\n clone() {\n return Object.create(this);\n }\n}\n\nclass EvaluatorPreprocessor {\n static get opMap() {\n // Specifies properties for each command\n //\n // If variableArgs === true: [0, `numArgs`] expected\n // If variableArgs === false: exactly `numArgs` expected\n const getOPMap = getLookupTableFactory(function (t) {\n // Graphic state\n t.w = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false };\n t.J = { id: OPS.setLineCap, numArgs: 1, variableArgs: false };\n t.j = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false };\n t.M = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false };\n t.d = { id: OPS.setDash, numArgs: 2, variableArgs: false };\n t.ri = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false };\n t.i = { id: OPS.setFlatness, numArgs: 1, variableArgs: false };\n t.gs = { id: OPS.setGState, numArgs: 1, variableArgs: false };\n t.q = { id: OPS.save, numArgs: 0, variableArgs: false };\n t.Q = { id: OPS.restore, numArgs: 0, variableArgs: false };\n t.cm = { id: OPS.transform, numArgs: 6, variableArgs: false };\n\n // Path\n t.m = { id: OPS.moveTo, numArgs: 2, variableArgs: false };\n t.l = { id: OPS.lineTo, numArgs: 2, variableArgs: false };\n t.c = { id: OPS.curveTo, numArgs: 6, variableArgs: false };\n t.v = { id: OPS.curveTo2, numArgs: 4, variableArgs: false };\n t.y = { id: OPS.curveTo3, numArgs: 4, variableArgs: false };\n t.h = { id: OPS.closePath, numArgs: 0, variableArgs: false };\n t.re = { id: OPS.rectangle, numArgs: 4, variableArgs: false };\n t.S = { id: OPS.stroke, numArgs: 0, variableArgs: false };\n t.s = { id: OPS.closeStroke, numArgs: 0, variableArgs: false };\n t.f = { id: OPS.fill, numArgs: 0, variableArgs: false };\n t.F = { id: OPS.fill, numArgs: 0, variableArgs: false };\n t[\"f*\"] = { id: OPS.eoFill, numArgs: 0, variableArgs: false };\n t.B = { id: OPS.fillStroke, numArgs: 0, variableArgs: false };\n t[\"B*\"] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false };\n t.b = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false };\n t[\"b*\"] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false };\n t.n = { id: OPS.endPath, numArgs: 0, variableArgs: false };\n\n // Clipping\n t.W = { id: OPS.clip, numArgs: 0, variableArgs: false };\n t[\"W*\"] = { id: OPS.eoClip, numArgs: 0, variableArgs: false };\n\n // Text\n t.BT = { id: OPS.beginText, numArgs: 0, variableArgs: false };\n t.ET = { id: OPS.endText, numArgs: 0, variableArgs: false };\n t.Tc = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false };\n t.Tw = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false };\n t.Tz = { id: OPS.setHScale, numArgs: 1, variableArgs: false };\n t.TL = { id: OPS.setLeading, numArgs: 1, variableArgs: false };\n t.Tf = { id: OPS.setFont, numArgs: 2, variableArgs: false };\n t.Tr = { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false };\n t.Ts = { id: OPS.setTextRise, numArgs: 1, variableArgs: false };\n t.Td = { id: OPS.moveText, numArgs: 2, variableArgs: false };\n t.TD = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false };\n t.Tm = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false };\n t[\"T*\"] = { id: OPS.nextLine, numArgs: 0, variableArgs: false };\n t.Tj = { id: OPS.showText, numArgs: 1, variableArgs: false };\n t.TJ = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false };\n t[\"'\"] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false };\n t['\"'] = {\n id: OPS.nextLineSetSpacingShowText,\n numArgs: 3,\n variableArgs: false,\n };\n\n // Type3 fonts\n t.d0 = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false };\n t.d1 = {\n id: OPS.setCharWidthAndBounds,\n numArgs: 6,\n variableArgs: false,\n };\n\n // Color\n t.CS = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false };\n t.cs = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false };\n t.SC = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true };\n t.SCN = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true };\n t.sc = { id: OPS.setFillColor, numArgs: 4, variableArgs: true };\n t.scn = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true };\n t.G = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false };\n t.g = { id: OPS.setFillGray, numArgs: 1, variableArgs: false };\n t.RG = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false };\n t.rg = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false };\n t.K = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false };\n t.k = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false };\n\n // Shading\n t.sh = { id: OPS.shadingFill, numArgs: 1, variableArgs: false };\n\n // Images\n t.BI = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false };\n t.ID = { id: OPS.beginImageData, numArgs: 0, variableArgs: false };\n t.EI = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false };\n\n // XObjects\n t.Do = { id: OPS.paintXObject, numArgs: 1, variableArgs: false };\n t.MP = { id: OPS.markPoint, numArgs: 1, variableArgs: false };\n t.DP = { id: OPS.markPointProps, numArgs: 2, variableArgs: false };\n t.BMC = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false };\n t.BDC = {\n id: OPS.beginMarkedContentProps,\n numArgs: 2,\n variableArgs: false,\n };\n t.EMC = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false };\n\n // Compatibility\n t.BX = { id: OPS.beginCompat, numArgs: 0, variableArgs: false };\n t.EX = { id: OPS.endCompat, numArgs: 0, variableArgs: false };\n\n // (reserved partial commands for the lexer)\n t.BM = null;\n t.BD = null;\n t.true = null;\n t.fa = null;\n t.fal = null;\n t.fals = null;\n t.false = null;\n t.nu = null;\n t.nul = null;\n t.null = null;\n });\n\n return shadow(this, \"opMap\", getOPMap());\n }\n\n static get MAX_INVALID_PATH_OPS() {\n return shadow(this, \"MAX_INVALID_PATH_OPS\", 20);\n }\n\n constructor(stream, xref, stateManager = new StateManager()) {\n // TODO(mduan): pass array of knownCommands rather than this.opMap\n // dictionary\n this.parser = new Parser({\n lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\n xref,\n });\n this.stateManager = stateManager;\n this.nonProcessedArgs = [];\n this._numInvalidPathOPS = 0;\n }\n\n get savedStatesDepth() {\n return this.stateManager.stateStack.length;\n }\n\n // |operation| is an object with two fields:\n //\n // - |fn| is an out param.\n //\n // - |args| is an inout param. On entry, it should have one of two values.\n //\n // - An empty array. This indicates that the caller is providing the\n // array in which the args will be stored in. The caller should use\n // this value if it can reuse a single array for each call to read().\n //\n // - |null|. This indicates that the caller needs this function to create\n // the array in which any args are stored in. If there are zero args,\n // this function will leave |operation.args| as |null| (thus avoiding\n // allocations that would occur if we used an empty array to represent\n // zero arguments). Otherwise, it will replace |null| with a new array\n // containing the arguments. The caller should use this value if it\n // cannot reuse an array for each call to read().\n //\n // These two modes are present because this function is very hot and so\n // avoiding allocations where possible is worthwhile.\n //\n read(operation) {\n let args = operation.args;\n while (true) {\n const obj = this.parser.getObj();\n if (obj instanceof Cmd) {\n const cmd = obj.cmd;\n // Check that the command is valid\n const opSpec = EvaluatorPreprocessor.opMap[cmd];\n if (!opSpec) {\n warn(`Unknown command \"${cmd}\".`);\n continue;\n }\n\n const fn = opSpec.id;\n const numArgs = opSpec.numArgs;\n let argsLength = args !== null ? args.length : 0;\n\n if (!opSpec.variableArgs) {\n // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf\n if (argsLength !== numArgs) {\n const nonProcessedArgs = this.nonProcessedArgs;\n while (argsLength > numArgs) {\n nonProcessedArgs.push(args.shift());\n argsLength--;\n }\n while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n if (args === null) {\n args = [];\n }\n args.unshift(nonProcessedArgs.pop());\n argsLength++;\n }\n }\n\n if (argsLength < numArgs) {\n const partialMsg =\n `command ${cmd}: expected ${numArgs} args, ` +\n `but received ${argsLength} args.`;\n\n // Incomplete path operators, in particular, can result in fairly\n // chaotic rendering artifacts. Hence the following heuristics is\n // used to error, rather than just warn, once a number of invalid\n // path operators have been encountered (fixes bug1443140.pdf).\n if (\n fn >= OPS.moveTo &&\n fn <= OPS.endPath && // Path operator\n ++this._numInvalidPathOPS >\n EvaluatorPreprocessor.MAX_INVALID_PATH_OPS\n ) {\n throw new FormatError(`Invalid ${partialMsg}`);\n }\n // If we receive too few arguments, it's not possible to execute\n // the command, hence we skip the command.\n warn(`Skipping ${partialMsg}`);\n if (args !== null) {\n args.length = 0;\n }\n continue;\n }\n } else if (argsLength > numArgs) {\n info(\n `Command ${cmd}: expected [0, ${numArgs}] args, ` +\n `but received ${argsLength} args.`\n );\n }\n\n // TODO figure out how to type-check vararg functions\n this.preprocessCommand(fn, args);\n\n operation.fn = fn;\n operation.args = args;\n return true;\n }\n if (obj === EOF) {\n return false; // no more commands\n }\n // argument\n if (obj !== null) {\n if (args === null) {\n args = [];\n }\n args.push(obj);\n if (args.length > 33) {\n throw new FormatError(\"Too many arguments\");\n }\n }\n }\n }\n\n preprocessCommand(fn, args) {\n switch (fn | 0) {\n case OPS.save:\n this.stateManager.save();\n break;\n case OPS.restore:\n this.stateManager.restore();\n break;\n case OPS.transform:\n this.stateManager.transform(args);\n break;\n }\n }\n}\n\nexport { EvaluatorPreprocessor, PartialEvaluator };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CMapCompressionType,\n FormatError,\n isString,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { EOF, isCmd, isName, isStream } from \"./primitives.js\";\nimport { Lexer } from \"./parser.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nconst BUILT_IN_CMAPS = [\n // << Start unicode maps.\n \"Adobe-GB1-UCS2\",\n \"Adobe-CNS1-UCS2\",\n \"Adobe-Japan1-UCS2\",\n \"Adobe-Korea1-UCS2\",\n // >> End unicode maps.\n \"78-EUC-H\",\n \"78-EUC-V\",\n \"78-H\",\n \"78-RKSJ-H\",\n \"78-RKSJ-V\",\n \"78-V\",\n \"78ms-RKSJ-H\",\n \"78ms-RKSJ-V\",\n \"83pv-RKSJ-H\",\n \"90ms-RKSJ-H\",\n \"90ms-RKSJ-V\",\n \"90msp-RKSJ-H\",\n \"90msp-RKSJ-V\",\n \"90pv-RKSJ-H\",\n \"90pv-RKSJ-V\",\n \"Add-H\",\n \"Add-RKSJ-H\",\n \"Add-RKSJ-V\",\n \"Add-V\",\n \"Adobe-CNS1-0\",\n \"Adobe-CNS1-1\",\n \"Adobe-CNS1-2\",\n \"Adobe-CNS1-3\",\n \"Adobe-CNS1-4\",\n \"Adobe-CNS1-5\",\n \"Adobe-CNS1-6\",\n \"Adobe-GB1-0\",\n \"Adobe-GB1-1\",\n \"Adobe-GB1-2\",\n \"Adobe-GB1-3\",\n \"Adobe-GB1-4\",\n \"Adobe-GB1-5\",\n \"Adobe-Japan1-0\",\n \"Adobe-Japan1-1\",\n \"Adobe-Japan1-2\",\n \"Adobe-Japan1-3\",\n \"Adobe-Japan1-4\",\n \"Adobe-Japan1-5\",\n \"Adobe-Japan1-6\",\n \"Adobe-Korea1-0\",\n \"Adobe-Korea1-1\",\n \"Adobe-Korea1-2\",\n \"B5-H\",\n \"B5-V\",\n \"B5pc-H\",\n \"B5pc-V\",\n \"CNS-EUC-H\",\n \"CNS-EUC-V\",\n \"CNS1-H\",\n \"CNS1-V\",\n \"CNS2-H\",\n \"CNS2-V\",\n \"ETHK-B5-H\",\n \"ETHK-B5-V\",\n \"ETen-B5-H\",\n \"ETen-B5-V\",\n \"ETenms-B5-H\",\n \"ETenms-B5-V\",\n \"EUC-H\",\n \"EUC-V\",\n \"Ext-H\",\n \"Ext-RKSJ-H\",\n \"Ext-RKSJ-V\",\n \"Ext-V\",\n \"GB-EUC-H\",\n \"GB-EUC-V\",\n \"GB-H\",\n \"GB-V\",\n \"GBK-EUC-H\",\n \"GBK-EUC-V\",\n \"GBK2K-H\",\n \"GBK2K-V\",\n \"GBKp-EUC-H\",\n \"GBKp-EUC-V\",\n \"GBT-EUC-H\",\n \"GBT-EUC-V\",\n \"GBT-H\",\n \"GBT-V\",\n \"GBTpc-EUC-H\",\n \"GBTpc-EUC-V\",\n \"GBpc-EUC-H\",\n \"GBpc-EUC-V\",\n \"H\",\n \"HKdla-B5-H\",\n \"HKdla-B5-V\",\n \"HKdlb-B5-H\",\n \"HKdlb-B5-V\",\n \"HKgccs-B5-H\",\n \"HKgccs-B5-V\",\n \"HKm314-B5-H\",\n \"HKm314-B5-V\",\n \"HKm471-B5-H\",\n \"HKm471-B5-V\",\n \"HKscs-B5-H\",\n \"HKscs-B5-V\",\n \"Hankaku\",\n \"Hiragana\",\n \"KSC-EUC-H\",\n \"KSC-EUC-V\",\n \"KSC-H\",\n \"KSC-Johab-H\",\n \"KSC-Johab-V\",\n \"KSC-V\",\n \"KSCms-UHC-H\",\n \"KSCms-UHC-HW-H\",\n \"KSCms-UHC-HW-V\",\n \"KSCms-UHC-V\",\n \"KSCpc-EUC-H\",\n \"KSCpc-EUC-V\",\n \"Katakana\",\n \"NWP-H\",\n \"NWP-V\",\n \"RKSJ-H\",\n \"RKSJ-V\",\n \"Roman\",\n \"UniCNS-UCS2-H\",\n \"UniCNS-UCS2-V\",\n \"UniCNS-UTF16-H\",\n \"UniCNS-UTF16-V\",\n \"UniCNS-UTF32-H\",\n \"UniCNS-UTF32-V\",\n \"UniCNS-UTF8-H\",\n \"UniCNS-UTF8-V\",\n \"UniGB-UCS2-H\",\n \"UniGB-UCS2-V\",\n \"UniGB-UTF16-H\",\n \"UniGB-UTF16-V\",\n \"UniGB-UTF32-H\",\n \"UniGB-UTF32-V\",\n \"UniGB-UTF8-H\",\n \"UniGB-UTF8-V\",\n \"UniJIS-UCS2-H\",\n \"UniJIS-UCS2-HW-H\",\n \"UniJIS-UCS2-HW-V\",\n \"UniJIS-UCS2-V\",\n \"UniJIS-UTF16-H\",\n \"UniJIS-UTF16-V\",\n \"UniJIS-UTF32-H\",\n \"UniJIS-UTF32-V\",\n \"UniJIS-UTF8-H\",\n \"UniJIS-UTF8-V\",\n \"UniJIS2004-UTF16-H\",\n \"UniJIS2004-UTF16-V\",\n \"UniJIS2004-UTF32-H\",\n \"UniJIS2004-UTF32-V\",\n \"UniJIS2004-UTF8-H\",\n \"UniJIS2004-UTF8-V\",\n \"UniJISPro-UCS2-HW-V\",\n \"UniJISPro-UCS2-V\",\n \"UniJISPro-UTF8-V\",\n \"UniJISX0213-UTF32-H\",\n \"UniJISX0213-UTF32-V\",\n \"UniJISX02132004-UTF32-H\",\n \"UniJISX02132004-UTF32-V\",\n \"UniKS-UCS2-H\",\n \"UniKS-UCS2-V\",\n \"UniKS-UTF16-H\",\n \"UniKS-UTF16-V\",\n \"UniKS-UTF32-H\",\n \"UniKS-UTF32-V\",\n \"UniKS-UTF8-H\",\n \"UniKS-UTF8-V\",\n \"V\",\n \"WP-Symbol\",\n];\n\n// Heuristic to avoid hanging the worker-thread for CMap data with ridiculously\n// large ranges, such as e.g. 0xFFFFFFFF (fixes issue11922_reduced.pdf).\nconst MAX_MAP_RANGE = 2 ** 24 - 1; // = 0xFFFFFF\n\n// CMap, not to be confused with TrueType's cmap.\nclass CMap {\n constructor(builtInCMap = false) {\n // Codespace ranges are stored as follows:\n // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\n // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\n this.codespaceRanges = [[], [], [], []];\n this.numCodespaceRanges = 0;\n // Map entries have one of two forms.\n // - cid chars are 16-bit unsigned integers, stored as integers.\n // - bf chars are variable-length byte sequences, stored as strings, with\n // one byte per character.\n this._map = [];\n this.name = \"\";\n this.vertical = false;\n this.useCMap = null;\n this.builtInCMap = builtInCMap;\n }\n\n addCodespaceRange(n, low, high) {\n this.codespaceRanges[n - 1].push(low, high);\n this.numCodespaceRanges++;\n }\n\n mapCidRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n }\n while (low <= high) {\n this._map[low++] = dstLow++;\n }\n }\n\n mapBfRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n }\n const lastByte = dstLow.length - 1;\n while (low <= high) {\n this._map[low++] = dstLow;\n // Only the last byte has to be incremented (in the normal case).\n const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\n if (nextCharCode > 0xff) {\n dstLow =\n dstLow.substring(0, lastByte - 1) +\n String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) +\n \"\\x00\";\n continue;\n }\n dstLow =\n dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\n }\n }\n\n mapBfRangeToArray(low, high, array) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n }\n const ii = array.length;\n let i = 0;\n while (low <= high && i < ii) {\n this._map[low] = array[i++];\n ++low;\n }\n }\n\n // This is used for both bf and cid chars.\n mapOne(src, dst) {\n this._map[src] = dst;\n }\n\n lookup(code) {\n return this._map[code];\n }\n\n contains(code) {\n return this._map[code] !== undefined;\n }\n\n forEach(callback) {\n // Most maps have fewer than 65536 entries, and for those we use normal\n // array iteration. But really sparse tables are possible -- e.g. with\n // indices in the *billions*. For such tables we use for..in, which isn't\n // ideal because it stringifies the indices for all present elements, but\n // it does avoid iterating over every undefined entry.\n const map = this._map;\n const length = map.length;\n if (length <= 0x10000) {\n for (let i = 0; i < length; i++) {\n if (map[i] !== undefined) {\n callback(i, map[i]);\n }\n }\n } else {\n for (const i in map) {\n callback(i, map[i]);\n }\n }\n }\n\n charCodeOf(value) {\n // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n // are both very sparse and very large (see issue8372.pdf).\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n\n getMap() {\n return this._map;\n }\n\n readCharCode(str, offset, out) {\n let c = 0;\n const codespaceRanges = this.codespaceRanges;\n // 9.7.6.2 CMap Mapping\n // The code length is at most 4.\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;\n // Check each codespace range to see if it falls within.\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (c >= low && c <= high) {\n out.charcode = c;\n out.length = n + 1;\n return;\n }\n }\n }\n out.charcode = 0;\n out.length = 1;\n }\n\n getCharCodeLength(charCode) {\n const codespaceRanges = this.codespaceRanges;\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n // Check each codespace range to see if it falls within.\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (charCode >= low && charCode <= high) {\n return n + 1;\n }\n }\n }\n return 1;\n }\n\n get length() {\n return this._map.length;\n }\n\n get isIdentityCMap() {\n if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n return false;\n }\n if (this._map.length !== 0x10000) {\n return false;\n }\n for (let i = 0; i < 0x10000; i++) {\n if (this._map[i] !== i) {\n return false;\n }\n }\n return true;\n }\n}\n\n// A special case of CMap, where the _map array implicitly has a length of\n// 65536 and each element is equal to its index.\nclass IdentityCMap extends CMap {\n constructor(vertical, n) {\n super();\n\n this.vertical = vertical;\n this.addCodespaceRange(n, 0, 0xffff);\n }\n\n mapCidRange(low, high, dstLow) {\n unreachable(\"should not call mapCidRange\");\n }\n\n mapBfRange(low, high, dstLow) {\n unreachable(\"should not call mapBfRange\");\n }\n\n mapBfRangeToArray(low, high, array) {\n unreachable(\"should not call mapBfRangeToArray\");\n }\n\n mapOne(src, dst) {\n unreachable(\"should not call mapCidOne\");\n }\n\n lookup(code) {\n return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n }\n\n contains(code) {\n return Number.isInteger(code) && code <= 0xffff;\n }\n\n forEach(callback) {\n for (let i = 0; i <= 0xffff; i++) {\n callback(i, i);\n }\n }\n\n charCodeOf(value) {\n return Number.isInteger(value) && value <= 0xffff ? value : -1;\n }\n\n getMap() {\n // Sometimes identity maps must be instantiated, but it's rare.\n const map = new Array(0x10000);\n for (let i = 0; i <= 0xffff; i++) {\n map[i] = i;\n }\n return map;\n }\n\n get length() {\n return 0x10000;\n }\n\n // eslint-disable-next-line getter-return\n get isIdentityCMap() {\n unreachable(\"should not access .isIdentityCMap\");\n }\n}\n\nconst BinaryCMapReader = (function BinaryCMapReaderClosure() {\n function hexToInt(a, size) {\n let n = 0;\n for (let i = 0; i <= size; i++) {\n n = (n << 8) | a[i];\n }\n return n >>> 0;\n }\n\n function hexToStr(a, size) {\n // This code is hot. Special-case some common values to avoid creating an\n // object with subarray().\n if (size === 1) {\n return String.fromCharCode(a[0], a[1]);\n }\n if (size === 3) {\n return String.fromCharCode(a[0], a[1], a[2], a[3]);\n }\n return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n }\n\n function addHex(a, b, size) {\n let c = 0;\n for (let i = size; i >= 0; i--) {\n c += a[i] + b[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n function incHex(a, size) {\n let c = 1;\n for (let i = size; i >= 0 && c > 0; i--) {\n c += a[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n const MAX_NUM_SIZE = 16;\n const MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n class BinaryCMapStream {\n constructor(data) {\n this.buffer = data;\n this.pos = 0;\n this.end = data.length;\n this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n }\n\n readByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.buffer[this.pos++];\n }\n\n readNumber() {\n let n = 0;\n let last;\n do {\n const b = this.readByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n n = (n << 7) | (b & 0x7f);\n } while (!last);\n return n;\n }\n\n readSigned() {\n const n = this.readNumber();\n return n & 1 ? ~(n >>> 1) : n >>> 1;\n }\n\n readHex(num, size) {\n num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n this.pos += size + 1;\n }\n\n readHexNumber(num, size) {\n let last;\n const stack = this.tmpBuf;\n let sp = 0;\n do {\n const b = this.readByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n stack[sp++] = b & 0x7f;\n } while (!last);\n let i = size,\n buffer = 0,\n bufferSize = 0;\n while (i >= 0) {\n while (bufferSize < 8 && stack.length > 0) {\n buffer |= stack[--sp] << bufferSize;\n bufferSize += 7;\n }\n num[i] = buffer & 255;\n i--;\n buffer >>= 8;\n bufferSize -= 8;\n }\n }\n\n readHexSigned(num, size) {\n this.readHexNumber(num, size);\n const sign = num[size] & 1 ? 255 : 0;\n let c = 0;\n for (let i = 0; i <= size; i++) {\n c = ((c & 1) << 8) | num[i];\n num[i] = (c >> 1) ^ sign;\n }\n }\n\n readString() {\n const len = this.readNumber();\n let s = \"\";\n for (let i = 0; i < len; i++) {\n s += String.fromCharCode(this.readNumber());\n }\n return s;\n }\n }\n\n // eslint-disable-next-line no-shadow\n class BinaryCMapReader {\n async process(data, cMap, extend) {\n const stream = new BinaryCMapStream(data);\n const header = stream.readByte();\n cMap.vertical = !!(header & 1);\n\n let useCMap = null;\n const start = new Uint8Array(MAX_NUM_SIZE);\n const end = new Uint8Array(MAX_NUM_SIZE);\n const char = new Uint8Array(MAX_NUM_SIZE);\n const charCode = new Uint8Array(MAX_NUM_SIZE);\n const tmp = new Uint8Array(MAX_NUM_SIZE);\n let code;\n\n let b;\n while ((b = stream.readByte()) >= 0) {\n const type = b >> 5;\n if (type === 7) {\n // metadata, e.g. comment or usecmap\n switch (b & 0x1f) {\n case 0:\n stream.readString(); // skipping comment\n break;\n case 1:\n useCMap = stream.readString();\n break;\n }\n continue;\n }\n const sequence = !!(b & 0x10);\n const dataSize = b & 15;\n\n if (dataSize + 1 > MAX_NUM_SIZE) {\n throw new Error(\"BinaryCMapReader.process: Invalid dataSize.\");\n }\n\n const ucs2DataSize = 1;\n const subitemsCount = stream.readNumber();\n switch (type) {\n case 0: // codespacerange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(\n dataSize + 1,\n hexToInt(start, dataSize),\n hexToInt(end, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(\n dataSize + 1,\n hexToInt(start, dataSize),\n hexToInt(end, dataSize)\n );\n }\n break;\n case 1: // notdefrange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber(); // code\n // undefined range, skipping\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber(); // code\n // nop\n }\n break;\n case 2: // cidchar\n stream.readHex(char, dataSize);\n code = stream.readNumber();\n cMap.mapOne(hexToInt(char, dataSize), code);\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, dataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, dataSize);\n addHex(char, tmp, dataSize);\n }\n code = stream.readSigned() + (code + 1);\n cMap.mapOne(hexToInt(char, dataSize), code);\n }\n break;\n case 3: // cidrange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(\n hexToInt(start, dataSize),\n hexToInt(end, dataSize),\n code\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n if (!sequence) {\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(\n hexToInt(start, dataSize),\n hexToInt(end, dataSize),\n code\n );\n }\n break;\n case 4: // bfchar\n stream.readHex(char, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapOne(\n hexToInt(char, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, ucs2DataSize);\n addHex(char, tmp, ucs2DataSize);\n }\n incHex(charCode, dataSize);\n stream.readHexSigned(tmp, dataSize);\n addHex(charCode, tmp, dataSize);\n cMap.mapOne(\n hexToInt(char, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n }\n break;\n case 5: // bfrange\n stream.readHex(start, ucs2DataSize);\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(\n hexToInt(start, ucs2DataSize),\n hexToInt(end, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(start, ucs2DataSize);\n addHex(start, end, ucs2DataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(\n hexToInt(start, ucs2DataSize),\n hexToInt(end, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n }\n break;\n default:\n throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\n }\n }\n\n if (useCMap) {\n return extend(useCMap);\n }\n return cMap;\n }\n }\n\n return BinaryCMapReader;\n})();\n\nconst CMapFactory = (function CMapFactoryClosure() {\n function strToInt(str) {\n let a = 0;\n for (let i = 0; i < str.length; i++) {\n a = (a << 8) | str.charCodeAt(i);\n }\n return a >>> 0;\n }\n\n function expectString(obj) {\n if (!isString(obj)) {\n throw new FormatError(\"Malformed CMap: expected string.\");\n }\n }\n\n function expectInt(obj) {\n if (!Number.isInteger(obj)) {\n throw new FormatError(\"Malformed CMap: expected int.\");\n }\n }\n\n function parseBfChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n // TODO are /dstName used?\n expectString(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseBfRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n if (Number.isInteger(obj) || isString(obj)) {\n const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n cMap.mapBfRange(low, high, dstLow);\n } else if (isCmd(obj, \"[\")) {\n obj = lexer.getObj();\n const array = [];\n while (!isCmd(obj, \"]\") && obj !== EOF) {\n array.push(obj);\n obj = lexer.getObj();\n }\n cMap.mapBfRangeToArray(low, high, array);\n } else {\n break;\n }\n }\n throw new FormatError(\"Invalid bf range.\");\n }\n\n function parseCidChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseCidRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dstLow = obj;\n cMap.mapCidRange(low, high, dstLow);\n }\n }\n\n function parseCodespaceRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcodespacerange\")) {\n return;\n }\n if (!isString(obj)) {\n break;\n }\n const low = strToInt(obj);\n obj = lexer.getObj();\n if (!isString(obj)) {\n break;\n }\n const high = strToInt(obj);\n cMap.addCodespaceRange(obj.length, low, high);\n }\n throw new FormatError(\"Invalid codespace range.\");\n }\n\n function parseWMode(cMap, lexer) {\n const obj = lexer.getObj();\n if (Number.isInteger(obj)) {\n cMap.vertical = !!obj;\n }\n }\n\n function parseCMapName(cMap, lexer) {\n const obj = lexer.getObj();\n if (isName(obj) && isString(obj.name)) {\n cMap.name = obj.name;\n }\n }\n\n async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n let previous, embeddedUseCMap;\n objLoop: while (true) {\n try {\n const obj = lexer.getObj();\n if (obj === EOF) {\n break;\n } else if (isName(obj)) {\n if (obj.name === \"WMode\") {\n parseWMode(cMap, lexer);\n } else if (obj.name === \"CMapName\") {\n parseCMapName(cMap, lexer);\n }\n previous = obj;\n } else if (isCmd(obj)) {\n switch (obj.cmd) {\n case \"endcmap\":\n break objLoop;\n case \"usecmap\":\n if (isName(previous)) {\n embeddedUseCMap = previous.name;\n }\n break;\n case \"begincodespacerange\":\n parseCodespaceRange(cMap, lexer);\n break;\n case \"beginbfchar\":\n parseBfChar(cMap, lexer);\n break;\n case \"begincidchar\":\n parseCidChar(cMap, lexer);\n break;\n case \"beginbfrange\":\n parseBfRange(cMap, lexer);\n break;\n case \"begincidrange\":\n parseCidRange(cMap, lexer);\n break;\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Invalid cMap data: \" + ex);\n continue;\n }\n }\n\n if (!useCMap && embeddedUseCMap) {\n // Load the useCMap definition from the file only if there wasn't one\n // specified.\n useCMap = embeddedUseCMap;\n }\n if (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n }\n return cMap;\n }\n\n async function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\n // If there aren't any code space ranges defined clone all the parent ones\n // into this cMap.\n if (cMap.numCodespaceRanges === 0) {\n const useCodespaceRanges = cMap.useCMap.codespaceRanges;\n for (let i = 0; i < useCodespaceRanges.length; i++) {\n cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n }\n cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n }\n // Merge the map into the current one, making sure not to override\n // any previously defined entries.\n cMap.useCMap.forEach(function (key, value) {\n if (!cMap.contains(key)) {\n cMap.mapOne(key, cMap.useCMap.lookup(key));\n }\n });\n\n return cMap;\n }\n\n async function createBuiltInCMap(name, fetchBuiltInCMap) {\n if (name === \"Identity-H\") {\n return new IdentityCMap(false, 2);\n } else if (name === \"Identity-V\") {\n return new IdentityCMap(true, 2);\n }\n if (!BUILT_IN_CMAPS.includes(name)) {\n throw new Error(\"Unknown CMap name: \" + name);\n }\n if (!fetchBuiltInCMap) {\n throw new Error(\"Built-in CMap parameters are not provided.\");\n }\n\n const { cMapData, compressionType } = await fetchBuiltInCMap(name);\n const cMap = new CMap(true);\n\n if (compressionType === CMapCompressionType.BINARY) {\n return new BinaryCMapReader().process(cMapData, cMap, useCMap => {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n });\n }\n if (compressionType === CMapCompressionType.NONE) {\n const lexer = new Lexer(new Stream(cMapData));\n return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n }\n throw new Error(\n \"TODO: Only BINARY/NONE CMap compression is currently supported.\"\n );\n }\n\n return {\n async create(params) {\n const encoding = params.encoding;\n const fetchBuiltInCMap = params.fetchBuiltInCMap;\n const useCMap = params.useCMap;\n\n if (isName(encoding)) {\n return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n } else if (isStream(encoding)) {\n const parsedCMap = await parseCMap(\n /* cMap = */ new CMap(),\n /* lexer = */ new Lexer(encoding),\n fetchBuiltInCMap,\n useCMap\n );\n\n if (parsedCMap.isIdentityCMap) {\n return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n }\n return parsedCMap;\n }\n throw new Error(\"Encoding required.\");\n },\n };\n})();\n\nexport { CMap, CMapFactory, IdentityCMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FormatError,\n info,\n isNum,\n StreamType,\n warn,\n} from \"../shared/util.js\";\nimport {\n Cmd,\n Dict,\n EOF,\n isCmd,\n isDict,\n isName,\n Name,\n Ref,\n} from \"./primitives.js\";\nimport {\n isWhiteSpace,\n MissingDataException,\n ParserEOFException,\n} from \"./core_utils.js\";\nimport { Ascii85Stream } from \"./ascii_85_stream.js\";\nimport { AsciiHexStream } from \"./ascii_hex_stream.js\";\nimport { CCITTFaxStream } from \"./ccitt_stream.js\";\nimport { FlateStream } from \"./flate_stream.js\";\nimport { Jbig2Stream } from \"./jbig2_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxStream } from \"./jpx_stream.js\";\nimport { LZWStream } from \"./lzw_stream.js\";\nimport { NullStream } from \"./stream.js\";\nimport { PredictorStream } from \"./predictor_stream.js\";\nimport { RunLengthStream } from \"./run_length_stream.js\";\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nconst MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n const bytesLength = bytes.length;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n bytesLength < MAX_ADLER32_LENGTH,\n 'computeAdler32: Unsupported \"bytes\" length.'\n );\n }\n let a = 1,\n b = 0;\n for (let i = 0; i < bytesLength; ++i) {\n // No modulo required in the loop if `bytesLength < 5552`.\n a += bytes[i] & 0xff;\n b += a;\n }\n return (b % 65521 << 16) | a % 65521;\n}\n\nclass Parser {\n constructor({ lexer, xref, allowStreams = false, recoveryMode = false }) {\n this.lexer = lexer;\n this.xref = xref;\n this.allowStreams = allowStreams;\n this.recoveryMode = recoveryMode;\n\n this.imageCache = Object.create(null);\n this.refill();\n }\n\n refill() {\n this.buf1 = this.lexer.getObj();\n this.buf2 = this.lexer.getObj();\n }\n\n shift() {\n if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n this.buf1 = this.buf2;\n this.buf2 = null;\n } else {\n this.buf1 = this.buf2;\n this.buf2 = this.lexer.getObj();\n }\n }\n\n tryShift() {\n try {\n this.shift();\n return true;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n // Upon failure, the caller should reset this.lexer.pos to a known good\n // state and call this.shift() twice to reset the buffers.\n return false;\n }\n }\n\n getObj(cipherTransform = null) {\n const buf1 = this.buf1;\n this.shift();\n\n if (buf1 instanceof Cmd) {\n switch (buf1.cmd) {\n case \"BI\": // inline image\n return this.makeInlineImage(cipherTransform);\n case \"[\": // array\n const array = [];\n while (!isCmd(this.buf1, \"]\") && this.buf1 !== EOF) {\n array.push(this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return array;\n }\n throw new ParserEOFException(\"End of file inside array.\");\n }\n this.shift();\n return array;\n case \"<<\": // dictionary or stream\n const dict = new Dict(this.xref);\n while (!isCmd(this.buf1, \">>\") && this.buf1 !== EOF) {\n if (!isName(this.buf1)) {\n info(\"Malformed dictionary: key must be a name object\");\n this.shift();\n continue;\n }\n\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return dict;\n }\n throw new ParserEOFException(\"End of file inside dictionary.\");\n }\n\n // Stream objects are not allowed inside content streams or\n // object streams.\n if (isCmd(this.buf2, \"stream\")) {\n return this.allowStreams\n ? this.makeStream(dict, cipherTransform)\n : dict;\n }\n this.shift();\n return dict;\n default:\n // simple object\n return buf1;\n }\n }\n\n if (Number.isInteger(buf1)) {\n // indirect reference or integer\n if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n const ref = Ref.get(buf1, this.buf1);\n this.shift();\n this.shift();\n return ref;\n }\n return buf1;\n }\n\n if (typeof buf1 === \"string\") {\n if (cipherTransform) {\n return cipherTransform.decryptString(buf1);\n }\n return buf1;\n }\n\n // simple object\n return buf1;\n }\n\n /**\n * Find the end of the stream by searching for the /EI\\s/.\n * @returns {number} The inline stream length.\n */\n findDefaultInlineStreamEnd(stream) {\n const E = 0x45,\n I = 0x49,\n SPACE = 0x20,\n LF = 0xa,\n CR = 0xd,\n NUL = 0x0;\n const lexer = this.lexer,\n startPos = stream.pos,\n n = 10;\n let state = 0,\n ch,\n maybeEIPos;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else {\n assert(state === 2, \"findDefaultInlineStreamEnd - invalid state.\");\n if (ch === SPACE || ch === LF || ch === CR) {\n maybeEIPos = stream.pos;\n // Let's check that the next `n` bytes are ASCII... just to be sure.\n const followingBytes = stream.peekBytes(n);\n for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n ch = followingBytes[i];\n if (ch === NUL && followingBytes[i + 1] !== NUL) {\n // NUL bytes are not supposed to occur *outside* of inline\n // images, but some PDF generators violate that assumption,\n // thus breaking the EI detection heuristics used below.\n //\n // However, we can't unconditionally treat NUL bytes as \"ASCII\",\n // since that *could* result in inline images being truncated.\n //\n // To attempt to address this, we'll still treat any *sequence*\n // of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\n // continue checking the `followingBytes` (fixes issue8823.pdf).\n continue;\n }\n if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n // Not a LF, CR, SPACE or any visible ASCII character, i.e.\n // it's binary stuff. Resetting the state.\n state = 0;\n break;\n }\n }\n\n if (state !== 2) {\n continue;\n }\n // Check that the \"EI\" sequence isn't part of the image data, since\n // that would cause the image to be truncated (fixes issue11124.pdf).\n if (lexer.knownCommands) {\n const nextObj = lexer.peekObj();\n if (nextObj instanceof Cmd && !lexer.knownCommands[nextObj.cmd]) {\n // Not a valid command, i.e. the inline image data *itself*\n // contains an \"EI\" sequence. Resetting the state.\n state = 0;\n }\n } else {\n warn(\n \"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\"\n );\n }\n\n if (state === 2) {\n break; // Finished!\n }\n } else {\n state = 0;\n }\n }\n }\n\n if (ch === -1) {\n warn(\n \"findDefaultInlineStreamEnd: \" +\n \"Reached the end of the stream without finding a valid EI marker\"\n );\n if (maybeEIPos) {\n warn('... trying to recover by using the last \"EI\" occurrence.');\n stream.skip(-(stream.pos - maybeEIPos)); // Reset the stream position.\n }\n }\n\n let endOffset = 4;\n stream.skip(-endOffset); // Set the stream position to just before \"EI\".\n ch = stream.peekByte();\n stream.skip(endOffset); // ... and remember to reset the stream position.\n\n // Ensure that we don't accidentally truncate the inline image, when the\n // data is immediately followed by the \"EI\" marker (fixes issue10388.pdf).\n if (!isWhiteSpace(ch)) {\n endOffset--;\n }\n return stream.pos - endOffset - startPos;\n }\n\n /**\n * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\n * @returns {number} The inline stream length.\n */\n findDCTDecodeInlineStreamEnd(stream) {\n const startPos = stream.pos;\n let foundEOI = false,\n b,\n markerLength;\n while ((b = stream.getByte()) !== -1) {\n if (b !== 0xff) {\n // Not a valid marker.\n continue;\n }\n switch (stream.getByte()) {\n case 0x00: // Byte stuffing.\n // 0xFF00 appears to be a very common byte sequence in JPEG images.\n break;\n\n case 0xff: // Fill byte.\n // Avoid skipping a valid marker, resetting the stream position.\n stream.skip(-1);\n break;\n\n case 0xd9: // EOI\n foundEOI = true;\n break;\n\n case 0xc0: // SOF0\n case 0xc1: // SOF1\n case 0xc2: // SOF2\n case 0xc3: // SOF3\n /* falls through */\n case 0xc5: // SOF5\n case 0xc6: // SOF6\n case 0xc7: // SOF7\n /* falls through */\n case 0xc9: // SOF9\n case 0xca: // SOF10\n case 0xcb: // SOF11\n /* falls through */\n case 0xcd: // SOF13\n case 0xce: // SOF14\n case 0xcf: // SOF15\n /* falls through */\n case 0xc4: // DHT\n case 0xcc: // DAC\n /* falls through */\n case 0xda: // SOS\n case 0xdb: // DQT\n case 0xdc: // DNL\n case 0xdd: // DRI\n case 0xde: // DHP\n case 0xdf: // EXP\n /* falls through */\n case 0xe0: // APP0\n case 0xe1: // APP1\n case 0xe2: // APP2\n case 0xe3: // APP3\n case 0xe4: // APP4\n case 0xe5: // APP5\n case 0xe6: // APP6\n case 0xe7: // APP7\n case 0xe8: // APP8\n case 0xe9: // APP9\n case 0xea: // APP10\n case 0xeb: // APP11\n case 0xec: // APP12\n case 0xed: // APP13\n case 0xee: // APP14\n case 0xef: // APP15\n /* falls through */\n case 0xfe: // COM\n // The marker should be followed by the length of the segment.\n markerLength = stream.getUint16();\n if (markerLength > 2) {\n // |markerLength| contains the byte length of the marker segment,\n // including its own length (2 bytes) and excluding the marker.\n stream.skip(markerLength - 2); // Jump to the next marker.\n } else {\n // The marker length is invalid, resetting the stream position.\n stream.skip(-2);\n }\n break;\n }\n if (foundEOI) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (b === -1) {\n warn(\n \"Inline DCTDecode image stream: \" +\n \"EOI marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\n * @returns {number} The inline stream length.\n */\n findASCII85DecodeInlineStreamEnd(stream) {\n const TILDE = 0x7e,\n GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === TILDE) {\n const tildePos = stream.pos;\n\n ch = stream.peekByte();\n // Handle corrupt PDF documents which contains whitespace \"inside\" of\n // the EOD marker (fixes issue10614.pdf).\n while (isWhiteSpace(ch)) {\n stream.skip();\n ch = stream.peekByte();\n }\n if (ch === GT) {\n stream.skip();\n break;\n }\n // Handle corrupt PDF documents which contains truncated EOD markers,\n // where the '>' character is missing (fixes issue11385.pdf).\n if (stream.pos > tildePos) {\n const maybeEI = stream.peekBytes(2);\n if (maybeEI[0] === /* E = */ 0x45 && maybeEI[1] === /* I = */ 0x49) {\n break;\n }\n }\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\n \"Inline ASCII85Decode image stream: \" +\n \"EOD marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\n * @returns {number} The inline stream length.\n */\n findASCIIHexDecodeInlineStreamEnd(stream) {\n const GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === GT) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\n \"Inline ASCIIHexDecode image stream: \" +\n \"EOD marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Skip over the /EI/ for streams where we search for an EOD marker.\n */\n inlineStreamSkipEI(stream) {\n const E = 0x45,\n I = 0x49;\n let state = 0,\n ch;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else if (state === 2) {\n break;\n }\n }\n }\n\n makeInlineImage(cipherTransform) {\n const lexer = this.lexer;\n const stream = lexer.stream;\n\n // Parse dictionary.\n const dict = new Dict(this.xref);\n let dictLength;\n while (!isCmd(this.buf1, \"ID\") && this.buf1 !== EOF) {\n if (!isName(this.buf1)) {\n throw new FormatError(\"Dictionary key must be a name object\");\n }\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (lexer.beginInlineImagePos !== -1) {\n dictLength = stream.pos - lexer.beginInlineImagePos;\n }\n\n // Extract the name of the first (i.e. the current) image filter.\n const filter = dict.get(\"F\", \"Filter\");\n let filterName;\n if (isName(filter)) {\n filterName = filter.name;\n } else if (Array.isArray(filter)) {\n const filterZero = this.xref.fetchIfRef(filter[0]);\n if (isName(filterZero)) {\n filterName = filterZero.name;\n }\n }\n\n // Parse image stream.\n const startPos = stream.pos;\n let length;\n switch (filterName) {\n case \"DCT\":\n case \"DCTDecode\":\n length = this.findDCTDecodeInlineStreamEnd(stream);\n break;\n case \"A85\":\n case \"ASCII85Decode\":\n length = this.findASCII85DecodeInlineStreamEnd(stream);\n break;\n case \"AHx\":\n case \"ASCIIHexDecode\":\n length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n break;\n default:\n length = this.findDefaultInlineStreamEnd(stream);\n }\n let imageStream = stream.makeSubStream(startPos, length, dict);\n\n // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\n // adler32 checksum.\n let cacheKey;\n if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n const imageBytes = imageStream.getBytes();\n imageStream.reset();\n\n const initialStreamPos = stream.pos;\n // Set the stream position to the beginning of the dictionary data...\n stream.pos = lexer.beginInlineImagePos;\n // ... and fetch the bytes of the *entire* dictionary.\n const dictBytes = stream.getBytes(dictLength);\n // Finally, don't forget to reset the stream position.\n stream.pos = initialStreamPos;\n\n cacheKey = computeAdler32(imageBytes) + \"_\" + computeAdler32(dictBytes);\n\n const cacheEntry = this.imageCache[cacheKey];\n if (cacheEntry !== undefined) {\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n\n cacheEntry.reset();\n return cacheEntry;\n }\n }\n\n if (cipherTransform) {\n imageStream = cipherTransform.createStream(imageStream, length);\n }\n\n imageStream = this.filter(imageStream, dict, length);\n imageStream.dict = dict;\n if (cacheKey !== undefined) {\n imageStream.cacheKey = `inline_${length}_${cacheKey}`;\n this.imageCache[cacheKey] = imageStream;\n }\n\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n\n return imageStream;\n }\n\n _findStreamLength(startPos, signature) {\n const { stream } = this.lexer;\n stream.pos = startPos;\n\n const SCAN_BLOCK_LENGTH = 2048;\n const signatureLength = signature.length;\n\n while (stream.pos < stream.end) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n const scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n break;\n }\n let pos = 0;\n while (pos < scanLength) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos;\n return stream.pos - startPos;\n }\n pos++;\n }\n stream.pos += scanLength;\n }\n return -1;\n }\n\n makeStream(dict, cipherTransform) {\n const lexer = this.lexer;\n let stream = lexer.stream;\n\n // Get the stream's start position.\n lexer.skipToNextLine();\n const startPos = stream.pos - 1;\n\n // Get the length.\n let length = dict.get(\"Length\");\n if (!Number.isInteger(length)) {\n info(`Bad length \"${length && length.toString()}\" in stream.`);\n length = 0;\n }\n\n // Skip over the stream data.\n stream.pos = startPos + length;\n lexer.nextChar();\n\n // Shift '>>' and check whether the new object marks the end of the stream.\n if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n this.shift(); // 'stream'\n } else {\n // Bad stream length, scanning for endstream command.\n const ENDSTREAM_SIGNATURE = new Uint8Array([\n 0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,\n ]);\n let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n if (actualLength < 0) {\n // Only allow limited truncation of the endstream signature,\n // to prevent false positives.\n const MAX_TRUNCATION = 1;\n // Check if the PDF generator included truncated endstream commands,\n // such as e.g. \"endstrea\" (fixes issue10004.pdf).\n for (let i = 1; i <= MAX_TRUNCATION; i++) {\n const end = ENDSTREAM_SIGNATURE.length - i;\n const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n const maybeLength = this._findStreamLength(\n startPos,\n TRUNCATED_SIGNATURE\n );\n if (maybeLength >= 0) {\n // Ensure that the byte immediately following the truncated\n // endstream command is a space, to prevent false positives.\n const lastByte = stream.peekBytes(end + 1)[end];\n if (!isWhiteSpace(lastByte)) {\n break;\n }\n info(\n `Found \"${bytesToString(TRUNCATED_SIGNATURE)}\" when ` +\n \"searching for endstream command.\"\n );\n actualLength = maybeLength;\n break;\n }\n }\n\n if (actualLength < 0) {\n throw new FormatError(\"Missing endstream command.\");\n }\n }\n length = actualLength;\n\n lexer.nextChar();\n this.shift();\n this.shift();\n }\n this.shift(); // 'endstream'\n\n stream = stream.makeSubStream(startPos, length, dict);\n if (cipherTransform) {\n stream = cipherTransform.createStream(stream, length);\n }\n stream = this.filter(stream, dict, length);\n stream.dict = dict;\n return stream;\n }\n\n filter(stream, dict, length) {\n let filter = dict.get(\"F\", \"Filter\");\n let params = dict.get(\"DP\", \"DecodeParms\");\n\n if (isName(filter)) {\n if (Array.isArray(params)) {\n warn(\"/DecodeParms should not be an Array, when /Filter is a Name.\");\n }\n return this.makeFilter(stream, filter.name, length, params);\n }\n\n let maybeLength = length;\n if (Array.isArray(filter)) {\n const filterArray = filter;\n const paramsArray = params;\n for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n filter = this.xref.fetchIfRef(filterArray[i]);\n if (!isName(filter)) {\n throw new FormatError(`Bad filter name \"${filter}\"`);\n }\n\n params = null;\n if (Array.isArray(paramsArray) && i in paramsArray) {\n params = this.xref.fetchIfRef(paramsArray[i]);\n }\n stream = this.makeFilter(stream, filter.name, maybeLength, params);\n // After the first stream the `length` variable is invalid.\n maybeLength = null;\n }\n }\n return stream;\n }\n\n makeFilter(stream, name, maybeLength, params) {\n // Since the 'Length' entry in the stream dictionary can be completely\n // wrong, e.g. zero for non-empty streams, only skip parsing the stream\n // when we can be absolutely certain that it actually is empty.\n if (maybeLength === 0) {\n warn(`Empty \"${name}\" stream.`);\n return new NullStream();\n }\n const xrefStats = this.xref.stats;\n\n try {\n switch (name) {\n case \"Fl\":\n case \"FlateDecode\":\n xrefStats.addStreamType(StreamType.FLATE);\n if (params) {\n return new PredictorStream(\n new FlateStream(stream, maybeLength),\n maybeLength,\n params\n );\n }\n return new FlateStream(stream, maybeLength);\n case \"LZW\":\n case \"LZWDecode\":\n xrefStats.addStreamType(StreamType.LZW);\n let earlyChange = 1;\n if (params) {\n if (params.has(\"EarlyChange\")) {\n earlyChange = params.get(\"EarlyChange\");\n }\n return new PredictorStream(\n new LZWStream(stream, maybeLength, earlyChange),\n maybeLength,\n params\n );\n }\n return new LZWStream(stream, maybeLength, earlyChange);\n case \"DCT\":\n case \"DCTDecode\":\n xrefStats.addStreamType(StreamType.DCT);\n return new JpegStream(stream, maybeLength, params);\n case \"JPX\":\n case \"JPXDecode\":\n xrefStats.addStreamType(StreamType.JPX);\n return new JpxStream(stream, maybeLength, params);\n case \"A85\":\n case \"ASCII85Decode\":\n xrefStats.addStreamType(StreamType.A85);\n return new Ascii85Stream(stream, maybeLength);\n case \"AHx\":\n case \"ASCIIHexDecode\":\n xrefStats.addStreamType(StreamType.AHX);\n return new AsciiHexStream(stream, maybeLength);\n case \"CCF\":\n case \"CCITTFaxDecode\":\n xrefStats.addStreamType(StreamType.CCF);\n return new CCITTFaxStream(stream, maybeLength, params);\n case \"RL\":\n case \"RunLengthDecode\":\n xrefStats.addStreamType(StreamType.RLX);\n return new RunLengthStream(stream, maybeLength);\n case \"JBIG2Decode\":\n xrefStats.addStreamType(StreamType.JBIG);\n return new Jbig2Stream(stream, maybeLength, params);\n }\n warn(`Filter \"${name}\" is not supported.`);\n return stream;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Invalid stream: \"${ex}\"`);\n return new NullStream();\n }\n }\n}\n\n// A '1' in this array means the character is white space. A '1' or\n// '2' means the character ends a name or command.\n// prettier-ignore\nconst specialChars = [\n 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x\n 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // fx\n];\n\nfunction toHexDigit(ch) {\n if (ch >= /* '0' = */ 0x30 && ch /* '9' = */ <= 0x39) {\n return ch & 0x0f;\n }\n if (\n (ch >= /* 'A' = */ 0x41 && ch <= /* 'F' = */ 0x46) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'f' = */ 0x66)\n ) {\n return (ch & 0x0f) + 9;\n }\n return -1;\n}\n\nclass Lexer {\n constructor(stream, knownCommands = null) {\n this.stream = stream;\n this.nextChar();\n\n // While lexing, we build up many strings one char at a time. Using += for\n // this can result in lots of garbage strings. It's better to build an\n // array of single-char strings and then join() them together at the end.\n // And reusing a single array (i.e. |this.strBuf|) over and over for this\n // purpose uses less memory than using a new array for each string.\n this.strBuf = [];\n\n // The PDFs might have \"glued\" commands with other commands, operands or\n // literals, e.g. \"q1\". The knownCommands is a dictionary of the valid\n // commands and their prefixes. The prefixes are built the following way:\n // if there a command that is a prefix of the other valid command or\n // literal (e.g. 'f' and 'false') the following prefixes must be included,\n // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\n // other commands or literals as a prefix. The knowCommands is optional.\n this.knownCommands = knownCommands;\n\n this._hexStringNumWarn = 0;\n this.beginInlineImagePos = -1;\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n peekChar() {\n return this.stream.peekByte();\n }\n\n getNumber() {\n let ch = this.currentChar;\n let eNotation = false;\n let divideBy = 0; // Different from 0 if it's a floating point value.\n let sign = 0;\n\n if (ch === /* '-' = */ 0x2d) {\n sign = -1;\n ch = this.nextChar();\n\n if (ch === /* '-' = */ 0x2d) {\n // Ignore double negative (this is consistent with Adobe Reader).\n ch = this.nextChar();\n }\n } else if (ch === /* '+' = */ 0x2b) {\n sign = 1;\n ch = this.nextChar();\n }\n if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n // Ignore line-breaks (this is consistent with Adobe Reader).\n do {\n ch = this.nextChar();\n } while (ch === 0x0a || ch === 0x0d);\n }\n if (ch === /* '.' = */ 0x2e) {\n divideBy = 10;\n ch = this.nextChar();\n }\n if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n if (\n divideBy === 10 &&\n sign === 0 &&\n (isWhiteSpace(ch) || ch === /* EOF = */ -1)\n ) {\n // This is consistent with Adobe Reader (fixes issue9252.pdf).\n warn(\"Lexer.getNumber - treating a single decimal point as zero.\");\n return 0;\n }\n throw new FormatError(\n `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`\n );\n }\n\n sign = sign || 1;\n let baseValue = ch - 0x30; // '0'\n let powerValue = 0;\n let powerValueSign = 1;\n\n while ((ch = this.nextChar()) >= 0) {\n if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n const currentDigit = ch - 0x30; // '0'\n if (eNotation) {\n // We are after an 'e' or 'E'.\n powerValue = powerValue * 10 + currentDigit;\n } else {\n if (divideBy !== 0) {\n // We are after a point.\n divideBy *= 10;\n }\n baseValue = baseValue * 10 + currentDigit;\n }\n } else if (ch === /* '.' = */ 0x2e) {\n if (divideBy === 0) {\n divideBy = 1;\n } else {\n // A number can have only one dot.\n break;\n }\n } else if (ch === /* '-' = */ 0x2d) {\n // Ignore minus signs in the middle of numbers to match\n // Adobe's behavior.\n warn(\"Badly formatted number: minus sign in the middle\");\n } else if (ch === /* 'E' = */ 0x45 || ch === /* 'e' = */ 0x65) {\n // 'E' can be either a scientific notation or the beginning of a new\n // operator.\n ch = this.peekChar();\n if (ch === /* '+' = */ 0x2b || ch === /* '-' = */ 0x2d) {\n powerValueSign = ch === 0x2d ? -1 : 1;\n this.nextChar(); // Consume the sign character.\n } else if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n // The 'E' must be the beginning of a new operator.\n break;\n }\n eNotation = true;\n } else {\n // The last character doesn't belong to us.\n break;\n }\n }\n\n if (divideBy !== 0) {\n baseValue /= divideBy;\n }\n if (eNotation) {\n baseValue *= 10 ** (powerValueSign * powerValue);\n }\n return sign * baseValue;\n }\n\n getString() {\n let numParen = 1;\n let done = false;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n\n let ch = this.nextChar();\n while (true) {\n let charBuffered = false;\n switch (ch | 0) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x28: // '('\n ++numParen;\n strBuf.push(\"(\");\n break;\n case 0x29: // ')'\n if (--numParen === 0) {\n this.nextChar(); // consume strings ')'\n done = true;\n } else {\n strBuf.push(\")\");\n }\n break;\n case 0x5c: // '\\\\'\n ch = this.nextChar();\n switch (ch) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x6e: // 'n'\n strBuf.push(\"\\n\");\n break;\n case 0x72: // 'r'\n strBuf.push(\"\\r\");\n break;\n case 0x74: // 't'\n strBuf.push(\"\\t\");\n break;\n case 0x62: // 'b'\n strBuf.push(\"\\b\");\n break;\n case 0x66: // 'f'\n strBuf.push(\"\\f\");\n break;\n case 0x5c: // '\\'\n case 0x28: // '('\n case 0x29: // ')'\n strBuf.push(String.fromCharCode(ch));\n break;\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n let x = ch & 0x0f;\n ch = this.nextChar();\n charBuffered = true;\n if (ch >= /* '0' = */ 0x30 && ch <= /* '7' = */ 0x37) {\n x = (x << 3) + (ch & 0x0f);\n ch = this.nextChar();\n if (ch >= /* '0' = */ 0x30 && ch /* '7' = */ <= 0x37) {\n charBuffered = false;\n x = (x << 3) + (ch & 0x0f);\n }\n }\n strBuf.push(String.fromCharCode(x));\n break;\n case 0x0d: // CR\n if (this.peekChar() === /* LF = */ 0x0a) {\n this.nextChar();\n }\n break;\n case 0x0a: // LF\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n if (done) {\n break;\n }\n if (!charBuffered) {\n ch = this.nextChar();\n }\n }\n return strBuf.join(\"\");\n }\n\n getName() {\n let ch, previousCh;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n if (ch === /* '#' = */ 0x23) {\n ch = this.nextChar();\n if (specialChars[ch]) {\n warn(\n \"Lexer_getName: \" +\n \"NUMBER SIGN (#) should be followed by a hexadecimal number.\"\n );\n strBuf.push(\"#\");\n break;\n }\n const x = toHexDigit(ch);\n if (x !== -1) {\n previousCh = ch;\n ch = this.nextChar();\n const x2 = toHexDigit(ch);\n if (x2 === -1) {\n warn(\n `Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` +\n \"in hexadecimal number.\"\n );\n strBuf.push(\"#\", String.fromCharCode(previousCh));\n if (specialChars[ch]) {\n break;\n }\n strBuf.push(String.fromCharCode(ch));\n continue;\n }\n strBuf.push(String.fromCharCode((x << 4) | x2));\n } else {\n strBuf.push(\"#\", String.fromCharCode(ch));\n }\n } else {\n strBuf.push(String.fromCharCode(ch));\n }\n }\n if (strBuf.length > 127) {\n warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n }\n return Name.get(strBuf.join(\"\"));\n }\n\n /**\n * @private\n */\n _hexStringWarn(ch) {\n const MAX_HEX_STRING_NUM_WARN = 5;\n\n if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n warn(\"getHexString - ignoring additional invalid characters.\");\n return;\n }\n if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n // Limit the number of warning messages printed for a `this.getHexString`\n // invocation, since corrupt PDF documents may otherwise spam the console\n // enough to affect general performance negatively.\n return;\n }\n warn(`getHexString - ignoring invalid character: ${ch}`);\n }\n\n getHexString() {\n const strBuf = this.strBuf;\n strBuf.length = 0;\n let ch = this.currentChar;\n let isFirstHex = true;\n let firstDigit, secondDigit;\n this._hexStringNumWarn = 0;\n\n while (true) {\n if (ch < 0) {\n warn(\"Unterminated hex string\");\n break;\n } else if (ch === /* '>' = */ 0x3e) {\n this.nextChar();\n break;\n } else if (specialChars[ch] === 1) {\n ch = this.nextChar();\n continue;\n } else {\n if (isFirstHex) {\n firstDigit = toHexDigit(ch);\n if (firstDigit === -1) {\n this._hexStringWarn(ch);\n ch = this.nextChar();\n continue;\n }\n } else {\n secondDigit = toHexDigit(ch);\n if (secondDigit === -1) {\n this._hexStringWarn(ch);\n ch = this.nextChar();\n continue;\n }\n strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n }\n isFirstHex = !isFirstHex;\n ch = this.nextChar();\n }\n }\n return strBuf.join(\"\");\n }\n\n getObj() {\n // Skip whitespace and comments.\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n if (comment) {\n if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (specialChars[ch] !== 1) {\n break;\n }\n ch = this.nextChar();\n }\n\n // Start reading a token.\n switch (ch | 0) {\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n case 0x38: // '8'\n case 0x39: // '9'\n case 0x2b: // '+'\n case 0x2d: // '-'\n case 0x2e: // '.'\n return this.getNumber();\n case 0x28: // '('\n return this.getString();\n case 0x2f: // '/'\n return this.getName();\n // array punctuation\n case 0x5b: // '['\n this.nextChar();\n return Cmd.get(\"[\");\n case 0x5d: // ']'\n this.nextChar();\n return Cmd.get(\"]\");\n // hex string or dict punctuation\n case 0x3c: // '<'\n ch = this.nextChar();\n if (ch === 0x3c) {\n // dict punctuation\n this.nextChar();\n return Cmd.get(\"<<\");\n }\n return this.getHexString();\n // dict punctuation\n case 0x3e: // '>'\n ch = this.nextChar();\n if (ch === 0x3e) {\n this.nextChar();\n return Cmd.get(\">>\");\n }\n return Cmd.get(\">\");\n case 0x7b: // '{'\n this.nextChar();\n return Cmd.get(\"{\");\n case 0x7d: // '}'\n this.nextChar();\n return Cmd.get(\"}\");\n case 0x29: // ')'\n // Consume the current character in order to avoid permanently hanging\n // the worker thread if `Lexer.getObj` is called from within a loop\n // containing try-catch statements, since we would otherwise attempt\n // to parse the *same* character over and over (fixes issue8061.pdf).\n this.nextChar();\n throw new FormatError(`Illegal character: ${ch}`);\n }\n\n // Start reading a command.\n let str = String.fromCharCode(ch);\n // A valid command cannot start with a non-visible ASCII character,\n // and the next character may be (the start of) a valid command.\n if (ch < 0x20 || ch > 0x7f) {\n const nextCh = this.peekChar();\n if (nextCh >= 0x20 && nextCh <= 0x7f) {\n this.nextChar();\n return Cmd.get(str);\n }\n }\n const knownCommands = this.knownCommands;\n let knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n // Stop if a known command is found and next character does not make\n // the string a command.\n const possibleCommand = str + String.fromCharCode(ch);\n if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n break;\n }\n if (str.length === 128) {\n throw new FormatError(`Command token too long: ${str.length}`);\n }\n str = possibleCommand;\n knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n }\n if (str === \"true\") {\n return true;\n }\n if (str === \"false\") {\n return false;\n }\n if (str === \"null\") {\n return null;\n }\n\n if (str === \"BI\") {\n // Keep track of the current stream position, since it's needed in order\n // to correctly cache inline images; see `Parser.makeInlineImage`.\n this.beginInlineImagePos = this.stream.pos;\n }\n\n return Cmd.get(str);\n }\n\n peekObj() {\n const streamPos = this.stream.pos,\n currentChar = this.currentChar,\n beginInlineImagePos = this.beginInlineImagePos;\n\n let nextObj;\n try {\n nextObj = this.getObj();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`peekObj: ${ex}`);\n }\n // Ensure that we reset *all* relevant `Lexer`-instance state.\n this.stream.pos = streamPos;\n this.currentChar = currentChar;\n this.beginInlineImagePos = beginInlineImagePos;\n\n return nextObj;\n }\n\n skipToNextLine() {\n let ch = this.currentChar;\n while (ch >= 0) {\n if (ch === /* CR = */ 0x0d) {\n ch = this.nextChar();\n if (ch === /* LF = */ 0x0a) {\n this.nextChar();\n }\n break;\n } else if (ch === /* LF = */ 0x0a) {\n this.nextChar();\n break;\n }\n ch = this.nextChar();\n }\n }\n}\n\nclass Linearization {\n static create(stream) {\n function getInt(linDict, name, allowZeroValue = false) {\n const obj = linDict.get(name);\n if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n return obj;\n }\n throw new Error(\n `The \"${name}\" parameter in the linearization ` +\n \"dictionary is invalid.\"\n );\n }\n\n function getHints(linDict) {\n const hints = linDict.get(\"H\");\n let hintsLength;\n\n if (\n Array.isArray(hints) &&\n ((hintsLength = hints.length) === 2 || hintsLength === 4)\n ) {\n for (let index = 0; index < hintsLength; index++) {\n const hint = hints[index];\n if (!(Number.isInteger(hint) && hint > 0)) {\n throw new Error(\n `Hint (${index}) in the linearization dictionary is invalid.`\n );\n }\n }\n return hints;\n }\n throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n }\n\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: null,\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n const linDict = parser.getObj();\n let obj, length;\n if (\n !(\n Number.isInteger(obj1) &&\n Number.isInteger(obj2) &&\n isCmd(obj3, \"obj\") &&\n isDict(linDict) &&\n isNum((obj = linDict.get(\"Linearized\"))) &&\n obj > 0\n )\n ) {\n return null; // No valid linearization dictionary found.\n } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n throw new Error(\n 'The \"L\" parameter in the linearization dictionary ' +\n \"does not equal the stream length.\"\n );\n }\n return {\n length,\n hints: getHints(linDict),\n objectNumberFirst: getInt(linDict, \"O\"),\n endFirst: getInt(linDict, \"E\"),\n numPages: getInt(linDict, \"N\"),\n mainXRefEntriesOffset: getInt(linDict, \"T\"),\n pageFirst: linDict.has(\"P\")\n ? getInt(linDict, \"P\", /* allowZeroValue = */ true)\n : 0,\n };\n }\n}\n\nexport { Lexer, Linearization, Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass Ascii85Stream extends DecodeStream {\n constructor(str, maybeLength) {\n // Most streams increase in size when decoded, but Ascii85 streams\n // typically shrink by ~20%.\n if (maybeLength) {\n maybeLength *= 0.8;\n }\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.input = new Uint8Array(5);\n }\n\n readBlock() {\n const TILDA_CHAR = 0x7e; // '~'\n const Z_LOWER_CHAR = 0x7a; // 'z'\n const EOF = -1;\n\n const str = this.str;\n\n let c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n\n if (c === EOF || c === TILDA_CHAR) {\n this.eof = true;\n return;\n }\n\n const bufferLength = this.bufferLength;\n let buffer, i;\n\n // special code for z\n if (c === Z_LOWER_CHAR) {\n buffer = this.ensureBuffer(bufferLength + 4);\n for (i = 0; i < 4; ++i) {\n buffer[bufferLength + i] = 0;\n }\n this.bufferLength += 4;\n } else {\n const input = this.input;\n input[0] = c;\n for (i = 1; i < 5; ++i) {\n c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n\n input[i] = c;\n\n if (c === EOF || c === TILDA_CHAR) {\n break;\n }\n }\n buffer = this.ensureBuffer(bufferLength + i - 1);\n this.bufferLength += i - 1;\n\n // partial ending;\n if (i < 5) {\n for (; i < 5; ++i) {\n input[i] = 0x21 + 84;\n }\n this.eof = true;\n }\n let t = 0;\n for (i = 0; i < 5; ++i) {\n t = t * 85 + (input[i] - 0x21);\n }\n\n for (i = 3; i >= 0; --i) {\n buffer[bufferLength + i] = t & 0xff;\n t >>= 8;\n }\n }\n }\n}\n\nexport { Ascii85Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { Stream } from \"./stream.js\";\n\n// Lots of DecodeStreams are created whose buffers are never used. For these\n// we share a single empty buffer. This is (a) space-efficient and (b) avoids\n// having special cases that would be required if we used |null| for an empty\n// buffer.\nconst emptyBuffer = new Uint8Array(0);\n\n// Super class for the decoding streams.\nclass DecodeStream extends BaseStream {\n constructor(maybeMinBufferLength) {\n super();\n this._rawMinBufferLength = maybeMinBufferLength || 0;\n\n this.pos = 0;\n this.bufferLength = 0;\n this.eof = false;\n this.buffer = emptyBuffer;\n this.minBufferLength = 512;\n if (maybeMinBufferLength) {\n // Compute the first power of two that is as big as maybeMinBufferLength.\n while (this.minBufferLength < maybeMinBufferLength) {\n this.minBufferLength *= 2;\n }\n }\n }\n\n get isEmpty() {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n return this.bufferLength === 0;\n }\n\n ensureBuffer(requested) {\n const buffer = this.buffer;\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n let size = this.minBufferLength;\n while (size < requested) {\n size *= 2;\n }\n const buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n return (this.buffer = buffer2);\n }\n\n getByte() {\n const pos = this.pos;\n while (this.bufferLength <= pos) {\n if (this.eof) {\n return -1;\n }\n this.readBlock();\n }\n return this.buffer[this.pos++];\n }\n\n getBytes(length, forceClamped = false) {\n const pos = this.pos;\n let end;\n\n if (length) {\n this.ensureBuffer(pos + length);\n end = pos + length;\n\n while (!this.eof && this.bufferLength < end) {\n this.readBlock();\n }\n const bufEnd = this.bufferLength;\n if (end > bufEnd) {\n end = bufEnd;\n }\n } else {\n while (!this.eof) {\n this.readBlock();\n }\n end = this.bufferLength;\n }\n\n this.pos = end;\n const subarray = this.buffer.subarray(pos, end);\n // `this.buffer` is either a `Uint8Array` or `Uint8ClampedArray` here.\n return forceClamped && !(subarray instanceof Uint8ClampedArray)\n ? new Uint8ClampedArray(subarray)\n : subarray;\n }\n\n reset() {\n this.pos = 0;\n }\n\n makeSubStream(start, length, dict = null) {\n if (length === undefined) {\n while (!this.eof) {\n this.readBlock();\n }\n } else {\n const end = start + length;\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n }\n return new Stream(this.buffer, start, length, dict);\n }\n\n getBaseStreams() {\n return this.str ? this.str.getBaseStreams() : null;\n }\n}\n\nclass StreamsSequenceStream extends DecodeStream {\n constructor(streams, onError = null) {\n let maybeLength = 0;\n for (const stream of streams) {\n maybeLength +=\n stream instanceof DecodeStream\n ? stream._rawMinBufferLength\n : stream.length;\n }\n super(maybeLength);\n\n this.streams = streams;\n this._onError = onError;\n }\n\n readBlock() {\n const streams = this.streams;\n if (streams.length === 0) {\n this.eof = true;\n return;\n }\n const stream = streams.shift();\n let chunk;\n try {\n chunk = stream.getBytes();\n } catch (reason) {\n if (this._onError) {\n this._onError(reason, stream.dict && stream.dict.objId);\n return;\n }\n throw reason;\n }\n const bufferLength = this.bufferLength;\n const newLength = bufferLength + chunk.length;\n const buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n }\n\n getBaseStreams() {\n const baseStreamsBuf = [];\n for (const stream of this.streams) {\n const baseStreams = stream.getBaseStreams();\n if (baseStreams) {\n baseStreamsBuf.push(...baseStreams);\n }\n }\n return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n }\n}\n\nexport { DecodeStream, StreamsSequenceStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass AsciiHexStream extends DecodeStream {\n constructor(str, maybeLength) {\n // Most streams increase in size when decoded, but AsciiHex streams shrink\n // by 50%.\n if (maybeLength) {\n maybeLength *= 0.5;\n }\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n this.firstDigit = -1;\n }\n\n readBlock() {\n const UPSTREAM_BLOCK_SIZE = 8000;\n const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n if (!bytes.length) {\n this.eof = true;\n return;\n }\n\n const maxDecodeLength = (bytes.length + 1) >> 1;\n const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n let bufferLength = this.bufferLength;\n\n let firstDigit = this.firstDigit;\n for (const ch of bytes) {\n let digit;\n if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n digit = ch & 0x0f;\n } else if (\n (ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x46) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x66)\n ) {\n digit = (ch & 0x0f) + 9;\n } else if (ch === /* '>' = */ 0x3e) {\n this.eof = true;\n break;\n } else {\n // Probably whitespace, ignoring.\n continue;\n }\n if (firstDigit < 0) {\n firstDigit = digit;\n } else {\n buffer[bufferLength++] = (firstDigit << 4) | digit;\n firstDigit = -1;\n }\n }\n if (firstDigit >= 0 && this.eof) {\n // incomplete byte\n buffer[bufferLength++] = firstDigit << 4;\n firstDigit = -1;\n }\n this.firstDigit = firstDigit;\n this.bufferLength = bufferLength;\n }\n}\n\nexport { AsciiHexStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isDict } from \"./primitives.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass CCITTFaxStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n if (!isDict(params)) {\n params = Dict.empty;\n }\n\n const source = {\n next() {\n return str.getByte();\n },\n };\n this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\n K: params.get(\"K\"),\n EndOfLine: params.get(\"EndOfLine\"),\n EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n Columns: params.get(\"Columns\"),\n Rows: params.get(\"Rows\"),\n EndOfBlock: params.get(\"EndOfBlock\"),\n BlackIs1: params.get(\"BlackIs1\"),\n });\n }\n\n readBlock() {\n while (!this.eof) {\n const c = this.ccittFaxDecoder.readNextChar();\n if (c === -1) {\n this.eof = true;\n return;\n }\n this.ensureBuffer(this.bufferLength + 1);\n this.buffer[this.bufferLength++] = c;\n }\n }\n}\n\nexport { CCITTFaxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, info } from \"../shared/util.js\";\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n * or -1 when EOF is reached.\n */\n\nconst ccittEOL = -2;\nconst ccittEOF = -1;\nconst twoDimPass = 0;\nconst twoDimHoriz = 1;\nconst twoDimVert0 = 2;\nconst twoDimVertR1 = 3;\nconst twoDimVertL1 = 4;\nconst twoDimVertR2 = 5;\nconst twoDimVertL2 = 6;\nconst twoDimVertR3 = 7;\nconst twoDimVertL3 = 8;\n\n// prettier-ignore\nconst twoDimTable = [\n [-1, -1], [-1, -1], // 000000x\n [7, twoDimVertL3], // 0000010\n [7, twoDimVertR3], // 0000011\n [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n [4, twoDimPass], [4, twoDimPass], // 0001xxx\n [4, twoDimPass], [4, twoDimPass],\n [4, twoDimPass], [4, twoDimPass],\n [4, twoDimPass], [4, twoDimPass],\n [3, twoDimHoriz], [3, twoDimHoriz], // 001xxxx\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [1, twoDimVert0], [1, twoDimVert0], // 1xxxxxx\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0]\n];\n\n// prettier-ignore\nconst whiteTable1 = [\n [-1, -1], // 00000\n [12, ccittEOL], // 00001\n [-1, -1], [-1, -1], // 0001x\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n [11, 1792], [11, 1792], // 1000x\n [12, 1984], // 10010\n [12, 2048], // 10011\n [12, 2112], // 10100\n [12, 2176], // 10101\n [12, 2240], // 10110\n [12, 2304], // 10111\n [11, 1856], [11, 1856], // 1100x\n [11, 1920], [11, 1920], // 1101x\n [12, 2368], // 11100\n [12, 2432], // 11101\n [12, 2496], // 11110\n [12, 2560] // 11111\n];\n\n// prettier-ignore\nconst whiteTable2 = [\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000000xx\n [8, 29], [8, 29], // 00000010x\n [8, 30], [8, 30], // 00000011x\n [8, 45], [8, 45], // 00000100x\n [8, 46], [8, 46], // 00000101x\n [7, 22], [7, 22], [7, 22], [7, 22], // 0000011xx\n [7, 23], [7, 23], [7, 23], [7, 23], // 0000100xx\n [8, 47], [8, 47], // 00001010x\n [8, 48], [8, 48], // 00001011x\n [6, 13], [6, 13], [6, 13], [6, 13], // 000011xxx\n [6, 13], [6, 13], [6, 13], [6, 13],\n [7, 20], [7, 20], [7, 20], [7, 20], // 0001000xx\n [8, 33], [8, 33], // 00010010x\n [8, 34], [8, 34], // 00010011x\n [8, 35], [8, 35], // 00010100x\n [8, 36], [8, 36], // 00010101x\n [8, 37], [8, 37], // 00010110x\n [8, 38], [8, 38], // 00010111x\n [7, 19], [7, 19], [7, 19], [7, 19], // 0001100xx\n [8, 31], [8, 31], // 00011010x\n [8, 32], [8, 32], // 00011011x\n [6, 1], [6, 1], [6, 1], [6, 1], // 000111xxx\n [6, 1], [6, 1], [6, 1], [6, 1],\n [6, 12], [6, 12], [6, 12], [6, 12], // 001000xxx\n [6, 12], [6, 12], [6, 12], [6, 12],\n [8, 53], [8, 53], // 00100100x\n [8, 54], [8, 54], // 00100101x\n [7, 26], [7, 26], [7, 26], [7, 26], // 0010011xx\n [8, 39], [8, 39], // 00101000x\n [8, 40], [8, 40], // 00101001x\n [8, 41], [8, 41], // 00101010x\n [8, 42], [8, 42], // 00101011x\n [8, 43], [8, 43], // 00101100x\n [8, 44], [8, 44], // 00101101x\n [7, 21], [7, 21], [7, 21], [7, 21], // 0010111xx\n [7, 28], [7, 28], [7, 28], [7, 28], // 0011000xx\n [8, 61], [8, 61], // 00110010x\n [8, 62], [8, 62], // 00110011x\n [8, 63], [8, 63], // 00110100x\n [8, 0], [8, 0], // 00110101x\n [8, 320], [8, 320], // 00110110x\n [8, 384], [8, 384], // 00110111x\n [5, 10], [5, 10], [5, 10], [5, 10], // 00111xxxx\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 11], [5, 11], [5, 11], [5, 11], // 01000xxxx\n [5, 11], [5, 11], [5, 11], [5, 11],\n [5, 11], [5, 11], [5, 11], [5, 11],\n [5, 11], [5, 11], [5, 11], [5, 11],\n [7, 27], [7, 27], [7, 27], [7, 27], // 0100100xx\n [8, 59], [8, 59], // 01001010x\n [8, 60], [8, 60], // 01001011x\n [9, 1472], // 010011000\n [9, 1536], // 010011001\n [9, 1600], // 010011010\n [9, 1728], // 010011011\n [7, 18], [7, 18], [7, 18], [7, 18], // 0100111xx\n [7, 24], [7, 24], [7, 24], [7, 24], // 0101000xx\n [8, 49], [8, 49], // 01010010x\n [8, 50], [8, 50], // 01010011x\n [8, 51], [8, 51], // 01010100x\n [8, 52], [8, 52], // 01010101x\n [7, 25], [7, 25], [7, 25], [7, 25], // 0101011xx\n [8, 55], [8, 55], // 01011000x\n [8, 56], [8, 56], // 01011001x\n [8, 57], [8, 57], // 01011010x\n [8, 58], [8, 58], // 01011011x\n [6, 192], [6, 192], [6, 192], [6, 192], // 010111xxx\n [6, 192], [6, 192], [6, 192], [6, 192],\n [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n [8, 448], [8, 448], // 01100100x\n [8, 512], [8, 512], // 01100101x\n [9, 704], // 011001100\n [9, 768], // 011001101\n [8, 640], [8, 640], // 01100111x\n [8, 576], [8, 576], // 01101000x\n [9, 832], // 011010010\n [9, 896], // 011010011\n [9, 960], // 011010100\n [9, 1024], // 011010101\n [9, 1088], // 011010110\n [9, 1152], // 011010111\n [9, 1216], // 011011000\n [9, 1280], // 011011001\n [9, 1344], // 011011010\n [9, 1408], // 011011011\n [7, 256], [7, 256], [7, 256], [7, 256], // 0110111xx\n [4, 2], [4, 2], [4, 2], [4, 2], // 0111xxxxx\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 3], [4, 3], [4, 3], [4, 3], // 1000xxxxx\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [5, 128], [5, 128], [5, 128], [5, 128], // 10010xxxx\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 8], [5, 8], [5, 8], [5, 8], // 10011xxxx\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 9], [5, 9], [5, 9], [5, 9], // 10100xxxx\n [5, 9], [5, 9], [5, 9], [5, 9],\n [5, 9], [5, 9], [5, 9], [5, 9],\n [5, 9], [5, 9], [5, 9], [5, 9],\n [6, 16], [6, 16], [6, 16], [6, 16], // 101010xxx\n [6, 16], [6, 16], [6, 16], [6, 16],\n [6, 17], [6, 17], [6, 17], [6, 17], // 101011xxx\n [6, 17], [6, 17], [6, 17], [6, 17],\n [4, 4], [4, 4], [4, 4], [4, 4], // 1011xxxxx\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 5], [4, 5], [4, 5], [4, 5], // 1100xxxxx\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [6, 14], [6, 14], [6, 14], [6, 14], // 110100xxx\n [6, 14], [6, 14], [6, 14], [6, 14],\n [6, 15], [6, 15], [6, 15], [6, 15], // 110101xxx\n [6, 15], [6, 15], [6, 15], [6, 15],\n [5, 64], [5, 64], [5, 64], [5, 64], // 11011xxxx\n [5, 64], [5, 64], [5, 64], [5, 64],\n [5, 64], [5, 64], [5, 64], [5, 64],\n [5, 64], [5, 64], [5, 64], [5, 64],\n [4, 6], [4, 6], [4, 6], [4, 6], // 1110xxxxx\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 7], [4, 7], [4, 7], [4, 7], // 1111xxxxx\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7]\n];\n\n// prettier-ignore\nconst blackTable1 = [\n [-1, -1], [-1, -1], // 000000000000x\n [12, ccittEOL], [12, ccittEOL], // 000000000001x\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000001xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000010xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000011xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000100xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000101xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000110xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000111xx\n [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n [12, 1984], [12, 1984], // 000000010010x\n [12, 2048], [12, 2048], // 000000010011x\n [12, 2112], [12, 2112], // 000000010100x\n [12, 2176], [12, 2176], // 000000010101x\n [12, 2240], [12, 2240], // 000000010110x\n [12, 2304], [12, 2304], // 000000010111x\n [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n [12, 2368], [12, 2368], // 000000011100x\n [12, 2432], [12, 2432], // 000000011101x\n [12, 2496], [12, 2496], // 000000011110x\n [12, 2560], [12, 2560], // 000000011111x\n [10, 18], [10, 18], [10, 18], [10, 18], // 0000001000xxx\n [10, 18], [10, 18], [10, 18], [10, 18],\n [12, 52], [12, 52], // 000000100100x\n [13, 640], // 0000001001010\n [13, 704], // 0000001001011\n [13, 768], // 0000001001100\n [13, 832], // 0000001001101\n [12, 55], [12, 55], // 000000100111x\n [12, 56], [12, 56], // 000000101000x\n [13, 1280], // 0000001010010\n [13, 1344], // 0000001010011\n [13, 1408], // 0000001010100\n [13, 1472], // 0000001010101\n [12, 59], [12, 59], // 000000101011x\n [12, 60], [12, 60], // 000000101100x\n [13, 1536], // 0000001011010\n [13, 1600], // 0000001011011\n [11, 24], [11, 24], [11, 24], [11, 24], // 00000010111xx\n [11, 25], [11, 25], [11, 25], [11, 25], // 00000011000xx\n [13, 1664], // 0000001100100\n [13, 1728], // 0000001100101\n [12, 320], [12, 320], // 000000110011x\n [12, 384], [12, 384], // 000000110100x\n [12, 448], [12, 448], // 000000110101x\n [13, 512], // 0000001101100\n [13, 576], // 0000001101101\n [12, 53], [12, 53], // 000000110111x\n [12, 54], [12, 54], // 000000111000x\n [13, 896], // 0000001110010\n [13, 960], // 0000001110011\n [13, 1024], // 0000001110100\n [13, 1088], // 0000001110101\n [13, 1152], // 0000001110110\n [13, 1216], // 0000001110111\n [10, 64], [10, 64], [10, 64], [10, 64], // 0000001111xxx\n [10, 64], [10, 64], [10, 64], [10, 64]\n];\n\n// prettier-ignore\nconst blackTable2 = [\n [8, 13], [8, 13], [8, 13], [8, 13], // 00000100xxxx\n [8, 13], [8, 13], [8, 13], [8, 13],\n [8, 13], [8, 13], [8, 13], [8, 13],\n [8, 13], [8, 13], [8, 13], [8, 13],\n [11, 23], [11, 23], // 00000101000x\n [12, 50], // 000001010010\n [12, 51], // 000001010011\n [12, 44], // 000001010100\n [12, 45], // 000001010101\n [12, 46], // 000001010110\n [12, 47], // 000001010111\n [12, 57], // 000001011000\n [12, 58], // 000001011001\n [12, 61], // 000001011010\n [12, 256], // 000001011011\n [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n [12, 48], // 000001100100\n [12, 49], // 000001100101\n [12, 62], // 000001100110\n [12, 63], // 000001100111\n [12, 30], // 000001101000\n [12, 31], // 000001101001\n [12, 32], // 000001101010\n [12, 33], // 000001101011\n [12, 40], // 000001101100\n [12, 41], // 000001101101\n [11, 22], [11, 22], // 00000110111x\n [8, 14], [8, 14], [8, 14], [8, 14], // 00000111xxxx\n [8, 14], [8, 14], [8, 14], [8, 14],\n [8, 14], [8, 14], [8, 14], [8, 14],\n [8, 14], [8, 14], [8, 14], [8, 14],\n [7, 10], [7, 10], [7, 10], [7, 10], // 0000100xxxxx\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 11], [7, 11], [7, 11], [7, 11], // 0000101xxxxx\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [9, 15], [9, 15], [9, 15], [9, 15], // 000011000xxx\n [9, 15], [9, 15], [9, 15], [9, 15],\n [12, 128], // 000011001000\n [12, 192], // 000011001001\n [12, 26], // 000011001010\n [12, 27], // 000011001011\n [12, 28], // 000011001100\n [12, 29], // 000011001101\n [11, 19], [11, 19], // 00001100111x\n [11, 20], [11, 20], // 00001101000x\n [12, 34], // 000011010010\n [12, 35], // 000011010011\n [12, 36], // 000011010100\n [12, 37], // 000011010101\n [12, 38], // 000011010110\n [12, 39], // 000011010111\n [11, 21], [11, 21], // 00001101100x\n [12, 42], // 000011011010\n [12, 43], // 000011011011\n [10, 0], [10, 0], [10, 0], [10, 0], // 0000110111xx\n [7, 12], [7, 12], [7, 12], [7, 12], // 0000111xxxxx\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12]\n];\n\n// prettier-ignore\nconst blackTable3 = [\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n [6, 9], // 000100\n [6, 8], // 000101\n [5, 7], [5, 7], // 00011x\n [4, 6], [4, 6], [4, 6], [4, 6], // 0010xx\n [4, 5], [4, 5], [4, 5], [4, 5], // 0011xx\n [3, 1], [3, 1], [3, 1], [3, 1], // 010xxx\n [3, 1], [3, 1], [3, 1], [3, 1],\n [3, 4], [3, 4], [3, 4], [3, 4], // 011xxx\n [3, 4], [3, 4], [3, 4], [3, 4],\n [2, 3], [2, 3], [2, 3], [2, 3], // 10xxxx\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 2], [2, 2], [2, 2], [2, 2], // 11xxxx\n [2, 2], [2, 2], [2, 2], [2, 2],\n [2, 2], [2, 2], [2, 2], [2, 2],\n [2, 2], [2, 2], [2, 2], [2, 2]\n];\n\n/**\n * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n * @param {Object} [options] - Decoding options.\n */\nclass CCITTFaxDecoder {\n constructor(source, options = {}) {\n if (!source || typeof source.next !== \"function\") {\n throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n }\n this.source = source;\n this.eof = false;\n\n this.encoding = options.K || 0;\n this.eoline = options.EndOfLine || false;\n this.byteAlign = options.EncodedByteAlign || false;\n this.columns = options.Columns || 1728;\n this.rows = options.Rows || 0;\n let eoblock = options.EndOfBlock;\n if (eoblock === null || eoblock === undefined) {\n eoblock = true;\n }\n this.eoblock = eoblock;\n this.black = options.BlackIs1 || false;\n\n this.codingLine = new Uint32Array(this.columns + 1);\n this.refLine = new Uint32Array(this.columns + 2);\n\n this.codingLine[0] = this.columns;\n this.codingPos = 0;\n\n this.row = 0;\n this.nextLine2D = this.encoding < 0;\n this.inputBits = 0;\n this.inputBuf = 0;\n this.outputBits = 0;\n this.rowsDone = false;\n\n let code1;\n while ((code1 = this._lookBits(12)) === 0) {\n this._eatBits(1);\n }\n if (code1 === 1) {\n this._eatBits(12);\n }\n if (this.encoding > 0) {\n this.nextLine2D = !this._lookBits(1);\n this._eatBits(1);\n }\n }\n\n readNextChar() {\n if (this.eof) {\n return -1;\n }\n const refLine = this.refLine;\n const codingLine = this.codingLine;\n const columns = this.columns;\n\n let refPos, blackPixels, bits, i;\n\n if (this.outputBits === 0) {\n if (this.rowsDone) {\n this.eof = true;\n }\n if (this.eof) {\n return -1;\n }\n this.err = false;\n\n let code1, code2, code3;\n if (this.nextLine2D) {\n for (i = 0; codingLine[i] < columns; ++i) {\n refLine[i] = codingLine[i];\n }\n refLine[i++] = columns;\n refLine[i] = columns;\n codingLine[0] = 0;\n this.codingPos = 0;\n refPos = 0;\n blackPixels = 0;\n\n while (codingLine[this.codingPos] < columns) {\n code1 = this._getTwoDimCode();\n switch (code1) {\n case twoDimPass:\n this._addPixels(refLine[refPos + 1], blackPixels);\n if (refLine[refPos + 1] < columns) {\n refPos += 2;\n }\n break;\n case twoDimHoriz:\n code1 = code2 = 0;\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n do {\n code2 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n } else {\n do {\n code1 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n do {\n code2 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n }\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n if (codingLine[this.codingPos] < columns) {\n this._addPixels(\n codingLine[this.codingPos] + code2,\n blackPixels ^ 1\n );\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n break;\n case twoDimVertR3:\n this._addPixels(refLine[refPos] + 3, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertR2:\n this._addPixels(refLine[refPos] + 2, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertR1:\n this._addPixels(refLine[refPos] + 1, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVert0:\n this._addPixels(refLine[refPos], blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL3:\n this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL2:\n this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL1:\n this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case ccittEOF:\n this._addPixels(columns, 0);\n this.eof = true;\n break;\n default:\n info(\"bad 2d code\");\n this._addPixels(columns, 0);\n this.err = true;\n }\n }\n } else {\n codingLine[0] = 0;\n this.codingPos = 0;\n blackPixels = 0;\n while (codingLine[this.codingPos] < columns) {\n code1 = 0;\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n } else {\n do {\n code1 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n }\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n blackPixels ^= 1;\n }\n }\n\n let gotEOL = false;\n\n if (this.byteAlign) {\n this.inputBits &= ~7;\n }\n\n if (!this.eoblock && this.row === this.rows - 1) {\n this.rowsDone = true;\n } else {\n code1 = this._lookBits(12);\n if (this.eoline) {\n while (code1 !== ccittEOF && code1 !== 1) {\n this._eatBits(1);\n code1 = this._lookBits(12);\n }\n } else {\n while (code1 === 0) {\n this._eatBits(1);\n code1 = this._lookBits(12);\n }\n }\n if (code1 === 1) {\n this._eatBits(12);\n gotEOL = true;\n } else if (code1 === ccittEOF) {\n this.eof = true;\n }\n }\n\n if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n this.nextLine2D = !this._lookBits(1);\n this._eatBits(1);\n }\n\n if (this.eoblock && gotEOL && this.byteAlign) {\n code1 = this._lookBits(12);\n if (code1 === 1) {\n this._eatBits(12);\n if (this.encoding > 0) {\n this._lookBits(1);\n this._eatBits(1);\n }\n if (this.encoding >= 0) {\n for (i = 0; i < 4; ++i) {\n code1 = this._lookBits(12);\n if (code1 !== 1) {\n info(\"bad rtc code: \" + code1);\n }\n this._eatBits(12);\n if (this.encoding > 0) {\n this._lookBits(1);\n this._eatBits(1);\n }\n }\n }\n this.eof = true;\n }\n } else if (this.err && this.eoline) {\n while (true) {\n code1 = this._lookBits(13);\n if (code1 === ccittEOF) {\n this.eof = true;\n return -1;\n }\n if (code1 >> 1 === 1) {\n break;\n }\n this._eatBits(1);\n }\n this._eatBits(12);\n if (this.encoding > 0) {\n this._eatBits(1);\n this.nextLine2D = !(code1 & 1);\n }\n }\n\n if (codingLine[0] > 0) {\n this.outputBits = codingLine[(this.codingPos = 0)];\n } else {\n this.outputBits = codingLine[(this.codingPos = 1)];\n }\n this.row++;\n }\n\n let c;\n if (this.outputBits >= 8) {\n c = this.codingPos & 1 ? 0 : 0xff;\n this.outputBits -= 8;\n if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits =\n codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n }\n } else {\n bits = 8;\n c = 0;\n do {\n if (typeof this.outputBits !== \"number\") {\n throw new FormatError(\n 'Invalid /CCITTFaxDecode data, \"outputBits\" must be a number.'\n );\n }\n\n if (this.outputBits > bits) {\n c <<= bits;\n if (!(this.codingPos & 1)) {\n c |= 0xff >> (8 - bits);\n }\n this.outputBits -= bits;\n bits = 0;\n } else {\n c <<= this.outputBits;\n if (!(this.codingPos & 1)) {\n c |= 0xff >> (8 - this.outputBits);\n }\n bits -= this.outputBits;\n this.outputBits = 0;\n if (codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits =\n codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n } else if (bits > 0) {\n c <<= bits;\n bits = 0;\n }\n }\n } while (bits);\n }\n if (this.black) {\n c ^= 0xff;\n }\n return c;\n }\n\n /**\n * @private\n */\n _addPixels(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n info(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n if ((codingPos & 1) ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n }\n this.codingPos = codingPos;\n }\n\n /**\n * @private\n */\n _addPixelsNeg(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n info(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n if ((codingPos & 1) ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n } else if (a1 < codingLine[codingPos]) {\n if (a1 < 0) {\n info(\"invalid code\");\n this.err = true;\n a1 = 0;\n }\n while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n --codingPos;\n }\n codingLine[codingPos] = a1;\n }\n\n this.codingPos = codingPos;\n }\n\n /**\n * This function returns the code found from the table.\n * The start and end parameters set the boundaries for searching the table.\n * The limit parameter is optional. Function returns an array with three\n * values. The first array element indicates whether a valid code is being\n * returned. The second array element is the actual code. The third array\n * element indicates whether EOF was reached.\n * @private\n */\n _findTableCode(start, end, table, limit) {\n const limitValue = limit || 0;\n for (let i = start; i <= end; ++i) {\n let code = this._lookBits(i);\n if (code === ccittEOF) {\n return [true, 1, false];\n }\n if (i < end) {\n code <<= end - i;\n }\n if (!limitValue || code >= limitValue) {\n const p = table[code - limitValue];\n if (p[0] === i) {\n this._eatBits(i);\n return [true, p[1], true];\n }\n }\n }\n return [false, 0, false];\n }\n\n /**\n * @private\n */\n _getTwoDimCode() {\n let code = 0;\n let p;\n if (this.eoblock) {\n code = this._lookBits(7);\n p = twoDimTable[code];\n if (p && p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n const result = this._findTableCode(1, 7, twoDimTable);\n if (result[0] && result[2]) {\n return result[1];\n }\n }\n info(\"Bad two dim code\");\n return ccittEOF;\n }\n\n /**\n * @private\n */\n _getWhiteCode() {\n let code = 0;\n let p;\n if (this.eoblock) {\n code = this._lookBits(12);\n if (code === ccittEOF) {\n return 1;\n }\n\n if (code >> 5 === 0) {\n p = whiteTable1[code];\n } else {\n p = whiteTable2[code >> 3];\n }\n\n if (p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n let result = this._findTableCode(1, 9, whiteTable2);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(11, 12, whiteTable1);\n if (result[0]) {\n return result[1];\n }\n }\n info(\"bad white code\");\n this._eatBits(1);\n return 1;\n }\n\n /**\n * @private\n */\n _getBlackCode() {\n let code, p;\n if (this.eoblock) {\n code = this._lookBits(13);\n if (code === ccittEOF) {\n return 1;\n }\n if (code >> 7 === 0) {\n p = blackTable1[code];\n } else if (code >> 9 === 0 && code >> 7 !== 0) {\n p = blackTable2[(code >> 1) - 64];\n } else {\n p = blackTable3[code >> 7];\n }\n\n if (p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n let result = this._findTableCode(2, 6, blackTable3);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(7, 12, blackTable2, 64);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(10, 13, blackTable1);\n if (result[0]) {\n return result[1];\n }\n }\n info(\"bad black code\");\n this._eatBits(1);\n return 1;\n }\n\n /**\n * @private\n */\n _lookBits(n) {\n let c;\n while (this.inputBits < n) {\n if ((c = this.source.next()) === -1) {\n if (this.inputBits === 0) {\n return ccittEOF;\n }\n return (this.inputBuf << (n - this.inputBits)) & (0xffff >> (16 - n));\n }\n this.inputBuf = (this.inputBuf << 8) | c;\n this.inputBits += 8;\n }\n return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\n }\n\n /**\n * @private\n */\n _eatBits(n) {\n if ((this.inputBits -= n) < 0) {\n this.inputBits = 0;\n }\n }\n}\n\nexport { CCITTFaxDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The flate stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nconst codeLenCodeMap = new Int32Array([\n 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,\n]);\n\nconst lengthDecode = new Int32Array([\n 0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102,\n]);\n\nconst distDecode = new Int32Array([\n 0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001,\n]);\n\nconst fixedLitCodeTab = [\n new Int32Array([\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff,\n ]),\n 9,\n];\n\nconst fixedDistCodeTab = [\n new Int32Array([\n 0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000,\n ]),\n 5,\n];\n\nclass FlateStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n const cmf = str.getByte();\n const flg = str.getByte();\n if (cmf === -1 || flg === -1) {\n throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n }\n if ((cmf & 0x0f) !== 0x08) {\n throw new FormatError(\n `Unknown compression method in flate stream: ${cmf}, ${flg}`\n );\n }\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n }\n if (flg & 0x20) {\n throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n }\n\n this.codeSize = 0;\n this.codeBuf = 0;\n }\n\n getBits(bits) {\n const str = this.str;\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n\n let b;\n while (codeSize < bits) {\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n b = codeBuf & ((1 << bits) - 1);\n this.codeBuf = codeBuf >> bits;\n this.codeSize = codeSize -= bits;\n\n return b;\n }\n\n getCode(table) {\n const str = this.str;\n const codes = table[0];\n const maxLen = table[1];\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n\n let b;\n while (codeSize < maxLen) {\n if ((b = str.getByte()) === -1) {\n // premature end of stream. code might however still be valid.\n // codeSize < codeLen check below guards against incomplete codeVal.\n break;\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n const code = codes[codeBuf & ((1 << maxLen) - 1)];\n const codeLen = code >> 16;\n const codeVal = code & 0xffff;\n if (codeLen < 1 || codeSize < codeLen) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n this.codeBuf = codeBuf >> codeLen;\n this.codeSize = codeSize - codeLen;\n return codeVal;\n }\n\n generateHuffmanTable(lengths) {\n const n = lengths.length;\n\n // find max code length\n let maxLen = 0;\n let i;\n for (i = 0; i < n; ++i) {\n if (lengths[i] > maxLen) {\n maxLen = lengths[i];\n }\n }\n\n // build the table\n const size = 1 << maxLen;\n const codes = new Int32Array(size);\n for (\n let len = 1, code = 0, skip = 2;\n len <= maxLen;\n ++len, code <<= 1, skip <<= 1\n ) {\n for (let val = 0; val < n; ++val) {\n if (lengths[val] === len) {\n // bit-reverse the code\n let code2 = 0;\n let t = code;\n for (i = 0; i < len; ++i) {\n code2 = (code2 << 1) | (t & 1);\n t >>= 1;\n }\n\n // fill the table entries\n for (i = code2; i < size; i += skip) {\n codes[i] = (len << 16) | val;\n }\n ++code;\n }\n }\n }\n\n return [codes, maxLen];\n }\n\n readBlock() {\n let buffer, len;\n const str = this.str;\n // read block header\n let hdr = this.getBits(3);\n if (hdr & 1) {\n this.eof = true;\n }\n hdr >>= 1;\n\n if (hdr === 0) {\n // uncompressed block\n let b;\n\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n let blockLen = b;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n blockLen |= b << 8;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n let check = b;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n check |= b << 8;\n if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n // Ignoring error for bad \"empty\" block (see issue 1277)\n throw new FormatError(\"Bad uncompressed block length in flate stream\");\n }\n\n this.codeBuf = 0;\n this.codeSize = 0;\n\n const bufferLength = this.bufferLength,\n end = bufferLength + blockLen;\n buffer = this.ensureBuffer(end);\n this.bufferLength = end;\n\n if (blockLen === 0) {\n if (str.peekByte() === -1) {\n this.eof = true;\n }\n } else {\n const block = str.getBytes(blockLen);\n buffer.set(block, bufferLength);\n if (block.length < blockLen) {\n this.eof = true;\n }\n }\n return;\n }\n\n let litCodeTable;\n let distCodeTable;\n if (hdr === 1) {\n // compressed block, fixed codes\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n } else if (hdr === 2) {\n // compressed block, dynamic codes\n const numLitCodes = this.getBits(5) + 257;\n const numDistCodes = this.getBits(5) + 1;\n const numCodeLenCodes = this.getBits(4) + 4;\n\n // build the code lengths code table\n const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n let i;\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n }\n const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n // build the literal and distance code tables\n len = 0;\n i = 0;\n const codes = numLitCodes + numDistCodes;\n const codeLengths = new Uint8Array(codes);\n let bitsLength, bitsOffset, what;\n while (i < codes) {\n const code = this.getCode(codeLenCodeTab);\n if (code === 16) {\n bitsLength = 2;\n bitsOffset = 3;\n what = len;\n } else if (code === 17) {\n bitsLength = 3;\n bitsOffset = 3;\n what = len = 0;\n } else if (code === 18) {\n bitsLength = 7;\n bitsOffset = 11;\n what = len = 0;\n } else {\n codeLengths[i++] = len = code;\n continue;\n }\n\n let repeatLength = this.getBits(bitsLength) + bitsOffset;\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n\n litCodeTable = this.generateHuffmanTable(\n codeLengths.subarray(0, numLitCodes)\n );\n distCodeTable = this.generateHuffmanTable(\n codeLengths.subarray(numLitCodes, codes)\n );\n } else {\n throw new FormatError(\"Unknown block type in flate stream\");\n }\n\n buffer = this.buffer;\n let limit = buffer ? buffer.length : 0;\n let pos = this.bufferLength;\n while (true) {\n let code1 = this.getCode(litCodeTable);\n if (code1 < 256) {\n if (pos + 1 >= limit) {\n buffer = this.ensureBuffer(pos + 1);\n limit = buffer.length;\n }\n buffer[pos++] = code1;\n continue;\n }\n if (code1 === 256) {\n this.bufferLength = pos;\n return;\n }\n code1 -= 257;\n code1 = lengthDecode[code1];\n let code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n len = (code1 & 0xffff) + code2;\n code1 = this.getCode(distCodeTable);\n code1 = distDecode[code1];\n code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n const dist = (code1 & 0xffff) + code2;\n if (pos + len >= limit) {\n buffer = this.ensureBuffer(pos + len);\n limit = buffer.length;\n }\n for (let k = 0; k < len; ++k, ++pos) {\n buffer[pos] = buffer[pos - dist];\n }\n }\n }\n}\n\nexport { FlateStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isDict, isStream } from \"./primitives.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Jbig2Image } from \"./jbig2.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JBIG2's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass Jbig2Stream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jbig2Image = new Jbig2Image();\n\n const chunks = [];\n if (isDict(this.params)) {\n const globalsStream = this.params.get(\"JBIG2Globals\");\n if (isStream(globalsStream)) {\n const globals = globalsStream.getBytes();\n chunks.push({ data: globals, start: 0, end: globals.length });\n }\n }\n chunks.push({ data: this.bytes, start: 0, end: this.bytes.length });\n const data = jbig2Image.parseChunks(chunks);\n const dataLength = data.length;\n\n // JBIG2 had black as 1 and white as 0, inverting the colors\n for (let i = 0; i < dataLength; i++) {\n data[i] ^= 0xff;\n }\n this.buffer = data;\n this.bufferLength = dataLength;\n this.eof = true;\n }\n}\n\nexport { Jbig2Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, shadow } from \"../shared/util.js\";\nimport { log2, readInt8, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\n\nclass Jbig2Error extends BaseException {\n constructor(msg) {\n super(`JBIG2 error: ${msg}`, \"Jbig2Error\");\n }\n}\n\n// Utility data structures\nclass ContextCache {\n getContexts(id) {\n if (id in this) {\n return this[id];\n }\n return (this[id] = new Int8Array(1 << 16));\n }\n}\n\nclass DecodingContext {\n constructor(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n }\n\n get decoder() {\n const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n return shadow(this, \"decoder\", decoder);\n }\n\n get contextCache() {\n const cache = new ContextCache();\n return shadow(this, \"contextCache\", cache);\n }\n}\n\n// Annex A. Arithmetic Integer Decoding Procedure\n// A.2 Procedure for decoding values\nfunction decodeInteger(contextCache, procedure, decoder) {\n const contexts = contextCache.getContexts(procedure);\n let prev = 1;\n\n function readBits(length) {\n let v = 0;\n for (let i = 0; i < length; i++) {\n const bit = decoder.readBit(contexts, prev);\n prev = prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n v = (v << 1) | bit;\n }\n return v >>> 0;\n }\n\n const sign = readBits(1);\n // prettier-ignore\n /* eslint-disable no-nested-ternary */\n const value = readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(32) + 4436) :\n readBits(12) + 340) :\n readBits(8) + 84) :\n readBits(6) + 20) :\n readBits(4) + 4) :\n readBits(2);\n /* eslint-enable no-nested-ternary */\n if (sign === 0) {\n return value;\n } else if (value > 0) {\n return -value;\n }\n return null;\n}\n\n// A.3 The IAID decoding procedure\nfunction decodeIAID(contextCache, decoder, codeLength) {\n const contexts = contextCache.getContexts(\"IAID\");\n\n let prev = 1;\n for (let i = 0; i < codeLength; i++) {\n const bit = decoder.readBit(contexts, prev);\n prev = (prev << 1) | bit;\n }\n if (codeLength < 31) {\n return prev & ((1 << codeLength) - 1);\n }\n return prev & 0x7fffffff;\n}\n\n// 7.3 Segment types\nconst SegmentTypes = [\n \"SymbolDictionary\",\n null,\n null,\n null,\n \"IntermediateTextRegion\",\n null,\n \"ImmediateTextRegion\",\n \"ImmediateLosslessTextRegion\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"PatternDictionary\",\n null,\n null,\n null,\n \"IntermediateHalftoneRegion\",\n null,\n \"ImmediateHalftoneRegion\",\n \"ImmediateLosslessHalftoneRegion\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"IntermediateGenericRegion\",\n null,\n \"ImmediateGenericRegion\",\n \"ImmediateLosslessGenericRegion\",\n \"IntermediateGenericRefinementRegion\",\n null,\n \"ImmediateGenericRefinementRegion\",\n \"ImmediateLosslessGenericRefinementRegion\",\n null,\n null,\n null,\n null,\n \"PageInformation\",\n \"EndOfPage\",\n \"EndOfStripe\",\n \"EndOfFile\",\n \"Profiles\",\n \"Tables\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"Extension\",\n];\n\nconst CodingTemplates = [\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: 2, y: -1 },\n { x: -4, y: 0 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: 2, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: 2, y: -1 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -3, y: -1 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -4, y: 0 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n];\n\nconst RefinementTemplates = [\n {\n coding: [\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n ],\n reference: [\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: -1, y: 1 },\n { x: 0, y: 1 },\n { x: 1, y: 1 },\n ],\n },\n {\n coding: [\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n ],\n reference: [\n { x: 0, y: -1 },\n { x: -1, y: 0 },\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: 0, y: 1 },\n { x: 1, y: 1 },\n ],\n },\n];\n\n// See 6.2.5.7 Decoding the bitmap.\nconst ReusedContexts = [\n 0x9b25, // 10011 0110010 0101\n 0x0795, // 0011 110010 101\n 0x00e5, // 001 11001 01\n 0x0195, // 011001 0101\n];\n\nconst RefinementReusedContexts = [\n 0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n 0x0008, // '0000' + '001000'\n];\n\nfunction decodeBitmapTemplate0(width, height, decodingContext) {\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\n const bitmap = [];\n let contextLabel, i, j, pixel, row, row1, row2;\n\n // ...ooooo....\n // ..ooooooo... Context template for current pixel (X)\n // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n const OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111\n\n for (i = 0; i < height; i++) {\n row = bitmap[i] = new Uint8Array(width);\n row1 = i < 1 ? row : bitmap[i - 1];\n row2 = i < 2 ? row : bitmap[i - 2];\n\n // At the beginning of each row:\n // Fill contextLabel with pixels that are above/right of (X)\n contextLabel =\n (row2[0] << 13) |\n (row2[1] << 12) |\n (row2[2] << 11) |\n (row1[0] << 7) |\n (row1[1] << 6) |\n (row1[2] << 5) |\n (row1[3] << 4);\n\n for (j = 0; j < width; j++) {\n row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n // At each pixel: Clear contextLabel pixels that are shifted\n // out of the context, then add new ones.\n contextLabel =\n ((contextLabel & OLD_PIXEL_MASK) << 1) |\n (j + 3 < width ? row2[j + 3] << 11 : 0) |\n (j + 4 < width ? row1[j + 4] << 4 : 0) |\n pixel;\n }\n }\n\n return bitmap;\n}\n\n// 6.2 Generic Region Decoding Procedure\nfunction decodeBitmap(\n mmr,\n width,\n height,\n templateIndex,\n prediction,\n skip,\n at,\n decodingContext\n) {\n if (mmr) {\n const input = new Reader(\n decodingContext.data,\n decodingContext.start,\n decodingContext.end\n );\n return decodeMMRBitmap(input, width, height, false);\n }\n\n // Use optimized version for the most common case\n if (\n templateIndex === 0 &&\n !skip &&\n !prediction &&\n at.length === 4 &&\n at[0].x === 3 &&\n at[0].y === -1 &&\n at[1].x === -3 &&\n at[1].y === -1 &&\n at[2].x === 2 &&\n at[2].y === -2 &&\n at[3].x === -2 &&\n at[3].y === -2\n ) {\n return decodeBitmapTemplate0(width, height, decodingContext);\n }\n\n const useskip = !!skip;\n const template = CodingTemplates[templateIndex].concat(at);\n\n // Sorting is non-standard, and it is not required. But sorting increases\n // the number of template bits that can be reused from the previous\n // contextLabel in the main loop.\n template.sort(function (a, b) {\n return a.y - b.y || a.x - b.x;\n });\n\n const templateLength = template.length;\n const templateX = new Int8Array(templateLength);\n const templateY = new Int8Array(templateLength);\n const changingTemplateEntries = [];\n let reuseMask = 0,\n minX = 0,\n maxX = 0,\n minY = 0;\n let c, k;\n\n for (k = 0; k < templateLength; k++) {\n templateX[k] = template[k].x;\n templateY[k] = template[k].y;\n minX = Math.min(minX, template[k].x);\n maxX = Math.max(maxX, template[k].x);\n minY = Math.min(minY, template[k].y);\n // Check if the template pixel appears in two consecutive context labels,\n // so it can be reused. Otherwise, we add it to the list of changing\n // template entries.\n if (\n k < templateLength - 1 &&\n template[k].y === template[k + 1].y &&\n template[k].x === template[k + 1].x - 1\n ) {\n reuseMask |= 1 << (templateLength - 1 - k);\n } else {\n changingTemplateEntries.push(k);\n }\n }\n const changingEntriesLength = changingTemplateEntries.length;\n\n const changingTemplateX = new Int8Array(changingEntriesLength);\n const changingTemplateY = new Int8Array(changingEntriesLength);\n const changingTemplateBit = new Uint16Array(changingEntriesLength);\n for (c = 0; c < changingEntriesLength; c++) {\n k = changingTemplateEntries[c];\n changingTemplateX[c] = template[k].x;\n changingTemplateY[c] = template[k].y;\n changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n }\n\n // Get the safe bounding box edges from the width, height, minX, maxX, minY\n const sbb_left = -minX;\n const sbb_top = -minY;\n const sbb_right = width - maxX;\n\n const pseudoPixelContext = ReusedContexts[templateIndex];\n let row = new Uint8Array(width);\n const bitmap = [];\n\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n let ltp = 0,\n j,\n i0,\n j0,\n contextLabel = 0,\n bit,\n shift;\n for (let i = 0; i < height; i++) {\n if (prediction) {\n const sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n bitmap.push(row); // duplicate previous row\n continue;\n }\n }\n row = new Uint8Array(row);\n bitmap.push(row);\n for (j = 0; j < width; j++) {\n if (useskip && skip[i][j]) {\n row[j] = 0;\n continue;\n }\n // Are we in the middle of a scanline, so we can reuse contextLabel\n // bits?\n if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n // If yes, we can just shift the bits that are reusable and only\n // fetch the remaining ones.\n contextLabel = (contextLabel << 1) & reuseMask;\n for (k = 0; k < changingEntriesLength; k++) {\n i0 = i + changingTemplateY[k];\n j0 = j + changingTemplateX[k];\n bit = bitmap[i0][j0];\n if (bit) {\n bit = changingTemplateBit[k];\n contextLabel |= bit;\n }\n }\n } else {\n // compute the contextLabel from scratch\n contextLabel = 0;\n shift = templateLength - 1;\n for (k = 0; k < templateLength; k++, shift--) {\n j0 = j + templateX[k];\n if (j0 >= 0 && j0 < width) {\n i0 = i + templateY[k];\n if (i0 >= 0) {\n bit = bitmap[i0][j0];\n if (bit) {\n contextLabel |= bit << shift;\n }\n }\n }\n }\n }\n const pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n return bitmap;\n}\n\n// 6.3.2 Generic Refinement Region Decoding Procedure\nfunction decodeRefinement(\n width,\n height,\n templateIndex,\n referenceBitmap,\n offsetX,\n offsetY,\n prediction,\n at,\n decodingContext\n) {\n let codingTemplate = RefinementTemplates[templateIndex].coding;\n if (templateIndex === 0) {\n codingTemplate = codingTemplate.concat([at[0]]);\n }\n const codingTemplateLength = codingTemplate.length;\n const codingTemplateX = new Int32Array(codingTemplateLength);\n const codingTemplateY = new Int32Array(codingTemplateLength);\n let k;\n for (k = 0; k < codingTemplateLength; k++) {\n codingTemplateX[k] = codingTemplate[k].x;\n codingTemplateY[k] = codingTemplate[k].y;\n }\n\n let referenceTemplate = RefinementTemplates[templateIndex].reference;\n if (templateIndex === 0) {\n referenceTemplate = referenceTemplate.concat([at[1]]);\n }\n const referenceTemplateLength = referenceTemplate.length;\n const referenceTemplateX = new Int32Array(referenceTemplateLength);\n const referenceTemplateY = new Int32Array(referenceTemplateLength);\n for (k = 0; k < referenceTemplateLength; k++) {\n referenceTemplateX[k] = referenceTemplate[k].x;\n referenceTemplateY[k] = referenceTemplate[k].y;\n }\n const referenceWidth = referenceBitmap[0].length;\n const referenceHeight = referenceBitmap.length;\n\n const pseudoPixelContext = RefinementReusedContexts[templateIndex];\n const bitmap = [];\n\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n let ltp = 0;\n for (let i = 0; i < height; i++) {\n if (prediction) {\n const sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n throw new Jbig2Error(\"prediction is not supported\");\n }\n }\n const row = new Uint8Array(width);\n bitmap.push(row);\n for (let j = 0; j < width; j++) {\n let i0, j0;\n let contextLabel = 0;\n for (k = 0; k < codingTemplateLength; k++) {\n i0 = i + codingTemplateY[k];\n j0 = j + codingTemplateX[k];\n if (i0 < 0 || j0 < 0 || j0 >= width) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n }\n }\n for (k = 0; k < referenceTemplateLength; k++) {\n i0 = i + referenceTemplateY[k] - offsetY;\n j0 = j + referenceTemplateX[k] - offsetX;\n if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n }\n }\n const pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n\n return bitmap;\n}\n\n// 6.5.5 Decoding the symbol dictionary\nfunction decodeSymbolDictionary(\n huffman,\n refinement,\n symbols,\n numberOfNewSymbols,\n numberOfExportedSymbols,\n huffmanTables,\n templateIndex,\n at,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n huffmanInput\n) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n }\n\n const newSymbols = [];\n let currentHeight = 0;\n let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n let tableB1, symbolWidths;\n if (huffman) {\n tableB1 = getStandardTable(1); // standard table B.1\n symbolWidths = [];\n symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n }\n\n while (newSymbols.length < numberOfNewSymbols) {\n const deltaHeight = huffman\n ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADH\", decoder); // 6.5.6\n currentHeight += deltaHeight;\n let currentWidth = 0,\n totalWidth = 0;\n const firstSymbol = huffman ? symbolWidths.length : 0;\n while (true) {\n const deltaWidth = huffman\n ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADW\", decoder); // 6.5.7\n if (deltaWidth === null) {\n break; // OOB\n }\n currentWidth += deltaWidth;\n totalWidth += currentWidth;\n let bitmap;\n if (refinement) {\n // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n const numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n if (numberOfInstances > 1) {\n bitmap = decodeTextRegion(\n huffman,\n refinement,\n currentWidth,\n currentHeight,\n 0,\n numberOfInstances,\n 1, // strip size\n symbols.concat(newSymbols),\n symbolCodeLength,\n 0, // transposed\n 0, // ds offset\n 1, // top left 7.4.3.1.1\n 0, // OR operator\n huffmanTables,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n 0,\n huffmanInput\n );\n } else {\n const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n const symbol =\n symbolId < symbols.length\n ? symbols[symbolId]\n : newSymbols[symbolId - symbols.length];\n bitmap = decodeRefinement(\n currentWidth,\n currentHeight,\n refinementTemplateIndex,\n symbol,\n rdx,\n rdy,\n false,\n refinementAt,\n decodingContext\n );\n }\n newSymbols.push(bitmap);\n } else if (huffman) {\n // Store only symbol width and decode a collective bitmap when the\n // height class is done.\n symbolWidths.push(currentWidth);\n } else {\n // 6.5.8.1 Direct-coded symbol bitmap\n bitmap = decodeBitmap(\n false,\n currentWidth,\n currentHeight,\n templateIndex,\n false,\n null,\n at,\n decodingContext\n );\n newSymbols.push(bitmap);\n }\n }\n if (huffman && !refinement) {\n // 6.5.9 Height class collective bitmap\n const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n huffmanInput.byteAlign();\n let collectiveBitmap;\n if (bitmapSize === 0) {\n // Uncompressed collective bitmap\n collectiveBitmap = readUncompressedBitmap(\n huffmanInput,\n totalWidth,\n currentHeight\n );\n } else {\n // MMR collective bitmap\n const originalEnd = huffmanInput.end;\n const bitmapEnd = huffmanInput.position + bitmapSize;\n huffmanInput.end = bitmapEnd;\n collectiveBitmap = decodeMMRBitmap(\n huffmanInput,\n totalWidth,\n currentHeight,\n false\n );\n huffmanInput.end = originalEnd;\n huffmanInput.position = bitmapEnd;\n }\n const numberOfSymbolsDecoded = symbolWidths.length;\n if (firstSymbol === numberOfSymbolsDecoded - 1) {\n // collectiveBitmap is a single symbol.\n newSymbols.push(collectiveBitmap);\n } else {\n // Divide collectiveBitmap into symbols.\n let i,\n y,\n xMin = 0,\n xMax,\n bitmapWidth,\n symbolBitmap;\n for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n bitmapWidth = symbolWidths[i];\n xMax = xMin + bitmapWidth;\n symbolBitmap = [];\n for (y = 0; y < currentHeight; y++) {\n symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n newSymbols.push(symbolBitmap);\n xMin = xMax;\n }\n }\n }\n }\n\n // 6.5.10 Exported symbols\n const exportedSymbols = [],\n flags = [];\n let currentFlag = false,\n i,\n ii;\n const totalSymbolsLength = symbols.length + numberOfNewSymbols;\n while (flags.length < totalSymbolsLength) {\n let runLength = huffman\n ? tableB1.decode(huffmanInput)\n : decodeInteger(contextCache, \"IAEX\", decoder);\n while (runLength--) {\n flags.push(currentFlag);\n }\n currentFlag = !currentFlag;\n }\n for (i = 0, ii = symbols.length; i < ii; i++) {\n if (flags[i]) {\n exportedSymbols.push(symbols[i]);\n }\n }\n for (let j = 0; j < numberOfNewSymbols; i++, j++) {\n if (flags[i]) {\n exportedSymbols.push(newSymbols[j]);\n }\n }\n return exportedSymbols;\n}\n\nfunction decodeTextRegion(\n huffman,\n refinement,\n width,\n height,\n defaultPixelValue,\n numberOfSymbolInstances,\n stripSize,\n inputSymbols,\n symbolCodeLength,\n transposed,\n dsOffset,\n referenceCorner,\n combinationOperator,\n huffmanTables,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n logStripSize,\n huffmanInput\n) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n // Prepare bitmap\n const bitmap = [];\n let i, row;\n for (i = 0; i < height; i++) {\n row = new Uint8Array(width);\n if (defaultPixelValue) {\n for (let j = 0; j < width; j++) {\n row[j] = defaultPixelValue;\n }\n }\n bitmap.push(row);\n }\n\n const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n\n let stripT = huffman\n ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n let firstS = 0;\n i = 0;\n while (i < numberOfSymbolInstances) {\n const deltaT = huffman\n ? huffmanTables.tableDeltaT.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n stripT += deltaT;\n\n const deltaFirstS = huffman\n ? huffmanTables.tableFirstS.decode(huffmanInput)\n : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n firstS += deltaFirstS;\n let currentS = firstS;\n do {\n let currentT = 0; // 6.4.9\n if (stripSize > 1) {\n currentT = huffman\n ? huffmanInput.readBits(logStripSize)\n : decodeInteger(contextCache, \"IAIT\", decoder);\n }\n const t = stripSize * stripT + currentT;\n const symbolId = huffman\n ? huffmanTables.symbolIDTable.decode(huffmanInput)\n : decodeIAID(contextCache, decoder, symbolCodeLength);\n const applyRefinement =\n refinement &&\n (huffman\n ? huffmanInput.readBit()\n : decodeInteger(contextCache, \"IARI\", decoder));\n let symbolBitmap = inputSymbols[symbolId];\n let symbolWidth = symbolBitmap[0].length;\n let symbolHeight = symbolBitmap.length;\n if (applyRefinement) {\n const rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n const rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n symbolWidth += rdw;\n symbolHeight += rdh;\n symbolBitmap = decodeRefinement(\n symbolWidth,\n symbolHeight,\n refinementTemplateIndex,\n symbolBitmap,\n (rdw >> 1) + rdx,\n (rdh >> 1) + rdy,\n false,\n refinementAt,\n decodingContext\n );\n }\n const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n let s2, t2, symbolRow;\n if (transposed) {\n // Place Symbol Bitmap from T1,S1\n for (s2 = 0; s2 < symbolHeight; s2++) {\n row = bitmap[offsetS + s2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[s2];\n // To ignore Parts of Symbol bitmap which goes\n // outside bitmap region\n const maxWidth = Math.min(width - offsetT, symbolWidth);\n switch (combinationOperator) {\n case 0: // OR\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] |= symbolRow[t2];\n }\n break;\n case 2: // XOR\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] ^= symbolRow[t2];\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n currentS += symbolHeight - 1;\n } else {\n for (t2 = 0; t2 < symbolHeight; t2++) {\n row = bitmap[offsetT + t2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[t2];\n switch (combinationOperator) {\n case 0: // OR\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] |= symbolRow[s2];\n }\n break;\n case 2: // XOR\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] ^= symbolRow[s2];\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n currentS += symbolWidth - 1;\n }\n i++;\n const deltaS = huffman\n ? huffmanTables.tableDeltaS.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADS\", decoder); // 6.4.8\n if (deltaS === null) {\n break; // OOB\n }\n currentS += deltaS + dsOffset;\n } while (true);\n }\n return bitmap;\n}\n\nfunction decodePatternDictionary(\n mmr,\n patternWidth,\n patternHeight,\n maxPatternIndex,\n template,\n decodingContext\n) {\n const at = [];\n if (!mmr) {\n at.push({\n x: -patternWidth,\n y: 0,\n });\n if (template === 0) {\n at.push(\n {\n x: -3,\n y: -1,\n },\n {\n x: 2,\n y: -2,\n },\n {\n x: -2,\n y: -2,\n }\n );\n }\n }\n const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n const collectiveBitmap = decodeBitmap(\n mmr,\n collectiveWidth,\n patternHeight,\n template,\n false,\n null,\n at,\n decodingContext\n );\n // Divide collective bitmap into patterns.\n const patterns = [];\n for (let i = 0; i <= maxPatternIndex; i++) {\n const patternBitmap = [];\n const xMin = patternWidth * i;\n const xMax = xMin + patternWidth;\n for (let y = 0; y < patternHeight; y++) {\n patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n patterns.push(patternBitmap);\n }\n return patterns;\n}\n\nfunction decodeHalftoneRegion(\n mmr,\n patterns,\n template,\n regionWidth,\n regionHeight,\n defaultPixelValue,\n enableSkip,\n combinationOperator,\n gridWidth,\n gridHeight,\n gridOffsetX,\n gridOffsetY,\n gridVectorX,\n gridVectorY,\n decodingContext\n) {\n const skip = null;\n if (enableSkip) {\n throw new Jbig2Error(\"skip is not supported\");\n }\n if (combinationOperator !== 0) {\n throw new Jbig2Error(\n `operator \"${combinationOperator}\" is not supported in halftone region`\n );\n }\n\n // Prepare bitmap.\n const regionBitmap = [];\n let i, j, row;\n for (i = 0; i < regionHeight; i++) {\n row = new Uint8Array(regionWidth);\n if (defaultPixelValue) {\n for (j = 0; j < regionWidth; j++) {\n row[j] = defaultPixelValue;\n }\n }\n regionBitmap.push(row);\n }\n\n const numberOfPatterns = patterns.length;\n const pattern0 = patterns[0];\n const patternWidth = pattern0[0].length,\n patternHeight = pattern0.length;\n const bitsPerValue = log2(numberOfPatterns);\n const at = [];\n if (!mmr) {\n at.push({\n x: template <= 1 ? 3 : 2,\n y: -1,\n });\n if (template === 0) {\n at.push(\n {\n x: -3,\n y: -1,\n },\n {\n x: 2,\n y: -2,\n },\n {\n x: -2,\n y: -2,\n }\n );\n }\n }\n // Annex C. Gray-scale Image Decoding Procedure.\n const grayScaleBitPlanes = [];\n let mmrInput, bitmap;\n if (mmr) {\n // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n // the end of each bitmap, so EOFBs must be decoded.\n mmrInput = new Reader(\n decodingContext.data,\n decodingContext.start,\n decodingContext.end\n );\n }\n for (i = bitsPerValue - 1; i >= 0; i--) {\n if (mmr) {\n bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n } else {\n bitmap = decodeBitmap(\n false,\n gridWidth,\n gridHeight,\n template,\n false,\n skip,\n at,\n decodingContext\n );\n }\n grayScaleBitPlanes[i] = bitmap;\n }\n // 6.6.5.2 Rendering the patterns.\n let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n for (mg = 0; mg < gridHeight; mg++) {\n for (ng = 0; ng < gridWidth; ng++) {\n bit = 0;\n patternIndex = 0;\n for (j = bitsPerValue - 1; j >= 0; j--) {\n bit ^= grayScaleBitPlanes[j][mg][ng]; // Gray decoding\n patternIndex |= bit << j;\n }\n patternBitmap = patterns[patternIndex];\n x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n // Draw patternBitmap at (x, y).\n if (\n x >= 0 &&\n x + patternWidth <= regionWidth &&\n y >= 0 &&\n y + patternHeight <= regionHeight\n ) {\n for (i = 0; i < patternHeight; i++) {\n regionRow = regionBitmap[y + i];\n patternRow = patternBitmap[i];\n for (j = 0; j < patternWidth; j++) {\n regionRow[x + j] |= patternRow[j];\n }\n }\n } else {\n let regionX, regionY;\n for (i = 0; i < patternHeight; i++) {\n regionY = y + i;\n if (regionY < 0 || regionY >= regionHeight) {\n continue;\n }\n regionRow = regionBitmap[regionY];\n patternRow = patternBitmap[i];\n for (j = 0; j < patternWidth; j++) {\n regionX = x + j;\n if (regionX >= 0 && regionX < regionWidth) {\n regionRow[regionX] |= patternRow[j];\n }\n }\n }\n }\n }\n }\n return regionBitmap;\n}\n\nfunction readSegmentHeader(data, start) {\n const segmentHeader = {};\n segmentHeader.number = readUint32(data, start);\n const flags = data[start + 4];\n const segmentType = flags & 0x3f;\n if (!SegmentTypes[segmentType]) {\n throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n }\n segmentHeader.type = segmentType;\n segmentHeader.typeName = SegmentTypes[segmentType];\n segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n const pageAssociationFieldSize = !!(flags & 0x40);\n const referredFlags = data[start + 5];\n let referredToCount = (referredFlags >> 5) & 7;\n const retainBits = [referredFlags & 31];\n let position = start + 6;\n if (referredFlags === 7) {\n referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n position += 3;\n let bytes = (referredToCount + 7) >> 3;\n retainBits[0] = data[position++];\n while (--bytes > 0) {\n retainBits.push(data[position++]);\n }\n } else if (referredFlags === 5 || referredFlags === 6) {\n throw new Jbig2Error(\"invalid referred-to flags\");\n }\n\n segmentHeader.retainBits = retainBits;\n\n let referredToSegmentNumberSize = 4;\n if (segmentHeader.number <= 256) {\n referredToSegmentNumberSize = 1;\n } else if (segmentHeader.number <= 65536) {\n referredToSegmentNumberSize = 2;\n }\n const referredTo = [];\n let i, ii;\n for (i = 0; i < referredToCount; i++) {\n let number;\n if (referredToSegmentNumberSize === 1) {\n number = data[position];\n } else if (referredToSegmentNumberSize === 2) {\n number = readUint16(data, position);\n } else {\n number = readUint32(data, position);\n }\n referredTo.push(number);\n position += referredToSegmentNumberSize;\n }\n segmentHeader.referredTo = referredTo;\n if (!pageAssociationFieldSize) {\n segmentHeader.pageAssociation = data[position++];\n } else {\n segmentHeader.pageAssociation = readUint32(data, position);\n position += 4;\n }\n segmentHeader.length = readUint32(data, position);\n position += 4;\n\n if (segmentHeader.length === 0xffffffff) {\n // 7.2.7 Segment data length, unknown segment length\n if (segmentType === 38) {\n // ImmediateGenericRegion\n const genericRegionInfo = readRegionSegmentInformation(data, position);\n const genericRegionSegmentFlags =\n data[position + RegionSegmentInformationFieldLength];\n const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n // searching for the segment end\n const searchPatternLength = 6;\n const searchPattern = new Uint8Array(searchPatternLength);\n if (!genericRegionMmr) {\n searchPattern[0] = 0xff;\n searchPattern[1] = 0xac;\n }\n searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\n searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\n searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\n searchPattern[5] = genericRegionInfo.height & 0xff;\n for (i = position, ii = data.length; i < ii; i++) {\n let j = 0;\n while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n j++;\n }\n if (j === searchPatternLength) {\n segmentHeader.length = i + searchPatternLength;\n break;\n }\n }\n if (segmentHeader.length === 0xffffffff) {\n throw new Jbig2Error(\"segment end was not found\");\n }\n } else {\n throw new Jbig2Error(\"invalid unknown segment length\");\n }\n }\n segmentHeader.headerEnd = position;\n return segmentHeader;\n}\n\nfunction readSegments(header, data, start, end) {\n const segments = [];\n let position = start;\n while (position < end) {\n const segmentHeader = readSegmentHeader(data, position);\n position = segmentHeader.headerEnd;\n const segment = {\n header: segmentHeader,\n data,\n };\n if (!header.randomAccess) {\n segment.start = position;\n position += segmentHeader.length;\n segment.end = position;\n }\n segments.push(segment);\n if (segmentHeader.type === 51) {\n break; // end of file is found\n }\n }\n if (header.randomAccess) {\n for (let i = 0, ii = segments.length; i < ii; i++) {\n segments[i].start = position;\n position += segments[i].header.length;\n segments[i].end = position;\n }\n }\n return segments;\n}\n\n// 7.4.1 Region segment information field\nfunction readRegionSegmentInformation(data, start) {\n return {\n width: readUint32(data, start),\n height: readUint32(data, start + 4),\n x: readUint32(data, start + 8),\n y: readUint32(data, start + 12),\n combinationOperator: data[start + 16] & 7,\n };\n}\nconst RegionSegmentInformationFieldLength = 17;\n\nfunction processSegment(segment, visitor) {\n const header = segment.header;\n\n const data = segment.data,\n end = segment.end;\n let position = segment.start;\n let args, at, i, atLength;\n switch (header.type) {\n case 0: // SymbolDictionary\n // 7.4.2 Symbol dictionary segment syntax\n const dictionary = {};\n const dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n dictionary.huffman = !!(dictionaryFlags & 1);\n dictionary.refinement = !!(dictionaryFlags & 2);\n dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n dictionary.template = (dictionaryFlags >> 10) & 3;\n dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n position += 2;\n if (!dictionary.huffman) {\n atLength = dictionary.template === 0 ? 4 : 1;\n at = [];\n for (i = 0; i < atLength; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n dictionary.at = at;\n }\n if (dictionary.refinement && !dictionary.refinementTemplate) {\n at = [];\n for (i = 0; i < 2; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n dictionary.refinementAt = at;\n }\n dictionary.numberOfExportedSymbols = readUint32(data, position);\n position += 4;\n dictionary.numberOfNewSymbols = readUint32(data, position);\n position += 4;\n args = [\n dictionary,\n header.number,\n header.referredTo,\n data,\n position,\n end,\n ];\n break;\n case 6: // ImmediateTextRegion\n case 7: // ImmediateLosslessTextRegion\n const textRegion = {};\n textRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const textRegionSegmentFlags = readUint16(data, position);\n position += 2;\n textRegion.huffman = !!(textRegionSegmentFlags & 1);\n textRegion.refinement = !!(textRegionSegmentFlags & 2);\n textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n textRegion.stripSize = 1 << textRegion.logStripSize;\n textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n textRegion.transposed = !!(textRegionSegmentFlags & 64);\n textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n if (textRegion.huffman) {\n const textRegionHuffmanFlags = readUint16(data, position);\n position += 2;\n textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n textRegion.huffmanRefinementSizeSelector = !!(\n textRegionHuffmanFlags & 0x4000\n );\n }\n if (textRegion.refinement && !textRegion.refinementTemplate) {\n at = [];\n for (i = 0; i < 2; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n textRegion.refinementAt = at;\n }\n textRegion.numberOfSymbolInstances = readUint32(data, position);\n position += 4;\n args = [textRegion, header.referredTo, data, position, end];\n break;\n case 16: // PatternDictionary\n // 7.4.4. Pattern dictionary segment syntax\n const patternDictionary = {};\n const patternDictionaryFlags = data[position++];\n patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n patternDictionary.patternWidth = data[position++];\n patternDictionary.patternHeight = data[position++];\n patternDictionary.maxPatternIndex = readUint32(data, position);\n position += 4;\n args = [patternDictionary, header.number, data, position, end];\n break;\n case 22: // ImmediateHalftoneRegion\n case 23: // ImmediateLosslessHalftoneRegion\n // 7.4.5 Halftone region segment syntax\n const halftoneRegion = {};\n halftoneRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const halftoneRegionFlags = data[position++];\n halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n halftoneRegion.gridWidth = readUint32(data, position);\n position += 4;\n halftoneRegion.gridHeight = readUint32(data, position);\n position += 4;\n halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridVectorX = readUint16(data, position);\n position += 2;\n halftoneRegion.gridVectorY = readUint16(data, position);\n position += 2;\n args = [halftoneRegion, header.referredTo, data, position, end];\n break;\n case 38: // ImmediateGenericRegion\n case 39: // ImmediateLosslessGenericRegion\n const genericRegion = {};\n genericRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const genericRegionSegmentFlags = data[position++];\n genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n if (!genericRegion.mmr) {\n atLength = genericRegion.template === 0 ? 4 : 1;\n at = [];\n for (i = 0; i < atLength; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n genericRegion.at = at;\n }\n args = [genericRegion, data, position, end];\n break;\n case 48: // PageInformation\n const pageInfo = {\n width: readUint32(data, position),\n height: readUint32(data, position + 4),\n resolutionX: readUint32(data, position + 8),\n resolutionY: readUint32(data, position + 12),\n };\n if (pageInfo.height === 0xffffffff) {\n delete pageInfo.height;\n }\n const pageSegmentFlags = data[position + 16];\n readUint16(data, position + 17); // pageStripingInformation\n pageInfo.lossless = !!(pageSegmentFlags & 1);\n pageInfo.refinement = !!(pageSegmentFlags & 2);\n pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n args = [pageInfo];\n break;\n case 49: // EndOfPage\n break;\n case 50: // EndOfStripe\n break;\n case 51: // EndOfFile\n break;\n case 53: // Tables\n args = [header.number, data, position, end];\n break;\n case 62: // 7.4.15 defines 2 extension types which\n // are comments and can be ignored.\n break;\n default:\n throw new Jbig2Error(\n `segment type ${header.typeName}(${header.type})` +\n \" is not implemented\"\n );\n }\n const callbackName = \"on\" + header.typeName;\n if (callbackName in visitor) {\n visitor[callbackName].apply(visitor, args);\n }\n}\n\nfunction processSegments(segments, visitor) {\n for (let i = 0, ii = segments.length; i < ii; i++) {\n processSegment(segments[i], visitor);\n }\n}\n\nfunction parseJbig2Chunks(chunks) {\n const visitor = new SimpleSegmentVisitor();\n for (let i = 0, ii = chunks.length; i < ii; i++) {\n const chunk = chunks[i];\n const segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n processSegments(segments, visitor);\n }\n return visitor.buffer;\n}\n\nfunction parseJbig2(data) {\n const end = data.length;\n let position = 0;\n\n if (\n data[position] !== 0x97 ||\n data[position + 1] !== 0x4a ||\n data[position + 2] !== 0x42 ||\n data[position + 3] !== 0x32 ||\n data[position + 4] !== 0x0d ||\n data[position + 5] !== 0x0a ||\n data[position + 6] !== 0x1a ||\n data[position + 7] !== 0x0a\n ) {\n throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n }\n\n const header = Object.create(null);\n position += 8;\n const flags = data[position++];\n header.randomAccess = !(flags & 1);\n if (!(flags & 2)) {\n header.numberOfPages = readUint32(data, position);\n position += 4;\n }\n\n const segments = readSegments(header, data, position, end);\n const visitor = new SimpleSegmentVisitor();\n processSegments(segments, visitor);\n\n const { width, height } = visitor.currentPageInfo;\n const bitPacked = visitor.buffer;\n const imgData = new Uint8ClampedArray(width * height);\n let q = 0,\n k = 0;\n for (let i = 0; i < height; i++) {\n let mask = 0,\n buffer;\n for (let j = 0; j < width; j++) {\n if (!mask) {\n mask = 128;\n buffer = bitPacked[k++];\n }\n imgData[q++] = buffer & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n return { imgData, width, height };\n}\n\nclass SimpleSegmentVisitor {\n onPageInformation(info) {\n this.currentPageInfo = info;\n const rowSize = (info.width + 7) >> 3;\n const buffer = new Uint8ClampedArray(rowSize * info.height);\n // The contents of ArrayBuffers are initialized to 0.\n // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n if (info.defaultPixelValue) {\n for (let i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = 0xff;\n }\n }\n this.buffer = buffer;\n }\n\n drawBitmap(regionInfo, bitmap) {\n const pageInfo = this.currentPageInfo;\n const width = regionInfo.width,\n height = regionInfo.height;\n const rowSize = (pageInfo.width + 7) >> 3;\n const combinationOperator = pageInfo.combinationOperatorOverride\n ? regionInfo.combinationOperator\n : pageInfo.combinationOperator;\n const buffer = this.buffer;\n const mask0 = 128 >> (regionInfo.x & 7);\n let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n let i, j, mask, offset;\n switch (combinationOperator) {\n case 0: // OR\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] |= mask;\n }\n mask >>= 1;\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n offset0 += rowSize;\n }\n break;\n case 2: // XOR\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] ^= mask;\n }\n mask >>= 1;\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n offset0 += rowSize;\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n\n onImmediateGenericRegion(region, data, start, end) {\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeBitmap(\n region.mmr,\n regionInfo.width,\n regionInfo.height,\n region.template,\n region.prediction,\n null,\n region.at,\n decodingContext\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessGenericRegion() {\n this.onImmediateGenericRegion.apply(this, arguments);\n }\n\n onSymbolDictionary(\n dictionary,\n currentSegment,\n referredSegments,\n data,\n start,\n end\n ) {\n let huffmanTables, huffmanInput;\n if (dictionary.huffman) {\n huffmanTables = getSymbolDictionaryHuffmanTables(\n dictionary,\n referredSegments,\n this.customTables\n );\n huffmanInput = new Reader(data, start, end);\n }\n\n // Combines exported symbols from all referred segments\n let symbols = this.symbols;\n if (!symbols) {\n this.symbols = symbols = {};\n }\n\n let inputSymbols = [];\n for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n const referredSymbols = symbols[referredSegments[i]];\n // referredSymbols is undefined when we have a reference to a Tables\n // segment instead of a SymbolDictionary.\n if (referredSymbols) {\n inputSymbols = inputSymbols.concat(referredSymbols);\n }\n }\n\n const decodingContext = new DecodingContext(data, start, end);\n symbols[currentSegment] = decodeSymbolDictionary(\n dictionary.huffman,\n dictionary.refinement,\n inputSymbols,\n dictionary.numberOfNewSymbols,\n dictionary.numberOfExportedSymbols,\n huffmanTables,\n dictionary.template,\n dictionary.at,\n dictionary.refinementTemplate,\n dictionary.refinementAt,\n decodingContext,\n huffmanInput\n );\n }\n\n onImmediateTextRegion(region, referredSegments, data, start, end) {\n const regionInfo = region.info;\n let huffmanTables, huffmanInput;\n\n // Combines exported symbols from all referred segments\n const symbols = this.symbols;\n let inputSymbols = [];\n for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n const referredSymbols = symbols[referredSegments[i]];\n // referredSymbols is undefined when we have a reference to a Tables\n // segment instead of a SymbolDictionary.\n if (referredSymbols) {\n inputSymbols = inputSymbols.concat(referredSymbols);\n }\n }\n const symbolCodeLength = log2(inputSymbols.length);\n if (region.huffman) {\n huffmanInput = new Reader(data, start, end);\n huffmanTables = getTextRegionHuffmanTables(\n region,\n referredSegments,\n this.customTables,\n inputSymbols.length,\n huffmanInput\n );\n }\n\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeTextRegion(\n region.huffman,\n region.refinement,\n regionInfo.width,\n regionInfo.height,\n region.defaultPixelValue,\n region.numberOfSymbolInstances,\n region.stripSize,\n inputSymbols,\n symbolCodeLength,\n region.transposed,\n region.dsOffset,\n region.referenceCorner,\n region.combinationOperator,\n huffmanTables,\n region.refinementTemplate,\n region.refinementAt,\n decodingContext,\n region.logStripSize,\n huffmanInput\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessTextRegion() {\n this.onImmediateTextRegion.apply(this, arguments);\n }\n\n onPatternDictionary(dictionary, currentSegment, data, start, end) {\n let patterns = this.patterns;\n if (!patterns) {\n this.patterns = patterns = {};\n }\n const decodingContext = new DecodingContext(data, start, end);\n patterns[currentSegment] = decodePatternDictionary(\n dictionary.mmr,\n dictionary.patternWidth,\n dictionary.patternHeight,\n dictionary.maxPatternIndex,\n dictionary.template,\n decodingContext\n );\n }\n\n onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n // HalftoneRegion refers to exactly one PatternDictionary.\n const patterns = this.patterns[referredSegments[0]];\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeHalftoneRegion(\n region.mmr,\n patterns,\n region.template,\n regionInfo.width,\n regionInfo.height,\n region.defaultPixelValue,\n region.enableSkip,\n region.combinationOperator,\n region.gridWidth,\n region.gridHeight,\n region.gridOffsetX,\n region.gridOffsetY,\n region.gridVectorX,\n region.gridVectorY,\n decodingContext\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessHalftoneRegion() {\n this.onImmediateHalftoneRegion.apply(this, arguments);\n }\n\n onTables(currentSegment, data, start, end) {\n let customTables = this.customTables;\n if (!customTables) {\n this.customTables = customTables = {};\n }\n customTables[currentSegment] = decodeTablesSegment(data, start, end);\n }\n}\n\nclass HuffmanLine {\n constructor(lineData) {\n if (lineData.length === 2) {\n // OOB line.\n this.isOOB = true;\n this.rangeLow = 0;\n this.prefixLength = lineData[0];\n this.rangeLength = 0;\n this.prefixCode = lineData[1];\n this.isLowerRange = false;\n } else {\n // Normal, upper range or lower range line.\n // Upper range lines are processed like normal lines.\n this.isOOB = false;\n this.rangeLow = lineData[0];\n this.prefixLength = lineData[1];\n this.rangeLength = lineData[2];\n this.prefixCode = lineData[3];\n this.isLowerRange = lineData[4] === \"lower\";\n }\n }\n}\n\nclass HuffmanTreeNode {\n constructor(line) {\n this.children = [];\n if (line) {\n // Leaf node\n this.isLeaf = true;\n this.rangeLength = line.rangeLength;\n this.rangeLow = line.rangeLow;\n this.isLowerRange = line.isLowerRange;\n this.isOOB = line.isOOB;\n } else {\n // Intermediate or root node\n this.isLeaf = false;\n }\n }\n\n buildTree(line, shift) {\n const bit = (line.prefixCode >> shift) & 1;\n if (shift <= 0) {\n // Create a leaf node.\n this.children[bit] = new HuffmanTreeNode(line);\n } else {\n // Create an intermediate node and continue recursively.\n let node = this.children[bit];\n if (!node) {\n this.children[bit] = node = new HuffmanTreeNode(null);\n }\n node.buildTree(line, shift - 1);\n }\n }\n\n decodeNode(reader) {\n if (this.isLeaf) {\n if (this.isOOB) {\n return null;\n }\n const htOffset = reader.readBits(this.rangeLength);\n return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n }\n const node = this.children[reader.readBit()];\n if (!node) {\n throw new Jbig2Error(\"invalid Huffman data\");\n }\n return node.decodeNode(reader);\n }\n}\n\nclass HuffmanTable {\n constructor(lines, prefixCodesDone) {\n if (!prefixCodesDone) {\n this.assignPrefixCodes(lines);\n }\n // Create Huffman tree.\n this.rootNode = new HuffmanTreeNode(null);\n for (let i = 0, ii = lines.length; i < ii; i++) {\n const line = lines[i];\n if (line.prefixLength > 0) {\n this.rootNode.buildTree(line, line.prefixLength - 1);\n }\n }\n }\n\n decode(reader) {\n return this.rootNode.decodeNode(reader);\n }\n\n assignPrefixCodes(lines) {\n // Annex B.3 Assigning the prefix codes.\n const linesLength = lines.length;\n let prefixLengthMax = 0;\n for (let i = 0; i < linesLength; i++) {\n prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n }\n\n const histogram = new Uint32Array(prefixLengthMax + 1);\n for (let i = 0; i < linesLength; i++) {\n histogram[lines[i].prefixLength]++;\n }\n let currentLength = 1,\n firstCode = 0,\n currentCode,\n currentTemp,\n line;\n histogram[0] = 0;\n\n while (currentLength <= prefixLengthMax) {\n firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n currentCode = firstCode;\n currentTemp = 0;\n while (currentTemp < linesLength) {\n line = lines[currentTemp];\n if (line.prefixLength === currentLength) {\n line.prefixCode = currentCode;\n currentCode++;\n }\n currentTemp++;\n }\n currentLength++;\n }\n }\n}\n\nfunction decodeTablesSegment(data, start, end) {\n // Decodes a Tables segment, i.e., a custom Huffman table.\n // Annex B.2 Code table structure.\n const flags = data[start];\n const lowestValue = readUint32(data, start + 1) & 0xffffffff;\n const highestValue = readUint32(data, start + 5) & 0xffffffff;\n const reader = new Reader(data, start + 9, end);\n\n const prefixSizeBits = ((flags >> 1) & 7) + 1;\n const rangeSizeBits = ((flags >> 4) & 7) + 1;\n const lines = [];\n let prefixLength,\n rangeLength,\n currentRangeLow = lowestValue;\n\n // Normal table lines\n do {\n prefixLength = reader.readBits(prefixSizeBits);\n rangeLength = reader.readBits(rangeSizeBits);\n lines.push(\n new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\n );\n currentRangeLow += 1 << rangeLength;\n } while (currentRangeLow < highestValue);\n\n // Lower range table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n\n // Upper range table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n if (flags & 1) {\n // Out-of-band table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([prefixLength, 0]));\n }\n\n return new HuffmanTable(lines, false);\n}\n\nconst standardTablesCache = {};\n\nfunction getStandardTable(number) {\n // Annex B.5 Standard Huffman tables.\n let table = standardTablesCache[number];\n if (table) {\n return table;\n }\n let lines;\n switch (number) {\n case 1:\n lines = [\n [0, 1, 4, 0x0],\n [16, 2, 8, 0x2],\n [272, 3, 16, 0x6],\n [65808, 3, 32, 0x7], // upper\n ];\n break;\n case 2:\n lines = [\n [0, 1, 0, 0x0],\n [1, 2, 0, 0x2],\n [2, 3, 0, 0x6],\n [3, 4, 3, 0xe],\n [11, 5, 6, 0x1e],\n [75, 6, 32, 0x3e], // upper\n [6, 0x3f], // OOB\n ];\n break;\n case 3:\n lines = [\n [-256, 8, 8, 0xfe],\n [0, 1, 0, 0x0],\n [1, 2, 0, 0x2],\n [2, 3, 0, 0x6],\n [3, 4, 3, 0xe],\n [11, 5, 6, 0x1e],\n [-257, 8, 32, 0xff, \"lower\"],\n [75, 7, 32, 0x7e], // upper\n [6, 0x3e], // OOB\n ];\n break;\n case 4:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 0, 0x6],\n [4, 4, 3, 0xe],\n [12, 5, 6, 0x1e],\n [76, 5, 32, 0x1f], // upper\n ];\n break;\n case 5:\n lines = [\n [-255, 7, 8, 0x7e],\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 0, 0x6],\n [4, 4, 3, 0xe],\n [12, 5, 6, 0x1e],\n [-256, 7, 32, 0x7f, \"lower\"],\n [76, 6, 32, 0x3e], // upper\n ];\n break;\n case 6:\n lines = [\n [-2048, 5, 10, 0x1c],\n [-1024, 4, 9, 0x8],\n [-512, 4, 8, 0x9],\n [-256, 4, 7, 0xa],\n [-128, 5, 6, 0x1d],\n [-64, 5, 5, 0x1e],\n [-32, 4, 5, 0xb],\n [0, 2, 7, 0x0],\n [128, 3, 7, 0x2],\n [256, 3, 8, 0x3],\n [512, 4, 9, 0xc],\n [1024, 4, 10, 0xd],\n [-2049, 6, 32, 0x3e, \"lower\"],\n [2048, 6, 32, 0x3f], // upper\n ];\n break;\n case 7:\n lines = [\n [-1024, 4, 9, 0x8],\n [-512, 3, 8, 0x0],\n [-256, 4, 7, 0x9],\n [-128, 5, 6, 0x1a],\n [-64, 5, 5, 0x1b],\n [-32, 4, 5, 0xa],\n [0, 4, 5, 0xb],\n [32, 5, 5, 0x1c],\n [64, 5, 6, 0x1d],\n [128, 4, 7, 0xc],\n [256, 3, 8, 0x1],\n [512, 3, 9, 0x2],\n [1024, 3, 10, 0x3],\n [-1025, 5, 32, 0x1e, \"lower\"],\n [2048, 5, 32, 0x1f], // upper\n ];\n break;\n case 8:\n lines = [\n [-15, 8, 3, 0xfc],\n [-7, 9, 1, 0x1fc],\n [-5, 8, 1, 0xfd],\n [-3, 9, 0, 0x1fd],\n [-2, 7, 0, 0x7c],\n [-1, 4, 0, 0xa],\n [0, 2, 1, 0x0],\n [2, 5, 0, 0x1a],\n [3, 6, 0, 0x3a],\n [4, 3, 4, 0x4],\n [20, 6, 1, 0x3b],\n [22, 4, 4, 0xb],\n [38, 4, 5, 0xc],\n [70, 5, 6, 0x1b],\n [134, 5, 7, 0x1c],\n [262, 6, 7, 0x3c],\n [390, 7, 8, 0x7d],\n [646, 6, 10, 0x3d],\n [-16, 9, 32, 0x1fe, \"lower\"],\n [1670, 9, 32, 0x1ff], // upper\n [2, 0x1], // OOB\n ];\n break;\n case 9:\n lines = [\n [-31, 8, 4, 0xfc],\n [-15, 9, 2, 0x1fc],\n [-11, 8, 2, 0xfd],\n [-7, 9, 1, 0x1fd],\n [-5, 7, 1, 0x7c],\n [-3, 4, 1, 0xa],\n [-1, 3, 1, 0x2],\n [1, 3, 1, 0x3],\n [3, 5, 1, 0x1a],\n [5, 6, 1, 0x3a],\n [7, 3, 5, 0x4],\n [39, 6, 2, 0x3b],\n [43, 4, 5, 0xb],\n [75, 4, 6, 0xc],\n [139, 5, 7, 0x1b],\n [267, 5, 8, 0x1c],\n [523, 6, 8, 0x3c],\n [779, 7, 9, 0x7d],\n [1291, 6, 11, 0x3d],\n [-32, 9, 32, 0x1fe, \"lower\"],\n [3339, 9, 32, 0x1ff], // upper\n [2, 0x0], // OOB\n ];\n break;\n case 10:\n lines = [\n [-21, 7, 4, 0x7a],\n [-5, 8, 0, 0xfc],\n [-4, 7, 0, 0x7b],\n [-3, 5, 0, 0x18],\n [-2, 2, 2, 0x0],\n [2, 5, 0, 0x19],\n [3, 6, 0, 0x36],\n [4, 7, 0, 0x7c],\n [5, 8, 0, 0xfd],\n [6, 2, 6, 0x1],\n [70, 5, 5, 0x1a],\n [102, 6, 5, 0x37],\n [134, 6, 6, 0x38],\n [198, 6, 7, 0x39],\n [326, 6, 8, 0x3a],\n [582, 6, 9, 0x3b],\n [1094, 6, 10, 0x3c],\n [2118, 7, 11, 0x7d],\n [-22, 8, 32, 0xfe, \"lower\"],\n [4166, 8, 32, 0xff], // upper\n [2, 0x2], // OOB\n ];\n break;\n case 11:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 1, 0x2],\n [4, 4, 0, 0xc],\n [5, 4, 1, 0xd],\n [7, 5, 1, 0x1c],\n [9, 5, 2, 0x1d],\n [13, 6, 2, 0x3c],\n [17, 7, 2, 0x7a],\n [21, 7, 3, 0x7b],\n [29, 7, 4, 0x7c],\n [45, 7, 5, 0x7d],\n [77, 7, 6, 0x7e],\n [141, 7, 32, 0x7f], // upper\n ];\n break;\n case 12:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 1, 0x6],\n [5, 5, 0, 0x1c],\n [6, 5, 1, 0x1d],\n [8, 6, 1, 0x3c],\n [10, 7, 0, 0x7a],\n [11, 7, 1, 0x7b],\n [13, 7, 2, 0x7c],\n [17, 7, 3, 0x7d],\n [25, 7, 4, 0x7e],\n [41, 8, 5, 0xfe],\n [73, 8, 32, 0xff], // upper\n ];\n break;\n case 13:\n lines = [\n [1, 1, 0, 0x0],\n [2, 3, 0, 0x4],\n [3, 4, 0, 0xc],\n [4, 5, 0, 0x1c],\n [5, 4, 1, 0xd],\n [7, 3, 3, 0x5],\n [15, 6, 1, 0x3a],\n [17, 6, 2, 0x3b],\n [21, 6, 3, 0x3c],\n [29, 6, 4, 0x3d],\n [45, 6, 5, 0x3e],\n [77, 7, 6, 0x7e],\n [141, 7, 32, 0x7f], // upper\n ];\n break;\n case 14:\n lines = [\n [-2, 3, 0, 0x4],\n [-1, 3, 0, 0x5],\n [0, 1, 0, 0x0],\n [1, 3, 0, 0x6],\n [2, 3, 0, 0x7],\n ];\n break;\n case 15:\n lines = [\n [-24, 7, 4, 0x7c],\n [-8, 6, 2, 0x3c],\n [-4, 5, 1, 0x1c],\n [-2, 4, 0, 0xc],\n [-1, 3, 0, 0x4],\n [0, 1, 0, 0x0],\n [1, 3, 0, 0x5],\n [2, 4, 0, 0xd],\n [3, 5, 1, 0x1d],\n [5, 6, 2, 0x3d],\n [9, 7, 4, 0x7d],\n [-25, 7, 32, 0x7e, \"lower\"],\n [25, 7, 32, 0x7f], // upper\n ];\n break;\n default:\n throw new Jbig2Error(`standard table B.${number} does not exist`);\n }\n\n for (let i = 0, ii = lines.length; i < ii; i++) {\n lines[i] = new HuffmanLine(lines[i]);\n }\n table = new HuffmanTable(lines, true);\n standardTablesCache[number] = table;\n return table;\n}\n\nclass Reader {\n constructor(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n this.position = start;\n this.shift = -1;\n this.currentByte = 0;\n }\n\n readBit() {\n if (this.shift < 0) {\n if (this.position >= this.end) {\n throw new Jbig2Error(\"end of data while reading bit\");\n }\n this.currentByte = this.data[this.position++];\n this.shift = 7;\n }\n const bit = (this.currentByte >> this.shift) & 1;\n this.shift--;\n return bit;\n }\n\n readBits(numBits) {\n let result = 0,\n i;\n for (i = numBits - 1; i >= 0; i--) {\n result |= this.readBit() << i;\n }\n return result;\n }\n\n byteAlign() {\n this.shift = -1;\n }\n\n next() {\n if (this.position >= this.end) {\n return -1;\n }\n return this.data[this.position++];\n }\n}\n\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\n // Returns a Tables segment that has been earlier decoded.\n // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n let currentIndex = 0;\n for (let i = 0, ii = referredTo.length; i < ii; i++) {\n const table = customTables[referredTo[i]];\n if (table) {\n if (index === currentIndex) {\n return table;\n }\n currentIndex++;\n }\n }\n throw new Jbig2Error(\"can't find custom Huffman table\");\n}\n\nfunction getTextRegionHuffmanTables(\n textRegion,\n referredTo,\n customTables,\n numberOfSymbols,\n reader\n) {\n // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n // Read code lengths for RUNCODEs 0...34.\n const codes = [];\n for (let i = 0; i <= 34; i++) {\n const codeLength = reader.readBits(4);\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n }\n // Assign Huffman codes for RUNCODEs.\n const runCodesTable = new HuffmanTable(codes, false);\n\n // Read a Huffman code using the assignment above.\n // Interpret the RUNCODE codes and the additional bits (if any).\n codes.length = 0;\n for (let i = 0; i < numberOfSymbols; ) {\n const codeLength = runCodesTable.decode(reader);\n if (codeLength >= 32) {\n let repeatedLength, numberOfRepeats, j;\n switch (codeLength) {\n case 32:\n if (i === 0) {\n throw new Jbig2Error(\"no previous value in symbol ID table\");\n }\n numberOfRepeats = reader.readBits(2) + 3;\n repeatedLength = codes[i - 1].prefixLength;\n break;\n case 33:\n numberOfRepeats = reader.readBits(3) + 3;\n repeatedLength = 0;\n break;\n case 34:\n numberOfRepeats = reader.readBits(7) + 11;\n repeatedLength = 0;\n break;\n default:\n throw new Jbig2Error(\"invalid code length in symbol ID table\");\n }\n for (j = 0; j < numberOfRepeats; j++) {\n codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n i++;\n }\n } else {\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n i++;\n }\n }\n reader.byteAlign();\n const symbolIDTable = new HuffmanTable(codes, false);\n\n // 7.4.3.1.6 Text region segment Huffman table selection\n\n let customIndex = 0,\n tableFirstS,\n tableDeltaS,\n tableDeltaT;\n\n switch (textRegion.huffmanFS) {\n case 0:\n case 1:\n tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n break;\n case 3:\n tableFirstS = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman FS selector\");\n }\n\n switch (textRegion.huffmanDS) {\n case 0:\n case 1:\n case 2:\n tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n break;\n case 3:\n tableDeltaS = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DS selector\");\n }\n\n switch (textRegion.huffmanDT) {\n case 0:\n case 1:\n case 2:\n tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n break;\n case 3:\n tableDeltaT = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DT selector\");\n }\n\n if (textRegion.refinement) {\n // Load tables RDW, RDH, RDX and RDY.\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n return {\n symbolIDTable,\n tableFirstS,\n tableDeltaS,\n tableDeltaT,\n };\n}\n\nfunction getSymbolDictionaryHuffmanTables(\n dictionary,\n referredTo,\n customTables\n) {\n // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n let customIndex = 0,\n tableDeltaHeight,\n tableDeltaWidth;\n switch (dictionary.huffmanDHSelector) {\n case 0:\n case 1:\n tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n break;\n case 3:\n tableDeltaHeight = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DH selector\");\n }\n\n switch (dictionary.huffmanDWSelector) {\n case 0:\n case 1:\n tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n break;\n case 3:\n tableDeltaWidth = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DW selector\");\n }\n\n let tableBitmapSize, tableAggregateInstances;\n if (dictionary.bitmapSizeSelector) {\n tableBitmapSize = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n } else {\n tableBitmapSize = getStandardTable(1);\n }\n\n if (dictionary.aggregationInstancesSelector) {\n tableAggregateInstances = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n } else {\n tableAggregateInstances = getStandardTable(1);\n }\n\n return {\n tableDeltaHeight,\n tableDeltaWidth,\n tableBitmapSize,\n tableAggregateInstances,\n };\n}\n\nfunction readUncompressedBitmap(reader, width, height) {\n const bitmap = [];\n for (let y = 0; y < height; y++) {\n const row = new Uint8Array(width);\n bitmap.push(row);\n for (let x = 0; x < width; x++) {\n row[x] = reader.readBit();\n }\n reader.byteAlign();\n }\n return bitmap;\n}\n\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\n // MMR is the same compression algorithm as the PDF filter\n // CCITTFaxDecode with /K -1.\n const params = {\n K: -1,\n Columns: width,\n Rows: height,\n BlackIs1: true,\n EndOfBlock: endOfBlock,\n };\n const decoder = new CCITTFaxDecoder(input, params);\n const bitmap = [];\n let currentByte,\n eof = false;\n\n for (let y = 0; y < height; y++) {\n const row = new Uint8Array(width);\n bitmap.push(row);\n let shift = -1;\n for (let x = 0; x < width; x++) {\n if (shift < 0) {\n currentByte = decoder.readNextChar();\n if (currentByte === -1) {\n // Set the rest of the bits to zero.\n currentByte = 0;\n eof = true;\n }\n shift = 7;\n }\n row[x] = (currentByte >> shift) & 1;\n shift--;\n }\n }\n\n if (endOfBlock && !eof) {\n // Read until EOFB has been consumed.\n const lookForEOFLimit = 5;\n for (let i = 0; i < lookForEOFLimit; i++) {\n if (decoder.readNextChar() === -1) {\n break;\n }\n }\n }\n\n return bitmap;\n}\n\nclass Jbig2Image {\n parseChunks(chunks) {\n return parseJbig2Chunks(chunks);\n }\n\n parse(data) {\n const { imgData, width, height } = parseJbig2(data);\n this.width = width;\n this.height = height;\n return imgData;\n }\n}\n\nexport { Jbig2Image };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Table C-2\nconst QeTable = [\n { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\n { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\n { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\n { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\n { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\n { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\n { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\n { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\n { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\n { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\n { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\n { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\n { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\n { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\n { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\n { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\n { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\n { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\n { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\n { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\n { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\n { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\n { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\n { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\n { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\n { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\n { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\n { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\n { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\n { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\n { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\n { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\n { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\n { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\n { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\n { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\n { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\n { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\n { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\n { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\n { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\n { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\n { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\n { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\n { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\n { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\n { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\n];\n\n/**\n * This class implements the QM Coder decoding as defined in\n * JPEG 2000 Part I Final Committee Draft Version 1.0\n * Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nclass ArithmeticDecoder {\n // C.3.5 Initialisation of the decoder (INITDEC)\n constructor(data, start, end) {\n this.data = data;\n this.bp = start;\n this.dataEnd = end;\n\n this.chigh = data[start];\n this.clow = 0;\n\n this.byteIn();\n\n this.chigh = ((this.chigh << 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\n this.clow = (this.clow << 7) & 0xffff;\n this.ct -= 7;\n this.a = 0x8000;\n }\n\n // C.3.4 Compressed data input (BYTEIN)\n byteIn() {\n const data = this.data;\n let bp = this.bp;\n\n if (data[bp] === 0xff) {\n if (data[bp + 1] > 0x8f) {\n this.clow += 0xff00;\n this.ct = 8;\n } else {\n bp++;\n this.clow += data[bp] << 9;\n this.ct = 7;\n this.bp = bp;\n }\n } else {\n bp++;\n this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n this.ct = 8;\n this.bp = bp;\n }\n if (this.clow > 0xffff) {\n this.chigh += this.clow >> 16;\n this.clow &= 0xffff;\n }\n }\n\n // C.3.2 Decoding a decision (DECODE)\n readBit(contexts, pos) {\n // Contexts are packed into 1 byte:\n // highest 7 bits carry cx.index, lowest bit carries cx.mps\n let cx_index = contexts[pos] >> 1,\n cx_mps = contexts[pos] & 1;\n const qeTableIcx = QeTable[cx_index];\n const qeIcx = qeTableIcx.qe;\n let d;\n let a = this.a - qeIcx;\n\n if (this.chigh < qeIcx) {\n // exchangeLps\n if (a < qeIcx) {\n a = qeIcx;\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n } else {\n a = qeIcx;\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n }\n } else {\n this.chigh -= qeIcx;\n if ((a & 0x8000) !== 0) {\n this.a = a;\n return cx_mps;\n }\n // exchangeMps\n if (a < qeIcx) {\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n } else {\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n }\n }\n // C.3.3 renormD;\n do {\n if (this.ct === 0) {\n this.byteIn();\n }\n\n a <<= 1;\n this.chigh = ((this.chigh << 1) & 0xffff) | ((this.clow >> 15) & 1);\n this.clow = (this.clow << 1) & 0xffff;\n this.ct--;\n } while ((a & 0x8000) === 0);\n this.a = a;\n\n contexts[pos] = (cx_index << 1) | cx_mps;\n return d;\n }\n}\n\nexport { ArithmeticDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { isDict } from \"./primitives.js\";\nimport { JpegImage } from \"./jpg.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG's we use a library to decode these images and the stream behaves\n * like all the other DecodeStreams.\n */\nclass JpegStream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n // Some images may contain 'junk' before the SOI (start-of-image) marker.\n // Note: this seems to mainly affect inline images.\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n // Find the first byte of the SOI marker (0xFFD8).\n if (ch === 0xff) {\n stream.skip(-1); // Reset the stream position to the SOI.\n break;\n }\n }\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jpegOptions = {\n decodeTransform: undefined,\n colorTransform: undefined,\n };\n\n // Checking if values need to be transformed before conversion.\n const decodeArr = this.dict.getArray(\"D\", \"Decode\");\n if (this.forceRGB && Array.isArray(decodeArr)) {\n const bitsPerComponent = this.dict.get(\"BPC\", \"BitsPerComponent\") || 8;\n const decodeArrLength = decodeArr.length;\n const transform = new Int32Array(decodeArrLength);\n let transformNeeded = false;\n const maxValue = (1 << bitsPerComponent) - 1;\n for (let i = 0; i < decodeArrLength; i += 2) {\n transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\n transform[i + 1] = (decodeArr[i] * maxValue) | 0;\n if (transform[i] !== 256 || transform[i + 1] !== 0) {\n transformNeeded = true;\n }\n }\n if (transformNeeded) {\n jpegOptions.decodeTransform = transform;\n }\n }\n // Fetching the 'ColorTransform' entry, if it exists.\n if (isDict(this.params)) {\n const colorTransform = this.params.get(\"ColorTransform\");\n if (Number.isInteger(colorTransform)) {\n jpegOptions.colorTransform = colorTransform;\n }\n }\n const jpegImage = new JpegImage(jpegOptions);\n\n jpegImage.parse(this.bytes);\n const data = jpegImage.getData({\n width: this.drawWidth,\n height: this.drawHeight,\n forceRGB: this.forceRGB,\n isSourcePDF: true,\n });\n this.buffer = data;\n this.bufferLength = data.length;\n this.eof = true;\n }\n}\n\nexport { JpegStream };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\nimport { readUint16 } from \"./core_utils.js\";\n\nclass JpegError extends BaseException {\n constructor(msg) {\n super(`JPEG error: ${msg}`, \"JpegError\");\n }\n}\n\nclass DNLMarkerError extends BaseException {\n constructor(message, scanLines) {\n super(message, \"DNLMarkerError\");\n this.scanLines = scanLines;\n }\n}\n\nclass EOIMarkerError extends BaseException {\n constructor(msg) {\n super(msg, \"EOIMarkerError\");\n }\n}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n * (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n * (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n * Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n * (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\n// prettier-ignore\nconst dctZigZag = new Uint8Array([\n 0,\n 1, 8,\n 16, 9, 2,\n 3, 10, 17, 24,\n 32, 25, 18, 11, 4,\n 5, 12, 19, 26, 33, 40,\n 48, 41, 34, 27, 20, 13, 6,\n 7, 14, 21, 28, 35, 42, 49, 56,\n 57, 50, 43, 36, 29, 22, 15,\n 23, 30, 37, 44, 51, 58,\n 59, 52, 45, 38, 31,\n 39, 46, 53, 60,\n 61, 54, 47,\n 55, 62,\n 63\n]);\n\nconst dctCos1 = 4017; // cos(pi/16)\nconst dctSin1 = 799; // sin(pi/16)\nconst dctCos3 = 3406; // cos(3*pi/16)\nconst dctSin3 = 2276; // sin(3*pi/16)\nconst dctCos6 = 1567; // cos(6*pi/16)\nconst dctSin6 = 3784; // sin(6*pi/16)\nconst dctSqrt2 = 5793; // sqrt(2)\nconst dctSqrt1d2 = 2896; // sqrt(2) / 2\n\nfunction buildHuffmanTable(codeLengths, values) {\n let k = 0,\n i,\n j,\n length = 16;\n while (length > 0 && !codeLengths[length - 1]) {\n length--;\n }\n const code = [{ children: [], index: 0 }];\n let p = code[0],\n q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n // p here points to last code\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n}\n\nfunction getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n}\n\nfunction decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successivePrev,\n successive,\n parseDNLMarker = false\n) {\n const mcusPerLine = frame.mcusPerLine;\n const progressive = frame.progressive;\n\n const startOffset = offset;\n let bitsData = 0,\n bitsCount = 0;\n\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return (bitsData >> bitsCount) & 1;\n }\n bitsData = data[offset++];\n if (bitsData === 0xff) {\n const nextByte = data[offset++];\n if (nextByte) {\n if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n offset += 2; // Skip marker length.\n\n const scanLines = readUint16(data, offset);\n offset += 2;\n if (scanLines > 0 && scanLines !== frame.scanLines) {\n throw new DNLMarkerError(\n \"Found DNL marker (0xFFDC) while parsing scan data\",\n scanLines\n );\n }\n } else if (nextByte === /* EOI = */ 0xd9) {\n if (parseDNLMarker) {\n // NOTE: only 8-bit JPEG images are supported in this decoder.\n const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n // Heuristic to attempt to handle corrupt JPEG images with too\n // large `scanLines` parameter, by falling back to the currently\n // parsed number of scanLines when it's at least (approximately)\n // one order of magnitude smaller than expected (fixes\n // issue10880.pdf and issue10989.pdf).\n if (\n maybeScanLines > 0 &&\n Math.round(frame.scanLines / maybeScanLines) >= 10\n ) {\n throw new DNLMarkerError(\n \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n \"possibly caused by incorrect `scanLines` parameter\",\n maybeScanLines\n );\n }\n }\n throw new EOIMarkerError(\n \"Found EOI marker (0xFFD9) while parsing scan data\"\n );\n }\n throw new JpegError(\n `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n );\n }\n // unstuff 0\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n\n function decodeHuffman(tree) {\n let node = tree;\n while (true) {\n node = node[readBit()];\n switch (typeof node) {\n case \"number\":\n return node;\n case \"object\":\n continue;\n }\n throw new JpegError(\"invalid huffman sequence\");\n }\n }\n\n function receive(length) {\n let n = 0;\n while (length > 0) {\n n = (n << 1) | readBit();\n length--;\n }\n return n;\n }\n\n function receiveAndExtend(length) {\n if (length === 1) {\n return readBit() === 1 ? 1 : -1;\n }\n const n = receive(length);\n if (n >= 1 << (length - 1)) {\n return n;\n }\n return n + (-1 << length) + 1;\n }\n\n function decodeBaseline(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[blockOffset] = component.pred += diff;\n let k = 1;\n while (k < 64) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n component.blockData[blockOffset] = component.pred += diff;\n }\n\n function decodeDCSuccessive(component, blockOffset) {\n component.blockData[blockOffset] |= readBit() << successive;\n }\n\n let eobrun = 0;\n function decodeACFirst(component, blockOffset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n let k = spectralStart;\n const e = spectralEnd;\n while (k <= e) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] =\n receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n let successiveACState = 0,\n successiveACNextValue;\n function decodeACSuccessive(component, blockOffset) {\n let k = spectralStart;\n const e = spectralEnd;\n let r = 0;\n let s;\n let rs;\n while (k <= e) {\n const offsetZ = blockOffset + dctZigZag[k];\n const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n switch (successiveACState) {\n case 0: // initial state\n rs = decodeHuffman(component.huffmanTableAC);\n s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1) {\n throw new JpegError(\"invalid ACn encoding\");\n }\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1: // skipping r zero items\n case 2:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n r--;\n if (r === 0) {\n successiveACState = successiveACState === 2 ? 3 : 0;\n }\n }\n break;\n case 3: // set value for a zero item\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n component.blockData[offsetZ] = successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4: // eob\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n }\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0) {\n successiveACState = 0;\n }\n }\n }\n\n let blockRow = 0;\n function decodeMcu(component, decode, mcu, row, col) {\n const mcuRow = (mcu / mcusPerLine) | 0;\n const mcuCol = mcu % mcusPerLine;\n blockRow = mcuRow * component.v + row;\n const blockCol = mcuCol * component.h + col;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n function decodeBlock(component, decode, mcu) {\n blockRow = (mcu / component.blocksPerLine) | 0;\n const blockCol = mcu % component.blocksPerLine;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n const componentsLength = components.length;\n let component, i, j, k, n;\n let decodeFn;\n if (progressive) {\n if (spectralStart === 0) {\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n } else {\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n }\n } else {\n decodeFn = decodeBaseline;\n }\n\n let mcu = 0,\n fileMarker;\n let mcuExpected;\n if (componentsLength === 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n\n let h, v;\n while (mcu <= mcuExpected) {\n // reset interval stuff\n const mcuToRead = resetInterval\n ? Math.min(mcuExpected - mcu, resetInterval)\n : mcuExpected;\n\n // The `mcuToRead === 0` case should only occur when all of the expected\n // MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\n // some corrupt JPEG images contain more data than intended and we thus\n // want to skip over any extra RSTx markers below (fixes issue11794.pdf).\n if (mcuToRead > 0) {\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n\n if (componentsLength === 1) {\n component = components[0];\n for (n = 0; n < mcuToRead; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < mcuToRead; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n }\n }\n }\n\n // find marker\n bitsCount = 0;\n fileMarker = findNextFileMarker(data, offset);\n if (!fileMarker) {\n break; // Reached the end of the image data without finding any marker.\n }\n if (fileMarker.invalid) {\n // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n // past those to attempt to find a valid marker (fixes issue4090.pdf).\n const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n warn(\n `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\n );\n offset = fileMarker.offset;\n }\n if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n // RSTx\n offset += 2;\n } else {\n break;\n }\n }\n\n return offset - startOffset;\n}\n\n// A port of poppler's IDCT method which in turn is taken from:\n// Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n// 'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n// IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n// 988-991.\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n const qt = component.quantizationTable,\n blockData = component.blockData;\n let v0, v1, v2, v3, v4, v5, v6, v7;\n let p0, p1, p2, p3, p4, p5, p6, p7;\n let t;\n\n if (!qt) {\n throw new JpegError(\"missing required Quantization Table.\");\n }\n\n // inverse DCT on rows\n for (let row = 0; row < 64; row += 8) {\n // gather block data\n p0 = blockData[blockBufferOffset + row];\n p1 = blockData[blockBufferOffset + row + 1];\n p2 = blockData[blockBufferOffset + row + 2];\n p3 = blockData[blockBufferOffset + row + 3];\n p4 = blockData[blockBufferOffset + row + 4];\n p5 = blockData[blockBufferOffset + row + 5];\n p6 = blockData[blockBufferOffset + row + 6];\n p7 = blockData[blockBufferOffset + row + 7];\n\n // dequant p0\n p0 *= qt[row];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 512) >> 10;\n p[row] = t;\n p[row + 1] = t;\n p[row + 2] = t;\n p[row + 3] = t;\n p[row + 4] = t;\n p[row + 5] = t;\n p[row + 6] = t;\n p[row + 7] = t;\n continue;\n }\n // dequant p1 ... p7\n p1 *= qt[row + 1];\n p2 *= qt[row + 2];\n p3 *= qt[row + 3];\n p4 *= qt[row + 4];\n p5 *= qt[row + 5];\n p6 *= qt[row + 6];\n p7 *= qt[row + 7];\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 128) >> 8;\n v1 = (dctSqrt2 * p4 + 128) >> 8;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n v5 = p3 << 4;\n v6 = p5 << 4;\n\n // stage 3\n v0 = (v0 + v1 + 1) >> 1;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[row] = v0 + v7;\n p[row + 7] = v0 - v7;\n p[row + 1] = v1 + v6;\n p[row + 6] = v1 - v6;\n p[row + 2] = v2 + v5;\n p[row + 5] = v2 - v5;\n p[row + 3] = v3 + v4;\n p[row + 4] = v3 - v4;\n }\n\n // inverse DCT on columns\n for (let col = 0; col < 8; ++col) {\n p0 = p[col];\n p1 = p[col + 8];\n p2 = p[col + 16];\n p3 = p[col + 24];\n p4 = p[col + 32];\n p5 = p[col + 40];\n p6 = p[col + 48];\n p7 = p[col + 56];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 8192) >> 14;\n // Convert to 8-bit.\n if (t < -2040) {\n t = 0;\n } else if (t >= 2024) {\n t = 255;\n } else {\n t = (t + 2056) >> 4;\n }\n blockData[blockBufferOffset + col] = t;\n blockData[blockBufferOffset + col + 8] = t;\n blockData[blockBufferOffset + col + 16] = t;\n blockData[blockBufferOffset + col + 24] = t;\n blockData[blockBufferOffset + col + 32] = t;\n blockData[blockBufferOffset + col + 40] = t;\n blockData[blockBufferOffset + col + 48] = t;\n blockData[blockBufferOffset + col + 56] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 2048) >> 12;\n v1 = (dctSqrt2 * p4 + 2048) >> 12;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n v5 = p3;\n v6 = p5;\n\n // stage 3\n // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n // converting to UInt8 range later.\n v0 = ((v0 + v1 + 1) >> 1) + 4112;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p0 = v0 + v7;\n p7 = v0 - v7;\n p1 = v1 + v6;\n p6 = v1 - v6;\n p2 = v2 + v5;\n p5 = v2 - v5;\n p3 = v3 + v4;\n p4 = v3 - v4;\n\n // Convert to 8-bit integers.\n if (p0 < 16) {\n p0 = 0;\n } else if (p0 >= 4080) {\n p0 = 255;\n } else {\n p0 >>= 4;\n }\n if (p1 < 16) {\n p1 = 0;\n } else if (p1 >= 4080) {\n p1 = 255;\n } else {\n p1 >>= 4;\n }\n if (p2 < 16) {\n p2 = 0;\n } else if (p2 >= 4080) {\n p2 = 255;\n } else {\n p2 >>= 4;\n }\n if (p3 < 16) {\n p3 = 0;\n } else if (p3 >= 4080) {\n p3 = 255;\n } else {\n p3 >>= 4;\n }\n if (p4 < 16) {\n p4 = 0;\n } else if (p4 >= 4080) {\n p4 = 255;\n } else {\n p4 >>= 4;\n }\n if (p5 < 16) {\n p5 = 0;\n } else if (p5 >= 4080) {\n p5 = 255;\n } else {\n p5 >>= 4;\n }\n if (p6 < 16) {\n p6 = 0;\n } else if (p6 >= 4080) {\n p6 = 255;\n } else {\n p6 >>= 4;\n }\n if (p7 < 16) {\n p7 = 0;\n } else if (p7 >= 4080) {\n p7 = 255;\n } else {\n p7 >>= 4;\n }\n\n // store block data\n blockData[blockBufferOffset + col] = p0;\n blockData[blockBufferOffset + col + 8] = p1;\n blockData[blockBufferOffset + col + 16] = p2;\n blockData[blockBufferOffset + col + 24] = p3;\n blockData[blockBufferOffset + col + 32] = p4;\n blockData[blockBufferOffset + col + 40] = p5;\n blockData[blockBufferOffset + col + 48] = p6;\n blockData[blockBufferOffset + col + 56] = p7;\n }\n}\n\nfunction buildComponentData(frame, component) {\n const blocksPerLine = component.blocksPerLine;\n const blocksPerColumn = component.blocksPerColumn;\n const computationBuffer = new Int16Array(64);\n\n for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n const offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n}\n\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\n const maxPos = data.length - 1;\n let newPos = startPos < currentPos ? startPos : currentPos;\n\n if (currentPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n const currentMarker = readUint16(data, currentPos);\n if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n return {\n invalid: null,\n marker: currentMarker,\n offset: currentPos,\n };\n }\n let newMarker = readUint16(data, newPos);\n while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n if (++newPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n newMarker = readUint16(data, newPos);\n }\n return {\n invalid: currentMarker.toString(16),\n marker: newMarker,\n offset: newPos,\n };\n}\n\nclass JpegImage {\n constructor({ decodeTransform = null, colorTransform = -1 } = {}) {\n this._decodeTransform = decodeTransform;\n this._colorTransform = colorTransform;\n }\n\n parse(data, { dnlScanLines = null } = {}) {\n function readDataBlock() {\n const length = readUint16(data, offset);\n offset += 2;\n let endOffset = offset + length - 2;\n\n const fileMarker = findNextFileMarker(data, endOffset, offset);\n if (fileMarker && fileMarker.invalid) {\n warn(\n \"readDataBlock - incorrect length, current marker is: \" +\n fileMarker.invalid\n );\n endOffset = fileMarker.offset;\n }\n\n const array = data.subarray(offset, endOffset);\n offset += array.length;\n return array;\n }\n\n function prepareComponents(frame) {\n const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (let i = 0, ii = frame.components.length; i < ii; i++) {\n const component = frame.components[i];\n const blocksPerLine = Math.ceil(\n (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n );\n const blocksPerColumn = Math.ceil(\n (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n );\n const blocksPerLineForMcu = mcusPerLine * component.h;\n const blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n const blocksBufferSize =\n 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n\n let offset = 0;\n let jfif = null;\n let adobe = null;\n let frame, resetInterval;\n let numSOSMarkers = 0;\n const quantizationTables = [];\n const huffmanTablesAC = [],\n huffmanTablesDC = [];\n\n let fileMarker = readUint16(data, offset);\n offset += 2;\n if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n\n markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n let i, j, l;\n switch (fileMarker) {\n case 0xffe0: // APP0 (Application Specific)\n case 0xffe1: // APP1\n case 0xffe2: // APP2\n case 0xffe3: // APP3\n case 0xffe4: // APP4\n case 0xffe5: // APP5\n case 0xffe6: // APP6\n case 0xffe7: // APP7\n case 0xffe8: // APP8\n case 0xffe9: // APP9\n case 0xffea: // APP10\n case 0xffeb: // APP11\n case 0xffec: // APP12\n case 0xffed: // APP13\n case 0xffee: // APP14\n case 0xffef: // APP15\n case 0xfffe: // COM (Comment)\n const appData = readDataBlock();\n\n if (fileMarker === 0xffe0) {\n // 'JFIF\\x00'\n if (\n appData[0] === 0x4a &&\n appData[1] === 0x46 &&\n appData[2] === 0x49 &&\n appData[3] === 0x46 &&\n appData[4] === 0\n ) {\n jfif = {\n version: { major: appData[5], minor: appData[6] },\n densityUnits: appData[7],\n xDensity: (appData[8] << 8) | appData[9],\n yDensity: (appData[10] << 8) | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(\n 14,\n 14 + 3 * appData[12] * appData[13]\n ),\n };\n }\n }\n // TODO APP1 - Exif\n if (fileMarker === 0xffee) {\n // 'Adobe'\n if (\n appData[0] === 0x41 &&\n appData[1] === 0x64 &&\n appData[2] === 0x6f &&\n appData[3] === 0x62 &&\n appData[4] === 0x65\n ) {\n adobe = {\n version: (appData[5] << 8) | appData[6],\n flags0: (appData[7] << 8) | appData[8],\n flags1: (appData[9] << 8) | appData[10],\n transformCode: appData[11],\n };\n }\n }\n break;\n\n case 0xffdb: // DQT (Define Quantization Tables)\n const quantizationTablesLength = readUint16(data, offset);\n offset += 2;\n const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n let z;\n while (offset < quantizationTablesEnd) {\n const quantizationTableSpec = data[offset++];\n const tableData = new Uint16Array(64);\n if (quantizationTableSpec >> 4 === 0) {\n // 8 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if (quantizationTableSpec >> 4 === 1) {\n // 16 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = readUint16(data, offset);\n offset += 2;\n }\n } else {\n throw new JpegError(\"DQT - invalid table spec\");\n }\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n\n case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n if (frame) {\n throw new JpegError(\"Only single frame JPEGs supported\");\n }\n offset += 2; // Skip marker length.\n\n frame = {};\n frame.extended = fileMarker === 0xffc1;\n frame.progressive = fileMarker === 0xffc2;\n frame.precision = data[offset++];\n const sofScanLines = readUint16(data, offset);\n offset += 2;\n frame.scanLines = dnlScanLines || sofScanLines;\n frame.samplesPerLine = readUint16(data, offset);\n offset += 2;\n frame.components = [];\n frame.componentIds = {};\n const componentsCount = data[offset++];\n let maxH = 0,\n maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n const componentId = data[offset];\n const h = data[offset + 1] >> 4;\n const v = data[offset + 1] & 15;\n if (maxH < h) {\n maxH = h;\n }\n if (maxV < v) {\n maxV = v;\n }\n const qId = data[offset + 2];\n l = frame.components.push({\n h,\n v,\n quantizationId: qId,\n quantizationTable: null, // See comment below.\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n\n case 0xffc4: // DHT (Define Huffman Tables)\n const huffmanLength = readUint16(data, offset);\n offset += 2;\n for (i = 2; i < huffmanLength; ) {\n const huffmanTableSpec = data[offset++];\n const codeLengths = new Uint8Array(16);\n let codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++) {\n codeLengthSum += codeLengths[j] = data[offset];\n }\n const huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++) {\n huffmanValues[j] = data[offset];\n }\n i += 17 + codeLengthSum;\n\n (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n huffmanTableSpec & 15\n ] = buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n\n case 0xffdd: // DRI (Define Restart Interval)\n offset += 2; // Skip marker length.\n\n resetInterval = readUint16(data, offset);\n offset += 2;\n break;\n\n case 0xffda: // SOS (Start of Scan)\n // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n // of the first scan segment and may only occur once in an image.\n // Furthermore, to prevent an infinite loop, do *not* attempt to\n // parse DNL markers during re-parsing of the JPEG scan data.\n const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n offset += 2; // Skip marker length.\n\n const selectorsCount = data[offset++],\n components = [];\n for (i = 0; i < selectorsCount; i++) {\n const index = data[offset++];\n const componentIndex = frame.componentIds[index];\n const component = frame.components[componentIndex];\n component.index = index;\n const tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n const spectralStart = data[offset++],\n spectralEnd = data[offset++],\n successiveApproximation = data[offset++];\n try {\n const processed = decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successiveApproximation >> 4,\n successiveApproximation & 15,\n parseDNLMarker\n );\n offset += processed;\n } catch (ex) {\n if (ex instanceof DNLMarkerError) {\n warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n return this.parse(data, { dnlScanLines: ex.scanLines });\n } else if (ex instanceof EOIMarkerError) {\n warn(`${ex.message} -- ignoring the rest of the image data.`);\n break markerLoop;\n }\n throw ex;\n }\n break;\n\n case 0xffdc: // DNL (Define Number of Lines)\n // Ignore the marker, since it's being handled in `decodeScan`.\n offset += 4;\n break;\n\n case 0xffff: // Fill bytes\n if (data[offset] !== 0xff) {\n // Avoid skipping a valid marker.\n offset--;\n }\n break;\n\n default:\n // Could be incorrect encoding -- the last 0xFF byte of the previous\n // block could have been eaten by the encoder, hence we fallback to\n // `startPos = offset - 3` when looking for the next valid marker.\n const nextFileMarker = findNextFileMarker(\n data,\n /* currentPos = */ offset - 2,\n /* startPos = */ offset - 3\n );\n if (nextFileMarker && nextFileMarker.invalid) {\n warn(\n \"JpegImage.parse - unexpected data, current marker is: \" +\n nextFileMarker.invalid\n );\n offset = nextFileMarker.offset;\n break;\n }\n if (!nextFileMarker || offset >= data.length - 1) {\n warn(\n \"JpegImage.parse - reached the end of the image data \" +\n \"without finding an EOI marker (0xFFD9).\"\n );\n break markerLoop;\n }\n throw new JpegError(\n \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n );\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n }\n\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n for (let i = 0, ii = frame.components.length; i < ii; i++) {\n const component = frame.components[i];\n\n // Prevent errors when DQT markers are placed after SOF{n} markers,\n // by assigning the `quantizationTable` entry after the entire image\n // has been parsed (fixes issue7406.pdf).\n const quantizationTable = quantizationTables[component.quantizationId];\n if (quantizationTable) {\n component.quantizationTable = quantizationTable;\n }\n\n this.components.push({\n index: component.index,\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn,\n });\n }\n this.numComponents = this.components.length;\n return undefined;\n }\n\n _getLinearizedBlockData(width, height, isSourcePDF = false) {\n const scaleX = this.width / width,\n scaleY = this.height / height;\n\n let component, componentScaleX, componentScaleY, blocksPerScanline;\n let x, y, i, j, k;\n let index;\n let offset = 0;\n let output;\n const numComponents = this.components.length;\n const dataLength = width * height * numComponents;\n const data = new Uint8ClampedArray(dataLength);\n const xScaleBlockOffset = new Uint32Array(width);\n const mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n let lastComponentScaleX;\n\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n output = component.output;\n blocksPerScanline = (component.blocksPerLine + 1) << 3;\n // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n // component data, that's only necessary when `componentScaleX` changes.\n if (componentScaleX !== lastComponentScaleX) {\n for (x = 0; x < width; x++) {\n j = 0 | (x * componentScaleX);\n xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n }\n lastComponentScaleX = componentScaleX;\n }\n // linearize the blocks of the component\n for (y = 0; y < height; y++) {\n j = 0 | (y * componentScaleY);\n index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n for (x = 0; x < width; x++) {\n data[offset] = output[index + xScaleBlockOffset[x]];\n offset += numComponents;\n }\n }\n }\n\n // decodeTransform contains pairs of multiplier (-256..256) and additive\n let transform = this._decodeTransform;\n\n // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n // (this can be observed by extracting the raw image data).\n // Since the conversion algorithms (see below) were written primarily for\n // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n //\n // Unfortunately it's not (always) possible to tell, from the image data\n // alone, if it needs to be inverted. Thus in an attempt to provide better\n // out-of-box behaviour when `JpegImage` is used standalone, default to\n // inverting JPEG (CMYK) images if and only if the image data does *not*\n // come from a PDF file and no `decodeTransform` was passed by the user.\n if (!isSourcePDF && numComponents === 4 && !transform) {\n transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n }\n\n if (transform) {\n for (i = 0; i < dataLength; ) {\n for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n }\n }\n }\n return data;\n }\n\n get _isColorConversionNeeded() {\n if (this.adobe) {\n // The adobe transform marker overrides any previous setting.\n return !!this.adobe.transformCode;\n }\n if (this.numComponents === 3) {\n if (this._colorTransform === 0) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n // then the colours should *not* be transformed.\n return false;\n } else if (\n this.components[0].index === /* \"R\" = */ 0x52 &&\n this.components[1].index === /* \"G\" = */ 0x47 &&\n this.components[2].index === /* \"B\" = */ 0x42\n ) {\n // If the three components are indexed as RGB in ASCII\n // then the colours should *not* be transformed.\n return false;\n }\n return true;\n }\n // `this.numComponents !== 3`\n if (this._colorTransform === 1) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n // then the colours should be transformed.\n return true;\n }\n return false;\n }\n\n _convertYccToRgb(data) {\n let Y, Cb, Cr;\n for (let i = 0, length = data.length; i < length; i += 3) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = Y - 179.456 + 1.402 * Cr;\n data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n data[i + 2] = Y - 226.816 + 1.772 * Cb;\n }\n return data;\n }\n\n _convertYcckToRgb(data) {\n let Y, Cb, Cr, k;\n let offset = 0;\n for (let i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n k = data[i + 3];\n\n data[offset++] =\n -122.67195406894 +\n Cb *\n (-6.60635669420364e-5 * Cb +\n 0.000437130475926232 * Cr -\n 5.4080610064599e-5 * Y +\n 0.00048449797120281 * k -\n 0.154362151871126) +\n Cr *\n (-0.000957964378445773 * Cr +\n 0.000817076911346625 * Y -\n 0.00477271405408747 * k +\n 1.53380253221734) +\n Y *\n (0.000961250184130688 * Y -\n 0.00266257332283933 * k +\n 0.48357088451265) +\n k * (-0.000336197177618394 * k + 0.484791561490776);\n\n data[offset++] =\n 107.268039397724 +\n Cb *\n (2.19927104525741e-5 * Cb -\n 0.000640992018297945 * Cr +\n 0.000659397001245577 * Y +\n 0.000426105652938837 * k -\n 0.176491792462875) +\n Cr *\n (-0.000778269941513683 * Cr +\n 0.00130872261408275 * Y +\n 0.000770482631801132 * k -\n 0.151051492775562) +\n Y *\n (0.00126935368114843 * Y -\n 0.00265090189010898 * k +\n 0.25802910206845) +\n k * (-0.000318913117588328 * k - 0.213742400323665);\n\n data[offset++] =\n -20.810012546947 +\n Cb *\n (-0.000570115196973677 * Cb -\n 2.63409051004589e-5 * Cr +\n 0.0020741088115012 * Y -\n 0.00288260236853442 * k +\n 0.814272968359295) +\n Cr *\n (-1.53496057440975e-5 * Cr -\n 0.000132689043961446 * Y +\n 0.000560833691242812 * k -\n 0.195152027534049) +\n Y *\n (0.00174418132927582 * Y -\n 0.00255243321439347 * k +\n 0.116935020465145) +\n k * (-0.000343531996510555 * k + 0.24165260232407);\n }\n // Ensure that only the converted RGB data is returned.\n return data.subarray(0, offset);\n }\n\n _convertYcckToCmyk(data) {\n let Y, Cb, Cr;\n for (let i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = 434.456 - Y - 1.402 * Cr;\n data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n data[i + 2] = 481.816 - Y - 1.772 * Cb;\n // K in data[i + 3] is unchanged\n }\n return data;\n }\n\n _convertCmykToRgb(data) {\n let c, m, y, k;\n let offset = 0;\n for (let i = 0, length = data.length; i < length; i += 4) {\n c = data[i];\n m = data[i + 1];\n y = data[i + 2];\n k = data[i + 3];\n\n data[offset++] =\n 255 +\n c *\n (-0.00006747147073602441 * c +\n 0.0008379262121013727 * m +\n 0.0002894718188643294 * y +\n 0.003264231057537806 * k -\n 1.1185611867203937) +\n m *\n (0.000026374107616089405 * m -\n 0.00008626949158638572 * y -\n 0.0002748769067499491 * k -\n 0.02155688794978967) +\n y *\n (-0.00003878099212869363 * y -\n 0.0003267808279485286 * k +\n 0.0686742238595345) -\n k * (0.0003361971776183937 * k + 0.7430659151342254);\n\n data[offset++] =\n 255 +\n c *\n (0.00013596372813588848 * c +\n 0.000924537132573585 * m +\n 0.00010567359618683593 * y +\n 0.0004791864687436512 * k -\n 0.3109689587515875) +\n m *\n (-0.00023545346108370344 * m +\n 0.0002702845253534714 * y +\n 0.0020200308977307156 * k -\n 0.7488052167015494) +\n y *\n (0.00006834815998235662 * y +\n 0.00015168452363460973 * k -\n 0.09751927774728933) -\n k * (0.0003189131175883281 * k + 0.7364883807733168);\n\n data[offset++] =\n 255 +\n c *\n (0.000013598650411385307 * c +\n 0.00012423956175490851 * m +\n 0.0004751985097583589 * y -\n 0.0000036729317476630422 * k -\n 0.05562186980264034) +\n m *\n (0.00016141380598724676 * m +\n 0.0009692239130725186 * y +\n 0.0007782692450036253 * k -\n 0.44015232367526463) +\n y *\n (5.068882914068769e-7 * y +\n 0.0017778369011375071 * k -\n 0.7591454649749609) -\n k * (0.0003435319965105553 * k + 0.7063770186160144);\n }\n // Ensure that only the converted RGB data is returned.\n return data.subarray(0, offset);\n }\n\n getData({ width, height, forceRGB = false, isSourcePDF = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n isSourcePDF === true,\n 'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.'\n );\n }\n if (this.numComponents > 4) {\n throw new JpegError(\"Unsupported color mode\");\n }\n // Type of data: Uint8ClampedArray(width * height * numComponents)\n const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n if (this.numComponents === 1 && forceRGB) {\n const dataLength = data.length;\n const rgbData = new Uint8ClampedArray(dataLength * 3);\n let offset = 0;\n for (let i = 0; i < dataLength; i++) {\n const grayColor = data[i];\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n }\n return rgbData;\n } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n return this._convertYccToRgb(data);\n } else if (this.numComponents === 4) {\n if (this._isColorConversionNeeded) {\n if (forceRGB) {\n return this._convertYcckToRgb(data);\n }\n return this._convertYcckToCmyk(data);\n } else if (forceRGB) {\n return this._convertCmykToRgb(data);\n }\n }\n return data;\n }\n}\n\nexport { JpegImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG 2000's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass JpxStream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jpxImage = new JpxImage();\n jpxImage.parse(this.bytes);\n\n const width = jpxImage.width;\n const height = jpxImage.height;\n const componentsCount = jpxImage.componentsCount;\n const tileCount = jpxImage.tiles.length;\n if (tileCount === 1) {\n this.buffer = jpxImage.tiles[0].items;\n } else {\n const data = new Uint8ClampedArray(width * height * componentsCount);\n\n for (let k = 0; k < tileCount; k++) {\n const tileComponents = jpxImage.tiles[k];\n const tileWidth = tileComponents.width;\n const tileHeight = tileComponents.height;\n const tileLeft = tileComponents.left;\n const tileTop = tileComponents.top;\n\n const src = tileComponents.items;\n let srcPosition = 0;\n let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n const imgRowSize = width * componentsCount;\n const tileRowSize = tileWidth * componentsCount;\n\n for (let j = 0; j < tileHeight; j++) {\n const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n data.set(rowBytes, dataPosition);\n srcPosition += tileRowSize;\n dataPosition += imgRowSize;\n }\n }\n this.buffer = data;\n }\n this.bufferLength = this.buffer.length;\n this.eof = true;\n }\n}\n\nexport { JpxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, info, unreachable, warn } from \"../shared/util.js\";\nimport { log2, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\n\nclass JpxError extends BaseException {\n constructor(msg) {\n super(`JPX error: ${msg}`, \"JpxError\");\n }\n}\n\n// Table E.1\nconst SubbandsGainLog2 = {\n LL: 0,\n LH: 1,\n HL: 1,\n HH: 2,\n};\n\nclass JpxImage {\n constructor() {\n this.failOnCorruptedImage = false;\n }\n\n parse(data) {\n const head = readUint16(data, 0);\n // No box header, immediate start of codestream (SOC)\n if (head === 0xff4f) {\n this.parseCodestream(data, 0, data.length);\n return;\n }\n\n const length = data.length;\n let position = 0;\n while (position < length) {\n let headerSize = 8;\n let lbox = readUint32(data, position);\n const tbox = readUint32(data, position + 4);\n position += headerSize;\n if (lbox === 1) {\n // XLBox: read UInt64 according to spec.\n // JavaScript's int precision of 53 bit should be sufficient here.\n lbox =\n readUint32(data, position) * 4294967296 +\n readUint32(data, position + 4);\n position += 8;\n headerSize += 8;\n }\n if (lbox === 0) {\n lbox = length - position + headerSize;\n }\n if (lbox < headerSize) {\n throw new JpxError(\"Invalid box field size\");\n }\n const dataLength = lbox - headerSize;\n let jumpDataLength = true;\n switch (tbox) {\n case 0x6a703268: // 'jp2h'\n jumpDataLength = false; // parsing child boxes\n break;\n case 0x636f6c72: // 'colr'\n // Colorspaces are not used, the CS from the PDF is used.\n const method = data[position];\n if (method === 1) {\n // enumerated colorspace\n const colorspace = readUint32(data, position + 3);\n switch (colorspace) {\n case 16: // this indicates a sRGB colorspace\n case 17: // this indicates a grayscale colorspace\n case 18: // this indicates a YUV colorspace\n break;\n default:\n warn(\"Unknown colorspace \" + colorspace);\n break;\n }\n } else if (method === 2) {\n info(\"ICC profile not supported\");\n }\n break;\n case 0x6a703263: // 'jp2c'\n this.parseCodestream(data, position, position + dataLength);\n break;\n case 0x6a502020: // 'jP\\024\\024'\n if (readUint32(data, position) !== 0x0d0a870a) {\n warn(\"Invalid JP2 signature\");\n }\n break;\n // The following header types are valid but currently not used:\n case 0x6a501a1a: // 'jP\\032\\032'\n case 0x66747970: // 'ftyp'\n case 0x72726571: // 'rreq'\n case 0x72657320: // 'res '\n case 0x69686472: // 'ihdr'\n break;\n default:\n const headerType = String.fromCharCode(\n (tbox >> 24) & 0xff,\n (tbox >> 16) & 0xff,\n (tbox >> 8) & 0xff,\n tbox & 0xff\n );\n warn(`Unsupported header type ${tbox} (${headerType}).`);\n break;\n }\n if (jumpDataLength) {\n position += dataLength;\n }\n }\n }\n\n parseImageProperties(stream) {\n let newByte = stream.getByte();\n while (newByte >= 0) {\n const oldByte = newByte;\n newByte = stream.getByte();\n const code = (oldByte << 8) | newByte;\n // Image and tile size (SIZ)\n if (code === 0xff51) {\n stream.skip(4);\n const Xsiz = stream.getInt32() >>> 0; // Byte 4\n const Ysiz = stream.getInt32() >>> 0; // Byte 8\n const XOsiz = stream.getInt32() >>> 0; // Byte 12\n const YOsiz = stream.getInt32() >>> 0; // Byte 16\n stream.skip(16);\n const Csiz = stream.getUint16(); // Byte 36\n this.width = Xsiz - XOsiz;\n this.height = Ysiz - YOsiz;\n this.componentsCount = Csiz;\n // Results are always returned as `Uint8ClampedArray`s.\n this.bitsPerComponent = 8;\n return;\n }\n }\n throw new JpxError(\"No size marker found in JPX stream\");\n }\n\n parseCodestream(data, start, end) {\n const context = {};\n let doNotRecover = false;\n try {\n let position = start;\n while (position + 1 < end) {\n const code = readUint16(data, position);\n position += 2;\n\n let length = 0,\n j,\n sqcd,\n spqcds,\n spqcdSize,\n scalarExpounded,\n tile;\n switch (code) {\n case 0xff4f: // Start of codestream (SOC)\n context.mainHeader = true;\n break;\n case 0xffd9: // End of codestream (EOC)\n break;\n case 0xff51: // Image and tile size (SIZ)\n length = readUint16(data, position);\n const siz = {};\n siz.Xsiz = readUint32(data, position + 4);\n siz.Ysiz = readUint32(data, position + 8);\n siz.XOsiz = readUint32(data, position + 12);\n siz.YOsiz = readUint32(data, position + 16);\n siz.XTsiz = readUint32(data, position + 20);\n siz.YTsiz = readUint32(data, position + 24);\n siz.XTOsiz = readUint32(data, position + 28);\n siz.YTOsiz = readUint32(data, position + 32);\n const componentsCount = readUint16(data, position + 36);\n siz.Csiz = componentsCount;\n const components = [];\n j = position + 38;\n for (let i = 0; i < componentsCount; i++) {\n const component = {\n precision: (data[j] & 0x7f) + 1,\n isSigned: !!(data[j] & 0x80),\n XRsiz: data[j + 1],\n YRsiz: data[j + 2],\n };\n j += 3;\n calculateComponentDimensions(component, siz);\n components.push(component);\n }\n context.SIZ = siz;\n context.components = components;\n calculateTileGrids(context, components);\n context.QCC = [];\n context.COC = [];\n break;\n case 0xff5c: // Quantization default (QCD)\n length = readUint16(data, position);\n const qcd = {};\n j = position + 2;\n sqcd = data[j++];\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n qcd.noQuantization = spqcdSize === 8;\n qcd.scalarExpounded = scalarExpounded;\n qcd.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n const spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcd.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCD = qcd;\n } else {\n context.currentTile.QCD = qcd;\n context.currentTile.QCC = [];\n }\n break;\n case 0xff5d: // Quantization component (QCC)\n length = readUint16(data, position);\n const qcc = {};\n j = position + 2;\n let cqcc;\n if (context.SIZ.Csiz < 257) {\n cqcc = data[j++];\n } else {\n cqcc = readUint16(data, j);\n j += 2;\n }\n sqcd = data[j++];\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n qcc.noQuantization = spqcdSize === 8;\n qcc.scalarExpounded = scalarExpounded;\n qcc.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n const spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcc.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCC[cqcc] = qcc;\n } else {\n context.currentTile.QCC[cqcc] = qcc;\n }\n break;\n case 0xff52: // Coding style default (COD)\n length = readUint16(data, position);\n const cod = {};\n j = position + 2;\n const scod = data[j++];\n cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n cod.sopMarkerUsed = !!(scod & 2);\n cod.ephMarkerUsed = !!(scod & 4);\n cod.progressionOrder = data[j++];\n cod.layersCount = readUint16(data, j);\n j += 2;\n cod.multipleComponentTransform = data[j++];\n\n cod.decompositionLevelsCount = data[j++];\n cod.xcb = (data[j++] & 0xf) + 2;\n cod.ycb = (data[j++] & 0xf) + 2;\n const blockStyle = data[j++];\n cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n cod.resetContextProbabilities = !!(blockStyle & 2);\n cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n cod.verticallyStripe = !!(blockStyle & 8);\n cod.predictableTermination = !!(blockStyle & 16);\n cod.segmentationSymbolUsed = !!(blockStyle & 32);\n cod.reversibleTransformation = data[j++];\n if (cod.entropyCoderWithCustomPrecincts) {\n const precinctsSizes = [];\n while (j < length + position) {\n const precinctsSize = data[j++];\n precinctsSizes.push({\n PPx: precinctsSize & 0xf,\n PPy: precinctsSize >> 4,\n });\n }\n cod.precinctsSizes = precinctsSizes;\n }\n const unsupported = [];\n if (cod.selectiveArithmeticCodingBypass) {\n unsupported.push(\"selectiveArithmeticCodingBypass\");\n }\n if (cod.resetContextProbabilities) {\n unsupported.push(\"resetContextProbabilities\");\n }\n if (cod.terminationOnEachCodingPass) {\n unsupported.push(\"terminationOnEachCodingPass\");\n }\n if (cod.verticallyStripe) {\n unsupported.push(\"verticallyStripe\");\n }\n if (cod.predictableTermination) {\n unsupported.push(\"predictableTermination\");\n }\n if (unsupported.length > 0) {\n doNotRecover = true;\n warn(`JPX: Unsupported COD options (${unsupported.join(\", \")}).`);\n }\n if (context.mainHeader) {\n context.COD = cod;\n } else {\n context.currentTile.COD = cod;\n context.currentTile.COC = [];\n }\n break;\n case 0xff90: // Start of tile-part (SOT)\n length = readUint16(data, position);\n tile = {};\n tile.index = readUint16(data, position + 2);\n tile.length = readUint32(data, position + 4);\n tile.dataEnd = tile.length + position - 2;\n tile.partIndex = data[position + 8];\n tile.partsCount = data[position + 9];\n\n context.mainHeader = false;\n if (tile.partIndex === 0) {\n // reset component specific settings\n tile.COD = context.COD;\n tile.COC = context.COC.slice(0); // clone of the global COC\n tile.QCD = context.QCD;\n tile.QCC = context.QCC.slice(0); // clone of the global COC\n }\n context.currentTile = tile;\n break;\n case 0xff93: // Start of data (SOD)\n tile = context.currentTile;\n if (tile.partIndex === 0) {\n initializeTile(context, tile.index);\n buildPackets(context);\n }\n\n // moving to the end of the data\n length = tile.dataEnd - position;\n parseTilePackets(context, data, position, length);\n break;\n case 0xff53: // Coding style component (COC)\n warn(\"JPX: Codestream code 0xFF53 (COC) is not implemented.\");\n /* falls through */\n case 0xff55: // Tile-part lengths, main header (TLM)\n case 0xff57: // Packet length, main header (PLM)\n case 0xff58: // Packet length, tile-part header (PLT)\n case 0xff64: // Comment (COM)\n length = readUint16(data, position);\n // skipping content\n break;\n default:\n throw new Error(\"Unknown codestream code: \" + code.toString(16));\n }\n position += length;\n }\n } catch (e) {\n if (doNotRecover || this.failOnCorruptedImage) {\n throw new JpxError(e.message);\n } else {\n warn(`JPX: Trying to recover from: \"${e.message}\".`);\n }\n }\n this.tiles = transformComponents(context);\n this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n this.componentsCount = context.SIZ.Csiz;\n }\n}\n\nfunction calculateComponentDimensions(component, siz) {\n // Section B.2 Component mapping\n component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n component.width = component.x1 - component.x0;\n component.height = component.y1 - component.y0;\n}\nfunction calculateTileGrids(context, components) {\n const siz = context.SIZ;\n // Section B.3 Division into tile and tile-components\n const tiles = [];\n let tile;\n const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n for (let q = 0; q < numYtiles; q++) {\n for (let p = 0; p < numXtiles; p++) {\n tile = {};\n tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n tile.width = tile.tx1 - tile.tx0;\n tile.height = tile.ty1 - tile.ty0;\n tile.components = [];\n tiles.push(tile);\n }\n }\n context.tiles = tiles;\n\n const componentsCount = siz.Csiz;\n for (let i = 0, ii = componentsCount; i < ii; i++) {\n const component = components[i];\n for (let j = 0, jj = tiles.length; j < jj; j++) {\n const tileComponent = {};\n tile = tiles[j];\n tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n tile.components[i] = tileComponent;\n }\n }\n}\nfunction getBlocksDimensions(context, component, r) {\n const codOrCoc = component.codingStyleParameters;\n const result = {};\n if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n result.PPx = 15;\n result.PPy = 15;\n } else {\n result.PPx = codOrCoc.precinctsSizes[r].PPx;\n result.PPy = codOrCoc.precinctsSizes[r].PPy;\n }\n // calculate codeblock size as described in section B.7\n result.xcb_ =\n r > 0\n ? Math.min(codOrCoc.xcb, result.PPx - 1)\n : Math.min(codOrCoc.xcb, result.PPx);\n result.ycb_ =\n r > 0\n ? Math.min(codOrCoc.ycb, result.PPy - 1)\n : Math.min(codOrCoc.ycb, result.PPy);\n return result;\n}\nfunction buildPrecincts(context, resolution, dimensions) {\n // Section B.6 Division resolution to precincts\n const precinctWidth = 1 << dimensions.PPx;\n const precinctHeight = 1 << dimensions.PPy;\n // Jasper introduces codeblock groups for mapping each subband codeblocks\n // to precincts. Precinct partition divides a resolution according to width\n // and height parameters. The subband that belongs to the resolution level\n // has a different size than the level, unless it is the zero resolution.\n\n // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n // The precinct partitioning for a particular subband is derived from a\n // partitioning of its parent LL band (i.e., the LL band at the next higher\n // resolution level)... The LL band associated with each resolution level is\n // divided into precincts... Each of the resulting precinct regions is then\n // mapped into its child subbands (if any) at the next lower resolution\n // level. This is accomplished by using the coordinate transformation\n // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n // coordinates of a point in the LL band and child subband, respectively.\n const isZeroRes = resolution.resLevel === 0;\n const precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n const precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n const numprecinctswide =\n resolution.trx1 > resolution.trx0\n ? Math.ceil(resolution.trx1 / precinctWidth) -\n Math.floor(resolution.trx0 / precinctWidth)\n : 0;\n const numprecinctshigh =\n resolution.try1 > resolution.try0\n ? Math.ceil(resolution.try1 / precinctHeight) -\n Math.floor(resolution.try0 / precinctHeight)\n : 0;\n const numprecincts = numprecinctswide * numprecinctshigh;\n\n resolution.precinctParameters = {\n precinctWidth,\n precinctHeight,\n numprecinctswide,\n numprecinctshigh,\n numprecincts,\n precinctWidthInSubband,\n precinctHeightInSubband,\n };\n}\nfunction buildCodeblocks(context, subband, dimensions) {\n // Section B.7 Division sub-band into code-blocks\n const xcb_ = dimensions.xcb_;\n const ycb_ = dimensions.ycb_;\n const codeblockWidth = 1 << xcb_;\n const codeblockHeight = 1 << ycb_;\n const cbx0 = subband.tbx0 >> xcb_;\n const cby0 = subband.tby0 >> ycb_;\n const cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n const cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n const precinctParameters = subband.resolution.precinctParameters;\n const codeblocks = [];\n const precincts = [];\n let i, j, codeblock, precinctNumber;\n for (j = cby0; j < cby1; j++) {\n for (i = cbx0; i < cbx1; i++) {\n codeblock = {\n cbx: i,\n cby: j,\n tbx0: codeblockWidth * i,\n tby0: codeblockHeight * j,\n tbx1: codeblockWidth * (i + 1),\n tby1: codeblockHeight * (j + 1),\n };\n\n codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n // Calculate precinct number for this codeblock, codeblock position\n // should be relative to its subband, use actual dimension and position\n // See comment about codeblock group width and height\n const pi = Math.floor(\n (codeblock.tbx0_ - subband.tbx0) /\n precinctParameters.precinctWidthInSubband\n );\n const pj = Math.floor(\n (codeblock.tby0_ - subband.tby0) /\n precinctParameters.precinctHeightInSubband\n );\n precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n\n codeblock.precinctNumber = precinctNumber;\n codeblock.subbandType = subband.type;\n codeblock.Lblock = 3;\n\n if (\n codeblock.tbx1_ <= codeblock.tbx0_ ||\n codeblock.tby1_ <= codeblock.tby0_\n ) {\n continue;\n }\n codeblocks.push(codeblock);\n // building precinct for the sub-band\n let precinct = precincts[precinctNumber];\n if (precinct !== undefined) {\n if (i < precinct.cbxMin) {\n precinct.cbxMin = i;\n } else if (i > precinct.cbxMax) {\n precinct.cbxMax = i;\n }\n if (j < precinct.cbyMin) {\n precinct.cbxMin = j;\n } else if (j > precinct.cbyMax) {\n precinct.cbyMax = j;\n }\n } else {\n precincts[precinctNumber] = precinct = {\n cbxMin: i,\n cbyMin: j,\n cbxMax: i,\n cbyMax: j,\n };\n }\n codeblock.precinct = precinct;\n }\n }\n subband.codeblockParameters = {\n codeblockWidth: xcb_,\n codeblockHeight: ycb_,\n numcodeblockwide: cbx1 - cbx0 + 1,\n numcodeblockhigh: cby1 - cby0 + 1,\n };\n subband.codeblocks = codeblocks;\n subband.precincts = precincts;\n}\nfunction createPacket(resolution, precinctNumber, layerNumber) {\n const precinctCodeblocks = [];\n // Section B.10.8 Order of info in packet\n const subbands = resolution.subbands;\n // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n for (let i = 0, ii = subbands.length; i < ii; i++) {\n const subband = subbands[i];\n const codeblocks = subband.codeblocks;\n for (let j = 0, jj = codeblocks.length; j < jj; j++) {\n const codeblock = codeblocks[j];\n if (codeblock.precinctNumber !== precinctNumber) {\n continue;\n }\n precinctCodeblocks.push(codeblock);\n }\n }\n return {\n layerNumber,\n codeblocks: precinctCodeblocks,\n };\n}\nfunction LayerResolutionComponentPositionIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let maxDecompositionLevelsCount = 0;\n for (let q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount\n );\n }\n\n let l = 0,\n r = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.1 Layer-resolution-component-position\n for (; l < layersCount; l++) {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; i < componentsCount; i++) {\n const component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts; ) {\n const packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n r = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ResolutionLayerComponentPositionIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let maxDecompositionLevelsCount = 0;\n for (let q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount\n );\n }\n\n let r = 0,\n l = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.2 Resolution-layer-component-position\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; l < layersCount; l++) {\n for (; i < componentsCount; i++) {\n const component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts; ) {\n const packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n l = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ResolutionPositionComponentLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let l, r, c, p;\n let maxDecompositionLevelsCount = 0;\n for (c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n component.codingStyleParameters.decompositionLevelsCount\n );\n }\n const maxNumPrecinctsInLevel = new Int32Array(\n maxDecompositionLevelsCount + 1\n );\n for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n let maxNumPrecincts = 0;\n for (c = 0; c < componentsCount; ++c) {\n const resolutions = tile.components[c].resolutions;\n if (r < resolutions.length) {\n maxNumPrecincts = Math.max(\n maxNumPrecincts,\n resolutions[r].precinctParameters.numprecincts\n );\n }\n }\n maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n }\n l = 0;\n r = 0;\n c = 0;\n p = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.3 Resolution-position-component-layer\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; p < maxNumPrecinctsInLevel[r]; p++) {\n for (; c < componentsCount; c++) {\n const component = tile.components[c];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n if (p >= numprecincts) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, p, l);\n l++;\n return packet;\n }\n l = 0;\n }\n c = 0;\n }\n p = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction PositionComponentResolutionLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n const precinctsSizes = getPrecinctSizesInImageScale(tile);\n const precinctsIterationSizes = precinctsSizes;\n let l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.4 Position-component-resolution-layer\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; r <= decompositionLevelsCount; r++) {\n const resolution = component.resolutions[r];\n const sizeInImageScale =\n precinctsSizes.components[c].resolutions[r];\n const k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution\n );\n if (k === null) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n c = 0;\n }\n px = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ComponentPositionResolutionLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n const precinctsSizes = getPrecinctSizesInImageScale(tile);\n let l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.5 Component-position-resolution-layer\n for (; c < componentsCount; ++c) {\n const component = tile.components[c];\n const precinctsIterationSizes = precinctsSizes.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; r <= decompositionLevelsCount; r++) {\n const resolution = component.resolutions[r];\n const sizeInImageScale = precinctsIterationSizes.resolutions[r];\n const k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution\n );\n if (k === null) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n px = 0;\n }\n py = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction getPrecinctIndexIfExist(\n pxIndex,\n pyIndex,\n sizeInImageScale,\n precinctIterationSizes,\n resolution\n) {\n const posX = pxIndex * precinctIterationSizes.minWidth;\n const posY = pyIndex * precinctIterationSizes.minHeight;\n if (\n posX % sizeInImageScale.width !== 0 ||\n posY % sizeInImageScale.height !== 0\n ) {\n return null;\n }\n const startPrecinctRowIndex =\n (posY / sizeInImageScale.width) *\n resolution.precinctParameters.numprecinctswide;\n return posX / sizeInImageScale.height + startPrecinctRowIndex;\n}\nfunction getPrecinctSizesInImageScale(tile) {\n const componentsCount = tile.components.length;\n let minWidth = Number.MAX_VALUE;\n let minHeight = Number.MAX_VALUE;\n let maxNumWide = 0;\n let maxNumHigh = 0;\n const sizePerComponent = new Array(componentsCount);\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n const sizePerResolution = new Array(decompositionLevelsCount + 1);\n let minWidthCurrentComponent = Number.MAX_VALUE;\n let minHeightCurrentComponent = Number.MAX_VALUE;\n let maxNumWideCurrentComponent = 0;\n let maxNumHighCurrentComponent = 0;\n let scale = 1;\n for (let r = decompositionLevelsCount; r >= 0; --r) {\n const resolution = component.resolutions[r];\n const widthCurrentResolution =\n scale * resolution.precinctParameters.precinctWidth;\n const heightCurrentResolution =\n scale * resolution.precinctParameters.precinctHeight;\n minWidthCurrentComponent = Math.min(\n minWidthCurrentComponent,\n widthCurrentResolution\n );\n minHeightCurrentComponent = Math.min(\n minHeightCurrentComponent,\n heightCurrentResolution\n );\n maxNumWideCurrentComponent = Math.max(\n maxNumWideCurrentComponent,\n resolution.precinctParameters.numprecinctswide\n );\n maxNumHighCurrentComponent = Math.max(\n maxNumHighCurrentComponent,\n resolution.precinctParameters.numprecinctshigh\n );\n sizePerResolution[r] = {\n width: widthCurrentResolution,\n height: heightCurrentResolution,\n };\n scale <<= 1;\n }\n minWidth = Math.min(minWidth, minWidthCurrentComponent);\n minHeight = Math.min(minHeight, minHeightCurrentComponent);\n maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n sizePerComponent[c] = {\n resolutions: sizePerResolution,\n minWidth: minWidthCurrentComponent,\n minHeight: minHeightCurrentComponent,\n maxNumWide: maxNumWideCurrentComponent,\n maxNumHigh: maxNumHighCurrentComponent,\n };\n }\n return {\n components: sizePerComponent,\n minWidth,\n minHeight,\n maxNumWide,\n maxNumHigh,\n };\n}\nfunction buildPackets(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const componentsCount = siz.Csiz;\n // Creating resolutions and sub-bands for each component\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n // Section B.5 Resolution levels and sub-bands\n const resolutions = [];\n const subbands = [];\n for (let r = 0; r <= decompositionLevelsCount; r++) {\n const blocksDimensions = getBlocksDimensions(context, component, r);\n const resolution = {};\n const scale = 1 << (decompositionLevelsCount - r);\n resolution.trx0 = Math.ceil(component.tcx0 / scale);\n resolution.try0 = Math.ceil(component.tcy0 / scale);\n resolution.trx1 = Math.ceil(component.tcx1 / scale);\n resolution.try1 = Math.ceil(component.tcy1 / scale);\n resolution.resLevel = r;\n buildPrecincts(context, resolution, blocksDimensions);\n resolutions.push(resolution);\n\n let subband;\n if (r === 0) {\n // one sub-band (LL) with last decomposition\n subband = {};\n subband.type = \"LL\";\n subband.tbx0 = Math.ceil(component.tcx0 / scale);\n subband.tby0 = Math.ceil(component.tcy0 / scale);\n subband.tbx1 = Math.ceil(component.tcx1 / scale);\n subband.tby1 = Math.ceil(component.tcy1 / scale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolution.subbands = [subband];\n } else {\n const bscale = 1 << (decompositionLevelsCount - r + 1);\n const resolutionSubbands = [];\n // three sub-bands (HL, LH and HH) with rest of decompositions\n subband = {};\n subband.type = \"HL\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = \"LH\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = \"HH\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n resolution.subbands = resolutionSubbands;\n }\n }\n component.resolutions = resolutions;\n component.subbands = subbands;\n }\n // Generate the packets sequence\n const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n switch (progressionOrder) {\n case 0:\n tile.packetsIterator = new LayerResolutionComponentPositionIterator(\n context\n );\n break;\n case 1:\n tile.packetsIterator = new ResolutionLayerComponentPositionIterator(\n context\n );\n break;\n case 2:\n tile.packetsIterator = new ResolutionPositionComponentLayerIterator(\n context\n );\n break;\n case 3:\n tile.packetsIterator = new PositionComponentResolutionLayerIterator(\n context\n );\n break;\n case 4:\n tile.packetsIterator = new ComponentPositionResolutionLayerIterator(\n context\n );\n break;\n default:\n throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n }\n}\nfunction parseTilePackets(context, data, offset, dataLength) {\n let position = 0;\n let buffer,\n bufferSize = 0,\n skipNextBit = false;\n function readBits(count) {\n while (bufferSize < count) {\n const b = data[offset + position];\n position++;\n if (skipNextBit) {\n buffer = (buffer << 7) | b;\n bufferSize += 7;\n skipNextBit = false;\n } else {\n buffer = (buffer << 8) | b;\n bufferSize += 8;\n }\n if (b === 0xff) {\n skipNextBit = true;\n }\n }\n bufferSize -= count;\n return (buffer >>> bufferSize) & ((1 << count) - 1);\n }\n function skipMarkerIfEqual(value) {\n if (\n data[offset + position - 1] === 0xff &&\n data[offset + position] === value\n ) {\n skipBytes(1);\n return true;\n } else if (\n data[offset + position] === 0xff &&\n data[offset + position + 1] === value\n ) {\n skipBytes(2);\n return true;\n }\n return false;\n }\n function skipBytes(count) {\n position += count;\n }\n function alignToByte() {\n bufferSize = 0;\n if (skipNextBit) {\n position++;\n skipNextBit = false;\n }\n }\n function readCodingpasses() {\n if (readBits(1) === 0) {\n return 1;\n }\n if (readBits(1) === 0) {\n return 2;\n }\n let value = readBits(2);\n if (value < 3) {\n return value + 3;\n }\n value = readBits(5);\n if (value < 31) {\n return value + 6;\n }\n value = readBits(7);\n return value + 37;\n }\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const sopMarkerUsed = context.COD.sopMarkerUsed;\n const ephMarkerUsed = context.COD.ephMarkerUsed;\n const packetsIterator = tile.packetsIterator;\n while (position < dataLength) {\n alignToByte();\n if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n // Skip also marker segment length and packet sequence ID\n skipBytes(4);\n }\n const packet = packetsIterator.nextPacket();\n if (!readBits(1)) {\n continue;\n }\n const layerNumber = packet.layerNumber,\n queue = [];\n let codeblock;\n for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n codeblock = packet.codeblocks[i];\n let precinct = codeblock.precinct;\n const codeblockColumn = codeblock.cbx - precinct.cbxMin;\n const codeblockRow = codeblock.cby - precinct.cbyMin;\n let codeblockIncluded = false;\n let firstTimeInclusion = false;\n let valueReady, zeroBitPlanesTree;\n if (codeblock.included !== undefined) {\n codeblockIncluded = !!readBits(1);\n } else {\n // reading inclusion tree\n precinct = codeblock.precinct;\n let inclusionTree;\n if (precinct.inclusionTree !== undefined) {\n inclusionTree = precinct.inclusionTree;\n } else {\n // building inclusion and zero bit-planes trees\n const width = precinct.cbxMax - precinct.cbxMin + 1;\n const height = precinct.cbyMax - precinct.cbyMin + 1;\n inclusionTree = new InclusionTree(width, height, layerNumber);\n zeroBitPlanesTree = new TagTree(width, height);\n precinct.inclusionTree = inclusionTree;\n precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n for (let l = 0; l < layerNumber; l++) {\n if (readBits(1) !== 0) {\n throw new JpxError(\"Invalid tag tree\");\n }\n }\n }\n\n if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n while (true) {\n if (readBits(1)) {\n valueReady = !inclusionTree.nextLevel();\n if (valueReady) {\n codeblock.included = true;\n codeblockIncluded = firstTimeInclusion = true;\n break;\n }\n } else {\n inclusionTree.incrementValue(layerNumber);\n break;\n }\n }\n }\n }\n if (!codeblockIncluded) {\n continue;\n }\n if (firstTimeInclusion) {\n zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n while (true) {\n if (readBits(1)) {\n valueReady = !zeroBitPlanesTree.nextLevel();\n if (valueReady) {\n break;\n }\n } else {\n zeroBitPlanesTree.incrementValue();\n }\n }\n codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n }\n const codingpasses = readCodingpasses();\n while (readBits(1)) {\n codeblock.Lblock++;\n }\n const codingpassesLog2 = log2(codingpasses);\n // rounding down log2\n const bits =\n (codingpasses < 1 << codingpassesLog2\n ? codingpassesLog2 - 1\n : codingpassesLog2) + codeblock.Lblock;\n const codedDataLength = readBits(bits);\n queue.push({\n codeblock,\n codingpasses,\n dataLength: codedDataLength,\n });\n }\n alignToByte();\n if (ephMarkerUsed) {\n skipMarkerIfEqual(0x92);\n }\n while (queue.length > 0) {\n const packetItem = queue.shift();\n codeblock = packetItem.codeblock;\n if (codeblock.data === undefined) {\n codeblock.data = [];\n }\n codeblock.data.push({\n data,\n start: offset + position,\n end: offset + position + packetItem.dataLength,\n codingpasses: packetItem.codingpasses,\n });\n position += packetItem.dataLength;\n }\n }\n return position;\n}\nfunction copyCoefficients(\n coefficients,\n levelWidth,\n levelHeight,\n subband,\n delta,\n mb,\n reversible,\n segmentationSymbolUsed\n) {\n const x0 = subband.tbx0;\n const y0 = subband.tby0;\n const width = subband.tbx1 - subband.tbx0;\n const codeblocks = subband.codeblocks;\n const right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n const bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n for (let i = 0, ii = codeblocks.length; i < ii; ++i) {\n const codeblock = codeblocks[i];\n const blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n const blockHeight = codeblock.tby1_ - codeblock.tby0_;\n if (blockWidth === 0 || blockHeight === 0) {\n continue;\n }\n if (codeblock.data === undefined) {\n continue;\n }\n\n const bitModel = new BitModel(\n blockWidth,\n blockHeight,\n codeblock.subbandType,\n codeblock.zeroBitPlanes,\n mb\n );\n let currentCodingpassType = 2; // first bit plane starts from cleanup\n\n // collect data\n const data = codeblock.data;\n let totalLength = 0,\n codingpasses = 0;\n let j, jj, dataItem;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n totalLength += dataItem.end - dataItem.start;\n codingpasses += dataItem.codingpasses;\n }\n const encodedData = new Uint8Array(totalLength);\n let position = 0;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n const chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n encodedData.set(chunk, position);\n position += chunk.length;\n }\n // decoding the item\n const decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n bitModel.setDecoder(decoder);\n\n for (j = 0; j < codingpasses; j++) {\n switch (currentCodingpassType) {\n case 0:\n bitModel.runSignificancePropagationPass();\n break;\n case 1:\n bitModel.runMagnitudeRefinementPass();\n break;\n case 2:\n bitModel.runCleanupPass();\n if (segmentationSymbolUsed) {\n bitModel.checkSegmentationSymbol();\n }\n break;\n }\n currentCodingpassType = (currentCodingpassType + 1) % 3;\n }\n\n let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n const sign = bitModel.coefficentsSign;\n const magnitude = bitModel.coefficentsMagnitude;\n const bitsDecoded = bitModel.bitsDecoded;\n const magnitudeCorrection = reversible ? 0 : 0.5;\n let k, n, nb;\n position = 0;\n // Do the interleaving of Section F.3.3 here, so we do not need\n // to copy later. LL level is not interleaved, just copied.\n const interleave = subband.type !== \"LL\";\n for (j = 0; j < blockHeight; j++) {\n const row = (offset / width) | 0; // row in the non-interleaved subband\n const levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n for (k = 0; k < blockWidth; k++) {\n n = magnitude[position];\n if (n !== 0) {\n n = (n + magnitudeCorrection) * delta;\n if (sign[position] !== 0) {\n n = -n;\n }\n nb = bitsDecoded[position];\n const pos = interleave ? levelOffset + (offset << 1) : offset;\n if (reversible && nb >= mb) {\n coefficients[pos] = n;\n } else {\n coefficients[pos] = n * (1 << (mb - nb));\n }\n }\n offset++;\n position++;\n }\n offset += width - blockWidth;\n }\n }\n}\nfunction transformTile(context, tile, c) {\n const component = tile.components[c];\n const codingStyleParameters = component.codingStyleParameters;\n const quantizationParameters = component.quantizationParameters;\n const decompositionLevelsCount =\n codingStyleParameters.decompositionLevelsCount;\n const spqcds = quantizationParameters.SPqcds;\n const scalarExpounded = quantizationParameters.scalarExpounded;\n const guardBits = quantizationParameters.guardBits;\n const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n const precision = context.components[c].precision;\n\n const reversible = codingStyleParameters.reversibleTransformation;\n const transform = reversible\n ? new ReversibleTransform()\n : new IrreversibleTransform();\n\n const subbandCoefficients = [];\n let b = 0;\n for (let i = 0; i <= decompositionLevelsCount; i++) {\n const resolution = component.resolutions[i];\n\n const width = resolution.trx1 - resolution.trx0;\n const height = resolution.try1 - resolution.try0;\n // Allocate space for the whole sublevel.\n const coefficients = new Float32Array(width * height);\n\n for (let j = 0, jj = resolution.subbands.length; j < jj; j++) {\n let mu, epsilon;\n if (!scalarExpounded) {\n // formula E-5\n mu = spqcds[0].mu;\n epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n } else {\n mu = spqcds[b].mu;\n epsilon = spqcds[b].epsilon;\n b++;\n }\n\n const subband = resolution.subbands[j];\n const gainLog2 = SubbandsGainLog2[subband.type];\n\n // calculate quantization coefficient (Section E.1.1.1)\n const delta = reversible\n ? 1\n : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n const mb = guardBits + epsilon - 1;\n\n // In the first resolution level, copyCoefficients will fill the\n // whole array with coefficients. In the succeeding passes,\n // copyCoefficients will consecutively fill in the values that belong\n // to the interleaved positions of the HL, LH, and HH coefficients.\n // The LL coefficients will then be interleaved in Transform.iterate().\n copyCoefficients(\n coefficients,\n width,\n height,\n subband,\n delta,\n mb,\n reversible,\n segmentationSymbolUsed\n );\n }\n subbandCoefficients.push({\n width,\n height,\n items: coefficients,\n });\n }\n\n const result = transform.calculate(\n subbandCoefficients,\n component.tcx0,\n component.tcy0\n );\n return {\n left: component.tcx0,\n top: component.tcy0,\n width: result.width,\n height: result.height,\n items: result.items,\n };\n}\nfunction transformComponents(context) {\n const siz = context.SIZ;\n const components = context.components;\n const componentsCount = siz.Csiz;\n const resultImages = [];\n for (let i = 0, ii = context.tiles.length; i < ii; i++) {\n const tile = context.tiles[i];\n const transformedTiles = [];\n for (let c = 0; c < componentsCount; c++) {\n transformedTiles[c] = transformTile(context, tile, c);\n }\n const tile0 = transformedTiles[0];\n const out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n const result = {\n left: tile0.left,\n top: tile0.top,\n width: tile0.width,\n height: tile0.height,\n items: out,\n };\n\n // Section G.2.2 Inverse multi component transform\n let shift, offset;\n let pos = 0,\n j,\n jj,\n y0,\n y1,\n y2;\n if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n const fourComponents = componentsCount === 4;\n const y0items = transformedTiles[0].items;\n const y1items = transformedTiles[1].items;\n const y2items = transformedTiles[2].items;\n const y3items = fourComponents ? transformedTiles[3].items : null;\n\n // HACK: The multiple component transform formulas below assume that\n // all components have the same precision. With this in mind, we\n // compute shift and offset only once.\n shift = components[0].precision - 8;\n offset = (128 << shift) + 0.5;\n\n const component0 = tile.components[0];\n const alpha01 = componentsCount - 3;\n jj = y0items.length;\n if (!component0.codingStyleParameters.reversibleTransformation) {\n // inverse irreversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n out[pos++] = (y0 + 1.402 * y2) >> shift;\n out[pos++] = (y0 - 0.34413 * y1 - 0.71414 * y2) >> shift;\n out[pos++] = (y0 + 1.772 * y1) >> shift;\n }\n } else {\n // inverse reversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n const g = y0 - ((y2 + y1) >> 2);\n\n out[pos++] = (g + y2) >> shift;\n out[pos++] = g >> shift;\n out[pos++] = (g + y1) >> shift;\n }\n }\n if (fourComponents) {\n for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n out[pos] = (y3items[j] + offset) >> shift;\n }\n }\n } else {\n // no multi-component transform\n for (let c = 0; c < componentsCount; c++) {\n const items = transformedTiles[c].items;\n shift = components[c].precision - 8;\n offset = (128 << shift) + 0.5;\n for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n out[pos] = (items[j] + offset) >> shift;\n pos += componentsCount;\n }\n }\n }\n resultImages.push(result);\n }\n return resultImages;\n}\nfunction initializeTile(context, tileIndex) {\n const siz = context.SIZ;\n const componentsCount = siz.Csiz;\n const tile = context.tiles[tileIndex];\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const qcdOrQcc =\n context.currentTile.QCC[c] !== undefined\n ? context.currentTile.QCC[c]\n : context.currentTile.QCD;\n component.quantizationParameters = qcdOrQcc;\n const codOrCoc =\n context.currentTile.COC[c] !== undefined\n ? context.currentTile.COC[c]\n : context.currentTile.COD;\n component.codingStyleParameters = codOrCoc;\n }\n tile.codingStyleDefaultParameters = context.currentTile.COD;\n}\n\n// Section B.10.2 Tag trees\nclass TagTree {\n constructor(width, height) {\n const levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (let i = 0; i < levelsLength; i++) {\n const level = {\n width,\n height,\n items: [],\n };\n this.levels.push(level);\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n reset(i, j) {\n let currentLevel = 0,\n value = 0,\n level;\n while (currentLevel < this.levels.length) {\n level = this.levels[currentLevel];\n const index = i + j * level.width;\n if (level.items[index] !== undefined) {\n value = level.items[index];\n break;\n }\n level.index = index;\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n currentLevel--;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n this.currentLevel = currentLevel;\n delete this.value;\n }\n\n incrementValue() {\n const level = this.levels[this.currentLevel];\n level.items[level.index]++;\n }\n\n nextLevel() {\n let currentLevel = this.currentLevel;\n let level = this.levels[currentLevel];\n const value = level.items[level.index];\n currentLevel--;\n if (currentLevel < 0) {\n this.value = value;\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n}\n\nclass InclusionTree {\n constructor(width, height, defaultValue) {\n const levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (let i = 0; i < levelsLength; i++) {\n const items = new Uint8Array(width * height);\n for (let j = 0, jj = items.length; j < jj; j++) {\n items[j] = defaultValue;\n }\n\n const level = {\n width,\n height,\n items,\n };\n this.levels.push(level);\n\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n reset(i, j, stopValue) {\n let currentLevel = 0;\n while (currentLevel < this.levels.length) {\n const level = this.levels[currentLevel];\n const index = i + j * level.width;\n level.index = index;\n const value = level.items[index];\n\n if (value === 0xff) {\n break;\n }\n\n if (value > stopValue) {\n this.currentLevel = currentLevel;\n // already know about this one, propagating the value to top levels\n this.propagateValues();\n return false;\n }\n\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n this.currentLevel = currentLevel - 1;\n return true;\n }\n\n incrementValue(stopValue) {\n const level = this.levels[this.currentLevel];\n level.items[level.index] = stopValue + 1;\n this.propagateValues();\n }\n\n propagateValues() {\n let levelIndex = this.currentLevel;\n let level = this.levels[levelIndex];\n const currentValue = level.items[level.index];\n while (--levelIndex >= 0) {\n level = this.levels[levelIndex];\n level.items[level.index] = currentValue;\n }\n }\n\n nextLevel() {\n let currentLevel = this.currentLevel;\n let level = this.levels[currentLevel];\n const value = level.items[level.index];\n level.items[level.index] = 0xff;\n currentLevel--;\n if (currentLevel < 0) {\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n}\n\n// Section D. Coefficient bit modeling\nconst BitModel = (function BitModelClosure() {\n const UNIFORM_CONTEXT = 17;\n const RUNLENGTH_CONTEXT = 18;\n // Table D-1\n // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n const LLAndLHContextsLabel = new Uint8Array([\n 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,\n 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,\n 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,\n ]);\n const HLContextLabel = new Uint8Array([\n 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,\n 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,\n 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,\n ]);\n const HHContextLabel = new Uint8Array([\n 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,\n 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,\n 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,\n ]);\n\n // eslint-disable-next-line no-shadow\n class BitModel {\n constructor(width, height, subband, zeroBitPlanes, mb) {\n this.width = width;\n this.height = height;\n\n let contextLabelTable;\n if (subband === \"HH\") {\n contextLabelTable = HHContextLabel;\n } else if (subband === \"HL\") {\n contextLabelTable = HLContextLabel;\n } else {\n contextLabelTable = LLAndLHContextsLabel;\n }\n this.contextLabelTable = contextLabelTable;\n\n const coefficientCount = width * height;\n\n // coefficients outside the encoding region treated as insignificant\n // add border state cells for significanceState\n this.neighborsSignificance = new Uint8Array(coefficientCount);\n this.coefficentsSign = new Uint8Array(coefficientCount);\n let coefficentsMagnitude;\n if (mb > 14) {\n coefficentsMagnitude = new Uint32Array(coefficientCount);\n } else if (mb > 6) {\n coefficentsMagnitude = new Uint16Array(coefficientCount);\n } else {\n coefficentsMagnitude = new Uint8Array(coefficientCount);\n }\n this.coefficentsMagnitude = coefficentsMagnitude;\n this.processingFlags = new Uint8Array(coefficientCount);\n\n const bitsDecoded = new Uint8Array(coefficientCount);\n if (zeroBitPlanes !== 0) {\n for (let i = 0; i < coefficientCount; i++) {\n bitsDecoded[i] = zeroBitPlanes;\n }\n }\n this.bitsDecoded = bitsDecoded;\n\n this.reset();\n }\n\n setDecoder(decoder) {\n this.decoder = decoder;\n }\n\n reset() {\n // We have 17 contexts that are accessed via context labels,\n // plus the uniform and runlength context.\n this.contexts = new Int8Array(19);\n\n // Contexts are packed into 1 byte:\n // highest 7 bits carry the index, lowest bit carries mps\n this.contexts[0] = (4 << 1) | 0;\n this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n }\n\n setNeighborsSignificance(row, column, index) {\n const neighborsSignificance = this.neighborsSignificance;\n const width = this.width,\n height = this.height;\n const left = column > 0;\n const right = column + 1 < width;\n let i;\n\n if (row > 0) {\n i = index - width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (row + 1 < height) {\n i = index + width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (left) {\n neighborsSignificance[index - 1] += 0x01;\n }\n if (right) {\n neighborsSignificance[index + 1] += 0x01;\n }\n neighborsSignificance[index] |= 0x80;\n }\n\n runSignificancePropagationPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n const neighborsSignificance = this.neighborsSignificance;\n const processingFlags = this.processingFlags;\n const contexts = this.contexts;\n const labels = this.contextLabelTable;\n const bitsDecoded = this.bitsDecoded;\n const processedInverseMask = ~1;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n\n for (let i0 = 0; i0 < height; i0 += 4) {\n for (let j = 0; j < width; j++) {\n let index = i0 * width + j;\n for (let i1 = 0; i1 < 4; i1++, index += width) {\n const i = i0 + i1;\n if (i >= height) {\n break;\n }\n // clear processed flag first\n processingFlags[index] &= processedInverseMask;\n\n if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {\n continue;\n }\n\n const contextLabel = labels[neighborsSignificance[index]];\n const decision = decoder.readBit(contexts, contextLabel);\n if (decision) {\n const sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n }\n\n decodeSignBit(row, column, index) {\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n let contribution, sign0, sign1, significance1;\n let contextLabel, decoded;\n\n // calculate horizontal contribution\n significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n sign1 = coefficentsSign[index + 1];\n if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign1 - sign0;\n } else {\n contribution = 1 - sign1 - sign1;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign0 - sign0;\n } else {\n contribution = 0;\n }\n const horizontalContribution = 3 * contribution;\n\n // calculate vertical contribution and combine with the horizontal\n significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n sign1 = coefficentsSign[index + width];\n if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign1 - sign0 + horizontalContribution;\n } else {\n contribution = 1 - sign1 - sign1 + horizontalContribution;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign0 - sign0 + horizontalContribution;\n } else {\n contribution = horizontalContribution;\n }\n\n if (contribution >= 0) {\n contextLabel = 9 + contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel);\n } else {\n contextLabel = 9 - contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n }\n return decoded;\n }\n\n runMagnitudeRefinementPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const neighborsSignificance = this.neighborsSignificance;\n const contexts = this.contexts;\n const bitsDecoded = this.bitsDecoded;\n const processingFlags = this.processingFlags;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n const length = width * height;\n const width4 = width * 4;\n\n for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n indexNext = Math.min(length, index0 + width4);\n for (let j = 0; j < width; j++) {\n for (let index = index0 + j; index < indexNext; index += width) {\n // significant but not those that have just become\n if (\n !coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0\n ) {\n continue;\n }\n\n let contextLabel = 16;\n if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n processingFlags[index] ^= firstMagnitudeBitMask;\n // first refinement\n const significance = neighborsSignificance[index] & 127;\n contextLabel = significance === 0 ? 15 : 14;\n }\n\n const bit = decoder.readBit(contexts, contextLabel);\n coefficentsMagnitude[index] =\n (coefficentsMagnitude[index] << 1) | bit;\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n }\n\n runCleanupPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const neighborsSignificance = this.neighborsSignificance;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n const contexts = this.contexts;\n const labels = this.contextLabelTable;\n const bitsDecoded = this.bitsDecoded;\n const processingFlags = this.processingFlags;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n const oneRowDown = width;\n const twoRowsDown = width * 2;\n const threeRowsDown = width * 3;\n let iNext;\n for (let i0 = 0; i0 < height; i0 = iNext) {\n iNext = Math.min(i0 + 4, height);\n const indexBase = i0 * width;\n const checkAllEmpty = i0 + 3 < height;\n for (let j = 0; j < width; j++) {\n const index0 = indexBase + j;\n // using the property: labels[neighborsSignificance[index]] === 0\n // when neighborsSignificance[index] === 0\n const allEmpty =\n checkAllEmpty &&\n processingFlags[index0] === 0 &&\n processingFlags[index0 + oneRowDown] === 0 &&\n processingFlags[index0 + twoRowsDown] === 0 &&\n processingFlags[index0 + threeRowsDown] === 0 &&\n neighborsSignificance[index0] === 0 &&\n neighborsSignificance[index0 + oneRowDown] === 0 &&\n neighborsSignificance[index0 + twoRowsDown] === 0 &&\n neighborsSignificance[index0 + threeRowsDown] === 0;\n let i1 = 0,\n index = index0;\n let i = i0,\n sign;\n if (allEmpty) {\n const hasSignificantCoefficent = decoder.readBit(\n contexts,\n RUNLENGTH_CONTEXT\n );\n if (!hasSignificantCoefficent) {\n bitsDecoded[index0]++;\n bitsDecoded[index0 + oneRowDown]++;\n bitsDecoded[index0 + twoRowsDown]++;\n bitsDecoded[index0 + threeRowsDown]++;\n continue; // next column\n }\n i1 =\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (i1 !== 0) {\n i = i0 + i1;\n index += i1 * width;\n }\n\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n\n index = index0;\n for (let i2 = i0; i2 <= i; i2++, index += width) {\n bitsDecoded[index]++;\n }\n\n i1++;\n }\n for (i = i0 + i1; i < iNext; i++, index += width) {\n if (\n coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0\n ) {\n continue;\n }\n\n const contextLabel = labels[neighborsSignificance[index]];\n const decision = decoder.readBit(contexts, contextLabel);\n if (decision === 1) {\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n }\n }\n }\n }\n\n checkSegmentationSymbol() {\n const decoder = this.decoder;\n const contexts = this.contexts;\n const symbol =\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (symbol !== 0xa) {\n throw new JpxError(\"Invalid segmentation symbol\");\n }\n }\n }\n\n return BitModel;\n})();\n\n// Section F, Discrete wavelet transformation\nclass Transform {\n constructor() {\n if (this.constructor === Transform) {\n unreachable(\"Cannot initialize Transform.\");\n }\n }\n\n calculate(subbands, u0, v0) {\n let ll = subbands[0];\n for (let i = 1, ii = subbands.length; i < ii; i++) {\n ll = this.iterate(ll, subbands[i], u0, v0);\n }\n return ll;\n }\n\n extend(buffer, offset, size) {\n // Section F.3.7 extending... using max extension of 4\n let i1 = offset - 1,\n j1 = offset + 1;\n let i2 = offset + size - 2,\n j2 = offset + size;\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1] = buffer[j1];\n buffer[j2] = buffer[i2];\n }\n\n filter(x, offset, length) {\n unreachable(\"Abstract method `filter` called\");\n }\n\n iterate(ll, hl_lh_hh, u0, v0) {\n const llWidth = ll.width,\n llHeight = ll.height;\n let llItems = ll.items;\n const width = hl_lh_hh.width;\n const height = hl_lh_hh.height;\n const items = hl_lh_hh.items;\n let i, j, k, l, u, v;\n\n // Interleave LL according to Section F.3.3\n for (k = 0, i = 0; i < llHeight; i++) {\n l = i * 2 * width;\n for (j = 0; j < llWidth; j++, k++, l += 2) {\n items[l] = llItems[k];\n }\n }\n // The LL band is not needed anymore.\n llItems = ll.items = null;\n\n const bufferPadding = 4;\n const rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n // Section F.3.4 HOR_SR\n if (width === 1) {\n // if width = 1, when u0 even keep items as is, when odd divide by 2\n if ((u0 & 1) !== 0) {\n for (v = 0, k = 0; v < height; v++, k += width) {\n items[k] *= 0.5;\n }\n }\n } else {\n for (v = 0, k = 0; v < height; v++, k += width) {\n rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n this.extend(rowBuffer, bufferPadding, width);\n this.filter(rowBuffer, bufferPadding, width);\n\n items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);\n }\n }\n\n // Accesses to the items array can take long, because it may not fit into\n // CPU cache and has to be fetched from main memory. Since subsequent\n // accesses to the items array are not local when reading columns, we\n // have a cache miss every time. To reduce cache misses, get up to\n // 'numBuffers' items at a time and store them into the individual\n // buffers. The colBuffers should be small enough to fit into CPU cache.\n let numBuffers = 16;\n const colBuffers = [];\n for (i = 0; i < numBuffers; i++) {\n colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n }\n let b,\n currentBuffer = 0;\n ll = bufferPadding + height;\n\n // Section F.3.5 VER_SR\n if (height === 1) {\n // if height = 1, when v0 even keep items as is, when odd divide by 2\n if ((v0 & 1) !== 0) {\n for (u = 0; u < width; u++) {\n items[u] *= 0.5;\n }\n }\n } else {\n for (u = 0; u < width; u++) {\n // if we ran out of buffers, copy several image columns at once\n if (currentBuffer === 0) {\n numBuffers = Math.min(width - u, numBuffers);\n for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n colBuffers[b][l] = items[k + b];\n }\n }\n currentBuffer = numBuffers;\n }\n\n currentBuffer--;\n const buffer = colBuffers[currentBuffer];\n this.extend(buffer, bufferPadding, height);\n this.filter(buffer, bufferPadding, height);\n\n // If this is last buffer in this group of buffers, flush all buffers.\n if (currentBuffer === 0) {\n k = u - numBuffers + 1;\n for (l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n items[k + b] = colBuffers[b][l];\n }\n }\n }\n }\n }\n\n return { width, height, items };\n }\n}\n\n// Section 3.8.2 Irreversible 9-7 filter\nclass IrreversibleTransform extends Transform {\n filter(x, offset, length) {\n const len = length >> 1;\n offset |= 0;\n let j, n, current, next;\n\n const alpha = -1.586134342059924;\n const beta = -0.052980118572961;\n const gamma = 0.882911075530934;\n const delta = 0.443506852043971;\n const K = 1.230174104914001;\n const K_ = 1 / K;\n\n // step 1 is combined with step 3\n\n // step 2\n j = offset - 3;\n for (n = len + 4; n--; j += 2) {\n x[j] *= K_;\n }\n\n // step 1 & 3\n j = offset - 2;\n current = delta * x[j - 1];\n for (n = len + 3; n--; j += 2) {\n next = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n if (n--) {\n j += 2;\n current = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n } else {\n break;\n }\n }\n\n // step 4\n j = offset - 1;\n current = gamma * x[j - 1];\n for (n = len + 2; n--; j += 2) {\n next = gamma * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = gamma * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 5\n j = offset;\n current = beta * x[j - 1];\n for (n = len + 1; n--; j += 2) {\n next = beta * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = beta * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 6\n if (len !== 0) {\n j = offset + 1;\n current = alpha * x[j - 1];\n for (n = len; n--; j += 2) {\n next = alpha * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = alpha * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n }\n }\n}\n\n// Section 3.8.1 Reversible 5-3 filter\nclass ReversibleTransform extends Transform {\n filter(x, offset, length) {\n const len = length >> 1;\n offset |= 0;\n let j, n;\n\n for (j = offset, n = len + 1; n--; j += 2) {\n x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n }\n\n for (j = offset + 1, n = len; n--; j += 2) {\n x[j] += (x[j - 1] + x[j + 1]) >> 1;\n }\n }\n}\n\nexport { JpxImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass LZWStream extends DecodeStream {\n constructor(str, maybeLength, earlyChange) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.cachedData = 0;\n this.bitsCached = 0;\n\n const maxLzwDictionarySize = 4096;\n const lzwState = {\n earlyChange,\n codeLength: 9,\n nextCode: 258,\n dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n currentSequence: new Uint8Array(maxLzwDictionarySize),\n currentSequenceLength: 0,\n };\n for (let i = 0; i < 256; ++i) {\n lzwState.dictionaryValues[i] = i;\n lzwState.dictionaryLengths[i] = 1;\n }\n this.lzwState = lzwState;\n }\n\n readBits(n) {\n let bitsCached = this.bitsCached;\n let cachedData = this.cachedData;\n while (bitsCached < n) {\n const c = this.str.getByte();\n if (c === -1) {\n this.eof = true;\n return null;\n }\n cachedData = (cachedData << 8) | c;\n bitsCached += 8;\n }\n this.bitsCached = bitsCached -= n;\n this.cachedData = cachedData;\n this.lastCode = null;\n return (cachedData >>> bitsCached) & ((1 << n) - 1);\n }\n\n readBlock() {\n const blockSize = 512,\n decodedSizeDelta = blockSize;\n let estimatedDecodedSize = blockSize * 2;\n let i, j, q;\n\n const lzwState = this.lzwState;\n if (!lzwState) {\n return; // eof was found\n }\n\n const earlyChange = lzwState.earlyChange;\n let nextCode = lzwState.nextCode;\n const dictionaryValues = lzwState.dictionaryValues;\n const dictionaryLengths = lzwState.dictionaryLengths;\n const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n let codeLength = lzwState.codeLength;\n let prevCode = lzwState.prevCode;\n const currentSequence = lzwState.currentSequence;\n let currentSequenceLength = lzwState.currentSequenceLength;\n\n let decodedLength = 0;\n let currentBufferLength = this.bufferLength;\n let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n for (i = 0; i < blockSize; i++) {\n const code = this.readBits(codeLength);\n const hasPrev = currentSequenceLength > 0;\n if (code < 256) {\n currentSequence[0] = code;\n currentSequenceLength = 1;\n } else if (code >= 258) {\n if (code < nextCode) {\n currentSequenceLength = dictionaryLengths[code];\n for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n currentSequence[j] = dictionaryValues[q];\n q = dictionaryPrevCodes[q];\n }\n } else {\n currentSequence[currentSequenceLength++] = currentSequence[0];\n }\n } else if (code === 256) {\n codeLength = 9;\n nextCode = 258;\n currentSequenceLength = 0;\n continue;\n } else {\n this.eof = true;\n delete this.lzwState;\n break;\n }\n\n if (hasPrev) {\n dictionaryPrevCodes[nextCode] = prevCode;\n dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n dictionaryValues[nextCode] = currentSequence[0];\n nextCode++;\n codeLength =\n (nextCode + earlyChange) & (nextCode + earlyChange - 1)\n ? codeLength\n : Math.min(\n Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1,\n 12\n ) | 0;\n }\n prevCode = code;\n\n decodedLength += currentSequenceLength;\n if (estimatedDecodedSize < decodedLength) {\n do {\n estimatedDecodedSize += decodedSizeDelta;\n } while (estimatedDecodedSize < decodedLength);\n buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n }\n for (j = 0; j < currentSequenceLength; j++) {\n buffer[currentBufferLength++] = currentSequence[j];\n }\n }\n lzwState.nextCode = nextCode;\n lzwState.codeLength = codeLength;\n lzwState.prevCode = prevCode;\n lzwState.currentSequenceLength = currentSequenceLength;\n\n this.bufferLength = currentBufferLength;\n }\n}\n\nexport { LZWStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { FormatError } from \"../shared/util.js\";\nimport { isDict } from \"./primitives.js\";\n\nclass PredictorStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n\n if (!isDict(params)) {\n return str; // no prediction\n }\n const predictor = (this.predictor = params.get(\"Predictor\") || 1);\n\n if (predictor <= 1) {\n return str; // no prediction\n }\n if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n\n if (predictor === 2) {\n this.readBlock = this.readBlockTiff;\n } else {\n this.readBlock = this.readBlockPng;\n }\n\n this.str = str;\n this.dict = str.dict;\n\n const colors = (this.colors = params.get(\"Colors\") || 1);\n const bits = (this.bits = params.get(\"BPC\", \"BitsPerComponent\") || 8);\n const columns = (this.columns = params.get(\"Columns\") || 1);\n\n this.pixBytes = (colors * bits + 7) >> 3;\n this.rowBytes = (columns * colors * bits + 7) >> 3;\n\n return this;\n }\n\n readBlockTiff() {\n const rowBytes = this.rowBytes;\n\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n const bits = this.bits;\n const colors = this.colors;\n\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n let inbuf = 0,\n outbuf = 0;\n let inbits = 0,\n outbits = 0;\n let pos = bufferLength;\n let i;\n\n if (bits === 1 && colors === 1) {\n // Optimized version of the loop in the \"else\"-branch\n // for 1 bit-per-component and 1 color TIFF images.\n for (i = 0; i < rowBytes; ++i) {\n let c = rawBytes[i] ^ inbuf;\n c ^= c >> 1;\n c ^= c >> 2;\n c ^= c >> 4;\n inbuf = (c & 1) << 7;\n buffer[pos++] = c;\n }\n } else if (bits === 8) {\n for (i = 0; i < colors; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[pos] = buffer[pos - colors] + rawBytes[i];\n pos++;\n }\n } else if (bits === 16) {\n const bytesPerPixel = colors * 2;\n for (i = 0; i < bytesPerPixel; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; i += 2) {\n const sum =\n ((rawBytes[i] & 0xff) << 8) +\n (rawBytes[i + 1] & 0xff) +\n ((buffer[pos - bytesPerPixel] & 0xff) << 8) +\n (buffer[pos - bytesPerPixel + 1] & 0xff);\n buffer[pos++] = (sum >> 8) & 0xff;\n buffer[pos++] = sum & 0xff;\n }\n } else {\n const compArray = new Uint8Array(colors + 1);\n const bitMask = (1 << bits) - 1;\n let j = 0,\n k = bufferLength;\n const columns = this.columns;\n for (i = 0; i < columns; ++i) {\n for (let kk = 0; kk < colors; ++kk) {\n if (inbits < bits) {\n inbuf = (inbuf << 8) | (rawBytes[j++] & 0xff);\n inbits += 8;\n }\n compArray[kk] =\n (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask;\n inbits -= bits;\n outbuf = (outbuf << bits) | compArray[kk];\n outbits += bits;\n if (outbits >= 8) {\n buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\n outbits -= 8;\n }\n }\n }\n if (outbits > 0) {\n buffer[k++] =\n (outbuf << (8 - outbits)) + (inbuf & ((1 << (8 - outbits)) - 1));\n }\n }\n this.bufferLength += rowBytes;\n }\n\n readBlockPng() {\n const rowBytes = this.rowBytes;\n const pixBytes = this.pixBytes;\n\n const predictor = this.str.getByte();\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n if (prevRow.length === 0) {\n prevRow = new Uint8Array(rowBytes);\n }\n\n let i,\n j = bufferLength,\n up,\n c;\n switch (predictor) {\n case 0:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n break;\n case 1:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff;\n j++;\n }\n break;\n case 2:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff;\n }\n break;\n case 3:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] =\n (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff;\n j++;\n }\n break;\n case 4:\n // we need to save the up left pixels values. the simplest way\n // is to create a new buffer\n for (i = 0; i < pixBytes; ++i) {\n up = prevRow[i];\n c = rawBytes[i];\n buffer[j++] = up + c;\n }\n for (; i < rowBytes; ++i) {\n up = prevRow[i];\n const upLeft = prevRow[i - pixBytes];\n const left = buffer[j - pixBytes];\n const p = left + up - upLeft;\n\n let pa = p - left;\n if (pa < 0) {\n pa = -pa;\n }\n let pb = p - up;\n if (pb < 0) {\n pb = -pb;\n }\n let pc = p - upLeft;\n if (pc < 0) {\n pc = -pc;\n }\n\n c = rawBytes[i];\n if (pa <= pb && pa <= pc) {\n buffer[j++] = left + c;\n } else if (pb <= pc) {\n buffer[j++] = up + c;\n } else {\n buffer[j++] = upLeft + c;\n }\n }\n break;\n default:\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n this.bufferLength += rowBytes;\n }\n}\n\nexport { PredictorStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass RunLengthStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n }\n\n readBlock() {\n // The repeatHeader has following format. The first byte defines type of run\n // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n // (in addition to the second byte from the header), n = 129 through 255 -\n // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n const repeatHeader = this.str.getBytes(2);\n if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n\n let buffer;\n let bufferLength = this.bufferLength;\n let n = repeatHeader[0];\n if (n < 128) {\n // copy n bytes\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer[bufferLength++] = repeatHeader[1];\n if (n > 0) {\n const source = this.str.getBytes(n);\n buffer.set(source, bufferLength);\n bufferLength += n;\n }\n } else {\n n = 257 - n;\n const b = repeatHeader[1];\n buffer = this.ensureBuffer(bufferLength + n + 1);\n for (let i = 0; i < n; i++) {\n buffer[bufferLength++] = b;\n }\n }\n this.bufferLength = bufferLength;\n }\n}\n\nexport { RunLengthStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n info,\n isNum,\n shadow,\n string32,\n warn,\n} from \"../shared/util.js\";\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport {\n FontFlags,\n getFontType,\n MacStandardGlyphOrdering,\n normalizeFontName,\n recoverGlyphName,\n SEAC_ANALYSIS_ENABLED,\n} from \"./fonts_utils.js\";\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from \"./glyphlist.js\";\nimport {\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n getGlyphMapForStandardFonts,\n getNonStdFontMap,\n getSerifFonts,\n getStdFontMap,\n getSupplementalGlyphMapForArialBlack,\n getSupplementalGlyphMapForCalibri,\n} from \"./standard_fonts.js\";\nimport {\n getUnicodeForGlyph,\n getUnicodeRangeFor,\n mapSpecialUnicodeValues,\n} from \"./unicode.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { CFFFont } from \"./cff_font.js\";\nimport { FontRendererFactory } from \"./font_renderer.js\";\nimport { GlyfTable } from \"./glyf.js\";\nimport { IdentityCMap } from \"./cmap.js\";\nimport { OpenTypeFileBuilder } from \"./opentype_file_builder.js\";\nimport { readUint32 } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Font } from \"./type1_font.js\";\n\n// Unicode Private Use Areas:\nconst PRIVATE_USE_AREAS = [\n [0xe000, 0xf8ff], // BMP (0)\n [0x100000, 0x10fffd], // PUP (16)\n];\n\n// PDF Glyph Space Units are one Thousandth of a TextSpace Unit\n// except for Type 3 fonts\nconst PDF_GLYPH_SPACE_UNITS = 1000;\n\nconst EXPORT_DATA_PROPERTIES = [\n \"ascent\",\n \"bbox\",\n \"black\",\n \"bold\",\n \"charProcOperatorList\",\n \"composite\",\n \"cssFontInfo\",\n \"data\",\n \"defaultVMetrics\",\n \"defaultWidth\",\n \"descent\",\n \"fallbackName\",\n \"fontMatrix\",\n \"fontType\",\n \"isType3Font\",\n \"italic\",\n \"loadedName\",\n \"mimetype\",\n \"missingFile\",\n \"name\",\n \"remeasure\",\n \"subtype\",\n \"type\",\n \"vertical\",\n];\n\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\n \"cMap\",\n \"defaultEncoding\",\n \"differences\",\n \"isMonospace\",\n \"isSerifFont\",\n \"isSymbolicFont\",\n \"seacMap\",\n \"toFontChar\",\n \"toUnicode\",\n \"vmetrics\",\n \"widths\",\n];\n\nfunction adjustWidths(properties) {\n if (!properties.fontMatrix) {\n return;\n }\n if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n return;\n }\n // adjusting width to fontMatrix scale\n const scale = 0.001 / properties.fontMatrix[0];\n const glyphsWidths = properties.widths;\n for (const glyph in glyphsWidths) {\n glyphsWidths[glyph] *= scale;\n }\n properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n if (properties.isInternalFont) {\n return;\n }\n if (builtInEncoding === properties.defaultEncoding) {\n return; // No point in trying to adjust `toUnicode` if the encodings match.\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [],\n glyphsUnicodeMap = getGlyphsUnicode();\n for (const charCode in builtInEncoding) {\n if (properties.hasIncludedToUnicodeMap) {\n if (properties.toUnicode.has(charCode)) {\n continue; // The font dictionary has a `ToUnicode` entry.\n }\n } else if (properties.hasEncoding) {\n if (\n properties.differences.length === 0 ||\n properties.differences[charCode] !== undefined\n ) {\n continue; // The font dictionary has an `Encoding`/`Differences` entry.\n }\n }\n const glyphName = builtInEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\n/**\n * NOTE: This function should only be called at the *end* of font-parsing,\n * after e.g. `adjustToUnicode` has run, to prevent any issues.\n */\nfunction amendFallbackToUnicode(properties) {\n if (!properties.fallbackToUnicode) {\n return;\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [];\n for (const charCode in properties.fallbackToUnicode) {\n if (properties.toUnicode.has(charCode)) {\n continue; // The font dictionary has a `ToUnicode` entry.\n }\n toUnicode[charCode] = properties.fallbackToUnicode[charCode];\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\nclass Glyph {\n constructor(\n originalCharCode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n ) {\n this.originalCharCode = originalCharCode;\n this.fontChar = fontChar;\n this.unicode = unicode;\n this.accent = accent;\n this.width = width;\n this.vmetric = vmetric;\n this.operatorListId = operatorListId;\n this.isSpace = isSpace;\n this.isInFont = isInFont;\n }\n\n matchesForCache(\n originalCharCode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n ) {\n return (\n this.originalCharCode === originalCharCode &&\n this.fontChar === fontChar &&\n this.unicode === unicode &&\n this.accent === accent &&\n this.width === width &&\n this.vmetric === vmetric &&\n this.operatorListId === operatorListId &&\n this.isSpace === isSpace &&\n this.isInFont === isInFont\n );\n }\n}\n\nfunction int16(b0, b1) {\n return (b0 << 8) + b1;\n}\n\nfunction writeSignedInt16(bytes, index, value) {\n bytes[index + 1] = value;\n bytes[index] = value >>> 8;\n}\n\nfunction signedInt16(b0, b1) {\n const value = (b0 << 8) + b1;\n return value & (1 << 15) ? value - 0x10000 : value;\n}\n\nfunction int32(b0, b1, b2, b3) {\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n}\n\nfunction string16(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 16,\n `string16: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction safeString16(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && !Number.isNaN(value),\n `safeString16: Unexpected input \"${value}\".`\n );\n }\n // clamp value to the 16-bit int range\n if (value > 0x7fff) {\n value = 0x7fff;\n } else if (value < -0x8000) {\n value = -0x8000;\n }\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction isTrueTypeFile(file) {\n const header = file.peekBytes(4);\n return (\n readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\"\n );\n}\n\nfunction isTrueTypeCollectionFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"ttcf\";\n}\n\nfunction isOpenTypeFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"OTTO\";\n}\n\nfunction isType1File(file) {\n const header = file.peekBytes(2);\n // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\n if (header[0] === 0x25 && header[1] === 0x21) {\n return true;\n }\n // ... obviously some fonts violate that part of the specification,\n // please refer to the comment in |Type1Font| below (pfb file header).\n if (header[0] === 0x80 && header[1] === 0x01) {\n return true;\n }\n return false;\n}\n\n/**\n * Compared to other font formats, the header in CFF files is not constant\n * but contains version numbers. To reduce the possibility of misclassifying\n * font files as CFF, it's recommended to check for other font formats first.\n */\nfunction isCFFFile(file) {\n const header = file.peekBytes(4);\n if (\n /* major version, [1, 255] */ header[0] >= 1 &&\n /* minor version, [0, 255]; header[1] */\n /* header size, [0, 255]; header[2] */\n /* offset(0) size, [1, 4] */ header[3] >= 1 &&\n header[3] <= 4\n ) {\n return true;\n }\n return false;\n}\n\nfunction getFontFileType(file, { type, subtype, composite }) {\n let fileType, fileSubtype;\n\n if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n if (composite) {\n fileType = \"CIDFontType2\";\n } else {\n fileType = \"TrueType\";\n }\n } else if (isOpenTypeFile(file)) {\n if (composite) {\n fileType = \"CIDFontType2\";\n } else {\n fileType = \"OpenType\";\n }\n } else if (isType1File(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n }\n } else if (isCFFFile(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n fileSubtype = \"CIDFontType0C\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n fileSubtype = \"Type1C\";\n }\n } else {\n warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n fileType = type;\n fileSubtype = subtype;\n }\n\n return [fileType, fileSubtype];\n}\n\nfunction applyStandardFontGlyphMap(map, glyphMap) {\n for (const charCode in glyphMap) {\n map[+charCode] = glyphMap[charCode];\n }\n}\n\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n const toFontChar = [];\n let unicode;\n for (let i = 0, ii = encoding.length; i < ii; i++) {\n unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[i] = unicode;\n }\n }\n for (const charCode in differences) {\n unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[+charCode] = unicode;\n }\n }\n return toFontChar;\n}\n\nfunction convertCidString(charCode, cid, shouldThrow = false) {\n switch (cid.length) {\n case 1:\n return cid.charCodeAt(0);\n case 2:\n return (cid.charCodeAt(0) << 8) | cid.charCodeAt(1);\n }\n const msg = `Unsupported CID string (charCode ${charCode}): \"${cid}\".`;\n if (shouldThrow) {\n throw new FormatError(msg);\n }\n warn(msg);\n return cid;\n}\n\n/**\n * Rebuilds the char code to glyph ID map by moving all char codes to the\n * private use area. This is done to avoid issues with various problematic\n * unicode areas where either a glyph won't be drawn or is deformed by a\n * shaper.\n * @returns {Object} Two properties:\n * 'toFontChar' - maps original char codes(the value that will be read\n * from commands such as show text) to the char codes that will be used in the\n * font that we build\n * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\n */\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n const newMap = Object.create(null);\n const toFontChar = [];\n let privateUseAreaIndex = 0;\n let nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n for (let originalCharCode in charCodeToGlyphId) {\n originalCharCode |= 0;\n let glyphId = charCodeToGlyphId[originalCharCode];\n // For missing glyphs don't create the mappings so the glyph isn't\n // drawn.\n if (!hasGlyph(glyphId)) {\n continue;\n }\n if (nextAvailableFontCharCode > privateUseOffetEnd) {\n privateUseAreaIndex++;\n if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n warn(\"Ran out of space in font private use area.\");\n break;\n }\n nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n }\n const fontCharCode = nextAvailableFontCharCode++;\n if (glyphId === 0) {\n glyphId = newGlyphZeroId;\n }\n\n newMap[fontCharCode] = glyphId;\n toFontChar[originalCharCode] = fontCharCode;\n }\n return {\n toFontChar,\n charCodeToGlyphId: newMap,\n nextAvailableFontCharCode,\n };\n}\n\nfunction getRanges(glyphs, numGlyphs) {\n // Array.sort() sorts by characters, not numerically, so convert to an\n // array of characters.\n const codes = [];\n for (const charCode in glyphs) {\n // Remove an invalid glyph ID mappings to make OTS happy.\n if (glyphs[charCode] >= numGlyphs) {\n continue;\n }\n codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });\n }\n // Some fonts have zero glyphs and are used only for text selection, but\n // there needs to be at least one to build a valid cmap table.\n if (codes.length === 0) {\n codes.push({ fontCharCode: 0, glyphId: 0 });\n }\n codes.sort(function fontGetRangesSort(a, b) {\n return a.fontCharCode - b.fontCharCode;\n });\n\n // Split the sorted codes into ranges.\n const ranges = [];\n const length = codes.length;\n for (let n = 0; n < length; ) {\n const start = codes[n].fontCharCode;\n const codeIndices = [codes[n].glyphId];\n ++n;\n let end = start;\n while (n < length && end + 1 === codes[n].fontCharCode) {\n codeIndices.push(codes[n].glyphId);\n ++end;\n ++n;\n if (end === 0xffff) {\n break;\n }\n }\n ranges.push([start, end, codeIndices]);\n }\n\n return ranges;\n}\n\nfunction createCmapTable(glyphs, numGlyphs) {\n const ranges = getRanges(glyphs, numGlyphs);\n const numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n let cmap =\n \"\\x00\\x00\" + // version\n string16(numTables) + // numTables\n \"\\x00\\x03\" + // platformID\n \"\\x00\\x01\" + // encodingID\n string32(4 + numTables * 8); // start of the table record\n\n let i, ii, j, jj;\n for (i = ranges.length - 1; i >= 0; --i) {\n if (ranges[i][0] <= 0xffff) {\n break;\n }\n }\n const bmpLength = i + 1;\n\n if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n ranges[i][1] = 0xfffe;\n }\n const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n const segCount = bmpLength + trailingRangesCount;\n const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n // Fill up the 4 parallel arrays describing the segments.\n let startCount = \"\";\n let endCount = \"\";\n let idDeltas = \"\";\n let idRangeOffsets = \"\";\n let glyphsIds = \"\";\n let bias = 0;\n\n let range, start, end, codes;\n for (i = 0, ii = bmpLength; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n end = range[1];\n startCount += string16(start);\n endCount += string16(end);\n codes = range[2];\n let contiguous = true;\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n contiguous = false;\n break;\n }\n }\n if (!contiguous) {\n const offset = (segCount - i) * 2 + bias * 2;\n bias += end - start + 1;\n\n idDeltas += string16(0);\n idRangeOffsets += string16(offset);\n\n for (j = 0, jj = codes.length; j < jj; ++j) {\n glyphsIds += string16(codes[j]);\n }\n } else {\n const startCode = codes[0];\n\n idDeltas += string16((startCode - start) & 0xffff);\n idRangeOffsets += string16(0);\n }\n }\n\n if (trailingRangesCount > 0) {\n endCount += \"\\xFF\\xFF\";\n startCount += \"\\xFF\\xFF\";\n idDeltas += \"\\x00\\x01\";\n idRangeOffsets += \"\\x00\\x00\";\n }\n\n const format314 =\n \"\\x00\\x00\" + // language\n string16(2 * segCount) +\n string16(searchParams.range) +\n string16(searchParams.entry) +\n string16(searchParams.rangeShift) +\n endCount +\n \"\\x00\\x00\" +\n startCount +\n idDeltas +\n idRangeOffsets +\n glyphsIds;\n\n let format31012 = \"\";\n let header31012 = \"\";\n if (numTables > 1) {\n cmap +=\n \"\\x00\\x03\" + // platformID\n \"\\x00\\x0A\" + // encodingID\n string32(4 + numTables * 8 + 4 + format314.length); // start of the table record\n format31012 = \"\";\n for (i = 0, ii = ranges.length; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n codes = range[2];\n let code = codes[0];\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n end = range[0] + j - 1;\n format31012 +=\n string32(start) + // startCharCode\n string32(end) + // endCharCode\n string32(code); // startGlyphID\n start = end + 1;\n code = codes[j];\n }\n }\n format31012 +=\n string32(start) + // startCharCode\n string32(range[1]) + // endCharCode\n string32(code); // startGlyphID\n }\n header31012 =\n \"\\x00\\x0C\" + // format\n \"\\x00\\x00\" + // reserved\n string32(format31012.length + 16) + // length\n \"\\x00\\x00\\x00\\x00\" + // language\n string32(format31012.length / 12); // nGroups\n }\n\n return (\n cmap +\n \"\\x00\\x04\" + // format\n string16(format314.length + 4) + // length\n format314 +\n header31012 +\n format31012\n );\n}\n\nfunction validateOS2Table(os2, file) {\n file.pos = (file.start || 0) + os2.offset;\n const version = file.getUint16();\n // TODO verify all OS/2 tables fields, but currently we validate only those\n // that give us issues\n file.skip(60); // skipping type, misc sizes, panose, unicode ranges\n const selection = file.getUint16();\n if (version < 4 && selection & 0x0300) {\n return false;\n }\n const firstChar = file.getUint16();\n const lastChar = file.getUint16();\n if (firstChar > lastChar) {\n return false;\n }\n file.skip(6); // skipping sTypoAscender/Descender/LineGap\n const usWinAscent = file.getUint16();\n if (usWinAscent === 0) {\n // makes font unreadable by windows\n return false;\n }\n\n // OS/2 appears to be valid, resetting some fields\n os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0\n return true;\n}\n\nfunction createOS2Table(properties, charstrings, override) {\n override = override || {\n unitsPerEm: 0,\n yMax: 0,\n yMin: 0,\n ascent: 0,\n descent: 0,\n };\n\n let ulUnicodeRange1 = 0;\n let ulUnicodeRange2 = 0;\n let ulUnicodeRange3 = 0;\n let ulUnicodeRange4 = 0;\n\n let firstCharIndex = null;\n let lastCharIndex = 0;\n\n if (charstrings) {\n for (let code in charstrings) {\n code |= 0;\n if (firstCharIndex > code || !firstCharIndex) {\n firstCharIndex = code;\n }\n if (lastCharIndex < code) {\n lastCharIndex = code;\n }\n\n const position = getUnicodeRangeFor(code);\n if (position < 32) {\n ulUnicodeRange1 |= 1 << position;\n } else if (position < 64) {\n ulUnicodeRange2 |= 1 << (position - 32);\n } else if (position < 96) {\n ulUnicodeRange3 |= 1 << (position - 64);\n } else if (position < 123) {\n ulUnicodeRange4 |= 1 << (position - 96);\n } else {\n throw new FormatError(\n \"Unicode ranges Bits > 123 are reserved for internal usage\"\n );\n }\n }\n if (lastCharIndex > 0xffff) {\n // OS2 only supports a 16 bit int. The spec says if supplementary\n // characters are used the field should just be set to 0xFFFF.\n lastCharIndex = 0xffff;\n }\n } else {\n // TODO\n firstCharIndex = 0;\n lastCharIndex = 255;\n }\n\n const bbox = properties.bbox || [0, 0, 0, 0];\n const unitsPerEm =\n override.unitsPerEm ||\n 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n // if the font units differ to the PDF glyph space units\n // then scale up the values\n const scale = properties.ascentScaled\n ? 1.0\n : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n\n const typoAscent =\n override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n let typoDescent =\n override.descent || Math.round(scale * (properties.descent || bbox[1]));\n if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n typoDescent = -typoDescent; // fixing incorrect descent\n }\n const winAscent = override.yMax || typoAscent;\n const winDescent = -override.yMin || -typoDescent;\n\n return (\n \"\\x00\\x03\" + // version\n \"\\x02\\x24\" + // xAvgCharWidth\n \"\\x01\\xF4\" + // usWeightClass\n \"\\x00\\x05\" + // usWidthClass\n \"\\x00\\x00\" + // fstype (0 to let the font loads via font-face on IE)\n \"\\x02\\x8A\" + // ySubscriptXSize\n \"\\x02\\xBB\" + // ySubscriptYSize\n \"\\x00\\x00\" + // ySubscriptXOffset\n \"\\x00\\x8C\" + // ySubscriptYOffset\n \"\\x02\\x8A\" + // ySuperScriptXSize\n \"\\x02\\xBB\" + // ySuperScriptYSize\n \"\\x00\\x00\" + // ySuperScriptXOffset\n \"\\x01\\xDF\" + // ySuperScriptYOffset\n \"\\x00\\x31\" + // yStrikeOutSize\n \"\\x01\\x02\" + // yStrikeOutPosition\n \"\\x00\\x00\" + // sFamilyClass\n \"\\x00\\x00\\x06\" +\n String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\n \"\\x00\\x00\\x00\\x00\\x00\\x00\" + // Panose\n string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)\n string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)\n string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)\n string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)\n \"\\x2A\\x32\\x31\\x2A\" + // achVendID\n string16(properties.italicAngle ? 1 : 0) + // fsSelection\n string16(firstCharIndex || properties.firstChar) + // usFirstCharIndex\n string16(lastCharIndex || properties.lastChar) + // usLastCharIndex\n string16(typoAscent) + // sTypoAscender\n string16(typoDescent) + // sTypoDescender\n \"\\x00\\x64\" + // sTypoLineGap (7%-10% of the unitsPerEM value)\n string16(winAscent) + // usWinAscent\n string16(winDescent) + // usWinDescent\n \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange1 (Bits 0-31)\n \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange2 (Bits 32-63)\n string16(properties.xHeight) + // sxHeight\n string16(properties.capHeight) + // sCapHeight\n string16(0) + // usDefaultChar\n string16(firstCharIndex || properties.firstChar) + // usBreakChar\n \"\\x00\\x03\"\n ); // usMaxContext\n}\n\nfunction createPostTable(properties) {\n const angle = Math.floor(properties.italicAngle * 2 ** 16);\n return (\n \"\\x00\\x03\\x00\\x00\" + // Version number\n string32(angle) + // italicAngle\n \"\\x00\\x00\" + // underlinePosition\n \"\\x00\\x00\" + // underlineThickness\n string32(properties.fixedPitch ? 1 : 0) + // isFixedPitch\n \"\\x00\\x00\\x00\\x00\" + // minMemType42\n \"\\x00\\x00\\x00\\x00\" + // maxMemType42\n \"\\x00\\x00\\x00\\x00\" + // minMemType1\n \"\\x00\\x00\\x00\\x00\"\n ); // maxMemType1\n}\n\nfunction createPostscriptName(name) {\n // See https://docs.microsoft.com/en-us/typography/opentype/spec/recom#name.\n return name.replace(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g, \"\").slice(0, 63);\n}\n\nfunction createNameTable(name, proto) {\n if (!proto) {\n proto = [[], []]; // no strings and unicode strings\n }\n\n const strings = [\n proto[0][0] || \"Original licence\", // 0.Copyright\n proto[0][1] || name, // 1.Font family\n proto[0][2] || \"Unknown\", // 2.Font subfamily (font weight)\n proto[0][3] || \"uniqueID\", // 3.Unique ID\n proto[0][4] || name, // 4.Full font name\n proto[0][5] || \"Version 0.11\", // 5.Version\n proto[0][6] || createPostscriptName(name), // 6.Postscript name\n proto[0][7] || \"Unknown\", // 7.Trademark\n proto[0][8] || \"Unknown\", // 8.Manufacturer\n proto[0][9] || \"Unknown\", // 9.Designer\n ];\n\n // Mac want 1-byte per character strings while Windows want\n // 2-bytes per character, so duplicate the names table\n const stringsUnicode = [];\n let i, ii, j, jj, str;\n for (i = 0, ii = strings.length; i < ii; i++) {\n str = proto[1][i] || strings[i];\n\n const strBufUnicode = [];\n for (j = 0, jj = str.length; j < jj; j++) {\n strBufUnicode.push(string16(str.charCodeAt(j)));\n }\n stringsUnicode.push(strBufUnicode.join(\"\"));\n }\n\n const names = [strings, stringsUnicode];\n const platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n const encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n const languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n\n const namesRecordCount = strings.length * platforms.length;\n let nameTable =\n \"\\x00\\x00\" + // format\n string16(namesRecordCount) + // Number of names Record\n string16(namesRecordCount * 12 + 6); // Storage\n\n // Build the name records field\n let strOffset = 0;\n for (i = 0, ii = platforms.length; i < ii; i++) {\n const strs = names[i];\n for (j = 0, jj = strs.length; j < jj; j++) {\n str = strs[j];\n const nameRecord =\n platforms[i] + // platform ID\n encodings[i] + // encoding ID\n languages[i] + // language ID\n string16(j) + // name ID\n string16(str.length) +\n string16(strOffset);\n nameTable += nameRecord;\n strOffset += str.length;\n }\n }\n\n nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n return nameTable;\n}\n\n/**\n * 'Font' is the class the outside world should use, it encapsulate all the font\n * decoding logics whatever type it is (assuming the font type is supported).\n */\nclass Font {\n constructor(name, file, properties) {\n this.name = name;\n this.psName = null;\n this.mimetype = null;\n this.disableFontFace = false;\n\n this.loadedName = properties.loadedName;\n this.isType3Font = properties.isType3Font;\n this.missingFile = false;\n this.cssFontInfo = properties.cssFontInfo;\n\n this._charsCache = Object.create(null);\n this._glyphCache = Object.create(null);\n\n let isSerifFont = !!(properties.flags & FontFlags.Serif);\n // Fallback to checking the font name, in order to improve text-selection,\n // since the /Flags-entry is often wrong (fixes issue13845.pdf).\n if (!isSerifFont && !properties.isSimulatedFlags) {\n const baseName = name.replace(/[,_]/g, \"-\").split(\"-\")[0],\n serifFonts = getSerifFonts();\n for (const namePart of baseName.split(\"+\")) {\n if (serifFonts[namePart]) {\n isSerifFont = true;\n break;\n }\n }\n }\n this.isSerifFont = isSerifFont;\n\n this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n let type = properties.type;\n let subtype = properties.subtype;\n this.type = type;\n this.subtype = subtype;\n\n let fallbackName = \"sans-serif\";\n if (this.isMonospace) {\n fallbackName = \"monospace\";\n } else if (this.isSerifFont) {\n fallbackName = \"serif\";\n }\n this.fallbackName = fallbackName;\n\n this.differences = properties.differences;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.composite = properties.composite;\n this.cMap = properties.cMap;\n this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;\n this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n this.lineHeight = this.ascent - this.descent;\n this.fontMatrix = properties.fontMatrix;\n this.bbox = properties.bbox;\n this.defaultEncoding = properties.defaultEncoding;\n\n this.toUnicode = properties.toUnicode;\n this.toFontChar = [];\n\n if (properties.type === \"Type3\") {\n for (let charCode = 0; charCode < 256; charCode++) {\n this.toFontChar[charCode] =\n this.differences[charCode] || properties.defaultEncoding[charCode];\n }\n this.fontType = FontType.TYPE3;\n return;\n }\n\n this.cidEncoding = properties.cidEncoding || \"\";\n this.vertical = !!properties.vertical;\n if (this.vertical) {\n this.vmetrics = properties.vmetrics;\n this.defaultVMetrics = properties.defaultVMetrics;\n }\n\n if (!file || file.isEmpty) {\n if (file) {\n // Some bad PDF generators will include empty font files,\n // attempting to recover by assuming that no file exists.\n warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n }\n this.fallbackToSystemFont(properties);\n return;\n }\n\n // Parse the font file to determine the correct type/subtype, rather than\n // relying on the (often incorrect) data in the font dictionary; (see e.g.\n // issue6782.pdf, issue7598.pdf, and issue9949.pdf).\n [type, subtype] = getFontFileType(file, properties);\n\n if (type !== this.type || subtype !== this.subtype) {\n info(\n \"Inconsistent font file Type/SubType, expected: \" +\n `${this.type}/${this.subtype} but found: ${type}/${subtype}.`\n );\n }\n\n let data;\n try {\n switch (type) {\n case \"MMType1\":\n info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n /* falls through */\n case \"Type1\":\n case \"CIDFontType0\":\n this.mimetype = \"font/opentype\";\n\n const cff =\n subtype === \"Type1C\" || subtype === \"CIDFontType0C\"\n ? new CFFFont(file, properties)\n : new Type1Font(name, file, properties);\n\n adjustWidths(properties);\n\n // Wrap the CFF data inside an OTF font file\n data = this.convert(name, cff, properties);\n break;\n\n case \"OpenType\":\n case \"TrueType\":\n case \"CIDFontType2\":\n this.mimetype = \"font/opentype\";\n\n // Repair the TrueType file. It is can be damaged in the point of\n // view of the sanitizer\n data = this.checkAndRepair(name, file, properties);\n if (this.isOpenType) {\n adjustWidths(properties);\n\n type = \"OpenType\";\n }\n break;\n\n default:\n throw new FormatError(`Font ${type} is not supported`);\n }\n } catch (e) {\n warn(e);\n this.fallbackToSystemFont(properties);\n return;\n }\n\n amendFallbackToUnicode(properties);\n this.data = data;\n this.fontType = getFontType(type, subtype, properties.isStandardFont);\n\n // Transfer some properties again that could change during font conversion\n this.fontMatrix = properties.fontMatrix;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.toUnicode = properties.toUnicode;\n this.seacMap = properties.seacMap;\n }\n\n get renderer() {\n const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n return shadow(this, \"renderer\", renderer);\n }\n\n exportData(extraProperties = false) {\n const exportDataProperties = extraProperties\n ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES]\n : EXPORT_DATA_PROPERTIES;\n\n const data = Object.create(null);\n let property, value;\n for (property of exportDataProperties) {\n value = this[property];\n // Ignore properties that haven't been explicitly set.\n if (value !== undefined) {\n data[property] = value;\n }\n }\n return data;\n }\n\n fallbackToSystemFont(properties) {\n this.missingFile = true;\n // The file data is not specified. Trying to fix the font name\n // to be used with the canvas.font.\n const name = this.name;\n const type = this.type;\n const subtype = this.subtype;\n let fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap(),\n nonStdFontMap = getNonStdFontMap();\n const isStandardFont = !!stdFontMap[fontName];\n const isMappedToStandardFont = !!(\n nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]\n );\n\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n this.bold = fontName.search(/bold/gi) !== -1;\n this.italic =\n fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;\n\n // Use 'name' instead of 'fontName' here because the original\n // name ArialBlack for example will be replaced by Helvetica.\n this.black = name.search(/Black/g) !== -1;\n\n // Use 'name' instead of 'fontName' here because the original\n // name ArialNarrow for example will be replaced by Helvetica.\n const isNarrow = name.search(/Narrow/g) !== -1;\n\n // if at least one width is present, remeasure all chars when exists\n this.remeasure =\n (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\n if (\n (isStandardFont || isMappedToStandardFont) &&\n type === \"CIDFontType2\" &&\n this.cidEncoding.startsWith(\"Identity-\")\n ) {\n const cidToGidMap = properties.cidToGidMap;\n // Standard fonts might be embedded as CID font without glyph mapping.\n // Building one based on GlyphMapForStandardFonts.\n const map = [];\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n\n if (/Arial-?Black/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\n } else if (/Calibri/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\n }\n\n // Always update the glyph mapping with the `cidToGidMap` when it exists\n // (fixes issue12418_reduced.pdf).\n if (cidToGidMap) {\n for (const charCode in map) {\n const cid = map[charCode];\n if (cidToGidMap[cid] !== undefined) {\n map[+charCode] = cidToGidMap[cid];\n }\n }\n // When the /CIDToGIDMap is \"incomplete\", fallback to the included\n // /ToUnicode-map regardless of its encoding (fixes issue11915.pdf).\n if (\n cidToGidMap.length !== this.toUnicode.length &&\n properties.hasIncludedToUnicodeMap &&\n this.toUnicode instanceof IdentityToUnicodeMap\n ) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n const cid = map[charCode];\n if (cidToGidMap[cid] === undefined) {\n map[+charCode] = unicodeCharCode;\n }\n });\n }\n }\n\n if (!(this.toUnicode instanceof IdentityToUnicodeMap)) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n this.toUnicode = new ToUnicodeMap(map);\n } else if (/Symbol/i.test(fontName)) {\n this.toFontChar = buildToFontChar(\n SymbolSetEncoding,\n getGlyphsUnicode(),\n this.differences\n );\n } else if (/Dingbats/i.test(fontName)) {\n if (/Wingdings/i.test(name)) {\n warn(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n }\n this.toFontChar = buildToFontChar(\n ZapfDingbatsEncoding,\n getDingbatsGlyphsUnicode(),\n this.differences\n );\n } else if (isStandardFont) {\n const map = buildToFontChar(\n this.defaultEncoding,\n getGlyphsUnicode(),\n this.differences\n );\n\n if (\n type === \"CIDFontType2\" &&\n !this.cidEncoding.startsWith(\"Identity-\") &&\n !(this.toUnicode instanceof IdentityToUnicodeMap)\n ) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n } else {\n const glyphsUnicodeMap = getGlyphsUnicode();\n const map = [];\n this.toUnicode.forEach((charCode, unicodeCharCode) => {\n if (!this.composite) {\n const glyphName =\n this.differences[charCode] || this.defaultEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n unicodeCharCode = unicode;\n }\n }\n map[+charCode] = unicodeCharCode;\n });\n\n // Attempt to improve the glyph mapping for (some) composite fonts that\n // appear to lack meaningful ToUnicode data.\n if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n if (/Verdana/i.test(name)) {\n // Fixes issue11242_reduced.pdf\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n }\n }\n this.toFontChar = map;\n }\n\n amendFallbackToUnicode(properties);\n this.loadedName = fontName.split(\"-\")[0];\n this.fontType = getFontType(type, subtype, properties.isStandardFont);\n }\n\n checkAndRepair(name, font, properties) {\n const VALID_TABLES = [\n \"OS/2\",\n \"cmap\",\n \"head\",\n \"hhea\",\n \"hmtx\",\n \"maxp\",\n \"name\",\n \"post\",\n \"loca\",\n \"glyf\",\n \"fpgm\",\n \"prep\",\n \"cvt \",\n \"CFF \",\n ];\n\n function readTables(file, numTables) {\n const tables = Object.create(null);\n tables[\"OS/2\"] = null;\n tables.cmap = null;\n tables.head = null;\n tables.hhea = null;\n tables.hmtx = null;\n tables.maxp = null;\n tables.name = null;\n tables.post = null;\n\n for (let i = 0; i < numTables; i++) {\n const table = readTableEntry(file);\n if (!VALID_TABLES.includes(table.tag)) {\n continue; // skipping table if it's not a required or optional table\n }\n if (table.length === 0) {\n continue; // skipping empty tables\n }\n tables[table.tag] = table;\n }\n return tables;\n }\n\n function readTableEntry(file) {\n const tag = file.getString(4);\n\n const checksum = file.getInt32() >>> 0;\n const offset = file.getInt32() >>> 0;\n const length = file.getInt32() >>> 0;\n\n // Read the table associated data\n const previousPosition = file.pos;\n file.pos = file.start ? file.start : 0;\n file.skip(offset);\n const data = file.getBytes(length);\n file.pos = previousPosition;\n\n if (tag === \"head\") {\n // clearing checksum adjustment\n data[8] = data[9] = data[10] = data[11] = 0;\n data[17] |= 0x20; // Set font optimized for cleartype flag.\n }\n\n return {\n tag,\n checksum,\n length,\n offset,\n data,\n };\n }\n\n function readOpenTypeHeader(ttf) {\n return {\n version: ttf.getString(4),\n numTables: ttf.getUint16(),\n searchRange: ttf.getUint16(),\n entrySelector: ttf.getUint16(),\n rangeShift: ttf.getUint16(),\n };\n }\n\n function readTrueTypeCollectionHeader(ttc) {\n const ttcTag = ttc.getString(4);\n assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n\n const majorVersion = ttc.getUint16();\n const minorVersion = ttc.getUint16();\n const numFonts = ttc.getInt32() >>> 0;\n const offsetTable = [];\n for (let i = 0; i < numFonts; i++) {\n offsetTable.push(ttc.getInt32() >>> 0);\n }\n\n const header = {\n ttcTag,\n majorVersion,\n minorVersion,\n numFonts,\n offsetTable,\n };\n switch (majorVersion) {\n case 1:\n return header;\n case 2:\n header.dsigTag = ttc.getInt32() >>> 0;\n header.dsigLength = ttc.getInt32() >>> 0;\n header.dsigOffset = ttc.getInt32() >>> 0;\n return header;\n }\n throw new FormatError(\n `Invalid TrueType Collection majorVersion: ${majorVersion}.`\n );\n }\n\n function readTrueTypeCollectionData(ttc, fontName) {\n const { numFonts, offsetTable } = readTrueTypeCollectionHeader(ttc);\n const fontNameParts = fontName.split(\"+\");\n let fallbackData;\n\n for (let i = 0; i < numFonts; i++) {\n ttc.pos = (ttc.start || 0) + offsetTable[i];\n const potentialHeader = readOpenTypeHeader(ttc);\n const potentialTables = readTables(ttc, potentialHeader.numTables);\n\n if (!potentialTables.name) {\n throw new FormatError(\n 'TrueType Collection font must contain a \"name\" table.'\n );\n }\n const nameTable = readNameTable(potentialTables.name);\n\n for (let j = 0, jj = nameTable.length; j < jj; j++) {\n for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n const nameEntry =\n nameTable[j][k] && nameTable[j][k].replace(/\\s/g, \"\");\n if (!nameEntry) {\n continue;\n }\n if (nameEntry === fontName) {\n return {\n header: potentialHeader,\n tables: potentialTables,\n };\n }\n if (fontNameParts.length < 2) {\n continue;\n }\n for (const part of fontNameParts) {\n if (nameEntry === part) {\n fallbackData = {\n name: part,\n header: potentialHeader,\n tables: potentialTables,\n };\n }\n }\n }\n }\n }\n if (fallbackData) {\n warn(\n `TrueType Collection does not contain \"${fontName}\" font, ` +\n `falling back to \"${fallbackData.name}\" font instead.`\n );\n return {\n header: fallbackData.header,\n tables: fallbackData.tables,\n };\n }\n throw new FormatError(\n `TrueType Collection does not contain \"${fontName}\" font.`\n );\n }\n\n /**\n * Read the appropriate subtable from the cmap according to 9.6.6.4 from\n * PDF spec\n */\n function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n if (!cmap) {\n warn(\"No cmap table available.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n let segment;\n let start = (file.start ? file.start : 0) + cmap.offset;\n file.pos = start;\n\n file.skip(2); // version\n const numTables = file.getUint16();\n\n let potentialTable;\n let canBreak = false;\n // There's an order of preference in terms of which cmap subtable to\n // use:\n // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\n // - symbolic fonts the preference is a 3,0 table then a 1,0 table\n // The following takes advantage of the fact that the tables are sorted\n // to work.\n for (let i = 0; i < numTables; i++) {\n const platformId = file.getUint16();\n const encodingId = file.getUint16();\n const offset = file.getInt32() >>> 0;\n let useTable = false;\n\n // Sometimes there are multiple of the same type of table. Default\n // to choosing the first table and skip the rest.\n if (\n potentialTable &&\n potentialTable.platformId === platformId &&\n potentialTable.encodingId === encodingId\n ) {\n continue;\n }\n\n if (\n platformId === 0 &&\n (encodingId === /* Unicode Default */ 0 ||\n encodingId === /* Unicode 1.1 */ 1 ||\n encodingId === /* Unicode BMP */ 3)\n ) {\n useTable = true;\n // Continue the loop since there still may be a higher priority\n // table.\n } else if (platformId === 1 && encodingId === 0) {\n useTable = true;\n // Continue the loop since there still may be a higher priority\n // table.\n } else if (\n platformId === 3 &&\n encodingId === 1 &&\n (hasEncoding || !potentialTable)\n ) {\n useTable = true;\n if (!isSymbolicFont) {\n canBreak = true;\n }\n } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n useTable = true;\n\n let correctlySorted = true;\n if (i < numTables - 1) {\n const nextBytes = file.peekBytes(2),\n nextPlatformId = int16(nextBytes[0], nextBytes[1]);\n if (nextPlatformId < platformId) {\n correctlySorted = false;\n }\n }\n if (correctlySorted) {\n canBreak = true;\n }\n }\n\n if (useTable) {\n potentialTable = {\n platformId,\n encodingId,\n offset,\n };\n }\n if (canBreak) {\n break;\n }\n }\n\n if (potentialTable) {\n file.pos = start + potentialTable.offset;\n }\n if (!potentialTable || file.peekByte() === -1) {\n warn(\"Could not find a preferred cmap table.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n\n const format = file.getUint16();\n file.skip(2 + 2); // length + language\n\n let hasShortCmap = false;\n const mappings = [];\n let j, glyphId;\n\n // TODO(mack): refactor this cmap subtable reading logic out\n if (format === 0) {\n for (j = 0; j < 256; j++) {\n const index = file.getByte();\n if (!index) {\n continue;\n }\n mappings.push({\n charCode: j,\n glyphId: index,\n });\n }\n hasShortCmap = true;\n } else if (format === 2) {\n const subHeaderKeys = [];\n let maxSubHeaderKey = 0;\n // Read subHeaderKeys. If subHeaderKeys[i] === 0, then i is a\n // single-byte character. Otherwise, i is the first byte of a\n // multi-byte character, and the value is 8*index into\n // subHeaders.\n for (let i = 0; i < 256; i++) {\n const subHeaderKey = file.getUint16() >> 3;\n subHeaderKeys.push(subHeaderKey);\n maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\n }\n // Read subHeaders. The number of entries is determined\n // dynamically based on the subHeaderKeys found above.\n const subHeaders = [];\n for (let i = 0; i <= maxSubHeaderKey; i++) {\n subHeaders.push({\n firstCode: file.getUint16(),\n entryCount: file.getUint16(),\n idDelta: signedInt16(file.getByte(), file.getByte()),\n idRangePos: file.pos + file.getUint16(),\n });\n }\n for (let i = 0; i < 256; i++) {\n if (subHeaderKeys[i] === 0) {\n // i is a single-byte code.\n file.pos = subHeaders[0].idRangePos + 2 * i;\n glyphId = file.getUint16();\n mappings.push({\n charCode: i,\n glyphId,\n });\n } else {\n // i is the first byte of a two-byte code.\n const s = subHeaders[subHeaderKeys[i]];\n for (j = 0; j < s.entryCount; j++) {\n const charCode = (i << 8) + j + s.firstCode;\n file.pos = s.idRangePos + 2 * j;\n glyphId = file.getUint16();\n if (glyphId !== 0) {\n glyphId = (glyphId + s.idDelta) % 65536;\n }\n mappings.push({\n charCode,\n glyphId,\n });\n }\n }\n }\n } else if (format === 4) {\n // re-creating the table in format 4 since the encoding\n // might be changed\n const segCount = file.getUint16() >> 1;\n file.skip(6); // skipping range fields\n const segments = [];\n let segIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments.push({ end: file.getUint16() });\n }\n file.skip(2);\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].start = file.getUint16();\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].delta = file.getUint16();\n }\n\n let offsetsCount = 0,\n offsetIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n const rangeOffset = file.getUint16();\n if (!rangeOffset) {\n segment.offsetIndex = -1;\n continue;\n }\n\n offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n segment.offsetIndex = offsetIndex;\n offsetsCount = Math.max(\n offsetsCount,\n offsetIndex + segment.end - segment.start + 1\n );\n }\n\n const offsets = [];\n for (j = 0; j < offsetsCount; j++) {\n offsets.push(file.getUint16());\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n start = segment.start;\n const end = segment.end;\n const delta = segment.delta;\n offsetIndex = segment.offsetIndex;\n\n for (j = start; j <= end; j++) {\n if (j === 0xffff) {\n continue;\n }\n\n glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n glyphId = (glyphId + delta) & 0xffff;\n mappings.push({\n charCode: j,\n glyphId,\n });\n }\n }\n } else if (format === 6) {\n // Format 6 is a 2-bytes dense mapping, which means the font data\n // lives glue together even if they are pretty far in the unicode\n // table. (This looks weird, so I can have missed something), this\n // works on Linux but seems to fails on Mac so let's rewrite the\n // cmap table to a 3-1-4 style\n const firstCode = file.getUint16();\n const entryCount = file.getUint16();\n\n for (j = 0; j < entryCount; j++) {\n glyphId = file.getUint16();\n const charCode = firstCode + j;\n\n mappings.push({\n charCode,\n glyphId,\n });\n }\n } else {\n warn(\"cmap table has unsupported format: \" + format);\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n\n // removing duplicate entries\n mappings.sort(function (a, b) {\n return a.charCode - b.charCode;\n });\n for (let i = 1; i < mappings.length; i++) {\n if (mappings[i - 1].charCode === mappings[i].charCode) {\n mappings.splice(i, 1);\n i--;\n }\n }\n\n return {\n platformId: potentialTable.platformId,\n encodingId: potentialTable.encodingId,\n mappings,\n hasShortCmap,\n };\n }\n\n function sanitizeMetrics(\n file,\n header,\n metrics,\n headTable,\n numGlyphs,\n dupFirstEntry\n ) {\n if (!header) {\n if (metrics) {\n metrics.data = null;\n }\n return;\n }\n\n file.pos = (file.start ? file.start : 0) + header.offset;\n file.pos += 4; // version\n file.pos += 2; // ascent\n file.pos += 2; // descent\n file.pos += 2; // linegap\n file.pos += 2; // adv_width_max\n file.pos += 2; // min_sb1\n file.pos += 2; // min_sb2\n file.pos += 2; // max_extent\n file.pos += 2; // caret_slope_rise\n file.pos += 2; // caret_slope_run\n const caretOffset = file.getUint16();\n file.pos += 8; // reserved\n file.pos += 2; // format\n let numOfMetrics = file.getUint16();\n\n if (caretOffset !== 0) {\n const macStyle = int16(headTable.data[44], headTable.data[45]);\n if (!(macStyle & 2)) {\n // Suppress OTS warnings about the `caretOffset` in the hhea-table.\n header.data[22] = 0;\n header.data[23] = 0;\n }\n }\n\n if (numOfMetrics > numGlyphs) {\n info(\n `The numOfMetrics (${numOfMetrics}) should not be ` +\n `greater than the numGlyphs (${numGlyphs}).`\n );\n // Reduce numOfMetrics if it is greater than numGlyphs\n numOfMetrics = numGlyphs;\n header.data[34] = (numOfMetrics & 0xff00) >> 8;\n header.data[35] = numOfMetrics & 0x00ff;\n }\n\n const numOfSidebearings = numGlyphs - numOfMetrics;\n const numMissing =\n numOfSidebearings - ((metrics.length - numOfMetrics * 4) >> 1);\n\n if (numMissing > 0) {\n // For each missing glyph, we set both the width and lsb to 0 (zero).\n // Since we need to add two properties for each glyph, this explains\n // the use of |numMissing * 2| when initializing the typed array.\n const entries = new Uint8Array(metrics.length + numMissing * 2);\n entries.set(metrics.data);\n if (dupFirstEntry) {\n // Set the sidebearing value of the duplicated glyph.\n entries[metrics.length] = metrics.data[2];\n entries[metrics.length + 1] = metrics.data[3];\n }\n metrics.data = entries;\n }\n }\n\n function sanitizeGlyph(\n source,\n sourceStart,\n sourceEnd,\n dest,\n destStart,\n hintsValid\n ) {\n const glyphProfile = {\n length: 0,\n sizeOfInstructions: 0,\n };\n if (sourceEnd - sourceStart <= 12) {\n // glyph with data less than 12 is invalid one\n return glyphProfile;\n }\n const glyf = source.subarray(sourceStart, sourceEnd);\n let contoursCount = signedInt16(glyf[0], glyf[1]);\n if (contoursCount < 0) {\n // OTS doesn't like contour count to be less than -1.\n contoursCount = -1;\n writeSignedInt16(glyf, 0, contoursCount);\n // complex glyph, writing as is\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n let i,\n j = 10,\n flagsCount = 0;\n for (i = 0; i < contoursCount; i++) {\n const endPoint = (glyf[j] << 8) | glyf[j + 1];\n flagsCount = endPoint + 1;\n j += 2;\n }\n // skipping instructions\n const instructionsStart = j;\n const instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n glyphProfile.sizeOfInstructions = instructionsLength;\n j += 2 + instructionsLength;\n const instructionsEnd = j;\n // validating flags\n let coordinatesLength = 0;\n for (i = 0; i < flagsCount; i++) {\n const flag = glyf[j++];\n if (flag & 0xc0) {\n // reserved flags must be zero, cleaning up\n glyf[j - 1] = flag & 0x3f;\n }\n let xLength = 2;\n if (flag & 2) {\n xLength = 1;\n } else if (flag & 16) {\n xLength = 0;\n }\n let yLength = 2;\n if (flag & 4) {\n yLength = 1;\n } else if (flag & 32) {\n yLength = 0;\n }\n const xyLength = xLength + yLength;\n coordinatesLength += xyLength;\n if (flag & 8) {\n const repeat = glyf[j++];\n i += repeat;\n coordinatesLength += repeat * xyLength;\n }\n }\n // glyph without coordinates will be rejected\n if (coordinatesLength === 0) {\n return glyphProfile;\n }\n let glyphDataLength = j + coordinatesLength;\n if (glyphDataLength > glyf.length) {\n // not enough data for coordinates\n return glyphProfile;\n }\n if (!hintsValid && instructionsLength > 0) {\n dest.set(glyf.subarray(0, instructionsStart), destStart);\n dest.set([0, 0], destStart + instructionsStart);\n dest.set(\n glyf.subarray(instructionsEnd, glyphDataLength),\n destStart + instructionsStart + 2\n );\n glyphDataLength -= instructionsLength;\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = (glyphDataLength + 3) & ~3;\n }\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n if (glyf.length - glyphDataLength > 3) {\n // truncating and aligning to 4 bytes the long glyph data\n glyphDataLength = (glyphDataLength + 3) & ~3;\n dest.set(glyf.subarray(0, glyphDataLength), destStart);\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n // glyph data is fine\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n function sanitizeHead(head, numGlyphs, locaLength) {\n const data = head.data;\n\n // Validate version:\n // Should always be 0x00010000\n const version = int32(data[0], data[1], data[2], data[3]);\n if (version >> 16 !== 1) {\n info(\"Attempting to fix invalid version in head table: \" + version);\n data[0] = 0;\n data[1] = 1;\n data[2] = 0;\n data[3] = 0;\n }\n\n const indexToLocFormat = int16(data[50], data[51]);\n if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n info(\n \"Attempting to fix invalid indexToLocFormat in head table: \" +\n indexToLocFormat\n );\n\n // The value of indexToLocFormat should be 0 if the loca table\n // consists of short offsets, and should be 1 if the loca table\n // consists of long offsets.\n //\n // The number of entries in the loca table should be numGlyphs + 1.\n //\n // Using this information, we can work backwards to deduce if the\n // size of each offset in the loca table, and thus figure out the\n // appropriate value for indexToLocFormat.\n\n const numGlyphsPlusOne = numGlyphs + 1;\n if (locaLength === numGlyphsPlusOne << 1) {\n // 0x0000 indicates the loca table consists of short offsets\n data[50] = 0;\n data[51] = 0;\n } else if (locaLength === numGlyphsPlusOne << 2) {\n // 0x0001 indicates the loca table consists of long offsets\n data[50] = 0;\n data[51] = 1;\n } else {\n throw new FormatError(\n \"Could not fix indexToLocFormat: \" + indexToLocFormat\n );\n }\n }\n }\n\n function sanitizeGlyphLocations(\n loca,\n glyf,\n numGlyphs,\n isGlyphLocationsLong,\n hintsValid,\n dupFirstEntry,\n maxSizeOfInstructions\n ) {\n let itemSize, itemDecode, itemEncode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = function fontItemDecodeLong(data, offset) {\n return (\n (data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]\n );\n };\n itemEncode = function fontItemEncodeLong(data, offset, value) {\n data[offset] = (value >>> 24) & 0xff;\n data[offset + 1] = (value >> 16) & 0xff;\n data[offset + 2] = (value >> 8) & 0xff;\n data[offset + 3] = value & 0xff;\n };\n } else {\n itemSize = 2;\n itemDecode = function fontItemDecode(data, offset) {\n return (data[offset] << 9) | (data[offset + 1] << 1);\n };\n itemEncode = function fontItemEncode(data, offset, value) {\n data[offset] = (value >> 9) & 0xff;\n data[offset + 1] = (value >> 1) & 0xff;\n };\n }\n // The first glyph is duplicated.\n const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n const locaDataSize = itemSize * (1 + numGlyphsOut);\n // Resize loca table to account for duplicated glyph.\n const locaData = new Uint8Array(locaDataSize);\n locaData.set(loca.data.subarray(0, locaDataSize));\n loca.data = locaData;\n // removing the invalid glyphs\n const oldGlyfData = glyf.data;\n const oldGlyfDataLength = oldGlyfData.length;\n const newGlyfData = new Uint8Array(oldGlyfDataLength);\n\n // The spec says the offsets should be in ascending order, however\n // this is not true for some fonts or they use the offset of 0 to mark a\n // glyph as missing. OTS requires the offsets to be in order and not to\n // be zero, so we must sort and rebuild the loca table and potentially\n // re-arrange the glyf data.\n let i, j;\n const locaEntries = [];\n // There are numGlyphs + 1 loca table entries.\n for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n let offset = itemDecode(locaData, j);\n if (offset > oldGlyfDataLength) {\n offset = oldGlyfDataLength;\n }\n locaEntries.push({\n index: i,\n offset,\n endOffset: 0,\n });\n }\n locaEntries.sort((a, b) => {\n return a.offset - b.offset;\n });\n // Now the offsets are sorted, calculate the end offset of each glyph.\n // The last loca entry's endOffset is not calculated since it's the end\n // of the data and will be stored on the previous entry's endOffset.\n for (i = 0; i < numGlyphs; i++) {\n locaEntries[i].endOffset = locaEntries[i + 1].offset;\n }\n // Re-sort so glyphs aren't out of order.\n locaEntries.sort((a, b) => {\n return a.index - b.index;\n });\n\n const missingGlyphs = Object.create(null);\n let writeOffset = 0;\n itemEncode(locaData, 0, writeOffset);\n for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n const glyphProfile = sanitizeGlyph(\n oldGlyfData,\n locaEntries[i].offset,\n locaEntries[i].endOffset,\n newGlyfData,\n writeOffset,\n hintsValid\n );\n const newLength = glyphProfile.length;\n if (newLength === 0) {\n missingGlyphs[i] = true;\n }\n if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n }\n writeOffset += newLength;\n itemEncode(locaData, j, writeOffset);\n }\n\n if (writeOffset === 0) {\n // glyf table cannot be empty -- redoing the glyf and loca tables\n // to have single glyph with one point\n const simpleGlyph = new Uint8Array([\n 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0,\n ]);\n for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n itemEncode(locaData, j, simpleGlyph.length);\n }\n glyf.data = simpleGlyph;\n } else if (dupFirstEntry) {\n // Browsers will not display a glyph at position 0. Typically glyph 0\n // is notdef, but a number of fonts put a valid glyph there so it must\n // be duplicated and appended.\n const firstEntryLength = itemDecode(locaData, itemSize);\n if (newGlyfData.length > firstEntryLength + writeOffset) {\n glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n } else {\n glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n glyf.data.set(newGlyfData.subarray(0, writeOffset));\n }\n glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n itemEncode(\n loca.data,\n locaData.length - itemSize,\n writeOffset + firstEntryLength\n );\n } else {\n glyf.data = newGlyfData.subarray(0, writeOffset);\n }\n return {\n missingGlyphs,\n maxSizeOfInstructions,\n };\n }\n\n function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n const start = (font.start ? font.start : 0) + post.offset;\n font.pos = start;\n\n const length = post.length,\n end = start + length;\n const version = font.getInt32();\n // skip rest to the tables\n font.skip(28);\n\n let glyphNames;\n let valid = true;\n let i;\n\n switch (version) {\n case 0x00010000:\n glyphNames = MacStandardGlyphOrdering;\n break;\n case 0x00020000:\n const numGlyphs = font.getUint16();\n if (numGlyphs !== maxpNumGlyphs) {\n valid = false;\n break;\n }\n const glyphNameIndexes = [];\n for (i = 0; i < numGlyphs; ++i) {\n const index = font.getUint16();\n if (index >= 32768) {\n valid = false;\n break;\n }\n glyphNameIndexes.push(index);\n }\n if (!valid) {\n break;\n }\n const customNames = [],\n strBuf = [];\n while (font.pos < end) {\n const stringLength = font.getByte();\n strBuf.length = stringLength;\n for (i = 0; i < stringLength; ++i) {\n strBuf[i] = String.fromCharCode(font.getByte());\n }\n customNames.push(strBuf.join(\"\"));\n }\n glyphNames = [];\n for (i = 0; i < numGlyphs; ++i) {\n const j = glyphNameIndexes[i];\n if (j < 258) {\n glyphNames.push(MacStandardGlyphOrdering[j]);\n continue;\n }\n glyphNames.push(customNames[j - 258]);\n }\n break;\n case 0x00030000:\n break;\n default:\n warn(\"Unknown/unsupported post table version \" + version);\n valid = false;\n if (propertiesObj.defaultEncoding) {\n glyphNames = propertiesObj.defaultEncoding;\n }\n break;\n }\n propertiesObj.glyphNames = glyphNames;\n return valid;\n }\n\n function readNameTable(nameTable) {\n const start = (font.start ? font.start : 0) + nameTable.offset;\n font.pos = start;\n\n const names = [[], []];\n const length = nameTable.length,\n end = start + length;\n const format = font.getUint16();\n const FORMAT_0_HEADER_LENGTH = 6;\n if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n // unsupported name table format or table \"too\" small\n return names;\n }\n const numRecords = font.getUint16();\n const stringsStart = font.getUint16();\n const records = [];\n const NAME_RECORD_LENGTH = 12;\n let i, ii;\n\n for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n const r = {\n platform: font.getUint16(),\n encoding: font.getUint16(),\n language: font.getUint16(),\n name: font.getUint16(),\n length: font.getUint16(),\n offset: font.getUint16(),\n };\n // using only Macintosh and Windows platform/encoding names\n if (\n (r.platform === 1 && r.encoding === 0 && r.language === 0) ||\n (r.platform === 3 && r.encoding === 1 && r.language === 0x409)\n ) {\n records.push(r);\n }\n }\n for (i = 0, ii = records.length; i < ii; i++) {\n const record = records[i];\n if (record.length <= 0) {\n continue; // Nothing to process, ignoring.\n }\n const pos = start + stringsStart + record.offset;\n if (pos + record.length > end) {\n continue; // outside of name table, ignoring\n }\n font.pos = pos;\n const nameIndex = record.name;\n if (record.encoding) {\n // unicode\n let str = \"\";\n for (let j = 0, jj = record.length; j < jj; j += 2) {\n str += String.fromCharCode(font.getUint16());\n }\n names[1][nameIndex] = str;\n } else {\n names[0][nameIndex] = font.getString(record.length);\n }\n }\n return names;\n }\n\n // prettier-ignore\n const TTOpsStackDeltas = [\n 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\n -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\n 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\n 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\n 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\n -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\n -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\n -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n // 0xC0-DF == -1 and 0xE0-FF == -2\n\n function sanitizeTTProgram(table, ttContext) {\n let data = table.data;\n let i = 0,\n j,\n n,\n b,\n funcId,\n pc,\n lastEndf = 0,\n lastDeff = 0;\n const stack = [];\n const callstack = [];\n const functionsCalled = [];\n let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n let inFDEF = false,\n ifLevel = 0,\n inELSE = 0;\n for (let ii = data.length; i < ii; ) {\n const op = data[i++];\n // The TrueType instruction set docs can be found at\n // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html\n if (op === 0x40) {\n // NPUSHB - pushes n bytes\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if (op === 0x41) {\n // NPUSHW - pushes n words\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push((b << 8) | data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb0) {\n // PUSHB - pushes bytes\n n = op - 0xb0 + 1;\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb8) {\n // PUSHW - pushes words\n n = op - 0xb8 + 1;\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push((b << 8) | data[i++]);\n }\n }\n } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n // CALL\n if (!inFDEF && !inELSE) {\n // collecting information about which functions are used\n funcId = stack[stack.length - 1];\n if (isNaN(funcId)) {\n info(\"TT: CALL empty stack (or invalid entry).\");\n } else {\n ttContext.functionsUsed[funcId] = true;\n if (funcId in ttContext.functionsStackDeltas) {\n const newStackLength =\n stack.length + ttContext.functionsStackDeltas[funcId];\n if (newStackLength < 0) {\n warn(\"TT: CALL invalid functions stack delta.\");\n ttContext.hintsValid = false;\n return;\n }\n stack.length = newStackLength;\n } else if (\n funcId in ttContext.functionsDefined &&\n !functionsCalled.includes(funcId)\n ) {\n callstack.push({ data, i, stackTop: stack.length - 1 });\n functionsCalled.push(funcId);\n pc = ttContext.functionsDefined[funcId];\n if (!pc) {\n warn(\"TT: CALL non-existent function\");\n ttContext.hintsValid = false;\n return;\n }\n data = pc.data;\n i = pc.i;\n }\n }\n }\n } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n // FDEF\n if (inFDEF || inELSE) {\n warn(\"TT: nested FDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n // collecting information about which functions are defined\n lastDeff = i;\n funcId = stack.pop();\n ttContext.functionsDefined[funcId] = { data, i };\n } else if (op === 0x2d) {\n // ENDF - end of function\n if (inFDEF) {\n inFDEF = false;\n lastEndf = i;\n } else {\n pc = callstack.pop();\n if (!pc) {\n warn(\"TT: ENDF bad stack\");\n ttContext.hintsValid = false;\n return;\n }\n funcId = functionsCalled.pop();\n data = pc.data;\n i = pc.i;\n ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\n }\n } else if (op === 0x89) {\n // IDEF - instruction definition\n if (inFDEF || inELSE) {\n warn(\"TT: nested IDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n // recording it as a function to track ENDF\n lastDeff = i;\n } else if (op === 0x58) {\n // IF\n ++ifLevel;\n } else if (op === 0x1b) {\n // ELSE\n inELSE = ifLevel;\n } else if (op === 0x59) {\n // EIF\n if (inELSE === ifLevel) {\n inELSE = 0;\n }\n --ifLevel;\n } else if (op === 0x1c) {\n // JMPR\n if (!inFDEF && !inELSE) {\n const offset = stack[stack.length - 1];\n // only jumping forward to prevent infinite loop\n if (offset > 0) {\n i += offset - 1;\n }\n }\n }\n // Adjusting stack not extactly, but just enough to get function id\n if (!inFDEF && !inELSE) {\n let stackDelta = 0;\n if (op <= 0x8e) {\n stackDelta = TTOpsStackDeltas[op];\n } else if (op >= 0xc0 && op <= 0xdf) {\n stackDelta = -1;\n } else if (op >= 0xe0) {\n stackDelta = -2;\n }\n if (op >= 0x71 && op <= 0x75) {\n n = stack.pop();\n if (!isNaN(n)) {\n stackDelta = -n * 2;\n }\n }\n while (stackDelta < 0 && stack.length > 0) {\n stack.pop();\n stackDelta++;\n }\n while (stackDelta > 0) {\n stack.push(NaN); // pushing any number into stack\n stackDelta--;\n }\n }\n }\n ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n const content = [data];\n if (i > data.length) {\n content.push(new Uint8Array(i - data.length));\n }\n if (lastDeff > lastEndf) {\n warn(\"TT: complementing a missing function tail\");\n // new function definition started, but not finished\n // complete function by [CLEAR, ENDF]\n content.push(new Uint8Array([0x22, 0x2d]));\n }\n foldTTTable(table, content);\n }\n\n function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n if (ttContext.tooComplexToFollowFunctions) {\n return;\n }\n if (ttContext.functionsDefined.length > maxFunctionDefs) {\n warn(\"TT: more functions defined than expected\");\n ttContext.hintsValid = false;\n return;\n }\n for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n if (j > maxFunctionDefs) {\n warn(\"TT: invalid function id: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n warn(\"TT: undefined function: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n }\n }\n\n function foldTTTable(table, content) {\n if (content.length > 1) {\n // concatenating the content items\n let newLength = 0;\n let j, jj;\n for (j = 0, jj = content.length; j < jj; j++) {\n newLength += content[j].length;\n }\n newLength = (newLength + 3) & ~3;\n const result = new Uint8Array(newLength);\n let pos = 0;\n for (j = 0, jj = content.length; j < jj; j++) {\n result.set(content[j], pos);\n pos += content[j].length;\n }\n table.data = result;\n table.length = newLength;\n }\n }\n\n function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n const ttContext = {\n functionsDefined: [],\n functionsUsed: [],\n functionsStackDeltas: [],\n tooComplexToFollowFunctions: false,\n hintsValid: true,\n };\n if (fpgm) {\n sanitizeTTProgram(fpgm, ttContext);\n }\n if (prep) {\n sanitizeTTProgram(prep, ttContext);\n }\n if (fpgm) {\n checkInvalidFunctions(ttContext, maxFunctionDefs);\n }\n if (cvt && cvt.length & 1) {\n const cvtData = new Uint8Array(cvt.length + 1);\n cvtData.set(cvt.data);\n cvt.data = cvtData;\n }\n return ttContext.hintsValid;\n }\n\n // The following steps modify the original font data, making copy\n font = new Stream(new Uint8Array(font.getBytes()));\n\n let header, tables;\n if (isTrueTypeCollectionFile(font)) {\n const ttcData = readTrueTypeCollectionData(font, this.name);\n header = ttcData.header;\n tables = ttcData.tables;\n } else {\n header = readOpenTypeHeader(font);\n tables = readTables(font, header.numTables);\n }\n let cff, cffFile;\n\n const isTrueType = !tables[\"CFF \"];\n if (!isTrueType) {\n const isComposite =\n properties.composite &&\n ((properties.cidToGidMap || []).length > 0 ||\n !(properties.cMap instanceof IdentityCMap));\n // OpenType font (skip composite fonts with non-default glyph mapping).\n if (\n (header.version === \"OTTO\" && !isComposite) ||\n !tables.head ||\n !tables.hhea ||\n !tables.maxp ||\n !tables.post\n ) {\n // No major tables: throwing everything at `CFFFont`.\n cffFile = new Stream(tables[\"CFF \"].data);\n cff = new CFFFont(cffFile, properties);\n\n adjustWidths(properties);\n\n return this.convert(name, cff, properties);\n }\n\n delete tables.glyf;\n delete tables.loca;\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n this.isOpenType = true;\n } else {\n if (!tables.loca) {\n throw new FormatError('Required \"loca\" table is not found');\n }\n if (!tables.glyf) {\n warn('Required \"glyf\" table is not found -- trying to recover.');\n // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\n tables.glyf = {\n tag: \"glyf\",\n data: new Uint8Array(0),\n };\n }\n this.isOpenType = false;\n }\n\n if (!tables.maxp) {\n throw new FormatError('Required \"maxp\" table is not found');\n }\n\n font.pos = (font.start || 0) + tables.maxp.offset;\n const version = font.getInt32();\n const numGlyphs = font.getUint16();\n\n if (\n properties.scaleFactors &&\n properties.scaleFactors.length === numGlyphs &&\n isTrueType\n ) {\n const { scaleFactors } = properties;\n const isGlyphLocationsLong = int16(\n tables.head.data[50],\n tables.head.data[51]\n );\n\n const glyphs = new GlyfTable({\n glyfTable: tables.glyf.data,\n isGlyphLocationsLong,\n locaTable: tables.loca.data,\n numGlyphs,\n });\n glyphs.scale(scaleFactors);\n\n const { glyf, loca, isLocationLong } = glyphs.write();\n tables.glyf.data = glyf;\n tables.loca.data = loca;\n\n if (isLocationLong !== !!isGlyphLocationsLong) {\n tables.head.data[50] = 0;\n tables.head.data[51] = isLocationLong ? 1 : 0;\n }\n\n const metrics = tables.hmtx.data;\n\n for (let i = 0; i < numGlyphs; i++) {\n const j = 4 * i;\n const advanceWidth = Math.round(\n scaleFactors[i] * int16(metrics[j], metrics[j + 1])\n );\n metrics[j] = (advanceWidth >> 8) & 0xff;\n metrics[j + 1] = advanceWidth & 0xff;\n const lsb = Math.round(\n scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])\n );\n writeSignedInt16(metrics, j + 2, lsb);\n }\n }\n\n // Glyph 0 is duplicated and appended.\n let numGlyphsOut = numGlyphs + 1;\n let dupFirstEntry = true;\n if (numGlyphsOut > 0xffff) {\n dupFirstEntry = false;\n numGlyphsOut = numGlyphs;\n warn(\"Not enough space in glyfs to duplicate first glyph.\");\n }\n let maxFunctionDefs = 0;\n let maxSizeOfInstructions = 0;\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n // maxZones can be invalid\n font.pos += 8;\n const maxZones = font.getUint16();\n if (maxZones > 2) {\n // reset to 2 if font has invalid maxZones\n tables.maxp.data[14] = 0;\n tables.maxp.data[15] = 2;\n }\n font.pos += 4;\n maxFunctionDefs = font.getUint16();\n font.pos += 4;\n maxSizeOfInstructions = font.getUint16();\n }\n\n tables.maxp.data[4] = numGlyphsOut >> 8;\n tables.maxp.data[5] = numGlyphsOut & 255;\n\n const hintsValid = sanitizeTTPrograms(\n tables.fpgm,\n tables.prep,\n tables[\"cvt \"],\n maxFunctionDefs\n );\n if (!hintsValid) {\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n }\n\n // Ensure the hmtx table contains the advance width and\n // sidebearings information for numGlyphs in the maxp table\n sanitizeMetrics(\n font,\n tables.hhea,\n tables.hmtx,\n tables.head,\n numGlyphsOut,\n dupFirstEntry\n );\n\n if (!tables.head) {\n throw new FormatError('Required \"head\" table is not found');\n }\n\n sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n\n let missingGlyphs = Object.create(null);\n if (isTrueType) {\n const isGlyphLocationsLong = int16(\n tables.head.data[50],\n tables.head.data[51]\n );\n const glyphsInfo = sanitizeGlyphLocations(\n tables.loca,\n tables.glyf,\n numGlyphs,\n isGlyphLocationsLong,\n hintsValid,\n dupFirstEntry,\n maxSizeOfInstructions\n );\n missingGlyphs = glyphsInfo.missingGlyphs;\n\n // Some fonts have incorrect maxSizeOfInstructions values, so we use\n // the computed value instead.\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n }\n }\n if (!tables.hhea) {\n throw new FormatError('Required \"hhea\" table is not found');\n }\n\n // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\n // Sometimes it's 0. That needs to be fixed\n if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n tables.hhea.data[10] = 0xff;\n tables.hhea.data[11] = 0xff;\n }\n\n // Extract some more font properties from the OpenType head and\n // hhea tables; yMin and descent value are always negative.\n const metricsOverride = {\n unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n yMax: int16(tables.head.data[42], tables.head.data[43]),\n yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\n descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]),\n };\n\n // PDF FontDescriptor metrics lie -- using data from actual font.\n this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;\n\n if (this.cssFontInfo && this.cssFontInfo.lineHeight) {\n this.lineHeight = this.cssFontInfo.metrics.lineHeight;\n this.lineGap = this.cssFontInfo.metrics.lineGap;\n } else {\n this.lineHeight = this.ascent - this.descent + this.lineGap;\n }\n\n // The 'post' table has glyphs names.\n if (tables.post) {\n readPostScriptTable(tables.post, properties, numGlyphs);\n }\n\n // The original 'post' table is not needed, replace it.\n tables.post = {\n tag: \"post\",\n data: createPostTable(properties),\n };\n\n const charCodeToGlyphId = [];\n\n // Helper function to try to skip mapping of empty glyphs.\n function hasGlyph(glyphId) {\n return !missingGlyphs[glyphId];\n }\n\n if (properties.composite) {\n const cidToGidMap = properties.cidToGidMap || [];\n const isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n properties.cMap.forEach(function (charCode, cid) {\n if (typeof cid === \"string\") {\n cid = convertCidString(charCode, cid, /* shouldThrow = */ true);\n }\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n let glyphId = -1;\n if (isCidToGidMapEmpty) {\n glyphId = cid;\n } else if (cidToGidMap[cid] !== undefined) {\n glyphId = cidToGidMap[cid];\n }\n\n if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n charCodeToGlyphId[charCode] = glyphId;\n }\n });\n } else {\n // Most of the following logic in this code branch is based on the\n // 9.6.6.4 of the PDF spec.\n const cmapTable = readCmapTable(\n tables.cmap,\n font,\n this.isSymbolicFont,\n properties.hasEncoding\n );\n const cmapPlatformId = cmapTable.platformId;\n const cmapEncodingId = cmapTable.encodingId;\n const cmapMappings = cmapTable.mappings;\n const cmapMappingsLength = cmapMappings.length;\n let baseEncoding = [],\n forcePostTable = false;\n if (\n properties.hasEncoding &&\n (properties.baseEncodingName === \"MacRomanEncoding\" ||\n properties.baseEncodingName === \"WinAnsiEncoding\")\n ) {\n baseEncoding = getEncoding(properties.baseEncodingName);\n }\n\n // If the font has an encoding and is not symbolic then follow the rules\n // in section 9.6.6.4 of the spec on how to map 3,1 and 1,0 cmaps.\n if (\n properties.hasEncoding &&\n !this.isSymbolicFont &&\n ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\n (cmapPlatformId === 1 && cmapEncodingId === 0))\n ) {\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (let charCode = 0; charCode < 256; charCode++) {\n let glyphName;\n if (this.differences[charCode] !== undefined) {\n glyphName = this.differences[charCode];\n } else if (baseEncoding.length && baseEncoding[charCode] !== \"\") {\n glyphName = baseEncoding[charCode];\n } else {\n glyphName = StandardEncoding[charCode];\n }\n if (!glyphName) {\n continue;\n }\n // Ensure that non-standard glyph names are resolved to valid ones.\n const standardGlyphName = recoverGlyphName(\n glyphName,\n glyphsUnicodeMap\n );\n\n let unicodeOrCharCode;\n if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n // TODO: the encoding needs to be updated with mac os table.\n unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n }\n\n if (unicodeOrCharCode === undefined) {\n // Not a valid glyph name, fallback to using the /ToUnicode map\n // when no post-table exists (fixes issue13316_reduced.pdf).\n if (\n !properties.glyphNames &&\n properties.hasIncludedToUnicodeMap &&\n !(this.toUnicode instanceof IdentityToUnicodeMap)\n ) {\n const unicode = this.toUnicode.get(charCode);\n if (unicode) {\n unicodeOrCharCode = unicode.codePointAt(0);\n }\n }\n\n if (unicodeOrCharCode === undefined) {\n continue; // No valid glyph mapping found.\n }\n }\n\n for (let i = 0; i < cmapMappingsLength; ++i) {\n if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n continue;\n }\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n break;\n }\n }\n } else if (cmapPlatformId === 0) {\n // Default Unicode semantics, use the charcodes as is.\n for (let i = 0; i < cmapMappingsLength; ++i) {\n charCodeToGlyphId[cmapMappings[i].charCode] = cmapMappings[i].glyphId;\n }\n // Always prefer the BaseEncoding/Differences arrays, when they exist\n // (fixes issue13433.pdf).\n forcePostTable = true;\n } else {\n // When there is only a (1, 0) cmap table, the char code is a single\n // byte and it is used directly as the char code.\n\n // When a (3, 0) cmap table is present, it is used instead but the\n // spec has special rules for char codes in the range of 0xF000 to\n // 0xF0FF and it says the (3, 0) table should map the values from\n // the (1, 0) table by prepending 0xF0 to the char codes. To reverse\n // this, the upper bits of the char code are cleared, but only for the\n // special range since some PDFs have char codes outside of this range\n // (e.g. 0x2013) which when masked would overwrite other values in the\n // cmap.\n for (let i = 0; i < cmapMappingsLength; ++i) {\n let charCode = cmapMappings[i].charCode;\n if (\n cmapPlatformId === 3 &&\n charCode >= 0xf000 &&\n charCode <= 0xf0ff\n ) {\n charCode &= 0xff;\n }\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n }\n }\n\n // Last, try to map any missing charcodes using the post table.\n if (\n properties.glyphNames &&\n (baseEncoding.length || this.differences.length)\n ) {\n for (let i = 0; i < 256; ++i) {\n if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\n continue;\n }\n const glyphName = this.differences[i] || baseEncoding[i];\n if (!glyphName) {\n continue;\n }\n const glyphId = properties.glyphNames.indexOf(glyphName);\n if (glyphId > 0 && hasGlyph(glyphId)) {\n charCodeToGlyphId[i] = glyphId;\n }\n }\n }\n }\n\n if (charCodeToGlyphId.length === 0) {\n // defines at least one glyph\n charCodeToGlyphId[0] = 0;\n }\n\n // Typically glyph 0 is duplicated and the mapping must be updated, but if\n // there isn't enough room to duplicate, the glyph id is left the same. In\n // this case, glyph 0 may not work correctly, but that is better than\n // having the whole font fail.\n let glyphZeroId = numGlyphsOut - 1;\n if (!dupFirstEntry) {\n glyphZeroId = 0;\n }\n\n // When `cssFontInfo` is set, the font is used to render text in the HTML\n // view (e.g. with Xfa) so nothing must be moved in the private use area.\n if (!properties.cssFontInfo) {\n // Converting glyphs and ids into font's cmap table\n const newMapping = adjustMapping(\n charCodeToGlyphId,\n hasGlyph,\n glyphZeroId\n );\n this.toFontChar = newMapping.toFontChar;\n tables.cmap = {\n tag: \"cmap\",\n data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut),\n };\n\n if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n tables[\"OS/2\"] = {\n tag: \"OS/2\",\n data: createOS2Table(\n properties,\n newMapping.charCodeToGlyphId,\n metricsOverride\n ),\n };\n }\n }\n\n if (!isTrueType) {\n try {\n // Trying to repair CFF file\n cffFile = new Stream(tables[\"CFF \"].data);\n const parser = new CFFParser(\n cffFile,\n properties,\n SEAC_ANALYSIS_ENABLED\n );\n cff = parser.parse();\n cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(cff);\n tables[\"CFF \"].data = compiler.compile();\n } catch (e) {\n warn(\"Failed to compile font \" + properties.loadedName);\n }\n }\n\n // Re-creating 'name' table\n if (!tables.name) {\n tables.name = {\n tag: \"name\",\n data: createNameTable(this.name),\n };\n } else {\n // ... using existing 'name' table as prototype\n const namePrototype = readNameTable(tables.name);\n tables.name.data = createNameTable(name, namePrototype);\n this.psName = namePrototype[0][6] || null;\n }\n\n const builder = new OpenTypeFileBuilder(header.version);\n for (const tableTag in tables) {\n builder.addTable(tableTag, tables[tableTag].data);\n }\n return builder.toArray();\n }\n\n convert(fontName, font, properties) {\n // TODO: Check the charstring widths to determine this.\n properties.fixedPitch = false;\n\n if (properties.builtInEncoding) {\n // For Type1 fonts that do not include either `ToUnicode` or `Encoding`\n // data, attempt to use the `builtInEncoding` to improve text selection.\n adjustToUnicode(properties, properties.builtInEncoding);\n }\n\n // Type 1 fonts have a notdef inserted at the beginning, so glyph 0\n // becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\n // char strings.\n let glyphZeroId = 1;\n if (font instanceof CFFFont) {\n glyphZeroId = font.numGlyphs - 1;\n }\n const mapping = font.getGlyphMapping(properties);\n let newMapping = null;\n let newCharCodeToGlyphId = mapping;\n\n // When `cssFontInfo` is set, the font is used to render text in the HTML\n // view (e.g. with Xfa) so nothing must be moved in the private use area.\n if (!properties.cssFontInfo) {\n newMapping = adjustMapping(\n mapping,\n font.hasGlyphId.bind(font),\n glyphZeroId\n );\n this.toFontChar = newMapping.toFontChar;\n newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\n }\n const numGlyphs = font.numGlyphs;\n\n function getCharCodes(charCodeToGlyphId, glyphId) {\n let charCodes = null;\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n if (!charCodes) {\n charCodes = [];\n }\n charCodes.push(charCode | 0);\n }\n }\n return charCodes;\n }\n\n function createCharCode(charCodeToGlyphId, glyphId) {\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n return charCode | 0;\n }\n }\n newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] =\n glyphId;\n return newMapping.nextAvailableFontCharCode++;\n }\n\n const seacs = font.seacs;\n if (newMapping && SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n const charset = font.getCharset();\n const seacMap = Object.create(null);\n for (let glyphId in seacs) {\n glyphId |= 0;\n const seac = seacs[glyphId];\n const baseGlyphName = StandardEncoding[seac[2]];\n const accentGlyphName = StandardEncoding[seac[3]];\n const baseGlyphId = charset.indexOf(baseGlyphName);\n const accentGlyphId = charset.indexOf(accentGlyphName);\n if (baseGlyphId < 0 || accentGlyphId < 0) {\n continue;\n }\n const accentOffset = {\n x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\n };\n\n const charCodes = getCharCodes(mapping, glyphId);\n if (!charCodes) {\n // There's no point in mapping it if the char code was never mapped\n // to begin with.\n continue;\n }\n for (let i = 0, ii = charCodes.length; i < ii; i++) {\n const charCode = charCodes[i];\n // Find a fontCharCode that maps to the base and accent glyphs.\n // If one doesn't exists, create it.\n const charCodeToGlyphId = newMapping.charCodeToGlyphId;\n const baseFontCharCode = createCharCode(\n charCodeToGlyphId,\n baseGlyphId\n );\n const accentFontCharCode = createCharCode(\n charCodeToGlyphId,\n accentGlyphId\n );\n seacMap[charCode] = {\n baseFontCharCode,\n accentFontCharCode,\n accentOffset,\n };\n }\n }\n properties.seacMap = seacMap;\n }\n\n const unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n const builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n // PostScript Font Program\n builder.addTable(\"CFF \", font.data);\n // OS/2 and Windows Specific metrics\n builder.addTable(\"OS/2\", createOS2Table(properties, newCharCodeToGlyphId));\n // Character to glyphs mapping\n builder.addTable(\"cmap\", createCmapTable(newCharCodeToGlyphId, numGlyphs));\n // Font header\n builder.addTable(\n \"head\",\n \"\\x00\\x01\\x00\\x00\" + // Version number\n \"\\x00\\x00\\x10\\x00\" + // fontRevision\n \"\\x00\\x00\\x00\\x00\" + // checksumAdjustement\n \"\\x5F\\x0F\\x3C\\xF5\" + // magicNumber\n \"\\x00\\x00\" + // Flags\n safeString16(unitsPerEm) + // unitsPerEM\n \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // creation date\n \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // modifification date\n \"\\x00\\x00\" + // xMin\n safeString16(properties.descent) + // yMin\n \"\\x0F\\xFF\" + // xMax\n safeString16(properties.ascent) + // yMax\n string16(properties.italicAngle ? 2 : 0) + // macStyle\n \"\\x00\\x11\" + // lowestRecPPEM\n \"\\x00\\x00\" + // fontDirectionHint\n \"\\x00\\x00\" + // indexToLocFormat\n \"\\x00\\x00\"\n ); // glyphDataFormat\n\n // Horizontal header\n builder.addTable(\n \"hhea\",\n \"\\x00\\x01\\x00\\x00\" + // Version number\n safeString16(properties.ascent) + // Typographic Ascent\n safeString16(properties.descent) + // Typographic Descent\n \"\\x00\\x00\" + // Line Gap\n \"\\xFF\\xFF\" + // advanceWidthMax\n \"\\x00\\x00\" + // minLeftSidebearing\n \"\\x00\\x00\" + // minRightSidebearing\n \"\\x00\\x00\" + // xMaxExtent\n safeString16(properties.capHeight) + // caretSlopeRise\n safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + // caretSlopeRun\n \"\\x00\\x00\" + // caretOffset\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // metricDataFormat\n string16(numGlyphs)\n ); // Number of HMetrics\n\n // Horizontal metrics\n builder.addTable(\n \"hmtx\",\n (function fontFieldsHmtx() {\n const charstrings = font.charstrings;\n const cffWidths = font.cff ? font.cff.widths : null;\n let hmtx = \"\\x00\\x00\\x00\\x00\"; // Fake .notdef\n for (let i = 1, ii = numGlyphs; i < ii; i++) {\n let width = 0;\n if (charstrings) {\n const charstring = charstrings[i - 1];\n width = \"width\" in charstring ? charstring.width : 0;\n } else if (cffWidths) {\n width = Math.ceil(cffWidths[i] || 0);\n }\n hmtx += string16(width) + string16(0);\n }\n return hmtx;\n })()\n );\n\n // Maximum profile\n builder.addTable(\n \"maxp\",\n \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs) // Version number\n ); // Num of glyphs\n\n // Naming tables\n builder.addTable(\"name\", createNameTable(fontName));\n\n // PostScript information\n builder.addTable(\"post\", createPostTable(properties));\n\n return builder.toArray();\n }\n\n get spaceWidth() {\n // trying to estimate space character width\n const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n let width;\n for (let i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n const glyphName = possibleSpaceReplacements[i];\n // if possible, getting width by glyph name\n if (glyphName in this.widths) {\n width = this.widths[glyphName];\n break;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n const glyphUnicode = glyphsUnicodeMap[glyphName];\n // finding the charcode via unicodeToCID map\n let charcode = 0;\n if (this.composite && this.cMap.contains(glyphUnicode)) {\n charcode = this.cMap.lookup(glyphUnicode);\n\n if (typeof charcode === \"string\") {\n charcode = convertCidString(glyphUnicode, charcode);\n }\n }\n // ... via toUnicode map\n if (!charcode && this.toUnicode) {\n charcode = this.toUnicode.charCodeOf(glyphUnicode);\n }\n // setting it to unicode if negative or undefined\n if (charcode <= 0) {\n charcode = glyphUnicode;\n }\n // trying to get width via charcode\n width = this.widths[charcode];\n if (width) {\n break; // the non-zero width found\n }\n }\n width = width || this.defaultWidth;\n return shadow(this, \"spaceWidth\", width);\n }\n\n /**\n * @private\n */\n _charToGlyph(charcode, isSpace = false) {\n let fontCharCode, width, operatorListId;\n\n let widthCode = charcode;\n if (this.cMap && this.cMap.contains(charcode)) {\n widthCode = this.cMap.lookup(charcode);\n\n if (typeof widthCode === \"string\") {\n widthCode = convertCidString(charcode, widthCode);\n }\n }\n width = this.widths[widthCode];\n width = isNum(width) ? width : this.defaultWidth;\n const vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n let unicode = this.toUnicode.get(charcode) || charcode;\n if (typeof unicode === \"number\") {\n unicode = String.fromCharCode(unicode);\n }\n\n let isInFont = this.toFontChar[charcode] !== undefined;\n // First try the toFontChar map, if it's not there then try falling\n // back to the char code.\n fontCharCode = this.toFontChar[charcode] || charcode;\n if (this.missingFile) {\n const glyphName =\n this.differences[charcode] || this.defaultEncoding[charcode];\n if (\n (glyphName === \".notdef\" || glyphName === \"\") &&\n this.type === \"Type1\"\n ) {\n // .notdef glyphs should be invisible in non-embedded Type1 fonts, so\n // replace them with spaces.\n fontCharCode = 0x20;\n }\n fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n }\n\n if (this.isType3Font) {\n // Font char code in this case is actually a glyph name.\n operatorListId = fontCharCode;\n }\n\n let accent = null;\n if (this.seacMap && this.seacMap[charcode]) {\n isInFont = true;\n const seac = this.seacMap[charcode];\n fontCharCode = seac.baseFontCharCode;\n accent = {\n fontChar: String.fromCodePoint(seac.accentFontCharCode),\n offset: seac.accentOffset,\n };\n }\n\n let fontChar = \"\";\n if (typeof fontCharCode === \"number\") {\n if (fontCharCode <= 0x10ffff) {\n fontChar = String.fromCodePoint(fontCharCode);\n } else {\n warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n }\n }\n\n let glyph = this._glyphCache[charcode];\n if (\n !glyph ||\n !glyph.matchesForCache(\n charcode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n )\n ) {\n glyph = new Glyph(\n charcode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n );\n this._glyphCache[charcode] = glyph;\n }\n return glyph;\n }\n\n charsToGlyphs(chars) {\n // If we translated this string before, just grab it from the cache.\n let glyphs = this._charsCache[chars];\n if (glyphs) {\n return glyphs;\n }\n glyphs = [];\n\n if (this.cMap) {\n // Composite fonts have multi-byte strings, convert the string from\n // single-byte to multi-byte.\n const c = Object.create(null),\n ii = chars.length;\n let i = 0;\n while (i < ii) {\n this.cMap.readCharCode(chars, i, c);\n const { charcode, length } = c;\n i += length;\n // Space is char with code 0x20 and length 1 in multiple-byte codes.\n const glyph = this._charToGlyph(\n charcode,\n length === 1 && chars.charCodeAt(i - 1) === 0x20\n );\n glyphs.push(glyph);\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n const charcode = chars.charCodeAt(i);\n const glyph = this._charToGlyph(charcode, charcode === 0x20);\n glyphs.push(glyph);\n }\n }\n\n // Enter the translated string into the cache.\n return (this._charsCache[chars] = glyphs);\n }\n\n /**\n * Chars can have different sizes (depends on the encoding).\n * @param {String} a string encoded with font encoding.\n * @returns {Array<Array<number>>} the positions of each char in the string.\n */\n getCharPositions(chars) {\n // This function doesn't use a cache because\n // it's called only when saving or printing.\n const positions = [];\n\n if (this.cMap) {\n const c = Object.create(null);\n let i = 0;\n while (i < chars.length) {\n this.cMap.readCharCode(chars, i, c);\n const length = c.length;\n positions.push([i, i + length]);\n i += length;\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n positions.push([i, i + 1]);\n }\n }\n\n return positions;\n }\n\n get glyphCacheValues() {\n return Object.values(this._glyphCache);\n }\n\n /**\n * Encode a js string using font encoding.\n * The resulting array contains an encoded string at even positions\n * (can be empty) and a non-encoded one at odd positions.\n * @param {String} a js string.\n * @returns {Array<String>} an array of encoded strings or non-encoded ones.\n */\n encodeString(str) {\n const buffers = [];\n const currentBuf = [];\n\n // buffers will contain: encoded, non-encoded, encoded, ...\n // currentBuf is pushed in buffers each time there is a change.\n // So when buffers.length is odd then the last string is an encoded one\n // and currentBuf contains non-encoded chars.\n const hasCurrentBufErrors = () => buffers.length % 2 === 1;\n\n const getCharCode =\n this.toUnicode instanceof IdentityToUnicodeMap\n ? unicode => this.toUnicode.charCodeOf(unicode)\n : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\n\n for (let i = 0, ii = str.length; i < ii; i++) {\n const unicode = str.codePointAt(i);\n if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {\n // unicode is represented by two uint16\n i++;\n }\n if (this.toUnicode) {\n const charCode = getCharCode(unicode);\n if (charCode !== -1) {\n if (hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n const charCodeLength = this.cMap\n ? this.cMap.getCharCodeLength(charCode)\n : 1;\n for (let j = charCodeLength - 1; j >= 0; j--) {\n currentBuf.push(String.fromCharCode((charCode >> (8 * j)) & 0xff));\n }\n continue;\n }\n }\n\n // unicode can't be encoded\n if (!hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n currentBuf.push(String.fromCodePoint(unicode));\n }\n\n buffers.push(currentBuf.join(\"\"));\n\n return buffers;\n }\n}\n\nclass ErrorFont {\n constructor(error) {\n this.error = error;\n this.loadedName = \"g_font_error\";\n this.missingFile = true;\n }\n\n charsToGlyphs() {\n return [];\n }\n\n encodeString(chars) {\n return [chars];\n }\n\n exportData(extraProperties = false) {\n return { error: this.error };\n }\n}\n\nexport { ErrorFont, Font };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FormatError,\n info,\n shadow,\n stringToBytes,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n ExpertCharset,\n ExpertSubsetCharset,\n ISOAdobeCharset,\n} from \"./charsets.js\";\nimport { ExpertEncoding, StandardEncoding } from \"./encodings.js\";\n\n// Maximum subroutine call depth of type 2 chartrings. Matches OTS.\nconst MAX_SUBR_NESTING = 10;\n\n/**\n * The CFF class takes a Type1 file and wrap it into a\n * 'Compact Font Format' which itself embed Type2 charstrings.\n */\n// prettier-ignore\nconst CFFStandardStrings = [\n \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\",\n \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\",\n \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\",\n \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\",\n \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\",\n \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\",\n \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\",\n \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\",\n \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\",\n \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\",\n \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\",\n \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\",\n \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\",\n \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\",\n \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\",\n \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\",\n \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\",\n \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\",\n \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\",\n \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\",\n \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\",\n \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\",\n \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\",\n \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\",\n \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\",\n \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\",\n \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\",\n \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\",\n \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\",\n \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\",\n \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\",\n \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\",\n \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\",\n \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\",\n \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\",\n \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\",\n \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\",\n \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\",\n \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\",\n \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\",\n \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\",\n \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\",\n \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\",\n \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\",\n \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\",\n \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\",\n \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"\n];\n\nconst NUM_STANDARD_CFF_STRINGS = 391;\n\nconst CFFParser = (function CFFParserClosure() {\n const CharstringValidationData = [\n null,\n { id: \"hstem\", min: 2, stackClearing: true, stem: true },\n null,\n { id: \"vstem\", min: 2, stackClearing: true, stem: true },\n { id: \"vmoveto\", min: 1, stackClearing: true },\n { id: \"rlineto\", min: 2, resetStack: true },\n { id: \"hlineto\", min: 1, resetStack: true },\n { id: \"vlineto\", min: 1, resetStack: true },\n { id: \"rrcurveto\", min: 6, resetStack: true },\n null,\n { id: \"callsubr\", min: 1, undefStack: true },\n { id: \"return\", min: 0, undefStack: true },\n null, // 12\n null,\n { id: \"endchar\", min: 0, stackClearing: true },\n null,\n null,\n null,\n { id: \"hstemhm\", min: 2, stackClearing: true, stem: true },\n { id: \"hintmask\", min: 0, stackClearing: true },\n { id: \"cntrmask\", min: 0, stackClearing: true },\n { id: \"rmoveto\", min: 2, stackClearing: true },\n { id: \"hmoveto\", min: 1, stackClearing: true },\n { id: \"vstemhm\", min: 2, stackClearing: true, stem: true },\n { id: \"rcurveline\", min: 8, resetStack: true },\n { id: \"rlinecurve\", min: 8, resetStack: true },\n { id: \"vvcurveto\", min: 4, resetStack: true },\n { id: \"hhcurveto\", min: 4, resetStack: true },\n null, // shortint\n { id: \"callgsubr\", min: 1, undefStack: true },\n { id: \"vhcurveto\", min: 4, resetStack: true },\n { id: \"hvcurveto\", min: 4, resetStack: true },\n ];\n const CharstringValidationData12 = [\n null,\n null,\n null,\n { id: \"and\", min: 2, stackDelta: -1 },\n { id: \"or\", min: 2, stackDelta: -1 },\n { id: \"not\", min: 1, stackDelta: 0 },\n null,\n null,\n null,\n { id: \"abs\", min: 1, stackDelta: 0 },\n {\n id: \"add\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] + stack[index - 1];\n },\n },\n {\n id: \"sub\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] - stack[index - 1];\n },\n },\n {\n id: \"div\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] / stack[index - 1];\n },\n },\n null,\n {\n id: \"neg\",\n min: 1,\n stackDelta: 0,\n stackFn: function stack_div(stack, index) {\n stack[index - 1] = -stack[index - 1];\n },\n },\n { id: \"eq\", min: 2, stackDelta: -1 },\n null,\n null,\n { id: \"drop\", min: 1, stackDelta: -1 },\n null,\n { id: \"put\", min: 2, stackDelta: -2 },\n { id: \"get\", min: 1, stackDelta: 0 },\n { id: \"ifelse\", min: 4, stackDelta: -3 },\n { id: \"random\", min: 0, stackDelta: 1 },\n {\n id: \"mul\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] * stack[index - 1];\n },\n },\n null,\n { id: \"sqrt\", min: 1, stackDelta: 0 },\n { id: \"dup\", min: 1, stackDelta: 1 },\n { id: \"exch\", min: 2, stackDelta: 0 },\n { id: \"index\", min: 2, stackDelta: 0 },\n { id: \"roll\", min: 3, stackDelta: -2 },\n null,\n null,\n null,\n { id: \"hflex\", min: 7, resetStack: true },\n { id: \"flex\", min: 13, resetStack: true },\n { id: \"hflex1\", min: 9, resetStack: true },\n { id: \"flex1\", min: 11, resetStack: true },\n ];\n\n // eslint-disable-next-line no-shadow\n class CFFParser {\n constructor(file, properties, seacAnalysisEnabled) {\n this.bytes = file.getBytes();\n this.properties = properties;\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n }\n\n parse() {\n const properties = this.properties;\n const cff = new CFF();\n this.cff = cff;\n\n // The first five sections must be in order, all the others are reached\n // via offsets contained in one of the below.\n const header = this.parseHeader();\n const nameIndex = this.parseIndex(header.endPos);\n const topDictIndex = this.parseIndex(nameIndex.endPos);\n const stringIndex = this.parseIndex(topDictIndex.endPos);\n const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n\n cff.header = header.obj;\n cff.names = this.parseNameIndex(nameIndex.obj);\n cff.strings = this.parseStringIndex(stringIndex.obj);\n cff.topDict = topDict;\n cff.globalSubrIndex = globalSubrIndex.obj;\n\n this.parsePrivateDict(cff.topDict);\n\n cff.isCIDFont = topDict.hasName(\"ROS\");\n\n const charStringOffset = topDict.getByName(\"CharStrings\");\n const charStringIndex = this.parseIndex(charStringOffset).obj;\n\n const fontMatrix = topDict.getByName(\"FontMatrix\");\n if (fontMatrix) {\n properties.fontMatrix = fontMatrix;\n }\n\n const fontBBox = topDict.getByName(\"FontBBox\");\n if (fontBBox) {\n // adjusting ascent/descent\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n }\n\n let charset, encoding;\n if (cff.isCIDFont) {\n const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n const dictRaw = fdArrayIndex.get(i);\n const fontDict = this.createDict(\n CFFTopDict,\n this.parseDict(dictRaw),\n cff.strings\n );\n this.parsePrivateDict(fontDict);\n cff.fdArray.push(fontDict);\n }\n // cid fonts don't have an encoding\n encoding = null;\n charset = this.parseCharsets(\n topDict.getByName(\"charset\"),\n charStringIndex.count,\n cff.strings,\n true\n );\n cff.fdSelect = this.parseFDSelect(\n topDict.getByName(\"FDSelect\"),\n charStringIndex.count\n );\n } else {\n charset = this.parseCharsets(\n topDict.getByName(\"charset\"),\n charStringIndex.count,\n cff.strings,\n false\n );\n encoding = this.parseEncoding(\n topDict.getByName(\"Encoding\"),\n properties,\n cff.strings,\n charset.charset\n );\n }\n\n cff.charset = charset;\n cff.encoding = encoding;\n\n const charStringsAndSeacs = this.parseCharStrings({\n charStrings: charStringIndex,\n localSubrIndex: topDict.privateDict.subrsIndex,\n globalSubrIndex: globalSubrIndex.obj,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n privateDict: topDict.privateDict,\n });\n cff.charStrings = charStringsAndSeacs.charStrings;\n cff.seacs = charStringsAndSeacs.seacs;\n cff.widths = charStringsAndSeacs.widths;\n\n return cff;\n }\n\n parseHeader() {\n let bytes = this.bytes;\n const bytesLength = bytes.length;\n let offset = 0;\n\n // Prevent an infinite loop, by checking that the offset is within the\n // bounds of the bytes array. Necessary in empty, or invalid, font files.\n while (offset < bytesLength && bytes[offset] !== 1) {\n ++offset;\n }\n if (offset >= bytesLength) {\n throw new FormatError(\"Invalid CFF header\");\n }\n if (offset !== 0) {\n info(\"cff data is shifted\");\n bytes = bytes.subarray(offset);\n this.bytes = bytes;\n }\n const major = bytes[0];\n const minor = bytes[1];\n const hdrSize = bytes[2];\n const offSize = bytes[3];\n const header = new CFFHeader(major, minor, hdrSize, offSize);\n return { obj: header, endPos: hdrSize };\n }\n\n parseDict(dict) {\n let pos = 0;\n\n function parseOperand() {\n let value = dict[pos++];\n if (value === 30) {\n return parseFloatOperand();\n } else if (value === 28) {\n value = dict[pos++];\n value = ((value << 24) | (dict[pos++] << 16)) >> 16;\n return value;\n } else if (value === 29) {\n value = dict[pos++];\n value = (value << 8) | dict[pos++];\n value = (value << 8) | dict[pos++];\n value = (value << 8) | dict[pos++];\n return value;\n } else if (value >= 32 && value <= 246) {\n return value - 139;\n } else if (value >= 247 && value <= 250) {\n return (value - 247) * 256 + dict[pos++] + 108;\n } else if (value >= 251 && value <= 254) {\n return -((value - 251) * 256) - dict[pos++] - 108;\n }\n warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n return NaN;\n }\n\n function parseFloatOperand() {\n let str = \"\";\n const eof = 15;\n // prettier-ignore\n const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n const length = dict.length;\n while (pos < length) {\n const b = dict[pos++];\n const b1 = b >> 4;\n const b2 = b & 15;\n\n if (b1 === eof) {\n break;\n }\n str += lookup[b1];\n\n if (b2 === eof) {\n break;\n }\n str += lookup[b2];\n }\n return parseFloat(str);\n }\n\n let operands = [];\n const entries = [];\n\n pos = 0;\n const end = dict.length;\n while (pos < end) {\n let b = dict[pos];\n if (b <= 21) {\n if (b === 12) {\n b = (b << 8) | dict[++pos];\n }\n entries.push([b, operands]);\n operands = [];\n ++pos;\n } else {\n operands.push(parseOperand());\n }\n }\n return entries;\n }\n\n parseIndex(pos) {\n const cffIndex = new CFFIndex();\n const bytes = this.bytes;\n const count = (bytes[pos++] << 8) | bytes[pos++];\n const offsets = [];\n let end = pos;\n let i, ii;\n\n if (count !== 0) {\n const offsetSize = bytes[pos++];\n // add 1 for offset to determine size of last object\n const startPos = pos + (count + 1) * offsetSize - 1;\n\n for (i = 0, ii = count + 1; i < ii; ++i) {\n let offset = 0;\n for (let j = 0; j < offsetSize; ++j) {\n offset <<= 8;\n offset += bytes[pos++];\n }\n offsets.push(startPos + offset);\n }\n end = offsets[count];\n }\n for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n const offsetStart = offsets[i];\n const offsetEnd = offsets[i + 1];\n cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n }\n return { obj: cffIndex, endPos: end };\n }\n\n parseNameIndex(index) {\n const names = [];\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const name = index.get(i);\n names.push(bytesToString(name));\n }\n return names;\n }\n\n parseStringIndex(index) {\n const strings = new CFFStrings();\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const data = index.get(i);\n strings.add(bytesToString(data));\n }\n return strings;\n }\n\n createDict(Type, dict, strings) {\n const cffDict = new Type(strings);\n for (let i = 0, ii = dict.length; i < ii; ++i) {\n const pair = dict[i];\n const key = pair[0];\n const value = pair[1];\n cffDict.setByKey(key, value);\n }\n return cffDict;\n }\n\n parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n if (!data || state.callDepth > MAX_SUBR_NESTING) {\n return false;\n }\n let stackSize = state.stackSize;\n const stack = state.stack;\n\n const length = data.length;\n\n for (let j = 0; j < length; ) {\n const value = data[j++];\n let validationCommand = null;\n if (value === 12) {\n const q = data[j++];\n if (q === 0) {\n // The CFF specification state that the 'dotsection' command\n // (12, 0) is deprecated and treated as a no-op, but all Type2\n // charstrings processors should support them. Unfortunately\n // the font sanitizer don't. As a workaround the sequence (12, 0)\n // is replaced by a useless (0, hmoveto).\n data[j - 2] = 139;\n data[j - 1] = 22;\n stackSize = 0;\n } else {\n validationCommand = CharstringValidationData12[q];\n }\n } else if (value === 28) {\n // number (16 bit)\n stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;\n j += 2;\n stackSize++;\n } else if (value === 14) {\n if (stackSize >= 4) {\n stackSize -= 4;\n if (this.seacAnalysisEnabled) {\n state.seac = stack.slice(stackSize, stackSize + 4);\n return false;\n }\n }\n validationCommand = CharstringValidationData[value];\n } else if (value >= 32 && value <= 246) {\n // number\n stack[stackSize] = value - 139;\n stackSize++;\n } else if (value >= 247 && value <= 254) {\n // number (+1 bytes)\n stack[stackSize] =\n value < 251\n ? ((value - 247) << 8) + data[j] + 108\n : -((value - 251) << 8) - data[j] - 108;\n j++;\n stackSize++;\n } else if (value === 255) {\n // number (32 bit)\n stack[stackSize] =\n ((data[j] << 24) |\n (data[j + 1] << 16) |\n (data[j + 2] << 8) |\n data[j + 3]) /\n 65536;\n j += 4;\n stackSize++;\n } else if (value === 19 || value === 20) {\n state.hints += stackSize >> 1;\n // skipping right amount of hints flag data\n j += (state.hints + 7) >> 3;\n stackSize %= 2;\n validationCommand = CharstringValidationData[value];\n } else if (value === 10 || value === 29) {\n let subrsIndex;\n if (value === 10) {\n subrsIndex = localSubrIndex;\n } else {\n subrsIndex = globalSubrIndex;\n }\n if (!subrsIndex) {\n validationCommand = CharstringValidationData[value];\n warn(\"Missing subrsIndex for \" + validationCommand.id);\n return false;\n }\n let bias = 32768;\n if (subrsIndex.count < 1240) {\n bias = 107;\n } else if (subrsIndex.count < 33900) {\n bias = 1131;\n }\n const subrNumber = stack[--stackSize] + bias;\n if (\n subrNumber < 0 ||\n subrNumber >= subrsIndex.count ||\n isNaN(subrNumber)\n ) {\n validationCommand = CharstringValidationData[value];\n warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n return false;\n }\n state.stackSize = stackSize;\n state.callDepth++;\n const valid = this.parseCharString(\n state,\n subrsIndex.get(subrNumber),\n localSubrIndex,\n globalSubrIndex\n );\n if (!valid) {\n return false;\n }\n state.callDepth--;\n stackSize = state.stackSize;\n continue;\n } else if (value === 11) {\n state.stackSize = stackSize;\n return true;\n } else if (value === 0 && j === data.length) {\n // Operator 0 is not used according to the current spec and\n // it's the last char and consequently it's likely a terminator.\n // So just replace it by endchar command to make OTS happy.\n data[j - 1] = 14;\n validationCommand = CharstringValidationData[14];\n } else {\n validationCommand = CharstringValidationData[value];\n }\n if (validationCommand) {\n if (validationCommand.stem) {\n state.hints += stackSize >> 1;\n if (value === 3 || value === 23) {\n // vstem or vstemhm.\n state.hasVStems = true;\n } else if (state.hasVStems && (value === 1 || value === 18)) {\n // Some browsers don't draw glyphs that specify vstems before\n // hstems. As a workaround, replace hstem (1) and hstemhm (18)\n // with a pointless vstem (3) or vstemhm (23).\n warn(\"CFF stem hints are in wrong order\");\n data[j - 1] = value === 1 ? 3 : 23;\n }\n }\n if (\"min\" in validationCommand) {\n if (!state.undefStack && stackSize < validationCommand.min) {\n warn(\n \"Not enough parameters for \" +\n validationCommand.id +\n \"; actual: \" +\n stackSize +\n \", expected: \" +\n validationCommand.min\n );\n\n if (stackSize === 0) {\n // Just \"fix\" the outline in replacing command by a endchar:\n // it could lead to wrong rendering of some glyphs or not.\n // For example, the pdf in #6132 is well-rendered.\n data[j - 1] = 14;\n return true;\n }\n return false;\n }\n }\n if (state.firstStackClearing && validationCommand.stackClearing) {\n state.firstStackClearing = false;\n // the optional character width can be found before the first\n // stack-clearing command arguments\n stackSize -= validationCommand.min;\n if (stackSize >= 2 && validationCommand.stem) {\n // there are even amount of arguments for stem commands\n stackSize %= 2;\n } else if (stackSize > 1) {\n warn(\"Found too many parameters for stack-clearing command\");\n }\n if (stackSize > 0) {\n // Width can be any number since its the difference\n // from nominalWidthX.\n state.width = stack[stackSize - 1];\n }\n }\n if (\"stackDelta\" in validationCommand) {\n if (\"stackFn\" in validationCommand) {\n validationCommand.stackFn(stack, stackSize);\n }\n stackSize += validationCommand.stackDelta;\n } else if (validationCommand.stackClearing) {\n stackSize = 0;\n } else if (validationCommand.resetStack) {\n stackSize = 0;\n state.undefStack = false;\n } else if (validationCommand.undefStack) {\n stackSize = 0;\n state.undefStack = true;\n state.firstStackClearing = false;\n }\n }\n }\n state.stackSize = stackSize;\n return true;\n }\n\n parseCharStrings({\n charStrings,\n localSubrIndex,\n globalSubrIndex,\n fdSelect,\n fdArray,\n privateDict,\n }) {\n const seacs = [];\n const widths = [];\n const count = charStrings.count;\n for (let i = 0; i < count; i++) {\n const charstring = charStrings.get(i);\n const state = {\n callDepth: 0,\n stackSize: 0,\n stack: [],\n undefStack: true,\n hints: 0,\n firstStackClearing: true,\n seac: null,\n width: null,\n hasVStems: false,\n };\n let valid = true;\n let localSubrToUse = null;\n let privateDictToUse = privateDict;\n if (fdSelect && fdArray.length) {\n const fdIndex = fdSelect.getFDIndex(i);\n if (fdIndex === -1) {\n warn(\"Glyph index is not in fd select.\");\n valid = false;\n }\n if (fdIndex >= fdArray.length) {\n warn(\"Invalid fd index for glyph index.\");\n valid = false;\n }\n if (valid) {\n privateDictToUse = fdArray[fdIndex].privateDict;\n localSubrToUse = privateDictToUse.subrsIndex;\n }\n } else if (localSubrIndex) {\n localSubrToUse = localSubrIndex;\n }\n if (valid) {\n valid = this.parseCharString(\n state,\n charstring,\n localSubrToUse,\n globalSubrIndex\n );\n }\n if (state.width !== null) {\n const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n widths[i] = nominalWidth + state.width;\n } else {\n const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n widths[i] = defaultWidth;\n }\n if (state.seac !== null) {\n seacs[i] = state.seac;\n }\n if (!valid) {\n // resetting invalid charstring to single 'endchar'\n charStrings.set(i, new Uint8Array([14]));\n }\n }\n return { charStrings, seacs, widths };\n }\n\n emptyPrivateDictionary(parentDict) {\n const privateDict = this.createDict(\n CFFPrivateDict,\n [],\n parentDict.strings\n );\n parentDict.setByKey(18, [0, 0]);\n parentDict.privateDict = privateDict;\n }\n\n parsePrivateDict(parentDict) {\n // no private dict, do nothing\n if (!parentDict.hasName(\"Private\")) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const privateOffset = parentDict.getByName(\"Private\");\n // make sure the params are formatted correctly\n if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n parentDict.removeByName(\"Private\");\n return;\n }\n const size = privateOffset[0];\n const offset = privateOffset[1];\n // remove empty dicts or ones that refer to invalid location\n if (size === 0 || offset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n\n const privateDictEnd = offset + size;\n const dictData = this.bytes.subarray(offset, privateDictEnd);\n const dict = this.parseDict(dictData);\n const privateDict = this.createDict(\n CFFPrivateDict,\n dict,\n parentDict.strings\n );\n parentDict.privateDict = privateDict;\n\n // Parse the Subrs index also since it's relative to the private dict.\n if (!privateDict.getByName(\"Subrs\")) {\n return;\n }\n const subrsOffset = privateDict.getByName(\"Subrs\");\n const relativeOffset = offset + subrsOffset;\n // Validate the offset.\n if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const subrsIndex = this.parseIndex(relativeOffset);\n privateDict.subrsIndex = subrsIndex.obj;\n }\n\n parseCharsets(pos, length, strings, cid) {\n if (pos === 0) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.ISO_ADOBE,\n ISOAdobeCharset\n );\n } else if (pos === 1) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.EXPERT,\n ExpertCharset\n );\n } else if (pos === 2) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.EXPERT_SUBSET,\n ExpertSubsetCharset\n );\n }\n\n const bytes = this.bytes;\n const start = pos;\n const format = bytes[pos++];\n const charset = [cid ? 0 : \".notdef\"];\n let id, count, i;\n\n // subtract 1 for the .notdef glyph\n length -= 1;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; i++) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n charset.push(cid ? id : strings.get(id));\n }\n break;\n case 1:\n while (charset.length <= length) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n count = bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n case 2:\n while (charset.length <= length) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n count = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n default:\n throw new FormatError(\"Unknown charset format\");\n }\n // Raw won't be needed if we actually compile the charset.\n const end = pos;\n const raw = bytes.subarray(start, end);\n\n return new CFFCharset(false, format, charset, raw);\n }\n\n parseEncoding(pos, properties, strings, charset) {\n const encoding = Object.create(null);\n const bytes = this.bytes;\n let predefined = false;\n let format, i, ii;\n let raw = null;\n\n function readSupplement() {\n const supplementsCount = bytes[pos++];\n for (i = 0; i < supplementsCount; i++) {\n const code = bytes[pos++];\n const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n encoding[code] = charset.indexOf(strings.get(sid));\n }\n }\n\n if (pos === 0 || pos === 1) {\n predefined = true;\n format = pos;\n const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n for (i = 0, ii = charset.length; i < ii; i++) {\n const index = baseEncoding.indexOf(charset[i]);\n if (index !== -1) {\n encoding[index] = i;\n }\n }\n } else {\n const dataStart = pos;\n format = bytes[pos++];\n switch (format & 0x7f) {\n case 0:\n const glyphsCount = bytes[pos++];\n for (i = 1; i <= glyphsCount; i++) {\n encoding[bytes[pos++]] = i;\n }\n break;\n\n case 1:\n const rangesCount = bytes[pos++];\n let gid = 1;\n for (i = 0; i < rangesCount; i++) {\n const start = bytes[pos++];\n const left = bytes[pos++];\n for (let j = start; j <= start + left; j++) {\n encoding[j] = gid++;\n }\n }\n break;\n\n default:\n throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n }\n const dataEnd = pos;\n if (format & 0x80) {\n // hasSupplement\n // The font sanitizer does not support CFF encoding with a\n // supplement, since the encoding is not really used to map\n // between gid to glyph, let's overwrite what is declared in\n // the top dictionary to let the sanitizer think the font use\n // StandardEncoding, that's a lie but that's ok.\n bytes[dataStart] &= 0x7f;\n readSupplement();\n }\n raw = bytes.subarray(dataStart, dataEnd);\n }\n format &= 0x7f;\n return new CFFEncoding(predefined, format, encoding, raw);\n }\n\n parseFDSelect(pos, length) {\n const bytes = this.bytes;\n const format = bytes[pos++];\n const fdSelect = [];\n let i;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; ++i) {\n const id = bytes[pos++];\n fdSelect.push(id);\n }\n break;\n case 3:\n const rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i < rangesCount; ++i) {\n let first = (bytes[pos++] << 8) | bytes[pos++];\n if (i === 0 && first !== 0) {\n warn(\n \"parseFDSelect: The first range must have a first GID of 0\" +\n \" -- trying to recover.\"\n );\n first = 0;\n }\n const fdIndex = bytes[pos++];\n const next = (bytes[pos] << 8) | bytes[pos + 1];\n for (let j = first; j < next; ++j) {\n fdSelect.push(fdIndex);\n }\n }\n // Advance past the sentinel(next).\n pos += 2;\n break;\n default:\n throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n }\n if (fdSelect.length !== length) {\n throw new FormatError(\"parseFDSelect: Invalid font data.\");\n }\n\n return new CFFFDSelect(format, fdSelect);\n }\n }\n return CFFParser;\n})();\n\n// Compact Font Format\nclass CFF {\n constructor() {\n this.header = null;\n this.names = [];\n this.topDict = null;\n this.strings = new CFFStrings();\n this.globalSubrIndex = null;\n\n // The following could really be per font, but since we only have one font\n // store them here.\n this.encoding = null;\n this.charset = null;\n this.charStrings = null;\n this.fdArray = [];\n this.fdSelect = null;\n\n this.isCIDFont = false;\n }\n\n duplicateFirstGlyph() {\n // Browsers will not display a glyph at position 0. Typically glyph 0 is\n // notdef, but a number of fonts put a valid glyph there so it must be\n // duplicated and appended.\n if (this.charStrings.count >= 65535) {\n warn(\"Not enough space in charstrings to duplicate first glyph.\");\n return;\n }\n const glyphZero = this.charStrings.get(0);\n this.charStrings.add(glyphZero);\n if (this.isCIDFont) {\n this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n }\n }\n\n hasGlyphId(id) {\n if (id < 0 || id >= this.charStrings.count) {\n return false;\n }\n const glyph = this.charStrings.get(id);\n return glyph.length > 0;\n }\n}\n\nclass CFFHeader {\n constructor(major, minor, hdrSize, offSize) {\n this.major = major;\n this.minor = minor;\n this.hdrSize = hdrSize;\n this.offSize = offSize;\n }\n}\n\nclass CFFStrings {\n constructor() {\n this.strings = [];\n }\n\n get(index) {\n if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n return CFFStandardStrings[index];\n }\n if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n }\n return CFFStandardStrings[0];\n }\n\n getSID(str) {\n let index = CFFStandardStrings.indexOf(str);\n if (index !== -1) {\n return index;\n }\n index = this.strings.indexOf(str);\n if (index !== -1) {\n return index + NUM_STANDARD_CFF_STRINGS;\n }\n return -1;\n }\n\n add(value) {\n this.strings.push(value);\n }\n\n get count() {\n return this.strings.length;\n }\n}\n\nclass CFFIndex {\n constructor() {\n this.objects = [];\n this.length = 0;\n }\n\n add(data) {\n this.length += data.length;\n this.objects.push(data);\n }\n\n set(index, data) {\n this.length += data.length - this.objects[index].length;\n this.objects[index] = data;\n }\n\n get(index) {\n return this.objects[index];\n }\n\n get count() {\n return this.objects.length;\n }\n}\n\nclass CFFDict {\n constructor(tables, strings) {\n this.keyToNameMap = tables.keyToNameMap;\n this.nameToKeyMap = tables.nameToKeyMap;\n this.defaults = tables.defaults;\n this.types = tables.types;\n this.opcodes = tables.opcodes;\n this.order = tables.order;\n this.strings = strings;\n this.values = Object.create(null);\n }\n\n // value should always be an array\n setByKey(key, value) {\n if (!(key in this.keyToNameMap)) {\n return false;\n }\n const valueLength = value.length;\n // ignore empty values\n if (valueLength === 0) {\n return true;\n }\n // Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\n for (let i = 0; i < valueLength; i++) {\n if (isNaN(value[i])) {\n warn('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n return true;\n }\n }\n const type = this.types[key];\n // remove the array wrapping these types of values\n if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n value = value[0];\n }\n this.values[key] = value;\n return true;\n }\n\n setByName(name, value) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name \"${name}\"`);\n }\n this.values[this.nameToKeyMap[name]] = value;\n }\n\n hasName(name) {\n return this.nameToKeyMap[name] in this.values;\n }\n\n getByName(name) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name ${name}\"`);\n }\n const key = this.nameToKeyMap[name];\n if (!(key in this.values)) {\n return this.defaults[key];\n }\n return this.values[key];\n }\n\n removeByName(name) {\n delete this.values[this.nameToKeyMap[name]];\n }\n\n static createTables(layout) {\n const tables = {\n keyToNameMap: {},\n nameToKeyMap: {},\n defaults: {},\n types: {},\n opcodes: {},\n order: [],\n };\n for (let i = 0, ii = layout.length; i < ii; ++i) {\n const entry = layout[i];\n const key = Array.isArray(entry[0])\n ? (entry[0][0] << 8) + entry[0][1]\n : entry[0];\n tables.keyToNameMap[key] = entry[1];\n tables.nameToKeyMap[entry[1]] = key;\n tables.types[key] = entry[2];\n tables.defaults[key] = entry[3];\n tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n tables.order.push(key);\n }\n return tables;\n }\n}\n\nconst CFFTopDict = (function CFFTopDictClosure() {\n const layout = [\n [[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null],\n [[12, 20], \"SyntheticBase\", \"num\", null],\n [0, \"version\", \"sid\", null],\n [1, \"Notice\", \"sid\", null],\n [[12, 0], \"Copyright\", \"sid\", null],\n [2, \"FullName\", \"sid\", null],\n [3, \"FamilyName\", \"sid\", null],\n [4, \"Weight\", \"sid\", null],\n [[12, 1], \"isFixedPitch\", \"num\", 0],\n [[12, 2], \"ItalicAngle\", \"num\", 0],\n [[12, 3], \"UnderlinePosition\", \"num\", -100],\n [[12, 4], \"UnderlineThickness\", \"num\", 50],\n [[12, 5], \"PaintType\", \"num\", 0],\n [[12, 6], \"CharstringType\", \"num\", 2],\n // prettier-ignore\n [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"],\n [0.001, 0, 0, 0.001, 0, 0]],\n [13, \"UniqueID\", \"num\", null],\n [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]],\n [[12, 8], \"StrokeWidth\", \"num\", 0],\n [14, \"XUID\", \"array\", null],\n [15, \"charset\", \"offset\", 0],\n [16, \"Encoding\", \"offset\", 0],\n [17, \"CharStrings\", \"offset\", 0],\n [18, \"Private\", [\"offset\", \"offset\"], null],\n [[12, 21], \"PostScript\", \"sid\", null],\n [[12, 22], \"BaseFontName\", \"sid\", null],\n [[12, 23], \"BaseFontBlend\", \"delta\", null],\n [[12, 31], \"CIDFontVersion\", \"num\", 0],\n [[12, 32], \"CIDFontRevision\", \"num\", 0],\n [[12, 33], \"CIDFontType\", \"num\", 0],\n [[12, 34], \"CIDCount\", \"num\", 8720],\n [[12, 35], \"UIDBase\", \"num\", null],\n // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\n // before FDArray.\n [[12, 37], \"FDSelect\", \"offset\", null],\n [[12, 36], \"FDArray\", \"offset\", null],\n [[12, 38], \"FontName\", \"sid\", null],\n ];\n let tables = null;\n\n // eslint-disable-next-line no-shadow\n class CFFTopDict extends CFFDict {\n constructor(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n super(tables, strings);\n this.privateDict = null;\n }\n }\n return CFFTopDict;\n})();\n\nconst CFFPrivateDict = (function CFFPrivateDictClosure() {\n const layout = [\n [6, \"BlueValues\", \"delta\", null],\n [7, \"OtherBlues\", \"delta\", null],\n [8, \"FamilyBlues\", \"delta\", null],\n [9, \"FamilyOtherBlues\", \"delta\", null],\n [[12, 9], \"BlueScale\", \"num\", 0.039625],\n [[12, 10], \"BlueShift\", \"num\", 7],\n [[12, 11], \"BlueFuzz\", \"num\", 1],\n [10, \"StdHW\", \"num\", null],\n [11, \"StdVW\", \"num\", null],\n [[12, 12], \"StemSnapH\", \"delta\", null],\n [[12, 13], \"StemSnapV\", \"delta\", null],\n [[12, 14], \"ForceBold\", \"num\", 0],\n [[12, 17], \"LanguageGroup\", \"num\", 0],\n [[12, 18], \"ExpansionFactor\", \"num\", 0.06],\n [[12, 19], \"initialRandomSeed\", \"num\", 0],\n [20, \"defaultWidthX\", \"num\", 0],\n [21, \"nominalWidthX\", \"num\", 0],\n [19, \"Subrs\", \"offset\", null],\n ];\n let tables = null;\n\n // eslint-disable-next-line no-shadow\n class CFFPrivateDict extends CFFDict {\n constructor(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n super(tables, strings);\n this.subrsIndex = null;\n }\n }\n return CFFPrivateDict;\n})();\n\nconst CFFCharsetPredefinedTypes = {\n ISO_ADOBE: 0,\n EXPERT: 1,\n EXPERT_SUBSET: 2,\n};\n\nclass CFFCharset {\n constructor(predefined, format, charset, raw) {\n this.predefined = predefined;\n this.format = format;\n this.charset = charset;\n this.raw = raw;\n }\n}\n\nclass CFFEncoding {\n constructor(predefined, format, encoding, raw) {\n this.predefined = predefined;\n this.format = format;\n this.encoding = encoding;\n this.raw = raw;\n }\n}\n\nclass CFFFDSelect {\n constructor(format, fdSelect) {\n this.format = format;\n this.fdSelect = fdSelect;\n }\n\n getFDIndex(glyphIndex) {\n if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n return -1;\n }\n return this.fdSelect[glyphIndex];\n }\n}\n\n// Helper class to keep track of where an offset is within the data and helps\n// filling in that offset once it's known.\nclass CFFOffsetTracker {\n constructor() {\n this.offsets = Object.create(null);\n }\n\n isTracking(key) {\n return key in this.offsets;\n }\n\n track(key, location) {\n if (key in this.offsets) {\n throw new FormatError(`Already tracking location of ${key}`);\n }\n this.offsets[key] = location;\n }\n\n offset(value) {\n for (const key in this.offsets) {\n this.offsets[key] += value;\n }\n }\n\n setEntryLocation(key, values, output) {\n if (!(key in this.offsets)) {\n throw new FormatError(`Not tracking location of ${key}`);\n }\n const data = output.data;\n const dataOffset = this.offsets[key];\n const size = 5;\n for (let i = 0, ii = values.length; i < ii; ++i) {\n const offset0 = i * size + dataOffset;\n const offset1 = offset0 + 1;\n const offset2 = offset0 + 2;\n const offset3 = offset0 + 3;\n const offset4 = offset0 + 4;\n // It's easy to screw up offsets so perform this sanity check.\n if (\n data[offset0] !== 0x1d ||\n data[offset1] !== 0 ||\n data[offset2] !== 0 ||\n data[offset3] !== 0 ||\n data[offset4] !== 0\n ) {\n throw new FormatError(\"writing to an offset that is not empty\");\n }\n const value = values[i];\n data[offset0] = 0x1d;\n data[offset1] = (value >> 24) & 0xff;\n data[offset2] = (value >> 16) & 0xff;\n data[offset3] = (value >> 8) & 0xff;\n data[offset4] = value & 0xff;\n }\n }\n}\n\n// Takes a CFF and converts it to the binary representation.\nclass CFFCompiler {\n constructor(cff) {\n this.cff = cff;\n }\n\n compile() {\n const cff = this.cff;\n const output = {\n data: [],\n length: 0,\n add: function CFFCompiler_add(data) {\n this.data = this.data.concat(data);\n this.length = this.data.length;\n },\n };\n\n // Compile the five entries that must be in order.\n const header = this.compileHeader(cff.header);\n output.add(header);\n\n const nameIndex = this.compileNameIndex(cff.names);\n output.add(nameIndex);\n\n if (cff.isCIDFont) {\n // The spec is unclear on how font matrices should relate to each other\n // when there is one in the main top dict and the sub top dicts.\n // Windows handles this differently than linux and osx so we have to\n // normalize to work on all.\n // Rules based off of some mailing list discussions:\n // - If main font has a matrix and subfont doesn't, use the main matrix.\n // - If no main font matrix and there is a subfont matrix, use the\n // subfont matrix.\n // - If both have matrices, concat together.\n // - If neither have matrices, use default.\n // To make this work on all platforms we move the top matrix into each\n // sub top dict and concat if necessary.\n if (cff.topDict.hasName(\"FontMatrix\")) {\n const base = cff.topDict.getByName(\"FontMatrix\");\n cff.topDict.removeByName(\"FontMatrix\");\n for (let i = 0, ii = cff.fdArray.length; i < ii; i++) {\n const subDict = cff.fdArray[i];\n let matrix = base.slice(0);\n if (subDict.hasName(\"FontMatrix\")) {\n matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n }\n subDict.setByName(\"FontMatrix\", matrix);\n }\n }\n }\n\n const xuid = cff.topDict.getByName(\"XUID\");\n if (xuid && xuid.length > 16) {\n // Length of XUID array must not be greater than 16 (issue #12399).\n cff.topDict.removeByName(\"XUID\");\n }\n\n cff.topDict.setByName(\"charset\", 0);\n let compiled = this.compileTopDicts(\n [cff.topDict],\n output.length,\n cff.isCIDFont\n );\n output.add(compiled.output);\n const topDictTracker = compiled.trackers[0];\n\n const stringIndex = this.compileStringIndex(cff.strings.strings);\n output.add(stringIndex);\n\n const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n output.add(globalSubrIndex);\n\n // Now start on the other entries that have no specific order.\n if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n if (cff.encoding.predefined) {\n topDictTracker.setEntryLocation(\n \"Encoding\",\n [cff.encoding.format],\n output\n );\n } else {\n const encoding = this.compileEncoding(cff.encoding);\n topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n output.add(encoding);\n }\n }\n const charset = this.compileCharset(\n cff.charset,\n cff.charStrings.count,\n cff.strings,\n cff.isCIDFont\n );\n topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n output.add(charset);\n\n const charStrings = this.compileCharStrings(cff.charStrings);\n topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n output.add(charStrings);\n\n if (cff.isCIDFont) {\n // For some reason FDSelect must be in front of FDArray on windows. OSX\n // and linux don't seem to care.\n topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n const fdSelect = this.compileFDSelect(cff.fdSelect);\n output.add(fdSelect);\n // It is unclear if the sub font dictionary can have CID related\n // dictionary keys, but the sanitizer doesn't like them so remove them.\n compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n output.add(compiled.output);\n const fontDictTrackers = compiled.trackers;\n\n this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n }\n\n this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n\n // If the font data ends with INDEX whose object data is zero-length,\n // the sanitizer will bail out. Add a dummy byte to avoid that.\n output.add([0]);\n\n return output.data;\n }\n\n encodeNumber(value) {\n if (Number.isInteger(value)) {\n return this.encodeInteger(value);\n }\n return this.encodeFloat(value);\n }\n\n static get EncodeFloatRegExp() {\n return shadow(\n this,\n \"EncodeFloatRegExp\",\n /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/\n );\n }\n\n encodeFloat(num) {\n let value = num.toString();\n\n // Rounding inaccurate doubles.\n const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n if (m) {\n const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(num * epsilon) / epsilon).toString();\n }\n\n let nibbles = \"\";\n let i, ii;\n for (i = 0, ii = value.length; i < ii; ++i) {\n const a = value[i];\n if (a === \"e\") {\n nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n } else if (a === \".\") {\n nibbles += \"a\";\n } else if (a === \"-\") {\n nibbles += \"e\";\n } else {\n nibbles += a;\n }\n }\n nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n const out = [30];\n for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substring(i, i + 2), 16));\n }\n return out;\n }\n\n encodeInteger(value) {\n let code;\n if (value >= -107 && value <= 107) {\n code = [value + 139];\n } else if (value >= 108 && value <= 1131) {\n value -= 108;\n code = [(value >> 8) + 247, value & 0xff];\n } else if (value >= -1131 && value <= -108) {\n value = -value - 108;\n code = [(value >> 8) + 251, value & 0xff];\n } else if (value >= -32768 && value <= 32767) {\n code = [0x1c, (value >> 8) & 0xff, value & 0xff];\n } else {\n code = [\n 0x1d,\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff,\n ];\n }\n return code;\n }\n\n compileHeader(header) {\n // `header.hdrSize` can be any value but we only write 4 values\n // so header size is 4 (prevents OTS from rejecting the font).\n return [header.major, header.minor, 4, header.offSize];\n }\n\n compileNameIndex(names) {\n const nameIndex = new CFFIndex();\n for (let i = 0, ii = names.length; i < ii; ++i) {\n const name = names[i];\n // OTS doesn't allow names to be over 127 characters.\n const length = Math.min(name.length, 127);\n let sanitizedName = new Array(length);\n for (let j = 0; j < length; j++) {\n // OTS requires chars to be between a range and not certain other\n // chars.\n let char = name[j];\n if (\n char < \"!\" ||\n char > \"~\" ||\n char === \"[\" ||\n char === \"]\" ||\n char === \"(\" ||\n char === \")\" ||\n char === \"{\" ||\n char === \"}\" ||\n char === \"<\" ||\n char === \">\" ||\n char === \"/\" ||\n char === \"%\"\n ) {\n char = \"_\";\n }\n sanitizedName[j] = char;\n }\n sanitizedName = sanitizedName.join(\"\");\n\n if (sanitizedName === \"\") {\n sanitizedName = \"Bad_Font_Name\";\n }\n nameIndex.add(stringToBytes(sanitizedName));\n }\n return this.compileIndex(nameIndex);\n }\n\n compileTopDicts(dicts, length, removeCidKeys) {\n const fontDictTrackers = [];\n let fdArrayIndex = new CFFIndex();\n for (let i = 0, ii = dicts.length; i < ii; ++i) {\n const fontDict = dicts[i];\n if (removeCidKeys) {\n fontDict.removeByName(\"CIDFontVersion\");\n fontDict.removeByName(\"CIDFontRevision\");\n fontDict.removeByName(\"CIDFontType\");\n fontDict.removeByName(\"CIDCount\");\n fontDict.removeByName(\"UIDBase\");\n }\n const fontDictTracker = new CFFOffsetTracker();\n const fontDictData = this.compileDict(fontDict, fontDictTracker);\n fontDictTrackers.push(fontDictTracker);\n fdArrayIndex.add(fontDictData);\n fontDictTracker.offset(length);\n }\n fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n return {\n trackers: fontDictTrackers,\n output: fdArrayIndex,\n };\n }\n\n compilePrivateDicts(dicts, trackers, output) {\n for (let i = 0, ii = dicts.length; i < ii; ++i) {\n const fontDict = dicts[i];\n const privateDict = fontDict.privateDict;\n if (!privateDict || !fontDict.hasName(\"Private\")) {\n throw new FormatError(\"There must be a private dictionary.\");\n }\n const privateDictTracker = new CFFOffsetTracker();\n const privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n let outputLength = output.length;\n privateDictTracker.offset(outputLength);\n if (!privateDictData.length) {\n // The private dictionary was empty, set the output length to zero to\n // ensure the offset length isn't out of bounds in the eyes of the\n // sanitizer.\n outputLength = 0;\n }\n\n trackers[i].setEntryLocation(\n \"Private\",\n [privateDictData.length, outputLength],\n output\n );\n output.add(privateDictData);\n\n if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n const subrs = this.compileIndex(privateDict.subrsIndex);\n privateDictTracker.setEntryLocation(\n \"Subrs\",\n [privateDictData.length],\n output\n );\n output.add(subrs);\n }\n }\n }\n\n compileDict(dict, offsetTracker) {\n let out = [];\n // The dictionary keys must be in a certain order.\n const order = dict.order;\n for (let i = 0; i < order.length; ++i) {\n const key = order[i];\n if (!(key in dict.values)) {\n continue;\n }\n let values = dict.values[key];\n let types = dict.types[key];\n if (!Array.isArray(types)) {\n types = [types];\n }\n if (!Array.isArray(values)) {\n values = [values];\n }\n\n // Remove any empty dict values.\n if (values.length === 0) {\n continue;\n }\n\n for (let j = 0, jj = types.length; j < jj; ++j) {\n const type = types[j];\n const value = values[j];\n switch (type) {\n case \"num\":\n case \"sid\":\n out = out.concat(this.encodeNumber(value));\n break;\n case \"offset\":\n // For offsets we just insert a 32bit integer so we don't have to\n // deal with figuring out the length of the offset when it gets\n // replaced later on by the compiler.\n const name = dict.keyToNameMap[key];\n // Some offsets have the offset and the length, so just record the\n // position of the first one.\n if (!offsetTracker.isTracking(name)) {\n offsetTracker.track(name, out.length);\n }\n out = out.concat([0x1d, 0, 0, 0, 0]);\n break;\n case \"array\":\n case \"delta\":\n out = out.concat(this.encodeNumber(value));\n for (let k = 1, kk = values.length; k < kk; ++k) {\n out = out.concat(this.encodeNumber(values[k]));\n }\n break;\n default:\n throw new FormatError(`Unknown data type of ${type}`);\n }\n }\n out = out.concat(dict.opcodes[key]);\n }\n return out;\n }\n\n compileStringIndex(strings) {\n const stringIndex = new CFFIndex();\n for (let i = 0, ii = strings.length; i < ii; ++i) {\n stringIndex.add(stringToBytes(strings[i]));\n }\n return this.compileIndex(stringIndex);\n }\n\n compileGlobalSubrIndex() {\n const globalSubrIndex = this.cff.globalSubrIndex;\n this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n }\n\n compileCharStrings(charStrings) {\n const charStringsIndex = new CFFIndex();\n for (let i = 0; i < charStrings.count; i++) {\n const glyph = charStrings.get(i);\n // If the CharString outline is empty, replace it with .notdef to\n // prevent OTS from rejecting the font (fixes bug1252420.pdf).\n if (glyph.length === 0) {\n charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n continue;\n }\n charStringsIndex.add(glyph);\n }\n return this.compileIndex(charStringsIndex);\n }\n\n compileCharset(charset, numGlyphs, strings, isCIDFont) {\n // Freetype requires the number of charset strings be correct and MacOS\n // requires a valid mapping for printing.\n let out;\n const numGlyphsLessNotDef = numGlyphs - 1;\n if (isCIDFont) {\n // In a CID font, the charset is a mapping of CIDs not SIDs so just\n // create an identity mapping.\n out = new Uint8Array([\n 2, // format\n 0, // first CID upper byte\n 0, // first CID lower byte\n (numGlyphsLessNotDef >> 8) & 0xff,\n numGlyphsLessNotDef & 0xff,\n ]);\n } else {\n const length = 1 + numGlyphsLessNotDef * 2;\n out = new Uint8Array(length);\n out[0] = 0; // format 0\n let charsetIndex = 0;\n const numCharsets = charset.charset.length;\n let warned = false;\n for (let i = 1; i < out.length; i += 2) {\n let sid = 0;\n if (charsetIndex < numCharsets) {\n const name = charset.charset[charsetIndex++];\n sid = strings.getSID(name);\n if (sid === -1) {\n sid = 0;\n if (!warned) {\n warned = true;\n warn(`Couldn't find ${name} in CFF strings`);\n }\n }\n }\n out[i] = (sid >> 8) & 0xff;\n out[i + 1] = sid & 0xff;\n }\n }\n return this.compileTypedArray(out);\n }\n\n compileEncoding(encoding) {\n return this.compileTypedArray(encoding.raw);\n }\n\n compileFDSelect(fdSelect) {\n const format = fdSelect.format;\n let out, i;\n switch (format) {\n case 0:\n out = new Uint8Array(1 + fdSelect.fdSelect.length);\n out[0] = format;\n for (i = 0; i < fdSelect.fdSelect.length; i++) {\n out[i + 1] = fdSelect.fdSelect[i];\n }\n break;\n case 3:\n const start = 0;\n let lastFD = fdSelect.fdSelect[0];\n const ranges = [\n format,\n 0, // nRanges place holder\n 0, // nRanges place holder\n (start >> 8) & 0xff,\n start & 0xff,\n lastFD,\n ];\n for (i = 1; i < fdSelect.fdSelect.length; i++) {\n const currentFD = fdSelect.fdSelect[i];\n if (currentFD !== lastFD) {\n ranges.push((i >> 8) & 0xff, i & 0xff, currentFD);\n lastFD = currentFD;\n }\n }\n // 3 bytes are pushed for every range and there are 3 header bytes.\n const numRanges = (ranges.length - 3) / 3;\n ranges[1] = (numRanges >> 8) & 0xff;\n ranges[2] = numRanges & 0xff;\n // sentinel\n ranges.push((i >> 8) & 0xff, i & 0xff);\n out = new Uint8Array(ranges);\n break;\n }\n return this.compileTypedArray(out);\n }\n\n compileTypedArray(data) {\n const out = [];\n for (let i = 0, ii = data.length; i < ii; ++i) {\n out[i] = data[i];\n }\n return out;\n }\n\n compileIndex(index, trackers = []) {\n const objects = index.objects;\n // First 2 bytes contains the number of objects contained into this index\n const count = objects.length;\n\n // If there is no object, just create an index. This technically\n // should just be [0, 0] but OTS has an issue with that.\n if (count === 0) {\n return [0, 0, 0];\n }\n\n const data = [(count >> 8) & 0xff, count & 0xff];\n\n let lastOffset = 1,\n i;\n for (i = 0; i < count; ++i) {\n lastOffset += objects[i].length;\n }\n\n let offsetSize;\n if (lastOffset < 0x100) {\n offsetSize = 1;\n } else if (lastOffset < 0x10000) {\n offsetSize = 2;\n } else if (lastOffset < 0x1000000) {\n offsetSize = 3;\n } else {\n offsetSize = 4;\n }\n\n // Next byte contains the offset size use to reference object in the file\n data.push(offsetSize);\n\n // Add another offset after this one because we need a new offset\n let relativeOffset = 1;\n for (i = 0; i < count + 1; i++) {\n if (offsetSize === 1) {\n data.push(relativeOffset & 0xff);\n } else if (offsetSize === 2) {\n data.push((relativeOffset >> 8) & 0xff, relativeOffset & 0xff);\n } else if (offsetSize === 3) {\n data.push(\n (relativeOffset >> 16) & 0xff,\n (relativeOffset >> 8) & 0xff,\n relativeOffset & 0xff\n );\n } else {\n data.push(\n (relativeOffset >>> 24) & 0xff,\n (relativeOffset >> 16) & 0xff,\n (relativeOffset >> 8) & 0xff,\n relativeOffset & 0xff\n );\n }\n\n if (objects[i]) {\n relativeOffset += objects[i].length;\n }\n }\n\n for (i = 0; i < count; i++) {\n // Notify the tracker where the object will be offset in the data.\n if (trackers[i]) {\n trackers[i].offset(data.length);\n }\n for (let j = 0, jj = objects[i].length; j < jj; j++) {\n data.push(objects[i][j]);\n }\n }\n return data;\n }\n}\n\nexport {\n CFF,\n CFFCharset,\n CFFCompiler,\n CFFFDSelect,\n CFFHeader,\n CFFIndex,\n CFFParser,\n CFFPrivateDict,\n CFFStandardStrings,\n CFFStrings,\n CFFTopDict,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ISOAdobeCharset = [\n \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\",\n \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\",\n \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\",\n \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\",\n \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\",\n \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\",\n \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\",\n \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\",\n \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\",\n \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\",\n \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\",\n \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\",\n \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\",\n \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\",\n \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\",\n \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\",\n \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\",\n \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\",\n \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\",\n \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\",\n \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\",\n \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\",\n \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\",\n \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\",\n \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\",\n \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"\n];\n\n// prettier-ignore\nconst ExpertCharset = [\n \".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\",\n \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\",\n \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\",\n \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\",\n \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\",\n \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\",\n \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\",\n \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\",\n \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\",\n \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\",\n \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n \"Ydieresissmall\"\n];\n\n// prettier-ignore\nconst ExpertSubsetCharset = [\n \".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\",\n \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\",\n \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\",\n \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\",\n \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\",\n \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\",\n \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\",\n \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\",\n \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n \"periodinferior\", \"commainferior\"\n];\n\nexport { ExpertCharset, ExpertSubsetCharset, ISOAdobeCharset };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\n/**\n * Hold a map of decoded fonts and of the standard fourteen Type1\n * fonts and their acronyms.\n */\nconst getStdFontMap = getLookupTableFactory(function (t) {\n // The standard 14 fonts:\n t[\"Times-Roman\"] = \"Times-Roman\";\n t.Helvetica = \"Helvetica\";\n t.Courier = \"Courier\";\n t.Symbol = \"Symbol\";\n t[\"Times-Bold\"] = \"Times-Bold\";\n t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n t[\"Courier-Bold\"] = \"Courier-Bold\";\n t.ZapfDingbats = \"ZapfDingbats\";\n t[\"Times-Italic\"] = \"Times-Italic\";\n t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n t[\"Courier-Oblique\"] = \"Courier-Oblique\";\n t[\"Times-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n t[\"Courier-BoldOblique\"] = \"Courier-BoldOblique\";\n\n // Extra mappings\n t.ArialNarrow = \"Helvetica\";\n t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n t.ArialBlack = \"Helvetica\";\n t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-Black\"] = \"Helvetica\";\n t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n t.Arial = \"Helvetica\";\n t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n t.ArialMT = \"Helvetica\";\n t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"Courier-Italic\"] = \"Courier-Oblique\";\n t.CourierNew = \"Courier\";\n t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n t.CourierNewPSMT = \"Courier\";\n t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n t[\"Symbol-Bold\"] = \"Symbol\";\n t[\"Symbol-BoldItalic\"] = \"Symbol\";\n t[\"Symbol-Italic\"] = \"Symbol\";\n t.TimesNewRoman = \"Times-Roman\";\n t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n t.TimesNewRomanPS = \"Times-Roman\";\n t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n t.TimesNewRomanPSMT = \"Times-Roman\";\n t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\n\n// Contains mapping for standard fonts and xfa fonts.\nconst getFontNameToFileMap = getLookupTableFactory(function (t) {\n t.Courier = \"FoxitFixed.pfb\";\n t[\"Courier-Bold\"] = \"FoxitFixedBold.pfb\";\n t[\"Courier-BoldOblique\"] = \"FoxitFixedBoldItalic.pfb\";\n t[\"Courier-Oblique\"] = \"FoxitFixedItalic.pfb\";\n t.Helvetica = \"FoxitSans.pfb\";\n t[\"Helvetica-Bold\"] = \"FoxitSansBold.pfb\";\n t[\"Helvetica-BoldOblique\"] = \"FoxitSansBoldItalic.pfb\";\n t[\"Helvetica-Oblique\"] = \"FoxitSansItalic.pfb\";\n t[\"Times-Roman\"] = \"FoxitSerif.pfb\";\n t[\"Times-Bold\"] = \"FoxitSerifBold.pfb\";\n t[\"Times-BoldItalic\"] = \"FoxitSerifBoldItalic.pfb\";\n t[\"Times-Italic\"] = \"FoxitSerifItalic.pfb\";\n t.Symbol = \"FoxitSymbol.pfb\";\n t.ZapfDingbats = \"FoxitDingbats.pfb\";\n t[\"LiberationSans-Regular\"] = \"LiberationSans-Regular.ttf\";\n t[\"LiberationSans-Bold\"] = \"LiberationSans-Bold.ttf\";\n t[\"LiberationSans-Italic\"] = \"LiberationSans-Italic.ttf\";\n t[\"LiberationSans-BoldItalic\"] = \"LiberationSans-BoldItalic.ttf\";\n});\n\n/**\n * Holds the map of the non-standard fonts that might be included as\n * a standard fonts without glyph data.\n */\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\n t.Calibri = \"Helvetica\";\n t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n t.CenturyGothic = \"Helvetica\";\n t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n t.ComicSansMS = \"Comic Sans MS\";\n t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n t[\"ItcSymbol-Bold\"] = \"Helvetica-Bold\";\n t[\"ItcSymbol-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ItcSymbol-Book\"] = \"Helvetica\";\n t[\"ItcSymbol-BookItalic\"] = \"Helvetica-Oblique\";\n t[\"ItcSymbol-Medium\"] = \"Helvetica\";\n t[\"ItcSymbol-MediumItalic\"] = \"Helvetica-Oblique\";\n t.LucidaConsole = \"Courier\";\n t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n t[\"MS-Gothic\"] = \"MS Gothic\";\n t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n t[\"MS-Mincho\"] = \"MS Mincho\";\n t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n t[\"MS-PGothic\"] = \"MS PGothic\";\n t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n t[\"MS-PMincho\"] = \"MS PMincho\";\n t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n t.NuptialScript = \"Times-Italic\";\n t.SegoeUISymbol = \"Helvetica\";\n t.Wingdings = \"ZapfDingbats\";\n t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\n\nconst getSerifFonts = getLookupTableFactory(function (t) {\n t[\"Adobe Jenson\"] = true;\n t[\"Adobe Text\"] = true;\n t.Albertus = true;\n t.Aldus = true;\n t.Alexandria = true;\n t.Algerian = true;\n t[\"American Typewriter\"] = true;\n t.Antiqua = true;\n t.Apex = true;\n t.Arno = true;\n t.Aster = true;\n t.Aurora = true;\n t.Baskerville = true;\n t.Bell = true;\n t.Bembo = true;\n t[\"Bembo Schoolbook\"] = true;\n t.Benguiat = true;\n t[\"Berkeley Old Style\"] = true;\n t[\"Bernhard Modern\"] = true;\n t[\"Berthold City\"] = true;\n t.Bodoni = true;\n t[\"Bauer Bodoni\"] = true;\n t[\"Book Antiqua\"] = true;\n t.Bookman = true;\n t[\"Bordeaux Roman\"] = true;\n t[\"Californian FB\"] = true;\n t.Calisto = true;\n t.Calvert = true;\n t.Capitals = true;\n t.Cambria = true;\n t.Cartier = true;\n t.Caslon = true;\n t.Catull = true;\n t.Centaur = true;\n t[\"Century Old Style\"] = true;\n t[\"Century Schoolbook\"] = true;\n t.Chaparral = true;\n t[\"Charis SIL\"] = true;\n t.Cheltenham = true;\n t[\"Cholla Slab\"] = true;\n t.Clarendon = true;\n t.Clearface = true;\n t.Cochin = true;\n t.Colonna = true;\n t[\"Computer Modern\"] = true;\n t[\"Concrete Roman\"] = true;\n t.Constantia = true;\n t[\"Cooper Black\"] = true;\n t.Corona = true;\n t.Ecotype = true;\n t.Egyptienne = true;\n t.Elephant = true;\n t.Excelsior = true;\n t.Fairfield = true;\n t[\"FF Scala\"] = true;\n t.Folkard = true;\n t.Footlight = true;\n t.FreeSerif = true;\n t[\"Friz Quadrata\"] = true;\n t.Garamond = true;\n t.Gentium = true;\n t.Georgia = true;\n t.Gloucester = true;\n t[\"Goudy Old Style\"] = true;\n t[\"Goudy Schoolbook\"] = true;\n t[\"Goudy Pro Font\"] = true;\n t.Granjon = true;\n t[\"Guardian Egyptian\"] = true;\n t.Heather = true;\n t.Hercules = true;\n t[\"High Tower Text\"] = true;\n t.Hiroshige = true;\n t[\"Hoefler Text\"] = true;\n t[\"Humana Serif\"] = true;\n t.Imprint = true;\n t[\"Ionic No. 5\"] = true;\n t.Janson = true;\n t.Joanna = true;\n t.Korinna = true;\n t.Lexicon = true;\n t.LiberationSerif = true;\n t[\"Liberation Serif\"] = true;\n t[\"Linux Libertine\"] = true;\n t.Literaturnaya = true;\n t.Lucida = true;\n t[\"Lucida Bright\"] = true;\n t.Melior = true;\n t.Memphis = true;\n t.Miller = true;\n t.Minion = true;\n t.Modern = true;\n t[\"Mona Lisa\"] = true;\n t[\"Mrs Eaves\"] = true;\n t[\"MS Serif\"] = true;\n t[\"Museo Slab\"] = true;\n t[\"New York\"] = true;\n t[\"Nimbus Roman\"] = true;\n t[\"NPS Rawlinson Roadway\"] = true;\n t.NuptialScript = true;\n t.Palatino = true;\n t.Perpetua = true;\n t.Plantin = true;\n t[\"Plantin Schoolbook\"] = true;\n t.Playbill = true;\n t[\"Poor Richard\"] = true;\n t[\"Rawlinson Roadway\"] = true;\n t.Renault = true;\n t.Requiem = true;\n t.Rockwell = true;\n t.Roman = true;\n t[\"Rotis Serif\"] = true;\n t.Sabon = true;\n t.Scala = true;\n t.Seagull = true;\n t.Sistina = true;\n t.Souvenir = true;\n t.STIX = true;\n t[\"Stone Informal\"] = true;\n t[\"Stone Serif\"] = true;\n t.Sylfaen = true;\n t.Times = true;\n t.Trajan = true;\n t[\"Trinité\"] = true;\n t[\"Trump Mediaeval\"] = true;\n t.Utopia = true;\n t[\"Vale Type\"] = true;\n t[\"Bitstream Vera\"] = true;\n t[\"Vera Serif\"] = true;\n t.Versailles = true;\n t.Wanted = true;\n t.Weiss = true;\n t[\"Wide Latin\"] = true;\n t.Windsor = true;\n t.XITS = true;\n});\n\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n t.Dingbats = true;\n t.Symbol = true;\n t.ZapfDingbats = true;\n});\n\n// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\n// fonts, but does not embed the CID to GID mapping. The mapping is incomplete\n// for all glyphs, but common for some set of the standard fonts.\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n t[2] = 10;\n t[3] = 32;\n t[4] = 33;\n t[5] = 34;\n t[6] = 35;\n t[7] = 36;\n t[8] = 37;\n t[9] = 38;\n t[10] = 39;\n t[11] = 40;\n t[12] = 41;\n t[13] = 42;\n t[14] = 43;\n t[15] = 44;\n t[16] = 45;\n t[17] = 46;\n t[18] = 47;\n t[19] = 48;\n t[20] = 49;\n t[21] = 50;\n t[22] = 51;\n t[23] = 52;\n t[24] = 53;\n t[25] = 54;\n t[26] = 55;\n t[27] = 56;\n t[28] = 57;\n t[29] = 58;\n t[30] = 894;\n t[31] = 60;\n t[32] = 61;\n t[33] = 62;\n t[34] = 63;\n t[35] = 64;\n t[36] = 65;\n t[37] = 66;\n t[38] = 67;\n t[39] = 68;\n t[40] = 69;\n t[41] = 70;\n t[42] = 71;\n t[43] = 72;\n t[44] = 73;\n t[45] = 74;\n t[46] = 75;\n t[47] = 76;\n t[48] = 77;\n t[49] = 78;\n t[50] = 79;\n t[51] = 80;\n t[52] = 81;\n t[53] = 82;\n t[54] = 83;\n t[55] = 84;\n t[56] = 85;\n t[57] = 86;\n t[58] = 87;\n t[59] = 88;\n t[60] = 89;\n t[61] = 90;\n t[62] = 91;\n t[63] = 92;\n t[64] = 93;\n t[65] = 94;\n t[66] = 95;\n t[67] = 96;\n t[68] = 97;\n t[69] = 98;\n t[70] = 99;\n t[71] = 100;\n t[72] = 101;\n t[73] = 102;\n t[74] = 103;\n t[75] = 104;\n t[76] = 105;\n t[77] = 106;\n t[78] = 107;\n t[79] = 108;\n t[80] = 109;\n t[81] = 110;\n t[82] = 111;\n t[83] = 112;\n t[84] = 113;\n t[85] = 114;\n t[86] = 115;\n t[87] = 116;\n t[88] = 117;\n t[89] = 118;\n t[90] = 119;\n t[91] = 120;\n t[92] = 121;\n t[93] = 122;\n t[94] = 123;\n t[95] = 124;\n t[96] = 125;\n t[97] = 126;\n t[98] = 196;\n t[99] = 197;\n t[100] = 199;\n t[101] = 201;\n t[102] = 209;\n t[103] = 214;\n t[104] = 220;\n t[105] = 225;\n t[106] = 224;\n t[107] = 226;\n t[108] = 228;\n t[109] = 227;\n t[110] = 229;\n t[111] = 231;\n t[112] = 233;\n t[113] = 232;\n t[114] = 234;\n t[115] = 235;\n t[116] = 237;\n t[117] = 236;\n t[118] = 238;\n t[119] = 239;\n t[120] = 241;\n t[121] = 243;\n t[122] = 242;\n t[123] = 244;\n t[124] = 246;\n t[125] = 245;\n t[126] = 250;\n t[127] = 249;\n t[128] = 251;\n t[129] = 252;\n t[130] = 8224;\n t[131] = 176;\n t[132] = 162;\n t[133] = 163;\n t[134] = 167;\n t[135] = 8226;\n t[136] = 182;\n t[137] = 223;\n t[138] = 174;\n t[139] = 169;\n t[140] = 8482;\n t[141] = 180;\n t[142] = 168;\n t[143] = 8800;\n t[144] = 198;\n t[145] = 216;\n t[146] = 8734;\n t[147] = 177;\n t[148] = 8804;\n t[149] = 8805;\n t[150] = 165;\n t[151] = 181;\n t[152] = 8706;\n t[153] = 8721;\n t[154] = 8719;\n t[156] = 8747;\n t[157] = 170;\n t[158] = 186;\n t[159] = 8486;\n t[160] = 230;\n t[161] = 248;\n t[162] = 191;\n t[163] = 161;\n t[164] = 172;\n t[165] = 8730;\n t[166] = 402;\n t[167] = 8776;\n t[168] = 8710;\n t[169] = 171;\n t[170] = 187;\n t[171] = 8230;\n t[200] = 193;\n t[203] = 205;\n t[210] = 218;\n t[223] = 711;\n t[224] = 321;\n t[225] = 322;\n t[226] = 352;\n t[227] = 353;\n t[228] = 381;\n t[229] = 382;\n t[233] = 221;\n t[234] = 253;\n t[252] = 263;\n t[253] = 268;\n t[254] = 269;\n t[258] = 258;\n t[260] = 260;\n t[261] = 261;\n t[265] = 280;\n t[266] = 281;\n t[267] = 282;\n t[268] = 283;\n t[269] = 313;\n t[275] = 323;\n t[276] = 324;\n t[278] = 328;\n t[283] = 344;\n t[284] = 345;\n t[285] = 346;\n t[286] = 347;\n t[292] = 367;\n t[295] = 377;\n t[296] = 378;\n t[298] = 380;\n t[305] = 963;\n t[306] = 964;\n t[307] = 966;\n t[308] = 8215;\n t[309] = 8252;\n t[310] = 8319;\n t[311] = 8359;\n t[312] = 8592;\n t[313] = 8593;\n t[337] = 9552;\n t[493] = 1039;\n t[494] = 1040;\n t[705] = 1524;\n t[706] = 8362;\n t[710] = 64288;\n t[711] = 64298;\n t[759] = 1617;\n t[761] = 1776;\n t[763] = 1778;\n t[775] = 1652;\n t[777] = 1764;\n t[778] = 1780;\n t[779] = 1781;\n t[780] = 1782;\n t[782] = 771;\n t[783] = 64726;\n t[786] = 8363;\n t[788] = 8532;\n t[790] = 768;\n t[791] = 769;\n t[792] = 768;\n t[795] = 803;\n t[797] = 64336;\n t[798] = 64337;\n t[799] = 64342;\n t[800] = 64343;\n t[801] = 64344;\n t[802] = 64345;\n t[803] = 64362;\n t[804] = 64363;\n t[805] = 64364;\n t[2424] = 7821;\n t[2425] = 7822;\n t[2426] = 7823;\n t[2427] = 7824;\n t[2428] = 7825;\n t[2429] = 7826;\n t[2430] = 7827;\n t[2433] = 7682;\n t[2678] = 8045;\n t[2679] = 8046;\n t[2830] = 1552;\n t[2838] = 686;\n t[2840] = 751;\n t[2842] = 753;\n t[2843] = 754;\n t[2844] = 755;\n t[2846] = 757;\n t[2856] = 767;\n t[2857] = 848;\n t[2858] = 849;\n t[2862] = 853;\n t[2863] = 854;\n t[2864] = 855;\n t[2865] = 861;\n t[2866] = 862;\n t[2906] = 7460;\n t[2908] = 7462;\n t[2909] = 7463;\n t[2910] = 7464;\n t[2912] = 7466;\n t[2913] = 7467;\n t[2914] = 7468;\n t[2916] = 7470;\n t[2917] = 7471;\n t[2918] = 7472;\n t[2920] = 7474;\n t[2921] = 7475;\n t[2922] = 7476;\n t[2924] = 7478;\n t[2925] = 7479;\n t[2926] = 7480;\n t[2928] = 7482;\n t[2929] = 7483;\n t[2930] = 7484;\n t[2932] = 7486;\n t[2933] = 7487;\n t[2934] = 7488;\n t[2936] = 7490;\n t[2937] = 7491;\n t[2938] = 7492;\n t[2940] = 7494;\n t[2941] = 7495;\n t[2942] = 7496;\n t[2944] = 7498;\n t[2946] = 7500;\n t[2948] = 7502;\n t[2950] = 7504;\n t[2951] = 7505;\n t[2952] = 7506;\n t[2954] = 7508;\n t[2955] = 7509;\n t[2956] = 7510;\n t[2958] = 7512;\n t[2959] = 7513;\n t[2960] = 7514;\n t[2962] = 7516;\n t[2963] = 7517;\n t[2964] = 7518;\n t[2966] = 7520;\n t[2967] = 7521;\n t[2968] = 7522;\n t[2970] = 7524;\n t[2971] = 7525;\n t[2972] = 7526;\n t[2974] = 7528;\n t[2975] = 7529;\n t[2976] = 7530;\n t[2978] = 1537;\n t[2979] = 1538;\n t[2980] = 1539;\n t[2982] = 1549;\n t[2983] = 1551;\n t[2984] = 1552;\n t[2986] = 1554;\n t[2987] = 1555;\n t[2988] = 1556;\n t[2990] = 1623;\n t[2991] = 1624;\n t[2995] = 1775;\n t[2999] = 1791;\n t[3002] = 64290;\n t[3003] = 64291;\n t[3004] = 64292;\n t[3006] = 64294;\n t[3007] = 64295;\n t[3008] = 64296;\n t[3011] = 1900;\n t[3014] = 8223;\n t[3015] = 8244;\n t[3017] = 7532;\n t[3018] = 7533;\n t[3019] = 7534;\n t[3075] = 7590;\n t[3076] = 7591;\n t[3079] = 7594;\n t[3080] = 7595;\n t[3083] = 7598;\n t[3084] = 7599;\n t[3087] = 7602;\n t[3088] = 7603;\n t[3091] = 7606;\n t[3092] = 7607;\n t[3095] = 7610;\n t[3096] = 7611;\n t[3099] = 7614;\n t[3100] = 7615;\n t[3103] = 7618;\n t[3104] = 7619;\n t[3107] = 8337;\n t[3108] = 8338;\n t[3116] = 1884;\n t[3119] = 1885;\n t[3120] = 1885;\n t[3123] = 1886;\n t[3124] = 1886;\n t[3127] = 1887;\n t[3128] = 1887;\n t[3131] = 1888;\n t[3132] = 1888;\n t[3135] = 1889;\n t[3136] = 1889;\n t[3139] = 1890;\n t[3140] = 1890;\n t[3143] = 1891;\n t[3144] = 1891;\n t[3147] = 1892;\n t[3148] = 1892;\n t[3153] = 580;\n t[3154] = 581;\n t[3157] = 584;\n t[3158] = 585;\n t[3161] = 588;\n t[3162] = 589;\n t[3165] = 891;\n t[3166] = 892;\n t[3169] = 1274;\n t[3170] = 1275;\n t[3173] = 1278;\n t[3174] = 1279;\n t[3181] = 7622;\n t[3182] = 7623;\n t[3282] = 11799;\n t[3316] = 578;\n t[3379] = 42785;\n t[3393] = 1159;\n t[3416] = 8377;\n});\n\n// The glyph map for ArialBlack differs slightly from the glyph map used for\n// other well-known standard fonts. Hence we use this (incomplete) CID to GID\n// mapping to adjust the glyph map for non-embedded ArialBlack fonts.\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (\n t\n) {\n t[227] = 322;\n t[264] = 261;\n t[291] = 346;\n});\n\n// The glyph map for Calibri (a Windows font) differs from the glyph map used\n// in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\n// adjust the glyph map for non-embedded Calibri fonts.\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n t[1] = 32;\n t[4] = 65;\n t[6] = 193;\n t[17] = 66;\n t[18] = 67;\n t[21] = 268;\n t[24] = 68;\n t[28] = 69;\n t[30] = 201;\n t[32] = 282;\n t[38] = 70;\n t[39] = 71;\n t[44] = 72;\n t[47] = 73;\n t[49] = 205;\n t[58] = 74;\n t[60] = 75;\n t[62] = 76;\n t[68] = 77;\n t[69] = 78;\n t[75] = 79;\n t[87] = 80;\n t[89] = 81;\n t[90] = 82;\n t[92] = 344;\n t[94] = 83;\n t[97] = 352;\n t[100] = 84;\n t[104] = 85;\n t[115] = 86;\n t[116] = 87;\n t[121] = 88;\n t[122] = 89;\n t[124] = 221;\n t[127] = 90;\n t[129] = 381;\n t[258] = 97;\n t[260] = 225;\n t[268] = 261;\n t[271] = 98;\n t[272] = 99;\n t[273] = 263;\n t[275] = 269;\n t[282] = 100;\n t[286] = 101;\n t[288] = 233;\n t[290] = 283;\n t[295] = 281;\n t[296] = 102;\n t[336] = 103;\n t[346] = 104;\n t[349] = 105;\n t[351] = 237;\n t[361] = 106;\n t[364] = 107;\n t[367] = 108;\n t[371] = 322;\n t[373] = 109;\n t[374] = 110;\n t[381] = 111;\n t[383] = 243;\n t[393] = 112;\n t[395] = 113;\n t[396] = 114;\n t[398] = 345;\n t[400] = 115;\n t[401] = 347;\n t[403] = 353;\n t[410] = 116;\n t[437] = 117;\n t[448] = 118;\n t[449] = 119;\n t[454] = 120;\n t[455] = 121;\n t[457] = 253;\n t[460] = 122;\n t[462] = 382;\n t[463] = 380;\n t[853] = 44;\n t[855] = 58;\n t[856] = 46;\n t[876] = 47;\n t[878] = 45;\n t[882] = 45;\n t[894] = 40;\n t[895] = 41;\n t[896] = 91;\n t[897] = 93;\n t[923] = 64;\n t[1004] = 48;\n t[1005] = 49;\n t[1006] = 50;\n t[1007] = 51;\n t[1008] = 52;\n t[1009] = 53;\n t[1010] = 54;\n t[1011] = 55;\n t[1012] = 56;\n t[1013] = 57;\n t[1081] = 37;\n t[1085] = 43;\n t[1086] = 45;\n});\n\nfunction getStandardFontName(name) {\n const fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap();\n return stdFontMap[fontName];\n}\n\nexport {\n getFontNameToFileMap,\n getGlyphMapForStandardFonts,\n getNonStdFontMap,\n getSerifFonts,\n getStandardFontName,\n getStdFontMap,\n getSupplementalGlyphMapForArialBlack,\n getSupplementalGlyphMapForCalibri,\n getSymbolsFonts,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { unreachable } from \"../shared/util.js\";\n\nclass ToUnicodeMap {\n constructor(cmap = []) {\n // The elements of this._map can be integers or strings, depending on how\n // `cmap` was created.\n this._map = cmap;\n }\n\n get length() {\n return this._map.length;\n }\n\n forEach(callback) {\n for (const charCode in this._map) {\n callback(charCode, this._map[charCode].charCodeAt(0));\n }\n }\n\n has(i) {\n return this._map[i] !== undefined;\n }\n\n get(i) {\n return this._map[i];\n }\n\n charCodeOf(value) {\n // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n // are both very sparse and very large (see issue8372.pdf).\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n\n amend(map) {\n for (const charCode in map) {\n this._map[charCode] = map[charCode];\n }\n }\n}\n\nclass IdentityToUnicodeMap {\n constructor(firstChar, lastChar) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n }\n\n get length() {\n return this.lastChar + 1 - this.firstChar;\n }\n\n forEach(callback) {\n for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n callback(i, i);\n }\n }\n\n has(i) {\n return this.firstChar <= i && i <= this.lastChar;\n }\n\n get(i) {\n if (this.firstChar <= i && i <= this.lastChar) {\n return String.fromCharCode(i);\n }\n return undefined;\n }\n\n charCodeOf(v) {\n return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar\n ? v\n : -1;\n }\n\n amend(map) {\n unreachable(\"Should not call amend()\");\n }\n}\n\nexport { IdentityToUnicodeMap, ToUnicodeMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nclass CFFFont {\n constructor(file, properties) {\n this.properties = properties;\n\n const parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n this.cff = parser.parse();\n this.cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(this.cff);\n this.seacs = this.cff.seacs;\n try {\n this.data = compiler.compile();\n } catch (e) {\n warn(\"Failed to compile font \" + properties.loadedName);\n // There may have just been an issue with the compiler, set the data\n // anyway and hope the font loaded.\n this.data = file;\n }\n this._createBuiltInEncoding();\n }\n\n get numGlyphs() {\n return this.cff.charStrings.count;\n }\n\n getCharset() {\n return this.cff.charset.charset;\n }\n\n getGlyphMapping() {\n const cff = this.cff;\n const properties = this.properties;\n const charsets = cff.charset.charset;\n let charCodeToGlyphId;\n let glyphId;\n\n if (properties.composite) {\n charCodeToGlyphId = Object.create(null);\n let charCode;\n if (cff.isCIDFont) {\n // If the font is actually a CID font then we should use the charset\n // to map CIDs to GIDs.\n for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n const cid = charsets[glyphId];\n charCode = properties.cMap.charCodeOf(cid);\n charCodeToGlyphId[charCode] = glyphId;\n }\n } else {\n // If it is NOT actually a CID font then CIDs should be mapped\n // directly to GIDs.\n for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n charCode = properties.cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId;\n }\n }\n return charCodeToGlyphId;\n }\n\n let encoding = cff.encoding ? cff.encoding.encoding : null;\n if (properties.isInternalFont) {\n encoding = properties.defaultEncoding;\n }\n charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n return charCodeToGlyphId;\n }\n\n hasGlyphId(id) {\n return this.cff.hasGlyphId(id);\n }\n\n /**\n * @private\n */\n _createBuiltInEncoding() {\n const { charset, encoding } = this.cff;\n if (!charset || !encoding) {\n return;\n }\n const charsets = charset.charset,\n encodings = encoding.encoding;\n const map = [];\n\n for (const charCode in encodings) {\n const glyphId = encodings[charCode];\n if (glyphId >= 0) {\n const glyphName = charsets[glyphId];\n if (glyphName) {\n map[charCode] = glyphName;\n }\n }\n }\n if (map.length > 0) {\n this.properties.builtInEncoding = map;\n }\n }\n}\n\nexport { CFFFont };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FONT_IDENTITY_MATRIX,\n FormatError,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { CFFParser } from \"./cff_parser.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { StandardEncoding } from \"./encodings.js\";\nimport { Stream } from \"./stream.js\";\n\nfunction getLong(data, offset) {\n return (\n (data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]\n );\n}\n\nfunction getUshort(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction getSubroutineBias(subrs) {\n const numSubrs = subrs.length;\n let bias = 32768;\n if (numSubrs < 1240) {\n bias = 107;\n } else if (numSubrs < 33900) {\n bias = 1131;\n }\n return bias;\n}\n\nfunction parseCmap(data, start, end) {\n const offset =\n getUshort(data, start + 2) === 1\n ? getLong(data, start + 8)\n : getLong(data, start + 16);\n const format = getUshort(data, start + offset);\n let ranges, p, i;\n if (format === 4) {\n getUshort(data, start + offset + 2); // length\n const segCount = getUshort(data, start + offset + 6) >> 1;\n p = start + offset + 14;\n ranges = [];\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i] = { end: getUshort(data, p) };\n }\n p += 2;\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].start = getUshort(data, p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].idDelta = getUshort(data, p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n let idOffset = getUshort(data, p);\n if (idOffset === 0) {\n continue;\n }\n ranges[i].ids = [];\n for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n ranges[i].ids[j] = getUshort(data, p + idOffset);\n idOffset += 2;\n }\n }\n return ranges;\n } else if (format === 12) {\n getLong(data, start + offset + 4); // length\n const groups = getLong(data, start + offset + 12);\n p = start + offset + 16;\n ranges = [];\n for (i = 0; i < groups; i++) {\n ranges.push({\n start: getLong(data, p),\n end: getLong(data, p + 4),\n idDelta: getLong(data, p + 8) - getLong(data, p),\n });\n p += 12;\n }\n return ranges;\n }\n throw new FormatError(`unsupported cmap: ${format}`);\n}\n\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\n const properties = {};\n const parser = new CFFParser(\n new Stream(data, start, end - start),\n properties,\n seacAnalysisEnabled\n );\n const cff = parser.parse();\n return {\n glyphs: cff.charStrings.objects,\n subrs:\n cff.topDict.privateDict &&\n cff.topDict.privateDict.subrsIndex &&\n cff.topDict.privateDict.subrsIndex.objects,\n gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n isCFFCIDFont: cff.isCIDFont,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n };\n}\n\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n let itemSize, itemDecode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = function fontItemDecodeLong(data, offset) {\n return (\n (data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]\n );\n };\n } else {\n itemSize = 2;\n itemDecode = function fontItemDecode(data, offset) {\n return (data[offset] << 9) | (data[offset + 1] << 1);\n };\n }\n const glyphs = [];\n let startOffset = itemDecode(loca, 0);\n for (let j = itemSize; j < loca.length; j += itemSize) {\n const endOffset = itemDecode(loca, j);\n glyphs.push(glyf.subarray(startOffset, endOffset));\n startOffset = endOffset;\n }\n return glyphs;\n}\n\nfunction lookupCmap(ranges, unicode) {\n const code = unicode.codePointAt(0);\n let gid = 0,\n l = 0,\n r = ranges.length - 1;\n while (l < r) {\n const c = (l + r + 1) >> 1;\n if (code < ranges[c].start) {\n r = c - 1;\n } else {\n l = c;\n }\n }\n if (ranges[l].start <= code && code <= ranges[l].end) {\n gid =\n (ranges[l].idDelta +\n (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code)) &\n 0xffff;\n }\n return {\n charCode: code,\n glyphId: gid,\n };\n}\n\nfunction compileGlyf(code, cmds, font) {\n function moveTo(x, y) {\n cmds.push({ cmd: \"moveTo\", args: [x, y] });\n }\n function lineTo(x, y) {\n cmds.push({ cmd: \"lineTo\", args: [x, y] });\n }\n function quadraticCurveTo(xa, ya, x, y) {\n cmds.push({ cmd: \"quadraticCurveTo\", args: [xa, ya, x, y] });\n }\n\n let i = 0;\n const numberOfContours = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n let flags;\n let x = 0,\n y = 0;\n i += 10;\n if (numberOfContours < 0) {\n // composite glyph\n do {\n flags = (code[i] << 8) | code[i + 1];\n const glyphIndex = (code[i + 2] << 8) | code[i + 3];\n i += 4;\n let arg1, arg2;\n if (flags & 0x01) {\n arg1 = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n arg2 = ((code[i + 2] << 24) | (code[i + 3] << 16)) >> 16;\n i += 4;\n } else {\n arg1 = code[i++];\n arg2 = code[i++];\n }\n if (flags & 0x02) {\n x = arg1;\n y = arg2;\n } else {\n x = 0;\n y = 0; // TODO \"they are points\" ?\n }\n let scaleX = 1,\n scaleY = 1,\n scale01 = 0,\n scale10 = 0;\n if (flags & 0x08) {\n scaleX = scaleY = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n i += 2;\n } else if (flags & 0x40) {\n scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n scaleY = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n i += 4;\n } else if (flags & 0x80) {\n scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n scale01 = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n scale10 = ((code[i + 4] << 24) | (code[i + 5] << 16)) / 1073741824;\n scaleY = ((code[i + 6] << 24) | (code[i + 7] << 16)) / 1073741824;\n i += 8;\n }\n const subglyph = font.glyphs[glyphIndex];\n if (subglyph) {\n cmds.push(\n { cmd: \"save\" },\n {\n cmd: \"transform\",\n args: [scaleX, scale01, scale10, scaleY, x, y],\n }\n );\n compileGlyf(subglyph, cmds, font);\n cmds.push({ cmd: \"restore\" });\n }\n } while (flags & 0x20);\n } else {\n // simple glyph\n const endPtsOfContours = [];\n let j, jj;\n for (j = 0; j < numberOfContours; j++) {\n endPtsOfContours.push((code[i] << 8) | code[i + 1]);\n i += 2;\n }\n const instructionLength = (code[i] << 8) | code[i + 1];\n i += 2 + instructionLength; // skipping the instructions\n const numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n const points = [];\n while (points.length < numberOfPoints) {\n flags = code[i++];\n let repeat = 1;\n if (flags & 0x08) {\n repeat += code[i++];\n }\n while (repeat-- > 0) {\n points.push({ flags });\n }\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x12) {\n case 0x00:\n x += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n i += 2;\n break;\n case 0x02:\n x -= code[i++];\n break;\n case 0x12:\n x += code[i++];\n break;\n }\n points[j].x = x;\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x24) {\n case 0x00:\n y += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n i += 2;\n break;\n case 0x04:\n y -= code[i++];\n break;\n case 0x24:\n y += code[i++];\n break;\n }\n points[j].y = y;\n }\n\n let startPoint = 0;\n for (i = 0; i < numberOfContours; i++) {\n const endPoint = endPtsOfContours[i];\n // contours might have implicit points, which is located in the middle\n // between two neighboring off-curve points\n const contour = points.slice(startPoint, endPoint + 1);\n if (contour[0].flags & 1) {\n contour.push(contour[0]); // using start point at the contour end\n } else if (contour[contour.length - 1].flags & 1) {\n // first is off-curve point, trying to use one from the end\n contour.unshift(contour[contour.length - 1]);\n } else {\n // start and end are off-curve points, creating implicit one\n const p = {\n flags: 1,\n x: (contour[0].x + contour[contour.length - 1].x) / 2,\n y: (contour[0].y + contour[contour.length - 1].y) / 2,\n };\n contour.unshift(p);\n contour.push(p);\n }\n moveTo(contour[0].x, contour[0].y);\n for (j = 1, jj = contour.length; j < jj; j++) {\n if (contour[j].flags & 1) {\n lineTo(contour[j].x, contour[j].y);\n } else if (contour[j + 1].flags & 1) {\n quadraticCurveTo(\n contour[j].x,\n contour[j].y,\n contour[j + 1].x,\n contour[j + 1].y\n );\n j++;\n } else {\n quadraticCurveTo(\n contour[j].x,\n contour[j].y,\n (contour[j].x + contour[j + 1].x) / 2,\n (contour[j].y + contour[j + 1].y) / 2\n );\n }\n }\n startPoint = endPoint + 1;\n }\n }\n}\n\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\n function moveTo(x, y) {\n cmds.push({ cmd: \"moveTo\", args: [x, y] });\n }\n function lineTo(x, y) {\n cmds.push({ cmd: \"lineTo\", args: [x, y] });\n }\n function bezierCurveTo(x1, y1, x2, y2, x, y) {\n cmds.push({ cmd: \"bezierCurveTo\", args: [x1, y1, x2, y2, x, y] });\n }\n\n const stack = [];\n let x = 0,\n y = 0;\n let stems = 0;\n\n function parse(code) {\n let i = 0;\n while (i < code.length) {\n let stackClean = false;\n let v = code[i++];\n let xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n switch (v) {\n case 1: // hstem\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 3: // vstem\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 4: // vmoveto\n y += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 5: // rlineto\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 6: // hlineto\n while (stack.length > 0) {\n x += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 7: // vlineto\n while (stack.length > 0) {\n y += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n x += stack.shift();\n lineTo(x, y);\n }\n break;\n case 8: // rrcurveto\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 10: // callsubr\n n = stack.pop();\n subrCode = null;\n if (font.isCFFCIDFont) {\n const fdIndex = font.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n const fontDict = font.fdArray[fdIndex];\n let subrs;\n if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n subrs = fontDict.privateDict.subrsIndex.objects;\n }\n if (subrs) {\n // Add subroutine bias.\n n += getSubroutineBias(subrs);\n subrCode = subrs[n];\n }\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n } else {\n subrCode = font.subrs[n + font.subrsBias];\n }\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 11: // return\n return;\n case 12:\n v = code[i++];\n switch (v) {\n case 34: // flex\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y1 = y + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y, xb, y1, x, y1);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y, x, y);\n break;\n case 35: // flex\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n stack.pop(); // fd\n break;\n case 36: // hflex1\n xa = x + stack.shift();\n y1 = y + stack.shift();\n xb = xa + stack.shift();\n y2 = y1 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y2, x, y2);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y3 = y2 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y2, xb, y3, x, y);\n break;\n case 37: // flex1\n const x0 = x,\n y0 = y;\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb;\n if (Math.abs(x - x0) > Math.abs(y - y0)) {\n x += stack.shift();\n } else {\n y += stack.shift();\n }\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n default:\n throw new FormatError(`unknown operator: 12 ${v}`);\n }\n break;\n case 14: // endchar\n if (stack.length >= 4) {\n const achar = stack.pop();\n const bchar = stack.pop();\n y = stack.pop();\n x = stack.pop();\n cmds.push({ cmd: \"save\" }, { cmd: \"translate\", args: [x, y] });\n let cmap = lookupCmap(\n font.cmap,\n String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])\n );\n compileCharString(\n font.glyphs[cmap.glyphId],\n cmds,\n font,\n cmap.glyphId\n );\n cmds.push({ cmd: \"restore\" });\n\n cmap = lookupCmap(\n font.cmap,\n String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])\n );\n compileCharString(\n font.glyphs[cmap.glyphId],\n cmds,\n font,\n cmap.glyphId\n );\n }\n return;\n case 18: // hstemhm\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 19: // hintmask\n stems += stack.length >> 1;\n i += (stems + 7) >> 3;\n stackClean = true;\n break;\n case 20: // cntrmask\n stems += stack.length >> 1;\n i += (stems + 7) >> 3;\n stackClean = true;\n break;\n case 21: // rmoveto\n y += stack.pop();\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 22: // hmoveto\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 23: // vstemhm\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 24: // rcurveline\n while (stack.length > 2) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n break;\n case 25: // rlinecurve\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n case 26: // vvcurveto\n if (stack.length % 2) {\n x += stack.shift();\n }\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 27: // hhcurveto\n if (stack.length % 2) {\n y += stack.shift();\n }\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb;\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 28:\n stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);\n i += 2;\n break;\n case 29: // callgsubr\n n = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[n];\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 30: // vhcurveto\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 31: // hvcurveto\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n default:\n if (v < 32) {\n throw new FormatError(`unknown operator: ${v}`);\n }\n if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n stack.push((v - 247) * 256 + code[i++] + 108);\n } else if (v < 255) {\n stack.push(-(v - 251) * 256 - code[i++] - 108);\n } else {\n stack.push(\n ((code[i] << 24) |\n (code[i + 1] << 16) |\n (code[i + 2] << 8) |\n code[i + 3]) /\n 65536\n );\n i += 4;\n }\n break;\n }\n if (stackClean) {\n stack.length = 0;\n }\n }\n }\n parse(charStringCode);\n}\n\nconst NOOP = [];\n\nclass CompiledFont {\n constructor(fontMatrix) {\n if (this.constructor === CompiledFont) {\n unreachable(\"Cannot initialize CompiledFont.\");\n }\n this.fontMatrix = fontMatrix;\n\n this.compiledGlyphs = Object.create(null);\n this.compiledCharCodeToGlyphId = Object.create(null);\n }\n\n getPathJs(unicode) {\n const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n let fn = this.compiledGlyphs[glyphId];\n if (!fn) {\n try {\n fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\n this.compiledGlyphs[glyphId] = fn;\n } catch (ex) {\n // Avoid attempting to re-compile a corrupt glyph.\n this.compiledGlyphs[glyphId] = NOOP;\n\n if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n this.compiledCharCodeToGlyphId[charCode] = glyphId;\n }\n throw ex;\n }\n }\n if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n this.compiledCharCodeToGlyphId[charCode] = glyphId;\n }\n return fn;\n }\n\n compileGlyph(code, glyphId) {\n if (!code || code.length === 0 || code[0] === 14) {\n return NOOP;\n }\n\n let fontMatrix = this.fontMatrix;\n if (this.isCFFCIDFont) {\n // Top DICT's FontMatrix can be ignored because CFFCompiler always\n // removes it and copies to FDArray DICTs.\n const fdIndex = this.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n const fontDict = this.fdArray[fdIndex];\n fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n }\n\n const cmds = [\n { cmd: \"save\" },\n { cmd: \"transform\", args: fontMatrix.slice() },\n { cmd: \"scale\", args: [\"size\", \"-size\"] },\n ];\n this.compileGlyphImpl(code, cmds, glyphId);\n\n cmds.push({ cmd: \"restore\" });\n\n return cmds;\n }\n\n compileGlyphImpl() {\n unreachable(\"Children classes should implement this.\");\n }\n\n hasBuiltPath(unicode) {\n const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n return (\n this.compiledGlyphs[glyphId] !== undefined &&\n this.compiledCharCodeToGlyphId[charCode] !== undefined\n );\n }\n}\n\nclass TrueTypeCompiled extends CompiledFont {\n constructor(glyphs, cmap, fontMatrix) {\n super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n\n this.glyphs = glyphs;\n this.cmap = cmap;\n }\n\n compileGlyphImpl(code, cmds) {\n compileGlyf(code, cmds, this);\n }\n}\n\nclass Type2Compiled extends CompiledFont {\n constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n\n this.glyphs = cffInfo.glyphs;\n this.gsubrs = cffInfo.gsubrs || [];\n this.subrs = cffInfo.subrs || [];\n this.cmap = cmap;\n this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n\n this.gsubrsBias = getSubroutineBias(this.gsubrs);\n this.subrsBias = getSubroutineBias(this.subrs);\n\n this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n this.fdSelect = cffInfo.fdSelect;\n this.fdArray = cffInfo.fdArray;\n }\n\n compileGlyphImpl(code, cmds, glyphId) {\n compileCharString(code, cmds, this, glyphId);\n }\n}\n\nclass FontRendererFactory {\n static create(font, seacAnalysisEnabled) {\n const data = new Uint8Array(font.data);\n let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n const numTables = getUshort(data, 4);\n for (let i = 0, p = 12; i < numTables; i++, p += 16) {\n const tag = bytesToString(data.subarray(p, p + 4));\n const offset = getLong(data, p + 8);\n const length = getLong(data, p + 12);\n switch (tag) {\n case \"cmap\":\n cmap = parseCmap(data, offset, offset + length);\n break;\n case \"glyf\":\n glyf = data.subarray(offset, offset + length);\n break;\n case \"loca\":\n loca = data.subarray(offset, offset + length);\n break;\n case \"head\":\n unitsPerEm = getUshort(data, offset + 18);\n indexToLocFormat = getUshort(data, offset + 50);\n break;\n case \"CFF \":\n cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n break;\n }\n }\n\n if (glyf) {\n const fontMatrix = !unitsPerEm\n ? font.fontMatrix\n : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n return new TrueTypeCompiled(\n parseGlyfTable(glyf, loca, indexToLocFormat),\n cmap,\n fontMatrix\n );\n }\n return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n }\n}\n\nexport { FontRendererFactory };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst ON_CURVE_POINT = 1 << 0;\nconst X_SHORT_VECTOR = 1 << 1;\nconst Y_SHORT_VECTOR = 1 << 2;\nconst REPEAT_FLAG = 1 << 3;\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4;\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5;\nconst OVERLAP_SIMPLE = 1 << 6;\n\nconst ARG_1_AND_2_ARE_WORDS = 1 << 0;\nconst ARGS_ARE_XY_VALUES = 1 << 1;\n// const ROUND_XY_TO_GRID = 1 << 2;\nconst WE_HAVE_A_SCALE = 1 << 3;\nconst MORE_COMPONENTS = 1 << 5;\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nconst WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nconst WE_HAVE_INSTRUCTIONS = 1 << 8;\n// const USE_MY_METRICS = 1 << 9;\n// const OVERLAP_COMPOUND = 1 << 10;\n// const SCALED_COMPONENT_OFFSET = 1 << 11;\n// const UNSCALED_COMPONENT_OFFSET = 1 << 12;\n\n/**\n * GlyfTable object represents a glyf table containing glyph information:\n * - glyph header (xMin, yMin, xMax, yMax);\n * - contours if any;\n * - components if the glyph is a composite.\n *\n * It's possible to re-scale each glyph in order to have a new font which\n * exactly fits an other one: the goal is to be able to build some substitution\n * font for well-known fonts (Myriad, Arial, ...).\n *\n * A full description of glyf table can be found here\n * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html\n */\nclass GlyfTable {\n constructor({ glyfTable, isGlyphLocationsLong, locaTable, numGlyphs }) {\n this.glyphs = [];\n const loca = new DataView(\n locaTable.buffer,\n locaTable.byteOffset,\n locaTable.byteLength\n );\n const glyf = new DataView(\n glyfTable.buffer,\n glyfTable.byteOffset,\n glyfTable.byteLength\n );\n const offsetSize = isGlyphLocationsLong ? 4 : 2;\n let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\n let pos = 0;\n for (let i = 0; i < numGlyphs; i++) {\n pos += offsetSize;\n const next = isGlyphLocationsLong\n ? loca.getUint32(pos)\n : 2 * loca.getUint16(pos);\n if (next === prev) {\n this.glyphs.push(new Glyph({}));\n continue;\n }\n\n const glyph = Glyph.parse(prev, glyf);\n this.glyphs.push(glyph);\n\n prev = next;\n }\n }\n\n getSize() {\n return this.glyphs.reduce((a, g) => {\n const size = g.getSize();\n // Round to next multiple of 4 if needed.\n return a + ((size + 3) & ~3);\n }, 0);\n }\n\n write() {\n const totalSize = this.getSize();\n const glyfTable = new DataView(new ArrayBuffer(totalSize));\n const isLocationLong = totalSize > /* 0xffff * 2 */ 0x1fffe;\n const offsetSize = isLocationLong ? 4 : 2;\n const locaTable = new DataView(\n new ArrayBuffer((this.glyphs.length + 1) * offsetSize)\n );\n\n if (isLocationLong) {\n locaTable.setUint32(0, 0);\n } else {\n locaTable.setUint16(0, 0);\n }\n\n let pos = 0;\n let locaIndex = 0;\n for (const glyph of this.glyphs) {\n pos += glyph.write(pos, glyfTable);\n // Round to next multiple of 4 if needed.\n pos = (pos + 3) & ~3;\n\n locaIndex += offsetSize;\n if (isLocationLong) {\n locaTable.setUint32(locaIndex, pos);\n } else {\n locaTable.setUint16(locaIndex, pos >> 1);\n }\n }\n\n return {\n isLocationLong,\n loca: new Uint8Array(locaTable.buffer),\n glyf: new Uint8Array(glyfTable.buffer),\n };\n }\n\n scale(factors) {\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n this.glyphs[i].scale(factors[i]);\n }\n }\n}\n\nclass Glyph {\n constructor({ header = null, simple = null, composites = null }) {\n this.header = header;\n this.simple = simple;\n this.composites = composites;\n }\n\n static parse(pos, glyf) {\n const [read, header] = GlyphHeader.parse(pos, glyf);\n pos += read;\n\n if (header.numberOfContours < 0) {\n // Composite glyph.\n const composites = [];\n while (true) {\n const [n, composite] = CompositeGlyph.parse(pos, glyf);\n pos += n;\n composites.push(composite);\n if (!(composite.flags & MORE_COMPONENTS)) {\n break;\n }\n }\n\n return new Glyph({ header, composites });\n }\n\n const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\n\n return new Glyph({ header, simple });\n }\n\n getSize() {\n if (!this.header) {\n return 0;\n }\n const size = this.simple\n ? this.simple.getSize()\n : this.composites.reduce((a, c) => a + c.getSize(), 0);\n return this.header.getSize() + size;\n }\n\n write(pos, buf) {\n if (!this.header) {\n return 0;\n }\n\n const spos = pos;\n pos += this.header.write(pos, buf);\n if (this.simple) {\n pos += this.simple.write(pos, buf);\n } else {\n for (const composite of this.composites) {\n pos += composite.write(pos, buf);\n }\n }\n\n return pos - spos;\n }\n\n scale(factor) {\n if (!this.header) {\n return;\n }\n\n const xMiddle = (this.header.xMin + this.header.xMax) / 2;\n this.header.scale(xMiddle, factor);\n if (this.simple) {\n this.simple.scale(xMiddle, factor);\n } else {\n for (const composite of this.composites) {\n composite.scale(xMiddle, factor);\n }\n }\n }\n}\n\nclass GlyphHeader {\n constructor({ numberOfContours, xMin, yMin, xMax, yMax }) {\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n }\n\n static parse(pos, glyf) {\n return [\n 10,\n new GlyphHeader({\n numberOfContours: glyf.getInt16(pos),\n xMin: glyf.getInt16(pos + 2),\n yMin: glyf.getInt16(pos + 4),\n xMax: glyf.getInt16(pos + 6),\n yMax: glyf.getInt16(pos + 8),\n }),\n ];\n }\n\n getSize() {\n return 10;\n }\n\n write(pos, buf) {\n buf.setInt16(pos, this.numberOfContours);\n buf.setInt16(pos + 2, this.xMin);\n buf.setInt16(pos + 4, this.yMin);\n buf.setInt16(pos + 6, this.xMax);\n buf.setInt16(pos + 8, this.yMax);\n\n return 10;\n }\n\n scale(x, factor) {\n this.xMin = Math.round(x + (this.xMin - x) * factor);\n this.xMax = Math.round(x + (this.xMax - x) * factor);\n }\n}\n\nclass Contour {\n constructor({ flags, xCoordinates, yCoordinates }) {\n this.xCoordinates = xCoordinates;\n this.yCoordinates = yCoordinates;\n this.flags = flags;\n }\n}\n\nclass SimpleGlyph {\n constructor({ contours, instructions }) {\n this.contours = contours;\n this.instructions = instructions;\n }\n\n static parse(pos, glyf, numberOfContours) {\n const endPtsOfContours = [];\n for (let i = 0; i < numberOfContours; i++) {\n const endPt = glyf.getUint16(pos);\n pos += 2;\n endPtsOfContours.push(endPt);\n }\n const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n const instructions = new Uint8Array(glyf).slice(\n pos,\n pos + instructionLength\n );\n pos += instructionLength;\n\n const flags = [];\n for (let i = 0; i < numberOfPt; pos++, i++) {\n let flag = glyf.getUint8(pos);\n flags.push(flag);\n if (flag & REPEAT_FLAG) {\n const count = glyf.getUint8(++pos);\n flag ^= REPEAT_FLAG;\n for (let m = 0; m < count; m++) {\n flags.push(flag);\n }\n i += count;\n }\n }\n\n const allXCoordinates = [];\n let xCoordinates = [];\n let yCoordinates = [];\n let pointFlags = [];\n const contours = [];\n let endPtsOfContoursIndex = 0;\n let lastCoordinate = 0;\n\n // Get x coordinates.\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n // 8-bits unsigned value.\n const x = glyf.getUint8(pos++);\n lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\n xCoordinates.push(lastCoordinate);\n } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\n // IS_SAME.\n xCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n xCoordinates.push(lastCoordinate);\n }\n\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n // Next entry is the first one of a new contour.\n endPtsOfContoursIndex++;\n allXCoordinates.push(xCoordinates);\n xCoordinates = [];\n }\n }\n\n lastCoordinate = 0;\n endPtsOfContoursIndex = 0;\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n // 8-bits unsigned value.\n const y = glyf.getUint8(pos++);\n lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\n yCoordinates.push(lastCoordinate);\n } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\n // IS_SAME.\n yCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n yCoordinates.push(lastCoordinate);\n }\n\n pointFlags.push((flag & ON_CURVE_POINT) | (flag & OVERLAP_SIMPLE));\n\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n // Next entry is the first one of a new contour.\n xCoordinates = allXCoordinates[endPtsOfContoursIndex];\n endPtsOfContoursIndex++;\n contours.push(\n new Contour({\n flags: pointFlags,\n xCoordinates,\n yCoordinates,\n })\n );\n yCoordinates = [];\n pointFlags = [];\n }\n }\n\n return new SimpleGlyph({\n contours,\n instructions,\n });\n }\n\n getSize() {\n let size = this.contours.length * 2 + 2 + this.instructions.length;\n let lastX = 0;\n let lastY = 0;\n for (const contour of this.contours) {\n size += contour.flags.length;\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n const x = contour.xCoordinates[i];\n const y = contour.yCoordinates[i];\n let abs = Math.abs(x - lastX);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastX = x;\n\n abs = Math.abs(y - lastY);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastY = y;\n }\n }\n return size;\n }\n\n write(pos, buf) {\n const spos = pos;\n const xCoordinates = [];\n const yCoordinates = [];\n const flags = [];\n let lastX = 0;\n let lastY = 0;\n\n for (const contour of this.contours) {\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n let flag = contour.flags[i];\n const x = contour.xCoordinates[i];\n let delta = x - lastX;\n if (delta === 0) {\n flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\n xCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |=\n delta >= 0\n ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR\n : X_SHORT_VECTOR;\n xCoordinates.push(abs);\n } else {\n xCoordinates.push(delta);\n }\n }\n lastX = x;\n\n const y = contour.yCoordinates[i];\n delta = y - lastY;\n if (delta === 0) {\n flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\n yCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |=\n delta >= 0\n ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR\n : Y_SHORT_VECTOR;\n yCoordinates.push(abs);\n } else {\n yCoordinates.push(delta);\n }\n }\n lastY = y;\n\n flags.push(flag);\n }\n\n // Write endPtsOfContours entry.\n buf.setUint16(pos, xCoordinates.length - 1);\n pos += 2;\n }\n\n // Write instructionLength.\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n if (this.instructions.length) {\n // Write instructions.\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n this.instructions,\n pos\n );\n pos += this.instructions.length;\n }\n\n // Write flags.\n for (const flag of flags) {\n buf.setUint8(pos++, flag);\n }\n\n // Write xCoordinates.\n for (let i = 0, ii = xCoordinates.length; i < ii; i++) {\n const x = xCoordinates[i];\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n buf.setUint8(pos++, x);\n } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\n buf.setInt16(pos, x);\n pos += 2;\n }\n }\n\n // Write yCoordinates.\n for (let i = 0, ii = yCoordinates.length; i < ii; i++) {\n const y = yCoordinates[i];\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n buf.setUint8(pos++, y);\n } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\n buf.setInt16(pos, y);\n pos += 2;\n }\n }\n\n return pos - spos;\n }\n\n scale(x, factor) {\n for (const contour of this.contours) {\n if (contour.xCoordinates.length === 0) {\n continue;\n }\n\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n contour.xCoordinates[i] = Math.round(\n x + (contour.xCoordinates[i] - x) * factor\n );\n }\n }\n }\n}\n\nclass CompositeGlyph {\n constructor({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions,\n }) {\n this.flags = flags;\n this.glyphIndex = glyphIndex;\n this.argument1 = argument1;\n this.argument2 = argument2;\n this.transf = transf;\n this.instructions = instructions;\n }\n\n static parse(pos, glyf) {\n const spos = pos;\n const transf = [];\n let flags = glyf.getUint16(pos);\n const glyphIndex = glyf.getUint16(pos + 2);\n pos += 4;\n\n let argument1, argument2;\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt16(pos);\n argument2 = glyf.getInt16(pos + 2);\n } else {\n argument1 = glyf.getUint16(pos);\n argument2 = glyf.getUint16(pos + 2);\n }\n pos += 4;\n flags ^= ARG_1_AND_2_ARE_WORDS;\n } else {\n argument1 = glyf.getUint8(pos);\n argument2 = glyf.getUint8(pos + 1);\n if (flags & ARGS_ARE_XY_VALUES) {\n const abs1 = argument1 & 0x7f;\n argument1 = argument1 & 0x80 ? -abs1 : abs1;\n\n const abs2 = argument2 & 0x7f;\n argument2 = argument2 & 0x80 ? -abs2 : abs2;\n }\n pos += 2;\n }\n\n if (flags & WE_HAVE_A_SCALE) {\n // Single F2.14.\n transf.push(glyf.getUint16(pos));\n pos += 2;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n // Two F2.14.\n transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\n pos += 4;\n } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n // Four F2.14.\n transf.push(\n glyf.getUint16(pos),\n glyf.getUint16(pos + 2),\n glyf.getUint16(pos + 4),\n glyf.getUint16(pos + 6)\n );\n pos += 8;\n }\n\n let instructions = null;\n if (flags & WE_HAVE_INSTRUCTIONS) {\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n pos += instructionLength;\n }\n\n return [\n pos - spos,\n new CompositeGlyph({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions,\n }),\n ];\n }\n\n getSize() {\n let size = 2 + 2 + this.transf.length * 2;\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n size += 2 + this.instructions.length;\n }\n\n size += 2;\n if (this.flags & 2) {\n // Arguments are signed.\n if (\n !(\n this.argument1 >= -128 &&\n this.argument1 <= 127 &&\n this.argument2 >= -128 &&\n this.argument2 <= 127\n )\n ) {\n size += 2;\n }\n } else {\n if (\n !(\n this.argument1 >= 0 &&\n this.argument1 <= 255 &&\n this.argument2 >= 0 &&\n this.argument2 <= 255\n )\n ) {\n size += 2;\n }\n }\n\n return size;\n }\n\n write(pos, buf) {\n const spos = pos;\n\n if (this.flags & ARGS_ARE_XY_VALUES) {\n // Arguments are signed.\n if (\n !(\n this.argument1 >= -128 &&\n this.argument1 <= 127 &&\n this.argument2 >= -128 &&\n this.argument2 <= 127\n )\n ) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n } else {\n if (\n !(\n this.argument1 >= 0 &&\n this.argument1 <= 255 &&\n this.argument2 >= 0 &&\n this.argument2 <= 255\n )\n ) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n }\n\n buf.setUint16(pos, this.flags);\n buf.setUint16(pos + 2, this.glyphIndex);\n pos += 4;\n\n if (this.flags & ARG_1_AND_2_ARE_WORDS) {\n if (this.flags & ARGS_ARE_XY_VALUES) {\n buf.setInt16(pos, this.argument1);\n buf.setInt16(pos + 2, this.argument2);\n } else {\n buf.setUint16(pos, this.argument1);\n buf.setUint16(pos + 2, this.argument2);\n }\n pos += 4;\n } else {\n buf.setUint8(pos, this.argument1);\n buf.setUint8(pos + 1, this.argument2);\n pos += 2;\n }\n\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n // Write instructions.\n if (this.instructions.length) {\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n this.instructions,\n pos\n );\n pos += this.instructions.length;\n }\n }\n\n return pos - spos;\n }\n\n scale(x, factor) {}\n}\n\nexport { GlyfTable };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { readUint32 } from \"./core_utils.js\";\nimport { string32 } from \"../shared/util.js\";\n\nfunction writeInt16(dest, offset, num) {\n dest[offset] = (num >> 8) & 0xff;\n dest[offset + 1] = num & 0xff;\n}\n\nfunction writeInt32(dest, offset, num) {\n dest[offset] = (num >> 24) & 0xff;\n dest[offset + 1] = (num >> 16) & 0xff;\n dest[offset + 2] = (num >> 8) & 0xff;\n dest[offset + 3] = num & 0xff;\n}\n\nfunction writeData(dest, offset, data) {\n if (data instanceof Uint8Array) {\n dest.set(data, offset);\n } else if (typeof data === \"string\") {\n for (let i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data.charCodeAt(i) & 0xff;\n }\n } else {\n // treating everything else as array\n for (let i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data[i] & 0xff;\n }\n }\n}\n\nconst OTF_HEADER_SIZE = 12;\nconst OTF_TABLE_ENTRY_SIZE = 16;\n\nclass OpenTypeFileBuilder {\n constructor(sfnt) {\n this.sfnt = sfnt;\n this.tables = Object.create(null);\n }\n\n static getSearchParams(entriesCount, entrySize) {\n let maxPower2 = 1,\n log2 = 0;\n while ((maxPower2 ^ entriesCount) > maxPower2) {\n maxPower2 <<= 1;\n log2++;\n }\n const searchRange = maxPower2 * entrySize;\n return {\n range: searchRange,\n entry: log2,\n rangeShift: entrySize * entriesCount - searchRange,\n };\n }\n\n toArray() {\n let sfnt = this.sfnt;\n\n // Tables needs to be written by ascendant alphabetic order\n const tables = this.tables;\n const tablesNames = Object.keys(tables);\n tablesNames.sort();\n const numTables = tablesNames.length;\n\n let i, j, jj, table, tableName;\n // layout the tables data\n let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n const tableOffsets = [offset];\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n const paddedLength = ((table.length + 3) & ~3) >>> 0;\n offset += paddedLength;\n tableOffsets.push(offset);\n }\n\n const file = new Uint8Array(offset);\n // write the table data first (mostly for checksum)\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n writeData(file, tableOffsets[i], table);\n }\n\n // sfnt version (4 bytes)\n if (sfnt === \"true\") {\n // Windows hates the Mac TrueType sfnt version number\n sfnt = string32(0x00010000);\n }\n file[0] = sfnt.charCodeAt(0) & 0xff;\n file[1] = sfnt.charCodeAt(1) & 0xff;\n file[2] = sfnt.charCodeAt(2) & 0xff;\n file[3] = sfnt.charCodeAt(3) & 0xff;\n\n // numTables (2 bytes)\n writeInt16(file, 4, numTables);\n\n const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n\n // searchRange (2 bytes)\n writeInt16(file, 6, searchParams.range);\n // entrySelector (2 bytes)\n writeInt16(file, 8, searchParams.entry);\n // rangeShift (2 bytes)\n writeInt16(file, 10, searchParams.rangeShift);\n\n offset = OTF_HEADER_SIZE;\n // writing table entries\n for (i = 0; i < numTables; i++) {\n tableName = tablesNames[i];\n file[offset] = tableName.charCodeAt(0) & 0xff;\n file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n\n // checksum\n let checksum = 0;\n for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n const quad = readUint32(file, j);\n checksum = (checksum + quad) >>> 0;\n }\n writeInt32(file, offset + 4, checksum);\n\n // offset\n writeInt32(file, offset + 8, tableOffsets[i]);\n // length\n writeInt32(file, offset + 12, tables[tableName].length);\n\n offset += OTF_TABLE_ENTRY_SIZE;\n }\n return file;\n }\n\n addTable(tag, data) {\n if (tag in this.tables) {\n throw new Error(\"Table \" + tag + \" already exists\");\n }\n this.tables[tag] = data;\n }\n}\n\nexport { OpenTypeFileBuilder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CFF,\n CFFCharset,\n CFFCompiler,\n CFFHeader,\n CFFIndex,\n CFFPrivateDict,\n CFFStandardStrings,\n CFFStrings,\n CFFTopDict,\n} from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Parser } from \"./type1_parser.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction findBlock(streamBytes, signature, startIndex) {\n const streamBytesLength = streamBytes.length;\n const signatureLength = signature.length;\n const scanLength = streamBytesLength - signatureLength;\n\n let i = startIndex,\n found = false;\n while (i < scanLength) {\n let j = 0;\n while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found, skip over whitespace.\n i += j;\n while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n i++;\n }\n found = true;\n break;\n }\n i++;\n }\n return {\n found,\n length: i,\n };\n}\n\nfunction getHeaderBlock(stream, suggestedLength) {\n const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n const streamStartPos = stream.pos; // Save the initial stream position.\n let headerBytes, headerBytesLength, block;\n try {\n headerBytes = stream.getBytes(suggestedLength);\n headerBytesLength = headerBytes.length;\n } catch (ex) {\n // Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\n // cannot hold the result of `getBytes`, and fallback to simply checking\n // the entire stream (fixes issue3928.pdf).\n }\n\n if (headerBytesLength === suggestedLength) {\n // Most of the time `suggestedLength` is correct, so to speed things up we\n // initially only check the last few bytes to see if the header was found.\n // Otherwise we (potentially) check the entire stream to prevent errors in\n // `Type1Parser` (fixes issue5686.pdf).\n block = findBlock(\n headerBytes,\n EEXEC_SIGNATURE,\n suggestedLength - 2 * EEXEC_SIGNATURE.length\n );\n\n if (block.found && block.length === suggestedLength) {\n return {\n stream: new Stream(headerBytes),\n length: suggestedLength,\n };\n }\n }\n warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n stream.pos = streamStartPos; // Reset the stream position.\n\n const SCAN_BLOCK_LENGTH = 2048;\n let actualLength;\n while (true) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n if (block.length === 0) {\n break;\n }\n stream.pos += block.length; // Update the stream position.\n\n if (block.found) {\n actualLength = stream.pos - streamStartPos;\n break;\n }\n }\n stream.pos = streamStartPos; // Reset the stream position.\n\n if (actualLength) {\n return {\n stream: new Stream(stream.getBytes(actualLength)),\n length: actualLength,\n };\n }\n warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n return {\n stream: new Stream(stream.getBytes(suggestedLength)),\n length: suggestedLength,\n };\n}\n\nfunction getEexecBlock(stream, suggestedLength) {\n // We should ideally parse the eexec block to ensure that `suggestedLength`\n // is correct, so we don't truncate the block data if it's too small.\n // However, this would also require checking if the fixed-content portion\n // exists (using the 'Length3' property), and ensuring that it's valid.\n //\n // Given that `suggestedLength` almost always is correct, all the validation\n // would require a great deal of unnecessary parsing for most fonts.\n // To save time, we always fetch the entire stream instead, which also avoid\n // issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\n //\n // NOTE: This means that the function can include the fixed-content portion\n // in the returned eexec block. In practice this does *not* seem to matter,\n // since `Type1Parser_extractFontProgram` will skip over any non-commands.\n const eexecBytes = stream.getBytes();\n return {\n stream: new Stream(eexecBytes),\n length: eexecBytes.length,\n };\n}\n\n/**\n * Type1Font is also a CIDFontType0.\n */\nclass Type1Font {\n constructor(name, file, properties) {\n // Some bad generators embed pfb file as is, we have to strip 6-byte header.\n // Also, length1 and length2 might be off by 6 bytes as well.\n // http://www.math.ubc.ca/~cass/piscript/type1.pdf\n const PFB_HEADER_SIZE = 6;\n let headerBlockLength = properties.length1;\n let eexecBlockLength = properties.length2;\n let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n if (pfbHeaderPresent) {\n file.skip(PFB_HEADER_SIZE);\n headerBlockLength =\n (pfbHeader[5] << 24) |\n (pfbHeader[4] << 16) |\n (pfbHeader[3] << 8) |\n pfbHeader[2];\n }\n\n // Get the data block containing glyphs and subrs information\n const headerBlock = getHeaderBlock(file, headerBlockLength);\n const headerBlockParser = new Type1Parser(\n headerBlock.stream,\n false,\n SEAC_ANALYSIS_ENABLED\n );\n headerBlockParser.extractFontHeader(properties);\n\n if (pfbHeaderPresent) {\n pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n eexecBlockLength =\n (pfbHeader[5] << 24) |\n (pfbHeader[4] << 16) |\n (pfbHeader[3] << 8) |\n pfbHeader[2];\n }\n\n // Decrypt the data blocks and retrieve it's content\n const eexecBlock = getEexecBlock(file, eexecBlockLength);\n const eexecBlockParser = new Type1Parser(\n eexecBlock.stream,\n true,\n SEAC_ANALYSIS_ENABLED\n );\n const data = eexecBlockParser.extractFontProgram(properties);\n for (const key in data.properties) {\n properties[key] = data.properties[key];\n }\n\n const charstrings = data.charstrings;\n const type2Charstrings = this.getType2Charstrings(charstrings);\n const subrs = this.getType2Subrs(data.subrs);\n\n this.charstrings = charstrings;\n this.data = this.wrap(\n name,\n type2Charstrings,\n this.charstrings,\n subrs,\n properties\n );\n this.seacs = this.getSeacs(data.charstrings);\n }\n\n get numGlyphs() {\n return this.charstrings.length + 1;\n }\n\n getCharset() {\n const charset = [\".notdef\"];\n const charstrings = this.charstrings;\n for (let glyphId = 0; glyphId < charstrings.length; glyphId++) {\n charset.push(charstrings[glyphId].glyphName);\n }\n return charset;\n }\n\n getGlyphMapping(properties) {\n const charstrings = this.charstrings;\n\n if (properties.composite) {\n const charCodeToGlyphId = Object.create(null);\n // Map CIDs directly to GIDs.\n for (\n let glyphId = 0, charstringsLen = charstrings.length;\n glyphId < charstringsLen;\n glyphId++\n ) {\n const charCode = properties.cMap.charCodeOf(glyphId);\n // Add 1 because glyph 0 is duplicated.\n charCodeToGlyphId[charCode] = glyphId + 1;\n }\n return charCodeToGlyphId;\n }\n\n const glyphNames = [\".notdef\"];\n let builtInEncoding, glyphId;\n for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n glyphNames.push(charstrings[glyphId].glyphName);\n }\n const encoding = properties.builtInEncoding;\n if (encoding) {\n builtInEncoding = Object.create(null);\n for (const charCode in encoding) {\n glyphId = glyphNames.indexOf(encoding[charCode]);\n if (glyphId >= 0) {\n builtInEncoding[charCode] = glyphId;\n }\n }\n }\n\n return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n }\n\n hasGlyphId(id) {\n if (id < 0 || id >= this.numGlyphs) {\n return false;\n }\n if (id === 0) {\n // notdef is always defined.\n return true;\n }\n const glyph = this.charstrings[id - 1];\n return glyph.charstring.length > 0;\n }\n\n getSeacs(charstrings) {\n const seacMap = [];\n for (let i = 0, ii = charstrings.length; i < ii; i++) {\n const charstring = charstrings[i];\n if (charstring.seac) {\n // Offset by 1 for .notdef\n seacMap[i + 1] = charstring.seac;\n }\n }\n return seacMap;\n }\n\n getType2Charstrings(type1Charstrings) {\n const type2Charstrings = [];\n for (let i = 0, ii = type1Charstrings.length; i < ii; i++) {\n type2Charstrings.push(type1Charstrings[i].charstring);\n }\n return type2Charstrings;\n }\n\n getType2Subrs(type1Subrs) {\n let bias = 0;\n const count = type1Subrs.length;\n if (count < 1133) {\n bias = 107;\n } else if (count < 33769) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n\n // Add a bunch of empty subrs to deal with the Type2 bias\n const type2Subrs = [];\n let i;\n for (i = 0; i < bias; i++) {\n type2Subrs.push([0x0b]);\n }\n\n for (i = 0; i < count; i++) {\n type2Subrs.push(type1Subrs[i]);\n }\n\n return type2Subrs;\n }\n\n wrap(name, glyphs, charstrings, subrs, properties) {\n const cff = new CFF();\n cff.header = new CFFHeader(1, 0, 4, 4);\n\n cff.names = [name];\n\n const topDict = new CFFTopDict();\n // CFF strings IDs 0...390 are predefined names, so refering\n // to entries in our own String INDEX starts at SID 391.\n topDict.setByName(\"version\", 391);\n topDict.setByName(\"Notice\", 392);\n topDict.setByName(\"FullName\", 393);\n topDict.setByName(\"FamilyName\", 394);\n topDict.setByName(\"Weight\", 395);\n topDict.setByName(\"Encoding\", null); // placeholder\n topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n topDict.setByName(\"FontBBox\", properties.bbox);\n topDict.setByName(\"charset\", null); // placeholder\n topDict.setByName(\"CharStrings\", null); // placeholder\n topDict.setByName(\"Private\", null); // placeholder\n cff.topDict = topDict;\n\n const strings = new CFFStrings();\n strings.add(\"Version 0.11\"); // Version\n strings.add(\"See original notice\"); // Notice\n strings.add(name); // FullName\n strings.add(name); // FamilyName\n strings.add(\"Medium\"); // Weight\n cff.strings = strings;\n\n cff.globalSubrIndex = new CFFIndex();\n\n const count = glyphs.length;\n const charsetArray = [\".notdef\"];\n let i, ii;\n for (i = 0; i < count; i++) {\n const glyphName = charstrings[i].glyphName;\n const index = CFFStandardStrings.indexOf(glyphName);\n if (index === -1) {\n strings.add(glyphName);\n }\n charsetArray.push(glyphName);\n }\n cff.charset = new CFFCharset(false, 0, charsetArray);\n\n const charStringsIndex = new CFFIndex();\n charStringsIndex.add([0x8b, 0x0e]); // .notdef\n for (i = 0; i < count; i++) {\n charStringsIndex.add(glyphs[i]);\n }\n cff.charStrings = charStringsIndex;\n\n const privateDict = new CFFPrivateDict();\n privateDict.setByName(\"Subrs\", null); // placeholder\n const fields = [\n \"BlueValues\",\n \"OtherBlues\",\n \"FamilyBlues\",\n \"FamilyOtherBlues\",\n \"StemSnapH\",\n \"StemSnapV\",\n \"BlueShift\",\n \"BlueFuzz\",\n \"BlueScale\",\n \"LanguageGroup\",\n \"ExpansionFactor\",\n \"ForceBold\",\n \"StdHW\",\n \"StdVW\",\n ];\n for (i = 0, ii = fields.length; i < ii; i++) {\n const field = fields[i];\n if (!(field in properties.privateData)) {\n continue;\n }\n const value = properties.privateData[field];\n if (Array.isArray(value)) {\n // All of the private dictionary array data in CFF must be stored as\n // \"delta-encoded\" numbers.\n for (let j = value.length - 1; j > 0; j--) {\n value[j] -= value[j - 1]; // ... difference from previous value\n }\n }\n privateDict.setByName(field, value);\n }\n cff.topDict.privateDict = privateDict;\n\n const subrIndex = new CFFIndex();\n for (i = 0, ii = subrs.length; i < ii; i++) {\n subrIndex.add(subrs[i]);\n }\n privateDict.subrsIndex = subrIndex;\n\n const compiler = new CFFCompiler(cff);\n return compiler.compile();\n }\n}\n\nexport { Type1Font };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getEncoding } from \"./encodings.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { warn } from \"../shared/util.js\";\n\n// Hinting is currently disabled due to unknown problems on windows\n// in tracemonkey and various other pdfs with type1 fonts.\nconst HINTING_ENABLED = false;\n\n/*\n * CharStrings are encoded following the the CharString Encoding sequence\n * describe in Chapter 6 of the \"Adobe Type1 Font Format\" specification.\n * The value in a byte indicates a command, a number, or subsequent bytes\n * that are to be interpreted in a special way.\n *\n * CharString Number Encoding:\n * A CharString byte containing the values from 32 through 255 inclusive\n * indicate an integer. These values are decoded in four ranges.\n *\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\n * indicate the integer v - 139. Thus, the integer values from -107 through\n * 107 inclusive may be encoded in single byte.\n *\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * [(v - 247) x 256] + w + 108\n *\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * -[(v - 251) * 256] - w - 108\n *\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\n * are a two complement signed integer. The first of these bytes contains the\n * highest order bits, the second byte contains the next higher order bits\n * and the fourth byte contain the lowest order bits.\n *\n *\n * CharString Command Encoding:\n * CharStrings commands are encoded in 1 or 2 bytes.\n *\n * Single byte commands are encoded in 1 byte that contains a value between\n * 0 and 31 inclusive.\n * If a command byte contains the value 12, then the value in the next byte\n * indicates a command. This \"escape\" mechanism allows many extra commands\n * to be encoded and this encoding technique helps to minimize the length of\n * the charStrings.\n */\nconst Type1CharString = (function Type1CharStringClosure() {\n const COMMAND_MAP = {\n hstem: [1],\n vstem: [3],\n vmoveto: [4],\n rlineto: [5],\n hlineto: [6],\n vlineto: [7],\n rrcurveto: [8],\n callsubr: [10],\n flex: [12, 35],\n drop: [12, 18],\n endchar: [14],\n rmoveto: [21],\n hmoveto: [22],\n vhcurveto: [30],\n hvcurveto: [31],\n };\n\n // eslint-disable-next-line no-shadow\n class Type1CharString {\n constructor() {\n this.width = 0;\n this.lsb = 0;\n this.flexing = false;\n this.output = [];\n this.stack = [];\n }\n\n convert(encoded, subrs, seacAnalysisEnabled) {\n const count = encoded.length;\n let error = false;\n let wx, sbx, subrNumber;\n for (let i = 0; i < count; i++) {\n let value = encoded[i];\n if (value < 32) {\n if (value === 12) {\n value = (value << 8) + encoded[++i];\n }\n switch (value) {\n case 1: // hstem\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case 3: // vstem\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case 4: // vmoveto\n if (this.flexing) {\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n // Add the dx for flex and but also swap the values so they are\n // the right order.\n const dy = this.stack.pop();\n this.stack.push(0, dy);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n break;\n case 5: // rlineto\n error = this.executeCommand(2, COMMAND_MAP.rlineto);\n break;\n case 6: // hlineto\n error = this.executeCommand(1, COMMAND_MAP.hlineto);\n break;\n case 7: // vlineto\n error = this.executeCommand(1, COMMAND_MAP.vlineto);\n break;\n case 8: // rrcurveto\n error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n break;\n case 9: // closepath\n // closepath is a Type1 command that does not take argument and is\n // useless in Type2 and it can simply be ignored.\n this.stack = [];\n break;\n case 10: // callsubr\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n if (!subrs[subrNumber]) {\n error = true;\n break;\n }\n error = this.convert(\n subrs[subrNumber],\n subrs,\n seacAnalysisEnabled\n );\n break;\n case 11: // return\n return error;\n case 13: // hsbw\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n // To convert to type2 we have to move the width value to the\n // first part of the charstring and then use hmoveto with lsb.\n wx = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx);\n error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n break;\n case 14: // endchar\n this.output.push(COMMAND_MAP.endchar[0]);\n break;\n case 21: // rmoveto\n if (this.flexing) {\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n break;\n case 22: // hmoveto\n if (this.flexing) {\n // Add the dy for flex.\n this.stack.push(0);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n break;\n case 30: // vhcurveto\n error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n break;\n case 31: // hvcurveto\n error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n break;\n case (12 << 8) + 0: // dotsection\n // dotsection is a Type1 command to specify some hinting feature\n // for dots that do not take a parameter and it can safely be\n // ignored for Type2.\n this.stack = [];\n break;\n case (12 << 8) + 1: // vstem3\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n // [vh]stem3 are Type1 only and Type2 supports [vh]stem with\n // multiple parameters, so instead of returning [vh]stem3 take a\n // shortcut and return [vhstem] instead.\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case (12 << 8) + 2: // hstem3\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n // See vstem3.\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case (12 << 8) + 6: // seac\n // seac is like type 2's special endchar but it doesn't use the\n // first argument asb, so remove it.\n if (seacAnalysisEnabled) {\n const asb = this.stack[this.stack.length - 5];\n this.seac = this.stack.splice(-4, 4);\n this.seac[0] += this.lsb - asb;\n error = this.executeCommand(0, COMMAND_MAP.endchar);\n } else {\n error = this.executeCommand(4, COMMAND_MAP.endchar);\n }\n break;\n case (12 << 8) + 7: // sbw\n if (this.stack.length < 4) {\n error = true;\n break;\n }\n // To convert to type2 we have to move the width value to the\n // first part of the charstring and then use rmoveto with\n // (dx, dy). The height argument will not be used for vmtx and\n // vhea tables reconstruction -- ignoring it.\n this.stack.pop(); // wy\n wx = this.stack.pop();\n const sby = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx, sby);\n error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n break;\n case (12 << 8) + 12: // div\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n const num2 = this.stack.pop();\n const num1 = this.stack.pop();\n this.stack.push(num1 / num2);\n break;\n case (12 << 8) + 16: // callothersubr\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n const numArgs = this.stack.pop();\n if (subrNumber === 0 && numArgs === 3) {\n const flexArgs = this.stack.splice(this.stack.length - 17, 17);\n this.stack.push(\n flexArgs[2] + flexArgs[0], // bcp1x + rpx\n flexArgs[3] + flexArgs[1], // bcp1y + rpy\n flexArgs[4], // bcp2x\n flexArgs[5], // bcp2y\n flexArgs[6], // p2x\n flexArgs[7], // p2y\n flexArgs[8], // bcp3x\n flexArgs[9], // bcp3y\n flexArgs[10], // bcp4x\n flexArgs[11], // bcp4y\n flexArgs[12], // p3x\n flexArgs[13], // p3y\n flexArgs[14] // flexDepth\n // 15 = finalx unused by flex\n // 16 = finaly unused by flex\n );\n error = this.executeCommand(13, COMMAND_MAP.flex, true);\n this.flexing = false;\n this.stack.push(flexArgs[15], flexArgs[16]);\n } else if (subrNumber === 1 && numArgs === 0) {\n this.flexing = true;\n }\n break;\n case (12 << 8) + 17: // pop\n // Ignore this since it is only used with othersubr.\n break;\n case (12 << 8) + 33: // setcurrentpoint\n // Ignore for now.\n this.stack = [];\n break;\n default:\n warn('Unknown type 1 charstring command of \"' + value + '\"');\n break;\n }\n if (error) {\n break;\n }\n continue;\n } else if (value <= 246) {\n value -= 139;\n } else if (value <= 250) {\n value = (value - 247) * 256 + encoded[++i] + 108;\n } else if (value <= 254) {\n value = -((value - 251) * 256) - encoded[++i] - 108;\n } else {\n value =\n ((encoded[++i] & 0xff) << 24) |\n ((encoded[++i] & 0xff) << 16) |\n ((encoded[++i] & 0xff) << 8) |\n ((encoded[++i] & 0xff) << 0);\n }\n this.stack.push(value);\n }\n return error;\n }\n\n executeCommand(howManyArgs, command, keepStack) {\n const stackLength = this.stack.length;\n if (howManyArgs > stackLength) {\n return true;\n }\n const start = stackLength - howManyArgs;\n for (let i = start; i < stackLength; i++) {\n let value = this.stack[i];\n if (Number.isInteger(value)) {\n this.output.push(28, (value >> 8) & 0xff, value & 0xff);\n } else {\n // fixed point\n value = (65536 * value) | 0;\n this.output.push(\n 255,\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n }\n }\n this.output.push.apply(this.output, command);\n if (keepStack) {\n this.stack.splice(start, howManyArgs);\n } else {\n this.stack.length = 0;\n }\n return false;\n }\n }\n\n return Type1CharString;\n})();\n\n/*\n * Type1Parser encapsulate the needed code for parsing a Type1 font\n * program. Some of its logic depends on the Type2 charstrings\n * structure.\n * Note: this doesn't really parse the font since that would require evaluation\n * of PostScript, but it is possible in most cases to extract what we need\n * without a full parse.\n */\nconst Type1Parser = (function Type1ParserClosure() {\n /*\n * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\n * of Plaintext Bytes. The function took a key as a parameter which can be\n * for decrypting the eexec block of for decoding charStrings.\n */\n const EEXEC_ENCRYPT_KEY = 55665;\n const CHAR_STRS_ENCRYPT_KEY = 4330;\n\n function isHexDigit(code) {\n return (\n (code >= 48 && code <= 57) || // '0'-'9'\n (code >= 65 && code <= 70) || // 'A'-'F'\n (code >= 97 && code <= 102) // 'a'-'f'\n );\n }\n\n function decrypt(data, key, discardNumber) {\n if (discardNumber >= data.length) {\n return new Uint8Array(0);\n }\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0,\n i,\n j;\n for (i = 0; i < discardNumber; i++) {\n r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n }\n const count = data.length - discardNumber;\n const decrypted = new Uint8Array(count);\n for (i = discardNumber, j = 0; j < count; i++, j++) {\n const value = data[i];\n decrypted[j] = value ^ (r >> 8);\n r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n }\n return decrypted;\n }\n\n function decryptAscii(data, key, discardNumber) {\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0;\n const count = data.length,\n maybeLength = count >>> 1;\n const decrypted = new Uint8Array(maybeLength);\n let i, j;\n for (i = 0, j = 0; i < count; i++) {\n const digit1 = data[i];\n if (!isHexDigit(digit1)) {\n continue;\n }\n i++;\n let digit2;\n while (i < count && !isHexDigit((digit2 = data[i]))) {\n i++;\n }\n if (i < count) {\n const value = parseInt(String.fromCharCode(digit1, digit2), 16);\n decrypted[j++] = value ^ (r >> 8);\n r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n }\n }\n return decrypted.slice(discardNumber, j);\n }\n\n function isSpecial(c) {\n return (\n c === /* '/' = */ 0x2f ||\n c === /* '[' = */ 0x5b ||\n c === /* ']' = */ 0x5d ||\n c === /* '{' = */ 0x7b ||\n c === /* '}' = */ 0x7d ||\n c === /* '(' = */ 0x28 ||\n c === /* ')' = */ 0x29\n );\n }\n\n // eslint-disable-next-line no-shadow\n class Type1Parser {\n constructor(stream, encrypted, seacAnalysisEnabled) {\n if (encrypted) {\n const data = stream.getBytes();\n const isBinary = !(\n (isHexDigit(data[0]) || isWhiteSpace(data[0])) &&\n isHexDigit(data[1]) &&\n isHexDigit(data[2]) &&\n isHexDigit(data[3]) &&\n isHexDigit(data[4]) &&\n isHexDigit(data[5]) &&\n isHexDigit(data[6]) &&\n isHexDigit(data[7])\n );\n stream = new Stream(\n isBinary\n ? decrypt(data, EEXEC_ENCRYPT_KEY, 4)\n : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)\n );\n }\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n\n this.stream = stream;\n this.nextChar();\n }\n\n readNumberArray() {\n this.getToken(); // read '[' or '{' (arrays can start with either)\n const array = [];\n while (true) {\n const token = this.getToken();\n if (token === null || token === \"]\" || token === \"}\") {\n break;\n }\n array.push(parseFloat(token || 0));\n }\n return array;\n }\n\n readNumber() {\n const token = this.getToken();\n return parseFloat(token || 0);\n }\n\n readInt() {\n // Use '| 0' to prevent setting a double into length such as the double\n // does not flow into the loop variable.\n const token = this.getToken();\n return parseInt(token || 0, 10) | 0;\n }\n\n readBoolean() {\n const token = this.getToken();\n // Use 1 and 0 since that's what type2 charstrings use.\n return token === \"true\" ? 1 : 0;\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n getToken() {\n // Eat whitespace and comments.\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch === -1) {\n return null;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (!isWhiteSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n if (isSpecial(ch)) {\n this.nextChar();\n return String.fromCharCode(ch);\n }\n let token = \"\";\n do {\n token += String.fromCharCode(ch);\n ch = this.nextChar();\n } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n return token;\n }\n\n readCharStrings(bytes, lenIV) {\n if (lenIV === -1) {\n // This isn't in the spec, but Adobe's tx program handles -1\n // as plain text.\n return bytes;\n }\n return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n }\n\n /*\n * Returns an object containing a Subrs array and a CharStrings\n * array extracted from and eexec encrypted block of data\n */\n extractFontProgram(properties) {\n const stream = this.stream;\n\n const subrs = [],\n charstrings = [];\n const privateData = Object.create(null);\n privateData.lenIV = 4;\n const program = {\n subrs: [],\n charstrings: [],\n properties: {\n privateData,\n },\n };\n let token, length, data, lenIV, encoded;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"CharStrings\":\n // The number immediately following CharStrings must be greater or\n // equal to the number of CharStrings.\n this.getToken();\n this.getToken(); // read in 'dict'\n this.getToken(); // read in 'dup'\n this.getToken(); // read in 'begin'\n while (true) {\n token = this.getToken();\n if (token === null || token === \"end\") {\n break;\n }\n\n if (token !== \"/\") {\n continue;\n }\n const glyph = this.getToken();\n length = this.readInt();\n this.getToken(); // read in 'RD' or '-|'\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken(); // read in 'ND' or '|-'\n if (token === \"noaccess\") {\n this.getToken(); // read in 'def'\n }\n charstrings.push({\n glyph,\n encoded,\n });\n }\n break;\n case \"Subrs\":\n this.readInt(); // num\n this.getToken(); // read in 'array'\n while (this.getToken() === \"dup\") {\n const index = this.readInt();\n length = this.readInt();\n this.getToken(); // read in 'RD' or '-|'\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken(); // read in 'NP' or '|'\n if (token === \"noaccess\") {\n this.getToken(); // read in 'put'\n }\n subrs[index] = encoded;\n }\n break;\n case \"BlueValues\":\n case \"OtherBlues\":\n case \"FamilyBlues\":\n case \"FamilyOtherBlues\":\n const blueArray = this.readNumberArray();\n // *Blue* values may contain invalid data: disables reading of\n // those values when hinting is disabled.\n if (\n blueArray.length > 0 &&\n blueArray.length % 2 === 0 &&\n HINTING_ENABLED\n ) {\n program.properties.privateData[token] = blueArray;\n }\n break;\n case \"StemSnapH\":\n case \"StemSnapV\":\n program.properties.privateData[token] = this.readNumberArray();\n break;\n case \"StdHW\":\n case \"StdVW\":\n program.properties.privateData[token] = this.readNumberArray()[0];\n break;\n case \"BlueShift\":\n case \"lenIV\":\n case \"BlueFuzz\":\n case \"BlueScale\":\n case \"LanguageGroup\":\n case \"ExpansionFactor\":\n program.properties.privateData[token] = this.readNumber();\n break;\n case \"ForceBold\":\n program.properties.privateData[token] = this.readBoolean();\n break;\n }\n }\n\n for (let i = 0; i < charstrings.length; i++) {\n const glyph = charstrings[i].glyph;\n encoded = charstrings[i].encoded;\n const charString = new Type1CharString();\n const error = charString.convert(\n encoded,\n subrs,\n this.seacAnalysisEnabled\n );\n let output = charString.output;\n if (error) {\n // It seems when FreeType encounters an error while evaluating a glyph\n // that it completely ignores the glyph so we'll mimic that behaviour\n // here and put an endchar to make the validator happy.\n output = [14];\n }\n const charStringObject = {\n glyphName: glyph,\n charstring: output,\n width: charString.width,\n lsb: charString.lsb,\n seac: charString.seac,\n };\n if (glyph === \".notdef\") {\n // Make sure .notdef is at index zero (issue #11477).\n program.charstrings.unshift(charStringObject);\n } else {\n program.charstrings.push(charStringObject);\n }\n\n // Attempt to replace missing widths, from the font dictionary /Widths\n // entry, with ones from the font data (fixes issue11150_reduced.pdf).\n if (properties.builtInEncoding) {\n const index = properties.builtInEncoding.indexOf(glyph);\n if (\n index > -1 &&\n properties.widths[index] === undefined &&\n index >= properties.firstChar &&\n index <= properties.lastChar\n ) {\n properties.widths[index] = charString.width;\n }\n }\n }\n\n return program;\n }\n\n extractFontHeader(properties) {\n let token;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"FontMatrix\":\n const matrix = this.readNumberArray();\n properties.fontMatrix = matrix;\n break;\n case \"Encoding\":\n const encodingArg = this.getToken();\n let encoding;\n if (!/^\\d+$/.test(encodingArg)) {\n // encoding name is specified\n encoding = getEncoding(encodingArg);\n } else {\n encoding = [];\n const size = parseInt(encodingArg, 10) | 0;\n this.getToken(); // read in 'array'\n\n for (let j = 0; j < size; j++) {\n token = this.getToken();\n // skipping till first dup or def (e.g. ignoring for statement)\n while (token !== \"dup\" && token !== \"def\") {\n token = this.getToken();\n if (token === null) {\n return; // invalid header\n }\n }\n if (token === \"def\") {\n break; // read all array data\n }\n const index = this.readInt();\n this.getToken(); // read in '/'\n const glyph = this.getToken();\n encoding[index] = glyph;\n this.getToken(); // read the in 'put'\n }\n }\n properties.builtInEncoding = encoding;\n break;\n case \"FontBBox\":\n const fontBBox = this.readNumberArray();\n // adjusting ascent/descent\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n break;\n }\n }\n }\n }\n\n return Type1Parser;\n})();\n\nexport { Type1Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n shadow,\n unreachable,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { isStream } from \"./primitives.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nconst ShadingType = {\n FUNCTION_BASED: 1,\n AXIAL: 2,\n RADIAL: 3,\n FREE_FORM_MESH: 4,\n LATTICE_FORM_MESH: 5,\n COONS_PATCH_MESH: 6,\n TENSOR_PATCH_MESH: 7,\n};\n\nclass Pattern {\n constructor() {\n unreachable(\"Cannot initialize Pattern.\");\n }\n\n static parseShading(\n shading,\n xref,\n res,\n handler,\n pdfFunctionFactory,\n localColorSpaceCache\n ) {\n const dict = isStream(shading) ? shading.dict : shading;\n const type = dict.get(\"ShadingType\");\n\n try {\n switch (type) {\n case ShadingType.AXIAL:\n case ShadingType.RADIAL:\n return new RadialAxialShading(\n dict,\n xref,\n res,\n pdfFunctionFactory,\n localColorSpaceCache\n );\n case ShadingType.FREE_FORM_MESH:\n case ShadingType.LATTICE_FORM_MESH:\n case ShadingType.COONS_PATCH_MESH:\n case ShadingType.TENSOR_PATCH_MESH:\n return new MeshShading(\n shading,\n xref,\n res,\n pdfFunctionFactory,\n localColorSpaceCache\n );\n default:\n throw new FormatError(\"Unsupported ShadingType: \" + type);\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.shadingPattern,\n });\n warn(ex);\n return new DummyShading();\n }\n }\n}\n\nclass BaseShading {\n // A small number to offset the first/last color stops so we can insert ones\n // to support extend. Number.MIN_VALUE is too small and breaks the extend.\n static get SMALL_NUMBER() {\n return shadow(this, \"SMALL_NUMBER\", 1e-6);\n }\n\n constructor() {\n if (this.constructor === BaseShading) {\n unreachable(\"Cannot initialize BaseShading.\");\n }\n }\n\n getIR() {\n unreachable(\"Abstract method `getIR` called.\");\n }\n}\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes.\nclass RadialAxialShading extends BaseShading {\n constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n super();\n this.coordsArr = dict.getArray(\"Coords\");\n this.shadingType = dict.get(\"ShadingType\");\n const cs = ColorSpace.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n const bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n\n let t0 = 0.0,\n t1 = 1.0;\n if (dict.has(\"Domain\")) {\n const domainArr = dict.getArray(\"Domain\");\n t0 = domainArr[0];\n t1 = domainArr[1];\n }\n\n let extendStart = false,\n extendEnd = false;\n if (dict.has(\"Extend\")) {\n const extendArr = dict.getArray(\"Extend\");\n extendStart = extendArr[0];\n extendEnd = extendArr[1];\n }\n\n if (\n this.shadingType === ShadingType.RADIAL &&\n (!extendStart || !extendEnd)\n ) {\n // Radial gradient only currently works if either circle is fully within\n // the other circle.\n const [x1, y1, r1, x2, y2, r2] = this.coordsArr;\n const distance = Math.hypot(x1 - x2, y1 - y2);\n if (r1 <= r2 + distance && r2 <= r1 + distance) {\n warn(\"Unsupported radial gradient.\");\n }\n }\n\n this.extendStart = extendStart;\n this.extendEnd = extendEnd;\n\n const fnObj = dict.getRaw(\"Function\");\n const fn = pdfFunctionFactory.createFromArray(fnObj);\n\n // 10 samples seems good enough for now, but probably won't work\n // if there are sharp color changes. Ideally, we would implement\n // the spec faithfully and add lossless optimizations.\n const NUMBER_OF_SAMPLES = 10;\n const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n\n const colorStops = (this.colorStops = []);\n\n // Protect against bad domains.\n if (t0 >= t1 || step <= 0) {\n // Acrobat doesn't seem to handle these cases so we'll ignore for\n // now.\n info(\"Bad shading domain.\");\n return;\n }\n\n const color = new Float32Array(cs.numComps),\n ratio = new Float32Array(1);\n let rgbColor;\n for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {\n ratio[0] = t0 + i * step;\n fn(ratio, 0, color, 0);\n rgbColor = cs.getRgb(color, 0);\n const cssColor = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n }\n\n let background = \"transparent\";\n if (dict.has(\"Background\")) {\n rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n background = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n }\n\n if (!extendStart) {\n // Insert a color stop at the front and offset the first real color stop\n // so it doesn't conflict with the one we insert.\n colorStops.unshift([0, background]);\n colorStops[1][0] += BaseShading.SMALL_NUMBER;\n }\n if (!extendEnd) {\n // Same idea as above in extendStart but for the end.\n colorStops[colorStops.length - 1][0] -= BaseShading.SMALL_NUMBER;\n colorStops.push([1, background]);\n }\n\n this.colorStops = colorStops;\n }\n\n getIR() {\n const coordsArr = this.coordsArr;\n const shadingType = this.shadingType;\n let type, p0, p1, r0, r1;\n if (shadingType === ShadingType.AXIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[2], coordsArr[3]];\n r0 = null;\n r1 = null;\n type = \"axial\";\n } else if (shadingType === ShadingType.RADIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[3], coordsArr[4]];\n r0 = coordsArr[2];\n r1 = coordsArr[5];\n type = \"radial\";\n } else {\n unreachable(`getPattern type unknown: ${shadingType}`);\n }\n\n return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n }\n}\n\n// All mesh shadings. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nclass MeshStreamReader {\n constructor(stream, context) {\n this.stream = stream;\n this.context = context;\n this.buffer = 0;\n this.bufferLength = 0;\n\n const numComps = context.numComps;\n this.tmpCompsBuf = new Float32Array(numComps);\n const csNumComps = context.colorSpace.numComps;\n this.tmpCsCompsBuf = context.colorFn\n ? new Float32Array(csNumComps)\n : this.tmpCompsBuf;\n }\n\n get hasData() {\n if (this.stream.end) {\n return this.stream.pos < this.stream.end;\n }\n if (this.bufferLength > 0) {\n return true;\n }\n const nextByte = this.stream.getByte();\n if (nextByte < 0) {\n return false;\n }\n this.buffer = nextByte;\n this.bufferLength = 8;\n return true;\n }\n\n readBits(n) {\n let buffer = this.buffer;\n let bufferLength = this.bufferLength;\n if (n === 32) {\n if (bufferLength === 0) {\n return (\n ((this.stream.getByte() << 24) |\n (this.stream.getByte() << 16) |\n (this.stream.getByte() << 8) |\n this.stream.getByte()) >>>\n 0\n );\n }\n buffer =\n (buffer << 24) |\n (this.stream.getByte() << 16) |\n (this.stream.getByte() << 8) |\n this.stream.getByte();\n const nextByte = this.stream.getByte();\n this.buffer = nextByte & ((1 << bufferLength) - 1);\n return (\n ((buffer << (8 - bufferLength)) |\n ((nextByte & 0xff) >> bufferLength)) >>>\n 0\n );\n }\n if (n === 8 && bufferLength === 0) {\n return this.stream.getByte();\n }\n while (bufferLength < n) {\n buffer = (buffer << 8) | this.stream.getByte();\n bufferLength += 8;\n }\n bufferLength -= n;\n this.bufferLength = bufferLength;\n this.buffer = buffer & ((1 << bufferLength) - 1);\n return buffer >> bufferLength;\n }\n\n align() {\n this.buffer = 0;\n this.bufferLength = 0;\n }\n\n readFlag() {\n return this.readBits(this.context.bitsPerFlag);\n }\n\n readCoordinate() {\n const bitsPerCoordinate = this.context.bitsPerCoordinate;\n const xi = this.readBits(bitsPerCoordinate);\n const yi = this.readBits(bitsPerCoordinate);\n const decode = this.context.decode;\n const scale =\n bitsPerCoordinate < 32\n ? 1 / ((1 << bitsPerCoordinate) - 1)\n : 2.3283064365386963e-10; // 2 ^ -32\n return [\n xi * scale * (decode[1] - decode[0]) + decode[0],\n yi * scale * (decode[3] - decode[2]) + decode[2],\n ];\n }\n\n readComponents() {\n const numComps = this.context.numComps;\n const bitsPerComponent = this.context.bitsPerComponent;\n const scale =\n bitsPerComponent < 32\n ? 1 / ((1 << bitsPerComponent) - 1)\n : 2.3283064365386963e-10; // 2 ^ -32\n const decode = this.context.decode;\n const components = this.tmpCompsBuf;\n for (let i = 0, j = 4; i < numComps; i++, j += 2) {\n const ci = this.readBits(bitsPerComponent);\n components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n }\n const color = this.tmpCsCompsBuf;\n if (this.context.colorFn) {\n this.context.colorFn(components, 0, color, 0);\n }\n return this.context.colorSpace.getRgb(color, 0);\n }\n}\n\nconst getB = (function getBClosure() {\n function buildB(count) {\n const lut = [];\n for (let i = 0; i <= count; i++) {\n const t = i / count,\n t_ = 1 - t;\n lut.push(\n new Float32Array([\n t_ * t_ * t_,\n 3 * t * t_ * t_,\n 3 * t * t * t_,\n t * t * t,\n ])\n );\n }\n return lut;\n }\n const cache = [];\n\n return function (count) {\n if (!cache[count]) {\n cache[count] = buildB(count);\n }\n return cache[count];\n };\n})();\n\nclass MeshShading extends BaseShading {\n static get MIN_SPLIT_PATCH_CHUNKS_AMOUNT() {\n return shadow(this, \"MIN_SPLIT_PATCH_CHUNKS_AMOUNT\", 3);\n }\n\n static get MAX_SPLIT_PATCH_CHUNKS_AMOUNT() {\n return shadow(this, \"MAX_SPLIT_PATCH_CHUNKS_AMOUNT\", 20);\n }\n\n // Count of triangles per entire mesh bounds.\n static get TRIANGLE_DENSITY() {\n return shadow(this, \"TRIANGLE_DENSITY\", 20);\n }\n\n constructor(\n stream,\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache\n ) {\n super();\n if (!isStream(stream)) {\n throw new FormatError(\"Mesh data is not a stream\");\n }\n const dict = stream.dict;\n this.shadingType = dict.get(\"ShadingType\");\n const bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n const cs = ColorSpace.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n this.background = dict.has(\"Background\")\n ? cs.getRgb(dict.get(\"Background\"), 0)\n : null;\n\n const fnObj = dict.getRaw(\"Function\");\n const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n\n this.coords = [];\n this.colors = [];\n this.figures = [];\n\n const decodeContext = {\n bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n bitsPerComponent: dict.get(\"BitsPerComponent\"),\n bitsPerFlag: dict.get(\"BitsPerFlag\"),\n decode: dict.getArray(\"Decode\"),\n colorFn: fn,\n colorSpace: cs,\n numComps: fn ? 1 : cs.numComps,\n };\n const reader = new MeshStreamReader(stream, decodeContext);\n\n let patchMesh = false;\n switch (this.shadingType) {\n case ShadingType.FREE_FORM_MESH:\n this._decodeType4Shading(reader);\n break;\n case ShadingType.LATTICE_FORM_MESH:\n const verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n if (verticesPerRow < 2) {\n throw new FormatError(\"Invalid VerticesPerRow\");\n }\n this._decodeType5Shading(reader, verticesPerRow);\n break;\n case ShadingType.COONS_PATCH_MESH:\n this._decodeType6Shading(reader);\n patchMesh = true;\n break;\n case ShadingType.TENSOR_PATCH_MESH:\n this._decodeType7Shading(reader);\n patchMesh = true;\n break;\n default:\n unreachable(\"Unsupported mesh type.\");\n break;\n }\n\n if (patchMesh) {\n // Dirty bounds calculation, to determine how dense the triangles will be.\n this._updateBounds();\n for (let i = 0, ii = this.figures.length; i < ii; i++) {\n this._buildFigureFromPatch(i);\n }\n }\n // Calculate bounds.\n this._updateBounds();\n\n this._packData();\n }\n\n _decodeType4Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const operators = [];\n const ps = []; // not maintaining cs since that will match ps\n let verticesLeft = 0; // assuming we have all data to start a new triangle\n while (reader.hasData) {\n const f = reader.readFlag();\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n if (verticesLeft === 0) {\n // ignoring flags if we started a triangle\n if (!(0 <= f && f <= 2)) {\n throw new FormatError(\"Unknown type4 flag\");\n }\n switch (f) {\n case 0:\n verticesLeft = 3;\n break;\n case 1:\n ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n case 2:\n ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n }\n operators.push(f);\n }\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n verticesLeft--;\n\n reader.align();\n }\n this.figures.push({\n type: \"triangles\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n });\n }\n\n _decodeType5Shading(reader, verticesPerRow) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = []; // not maintaining cs since that will match ps\n while (reader.hasData) {\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n }\n this.figures.push({\n type: \"lattice\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n verticesPerRow,\n });\n }\n\n _decodeType6Shading(reader) {\n // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n const cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type6 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n // prettier-ignore\n case 0:\n ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6;\n ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 7;\n ps[ 4] = pi + 1; /* calculated below */ ps[ 7] = pi + 8;\n ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n cs[2] = ci + 1; cs[3] = ci + 2;\n cs[0] = ci; cs[1] = ci + 3;\n break;\n // prettier-ignore\n case 1:\n tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[2]; tmp2 = cs[3];\n cs[2] = tmp2; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[7]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1]; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 3:\n ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[1]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = ps[2]; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n cs[2] = cs[0]; cs[3] = ci;\n cs[0] = cs[1]; cs[1] = ci + 1;\n break;\n }\n // set p11, p12, p21, p22\n ps[5] = coords.length;\n coords.push([\n (-4 * coords[ps[0]][0] -\n coords[ps[15]][0] +\n 6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\n 2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n 3 * (coords[ps[13]][0] + coords[ps[7]][0])) /\n 9,\n (-4 * coords[ps[0]][1] -\n coords[ps[15]][1] +\n 6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\n 2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n 3 * (coords[ps[13]][1] + coords[ps[7]][1])) /\n 9,\n ]);\n ps[6] = coords.length;\n coords.push([\n (-4 * coords[ps[3]][0] -\n coords[ps[12]][0] +\n 6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\n 2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n 3 * (coords[ps[4]][0] + coords[ps[14]][0])) /\n 9,\n (-4 * coords[ps[3]][1] -\n coords[ps[12]][1] +\n 6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\n 2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n 3 * (coords[ps[4]][1] + coords[ps[14]][1])) /\n 9,\n ]);\n ps[9] = coords.length;\n coords.push([\n (-4 * coords[ps[12]][0] -\n coords[ps[3]][0] +\n 6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\n 2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n 3 * (coords[ps[11]][0] + coords[ps[1]][0])) /\n 9,\n (-4 * coords[ps[12]][1] -\n coords[ps[3]][1] +\n 6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\n 2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n 3 * (coords[ps[11]][1] + coords[ps[1]][1])) /\n 9,\n ]);\n ps[10] = coords.length;\n coords.push([\n (-4 * coords[ps[15]][0] -\n coords[ps[0]][0] +\n 6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\n 2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n 3 * (coords[ps[2]][0] + coords[ps[8]][0])) /\n 9,\n (-4 * coords[ps[15]][1] -\n coords[ps[0]][1] +\n 6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\n 2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n 3 * (coords[ps[2]][1] + coords[ps[8]][1])) /\n 9,\n ]);\n this.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps), // making copies of ps and cs\n colors: new Int32Array(cs),\n });\n }\n }\n\n _decodeType7Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n const cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type7 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n // prettier-ignore\n case 0:\n ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6;\n ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\n ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\n ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n cs[2] = ci + 1; cs[3] = ci + 2;\n cs[0] = ci; cs[1] = ci + 3;\n break;\n // prettier-ignore\n case 1:\n tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = tmp3; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[2]; tmp2 = cs[3];\n cs[2] = tmp2; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1]; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 3:\n ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[1]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = ps[2]; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n cs[2] = cs[0]; cs[3] = ci;\n cs[0] = cs[1]; cs[1] = ci + 1;\n break;\n }\n this.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps), // making copies of ps and cs\n colors: new Int32Array(cs),\n });\n }\n }\n\n _buildFigureFromPatch(index) {\n const figure = this.figures[index];\n assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n\n const coords = this.coords,\n colors = this.colors;\n const pi = figure.coords;\n const ci = figure.colors;\n\n const figureMinX = Math.min(\n coords[pi[0]][0],\n coords[pi[3]][0],\n coords[pi[12]][0],\n coords[pi[15]][0]\n );\n const figureMinY = Math.min(\n coords[pi[0]][1],\n coords[pi[3]][1],\n coords[pi[12]][1],\n coords[pi[15]][1]\n );\n const figureMaxX = Math.max(\n coords[pi[0]][0],\n coords[pi[3]][0],\n coords[pi[12]][0],\n coords[pi[15]][0]\n );\n const figureMaxY = Math.max(\n coords[pi[0]][1],\n coords[pi[3]][1],\n coords[pi[12]][1],\n coords[pi[15]][1]\n );\n let splitXBy = Math.ceil(\n ((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY) /\n (this.bounds[2] - this.bounds[0])\n );\n splitXBy = Math.max(\n MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)\n );\n let splitYBy = Math.ceil(\n ((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY) /\n (this.bounds[3] - this.bounds[1])\n );\n splitYBy = Math.max(\n MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)\n );\n\n const verticesPerRow = splitXBy + 1;\n const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n let k = 0;\n const cl = new Uint8Array(3),\n cr = new Uint8Array(3);\n const c0 = colors[ci[0]],\n c1 = colors[ci[1]],\n c2 = colors[ci[2]],\n c3 = colors[ci[3]];\n const bRow = getB(splitYBy),\n bCol = getB(splitXBy);\n for (let row = 0; row <= splitYBy; row++) {\n cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;\n cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;\n cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;\n\n cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;\n cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;\n cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;\n\n for (let col = 0; col <= splitXBy; col++, k++) {\n if (\n (row === 0 || row === splitYBy) &&\n (col === 0 || col === splitXBy)\n ) {\n continue;\n }\n let x = 0,\n y = 0;\n let q = 0;\n for (let i = 0; i <= 3; i++) {\n for (let j = 0; j <= 3; j++, q++) {\n const m = bRow[row][i] * bCol[col][j];\n x += coords[pi[q]][0] * m;\n y += coords[pi[q]][1] * m;\n }\n }\n figureCoords[k] = coords.length;\n coords.push([x, y]);\n figureColors[k] = colors.length;\n const newColor = new Uint8Array(3);\n newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;\n newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;\n newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;\n colors.push(newColor);\n }\n }\n figureCoords[0] = pi[0];\n figureColors[0] = ci[0];\n figureCoords[splitXBy] = pi[3];\n figureColors[splitXBy] = ci[1];\n figureCoords[verticesPerRow * splitYBy] = pi[12];\n figureColors[verticesPerRow * splitYBy] = ci[2];\n figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n\n this.figures[index] = {\n type: \"lattice\",\n coords: figureCoords,\n colors: figureColors,\n verticesPerRow,\n };\n }\n\n _updateBounds() {\n let minX = this.coords[0][0],\n minY = this.coords[0][1],\n maxX = minX,\n maxY = minY;\n for (let i = 1, ii = this.coords.length; i < ii; i++) {\n const x = this.coords[i][0],\n y = this.coords[i][1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n this.bounds = [minX, minY, maxX, maxY];\n }\n\n _packData() {\n let i, ii, j, jj;\n\n const coords = this.coords;\n const coordsPacked = new Float32Array(coords.length * 2);\n for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n const xy = coords[i];\n coordsPacked[j++] = xy[0];\n coordsPacked[j++] = xy[1];\n }\n this.coords = coordsPacked;\n\n const colors = this.colors;\n const colorsPacked = new Uint8Array(colors.length * 3);\n for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n const c = colors[i];\n colorsPacked[j++] = c[0];\n colorsPacked[j++] = c[1];\n colorsPacked[j++] = c[2];\n }\n this.colors = colorsPacked;\n\n const figures = this.figures;\n for (i = 0, ii = figures.length; i < ii; i++) {\n const figure = figures[i],\n ps = figure.coords,\n cs = figure.colors;\n for (j = 0, jj = ps.length; j < jj; j++) {\n ps[j] *= 2;\n cs[j] *= 3;\n }\n }\n }\n\n getIR() {\n return [\n \"Mesh\",\n this.shadingType,\n this.coords,\n this.colors,\n this.figures,\n this.bounds,\n this.bbox,\n this.background,\n ];\n }\n}\n\nclass DummyShading extends BaseShading {\n getIR() {\n return [\"Dummy\"];\n }\n}\n\nfunction getTilingPatternIR(operatorList, dict, color) {\n const matrix = dict.getArray(\"Matrix\");\n const bbox = Util.normalizeRect(dict.getArray(\"BBox\"));\n const xstep = dict.get(\"XStep\");\n const ystep = dict.get(\"YStep\");\n const paintType = dict.get(\"PaintType\");\n const tilingType = dict.get(\"TilingType\");\n\n // Ensure that the pattern has a non-zero width and height, to prevent errors\n // in `pattern_helper.js` (fixes issue8330.pdf).\n if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n throw new FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n }\n\n return [\n \"TilingPattern\",\n color,\n operatorList,\n matrix,\n bbox,\n xstep,\n ystep,\n paintType,\n tilingType,\n ];\n}\n\nexport { getTilingPatternIR, Pattern };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isDict, isStream, Ref } from \"./primitives.js\";\nimport {\n FormatError,\n info,\n isBool,\n IsEvalSupportedCached,\n shadow,\n unreachable,\n} from \"../shared/util.js\";\nimport { PostScriptLexer, PostScriptParser } from \"./ps_parser.js\";\nimport { LocalFunctionCache } from \"./image_utils.js\";\n\nclass PDFFunctionFactory {\n constructor({ xref, isEvalSupported = true }) {\n this.xref = xref;\n this.isEvalSupported = isEvalSupported !== false;\n }\n\n create(fn) {\n const cachedFunction = this.getCached(fn);\n if (cachedFunction) {\n return cachedFunction;\n }\n const parsedFunction = PDFFunction.parse({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fn: fn instanceof Ref ? this.xref.fetch(fn) : fn,\n });\n\n // Attempt to cache the parsed Function, by reference.\n this._cache(fn, parsedFunction);\n\n return parsedFunction;\n }\n\n createFromArray(fnObj) {\n const cachedFunction = this.getCached(fnObj);\n if (cachedFunction) {\n return cachedFunction;\n }\n const parsedFunction = PDFFunction.parseArray({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fnObj: fnObj instanceof Ref ? this.xref.fetch(fnObj) : fnObj,\n });\n\n // Attempt to cache the parsed Function, by reference.\n this._cache(fnObj, parsedFunction);\n\n return parsedFunction;\n }\n\n getCached(cacheKey) {\n let fnRef;\n if (cacheKey instanceof Ref) {\n fnRef = cacheKey;\n } else if (cacheKey instanceof Dict) {\n fnRef = cacheKey.objId;\n } else if (isStream(cacheKey)) {\n fnRef = cacheKey.dict && cacheKey.dict.objId;\n }\n if (fnRef) {\n const localFunction = this._localFunctionCache.getByRef(fnRef);\n if (localFunction) {\n return localFunction;\n }\n }\n return null;\n }\n\n /**\n * @private\n */\n _cache(cacheKey, parsedFunction) {\n if (!parsedFunction) {\n throw new Error(\n 'PDFFunctionFactory._cache - expected \"parsedFunction\" argument.'\n );\n }\n let fnRef;\n if (cacheKey instanceof Ref) {\n fnRef = cacheKey;\n } else if (cacheKey instanceof Dict) {\n fnRef = cacheKey.objId;\n } else if (isStream(cacheKey)) {\n fnRef = cacheKey.dict && cacheKey.dict.objId;\n }\n if (fnRef) {\n this._localFunctionCache.set(/* name = */ null, fnRef, parsedFunction);\n }\n }\n\n /**\n * @private\n */\n get _localFunctionCache() {\n return shadow(this, \"_localFunctionCache\", new LocalFunctionCache());\n }\n}\n\nfunction toNumberArray(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n const length = arr.length;\n for (let i = 0; i < length; i++) {\n if (typeof arr[i] !== \"number\") {\n // Non-number is found -- convert all items to numbers.\n const result = new Array(length);\n for (let j = 0; j < length; j++) {\n result[j] = +arr[j];\n }\n return result;\n }\n }\n return arr;\n}\n\nclass PDFFunction {\n static getSampleArray(size, outputSize, bps, stream) {\n let i, ii;\n let length = 1;\n for (i = 0, ii = size.length; i < ii; i++) {\n length *= size[i];\n }\n length *= outputSize;\n\n const array = new Array(length);\n let codeSize = 0;\n let codeBuf = 0;\n // 32 is a valid bps so shifting won't work\n const sampleMul = 1.0 / (2.0 ** bps - 1);\n\n const strBytes = stream.getBytes((length * bps + 7) / 8);\n let strIdx = 0;\n for (i = 0; i < length; i++) {\n while (codeSize < bps) {\n codeBuf <<= 8;\n codeBuf |= strBytes[strIdx++];\n codeSize += 8;\n }\n codeSize -= bps;\n array[i] = (codeBuf >> codeSize) * sampleMul;\n codeBuf &= (1 << codeSize) - 1;\n }\n return array;\n }\n\n static parse({ xref, isEvalSupported, fn }) {\n const dict = fn.dict || fn;\n const typeNum = dict.get(\"FunctionType\");\n\n switch (typeNum) {\n case 0:\n return this.constructSampled({ xref, isEvalSupported, fn, dict });\n case 1:\n break;\n case 2:\n return this.constructInterpolated({ xref, isEvalSupported, dict });\n case 3:\n return this.constructStiched({ xref, isEvalSupported, dict });\n case 4:\n return this.constructPostScript({ xref, isEvalSupported, fn, dict });\n }\n throw new FormatError(\"Unknown type of function\");\n }\n\n static parseArray({ xref, isEvalSupported, fnObj }) {\n if (!Array.isArray(fnObj)) {\n // not an array -- parsing as regular function\n return this.parse({ xref, isEvalSupported, fn: fnObj });\n }\n\n const fnArray = [];\n for (let j = 0, jj = fnObj.length; j < jj; j++) {\n fnArray.push(\n this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnObj[j]) })\n );\n }\n return function (src, srcOffset, dest, destOffset) {\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n fnArray[i](src, srcOffset, dest, destOffset + i);\n }\n };\n }\n\n static constructSampled({ xref, isEvalSupported, fn, dict }) {\n function toMultiArray(arr) {\n const inputLength = arr.length;\n const out = [];\n let index = 0;\n for (let i = 0; i < inputLength; i += 2) {\n out[index++] = [arr[i], arr[i + 1]];\n }\n return out;\n }\n // See chapter 3, page 109 of the PDF reference\n function interpolate(x, xmin, xmax, ymin, ymax) {\n return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n }\n\n let domain = toNumberArray(dict.getArray(\"Domain\"));\n let range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain || !range) {\n throw new FormatError(\"No domain or range\");\n }\n\n const inputSize = domain.length / 2;\n const outputSize = range.length / 2;\n\n domain = toMultiArray(domain);\n range = toMultiArray(range);\n\n const size = toNumberArray(dict.getArray(\"Size\"));\n const bps = dict.get(\"BitsPerSample\");\n const order = dict.get(\"Order\") || 1;\n if (order !== 1) {\n // No description how cubic spline interpolation works in PDF32000:2008\n // As in poppler, ignoring order, linear interpolation may work as good\n info(\"No support for cubic spline interpolation: \" + order);\n }\n\n let encode = toNumberArray(dict.getArray(\"Encode\"));\n if (!encode) {\n encode = [];\n for (let i = 0; i < inputSize; ++i) {\n encode.push([0, size[i] - 1]);\n }\n } else {\n encode = toMultiArray(encode);\n }\n\n let decode = toNumberArray(dict.getArray(\"Decode\"));\n if (!decode) {\n decode = range;\n } else {\n decode = toMultiArray(decode);\n }\n\n const samples = this.getSampleArray(size, outputSize, bps, fn);\n // const mask = 2 ** bps - 1;\n\n return function constructSampledFn(src, srcOffset, dest, destOffset) {\n // See chapter 3, page 110 of the PDF reference.\n\n // Building the cube vertices: its part and sample index\n // http://rjwagner49.com/Mathematics/Interpolation.pdf\n const cubeVertices = 1 << inputSize;\n const cubeN = new Float64Array(cubeVertices);\n const cubeVertex = new Uint32Array(cubeVertices);\n let i, j;\n for (j = 0; j < cubeVertices; j++) {\n cubeN[j] = 1;\n }\n\n let k = outputSize,\n pos = 1;\n // Map x_i to y_j for 0 <= i < m using the sampled function.\n for (i = 0; i < inputSize; ++i) {\n // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n const domain_2i = domain[i][0];\n const domain_2i_1 = domain[i][1];\n const xi = Math.min(\n Math.max(src[srcOffset + i], domain_2i),\n domain_2i_1\n );\n\n // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\n // Encode_2i, Encode_2i+1)\n let e = interpolate(\n xi,\n domain_2i,\n domain_2i_1,\n encode[i][0],\n encode[i][1]\n );\n\n // e_i' = min(max(e_i, 0), Size_i - 1)\n const size_i = size[i];\n e = Math.min(Math.max(e, 0), size_i - 1);\n\n // Adjusting the cube: N and vertex sample index\n const e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n const n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n const n1 = e - e0; // (e - e0) / (e1 - e0);\n const offset0 = e0 * k;\n const offset1 = offset0 + k; // e1 * k\n for (j = 0; j < cubeVertices; j++) {\n if (j & pos) {\n cubeN[j] *= n1;\n cubeVertex[j] += offset1;\n } else {\n cubeN[j] *= n0;\n cubeVertex[j] += offset0;\n }\n }\n\n k *= size_i;\n pos <<= 1;\n }\n\n for (j = 0; j < outputSize; ++j) {\n // Sum all cube vertices' samples portions\n let rj = 0;\n for (i = 0; i < cubeVertices; i++) {\n rj += samples[cubeVertex[i] + j] * cubeN[i];\n }\n\n // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\n // Decode_2j, Decode_2j+1)\n rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n\n // y_j = min(max(r_j, range_2j), range_2j+1)\n dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n }\n };\n }\n\n static constructInterpolated({ xref, isEvalSupported, dict }) {\n const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n const n = dict.get(\"N\");\n\n const diff = [];\n for (let i = 0, ii = c0.length; i < ii; ++i) {\n diff.push(c1[i] - c0[i]);\n }\n const length = diff.length;\n\n return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\n const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n for (let j = 0; j < length; ++j) {\n dest[destOffset + j] = c0[j] + x * diff[j];\n }\n };\n }\n\n static constructStiched({ xref, isEvalSupported, dict }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n\n if (!domain) {\n throw new FormatError(\"No domain\");\n }\n\n const inputSize = domain.length / 2;\n if (inputSize !== 1) {\n throw new FormatError(\"Bad domain for stiched function\");\n }\n\n const fnRefs = dict.get(\"Functions\");\n const fns = [];\n for (let i = 0, ii = fnRefs.length; i < ii; ++i) {\n fns.push(\n this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnRefs[i]) })\n );\n }\n\n const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n const encode = toNumberArray(dict.getArray(\"Encode\"));\n const tmpBuf = new Float32Array(1);\n\n return function constructStichedFn(src, srcOffset, dest, destOffset) {\n const clip = function constructStichedFromIRClip(v, min, max) {\n if (v > max) {\n v = max;\n } else if (v < min) {\n v = min;\n }\n return v;\n };\n\n // clip to domain\n const v = clip(src[srcOffset], domain[0], domain[1]);\n // calculate which bound the value is in\n const length = bounds.length;\n let i;\n for (i = 0; i < length; ++i) {\n if (v < bounds[i]) {\n break;\n }\n }\n\n // encode value into domain of function\n let dmin = domain[0];\n if (i > 0) {\n dmin = bounds[i - 1];\n }\n let dmax = domain[1];\n if (i < bounds.length) {\n dmax = bounds[i];\n }\n\n const rmin = encode[2 * i];\n const rmax = encode[2 * i + 1];\n\n // Prevent the value from becoming NaN as a result\n // of division by zero (fixes issue6113.pdf).\n tmpBuf[0] =\n dmin === dmax\n ? rmin\n : rmin + ((v - dmin) * (rmax - rmin)) / (dmax - dmin);\n\n // call the appropriate function\n fns[i](tmpBuf, 0, dest, destOffset);\n };\n }\n\n static constructPostScript({ xref, isEvalSupported, fn, dict }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n const range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain) {\n throw new FormatError(\"No domain.\");\n }\n\n if (!range) {\n throw new FormatError(\"No range.\");\n }\n\n const lexer = new PostScriptLexer(fn);\n const parser = new PostScriptParser(lexer);\n const code = parser.parse();\n\n if (isEvalSupported && IsEvalSupportedCached.value) {\n const compiled = new PostScriptCompiler().compile(code, domain, range);\n if (compiled) {\n // Compiled function consists of simple expressions such as addition,\n // subtraction, Math.max, and also contains 'var' and 'return'\n // statements. See the generation in the PostScriptCompiler below.\n // eslint-disable-next-line no-new-func\n return new Function(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n }\n }\n info(\"Unable to compile PS function\");\n\n const numOutputs = range.length >> 1;\n const numInputs = domain.length >> 1;\n const evaluator = new PostScriptEvaluator(code);\n // Cache the values for a big speed up, the cache size is limited though\n // since the number of possible values can be huge from a PS function.\n const cache = Object.create(null);\n // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\n // seen in our tests.\n const MAX_CACHE_SIZE = 2048 * 4;\n let cache_available = MAX_CACHE_SIZE;\n const tmpBuf = new Float32Array(numInputs);\n\n return function constructPostScriptFn(src, srcOffset, dest, destOffset) {\n let i, value;\n let key = \"\";\n const input = tmpBuf;\n for (i = 0; i < numInputs; i++) {\n value = src[srcOffset + i];\n input[i] = value;\n key += value + \"_\";\n }\n\n const cachedValue = cache[key];\n if (cachedValue !== undefined) {\n dest.set(cachedValue, destOffset);\n return;\n }\n\n const output = new Float32Array(numOutputs);\n const stack = evaluator.execute(input);\n const stackIndex = stack.length - numOutputs;\n for (i = 0; i < numOutputs; i++) {\n value = stack[stackIndex + i];\n let bound = range[i * 2];\n if (value < bound) {\n value = bound;\n } else {\n bound = range[i * 2 + 1];\n if (value > bound) {\n value = bound;\n }\n }\n output[i] = value;\n }\n if (cache_available > 0) {\n cache_available--;\n cache[key] = output;\n }\n dest.set(output, destOffset);\n };\n }\n}\n\nfunction isPDFFunction(v) {\n let fnDict;\n if (typeof v !== \"object\") {\n return false;\n } else if (isDict(v)) {\n fnDict = v;\n } else if (isStream(v)) {\n fnDict = v.dict;\n } else {\n return false;\n }\n return fnDict.has(\"FunctionType\");\n}\n\nclass PostScriptStack {\n static get MAX_STACK_SIZE() {\n return shadow(this, \"MAX_STACK_SIZE\", 100);\n }\n\n constructor(initialStack) {\n this.stack = !initialStack\n ? []\n : Array.prototype.slice.call(initialStack, 0);\n }\n\n push(value) {\n if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n this.stack.push(value);\n }\n\n pop() {\n if (this.stack.length <= 0) {\n throw new Error(\"PostScript function stack underflow.\");\n }\n return this.stack.pop();\n }\n\n copy(n) {\n if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n const stack = this.stack;\n for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n stack.push(stack[i]);\n }\n }\n\n index(n) {\n this.push(this.stack[this.stack.length - n - 1]);\n }\n\n // rotate the last n stack elements p times\n roll(n, p) {\n const stack = this.stack;\n const l = stack.length - n;\n const r = stack.length - 1;\n const c = l + (p - Math.floor(p / n) * n);\n\n for (let i = l, j = r; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n for (let i = l, j = c - 1; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n for (let i = c, j = r; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n }\n}\n\nclass PostScriptEvaluator {\n constructor(operators) {\n this.operators = operators;\n }\n\n execute(initialStack) {\n const stack = new PostScriptStack(initialStack);\n let counter = 0;\n const operators = this.operators;\n const length = operators.length;\n let operator, a, b;\n while (counter < length) {\n operator = operators[counter++];\n if (typeof operator === \"number\") {\n // Operator is really an operand and should be pushed to the stack.\n stack.push(operator);\n continue;\n }\n switch (operator) {\n // non standard ps operators\n case \"jz\": // jump if false\n b = stack.pop();\n a = stack.pop();\n if (!a) {\n counter = b;\n }\n break;\n case \"j\": // jump\n a = stack.pop();\n counter = a;\n break;\n\n // all ps operators in alphabetical order (excluding if/ifelse)\n case \"abs\":\n a = stack.pop();\n stack.push(Math.abs(a));\n break;\n case \"add\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a + b);\n break;\n case \"and\":\n b = stack.pop();\n a = stack.pop();\n if (isBool(a) && isBool(b)) {\n stack.push(a && b);\n } else {\n stack.push(a & b);\n }\n break;\n case \"atan\":\n a = stack.pop();\n stack.push(Math.atan(a));\n break;\n case \"bitshift\":\n b = stack.pop();\n a = stack.pop();\n if (a > 0) {\n stack.push(a << b);\n } else {\n stack.push(a >> b);\n }\n break;\n case \"ceiling\":\n a = stack.pop();\n stack.push(Math.ceil(a));\n break;\n case \"copy\":\n a = stack.pop();\n stack.copy(a);\n break;\n case \"cos\":\n a = stack.pop();\n stack.push(Math.cos(a));\n break;\n case \"cvi\":\n a = stack.pop() | 0;\n stack.push(a);\n break;\n case \"cvr\":\n // noop\n break;\n case \"div\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a / b);\n break;\n case \"dup\":\n stack.copy(1);\n break;\n case \"eq\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a === b);\n break;\n case \"exch\":\n stack.roll(2, 1);\n break;\n case \"exp\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a ** b);\n break;\n case \"false\":\n stack.push(false);\n break;\n case \"floor\":\n a = stack.pop();\n stack.push(Math.floor(a));\n break;\n case \"ge\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a >= b);\n break;\n case \"gt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a > b);\n break;\n case \"idiv\":\n b = stack.pop();\n a = stack.pop();\n stack.push((a / b) | 0);\n break;\n case \"index\":\n a = stack.pop();\n stack.index(a);\n break;\n case \"le\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a <= b);\n break;\n case \"ln\":\n a = stack.pop();\n stack.push(Math.log(a));\n break;\n case \"log\":\n a = stack.pop();\n stack.push(Math.log(a) / Math.LN10);\n break;\n case \"lt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a < b);\n break;\n case \"mod\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a % b);\n break;\n case \"mul\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a * b);\n break;\n case \"ne\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a !== b);\n break;\n case \"neg\":\n a = stack.pop();\n stack.push(-a);\n break;\n case \"not\":\n a = stack.pop();\n if (isBool(a)) {\n stack.push(!a);\n } else {\n stack.push(~a);\n }\n break;\n case \"or\":\n b = stack.pop();\n a = stack.pop();\n if (isBool(a) && isBool(b)) {\n stack.push(a || b);\n } else {\n stack.push(a | b);\n }\n break;\n case \"pop\":\n stack.pop();\n break;\n case \"roll\":\n b = stack.pop();\n a = stack.pop();\n stack.roll(a, b);\n break;\n case \"round\":\n a = stack.pop();\n stack.push(Math.round(a));\n break;\n case \"sin\":\n a = stack.pop();\n stack.push(Math.sin(a));\n break;\n case \"sqrt\":\n a = stack.pop();\n stack.push(Math.sqrt(a));\n break;\n case \"sub\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a - b);\n break;\n case \"true\":\n stack.push(true);\n break;\n case \"truncate\":\n a = stack.pop();\n a = a < 0 ? Math.ceil(a) : Math.floor(a);\n stack.push(a);\n break;\n case \"xor\":\n b = stack.pop();\n a = stack.pop();\n if (isBool(a) && isBool(b)) {\n stack.push(a !== b);\n } else {\n stack.push(a ^ b);\n }\n break;\n default:\n throw new FormatError(`Unknown operator ${operator}`);\n }\n }\n return stack.stack;\n }\n}\n\n// Most of the PDFs functions consist of simple operations such as:\n// roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\n//\n// We can compile most of such programs, and at the same moment, we can\n// optimize some expressions using basic math properties. Keeping track of\n// min/max values will allow us to avoid extra Math.min/Math.max calls.\nconst PostScriptCompiler = (function PostScriptCompilerClosure() {\n class AstNode {\n constructor(type) {\n this.type = type;\n }\n\n visit(visitor) {\n unreachable(\"abstract method\");\n }\n }\n\n class AstArgument extends AstNode {\n constructor(index, min, max) {\n super(\"args\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitArgument(this);\n }\n }\n\n class AstLiteral extends AstNode {\n constructor(number) {\n super(\"literal\");\n this.number = number;\n this.min = number;\n this.max = number;\n }\n\n visit(visitor) {\n visitor.visitLiteral(this);\n }\n }\n\n class AstBinaryOperation extends AstNode {\n constructor(op, arg1, arg2, min, max) {\n super(\"binary\");\n this.op = op;\n this.arg1 = arg1;\n this.arg2 = arg2;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitBinaryOperation(this);\n }\n }\n\n class AstMin extends AstNode {\n constructor(arg, max) {\n super(\"max\");\n this.arg = arg;\n this.min = arg.min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitMin(this);\n }\n }\n\n class AstVariable extends AstNode {\n constructor(index, min, max) {\n super(\"var\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitVariable(this);\n }\n }\n\n class AstVariableDefinition extends AstNode {\n constructor(variable, arg) {\n super(\"definition\");\n this.variable = variable;\n this.arg = arg;\n }\n\n visit(visitor) {\n visitor.visitVariableDefinition(this);\n }\n }\n\n class ExpressionBuilderVisitor {\n constructor() {\n this.parts = [];\n }\n\n visitArgument(arg) {\n this.parts.push(\n \"Math.max(\",\n arg.min,\n \", Math.min(\",\n arg.max,\n \", src[srcOffset + \",\n arg.index,\n \"]))\"\n );\n }\n\n visitVariable(variable) {\n this.parts.push(\"v\", variable.index);\n }\n\n visitLiteral(literal) {\n this.parts.push(literal.number);\n }\n\n visitBinaryOperation(operation) {\n this.parts.push(\"(\");\n operation.arg1.visit(this);\n this.parts.push(\" \", operation.op, \" \");\n operation.arg2.visit(this);\n this.parts.push(\")\");\n }\n\n visitVariableDefinition(definition) {\n this.parts.push(\"var \");\n definition.variable.visit(this);\n this.parts.push(\" = \");\n definition.arg.visit(this);\n this.parts.push(\";\");\n }\n\n visitMin(max) {\n this.parts.push(\"Math.min(\");\n max.arg.visit(this);\n this.parts.push(\", \", max.max, \")\");\n }\n\n toString() {\n return this.parts.join(\"\");\n }\n }\n\n function buildAddOperation(num1, num2) {\n if (num2.type === \"literal\" && num2.number === 0) {\n // optimization: second operand is 0\n return num1;\n }\n if (num1.type === \"literal\" && num1.number === 0) {\n // optimization: first operand is 0\n return num2;\n }\n if (num2.type === \"literal\" && num1.type === \"literal\") {\n // optimization: operands operand are literals\n return new AstLiteral(num1.number + num2.number);\n }\n return new AstBinaryOperation(\n \"+\",\n num1,\n num2,\n num1.min + num2.min,\n num1.max + num2.max\n );\n }\n\n function buildMulOperation(num1, num2) {\n if (num2.type === \"literal\") {\n // optimization: second operands is a literal...\n if (num2.number === 0) {\n return new AstLiteral(0); // and it's 0\n } else if (num2.number === 1) {\n return num1; // and it's 1\n } else if (num1.type === \"literal\") {\n // ... and first operands is a literal too\n return new AstLiteral(num1.number * num2.number);\n }\n }\n if (num1.type === \"literal\") {\n // optimization: first operands is a literal...\n if (num1.number === 0) {\n return new AstLiteral(0); // and it's 0\n } else if (num1.number === 1) {\n return num2; // and it's 1\n }\n }\n const min = Math.min(\n num1.min * num2.min,\n num1.min * num2.max,\n num1.max * num2.min,\n num1.max * num2.max\n );\n const max = Math.max(\n num1.min * num2.min,\n num1.min * num2.max,\n num1.max * num2.min,\n num1.max * num2.max\n );\n return new AstBinaryOperation(\"*\", num1, num2, min, max);\n }\n\n function buildSubOperation(num1, num2) {\n if (num2.type === \"literal\") {\n // optimization: second operands is a literal...\n if (num2.number === 0) {\n return num1; // ... and it's 0\n } else if (num1.type === \"literal\") {\n // ... and first operands is a literal too\n return new AstLiteral(num1.number - num2.number);\n }\n }\n if (\n num2.type === \"binary\" &&\n num2.op === \"-\" &&\n num1.type === \"literal\" &&\n num1.number === 1 &&\n num2.arg1.type === \"literal\" &&\n num2.arg1.number === 1\n ) {\n // optimization for case: 1 - (1 - x)\n return num2.arg2;\n }\n return new AstBinaryOperation(\n \"-\",\n num1,\n num2,\n num1.min - num2.max,\n num1.max - num2.min\n );\n }\n\n function buildMinOperation(num1, max) {\n if (num1.min >= max) {\n // optimization: num1 min value is not less than required max\n return new AstLiteral(max); // just returning max\n } else if (num1.max <= max) {\n // optimization: num1 max value is not greater than required max\n return num1; // just returning an argument\n }\n return new AstMin(num1, max);\n }\n\n // eslint-disable-next-line no-shadow\n class PostScriptCompiler {\n compile(code, domain, range) {\n const stack = [];\n const instructions = [];\n const inputSize = domain.length >> 1,\n outputSize = range.length >> 1;\n let lastRegister = 0;\n let n, j;\n let num1, num2, ast1, ast2, tmpVar, item;\n for (let i = 0; i < inputSize; i++) {\n stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n }\n\n for (let i = 0, ii = code.length; i < ii; i++) {\n item = code[i];\n if (typeof item === \"number\") {\n stack.push(new AstLiteral(item));\n continue;\n }\n\n switch (item) {\n case \"add\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildAddOperation(num1, num2));\n break;\n case \"cvr\":\n if (stack.length < 1) {\n return null;\n }\n break;\n case \"mul\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildMulOperation(num1, num2));\n break;\n case \"sub\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildSubOperation(num1, num2));\n break;\n case \"exch\":\n if (stack.length < 2) {\n return null;\n }\n ast1 = stack.pop();\n ast2 = stack.pop();\n stack.push(ast1, ast2);\n break;\n case \"pop\":\n if (stack.length < 1) {\n return null;\n }\n stack.pop();\n break;\n case \"index\":\n if (stack.length < 1) {\n return null;\n }\n num1 = stack.pop();\n if (num1.type !== \"literal\") {\n return null;\n }\n n = num1.number;\n if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n return null;\n }\n ast1 = stack[stack.length - n - 1];\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n stack.push(ast1);\n break;\n }\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - n - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n case \"dup\":\n if (stack.length < 1) {\n return null;\n }\n if (\n typeof code[i + 1] === \"number\" &&\n code[i + 2] === \"gt\" &&\n code[i + 3] === i + 7 &&\n code[i + 4] === \"jz\" &&\n code[i + 5] === \"pop\" &&\n code[i + 6] === code[i + 1]\n ) {\n // special case of the commands sequence for the min operation\n num1 = stack.pop();\n stack.push(buildMinOperation(num1, code[i + 1]));\n i += 6;\n break;\n }\n ast1 = stack[stack.length - 1];\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n // we don't have to save into intermediate variable a literal or\n // variable.\n stack.push(ast1);\n break;\n }\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n case \"roll\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n // both roll operands must be numbers\n return null;\n }\n j = num2.number;\n n = num1.number;\n if (\n n <= 0 ||\n !Number.isInteger(n) ||\n !Number.isInteger(j) ||\n stack.length < n\n ) {\n // ... and integers\n return null;\n }\n j = ((j % n) + n) % n;\n if (j === 0) {\n break; // just skipping -- there are nothing to rotate\n }\n Array.prototype.push.apply(\n stack,\n stack.splice(stack.length - n, n - j)\n );\n break;\n default:\n return null; // unsupported operator\n }\n }\n\n if (stack.length !== outputSize) {\n return null;\n }\n\n const result = [];\n for (const instruction of instructions) {\n const statementBuilder = new ExpressionBuilderVisitor();\n instruction.visit(statementBuilder);\n result.push(statementBuilder.toString());\n }\n for (let i = 0, ii = stack.length; i < ii; i++) {\n const expr = stack[i],\n statementBuilder = new ExpressionBuilderVisitor();\n expr.visit(statementBuilder);\n const min = range[i * 2],\n max = range[i * 2 + 1];\n const out = [statementBuilder.toString()];\n if (min > expr.min) {\n out.unshift(\"Math.max(\", min, \", \");\n out.push(\")\");\n }\n if (max < expr.max) {\n out.unshift(\"Math.min(\", max, \", \");\n out.push(\")\");\n }\n out.unshift(\"dest[destOffset + \", i, \"] = \");\n out.push(\";\");\n result.push(out.join(\"\"));\n }\n return result.join(\"\\n\");\n }\n }\n\n return PostScriptCompiler;\n})();\n\nexport {\n isPDFFunction,\n PDFFunctionFactory,\n PostScriptCompiler,\n PostScriptEvaluator,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, shadow } from \"../shared/util.js\";\nimport { EOF } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass PostScriptParser {\n constructor(lexer) {\n this.lexer = lexer;\n this.operators = [];\n this.token = null;\n this.prev = null;\n }\n\n nextToken() {\n this.prev = this.token;\n this.token = this.lexer.getToken();\n }\n\n accept(type) {\n if (this.token.type === type) {\n this.nextToken();\n return true;\n }\n return false;\n }\n\n expect(type) {\n if (this.accept(type)) {\n return true;\n }\n throw new FormatError(\n `Unexpected symbol: found ${this.token.type} expected ${type}.`\n );\n }\n\n parse() {\n this.nextToken();\n this.expect(PostScriptTokenTypes.LBRACE);\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n return this.operators;\n }\n\n parseBlock() {\n while (true) {\n if (this.accept(PostScriptTokenTypes.NUMBER)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n this.parseCondition();\n } else {\n return;\n }\n }\n }\n\n parseCondition() {\n // Add two place holders that will be updated later\n const conditionLocation = this.operators.length;\n this.operators.push(null, null);\n\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n if (this.accept(PostScriptTokenTypes.IF)) {\n // The true block is right after the 'if' so it just falls through on true\n // else it jumps and skips the true block.\n this.operators[conditionLocation] = this.operators.length;\n this.operators[conditionLocation + 1] = \"jz\";\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n const jumpLocation = this.operators.length;\n this.operators.push(null, null);\n const endOfTrue = this.operators.length;\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n this.expect(PostScriptTokenTypes.IFELSE);\n // The jump is added at the end of the true block to skip the false block.\n this.operators[jumpLocation] = this.operators.length;\n this.operators[jumpLocation + 1] = \"j\";\n\n this.operators[conditionLocation] = endOfTrue;\n this.operators[conditionLocation + 1] = \"jz\";\n } else {\n throw new FormatError(\"PS Function: error parsing conditional.\");\n }\n }\n}\n\nconst PostScriptTokenTypes = {\n LBRACE: 0,\n RBRACE: 1,\n NUMBER: 2,\n OPERATOR: 3,\n IF: 4,\n IFELSE: 5,\n};\n\nclass PostScriptToken {\n static get opCache() {\n return shadow(this, \"opCache\", Object.create(null));\n }\n\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n\n static getOperator(op) {\n const opValue = PostScriptToken.opCache[op];\n if (opValue) {\n return opValue;\n }\n return (PostScriptToken.opCache[op] = new PostScriptToken(\n PostScriptTokenTypes.OPERATOR,\n op\n ));\n }\n\n static get LBRACE() {\n return shadow(\n this,\n \"LBRACE\",\n new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\")\n );\n }\n\n static get RBRACE() {\n return shadow(\n this,\n \"RBRACE\",\n new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\")\n );\n }\n\n static get IF() {\n return shadow(\n this,\n \"IF\",\n new PostScriptToken(PostScriptTokenTypes.IF, \"IF\")\n );\n }\n\n static get IFELSE() {\n return shadow(\n this,\n \"IFELSE\",\n new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\")\n );\n }\n}\n\nclass PostScriptLexer {\n constructor(stream) {\n this.stream = stream;\n this.nextChar();\n\n this.strBuf = [];\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n getToken() {\n let comment = false;\n let ch = this.currentChar;\n\n // skip comments\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (!isWhiteSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n switch (ch | 0) {\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n case 0x38: // '8'\n case 0x39: // '9'\n case 0x2b: // '+'\n case 0x2d: // '-'\n case 0x2e: // '.'\n return new PostScriptToken(\n PostScriptTokenTypes.NUMBER,\n this.getNumber()\n );\n case 0x7b: // '{'\n this.nextChar();\n return PostScriptToken.LBRACE;\n case 0x7d: // '}'\n this.nextChar();\n return PostScriptToken.RBRACE;\n }\n // operator\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while (\n (ch = this.nextChar()) >= 0 &&\n ((ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x5a) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x7a))\n ) {\n strBuf.push(String.fromCharCode(ch));\n }\n const str = strBuf.join(\"\");\n switch (str.toLowerCase()) {\n case \"if\":\n return PostScriptToken.IF;\n case \"ifelse\":\n return PostScriptToken.IFELSE;\n default:\n return PostScriptToken.getOperator(str);\n }\n }\n\n getNumber() {\n let ch = this.currentChar;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while ((ch = this.nextChar()) >= 0) {\n if (\n (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) ||\n ch === /* '-' = */ 0x2d ||\n ch === /* '.' = */ 0x2e\n ) {\n strBuf.push(String.fromCharCode(ch));\n } else {\n break;\n }\n }\n const value = parseFloat(strBuf.join(\"\"));\n if (isNaN(value)) {\n throw new FormatError(`Invalid floating point number: ${value}`);\n }\n return value;\n }\n}\n\nexport { PostScriptLexer, PostScriptParser };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable, warn } from \"../shared/util.js\";\nimport { RefSetCache } from \"./primitives.js\";\n\nclass BaseLocalCache {\n constructor(options) {\n if (this.constructor === BaseLocalCache) {\n unreachable(\"Cannot initialize BaseLocalCache.\");\n }\n this._onlyRefs = (options && options.onlyRefs) === true;\n\n if (!this._onlyRefs) {\n this._nameRefMap = new Map();\n this._imageMap = new Map();\n }\n this._imageCache = new RefSetCache();\n }\n\n getByName(name) {\n if (this._onlyRefs) {\n unreachable(\"Should not call `getByName` method.\");\n }\n const ref = this._nameRefMap.get(name);\n if (ref) {\n return this.getByRef(ref);\n }\n return this._imageMap.get(name) || null;\n }\n\n getByRef(ref) {\n return this._imageCache.get(ref) || null;\n }\n\n set(name, ref, data) {\n unreachable(\"Abstract method `set` called.\");\n }\n}\n\nclass LocalImageCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalImageCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalColorSpaceCache extends BaseLocalCache {\n set(name = null, ref = null, data) {\n if (typeof name !== \"string\" && !ref) {\n throw new Error(\n 'LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.'\n );\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n if (name !== null) {\n // Optional when `ref` is defined.\n this._nameRefMap.set(name, ref);\n }\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalFunctionCache extends BaseLocalCache {\n constructor(options) {\n super({ onlyRefs: true });\n }\n\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\n\nclass LocalGStateCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalTilingPatternCache extends BaseLocalCache {\n constructor(options) {\n super({ onlyRefs: true });\n }\n\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalTilingPatternCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\n\nclass GlobalImageCache {\n static get NUM_PAGES_THRESHOLD() {\n return shadow(this, \"NUM_PAGES_THRESHOLD\", 2);\n }\n\n static get MIN_IMAGES_TO_CACHE() {\n return shadow(this, \"MIN_IMAGES_TO_CACHE\", 10);\n }\n\n static get MAX_BYTE_SIZE() {\n return shadow(this, \"MAX_BYTE_SIZE\", /* Forty megabytes = */ 40e6);\n }\n\n constructor() {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n GlobalImageCache.NUM_PAGES_THRESHOLD > 1,\n \"GlobalImageCache - invalid NUM_PAGES_THRESHOLD constant.\"\n );\n }\n this._refCache = new RefSetCache();\n this._imageCache = new RefSetCache();\n }\n\n get _byteSize() {\n let byteSize = 0;\n this._imageCache.forEach(imageData => {\n byteSize += imageData.byteSize;\n });\n return byteSize;\n }\n\n get _cacheLimitReached() {\n if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) {\n return false;\n }\n if (this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) {\n return false;\n }\n return true;\n }\n\n shouldCache(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n const numPages = pageIndexSet\n ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1)\n : 1;\n\n if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return false;\n }\n if (!this._imageCache.has(ref) && this._cacheLimitReached) {\n return false;\n }\n return true;\n }\n\n addPageIndex(ref, pageIndex) {\n let pageIndexSet = this._refCache.get(ref);\n if (!pageIndexSet) {\n pageIndexSet = new Set();\n this._refCache.put(ref, pageIndexSet);\n }\n pageIndexSet.add(pageIndex);\n }\n\n /**\n * PLEASE NOTE: Must be called *after* the `setData` method.\n */\n addByteSize(ref, byteSize) {\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return; // The image data isn't cached (the limit was reached).\n }\n if (imageData.byteSize) {\n return; // The byte-size has already been set.\n }\n imageData.byteSize = byteSize;\n }\n\n getData(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n if (!pageIndexSet) {\n return null;\n }\n if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return null;\n }\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return null;\n }\n // Ensure that we keep track of all pages containing the image reference.\n pageIndexSet.add(pageIndex);\n\n return imageData;\n }\n\n setData(ref, data) {\n if (!this._refCache.has(ref)) {\n throw new Error(\n 'GlobalImageCache.setData - expected \"addPageIndex\" to have been called.'\n );\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n if (this._cacheLimitReached) {\n warn(\"GlobalImageCache.setData - cache limit reached.\");\n return;\n }\n this._imageCache.put(ref, data);\n }\n\n clear(onlyData = false) {\n if (!onlyData) {\n this._refCache.clear();\n }\n this._imageCache.clear();\n }\n}\n\nexport {\n GlobalImageCache,\n LocalColorSpaceCache,\n LocalFunctionCache,\n LocalGStateCache,\n LocalImageCache,\n LocalTilingPatternCache,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { warn } from \"../shared/util.js\";\n\n// Character types for symbols from 0000 to 00FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// prettier-ignore\nconst baseTypes = [\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\",\n \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\",\n \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\",\n \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\",\n \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\",\n \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\",\n \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\",\n \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"\n];\n\n// Character types for symbols from 0600 to 06FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// Note that 061D does not exist in the Unicode standard (see\n// http://unicode.org/charts/PDF/U0600.pdf), so we replace it with an\n// empty string and issue a warning if we encounter this character. The\n// empty string is required to properly index the items after it.\n// prettier-ignore\nconst arabicTypes = [\n \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\",\n \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\",\n \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\",\n \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\",\n \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\",\n \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"\n];\n\nfunction isOdd(i) {\n return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n let j, jj;\n for (j = start, jj = arr.length; j < jj; ++j) {\n if (arr[j] !== value) {\n return j;\n }\n }\n return j;\n}\n\nfunction setValues(arr, start, end, value) {\n for (let j = start; j < end; ++j) {\n arr[j] = value;\n }\n}\n\nfunction reverseValues(arr, start, end) {\n for (let i = start, j = end - 1; i < j; ++i, --j) {\n const temp = arr[i];\n arr[i] = arr[j];\n arr[j] = temp;\n }\n}\n\nfunction createBidiText(str, isLTR, vertical = false) {\n let dir = \"ltr\";\n if (vertical) {\n dir = \"ttb\";\n } else if (!isLTR) {\n dir = \"rtl\";\n }\n return { str, dir };\n}\n\n// These are used in bidi(), which is called frequently. We re-use them on\n// each call to avoid unnecessary allocations.\nconst chars = [];\nconst types = [];\n\nfunction bidi(str, startLevel = -1, vertical = false) {\n let isLTR = true;\n const strLength = str.length;\n if (strLength === 0 || vertical) {\n return createBidiText(str, isLTR, vertical);\n }\n\n // Get types and fill arrays\n chars.length = strLength;\n types.length = strLength;\n let numBidi = 0;\n\n let i, ii;\n for (i = 0; i < strLength; ++i) {\n chars[i] = str.charAt(i);\n\n const charCode = str.charCodeAt(i);\n let charType = \"L\";\n if (charCode <= 0x00ff) {\n charType = baseTypes[charCode];\n } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n charType = \"R\";\n } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n charType = arabicTypes[charCode & 0xff];\n if (!charType) {\n warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n }\n } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n charType = \"AL\";\n }\n if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n numBidi++;\n }\n types[i] = charType;\n }\n\n // Detect the bidi method\n // - If there are no rtl characters then no bidi needed\n // - If less than 30% chars are rtl then string is primarily ltr,\n // unless the string is very short.\n // - If more than 30% chars are rtl then string is primarily rtl\n if (numBidi === 0) {\n isLTR = true;\n return createBidiText(str, isLTR);\n }\n\n if (startLevel === -1) {\n if (numBidi / strLength < 0.3 && strLength > 4) {\n isLTR = true;\n startLevel = 0;\n } else {\n isLTR = false;\n startLevel = 1;\n }\n }\n\n const levels = [];\n for (i = 0; i < strLength; ++i) {\n levels[i] = startLevel;\n }\n\n /*\n X1-X10: skip most of this, since we are NOT doing the embeddings.\n */\n const e = isOdd(startLevel) ? \"R\" : \"L\";\n const sor = e;\n const eor = sor;\n\n /*\n W1. Examine each non-spacing mark (NSM) in the level run, and change the\n type of the NSM to the type of the previous character. If the NSM is at the\n start of the level run, it will get the type of sor.\n */\n let lastType = sor;\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"NSM\") {\n types[i] = lastType;\n } else {\n lastType = types[i];\n }\n }\n\n /*\n W2. Search backwards from each instance of a European number until the\n first strong type (R, L, AL, or sor) is found. If an AL is found, change\n the type of the European number to Arabic number.\n */\n lastType = sor;\n let t;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n lastType = t;\n }\n }\n\n /*\n W3. Change all ALs to R.\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"AL\") {\n types[i] = \"R\";\n }\n }\n\n /*\n W4. A single European separator between two European numbers changes to a\n European number. A single common separator between two numbers of the same\n type changes to that type:\n */\n for (i = 1; i < strLength - 1; ++i) {\n if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n types[i] = \"EN\";\n }\n if (\n types[i] === \"CS\" &&\n (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") &&\n types[i + 1] === types[i - 1]\n ) {\n types[i] = types[i - 1];\n }\n }\n\n /*\n W5. A sequence of European terminators adjacent to European numbers changes\n to all European numbers:\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"EN\") {\n // do before\n for (let j = i - 1; j >= 0; --j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n // do after\n for (let j = i + 1; j < strLength; ++j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n }\n }\n\n /*\n W6. Otherwise, separators and terminators change to Other Neutral:\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n types[i] = \"ON\";\n }\n }\n\n /*\n W7. Search backwards from each instance of a European number until the\n first strong type (R, L, or sor) is found. If an L is found, then change\n the type of the European number to L.\n */\n lastType = sor;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n } else if (t === \"R\" || t === \"L\") {\n lastType = t;\n }\n }\n\n /*\n N1. A sequence of neutrals takes the direction of the surrounding strong\n text if the text on both sides has the same direction. European and Arabic\n numbers are treated as though they were R. Start-of-level-run (sor) and\n end-of-level-run (eor) are used at level run boundaries.\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n const end = findUnequal(types, i + 1, \"ON\");\n let before = sor;\n if (i > 0) {\n before = types[i - 1];\n }\n\n let after = eor;\n if (end + 1 < strLength) {\n after = types[end + 1];\n }\n if (before !== \"L\") {\n before = \"R\";\n }\n if (after !== \"L\") {\n after = \"R\";\n }\n if (before === after) {\n setValues(types, i, end, before);\n }\n i = end - 1; // reset to end (-1 so next iteration is ok)\n }\n }\n\n /*\n N2. Any remaining neutrals take the embedding direction.\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n types[i] = e;\n }\n }\n\n /*\n I1. For all characters with an even (left-to-right) embedding direction,\n those of type R go up one level and those of type AN or EN go up two\n levels.\n I2. For all characters with an odd (right-to-left) embedding direction,\n those of type L, EN or AN go up one level.\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (isEven(levels[i])) {\n if (t === \"R\") {\n levels[i] += 1;\n } else if (t === \"AN\" || t === \"EN\") {\n levels[i] += 2;\n }\n } else {\n // isOdd\n if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n levels[i] += 1;\n }\n }\n }\n\n /*\n L1. On each line, reset the embedding level of the following characters to\n the paragraph embedding level:\n\n segment separators,\n paragraph separators,\n any sequence of whitespace characters preceding a segment separator or\n paragraph separator, and any sequence of white space characters at the end\n of the line.\n */\n\n // don't bother as text is only single line\n\n /*\n L2. From the highest level found in the text to the lowest odd level on\n each line, reverse any contiguous sequence of characters that are at that\n level or higher.\n */\n\n // find highest level & lowest odd level\n let highestLevel = -1;\n let lowestOddLevel = 99;\n let level;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n level = levels[i];\n if (highestLevel < level) {\n highestLevel = level;\n }\n if (lowestOddLevel > level && isOdd(level)) {\n lowestOddLevel = level;\n }\n }\n\n // now reverse between those limits\n for (level = highestLevel; level >= lowestOddLevel; --level) {\n // find segments to reverse\n let start = -1;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n if (levels[i] < level) {\n if (start >= 0) {\n reverseValues(chars, start, i);\n start = -1;\n }\n } else if (start < 0) {\n start = i;\n }\n }\n if (start >= 0) {\n reverseValues(chars, start, levels.length);\n }\n }\n\n /*\n L3. Combining marks applied to a right-to-left base character will at this\n point precede their base character. If the rendering engine expects them to\n follow the base characters in the final display process, then the ordering\n of the marks and the base character must be reversed.\n */\n\n // don't bother for now\n\n /*\n L4. A character that possesses the mirrored property as specified by\n Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\n directionality of that character is R.\n */\n\n // don't mirror as characters are already mirrored in the pdf\n\n // Finally, return string\n for (i = 0, ii = chars.length; i < ii; ++i) {\n const ch = chars[i];\n if (ch === \"<\" || ch === \">\") {\n chars[i] = \"\";\n }\n }\n return createBidiText(chars.join(\"\"), isLTR);\n}\n\nexport { bidi };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n// The Metrics object contains glyph widths (in glyph space units).\n// As per PDF spec, for most fonts (Type 3 being an exception) a glyph\n// space unit corresponds to 1/1000th of text space unit.\nconst getMetrics = getLookupTableFactory(function (t) {\n t.Courier = 600;\n t[\"Courier-Bold\"] = 600;\n t[\"Courier-BoldOblique\"] = 600;\n t[\"Courier-Oblique\"] = 600;\n // eslint-disable-next-line no-shadow\n t.Helvetica = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-Oblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t.Symbol = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.universal = 713;\n t.numbersign = 500;\n t.existential = 549;\n t.percent = 833;\n t.ampersand = 778;\n t.suchthat = 439;\n t.parenleft = 333;\n t.parenright = 333;\n t.asteriskmath = 500;\n t.plus = 549;\n t.comma = 250;\n t.minus = 549;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 549;\n t.equal = 549;\n t.greater = 549;\n t.question = 444;\n t.congruent = 549;\n t.Alpha = 722;\n t.Beta = 667;\n t.Chi = 722;\n t.Delta = 612;\n t.Epsilon = 611;\n t.Phi = 763;\n t.Gamma = 603;\n t.Eta = 722;\n t.Iota = 333;\n t.theta1 = 631;\n t.Kappa = 722;\n t.Lambda = 686;\n t.Mu = 889;\n t.Nu = 722;\n t.Omicron = 722;\n t.Pi = 768;\n t.Theta = 741;\n t.Rho = 556;\n t.Sigma = 592;\n t.Tau = 611;\n t.Upsilon = 690;\n t.sigma1 = 439;\n t.Omega = 768;\n t.Xi = 645;\n t.Psi = 795;\n t.Zeta = 611;\n t.bracketleft = 333;\n t.therefore = 863;\n t.bracketright = 333;\n t.perpendicular = 658;\n t.underscore = 500;\n t.radicalex = 500;\n t.alpha = 631;\n t.beta = 549;\n t.chi = 549;\n t.delta = 494;\n t.epsilon = 439;\n t.phi = 521;\n t.gamma = 411;\n t.eta = 603;\n t.iota = 329;\n t.phi1 = 603;\n t.kappa = 549;\n t.lambda = 549;\n t.mu = 576;\n t.nu = 521;\n t.omicron = 549;\n t.pi = 549;\n t.theta = 521;\n t.rho = 549;\n t.sigma = 603;\n t.tau = 439;\n t.upsilon = 576;\n t.omega1 = 713;\n t.omega = 686;\n t.xi = 493;\n t.psi = 686;\n t.zeta = 494;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.similar = 549;\n t.Euro = 750;\n t.Upsilon1 = 620;\n t.minute = 247;\n t.lessequal = 549;\n t.fraction = 167;\n t.infinity = 713;\n t.florin = 500;\n t.club = 753;\n t.diamond = 753;\n t.heart = 753;\n t.spade = 753;\n t.arrowboth = 1042;\n t.arrowleft = 987;\n t.arrowup = 603;\n t.arrowright = 987;\n t.arrowdown = 603;\n t.degree = 400;\n t.plusminus = 549;\n t.second = 411;\n t.greaterequal = 549;\n t.multiply = 549;\n t.proportional = 713;\n t.partialdiff = 494;\n t.bullet = 460;\n t.divide = 549;\n t.notequal = 549;\n t.equivalence = 549;\n t.approxequal = 549;\n t.ellipsis = 1000;\n t.arrowvertex = 603;\n t.arrowhorizex = 1000;\n t.carriagereturn = 658;\n t.aleph = 823;\n t.Ifraktur = 686;\n t.Rfraktur = 795;\n t.weierstrass = 987;\n t.circlemultiply = 768;\n t.circleplus = 768;\n t.emptyset = 823;\n t.intersection = 768;\n t.union = 768;\n t.propersuperset = 713;\n t.reflexsuperset = 713;\n t.notsubset = 713;\n t.propersubset = 713;\n t.reflexsubset = 713;\n t.element = 713;\n t.notelement = 713;\n t.angle = 768;\n t.gradient = 713;\n t.registerserif = 790;\n t.copyrightserif = 790;\n t.trademarkserif = 890;\n t.product = 823;\n t.radical = 549;\n t.dotmath = 250;\n t.logicalnot = 713;\n t.logicaland = 603;\n t.logicalor = 603;\n t.arrowdblboth = 1042;\n t.arrowdblleft = 987;\n t.arrowdblup = 603;\n t.arrowdblright = 987;\n t.arrowdbldown = 603;\n t.lozenge = 494;\n t.angleleft = 329;\n t.registersans = 790;\n t.copyrightsans = 790;\n t.trademarksans = 786;\n t.summation = 713;\n t.parenlefttp = 384;\n t.parenleftex = 384;\n t.parenleftbt = 384;\n t.bracketlefttp = 384;\n t.bracketleftex = 384;\n t.bracketleftbt = 384;\n t.bracelefttp = 494;\n t.braceleftmid = 494;\n t.braceleftbt = 494;\n t.braceex = 494;\n t.angleright = 329;\n t.integral = 274;\n t.integraltp = 686;\n t.integralex = 686;\n t.integralbt = 686;\n t.parenrighttp = 384;\n t.parenrightex = 384;\n t.parenrightbt = 384;\n t.bracketrighttp = 384;\n t.bracketrightex = 384;\n t.bracketrightbt = 384;\n t.bracerighttp = 494;\n t.bracerightmid = 494;\n t.bracerightbt = 494;\n t.apple = 790;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Roman\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 408;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 564;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 564;\n t.equal = 564;\n t.greater = 564;\n t.question = 444;\n t.at = 921;\n t.A = 722;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 556;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 389;\n t.K = 722;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 556;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 722;\n t.W = 944;\n t.X = 722;\n t.Y = 722;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 469;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 444;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 333;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.asciitilde = 541;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 180;\n t.quotedblleft = 444;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 453;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 444;\n t.quotedblright = 444;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 444;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 889;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 444;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 564;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 444;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 444;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 444;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 444;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 444;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 444;\n t.Amacron = 722;\n t.rcaron = 333;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 556;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 588;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 564;\n t.uacute = 500;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 444;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 722;\n t.Iacute = 333;\n t.plusminus = 564;\n t.brokenbar = 200;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 333;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 326;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 444;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 344;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 722;\n t.zdotaccent = 444;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 500;\n t.minus = 564;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 564;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 1000;\n t.ampersand = 833;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 930;\n t.A = 722;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 778;\n t.L = 667;\n t.M = 944;\n t.N = 722;\n t.O = 778;\n t.P = 611;\n t.Q = 778;\n t.R = 722;\n t.S = 556;\n t.T = 667;\n t.U = 722;\n t.V = 722;\n t.W = 1000;\n t.X = 722;\n t.Y = 722;\n t.Z = 667;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 581;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 556;\n t.c = 444;\n t.d = 556;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 333;\n t.k = 556;\n t.l = 278;\n t.m = 833;\n t.n = 556;\n t.o = 500;\n t.p = 556;\n t.q = 556;\n t.r = 444;\n t.s = 389;\n t.t = 333;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 394;\n t.bar = 220;\n t.braceright = 394;\n t.asciitilde = 520;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 540;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 300;\n t.Lslash = 667;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 330;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 556;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 570;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 667;\n t.Cacute = 722;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 722;\n t.rcaron = 444;\n t.ccedilla = 444;\n t.Zdotaccent = 667;\n t.Thorn = 611;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 556;\n t.dcaron = 672;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 667;\n t.partialdiff = 494;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 778;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 444;\n t.omacron = 500;\n t.Zacute = 667;\n t.Zcaron = 667;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 416;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 300;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 394;\n t.Kcommaaccent = 778;\n t.Lacute = 667;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 667;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 444;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 667;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 444;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 556;\n t.minus = 570;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 333;\n t.logicalnot = 570;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-BoldItalic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 389;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 832;\n t.A = 667;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 667;\n t.F = 667;\n t.G = 722;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 667;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 889;\n t.X = 667;\n t.Y = 611;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 570;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 556;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 556;\n t.v = 444;\n t.w = 667;\n t.x = 500;\n t.y = 444;\n t.z = 389;\n t.braceleft = 348;\n t.bar = 220;\n t.braceright = 348;\n t.asciitilde = 570;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 500;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 944;\n t.ordfeminine = 266;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 300;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 611;\n t.divide = 570;\n t.Yacute = 611;\n t.Acircumflex = 667;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 667;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 608;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 444;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 722;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 366;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 576;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 382;\n t.Kcommaaccent = 667;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 500;\n t.minus = 606;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 606;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Italic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 420;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 675;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 675;\n t.equal = 675;\n t.greater = 675;\n t.question = 500;\n t.at = 920;\n t.A = 611;\n t.B = 611;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 611;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 444;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 667;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 611;\n t.S = 500;\n t.T = 556;\n t.U = 722;\n t.V = 611;\n t.W = 833;\n t.X = 611;\n t.Y = 556;\n t.Z = 556;\n t.bracketleft = 389;\n t.backslash = 278;\n t.bracketright = 389;\n t.asciicircum = 422;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 278;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 444;\n t.l = 278;\n t.m = 722;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 444;\n t.w = 667;\n t.x = 444;\n t.y = 444;\n t.z = 389;\n t.braceleft = 400;\n t.bar = 275;\n t.braceright = 400;\n t.asciitilde = 541;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 214;\n t.quotedblleft = 556;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 523;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 556;\n t.quotedblright = 556;\n t.guillemotright = 500;\n t.ellipsis = 889;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 889;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 556;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 667;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 556;\n t.divide = 675;\n t.Yacute = 556;\n t.Acircumflex = 611;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 667;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 556;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 611;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 500;\n t.Amacron = 611;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 556;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 611;\n t.Sacute = 500;\n t.dcaron = 544;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 611;\n t.Abreve = 611;\n t.multiply = 675;\n t.uacute = 500;\n t.Tcaron = 556;\n t.partialdiff = 476;\n t.ydieresis = 444;\n t.Nacute = 667;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 667;\n t.Iacute = 333;\n t.plusminus = 675;\n t.brokenbar = 275;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 556;\n t.Zcaron = 556;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 300;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 611;\n t.Adieresis = 611;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 500;\n t.lcaron = 300;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 500;\n t.Scommaaccent = 500;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 667;\n t.otilde = 500;\n t.Rcommaaccent = 611;\n t.Lcommaaccent = 556;\n t.Atilde = 611;\n t.Aogonek = 611;\n t.Aring = 611;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 444;\n t.minus = 675;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 675;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t.ZapfDingbats = getLookupTableFactory(function (t) {\n t.space = 278;\n t.a1 = 974;\n t.a2 = 961;\n t.a202 = 974;\n t.a3 = 980;\n t.a4 = 719;\n t.a5 = 789;\n t.a119 = 790;\n t.a118 = 791;\n t.a117 = 690;\n t.a11 = 960;\n t.a12 = 939;\n t.a13 = 549;\n t.a14 = 855;\n t.a15 = 911;\n t.a16 = 933;\n t.a105 = 911;\n t.a17 = 945;\n t.a18 = 974;\n t.a19 = 755;\n t.a20 = 846;\n t.a21 = 762;\n t.a22 = 761;\n t.a23 = 571;\n t.a24 = 677;\n t.a25 = 763;\n t.a26 = 760;\n t.a27 = 759;\n t.a28 = 754;\n t.a6 = 494;\n t.a7 = 552;\n t.a8 = 537;\n t.a9 = 577;\n t.a10 = 692;\n t.a29 = 786;\n t.a30 = 788;\n t.a31 = 788;\n t.a32 = 790;\n t.a33 = 793;\n t.a34 = 794;\n t.a35 = 816;\n t.a36 = 823;\n t.a37 = 789;\n t.a38 = 841;\n t.a39 = 823;\n t.a40 = 833;\n t.a41 = 816;\n t.a42 = 831;\n t.a43 = 923;\n t.a44 = 744;\n t.a45 = 723;\n t.a46 = 749;\n t.a47 = 790;\n t.a48 = 792;\n t.a49 = 695;\n t.a50 = 776;\n t.a51 = 768;\n t.a52 = 792;\n t.a53 = 759;\n t.a54 = 707;\n t.a55 = 708;\n t.a56 = 682;\n t.a57 = 701;\n t.a58 = 826;\n t.a59 = 815;\n t.a60 = 789;\n t.a61 = 789;\n t.a62 = 707;\n t.a63 = 687;\n t.a64 = 696;\n t.a65 = 689;\n t.a66 = 786;\n t.a67 = 787;\n t.a68 = 713;\n t.a69 = 791;\n t.a70 = 785;\n t.a71 = 791;\n t.a72 = 873;\n t.a73 = 761;\n t.a74 = 762;\n t.a203 = 762;\n t.a75 = 759;\n t.a204 = 759;\n t.a76 = 892;\n t.a77 = 892;\n t.a78 = 788;\n t.a79 = 784;\n t.a81 = 438;\n t.a82 = 138;\n t.a83 = 277;\n t.a84 = 415;\n t.a97 = 392;\n t.a98 = 392;\n t.a99 = 668;\n t.a100 = 668;\n t.a89 = 390;\n t.a90 = 390;\n t.a93 = 317;\n t.a94 = 317;\n t.a91 = 276;\n t.a92 = 276;\n t.a205 = 509;\n t.a85 = 509;\n t.a206 = 410;\n t.a86 = 410;\n t.a87 = 234;\n t.a88 = 234;\n t.a95 = 334;\n t.a96 = 334;\n t.a101 = 732;\n t.a102 = 544;\n t.a103 = 544;\n t.a104 = 910;\n t.a106 = 667;\n t.a107 = 760;\n t.a108 = 760;\n t.a112 = 776;\n t.a111 = 595;\n t.a110 = 694;\n t.a109 = 626;\n t.a120 = 788;\n t.a121 = 788;\n t.a122 = 788;\n t.a123 = 788;\n t.a124 = 788;\n t.a125 = 788;\n t.a126 = 788;\n t.a127 = 788;\n t.a128 = 788;\n t.a129 = 788;\n t.a130 = 788;\n t.a131 = 788;\n t.a132 = 788;\n t.a133 = 788;\n t.a134 = 788;\n t.a135 = 788;\n t.a136 = 788;\n t.a137 = 788;\n t.a138 = 788;\n t.a139 = 788;\n t.a140 = 788;\n t.a141 = 788;\n t.a142 = 788;\n t.a143 = 788;\n t.a144 = 788;\n t.a145 = 788;\n t.a146 = 788;\n t.a147 = 788;\n t.a148 = 788;\n t.a149 = 788;\n t.a150 = 788;\n t.a151 = 788;\n t.a152 = 788;\n t.a153 = 788;\n t.a154 = 788;\n t.a155 = 788;\n t.a156 = 788;\n t.a157 = 788;\n t.a158 = 788;\n t.a159 = 788;\n t.a160 = 894;\n t.a161 = 838;\n t.a163 = 1016;\n t.a164 = 458;\n t.a196 = 748;\n t.a165 = 924;\n t.a192 = 748;\n t.a166 = 918;\n t.a167 = 927;\n t.a168 = 928;\n t.a169 = 928;\n t.a170 = 834;\n t.a171 = 873;\n t.a172 = 828;\n t.a173 = 924;\n t.a162 = 924;\n t.a174 = 917;\n t.a175 = 930;\n t.a176 = 931;\n t.a177 = 463;\n t.a178 = 883;\n t.a179 = 836;\n t.a193 = 836;\n t.a180 = 867;\n t.a199 = 867;\n t.a181 = 696;\n t.a200 = 696;\n t.a182 = 874;\n t.a201 = 874;\n t.a183 = 760;\n t.a184 = 946;\n t.a197 = 771;\n t.a185 = 865;\n t.a194 = 771;\n t.a198 = 888;\n t.a186 = 967;\n t.a195 = 888;\n t.a187 = 831;\n t.a188 = 873;\n t.a189 = 927;\n t.a190 = 970;\n t.a191 = 918;\n });\n});\n\nexport { getMetrics };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer, isString } from \"../shared/util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n update(input) {\n let data, length;\n if (isString(input)) {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (isArrayBuffer(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\n \"Wrong data format in MurmurHash3_64_update. \" +\n \"Input must be a string or array.\"\n );\n }\n\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n // We don't care about endianness here.\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n k2 = (k2 << 15) | (k2 >>> 17);\n k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n h2 ^= k2;\n h2 = (h2 << 13) | (h2 >>> 19);\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n h2 =\n ((h2 * 0xff51afd7) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n h2 =\n ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n\n const hex1 = (h1 >>> 0).toString(16),\n hex2 = (h2 >>> 0).toString(16);\n return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n ImageKind,\n OPS,\n RenderingIntentFlag,\n shadow,\n warn,\n} from \"../shared/util.js\";\n\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\n let state = parentState;\n for (let i = 0, ii = pattern.length - 1; i < ii; i++) {\n const item = pattern[i];\n state = state[item] || (state[item] = []);\n }\n state[pattern[pattern.length - 1]] = {\n checkFn,\n iterateFn,\n processFn,\n };\n}\n\nfunction handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {\n // Handles special case of mainly LaTeX documents which use image masks to\n // draw lines with the current fill style.\n // 'count' groups of (save, transform, paintImageMaskXObject, restore)+\n // have been found at iFirstSave.\n const iFirstPIMXO = iFirstSave + 2;\n let i;\n for (i = 0; i < count; i++) {\n const arg = argsArray[iFirstPIMXO + 4 * i];\n const imageMask = arg.length === 1 && arg[0];\n if (\n imageMask &&\n imageMask.width === 1 &&\n imageMask.height === 1 &&\n (!imageMask.data.length ||\n (imageMask.data.length === 1 && imageMask.data[0] === 0))\n ) {\n fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask;\n continue;\n }\n break;\n }\n return count - i;\n}\n\nconst InitialState = [];\n\n// This replaces (save, transform, paintInlineImageXObject, restore)+\n// sequences with one |paintInlineImageXObjectGroup| operation.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n null,\n function iterateInlineImageGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintInlineImageXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n },\n function foundInlineImageGroup(context, i) {\n const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n const MAX_WIDTH = 1000;\n const IMAGE_PADDING = 1;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIIXO = curr - 1;\n\n const count = Math.min(\n Math.floor((i - iFirstSave) / 4),\n MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\n );\n if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n // assuming that heights of those image is too small (~1 pixel)\n // packing as much as possible by lines\n let maxX = 0;\n const map = [];\n let maxLineHeight = 0;\n let currentX = IMAGE_PADDING,\n currentY = IMAGE_PADDING;\n for (let q = 0; q < count; q++) {\n const transform = argsArray[iFirstTransform + (q << 2)];\n const img = argsArray[iFirstPIIXO + (q << 2)][0];\n if (currentX + img.width > MAX_WIDTH) {\n // starting new line\n maxX = Math.max(maxX, currentX);\n currentY += maxLineHeight + 2 * IMAGE_PADDING;\n currentX = 0;\n maxLineHeight = 0;\n }\n map.push({\n transform,\n x: currentX,\n y: currentY,\n w: img.width,\n h: img.height,\n });\n currentX += img.width + 2 * IMAGE_PADDING;\n maxLineHeight = Math.max(maxLineHeight, img.height);\n }\n const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n const imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n const imgRowSize = imgWidth << 2;\n for (let q = 0; q < count; q++) {\n const data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n // Copy image by lines and extends pixels into padding.\n const rowSize = map[q].w << 2;\n let dataOffset = 0;\n let offset = (map[q].x + map[q].y * imgWidth) << 2;\n imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n for (let k = 0, kk = map[q].h; k < kk; k++) {\n imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n dataOffset += rowSize;\n offset += imgRowSize;\n }\n imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n while (offset >= 0) {\n data[offset - 4] = data[offset];\n data[offset - 3] = data[offset + 1];\n data[offset - 2] = data[offset + 2];\n data[offset - 1] = data[offset + 3];\n data[offset + rowSize] = data[offset + rowSize - 4];\n data[offset + rowSize + 1] = data[offset + rowSize - 3];\n data[offset + rowSize + 2] = data[offset + rowSize - 2];\n data[offset + rowSize + 3] = data[offset + rowSize - 1];\n offset -= imgRowSize;\n }\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [\n {\n width: imgWidth,\n height: imgHeight,\n kind: ImageKind.RGBA_32BPP,\n data: imgData,\n },\n map,\n ]);\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (save, transform, paintImageMaskXObject, restore)+\n// sequences with one |paintImageMaskXObjectGroup| or one\n// |paintImageMaskXObjectRepeat| operation.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n null,\n function iterateImageMaskGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintImageMaskXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n },\n function foundImageMaskGroup(context, i) {\n const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIMXO = curr - 1;\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n let count = Math.floor((i - iFirstSave) / 4);\n count = handlePaintSolidColorImageMask(\n iFirstSave,\n count,\n fnArray,\n argsArray\n );\n if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n let isSameImage = false;\n let iTransform, transformArgs;\n const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0],\n firstTransformArg1 = argsArray[iFirstTransform][1],\n firstTransformArg2 = argsArray[iFirstTransform][2],\n firstTransformArg3 = argsArray[iFirstTransform][3];\n\n if (firstTransformArg1 === firstTransformArg2) {\n isSameImage = true;\n iTransform = iFirstTransform + 4;\n let iPIMXO = iFirstPIMXO + 4;\n for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n transformArgs = argsArray[iTransform];\n if (\n argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\n transformArgs[0] !== firstTransformArg0 ||\n transformArgs[1] !== firstTransformArg1 ||\n transformArgs[2] !== firstTransformArg2 ||\n transformArgs[3] !== firstTransformArg3\n ) {\n if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n isSameImage = false;\n } else {\n count = q;\n }\n break; // different image or transform\n }\n }\n }\n\n if (isSameImage) {\n count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n const positions = new Float32Array(count * 2);\n iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, [\n firstPIMXOArg0,\n firstTransformArg0,\n firstTransformArg1,\n firstTransformArg2,\n firstTransformArg3,\n positions,\n ]);\n } else {\n count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n const images = [];\n for (let q = 0; q < count; q++) {\n transformArgs = argsArray[iFirstTransform + (q << 2)];\n const maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n images.push({\n data: maskParams.data,\n width: maskParams.width,\n height: maskParams.height,\n transform: transformArgs,\n });\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [images]);\n }\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (save, transform, paintImageXObject, restore)+ sequences\n// with one paintImageXObjectRepeat operation, if the |transform| and\n// |paintImageXObjectRepeat| ops are appropriate.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n function (context) {\n const argsArray = context.argsArray;\n const iFirstTransform = context.iCurr - 2;\n return (\n argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0\n );\n },\n function iterateImageGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n if (fnArray[i] !== OPS.transform) {\n return false;\n }\n const iFirstTransform = context.iCurr - 2;\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n if (\n argsArray[i][0] !== firstTransformArg0 ||\n argsArray[i][1] !== 0 ||\n argsArray[i][2] !== 0 ||\n argsArray[i][3] !== firstTransformArg3\n ) {\n return false; // transforms don't match\n }\n return true;\n case 2:\n if (fnArray[i] !== OPS.paintImageXObject) {\n return false;\n }\n const iFirstPIXO = context.iCurr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n if (argsArray[i][0] !== firstPIXOArg0) {\n return false; // images don't match\n }\n return true;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n },\n function (context, i) {\n const MIN_IMAGES_IN_BLOCK = 3;\n const MAX_IMAGES_IN_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIXO = curr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n const count = Math.min(\n Math.floor((i - iFirstSave) / 4),\n MAX_IMAGES_IN_BLOCK\n );\n if (count < MIN_IMAGES_IN_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n // Extract the (x,y) positions from all of the matching transforms.\n const positions = new Float32Array(count * 2);\n let iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n const transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n const args = [\n firstPIXOArg0,\n firstTransformArg0,\n firstTransformArg3,\n positions,\n ];\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, args);\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (beginText, setFont, setTextMatrix, showText, endText)+\n// sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\n// sequences, if the font for each one is the same.\naddState(\n InitialState,\n [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n null,\n function iterateShowTextGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 4;\n const pos = (i - iFirstSave) % 5;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.beginText;\n case 1:\n return fnArray[i] === OPS.setFont;\n case 2:\n return fnArray[i] === OPS.setTextMatrix;\n case 3:\n if (fnArray[i] !== OPS.showText) {\n return false;\n }\n const iFirstSetFont = context.iCurr - 3;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n if (\n argsArray[i][0] !== firstSetFontArg0 ||\n argsArray[i][1] !== firstSetFontArg1\n ) {\n return false; // fonts don't match\n }\n return true;\n case 4:\n return fnArray[i] === OPS.endText;\n }\n throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n },\n function (context, i) {\n const MIN_CHARS_IN_BLOCK = 3;\n const MAX_CHARS_IN_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstBeginText = curr - 4;\n const iFirstSetFont = curr - 3;\n const iFirstSetTextMatrix = curr - 2;\n const iFirstShowText = curr - 1;\n const iFirstEndText = curr;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n // At this point, i is the index of the first op past the last valid\n // quintet.\n let count = Math.min(\n Math.floor((i - iFirstBeginText) / 5),\n MAX_CHARS_IN_BLOCK\n );\n if (count < MIN_CHARS_IN_BLOCK) {\n return i - ((i - iFirstBeginText) % 5);\n }\n\n // If the preceding quintet is (<something>, setFont, setTextMatrix,\n // showText, endText), include that as well. (E.g. <something> might be\n // |dependency|.)\n let iFirst = iFirstBeginText;\n if (\n iFirstBeginText >= 4 &&\n fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\n fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\n fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\n fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\n argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\n argsArray[iFirstBeginText - 4][1] === firstSetFontArg1\n ) {\n count++;\n iFirst -= 5;\n }\n\n // Remove (endText, beginText, setFont) trios.\n let iEndText = iFirst + 4;\n for (let q = 1; q < count; q++) {\n fnArray.splice(iEndText, 3);\n argsArray.splice(iEndText, 3);\n iEndText += 2;\n }\n\n return iEndText + 1;\n }\n);\n\nclass NullOptimizer {\n constructor(queue) {\n this.queue = queue;\n }\n\n _optimize() {}\n\n push(fn, args) {\n this.queue.fnArray.push(fn);\n this.queue.argsArray.push(args);\n this._optimize();\n }\n\n flush() {}\n\n reset() {}\n}\n\nclass QueueOptimizer extends NullOptimizer {\n constructor(queue) {\n super(queue);\n this.state = null;\n this.context = {\n iCurr: 0,\n fnArray: queue.fnArray,\n argsArray: queue.argsArray,\n };\n this.match = null;\n this.lastProcessed = 0;\n }\n\n _optimize() {\n // Process new fnArray item(s) chunk.\n const fnArray = this.queue.fnArray;\n let i = this.lastProcessed,\n ii = fnArray.length;\n let state = this.state;\n let match = this.match;\n if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n // Micro-optimization for the common case: last item is not\n // optimizable, just skipping it.\n this.lastProcessed = ii;\n return;\n }\n\n const context = this.context;\n while (i < ii) {\n if (match) {\n // Already find a block of potentially optimizable items, iterating...\n const iterate = (0, match.iterateFn)(context, i);\n if (iterate) {\n i++;\n continue;\n }\n // Found last items for the block, processing...\n i = (0, match.processFn)(context, i + 1);\n ii = fnArray.length;\n match = null;\n state = null;\n if (i >= ii) {\n break;\n }\n }\n // Find the potentially optimizable items.\n state = (state || InitialState)[fnArray[i]];\n if (!state || Array.isArray(state)) {\n i++;\n continue;\n }\n // Found a start of the block based on addState rules.\n context.iCurr = i;\n i++;\n if (state.checkFn && !(0, state.checkFn)(context)) {\n // Check failed, continue search...\n state = null;\n continue;\n }\n match = state;\n state = null;\n }\n this.state = state;\n this.match = match;\n this.lastProcessed = i;\n }\n\n flush() {\n while (this.match) {\n const length = this.queue.fnArray.length;\n this.lastProcessed = (0, this.match.processFn)(this.context, length);\n this.match = null;\n this.state = null;\n // Repeat optimization until all chunks are exhausted.\n this._optimize();\n }\n }\n\n reset() {\n this.state = null;\n this.match = null;\n this.lastProcessed = 0;\n }\n}\n\nclass OperatorList {\n static get CHUNK_SIZE() {\n return shadow(this, \"CHUNK_SIZE\", 1000);\n }\n\n // Close to chunk size.\n static get CHUNK_SIZE_ABOUT() {\n return shadow(this, \"CHUNK_SIZE_ABOUT\", this.CHUNK_SIZE - 5);\n }\n\n constructor(intent = 0, streamSink) {\n this._streamSink = streamSink;\n this.fnArray = [];\n this.argsArray = [];\n if (streamSink && !(intent & RenderingIntentFlag.OPLIST)) {\n this.optimizer = new QueueOptimizer(this);\n } else {\n this.optimizer = new NullOptimizer(this);\n }\n this.dependencies = new Set();\n this._totalLength = 0;\n this.weight = 0;\n this._resolved = streamSink ? null : Promise.resolve();\n }\n\n get length() {\n return this.argsArray.length;\n }\n\n get ready() {\n return this._resolved || this._streamSink.ready;\n }\n\n /**\n * @type {number} The total length of the entire operator list, since\n * `this.length === 0` after flushing.\n */\n get totalLength() {\n return this._totalLength + this.length;\n }\n\n addOp(fn, args) {\n this.optimizer.push(fn, args);\n this.weight++;\n if (this._streamSink) {\n if (this.weight >= OperatorList.CHUNK_SIZE) {\n this.flush();\n } else if (\n this.weight >= OperatorList.CHUNK_SIZE_ABOUT &&\n (fn === OPS.restore || fn === OPS.endText)\n ) {\n // Heuristic to flush on boundary of restore or endText.\n this.flush();\n }\n }\n }\n\n addDependency(dependency) {\n if (this.dependencies.has(dependency)) {\n return;\n }\n this.dependencies.add(dependency);\n this.addOp(OPS.dependency, [dependency]);\n }\n\n addDependencies(dependencies) {\n for (const dependency of dependencies) {\n this.addDependency(dependency);\n }\n }\n\n addOpList(opList) {\n if (!(opList instanceof OperatorList)) {\n warn('addOpList - ignoring invalid \"opList\" parameter.');\n return;\n }\n for (const dependency of opList.dependencies) {\n this.dependencies.add(dependency);\n }\n for (let i = 0, ii = opList.length; i < ii; i++) {\n this.addOp(opList.fnArray[i], opList.argsArray[i]);\n }\n }\n\n getIR() {\n return {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n length: this.length,\n };\n }\n\n get _transfers() {\n const transfers = [];\n const { fnArray, argsArray, length } = this;\n for (let i = 0; i < length; i++) {\n switch (fnArray[i]) {\n case OPS.paintInlineImageXObject:\n case OPS.paintInlineImageXObjectGroup:\n case OPS.paintImageMaskXObject:\n const arg = argsArray[i][0]; // First parameter in imgData.\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n arg.data instanceof Uint8ClampedArray,\n 'OperatorList._transfers: Unsupported \"arg.data\" type.'\n );\n }\n if (!arg.cached) {\n transfers.push(arg.data.buffer);\n }\n break;\n }\n }\n return transfers;\n }\n\n flush(lastChunk = false) {\n this.optimizer.flush();\n const length = this.length;\n this._totalLength += length;\n\n this._streamSink.enqueue(\n {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n lastChunk,\n length,\n },\n 1,\n this._transfers\n );\n\n this.dependencies.clear();\n this.fnArray.length = 0;\n this.argsArray.length = 0;\n this.weight = 0;\n this.optimizer.reset();\n }\n}\n\nexport { OperatorList };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, FormatError, ImageKind, info, warn } from \"../shared/util.js\";\nimport { isName, isStream, Name } from \"./primitives.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\n\n/**\n * Decode and clamp a value. The formula is different from the spec because we\n * don't decode to float range [0,1], we decode it in the [0,max] range.\n */\nfunction decodeAndClamp(value, addend, coefficient, max) {\n value = addend + value * coefficient;\n // Clamp the value to the range\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n return value;\n}\n\n/**\n * Resizes an image mask with 1 component.\n * @param {TypedArray} src - The source buffer.\n * @param {number} bpc - Number of bits per component.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @returns {TypedArray} The resized image mask buffer.\n */\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\n const length = w2 * h2;\n let dest;\n if (bpc <= 8) {\n dest = new Uint8Array(length);\n } else if (bpc <= 16) {\n dest = new Uint16Array(length);\n } else {\n dest = new Uint32Array(length);\n }\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let i,\n j,\n py,\n newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1;\n\n for (i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n for (i = 0; i < h2; i++) {\n py = Math.floor(i * yRatio) * w1Scanline;\n for (j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex];\n }\n }\n return dest;\n}\n\nclass PDFImage {\n constructor({\n xref,\n res,\n image,\n isInline = false,\n smask = null,\n mask = null,\n isMask = false,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n this.image = image;\n const dict = image.dict;\n\n const filter = dict.get(\"F\", \"Filter\");\n if (isName(filter)) {\n switch (filter.name) {\n case \"JPXDecode\":\n const jpxImage = new JpxImage();\n jpxImage.parseImageProperties(image.stream);\n image.stream.reset();\n\n image.width = jpxImage.width;\n image.height = jpxImage.height;\n image.bitsPerComponent = jpxImage.bitsPerComponent;\n image.numComps = jpxImage.componentsCount;\n break;\n case \"JBIG2Decode\":\n image.bitsPerComponent = 1;\n image.numComps = 1;\n break;\n }\n }\n // TODO cache rendered images?\n\n let width = dict.get(\"W\", \"Width\");\n let height = dict.get(\"H\", \"Height\");\n\n if (\n Number.isInteger(image.width) &&\n image.width > 0 &&\n Number.isInteger(image.height) &&\n image.height > 0 &&\n (image.width !== width || image.height !== height)\n ) {\n warn(\n \"PDFImage - using the Width/Height of the image data, \" +\n \"rather than the image dictionary.\"\n );\n width = image.width;\n height = image.height;\n }\n if (width < 1 || height < 1) {\n throw new FormatError(\n `Invalid image width: ${width} or height: ${height}`\n );\n }\n this.width = width;\n this.height = height;\n\n this.interpolate = dict.get(\"I\", \"Interpolate\");\n this.imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n this.matte = dict.get(\"Matte\") || false;\n\n let bitsPerComponent = image.bitsPerComponent;\n if (!bitsPerComponent) {\n bitsPerComponent = dict.get(\"BPC\", \"BitsPerComponent\");\n if (!bitsPerComponent) {\n if (this.imageMask) {\n bitsPerComponent = 1;\n } else {\n throw new FormatError(\n `Bits per component missing in image: ${this.imageMask}`\n );\n }\n }\n }\n this.bpc = bitsPerComponent;\n\n if (!this.imageMask) {\n let colorSpace = dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\");\n if (!colorSpace) {\n info(\"JPX images (which do not require color spaces)\");\n switch (image.numComps) {\n case 1:\n colorSpace = Name.get(\"DeviceGray\");\n break;\n case 3:\n colorSpace = Name.get(\"DeviceRGB\");\n break;\n case 4:\n colorSpace = Name.get(\"DeviceCMYK\");\n break;\n default:\n throw new Error(\n `JPX images with ${image.numComps} color components not supported.`\n );\n }\n }\n this.colorSpace = ColorSpace.parse({\n cs: colorSpace,\n xref,\n resources: isInline ? res : null,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n this.numComps = this.colorSpace.numComps;\n }\n\n this.decode = dict.getArray(\"D\", \"Decode\");\n this.needsDecode = false;\n if (\n this.decode &&\n ((this.colorSpace &&\n !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent)) ||\n (isMask &&\n !ColorSpace.isDefaultDecode(this.decode, /* numComps = */ 1)))\n ) {\n this.needsDecode = true;\n // Do some preprocessing to avoid more math.\n const max = (1 << bitsPerComponent) - 1;\n this.decodeCoefficients = [];\n this.decodeAddends = [];\n const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n const dmin = this.decode[i];\n const dmax = this.decode[i + 1];\n this.decodeCoefficients[j] = isIndexed\n ? (dmax - dmin) / max\n : dmax - dmin;\n this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n }\n }\n\n if (smask) {\n this.smask = new PDFImage({\n xref,\n res,\n image: smask,\n isInline,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n } else if (mask) {\n if (isStream(mask)) {\n const maskDict = mask.dict,\n imageMask = maskDict.get(\"IM\", \"ImageMask\");\n if (!imageMask) {\n warn(\"Ignoring /Mask in image without /ImageMask.\");\n } else {\n this.mask = new PDFImage({\n xref,\n res,\n image: mask,\n isInline,\n isMask: true,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n }\n } else {\n // Color key mask (just an array).\n this.mask = mask;\n }\n }\n }\n\n /**\n * Handles processing of image data and returns the Promise that is resolved\n * with a PDFImage when the image is ready to be used.\n */\n static async buildImage({\n xref,\n res,\n image,\n isInline = false,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n const imageData = image;\n let smaskData = null;\n let maskData = null;\n\n const smask = image.dict.get(\"SMask\");\n const mask = image.dict.get(\"Mask\");\n\n if (smask) {\n smaskData = smask;\n } else if (mask) {\n if (isStream(mask) || Array.isArray(mask)) {\n maskData = mask;\n } else {\n warn(\"Unsupported mask format.\");\n }\n }\n\n return new PDFImage({\n xref,\n res,\n image: imageData,\n isInline,\n smask: smaskData,\n mask: maskData,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n }\n\n static createMask({\n imgArray,\n width,\n height,\n imageIsFromDecodeStream,\n inverseDecode,\n interpolate,\n }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n imgArray instanceof Uint8ClampedArray,\n 'PDFImage.createMask: Unsupported \"imgArray\" type.'\n );\n }\n // |imgArray| might not contain full data for every pixel of the mask, so\n // we need to distinguish between |computedLength| and |actualLength|.\n // In particular, if inverseDecode is true, then the array we return must\n // have a length of |computedLength|.\n\n const computedLength = ((width + 7) >> 3) * height;\n const actualLength = imgArray.byteLength;\n const haveFullData = computedLength === actualLength;\n let data, i;\n\n if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n // imgArray came from a DecodeStream and its data is in an appropriate\n // form, so we can just transfer it.\n data = imgArray;\n } else if (!inverseDecode) {\n data = new Uint8ClampedArray(actualLength);\n data.set(imgArray);\n } else {\n data = new Uint8ClampedArray(computedLength);\n data.set(imgArray);\n for (i = actualLength; i < computedLength; i++) {\n data[i] = 0xff;\n }\n }\n\n // If necessary, invert the original mask data (but not any extra we might\n // have added above). It's safe to modify the array -- whether it's the\n // original or a copy, we're about to transfer it anyway, so nothing else\n // in this thread can be relying on its contents.\n if (inverseDecode) {\n for (i = 0; i < actualLength; i++) {\n data[i] ^= 0xff;\n }\n }\n\n return { data, width, height, interpolate };\n }\n\n get drawWidth() {\n return Math.max(\n this.width,\n (this.smask && this.smask.width) || 0,\n (this.mask && this.mask.width) || 0\n );\n }\n\n get drawHeight() {\n return Math.max(\n this.height,\n (this.smask && this.smask.height) || 0,\n (this.mask && this.mask.height) || 0\n );\n }\n\n decodeBuffer(buffer) {\n const bpc = this.bpc;\n const numComps = this.numComps;\n\n const decodeAddends = this.decodeAddends;\n const decodeCoefficients = this.decodeCoefficients;\n const max = (1 << bpc) - 1;\n let i, ii;\n\n if (bpc === 1) {\n // If the buffer needed decode that means it just needs to be inverted.\n for (i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = +!buffer[i];\n }\n return;\n }\n let index = 0;\n for (i = 0, ii = this.width * this.height; i < ii; i++) {\n for (let j = 0; j < numComps; j++) {\n buffer[index] = decodeAndClamp(\n buffer[index],\n decodeAddends[j],\n decodeCoefficients[j],\n max\n );\n index++;\n }\n }\n }\n\n getComponents(buffer) {\n const bpc = this.bpc;\n\n // This image doesn't require any extra work.\n if (bpc === 8) {\n return buffer;\n }\n\n const width = this.width;\n const height = this.height;\n const numComps = this.numComps;\n\n const length = width * height * numComps;\n let bufferPos = 0;\n let output;\n if (bpc <= 8) {\n output = new Uint8Array(length);\n } else if (bpc <= 16) {\n output = new Uint16Array(length);\n } else {\n output = new Uint32Array(length);\n }\n const rowComps = width * numComps;\n\n const max = (1 << bpc) - 1;\n let i = 0,\n ii,\n buf;\n\n if (bpc === 1) {\n // Optimization for reading 1 bpc images.\n let mask, loop1End, loop2End;\n for (let j = 0; j < height; j++) {\n loop1End = i + (rowComps & ~7);\n loop2End = i + rowComps;\n\n // unroll loop for all full bytes\n while (i < loop1End) {\n buf = buffer[bufferPos++];\n output[i] = (buf >> 7) & 1;\n output[i + 1] = (buf >> 6) & 1;\n output[i + 2] = (buf >> 5) & 1;\n output[i + 3] = (buf >> 4) & 1;\n output[i + 4] = (buf >> 3) & 1;\n output[i + 5] = (buf >> 2) & 1;\n output[i + 6] = (buf >> 1) & 1;\n output[i + 7] = buf & 1;\n i += 8;\n }\n\n // handle remaining bits\n if (i < loop2End) {\n buf = buffer[bufferPos++];\n mask = 128;\n while (i < loop2End) {\n output[i++] = +!!(buf & mask);\n mask >>= 1;\n }\n }\n }\n } else {\n // The general case that handles all other bpc values.\n let bits = 0;\n buf = 0;\n for (i = 0, ii = length; i < ii; ++i) {\n if (i % rowComps === 0) {\n buf = 0;\n bits = 0;\n }\n\n while (bits < bpc) {\n buf = (buf << 8) | buffer[bufferPos++];\n bits += 8;\n }\n\n const remainingBits = bits - bpc;\n let value = buf >> remainingBits;\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n output[i] = value;\n buf &= (1 << remainingBits) - 1;\n bits = remainingBits;\n }\n }\n return output;\n }\n\n fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n rgbaBuf instanceof Uint8ClampedArray,\n 'PDFImage.fillOpacity: Unsupported \"rgbaBuf\" type.'\n );\n }\n const smask = this.smask;\n const mask = this.mask;\n let alphaBuf, sw, sh, i, ii, j;\n\n if (smask) {\n sw = smask.width;\n sh = smask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n smask.fillGrayBuffer(alphaBuf);\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n }\n } else if (mask) {\n if (mask instanceof PDFImage) {\n sw = mask.width;\n sh = mask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n mask.numComps = 1;\n mask.fillGrayBuffer(alphaBuf);\n\n // Need to invert values in rgbaBuf\n for (i = 0, ii = sw * sh; i < ii; ++i) {\n alphaBuf[i] = 255 - alphaBuf[i];\n }\n\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\n }\n } else if (Array.isArray(mask)) {\n // Color key mask: if any of the components are outside the range\n // then they should be painted.\n alphaBuf = new Uint8ClampedArray(width * height);\n const numComps = this.numComps;\n for (i = 0, ii = width * height; i < ii; ++i) {\n let opacity = 0;\n const imageOffset = i * numComps;\n for (j = 0; j < numComps; ++j) {\n const color = image[imageOffset + j];\n const maskOffset = j * 2;\n if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n opacity = 255;\n break;\n }\n }\n alphaBuf[i] = opacity;\n }\n } else {\n throw new FormatError(\"Unknown mask format.\");\n }\n }\n\n if (alphaBuf) {\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = alphaBuf[i];\n }\n } else {\n // No mask.\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = 255;\n }\n }\n }\n\n undoPreblend(buffer, width, height) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n buffer instanceof Uint8ClampedArray,\n 'PDFImage.undoPreblend: Unsupported \"buffer\" type.'\n );\n }\n const matte = this.smask && this.smask.matte;\n if (!matte) {\n return;\n }\n const matteRgb = this.colorSpace.getRgb(matte, 0);\n const matteR = matteRgb[0];\n const matteG = matteRgb[1];\n const matteB = matteRgb[2];\n const length = width * height * 4;\n for (let i = 0; i < length; i += 4) {\n const alpha = buffer[i + 3];\n if (alpha === 0) {\n // according formula we have to get Infinity in all components\n // making it white (typical paper color) should be okay\n buffer[i] = 255;\n buffer[i + 1] = 255;\n buffer[i + 2] = 255;\n continue;\n }\n const k = 255 / alpha;\n buffer[i] = (buffer[i] - matteR) * k + matteR;\n buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n }\n }\n\n createImageData(forceRGBA = false) {\n const drawWidth = this.drawWidth;\n const drawHeight = this.drawHeight;\n const imgData = {\n width: drawWidth,\n height: drawHeight,\n interpolate: this.interpolate,\n kind: 0,\n data: null,\n // Other fields are filled in below.\n };\n\n const numComps = this.numComps;\n const originalWidth = this.width;\n const originalHeight = this.height;\n const bpc = this.bpc;\n\n // Rows start at byte boundary.\n const rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n let imgArray;\n\n if (!forceRGBA) {\n // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\n // without any complications, we pass a same-sized copy to the main\n // thread rather than expanding by 32x to RGBA form. This saves *lots*\n // of memory for many scanned documents. It's also much faster.\n //\n // Similarly, if it is a 24-bit-per pixel RGB image without any\n // complications, we avoid expanding by 1.333x to RGBA form.\n let kind;\n if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n kind = ImageKind.GRAYSCALE_1BPP;\n } else if (\n this.colorSpace.name === \"DeviceRGB\" &&\n bpc === 8 &&\n !this.needsDecode\n ) {\n kind = ImageKind.RGB_24BPP;\n }\n if (\n kind &&\n !this.smask &&\n !this.mask &&\n drawWidth === originalWidth &&\n drawHeight === originalHeight\n ) {\n imgData.kind = kind;\n\n imgArray = this.getImageBytes(originalHeight * rowBytes);\n // If imgArray came from a DecodeStream, we're safe to transfer it\n // (and thus detach its underlying buffer) because it will constitute\n // the entire DecodeStream's data. But if it came from a Stream, we\n // need to copy it because it'll only be a portion of the Stream's\n // data, and the rest will be read later on.\n if (this.image instanceof DecodeStream) {\n imgData.data = imgArray;\n } else {\n const newArray = new Uint8ClampedArray(imgArray.length);\n newArray.set(imgArray);\n imgData.data = newArray;\n }\n if (this.needsDecode) {\n // Invert the buffer (which must be grayscale if we reached here).\n assert(\n kind === ImageKind.GRAYSCALE_1BPP,\n \"PDFImage.createImageData: The image must be grayscale.\"\n );\n const buffer = imgData.data;\n for (let i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] ^= 0xff;\n }\n }\n return imgData;\n }\n if (this.image instanceof JpegStream && !this.smask && !this.mask) {\n let imageLength = originalHeight * rowBytes;\n switch (this.colorSpace.name) {\n case \"DeviceGray\":\n // Avoid truncating the image, since `JpegImage.getData`\n // will expand the image data when `forceRGB === true`.\n imageLength *= 3;\n /* falls through */\n case \"DeviceRGB\":\n case \"DeviceCMYK\":\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = this.getImageBytes(\n imageLength,\n drawWidth,\n drawHeight,\n /* forceRGB = */ true\n );\n return imgData;\n }\n }\n }\n\n imgArray = this.getImageBytes(originalHeight * rowBytes);\n // imgArray can be incomplete (e.g. after CCITT fax encoding).\n const actualHeight =\n 0 | (((imgArray.length / rowBytes) * drawHeight) / originalHeight);\n\n const comps = this.getComponents(imgArray);\n\n // If opacity data is present, use RGBA_32BPP form. Otherwise, use the\n // more compact RGB_24BPP form if allowable.\n let alpha01, maybeUndoPreblend;\n if (!forceRGBA && !this.smask && !this.mask) {\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n alpha01 = 0;\n maybeUndoPreblend = false;\n } else {\n imgData.kind = ImageKind.RGBA_32BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n alpha01 = 1;\n maybeUndoPreblend = true;\n\n // Color key masking (opacity) must be performed before decoding.\n this.fillOpacity(\n imgData.data,\n drawWidth,\n drawHeight,\n actualHeight,\n comps\n );\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n this.colorSpace.fillRgb(\n imgData.data,\n originalWidth,\n originalHeight,\n drawWidth,\n drawHeight,\n actualHeight,\n bpc,\n comps,\n alpha01\n );\n if (maybeUndoPreblend) {\n this.undoPreblend(imgData.data, drawWidth, actualHeight);\n }\n\n return imgData;\n }\n\n fillGrayBuffer(buffer) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n buffer instanceof Uint8ClampedArray,\n 'PDFImage.fillGrayBuffer: Unsupported \"buffer\" type.'\n );\n }\n const numComps = this.numComps;\n if (numComps !== 1) {\n throw new FormatError(\n `Reading gray scale from a color image: ${numComps}`\n );\n }\n\n const width = this.width;\n const height = this.height;\n const bpc = this.bpc;\n\n // rows start at byte boundary\n const rowBytes = (width * numComps * bpc + 7) >> 3;\n const imgArray = this.getImageBytes(height * rowBytes);\n\n const comps = this.getComponents(imgArray);\n let i, length;\n\n if (bpc === 1) {\n // inline decoding (= inversion) for 1 bpc images\n length = width * height;\n if (this.needsDecode) {\n // invert and scale to {0, 255}\n for (i = 0; i < length; ++i) {\n buffer[i] = (comps[i] - 1) & 255;\n }\n } else {\n // scale to {0, 255}\n for (i = 0; i < length; ++i) {\n buffer[i] = -comps[i] & 255;\n }\n }\n return;\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n length = width * height;\n // we aren't using a colorspace so we need to scale the value\n const scale = 255 / ((1 << bpc) - 1);\n for (i = 0; i < length; ++i) {\n buffer[i] = scale * comps[i];\n }\n }\n\n getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {\n this.image.reset();\n this.image.drawWidth = drawWidth || this.width;\n this.image.drawHeight = drawHeight || this.height;\n this.image.forceRGB = !!forceRGB;\n return this.image.getBytes(length, /* forceClamped = */ true);\n }\n}\n\nexport { PDFImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n clearPrimitiveCaches,\n Dict,\n isDict,\n isName,\n isRef,\n isRefsEqual,\n isStream,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n} from \"./primitives.js\";\nimport {\n collectActions,\n MissingDataException,\n recoverJsURL,\n toRomanNumerals,\n XRefEntryException,\n} from \"./core_utils.js\";\nimport {\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FormatError,\n info,\n isBool,\n isNum,\n isString,\n objectSize,\n PermissionFlag,\n shadow,\n stringToPDFString,\n stringToUTF8String,\n warn,\n} from \"../shared/util.js\";\nimport { NameTree, NumberTree } from \"./name_number_tree.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { GlobalImageCache } from \"./image_utils.js\";\nimport { MetadataParser } from \"./metadata_parser.js\";\nimport { StructTreeRoot } from \"./struct_tree.js\";\n\nfunction fetchDestination(dest) {\n if (dest instanceof Dict) {\n dest = dest.get(\"D\");\n }\n return Array.isArray(dest) ? dest : null;\n}\n\nclass Catalog {\n constructor(pdfManager, xref) {\n this.pdfManager = pdfManager;\n this.xref = xref;\n\n this._catDict = xref.getCatalogObj();\n if (!(this._catDict instanceof Dict)) {\n throw new FormatError(\"Catalog object is not a dictionary.\");\n }\n // Given that `XRef.parse` will both fetch *and* validate the /Pages-entry,\n // the following call must always succeed here:\n this.toplevelPagesDict; // eslint-disable-line no-unused-expressions\n\n this._actualNumPages = null;\n\n this.fontCache = new RefSetCache();\n this.builtInCMapCache = new Map();\n this.standardFontDataCache = new Map();\n this.globalImageCache = new GlobalImageCache();\n this.pageKidsCountCache = new RefSetCache();\n this.pageIndexCache = new RefSetCache();\n this.nonBlendModesSet = new RefSet();\n }\n\n get version() {\n const version = this._catDict.get(\"Version\");\n return shadow(\n this,\n \"version\",\n version instanceof Name ? version.name : null\n );\n }\n\n get lang() {\n const lang = this._catDict.get(\"Lang\");\n return shadow(\n this,\n \"lang\",\n typeof lang === \"string\" ? stringToPDFString(lang) : null\n );\n }\n\n /**\n * @type {boolean} `true` for pure XFA documents,\n * `false` for XFA Foreground documents.\n */\n get needsRendering() {\n const needsRendering = this._catDict.get(\"NeedsRendering\");\n return shadow(\n this,\n \"needsRendering\",\n typeof needsRendering === \"boolean\" ? needsRendering : false\n );\n }\n\n get collection() {\n let collection = null;\n try {\n const obj = this._catDict.get(\"Collection\");\n if (isDict(obj) && obj.size > 0) {\n collection = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch Collection entry; assuming no collection is present.\");\n }\n return shadow(this, \"collection\", collection);\n }\n\n get acroForm() {\n let acroForm = null;\n try {\n const obj = this._catDict.get(\"AcroForm\");\n if (isDict(obj) && obj.size > 0) {\n acroForm = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n }\n return shadow(this, \"acroForm\", acroForm);\n }\n\n get acroFormRef() {\n const value = this._catDict.getRaw(\"AcroForm\");\n return shadow(this, \"acroFormRef\", isRef(value) ? value : null);\n }\n\n get metadata() {\n const streamRef = this._catDict.getRaw(\"Metadata\");\n if (!(streamRef instanceof Ref)) {\n return shadow(this, \"metadata\", null);\n }\n\n let metadata = null;\n try {\n const suppressEncryption = !(\n this.xref.encrypt && this.xref.encrypt.encryptMetadata\n );\n const stream = this.xref.fetch(streamRef, suppressEncryption);\n\n if (stream instanceof BaseStream && stream.dict instanceof Dict) {\n const type = stream.dict.get(\"Type\");\n const subtype = stream.dict.get(\"Subtype\");\n\n if (isName(type, \"Metadata\") && isName(subtype, \"XML\")) {\n // XXX: This should examine the charset the XML document defines,\n // however since there are currently no real means to decode arbitrary\n // charsets, let's just hope that the author of the PDF was reasonable\n // enough to stick with the XML default charset, which is UTF-8.\n const data = stringToUTF8String(stream.getString());\n if (data) {\n metadata = new MetadataParser(data).serializable;\n }\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(`Skipping invalid Metadata: \"${ex}\".`);\n }\n return shadow(this, \"metadata\", metadata);\n }\n\n get markInfo() {\n let markInfo = null;\n try {\n markInfo = this._readMarkInfo();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read mark info.\");\n }\n return shadow(this, \"markInfo\", markInfo);\n }\n\n /**\n * @private\n */\n _readMarkInfo() {\n const obj = this._catDict.get(\"MarkInfo\");\n if (!isDict(obj)) {\n return null;\n }\n\n const markInfo = Object.assign(Object.create(null), {\n Marked: false,\n UserProperties: false,\n Suspects: false,\n });\n for (const key in markInfo) {\n if (!obj.has(key)) {\n continue;\n }\n const value = obj.get(key);\n if (!isBool(value)) {\n continue;\n }\n markInfo[key] = value;\n }\n\n return markInfo;\n }\n\n get structTreeRoot() {\n let structTree = null;\n try {\n structTree = this._readStructTreeRoot();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable read to structTreeRoot info.\");\n }\n return shadow(this, \"structTreeRoot\", structTree);\n }\n\n /**\n * @private\n */\n _readStructTreeRoot() {\n const obj = this._catDict.get(\"StructTreeRoot\");\n if (!isDict(obj)) {\n return null;\n }\n const root = new StructTreeRoot(obj);\n root.init();\n return root;\n }\n\n get toplevelPagesDict() {\n const pagesObj = this._catDict.get(\"Pages\");\n if (!isDict(pagesObj)) {\n throw new FormatError(\"Invalid top-level pages dictionary.\");\n }\n return shadow(this, \"toplevelPagesDict\", pagesObj);\n }\n\n get documentOutline() {\n let obj = null;\n try {\n obj = this._readDocumentOutline();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read document outline.\");\n }\n return shadow(this, \"documentOutline\", obj);\n }\n\n /**\n * @private\n */\n _readDocumentOutline() {\n let obj = this._catDict.get(\"Outlines\");\n if (!isDict(obj)) {\n return null;\n }\n obj = obj.getRaw(\"First\");\n if (!isRef(obj)) {\n return null;\n }\n\n const root = { items: [] };\n const queue = [{ obj, parent: root }];\n // To avoid recursion, keep track of the already processed items.\n const processed = new RefSet();\n processed.put(obj);\n const xref = this.xref,\n blackColor = new Uint8ClampedArray(3);\n\n while (queue.length > 0) {\n const i = queue.shift();\n const outlineDict = xref.fetchIfRef(i.obj);\n if (outlineDict === null) {\n continue;\n }\n if (!outlineDict.has(\"Title\")) {\n throw new FormatError(\"Invalid outline item encountered.\");\n }\n\n const data = { url: null, dest: null };\n Catalog.parseDestDictionary({\n destDict: outlineDict,\n resultObj: data,\n docBaseUrl: this.pdfManager.docBaseUrl,\n });\n const title = outlineDict.get(\"Title\");\n const flags = outlineDict.get(\"F\") || 0;\n const color = outlineDict.getArray(\"C\");\n const count = outlineDict.get(\"Count\");\n let rgbColor = blackColor;\n\n // We only need to parse the color when it's valid, and non-default.\n if (\n Array.isArray(color) &&\n color.length === 3 &&\n (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)\n ) {\n rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n }\n\n const outlineItem = {\n dest: data.dest,\n url: data.url,\n unsafeUrl: data.unsafeUrl,\n newWindow: data.newWindow,\n title: stringToPDFString(title),\n color: rgbColor,\n count: Number.isInteger(count) ? count : undefined,\n bold: !!(flags & 2),\n italic: !!(flags & 1),\n items: [],\n };\n\n i.parent.items.push(outlineItem);\n obj = outlineDict.getRaw(\"First\");\n if (isRef(obj) && !processed.has(obj)) {\n queue.push({ obj, parent: outlineItem });\n processed.put(obj);\n }\n obj = outlineDict.getRaw(\"Next\");\n if (isRef(obj) && !processed.has(obj)) {\n queue.push({ obj, parent: i.parent });\n processed.put(obj);\n }\n }\n return root.items.length > 0 ? root.items : null;\n }\n\n get permissions() {\n let permissions = null;\n try {\n permissions = this._readPermissions();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read permissions.\");\n }\n return shadow(this, \"permissions\", permissions);\n }\n\n /**\n * @private\n */\n _readPermissions() {\n const encrypt = this.xref.trailer.get(\"Encrypt\");\n if (!isDict(encrypt)) {\n return null;\n }\n\n let flags = encrypt.get(\"P\");\n if (!isNum(flags)) {\n return null;\n }\n\n // PDF integer objects are represented internally in signed 2's complement\n // form. Therefore, convert the signed decimal integer to a signed 2's\n // complement binary integer so we can use regular bitwise operations on it.\n flags += 2 ** 32;\n\n const permissions = [];\n for (const key in PermissionFlag) {\n const value = PermissionFlag[key];\n if (flags & value) {\n permissions.push(value);\n }\n }\n return permissions;\n }\n\n get optionalContentConfig() {\n let config = null;\n try {\n const properties = this._catDict.get(\"OCProperties\");\n if (!properties) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const defaultConfig = properties.get(\"D\");\n if (!defaultConfig) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groupsData = properties.get(\"OCGs\");\n if (!Array.isArray(groupsData)) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groups = [];\n const groupRefs = [];\n // Ensure all the optional content groups are valid.\n for (const groupRef of groupsData) {\n if (!isRef(groupRef)) {\n continue;\n }\n groupRefs.push(groupRef);\n const group = this.xref.fetchIfRef(groupRef);\n groups.push({\n id: groupRef.toString(),\n name: isString(group.get(\"Name\"))\n ? stringToPDFString(group.get(\"Name\"))\n : null,\n intent: isString(group.get(\"Intent\"))\n ? stringToPDFString(group.get(\"Intent\"))\n : null,\n });\n }\n config = this._readOptionalContentConfig(defaultConfig, groupRefs);\n config.groups = groups;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Unable to read optional content config: ${ex}`);\n }\n return shadow(this, \"optionalContentConfig\", config);\n }\n\n _readOptionalContentConfig(config, contentGroupRefs) {\n function parseOnOff(refs) {\n const onParsed = [];\n if (Array.isArray(refs)) {\n for (const value of refs) {\n if (!isRef(value)) {\n continue;\n }\n if (contentGroupRefs.includes(value)) {\n onParsed.push(value.toString());\n }\n }\n }\n return onParsed;\n }\n\n function parseOrder(refs, nestedLevels = 0) {\n if (!Array.isArray(refs)) {\n return null;\n }\n const order = [];\n\n for (const value of refs) {\n if (isRef(value) && contentGroupRefs.includes(value)) {\n parsedOrderRefs.put(value); // Handle \"hidden\" groups, see below.\n\n order.push(value.toString());\n continue;\n }\n // Handle nested /Order arrays (see e.g. issue 9462 and bug 1240641).\n const nestedOrder = parseNestedOrder(value, nestedLevels);\n if (nestedOrder) {\n order.push(nestedOrder);\n }\n }\n\n if (nestedLevels > 0) {\n return order;\n }\n const hiddenGroups = [];\n for (const groupRef of contentGroupRefs) {\n if (parsedOrderRefs.has(groupRef)) {\n continue;\n }\n hiddenGroups.push(groupRef.toString());\n }\n if (hiddenGroups.length) {\n order.push({ name: null, order: hiddenGroups });\n }\n\n return order;\n }\n\n function parseNestedOrder(ref, nestedLevels) {\n if (++nestedLevels > MAX_NESTED_LEVELS) {\n warn(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n return null;\n }\n const value = xref.fetchIfRef(ref);\n if (!Array.isArray(value)) {\n return null;\n }\n const nestedName = xref.fetchIfRef(value[0]);\n if (typeof nestedName !== \"string\") {\n return null;\n }\n const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n if (!nestedOrder || !nestedOrder.length) {\n return null;\n }\n return { name: stringToPDFString(nestedName), order: nestedOrder };\n }\n\n const xref = this.xref,\n parsedOrderRefs = new RefSet(),\n MAX_NESTED_LEVELS = 10;\n\n return {\n name: isString(config.get(\"Name\"))\n ? stringToPDFString(config.get(\"Name\"))\n : null,\n creator: isString(config.get(\"Creator\"))\n ? stringToPDFString(config.get(\"Creator\"))\n : null,\n baseState: isName(config.get(\"BaseState\"))\n ? config.get(\"BaseState\").name\n : null,\n on: parseOnOff(config.get(\"ON\")),\n off: parseOnOff(config.get(\"OFF\")),\n order: parseOrder(config.get(\"Order\")),\n groups: null,\n };\n }\n\n setActualNumPages(num = null) {\n this._actualNumPages = num;\n }\n\n get hasActualNumPages() {\n return this._actualNumPages !== null;\n }\n\n get _pagesCount() {\n const obj = this.toplevelPagesDict.get(\"Count\");\n if (!Number.isInteger(obj)) {\n throw new FormatError(\n \"Page count in top-level pages dictionary is not an integer.\"\n );\n }\n return shadow(this, \"_pagesCount\", obj);\n }\n\n get numPages() {\n return this.hasActualNumPages ? this._actualNumPages : this._pagesCount;\n }\n\n get destinations() {\n const obj = this._readDests(),\n dests = Object.create(null);\n if (obj instanceof NameTree) {\n for (const [key, value] of obj.getAll()) {\n const dest = fetchDestination(value);\n if (dest) {\n dests[key] = dest;\n }\n }\n } else if (obj instanceof Dict) {\n obj.forEach(function (key, value) {\n const dest = fetchDestination(value);\n if (dest) {\n dests[key] = dest;\n }\n });\n }\n return shadow(this, \"destinations\", dests);\n }\n\n getDestination(id) {\n const obj = this._readDests();\n if (obj instanceof NameTree) {\n const dest = fetchDestination(obj.get(id));\n if (dest) {\n return dest;\n }\n // Fallback to checking the *entire* NameTree, in an attempt to handle\n // corrupt PDF documents with out-of-order NameTrees (fixes issue 10272).\n const allDest = this.destinations[id];\n if (allDest) {\n warn(`Found \"${id}\" at an incorrect position in the NameTree.`);\n return allDest;\n }\n } else if (obj instanceof Dict) {\n const dest = fetchDestination(obj.get(id));\n if (dest) {\n return dest;\n }\n }\n return null;\n }\n\n /**\n * @private\n */\n _readDests() {\n const obj = this._catDict.get(\"Names\");\n if (obj && obj.has(\"Dests\")) {\n return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n } else if (this._catDict.has(\"Dests\")) {\n // Simple destination dictionary.\n return this._catDict.get(\"Dests\");\n }\n return undefined;\n }\n\n get pageLabels() {\n let obj = null;\n try {\n obj = this._readPageLabels();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read page labels.\");\n }\n return shadow(this, \"pageLabels\", obj);\n }\n\n /**\n * @private\n */\n _readPageLabels() {\n const obj = this._catDict.getRaw(\"PageLabels\");\n if (!obj) {\n return null;\n }\n\n const pageLabels = new Array(this.numPages);\n let style = null,\n prefix = \"\";\n\n const numberTree = new NumberTree(obj, this.xref);\n const nums = numberTree.getAll();\n let currentLabel = \"\",\n currentIndex = 1;\n\n for (let i = 0, ii = this.numPages; i < ii; i++) {\n const labelDict = nums.get(i);\n\n if (labelDict !== undefined) {\n if (!isDict(labelDict)) {\n throw new FormatError(\"PageLabel is not a dictionary.\");\n }\n\n if (\n labelDict.has(\"Type\") &&\n !isName(labelDict.get(\"Type\"), \"PageLabel\")\n ) {\n throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n }\n\n if (labelDict.has(\"S\")) {\n const s = labelDict.get(\"S\");\n if (!isName(s)) {\n throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n }\n style = s.name;\n } else {\n style = null;\n }\n\n if (labelDict.has(\"P\")) {\n const p = labelDict.get(\"P\");\n if (!isString(p)) {\n throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n }\n prefix = stringToPDFString(p);\n } else {\n prefix = \"\";\n }\n\n if (labelDict.has(\"St\")) {\n const st = labelDict.get(\"St\");\n if (!(Number.isInteger(st) && st >= 1)) {\n throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n }\n currentIndex = st;\n } else {\n currentIndex = 1;\n }\n }\n\n switch (style) {\n case \"D\":\n currentLabel = currentIndex;\n break;\n case \"R\":\n case \"r\":\n currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n break;\n case \"A\":\n case \"a\":\n const LIMIT = 26; // Use only the characters A-Z, or a-z.\n const A_UPPER_CASE = 0x41,\n A_LOWER_CASE = 0x61;\n\n const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n const letterIndex = currentIndex - 1;\n const character = String.fromCharCode(\n baseCharCode + (letterIndex % LIMIT)\n );\n const charBuf = [];\n for (let j = 0, jj = (letterIndex / LIMIT) | 0; j <= jj; j++) {\n charBuf.push(character);\n }\n currentLabel = charBuf.join(\"\");\n break;\n default:\n if (style) {\n throw new FormatError(\n `Invalid style \"${style}\" in PageLabel dictionary.`\n );\n }\n currentLabel = \"\";\n }\n\n pageLabels[i] = prefix + currentLabel;\n currentIndex++;\n }\n return pageLabels;\n }\n\n get pageLayout() {\n const obj = this._catDict.get(\"PageLayout\");\n // Purposely use a non-standard default value, rather than 'SinglePage', to\n // allow differentiating between `undefined` and /SinglePage since that does\n // affect the Scroll mode (continuous/non-continuous) used in Adobe Reader.\n let pageLayout = \"\";\n\n if (isName(obj)) {\n switch (obj.name) {\n case \"SinglePage\":\n case \"OneColumn\":\n case \"TwoColumnLeft\":\n case \"TwoColumnRight\":\n case \"TwoPageLeft\":\n case \"TwoPageRight\":\n pageLayout = obj.name;\n }\n }\n return shadow(this, \"pageLayout\", pageLayout);\n }\n\n get pageMode() {\n const obj = this._catDict.get(\"PageMode\");\n let pageMode = \"UseNone\"; // Default value.\n\n if (isName(obj)) {\n switch (obj.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"FullScreen\":\n case \"UseOC\":\n case \"UseAttachments\":\n pageMode = obj.name;\n }\n }\n return shadow(this, \"pageMode\", pageMode);\n }\n\n get viewerPreferences() {\n const ViewerPreferencesValidators = {\n HideToolbar: isBool,\n HideMenubar: isBool,\n HideWindowUI: isBool,\n FitWindow: isBool,\n CenterWindow: isBool,\n DisplayDocTitle: isBool,\n NonFullScreenPageMode: isName,\n Direction: isName,\n ViewArea: isName,\n ViewClip: isName,\n PrintArea: isName,\n PrintClip: isName,\n PrintScaling: isName,\n Duplex: isName,\n PickTrayByPDFSize: isBool,\n PrintPageRange: Array.isArray,\n NumCopies: Number.isInteger,\n };\n\n const obj = this._catDict.get(\"ViewerPreferences\");\n let prefs = null;\n\n if (isDict(obj)) {\n for (const key in ViewerPreferencesValidators) {\n if (!obj.has(key)) {\n continue;\n }\n const value = obj.get(key);\n // Make sure the (standard) value conforms to the specification.\n if (!ViewerPreferencesValidators[key](value)) {\n info(`Bad value in ViewerPreferences for \"${key}\".`);\n continue;\n }\n let prefValue;\n\n switch (key) {\n case \"NonFullScreenPageMode\":\n switch (value.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"UseOC\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"UseNone\";\n }\n break;\n case \"Direction\":\n switch (value.name) {\n case \"L2R\":\n case \"R2L\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"L2R\";\n }\n break;\n case \"ViewArea\":\n case \"ViewClip\":\n case \"PrintArea\":\n case \"PrintClip\":\n switch (value.name) {\n case \"MediaBox\":\n case \"CropBox\":\n case \"BleedBox\":\n case \"TrimBox\":\n case \"ArtBox\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"CropBox\";\n }\n break;\n case \"PrintScaling\":\n switch (value.name) {\n case \"None\":\n case \"AppDefault\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"AppDefault\";\n }\n break;\n case \"Duplex\":\n switch (value.name) {\n case \"Simplex\":\n case \"DuplexFlipShortEdge\":\n case \"DuplexFlipLongEdge\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"None\";\n }\n break;\n case \"PrintPageRange\":\n const length = value.length;\n if (length % 2 !== 0) {\n // The number of elements must be even.\n break;\n }\n const isValid = value.every((page, i, arr) => {\n return (\n Number.isInteger(page) &&\n page > 0 &&\n (i === 0 || page >= arr[i - 1]) &&\n page <= this.numPages\n );\n });\n if (isValid) {\n prefValue = value;\n }\n break;\n case \"NumCopies\":\n if (value > 0) {\n prefValue = value;\n }\n break;\n default:\n if (typeof value !== \"boolean\") {\n throw new FormatError(\n `viewerPreferences - expected a boolean value for: ${key}`\n );\n }\n prefValue = value;\n }\n\n if (prefValue !== undefined) {\n if (!prefs) {\n prefs = Object.create(null);\n }\n prefs[key] = prefValue;\n } else {\n info(`Bad value in ViewerPreferences for \"${key}\".`);\n }\n }\n }\n return shadow(this, \"viewerPreferences\", prefs);\n }\n\n get openAction() {\n const obj = this._catDict.get(\"OpenAction\");\n const openAction = Object.create(null);\n\n if (isDict(obj)) {\n // Convert the OpenAction dictionary into a format that works with\n // `parseDestDictionary`, to avoid having to re-implement those checks.\n const destDict = new Dict(this.xref);\n destDict.set(\"A\", obj);\n\n const resultObj = { url: null, dest: null, action: null };\n Catalog.parseDestDictionary({ destDict, resultObj });\n\n if (Array.isArray(resultObj.dest)) {\n openAction.dest = resultObj.dest;\n } else if (resultObj.action) {\n openAction.action = resultObj.action;\n }\n } else if (Array.isArray(obj)) {\n openAction.dest = obj;\n }\n return shadow(\n this,\n \"openAction\",\n objectSize(openAction) > 0 ? openAction : null\n );\n }\n\n get attachments() {\n const obj = this._catDict.get(\"Names\");\n let attachments = null;\n\n if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n const fs = new FileSpec(value, this.xref);\n if (!attachments) {\n attachments = Object.create(null);\n }\n attachments[stringToPDFString(key)] = fs.serializable;\n }\n }\n return shadow(this, \"attachments\", attachments);\n }\n\n get xfaImages() {\n const obj = this._catDict.get(\"Names\");\n let xfaImages = null;\n\n if (obj instanceof Dict && obj.has(\"XFAImages\")) {\n const nameTree = new NameTree(obj.getRaw(\"XFAImages\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n if (!xfaImages) {\n xfaImages = new Dict(this.xref);\n }\n xfaImages.set(key, value);\n }\n }\n return shadow(this, \"xfaImages\", xfaImages);\n }\n\n _collectJavaScript() {\n const obj = this._catDict.get(\"Names\");\n let javaScript = null;\n\n function appendIfJavaScriptDict(name, jsDict) {\n if (!(jsDict instanceof Dict)) {\n return;\n }\n if (!isName(jsDict.get(\"S\"), \"JavaScript\")) {\n return;\n }\n\n let js = jsDict.get(\"JS\");\n if (isStream(js)) {\n js = js.getString();\n } else if (typeof js !== \"string\") {\n return;\n }\n\n if (javaScript === null) {\n javaScript = new Map();\n }\n javaScript.set(name, stringToPDFString(js));\n }\n\n if (obj instanceof Dict && obj.has(\"JavaScript\")) {\n const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n appendIfJavaScriptDict(key, value);\n }\n }\n // Append OpenAction \"JavaScript\" actions, if any, to the JavaScript map.\n const openAction = this._catDict.get(\"OpenAction\");\n if (openAction) {\n appendIfJavaScriptDict(\"OpenAction\", openAction);\n }\n\n return javaScript;\n }\n\n get javaScript() {\n const javaScript = this._collectJavaScript();\n return shadow(\n this,\n \"javaScript\",\n javaScript ? [...javaScript.values()] : null\n );\n }\n\n get jsActions() {\n const javaScript = this._collectJavaScript();\n let actions = collectActions(\n this.xref,\n this._catDict,\n DocumentActionEventType\n );\n\n if (javaScript) {\n if (!actions) {\n actions = Object.create(null);\n }\n for (const [key, val] of javaScript) {\n if (key in actions) {\n actions[key].push(val);\n } else {\n actions[key] = [val];\n }\n }\n }\n return shadow(this, \"jsActions\", actions);\n }\n\n fontFallback(id, handler) {\n const promises = [];\n this.fontCache.forEach(function (promise) {\n promises.push(promise);\n });\n\n return Promise.all(promises).then(translatedFonts => {\n for (const translatedFont of translatedFonts) {\n if (translatedFont.loadedName === id) {\n translatedFont.fallback(handler);\n return;\n }\n }\n });\n }\n\n cleanup(manuallyTriggered = false) {\n clearPrimitiveCaches();\n this.globalImageCache.clear(/* onlyData = */ manuallyTriggered);\n this.pageKidsCountCache.clear();\n this.pageIndexCache.clear();\n this.nonBlendModesSet.clear();\n\n const promises = [];\n this.fontCache.forEach(function (promise) {\n promises.push(promise);\n });\n\n return Promise.all(promises).then(translatedFonts => {\n for (const { dict } of translatedFonts) {\n delete dict.cacheKey;\n }\n this.fontCache.clear();\n this.builtInCMapCache.clear();\n this.standardFontDataCache.clear();\n });\n }\n\n getPageDict(pageIndex) {\n const capability = createPromiseCapability();\n const nodesToVisit = [this.toplevelPagesDict];\n const visitedNodes = new RefSet();\n\n const pagesRef = this._catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const xref = this.xref,\n pageKidsCountCache = this.pageKidsCountCache;\n let currentPageIndex = 0;\n\n function next() {\n while (nodesToVisit.length) {\n const currentNode = nodesToVisit.pop();\n\n if (currentNode instanceof Ref) {\n const count = pageKidsCountCache.get(currentNode);\n // Skip nodes where the page can't be.\n if (count >= 0 && currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n // Prevent circular references in the /Pages tree.\n if (visitedNodes.has(currentNode)) {\n capability.reject(\n new FormatError(\"Pages tree contains circular reference.\")\n );\n return;\n }\n visitedNodes.put(currentNode);\n\n xref.fetchAsync(currentNode).then(function (obj) {\n if (isDict(obj, \"Page\") || (isDict(obj) && !obj.has(\"Kids\"))) {\n // Cache the Page reference, since it can *greatly* improve\n // performance by reducing redundant lookups in long documents\n // where all nodes are found at *one* level of the tree.\n if (currentNode && !pageKidsCountCache.has(currentNode)) {\n pageKidsCountCache.put(currentNode, 1);\n }\n\n if (pageIndex === currentPageIndex) {\n capability.resolve([obj, currentNode]);\n } else {\n currentPageIndex++;\n next();\n }\n return;\n }\n nodesToVisit.push(obj);\n next();\n }, capability.reject);\n return;\n }\n\n // Must be a child page dictionary.\n if (!(currentNode instanceof Dict)) {\n capability.reject(\n new FormatError(\n \"Page dictionary kid reference points to wrong type of object.\"\n )\n );\n return;\n }\n\n let count;\n try {\n count = currentNode.get(\"Count\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n }\n if (Number.isInteger(count) && count >= 0) {\n // Cache the Kids count, since it can reduce redundant lookups in\n // documents where all nodes are found at *one* level of the tree.\n const objId = currentNode.objId;\n if (objId && !pageKidsCountCache.has(objId)) {\n pageKidsCountCache.put(objId, count);\n }\n // Skip nodes where the page can't be.\n if (currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n }\n\n let kids;\n try {\n kids = currentNode.get(\"Kids\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n }\n if (!Array.isArray(kids)) {\n // Prevent errors in corrupt PDF documents that violate the\n // specification by *inlining* Page dicts directly in the Kids\n // array, rather than using indirect objects (fixes issue9540.pdf).\n let type;\n try {\n type = currentNode.get(\"Type\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n }\n if (\n isName(type, \"Page\") ||\n (!currentNode.has(\"Type\") && currentNode.has(\"Contents\"))\n ) {\n if (currentPageIndex === pageIndex) {\n capability.resolve([currentNode, null]);\n return;\n }\n currentPageIndex++;\n continue;\n }\n\n capability.reject(\n new FormatError(\"Page dictionary kids object is not an array.\")\n );\n return;\n }\n\n // Always check all `Kids` nodes, to avoid getting stuck in an empty\n // node further down in the tree (see issue5644.pdf, issue8088.pdf),\n // and to ensure that we actually find the correct `Page` dict.\n for (let last = kids.length - 1; last >= 0; last--) {\n nodesToVisit.push(kids[last]);\n }\n }\n capability.reject(new Error(`Page index ${pageIndex} not found.`));\n }\n next();\n return capability.promise;\n }\n\n /**\n * Eagerly fetches the entire /Pages-tree; should ONLY be used as a fallback.\n * @returns {Map}\n */\n getAllPageDicts(recoveryMode = false) {\n const queue = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }];\n const visitedNodes = new RefSet();\n\n const pagesRef = this._catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const map = new Map();\n let pageIndex = 0;\n\n function addPageDict(pageDict, pageRef) {\n map.set(pageIndex++, [pageDict, pageRef]);\n }\n function addPageError(error) {\n map.set(pageIndex++, [error, null]);\n }\n\n while (queue.length > 0) {\n const queueItem = queue[queue.length - 1];\n const { currentNode, posInKids } = queueItem;\n\n let kids;\n try {\n kids = currentNode.get(\"Kids\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n if (ex instanceof XRefEntryException && !recoveryMode) {\n throw ex;\n }\n addPageError(ex);\n break;\n }\n if (!Array.isArray(kids)) {\n addPageError(\n new FormatError(\"Page dictionary kids object is not an array.\")\n );\n break;\n }\n\n if (posInKids >= kids.length) {\n queue.pop();\n continue;\n }\n\n const kidObj = kids[posInKids];\n let obj;\n if (kidObj instanceof Ref) {\n try {\n obj = this.xref.fetch(kidObj);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n if (ex instanceof XRefEntryException && !recoveryMode) {\n throw ex;\n }\n addPageError(ex);\n break;\n }\n // Prevent circular references in the /Pages tree.\n if (visitedNodes.has(kidObj)) {\n addPageError(\n new FormatError(\"Pages tree contains circular reference.\")\n );\n break;\n }\n visitedNodes.put(kidObj);\n } else {\n // Prevent errors in corrupt PDF documents that violate the\n // specification by *inlining* Page dicts directly in the Kids\n // array, rather than using indirect objects (see issue9540.pdf).\n obj = kidObj;\n }\n if (!(obj instanceof Dict)) {\n addPageError(\n new FormatError(\n \"Page dictionary kid reference points to wrong type of object.\"\n )\n );\n break;\n }\n\n if (isDict(obj, \"Page\") || !obj.has(\"Kids\")) {\n addPageDict(obj, kidObj instanceof Ref ? kidObj : null);\n } else {\n queue.push({ currentNode: obj, posInKids: 0 });\n }\n queueItem.posInKids++;\n }\n return map;\n }\n\n getPageIndex(pageRef) {\n const cachedPageIndex = this.pageIndexCache.get(pageRef);\n if (cachedPageIndex !== undefined) {\n return Promise.resolve(cachedPageIndex);\n }\n\n // The page tree nodes have the count of all the leaves below them. To get\n // how many pages are before we just have to walk up the tree and keep\n // adding the count of siblings to the left of the node.\n const xref = this.xref;\n\n function pagesBeforeRef(kidRef) {\n let total = 0,\n parentRef;\n\n return xref\n .fetchAsync(kidRef)\n .then(function (node) {\n if (\n isRefsEqual(kidRef, pageRef) &&\n !isDict(node, \"Page\") &&\n !(isDict(node) && !node.has(\"Type\") && node.has(\"Contents\"))\n ) {\n throw new FormatError(\n \"The reference does not point to a /Page dictionary.\"\n );\n }\n if (!node) {\n return null;\n }\n if (!isDict(node)) {\n throw new FormatError(\"Node must be a dictionary.\");\n }\n parentRef = node.getRaw(\"Parent\");\n return node.getAsync(\"Parent\");\n })\n .then(function (parent) {\n if (!parent) {\n return null;\n }\n if (!isDict(parent)) {\n throw new FormatError(\"Parent must be a dictionary.\");\n }\n return parent.getAsync(\"Kids\");\n })\n .then(function (kids) {\n if (!kids) {\n return null;\n }\n\n const kidPromises = [];\n let found = false;\n for (let i = 0, ii = kids.length; i < ii; i++) {\n const kid = kids[i];\n if (!isRef(kid)) {\n throw new FormatError(\"Kid must be a reference.\");\n }\n if (isRefsEqual(kid, kidRef)) {\n found = true;\n break;\n }\n kidPromises.push(\n xref.fetchAsync(kid).then(function (obj) {\n if (!isDict(obj)) {\n throw new FormatError(\"Kid node must be a dictionary.\");\n }\n if (obj.has(\"Count\")) {\n total += obj.get(\"Count\");\n } else {\n // Page leaf node.\n total++;\n }\n })\n );\n }\n if (!found) {\n throw new FormatError(\"Kid reference not found in parent's kids.\");\n }\n return Promise.all(kidPromises).then(function () {\n return [total, parentRef];\n });\n });\n }\n\n let total = 0;\n const next = ref =>\n pagesBeforeRef(ref).then(args => {\n if (!args) {\n this.pageIndexCache.put(pageRef, total);\n return total;\n }\n const [count, parentRef] = args;\n total += count;\n return next(parentRef);\n });\n\n return next(pageRef);\n }\n\n /**\n * @typedef ParseDestDictionaryParameters\n * @property {Dict} destDict - The dictionary containing the destination.\n * @property {Object} resultObj - The object where the parsed destination\n * properties will be placed.\n * @property {string} [docBaseUrl] - The document base URL that is used when\n * attempting to recover valid absolute URLs from relative ones.\n */\n\n /**\n * Helper function used to parse the contents of destination dictionaries.\n * @param {ParseDestDictionaryParameters} params\n */\n static parseDestDictionary(params) {\n const destDict = params.destDict;\n if (!isDict(destDict)) {\n warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n return;\n }\n const resultObj = params.resultObj;\n if (typeof resultObj !== \"object\") {\n warn(\"parseDestDictionary: `resultObj` must be an object.\");\n return;\n }\n const docBaseUrl = params.docBaseUrl || null;\n\n let action = destDict.get(\"A\"),\n url,\n dest;\n if (!isDict(action)) {\n if (destDict.has(\"Dest\")) {\n // A /Dest entry should *only* contain a Name or an Array, but some bad\n // PDF generators ignore that and treat it as an /A entry.\n action = destDict.get(\"Dest\");\n } else {\n action = destDict.get(\"AA\");\n if (isDict(action)) {\n if (action.has(\"D\")) {\n // MouseDown\n action = action.get(\"D\");\n } else if (action.has(\"U\")) {\n // MouseUp\n action = action.get(\"U\");\n }\n }\n }\n }\n\n if (isDict(action)) {\n const actionType = action.get(\"S\");\n if (!isName(actionType)) {\n warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n return;\n }\n const actionName = actionType.name;\n\n switch (actionName) {\n case \"ResetForm\":\n const flags = action.get(\"Flags\");\n const include = ((isNum(flags) ? flags : 0) & 1) === 0;\n const fields = [];\n const refs = [];\n for (const obj of action.get(\"Fields\") || []) {\n if (isRef(obj)) {\n refs.push(obj.toString());\n } else if (isString(obj)) {\n fields.push(stringToPDFString(obj));\n }\n }\n resultObj.resetForm = { fields, refs, include };\n break;\n case \"URI\":\n url = action.get(\"URI\");\n if (url instanceof Name) {\n // Some bad PDFs do not put parentheses around relative URLs.\n url = \"/\" + url.name;\n }\n // TODO: pdf spec mentions urls can be relative to a Base\n // entry in the dictionary.\n break;\n\n case \"GoTo\":\n dest = action.get(\"D\");\n break;\n\n case \"Launch\":\n // We neither want, nor can, support arbitrary 'Launch' actions.\n // However, in practice they are mostly used for linking to other PDF\n // files, which we thus attempt to support (utilizing `docBaseUrl`).\n /* falls through */\n\n case \"GoToR\":\n const urlDict = action.get(\"F\");\n if (isDict(urlDict)) {\n // We assume that we found a FileSpec dictionary\n // and fetch the URL without checking any further.\n url = urlDict.get(\"F\") || null;\n } else if (isString(urlDict)) {\n url = urlDict;\n }\n\n // NOTE: the destination is relative to the *remote* document.\n let remoteDest = action.get(\"D\");\n if (remoteDest) {\n if (isName(remoteDest)) {\n remoteDest = remoteDest.name;\n }\n if (isString(url)) {\n const baseUrl = url.split(\"#\")[0];\n if (isString(remoteDest)) {\n url = baseUrl + \"#\" + remoteDest;\n } else if (Array.isArray(remoteDest)) {\n url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n }\n }\n }\n // The 'NewWindow' property, equal to `LinkTarget.BLANK`.\n const newWindow = action.get(\"NewWindow\");\n if (isBool(newWindow)) {\n resultObj.newWindow = newWindow;\n }\n break;\n\n case \"Named\":\n const namedAction = action.get(\"N\");\n if (isName(namedAction)) {\n resultObj.action = namedAction.name;\n }\n break;\n\n case \"JavaScript\":\n const jsAction = action.get(\"JS\");\n let js;\n\n if (isStream(jsAction)) {\n js = jsAction.getString();\n } else if (isString(jsAction)) {\n js = jsAction;\n }\n\n const jsURL = js && recoverJsURL(stringToPDFString(js));\n if (jsURL) {\n url = jsURL.url;\n resultObj.newWindow = jsURL.newWindow;\n break;\n }\n /* falls through */\n default:\n if (actionName === \"JavaScript\" || actionName === \"SubmitForm\") {\n // Don't bother the user with a warning for actions that require\n // scripting support, since those will be handled separately.\n break;\n }\n warn(`parseDestDictionary - unsupported action: \"${actionName}\".`);\n break;\n }\n } else if (destDict.has(\"Dest\")) {\n // Simple destination.\n dest = destDict.get(\"Dest\");\n }\n\n if (isString(url)) {\n const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, {\n addDefaultProtocol: true,\n tryConvertEncoding: true,\n });\n if (absoluteUrl) {\n resultObj.url = absoluteUrl.href;\n }\n resultObj.unsafeUrl = url;\n }\n if (dest) {\n if (isName(dest)) {\n dest = dest.name;\n }\n if (isString(dest) || Array.isArray(dest)) {\n resultObj.dest = dest;\n }\n }\n }\n}\n\nexport { Catalog };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, unreachable, warn } from \"../shared/util.js\";\nimport { isDict, RefSet } from \"./primitives.js\";\n\n/**\n * A NameTree/NumberTree is like a Dict but has some advantageous properties,\n * see the specification (7.9.6 and 7.9.7) for additional details.\n * TODO: implement all the Dict functions and make this more efficient.\n */\nclass NameOrNumberTree {\n constructor(root, xref, type) {\n if (this.constructor === NameOrNumberTree) {\n unreachable(\"Cannot initialize NameOrNumberTree.\");\n }\n this.root = root;\n this.xref = xref;\n this._type = type;\n }\n\n getAll() {\n const map = new Map();\n if (!this.root) {\n return map;\n }\n const xref = this.xref;\n // Reading Name/Number tree.\n const processed = new RefSet();\n processed.put(this.root);\n const queue = [this.root];\n while (queue.length > 0) {\n const obj = xref.fetchIfRef(queue.shift());\n if (!isDict(obj)) {\n continue;\n }\n if (obj.has(\"Kids\")) {\n const kids = obj.get(\"Kids\");\n for (let i = 0, ii = kids.length; i < ii; i++) {\n const kid = kids[i];\n if (processed.has(kid)) {\n throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n }\n queue.push(kid);\n processed.put(kid);\n }\n continue;\n }\n const entries = obj.get(this._type);\n if (!Array.isArray(entries)) {\n continue;\n }\n for (let i = 0, ii = entries.length; i < ii; i += 2) {\n map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1]));\n }\n }\n return map;\n }\n\n get(key) {\n if (!this.root) {\n return null;\n }\n const xref = this.xref;\n let kidsOrEntries = xref.fetchIfRef(this.root);\n let loopCount = 0;\n const MAX_LEVELS = 10;\n\n // Perform a binary search to quickly find the entry that\n // contains the key we are looking for.\n while (kidsOrEntries.has(\"Kids\")) {\n if (++loopCount > MAX_LEVELS) {\n warn(`Search depth limit reached for \"${this._type}\" tree.`);\n return null;\n }\n\n const kids = kidsOrEntries.get(\"Kids\");\n if (!Array.isArray(kids)) {\n return null;\n }\n\n let l = 0,\n r = kids.length - 1;\n while (l <= r) {\n const m = (l + r) >> 1;\n const kid = xref.fetchIfRef(kids[m]);\n const limits = kid.get(\"Limits\");\n\n if (key < xref.fetchIfRef(limits[0])) {\n r = m - 1;\n } else if (key > xref.fetchIfRef(limits[1])) {\n l = m + 1;\n } else {\n kidsOrEntries = xref.fetchIfRef(kids[m]);\n break;\n }\n }\n if (l > r) {\n return null;\n }\n }\n\n // If we get here, then we have found the right entry. Now go through the\n // entries in the dictionary until we find the key we're looking for.\n const entries = kidsOrEntries.get(this._type);\n if (Array.isArray(entries)) {\n // Perform a binary search to reduce the lookup time.\n let l = 0,\n r = entries.length - 2;\n while (l <= r) {\n // Check only even indices (0, 2, 4, ...) because the\n // odd indices contain the actual data.\n const tmp = (l + r) >> 1,\n m = tmp + (tmp & 1);\n const currentKey = xref.fetchIfRef(entries[m]);\n if (key < currentKey) {\n r = m - 2;\n } else if (key > currentKey) {\n l = m + 2;\n } else {\n return xref.fetchIfRef(entries[m + 1]);\n }\n }\n }\n return null;\n }\n}\n\nclass NameTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Names\");\n }\n}\n\nclass NumberTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Nums\");\n }\n}\n\nexport { NameTree, NumberTree };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isDict, isStream } from \"./primitives.js\";\nimport { stringToPDFString, warn } from \"../shared/util.js\";\n\nfunction pickPlatformItem(dict) {\n // Look for the filename in this order:\n // UF, F, Unix, Mac, DOS\n if (dict.has(\"UF\")) {\n return dict.get(\"UF\");\n } else if (dict.has(\"F\")) {\n return dict.get(\"F\");\n } else if (dict.has(\"Unix\")) {\n return dict.get(\"Unix\");\n } else if (dict.has(\"Mac\")) {\n return dict.get(\"Mac\");\n } else if (dict.has(\"DOS\")) {\n return dict.get(\"DOS\");\n }\n return null;\n}\n\n/**\n * \"A PDF file can refer to the contents of another file by using a File\n * Specification (PDF 1.1)\", see the spec (7.11) for more details.\n * NOTE: Only embedded files are supported (as part of the attachments support)\n * TODO: support the 'URL' file system (with caching if !/V), portable\n * collections attributes and related files (/RF)\n */\nclass FileSpec {\n constructor(root, xref) {\n if (!root || !isDict(root)) {\n return;\n }\n this.xref = xref;\n this.root = root;\n if (root.has(\"FS\")) {\n this.fs = root.get(\"FS\");\n }\n this.description = root.has(\"Desc\")\n ? stringToPDFString(root.get(\"Desc\"))\n : \"\";\n if (root.has(\"RF\")) {\n warn(\"Related file specifications are not supported\");\n }\n this.contentAvailable = true;\n if (!root.has(\"EF\")) {\n this.contentAvailable = false;\n warn(\"Non-embedded file specifications are not supported\");\n }\n }\n\n get filename() {\n if (!this._filename && this.root) {\n const filename = pickPlatformItem(this.root) || \"unnamed\";\n this._filename = stringToPDFString(filename)\n .replace(/\\\\\\\\/g, \"\\\\\")\n .replace(/\\\\\\//g, \"/\")\n .replace(/\\\\/g, \"/\");\n }\n return this._filename;\n }\n\n get content() {\n if (!this.contentAvailable) {\n return null;\n }\n if (!this.contentRef && this.root) {\n this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n }\n let content = null;\n if (this.contentRef) {\n const fileObj = this.xref.fetchIfRef(this.contentRef);\n if (fileObj && isStream(fileObj)) {\n content = fileObj.getBytes();\n } else {\n warn(\n \"Embedded file specification points to non-existing/invalid content\"\n );\n }\n } else {\n warn(\"Embedded file specification does not have a content\");\n }\n return content;\n }\n\n get serializable() {\n return {\n filename: this.filename,\n content: this.content,\n };\n }\n}\n\nexport { FileSpec };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SimpleXMLParser } from \"./xml_parser.js\";\n\nclass MetadataParser {\n constructor(data) {\n // Ghostscript may produce invalid metadata, so try to repair that first.\n data = this._repair(data);\n\n // Convert the string to an XML document.\n const parser = new SimpleXMLParser({ lowerCaseName: true });\n const xmlDocument = parser.parseFromString(data);\n\n this._metadataMap = new Map();\n this._data = data;\n\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n\n _repair(data) {\n // Start by removing any \"junk\" before the first tag (see issue 10395).\n return data\n .replace(/^[^<]+/, \"\")\n .replace(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n const bytes = codes\n .replace(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n })\n .replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n switch (name) {\n case \"amp\":\n return \"&\";\n case \"apos\":\n return \"'\";\n case \"gt\":\n return \">\";\n case \"lt\":\n return \"<\";\n case \"quot\":\n return '\"';\n }\n throw new Error(`_repair: ${name} isn't defined.`);\n });\n\n const charBuf = [];\n for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n if (\n code >= /* Space = */ 32 &&\n code < /* Delete = */ 127 &&\n code !== /* '<' = */ 60 &&\n code !== /* '>' = */ 62 &&\n code !== /* '&' = */ 38\n ) {\n charBuf.push(String.fromCharCode(code));\n } else {\n charBuf.push(\n \"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\"\n );\n }\n }\n return \">\" + charBuf.join(\"\");\n });\n }\n\n _getSequence(entry) {\n const name = entry.nodeName;\n if (name !== \"rdf:bag\" && name !== \"rdf:seq\" && name !== \"rdf:alt\") {\n return null;\n }\n return entry.childNodes.filter(node => node.nodeName === \"rdf:li\");\n }\n\n _parseArray(entry) {\n if (!entry.hasChildNodes()) {\n return;\n }\n // Child must be a Bag (unordered array) or a Seq.\n const [seqNode] = entry.childNodes;\n const sequence = this._getSequence(seqNode) || [];\n\n this._metadataMap.set(\n entry.nodeName,\n sequence.map(node => node.textContent.trim())\n );\n }\n\n _parse(xmlDocument) {\n let rdf = xmlDocument.documentElement;\n\n if (rdf.nodeName !== \"rdf:rdf\") {\n // Wrapped in <xmpmeta>\n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName !== \"rdf:rdf\") {\n rdf = rdf.nextSibling;\n }\n }\n\n if (!rdf || rdf.nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n return;\n }\n\n for (const desc of rdf.childNodes) {\n if (desc.nodeName !== \"rdf:description\") {\n continue;\n }\n\n for (const entry of desc.childNodes) {\n const name = entry.nodeName;\n switch (name) {\n case \"#text\":\n continue;\n case \"dc:creator\":\n case \"dc:subject\":\n this._parseArray(entry);\n continue;\n }\n this._metadataMap.set(name, entry.textContent.trim());\n }\n }\n }\n\n get serializable() {\n return {\n parsedData: this._metadataMap,\n rawData: this._data,\n };\n }\n}\n\nexport { MetadataParser };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// The code for XMLParserBase copied from\n// https://github.com/mozilla/shumway/blob/16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0/src/avm2/natives/xml.ts\n\nimport { encodeToXmlString } from \"./core_utils.js\";\n\nconst XMLParserErrorCode = {\n NoError: 0,\n EndOfDocument: -1,\n UnterminatedCdat: -2,\n UnterminatedXmlDeclaration: -3,\n UnterminatedDoctypeDeclaration: -4,\n UnterminatedComment: -5,\n MalformedElement: -6,\n OutOfMemory: -7,\n UnterminatedAttributeValue: -8,\n UnterminatedElement: -9,\n ElementNeverBegun: -10,\n};\n\nfunction isWhitespace(s, index) {\n const ch = s[index];\n return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\n\nfunction isWhitespaceString(s) {\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (!isWhitespace(s, i)) {\n return false;\n }\n }\n return true;\n}\n\nclass XMLParserBase {\n _resolveEntities(s) {\n return s.replace(/&([^;]+);/g, (all, entity) => {\n if (entity.substring(0, 2) === \"#x\") {\n return String.fromCodePoint(parseInt(entity.substring(2), 16));\n } else if (entity.substring(0, 1) === \"#\") {\n return String.fromCodePoint(parseInt(entity.substring(1), 10));\n }\n switch (entity) {\n case \"lt\":\n return \"<\";\n case \"gt\":\n return \">\";\n case \"amp\":\n return \"&\";\n case \"quot\":\n return '\"';\n case \"apos\":\n return \"'\";\n }\n return this.onResolveEntity(entity);\n });\n }\n\n _parseContent(s, start) {\n const attributes = [];\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n while (\n pos < s.length &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\" &&\n s[pos] !== \"?\"\n ) {\n skipWs();\n let attrName = \"\",\n attrValue = \"\";\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n attrName += s[pos];\n ++pos;\n }\n skipWs();\n if (s[pos] !== \"=\") {\n return null;\n }\n ++pos;\n skipWs();\n const attrEndChar = s[pos];\n if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n return null;\n }\n const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n if (attrEndIndex < 0) {\n return null;\n }\n attrValue = s.substring(pos, attrEndIndex);\n attributes.push({\n name: attrName,\n value: this._resolveEntities(attrValue),\n });\n pos = attrEndIndex + 1;\n skipWs();\n }\n return {\n name,\n attributes,\n parsed: pos - start,\n };\n }\n\n _parseProcessingInstruction(s, start) {\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"?\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n const attrStart = pos;\n while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n ++pos;\n }\n const value = s.substring(attrStart, pos);\n return {\n name,\n value,\n parsed: pos - start,\n };\n }\n\n parseXml(s) {\n let i = 0;\n while (i < s.length) {\n const ch = s[i];\n let j = i;\n if (ch === \"<\") {\n ++j;\n const ch2 = s[j];\n let q;\n switch (ch2) {\n case \"/\":\n ++j;\n q = s.indexOf(\">\", j);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onEndElement(s.substring(j, q));\n j = q + 1;\n break;\n case \"?\":\n ++j;\n const pi = this._parseProcessingInstruction(s, j);\n if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n return;\n }\n this.onPi(pi.name, pi.value);\n j += pi.parsed + 2;\n break;\n case \"!\":\n if (s.substring(j + 1, j + 3) === \"--\") {\n q = s.indexOf(\"-->\", j + 3);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\n this.onComment(s.substring(j + 3, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n q = s.indexOf(\"]]>\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n const q2 = s.indexOf(\"[\", j + 8);\n let complexDoctype = false;\n q = s.indexOf(\">\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n if (q2 > 0 && q > q2) {\n q = s.indexOf(\"]>\", j + 8);\n if (q < 0) {\n this.onError(\n XMLParserErrorCode.UnterminatedDoctypeDeclaration\n );\n return;\n }\n complexDoctype = true;\n }\n const doctypeContent = s.substring(\n j + 8,\n q + (complexDoctype ? 1 : 0)\n );\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n break;\n default:\n const content = this._parseContent(s, j);\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n let isClosed = false;\n if (\n s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\"\n ) {\n isClosed = true;\n } else if (\n s.substring(j + content.parsed, j + content.parsed + 1) !== \">\"\n ) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onBeginElement(content.name, content.attributes, isClosed);\n j += content.parsed + (isClosed ? 2 : 1);\n break;\n }\n } else {\n while (j < s.length && s[j] !== \"<\") {\n j++;\n }\n const text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n i = j;\n }\n }\n\n onResolveEntity(name) {\n return `&${name};`;\n }\n\n onPi(name, value) {}\n\n onComment(text) {}\n\n onCdata(text) {}\n\n onDoctype(doctypeContent) {}\n\n onText(text) {}\n\n onBeginElement(name, attributes, isEmpty) {}\n\n onEndElement(name) {}\n\n onError(code) {}\n}\n\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n\n Object.defineProperty(this, \"parentNode\", { value: null, writable: true });\n }\n\n get firstChild() {\n return this.childNodes && this.childNodes[0];\n }\n\n get nextSibling() {\n const childNodes = this.parentNode.childNodes;\n if (!childNodes) {\n return undefined;\n }\n const index = childNodes.indexOf(this);\n if (index === -1) {\n return undefined;\n }\n return childNodes[index + 1];\n }\n\n get textContent() {\n if (!this.childNodes) {\n return this.nodeValue || \"\";\n }\n return this.childNodes\n .map(function (child) {\n return child.textContent;\n })\n .join(\"\");\n }\n\n hasChildNodes() {\n return this.childNodes && this.childNodes.length > 0;\n }\n\n /**\n * Search a node in the tree with the given path\n * foo.bar[nnn], i.e. find the nnn-th node named\n * bar under a node named foo.\n *\n * @param {Array} paths - an array of objects as\n * returned by {parseXFAPath}.\n * @param {number} pos - the current position in\n * the paths array.\n * @returns {SimpleDOMNode} The node corresponding\n * to the path or null if not found.\n */\n searchNode(paths, pos) {\n if (pos >= paths.length) {\n return this;\n }\n\n const component = paths[pos];\n const stack = [];\n let node = this;\n\n while (true) {\n if (component.name === node.nodeName) {\n if (component.pos === 0) {\n const res = node.searchNode(paths, pos + 1);\n if (res !== null) {\n return res;\n }\n } else if (stack.length === 0) {\n return null;\n } else {\n const [parent] = stack.pop();\n let siblingPos = 0;\n for (const child of parent.childNodes) {\n if (component.name === child.nodeName) {\n if (siblingPos === component.pos) {\n return child.searchNode(paths, pos + 1);\n }\n siblingPos++;\n }\n }\n // We didn't find the correct sibling\n // so just return the first found node\n return node.searchNode(paths, pos + 1);\n }\n }\n\n if (node.childNodes && node.childNodes.length !== 0) {\n stack.push([node, 0]);\n node = node.childNodes[0];\n } else if (stack.length === 0) {\n return null;\n } else {\n while (stack.length !== 0) {\n const [parent, currentPos] = stack.pop();\n const newPos = currentPos + 1;\n if (newPos < parent.childNodes.length) {\n stack.push([parent, newPos]);\n node = parent.childNodes[newPos];\n break;\n }\n }\n if (stack.length === 0) {\n return null;\n }\n }\n }\n }\n\n dump(buffer) {\n if (this.nodeName === \"#text\") {\n buffer.push(encodeToXmlString(this.nodeValue));\n return;\n }\n\n buffer.push(`<${this.nodeName}`);\n if (this.attributes) {\n for (const attribute of this.attributes) {\n buffer.push(\n ` ${attribute.name}=\"${encodeToXmlString(attribute.value)}\"`\n );\n }\n }\n if (this.hasChildNodes()) {\n buffer.push(\">\");\n for (const child of this.childNodes) {\n child.dump(buffer);\n }\n buffer.push(`</${this.nodeName}>`);\n } else if (this.nodeValue) {\n buffer.push(`>${encodeToXmlString(this.nodeValue)}</${this.nodeName}>`);\n } else {\n buffer.push(\"/>\");\n }\n }\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n constructor({ hasAttributes = false, lowerCaseName = false }) {\n super();\n this._currentFragment = null;\n this._stack = null;\n this._errorCode = XMLParserErrorCode.NoError;\n this._hasAttributes = hasAttributes;\n this._lowerCaseName = lowerCaseName;\n }\n\n parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined; // return undefined on error\n }\n\n // We should only have one root.\n const [documentElement] = this._currentFragment;\n if (!documentElement) {\n return undefined; // Return undefined if no root was found.\n }\n return { documentElement };\n }\n\n onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onCdata(text) {\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onBeginElement(name, attributes, isEmpty) {\n if (this._lowerCaseName) {\n name = name.toLowerCase();\n }\n const node = new SimpleDOMNode(name);\n node.childNodes = [];\n if (this._hasAttributes) {\n node.attributes = attributes;\n }\n this._currentFragment.push(node);\n if (isEmpty) {\n return;\n }\n this._stack.push(this._currentFragment);\n this._currentFragment = node.childNodes;\n }\n\n onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n const lastElement = this._currentFragment[this._currentFragment.length - 1];\n if (!lastElement) {\n return;\n }\n for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n lastElement.childNodes[i].parentNode = lastElement;\n }\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { SimpleDOMNode, SimpleXMLParser, XMLParserBase, XMLParserErrorCode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isDict, isName, isRef } from \"./primitives.js\";\nimport { isString, stringToPDFString, warn } from \"../shared/util.js\";\nimport { NumberTree } from \"./name_number_tree.js\";\n\nconst MAX_DEPTH = 40;\n\nconst StructElementType = {\n PAGE_CONTENT: \"PAGE_CONTENT\",\n STREAM_CONTENT: \"STREAM_CONTENT\",\n OBJECT: \"OBJECT\",\n ELEMENT: \"ELEMENT\",\n};\n\nclass StructTreeRoot {\n constructor(rootDict) {\n this.dict = rootDict;\n this.roleMap = new Map();\n }\n\n init() {\n this.readRoleMap();\n }\n\n readRoleMap() {\n const roleMapDict = this.dict.get(\"RoleMap\");\n if (!isDict(roleMapDict)) {\n return;\n }\n roleMapDict.forEach((key, value) => {\n if (!isName(value)) {\n return;\n }\n this.roleMap.set(key, value.name);\n });\n }\n}\n\n/**\n * Instead of loading the whole tree we load just the page's relevant structure\n * elements, which means we need a wrapper structure to represent the tree.\n */\nclass StructElementNode {\n constructor(tree, dict) {\n this.tree = tree;\n this.dict = dict;\n this.kids = [];\n this.parseKids();\n }\n\n get role() {\n const nameObj = this.dict.get(\"S\");\n const name = isName(nameObj) ? nameObj.name : \"\";\n const { root } = this.tree;\n if (root.roleMap.has(name)) {\n return root.roleMap.get(name);\n }\n return name;\n }\n\n parseKids() {\n let pageObjId = null;\n const objRef = this.dict.getRaw(\"Pg\");\n if (isRef(objRef)) {\n pageObjId = objRef.toString();\n }\n const kids = this.dict.get(\"K\");\n if (Array.isArray(kids)) {\n for (const kid of kids) {\n const element = this.parseKid(pageObjId, kid);\n if (element) {\n this.kids.push(element);\n }\n }\n } else {\n const element = this.parseKid(pageObjId, kids);\n if (element) {\n this.kids.push(element);\n }\n }\n }\n\n parseKid(pageObjId, kid) {\n // A direct link to content, the integer is an mcid.\n if (Number.isInteger(kid)) {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n\n return new StructElement({\n type: StructElementType.PAGE_CONTENT,\n mcid: kid,\n pageObjId,\n });\n }\n\n // Find the dictionary for the kid.\n let kidDict = null;\n if (isRef(kid)) {\n kidDict = this.dict.xref.fetch(kid);\n } else if (isDict(kid)) {\n kidDict = kid;\n }\n if (!kidDict) {\n return null;\n }\n const pageRef = kidDict.getRaw(\"Pg\");\n if (isRef(pageRef)) {\n pageObjId = pageRef.toString();\n }\n\n const type = isName(kidDict.get(\"Type\")) ? kidDict.get(\"Type\").name : null;\n if (type === \"MCR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.STREAM_CONTENT,\n refObjId: isRef(kidDict.getRaw(\"Stm\"))\n ? kidDict.getRaw(\"Stm\").toString()\n : null,\n pageObjId,\n mcid: kidDict.get(\"MCID\"),\n });\n }\n\n if (type === \"OBJR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.OBJECT,\n refObjId: isRef(kidDict.getRaw(\"Obj\"))\n ? kidDict.getRaw(\"Obj\").toString()\n : null,\n pageObjId,\n });\n }\n\n return new StructElement({\n type: StructElementType.ELEMENT,\n dict: kidDict,\n });\n }\n}\n\nclass StructElement {\n constructor({\n type,\n dict = null,\n mcid = null,\n pageObjId = null,\n refObjId = null,\n }) {\n this.type = type;\n this.dict = dict;\n this.mcid = mcid;\n this.pageObjId = pageObjId;\n this.refObjId = refObjId;\n this.parentNode = null;\n }\n}\n\nclass StructTreePage {\n constructor(structTreeRoot, pageDict) {\n this.root = structTreeRoot;\n this.rootDict = structTreeRoot ? structTreeRoot.dict : null;\n this.pageDict = pageDict;\n this.nodes = [];\n }\n\n parse() {\n if (!this.root || !this.rootDict) {\n return;\n }\n\n const parentTree = this.rootDict.get(\"ParentTree\");\n if (!parentTree) {\n return;\n }\n const id = this.pageDict.get(\"StructParents\");\n if (!Number.isInteger(id)) {\n return;\n }\n const numberTree = new NumberTree(parentTree, this.rootDict.xref);\n const parentArray = numberTree.get(id);\n if (!Array.isArray(parentArray)) {\n return;\n }\n const map = new Map();\n for (const ref of parentArray) {\n if (isRef(ref)) {\n this.addNode(this.rootDict.xref.fetch(ref), map);\n }\n }\n }\n\n addNode(dict, map, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree MAX_DEPTH reached.\");\n return null;\n }\n\n if (map.has(dict)) {\n return map.get(dict);\n }\n\n const element = new StructElementNode(this, dict);\n map.set(dict, element);\n\n const parent = dict.get(\"P\");\n\n if (!parent || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n if (!this.addTopLevelNode(dict, element)) {\n map.delete(dict);\n }\n return element;\n }\n\n const parentNode = this.addNode(parent, map, level + 1);\n if (!parentNode) {\n return element;\n }\n let save = false;\n for (const kid of parentNode.kids) {\n if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\n kid.parentNode = element;\n save = true;\n }\n }\n if (!save) {\n map.delete(dict);\n }\n return element;\n }\n\n addTopLevelNode(dict, element) {\n const obj = this.rootDict.get(\"K\");\n if (!obj) {\n return false;\n }\n\n if (isDict(obj)) {\n if (obj.objId !== dict.objId) {\n return false;\n }\n this.nodes[0] = element;\n return true;\n }\n\n if (!Array.isArray(obj)) {\n return true;\n }\n let save = false;\n for (let i = 0; i < obj.length; i++) {\n const kidRef = obj[i];\n if (kidRef && kidRef.toString() === dict.objId) {\n this.nodes[i] = element;\n save = true;\n }\n }\n return save;\n }\n\n /**\n * Convert the tree structure into a simplifed object literal that can\n * be sent to the main thread.\n * @returns {Object}\n */\n get serializable() {\n function nodeToSerializable(node, parent, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree too deep to be fully serialized.\");\n return;\n }\n const obj = Object.create(null);\n obj.role = node.role;\n obj.children = [];\n parent.children.push(obj);\n const alt = node.dict.get(\"Alt\");\n if (isString(alt)) {\n obj.alt = stringToPDFString(alt);\n }\n const lang = node.dict.get(\"Lang\");\n if (isString(lang)) {\n obj.lang = stringToPDFString(lang);\n }\n\n for (const kid of node.kids) {\n const kidElement =\n kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\n if (kidElement) {\n nodeToSerializable(kidElement, obj, level + 1);\n continue;\n } else if (\n kid.type === StructElementType.PAGE_CONTENT ||\n kid.type === StructElementType.STREAM_CONTENT\n ) {\n obj.children.push({\n type: \"content\",\n id: `page${kid.pageObjId}_mcid${kid.mcid}`,\n });\n } else if (kid.type === StructElementType.OBJECT) {\n obj.children.push({\n type: \"object\",\n id: kid.refObjId,\n });\n }\n }\n }\n\n const root = Object.create(null);\n root.children = [];\n root.role = \"Root\";\n for (const child of this.nodes) {\n if (!child) {\n continue;\n }\n nodeToSerializable(child, root);\n }\n return root;\n }\n}\n\nexport { StructTreePage, StructTreeRoot };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isStream, Ref, RefSet } from \"./primitives.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction mayHaveChildren(value) {\n return (\n value instanceof Ref ||\n value instanceof Dict ||\n Array.isArray(value) ||\n isStream(value)\n );\n}\n\nfunction addChildren(node, nodesToVisit) {\n if (node instanceof Dict) {\n node = node.getRawValues();\n } else if (isStream(node)) {\n node = node.dict.getRawValues();\n } else if (!Array.isArray(node)) {\n return;\n }\n for (const rawValue of node) {\n if (mayHaveChildren(rawValue)) {\n nodesToVisit.push(rawValue);\n }\n }\n}\n\n/**\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\n * depth first and queues up any objects that have missing data. Once it has\n * has traversed as many objects that are available it attempts to bundle the\n * missing data requests and then resume from the nodes that weren't ready.\n *\n * NOTE: It provides protection from circular references by keeping track of\n * loaded references. However, you must be careful not to load any graphs\n * that have references to the catalog or other pages since that will cause the\n * entire PDF document object graph to be traversed.\n */\nclass ObjectLoader {\n constructor(dict, keys, xref) {\n this.dict = dict;\n this.keys = keys;\n this.xref = xref;\n this.refSet = null;\n }\n\n async load() {\n // Don't walk the graph if all the data is already loaded.\n if (this.xref.stream.isDataLoaded) {\n return undefined;\n }\n\n const { keys, dict } = this;\n this.refSet = new RefSet();\n // Setup the initial nodes to visit.\n const nodesToVisit = [];\n for (let i = 0, ii = keys.length; i < ii; i++) {\n const rawValue = dict.getRaw(keys[i]);\n // Skip nodes that are guaranteed to be empty.\n if (rawValue !== undefined) {\n nodesToVisit.push(rawValue);\n }\n }\n return this._walk(nodesToVisit);\n }\n\n async _walk(nodesToVisit) {\n const nodesToRevisit = [];\n const pendingRequests = [];\n // DFS walk of the object graph.\n while (nodesToVisit.length) {\n let currentNode = nodesToVisit.pop();\n\n // Only references or chunked streams can cause missing data exceptions.\n if (currentNode instanceof Ref) {\n // Skip nodes that have already been visited.\n if (this.refSet.has(currentNode)) {\n continue;\n }\n try {\n this.refSet.put(currentNode);\n currentNode = this.xref.fetch(currentNode);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n warn(`ObjectLoader._walk - requesting all data: \"${ex}\".`);\n this.refSet = null;\n\n const { manager } = this.xref.stream;\n return manager.requestAllChunks();\n }\n nodesToRevisit.push(currentNode);\n pendingRequests.push({ begin: ex.begin, end: ex.end });\n }\n }\n if (isStream(currentNode)) {\n const baseStreams = currentNode.getBaseStreams();\n if (baseStreams) {\n let foundMissingData = false;\n for (const stream of baseStreams) {\n if (stream.isDataLoaded) {\n continue;\n }\n foundMissingData = true;\n pendingRequests.push({ begin: stream.start, end: stream.end });\n }\n if (foundMissingData) {\n nodesToRevisit.push(currentNode);\n }\n }\n }\n\n addChildren(currentNode, nodesToVisit);\n }\n\n if (pendingRequests.length) {\n await this.xref.stream.manager.requestRanges(pendingRequests);\n\n for (const node of nodesToRevisit) {\n // Remove any reference nodes from the current `RefSet` so they\n // aren't skipped when we revist them.\n if (node instanceof Ref) {\n this.refSet.remove(node);\n }\n }\n return this._walk(nodesToRevisit);\n }\n // Everything is loaded.\n this.refSet = null;\n return undefined;\n }\n}\n\nexport { ObjectLoader };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, escapeString, warn } from \"../shared/util.js\";\nimport { Dict, isDict, isName, isRef, isStream, Name } from \"./primitives.js\";\nimport { escapePDFName, parseXFAPath } from \"./core_utils.js\";\nimport { SimpleDOMNode, SimpleXMLParser } from \"./xml_parser.js\";\nimport { calculateMD5 } from \"./crypto.js\";\n\nfunction writeDict(dict, buffer, transform) {\n buffer.push(\"<<\");\n for (const key of dict.getKeys()) {\n buffer.push(` /${escapePDFName(key)} `);\n writeValue(dict.getRaw(key), buffer, transform);\n }\n buffer.push(\">>\");\n}\n\nfunction writeStream(stream, buffer, transform) {\n writeDict(stream.dict, buffer, transform);\n buffer.push(\" stream\\n\");\n let string = stream.getString();\n if (transform !== null) {\n string = transform.encryptString(string);\n }\n buffer.push(string, \"\\nendstream\\n\");\n}\n\nfunction writeArray(array, buffer, transform) {\n buffer.push(\"[\");\n let first = true;\n for (const val of array) {\n if (!first) {\n buffer.push(\" \");\n } else {\n first = false;\n }\n writeValue(val, buffer, transform);\n }\n buffer.push(\"]\");\n}\n\nfunction numberToString(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n const roundedValue = Math.round(value * 100);\n if (roundedValue % 100 === 0) {\n return (roundedValue / 100).toString();\n }\n\n if (roundedValue % 10 === 0) {\n return value.toFixed(1);\n }\n\n return value.toFixed(2);\n}\n\nfunction writeValue(value, buffer, transform) {\n if (isName(value)) {\n buffer.push(`/${escapePDFName(value.name)}`);\n } else if (isRef(value)) {\n buffer.push(`${value.num} ${value.gen} R`);\n } else if (Array.isArray(value)) {\n writeArray(value, buffer, transform);\n } else if (typeof value === \"string\") {\n if (transform !== null) {\n value = transform.encryptString(value);\n }\n buffer.push(`(${escapeString(value)})`);\n } else if (typeof value === \"number\") {\n buffer.push(numberToString(value));\n } else if (typeof value === \"boolean\") {\n buffer.push(value.toString());\n } else if (isDict(value)) {\n writeDict(value, buffer, transform);\n } else if (isStream(value)) {\n writeStream(value, buffer, transform);\n } else if (value === null) {\n buffer.push(\"null\");\n } else {\n warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\n }\n}\n\nfunction writeInt(number, size, offset, buffer) {\n for (let i = size + offset - 1; i > offset - 1; i--) {\n buffer[i] = number & 0xff;\n number >>= 8;\n }\n return offset + size;\n}\n\nfunction writeString(string, offset, buffer) {\n for (let i = 0, len = string.length; i < len; i++) {\n buffer[offset + i] = string.charCodeAt(i) & 0xff;\n }\n}\n\nfunction computeMD5(filesize, xrefInfo) {\n const time = Math.floor(Date.now() / 1000);\n const filename = xrefInfo.filename || \"\";\n const md5Buffer = [time.toString(), filename, filesize.toString()];\n let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\n for (const value of Object.values(xrefInfo.info)) {\n md5Buffer.push(value);\n md5BufferLen += value.length;\n }\n\n const array = new Uint8Array(md5BufferLen);\n let offset = 0;\n for (const str of md5Buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n return bytesToString(calculateMD5(array));\n}\n\nfunction writeXFADataForAcroform(str, newRefs) {\n const xml = new SimpleXMLParser({ hasAttributes: true }).parseFromString(str);\n\n for (const { xfa } of newRefs) {\n if (!xfa) {\n continue;\n }\n const { path, value } = xfa;\n if (!path) {\n continue;\n }\n const node = xml.documentElement.searchNode(parseXFAPath(path), 0);\n if (node) {\n node.childNodes = [new SimpleDOMNode(\"#text\", value)];\n } else {\n warn(`Node not found for path: ${path}`);\n }\n }\n const buffer = [];\n xml.documentElement.dump(buffer);\n return buffer.join(\"\");\n}\n\nfunction updateXFA({\n xfaData,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n newRefs,\n xref,\n xrefInfo,\n}) {\n if (xref === null) {\n return;\n }\n\n if (!hasXfaDatasetsEntry) {\n if (!acroFormRef) {\n warn(\"XFA - Cannot save it\");\n return;\n }\n\n // We've a XFA array which doesn't contain a datasets entry.\n // So we'll update the AcroForm dictionary to have an XFA containing\n // the datasets.\n const oldXfa = acroForm.get(\"XFA\");\n const newXfa = oldXfa.slice();\n newXfa.splice(2, 0, \"datasets\");\n newXfa.splice(3, 0, xfaDatasetsRef);\n\n acroForm.set(\"XFA\", newXfa);\n\n const encrypt = xref.encrypt;\n let transform = null;\n if (encrypt) {\n transform = encrypt.createCipherTransform(\n acroFormRef.num,\n acroFormRef.gen\n );\n }\n\n const buffer = [`${acroFormRef.num} ${acroFormRef.gen} obj\\n`];\n writeDict(acroForm, buffer, transform);\n buffer.push(\"\\n\");\n\n acroForm.set(\"XFA\", oldXfa);\n\n newRefs.push({ ref: acroFormRef, data: buffer.join(\"\") });\n }\n\n if (xfaData === null) {\n const datasets = xref.fetchIfRef(xfaDatasetsRef);\n xfaData = writeXFADataForAcroform(datasets.getString(), newRefs);\n }\n\n const encrypt = xref.encrypt;\n if (encrypt) {\n const transform = encrypt.createCipherTransform(\n xfaDatasetsRef.num,\n xfaDatasetsRef.gen\n );\n xfaData = transform.encryptString(xfaData);\n }\n const data =\n `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\\n` +\n `<< /Type /EmbeddedFile /Length ${xfaData.length}>>\\nstream\\n` +\n xfaData +\n \"\\nendstream\\nendobj\\n\";\n\n newRefs.push({ ref: xfaDatasetsRef, data });\n}\n\nfunction incrementalUpdate({\n originalData,\n xrefInfo,\n newRefs,\n xref = null,\n hasXfa = false,\n xfaDatasetsRef = null,\n hasXfaDatasetsEntry = false,\n acroFormRef = null,\n acroForm = null,\n xfaData = null,\n}) {\n if (hasXfa) {\n updateXFA({\n xfaData,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n newRefs,\n xref,\n xrefInfo,\n });\n }\n\n const newXref = new Dict(null);\n const refForXrefTable = xrefInfo.newRef;\n\n let buffer, baseOffset;\n const lastByte = originalData[originalData.length - 1];\n if (lastByte === /* \\n */ 0x0a || lastByte === /* \\r */ 0x0d) {\n buffer = [];\n baseOffset = originalData.length;\n } else {\n // Avoid to concatenate %%EOF with an object definition\n buffer = [\"\\n\"];\n baseOffset = originalData.length + 1;\n }\n\n newXref.set(\"Size\", refForXrefTable.num + 1);\n newXref.set(\"Prev\", xrefInfo.startXRef);\n newXref.set(\"Type\", Name.get(\"XRef\"));\n\n if (xrefInfo.rootRef !== null) {\n newXref.set(\"Root\", xrefInfo.rootRef);\n }\n if (xrefInfo.infoRef !== null) {\n newXref.set(\"Info\", xrefInfo.infoRef);\n }\n if (xrefInfo.encryptRef !== null) {\n newXref.set(\"Encrypt\", xrefInfo.encryptRef);\n }\n\n // Add a ref for the new xref and sort them\n newRefs.push({ ref: refForXrefTable, data: \"\" });\n newRefs = newRefs.sort((a, b) => {\n // compare the refs\n return a.ref.num - b.ref.num;\n });\n\n const xrefTableData = [[0, 1, 0xffff]];\n const indexes = [0, 1];\n let maxOffset = 0;\n for (const { ref, data } of newRefs) {\n maxOffset = Math.max(maxOffset, baseOffset);\n xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);\n baseOffset += data.length;\n indexes.push(ref.num, 1);\n buffer.push(data);\n }\n\n newXref.set(\"Index\", indexes);\n\n if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\n const md5 = computeMD5(baseOffset, xrefInfo);\n newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n }\n\n const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);\n const sizes = [1, offsetSize, 2];\n const structSize = sizes[0] + sizes[1] + sizes[2];\n const tableLength = structSize * xrefTableData.length;\n newXref.set(\"W\", sizes);\n newXref.set(\"Length\", tableLength);\n\n buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\\n`);\n writeDict(newXref, buffer, null);\n buffer.push(\" stream\\n\");\n\n const bufferLen = buffer.reduce((a, str) => a + str.length, 0);\n const footer = `\\nendstream\\nendobj\\nstartxref\\n${baseOffset}\\n%%EOF\\n`;\n const array = new Uint8Array(\n originalData.length + bufferLen + tableLength + footer.length\n );\n\n // Original data\n array.set(originalData);\n let offset = originalData.length;\n\n // New data\n for (const str of buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n\n // New xref table\n for (const [type, objOffset, gen] of xrefTableData) {\n offset = writeInt(type, sizes[0], offset, array);\n offset = writeInt(objOffset, sizes[1], offset, array);\n offset = writeInt(gen, sizes[2], offset, array);\n }\n\n // Add the footer\n writeString(footer, offset, array);\n\n return array;\n}\n\nexport { incrementalUpdate, writeDict };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FormatError,\n isArrayEqual,\n PasswordException,\n PasswordResponses,\n stringToBytes,\n unreachable,\n utf8StringToString,\n warn,\n} from \"../shared/util.js\";\nimport { isDict, isName, Name } from \"./primitives.js\";\nimport { DecryptStream } from \"./decrypt_stream.js\";\n\nclass ARCFourCipher {\n constructor(key) {\n this.a = 0;\n this.b = 0;\n const s = new Uint8Array(256);\n const keyLength = key.length;\n\n for (let i = 0; i < 256; ++i) {\n s[i] = i;\n }\n for (let i = 0, j = 0; i < 256; ++i) {\n const tmp = s[i];\n j = (j + tmp + key[i % keyLength]) & 0xff;\n s[i] = s[j];\n s[j] = tmp;\n }\n this.s = s;\n }\n\n encryptBlock(data) {\n let a = this.a,\n b = this.b;\n const s = this.s;\n const n = data.length;\n const output = new Uint8Array(n);\n for (let i = 0; i < n; ++i) {\n a = (a + 1) & 0xff;\n const tmp = s[a];\n b = (b + tmp) & 0xff;\n const tmp2 = s[b];\n s[a] = tmp2;\n s[b] = tmp;\n output[i] = data[i] ^ s[(tmp + tmp2) & 0xff];\n }\n this.a = a;\n this.b = b;\n return output;\n }\n\n decryptBlock(data) {\n return this.encryptBlock(data);\n }\n\n encrypt(data) {\n return this.encryptBlock(data);\n }\n}\n\nconst calculateMD5 = (function calculateMD5Closure() {\n const r = new Uint8Array([\n 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5,\n 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11,\n 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10,\n 15, 21,\n ]);\n\n const k = new Int32Array([\n -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\n -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\n 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n 643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\n 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\n 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\n -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\n -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\n -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\n -145523070, -1120210379, 718787259, -343485551,\n ]);\n\n function hash(data, offset, length) {\n let h0 = 1732584193,\n h1 = -271733879,\n h2 = -1732584194,\n h3 = 271733878;\n // pre-processing\n const paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = (length << 3) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n const w = new Int32Array(16);\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j, i += 4) {\n w[j] =\n padded[i] |\n (padded[i + 1] << 8) |\n (padded[i + 2] << 16) |\n (padded[i + 3] << 24);\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n f,\n g;\n for (j = 0; j < 64; ++j) {\n if (j < 16) {\n f = (b & c) | (~b & d);\n g = j;\n } else if (j < 32) {\n f = (d & b) | (~d & c);\n g = (5 * j + 1) & 15;\n } else if (j < 48) {\n f = b ^ c ^ d;\n g = (3 * j + 5) & 15;\n } else {\n f = c ^ (b | ~d);\n g = (7 * j) & 15;\n }\n const tmp = d,\n rotateArg = (a + f + k[j] + w[g]) | 0,\n rotate = r[j];\n d = c;\n c = b;\n b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;\n a = tmp;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n }\n // prettier-ignore\n return new Uint8Array([\n h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n ]);\n }\n\n return hash;\n})();\n\nclass Word64 {\n constructor(highInteger, lowInteger) {\n this.high = highInteger | 0;\n this.low = lowInteger | 0;\n }\n\n and(word) {\n this.high &= word.high;\n this.low &= word.low;\n }\n\n xor(word) {\n this.high ^= word.high;\n this.low ^= word.low;\n }\n\n or(word) {\n this.high |= word.high;\n this.low |= word.low;\n }\n\n shiftRight(places) {\n if (places >= 32) {\n this.low = (this.high >>> (places - 32)) | 0;\n this.high = 0;\n } else {\n this.low = (this.low >>> places) | (this.high << (32 - places));\n this.high = (this.high >>> places) | 0;\n }\n }\n\n shiftLeft(places) {\n if (places >= 32) {\n this.high = this.low << (places - 32);\n this.low = 0;\n } else {\n this.high = (this.high << places) | (this.low >>> (32 - places));\n this.low <<= places;\n }\n }\n\n rotateRight(places) {\n let low, high;\n if (places & 32) {\n high = this.low;\n low = this.high;\n } else {\n low = this.low;\n high = this.high;\n }\n places &= 31;\n this.low = (low >>> places) | (high << (32 - places));\n this.high = (high >>> places) | (low << (32 - places));\n }\n\n not() {\n this.high = ~this.high;\n this.low = ~this.low;\n }\n\n add(word) {\n const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n let highAdd = (this.high >>> 0) + (word.high >>> 0);\n if (lowAdd > 0xffffffff) {\n highAdd += 1;\n }\n this.low = lowAdd | 0;\n this.high = highAdd | 0;\n }\n\n copyTo(bytes, offset) {\n bytes[offset] = (this.high >>> 24) & 0xff;\n bytes[offset + 1] = (this.high >> 16) & 0xff;\n bytes[offset + 2] = (this.high >> 8) & 0xff;\n bytes[offset + 3] = this.high & 0xff;\n bytes[offset + 4] = (this.low >>> 24) & 0xff;\n bytes[offset + 5] = (this.low >> 16) & 0xff;\n bytes[offset + 6] = (this.low >> 8) & 0xff;\n bytes[offset + 7] = this.low & 0xff;\n }\n\n assign(word) {\n this.high = word.high;\n this.low = word.low;\n }\n}\n\nconst calculateSHA256 = (function calculateSHA256Closure() {\n function rotr(x, n) {\n return (x >>> n) | (x << (32 - n));\n }\n\n function ch(x, y, z) {\n return (x & y) ^ (~x & z);\n }\n\n function maj(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n }\n\n function sigma(x) {\n return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n }\n\n function sigmaPrime(x) {\n return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n }\n\n function littleSigma(x) {\n return rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\n }\n\n function littleSigmaPrime(x) {\n return rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);\n }\n\n const k = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,\n 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\n 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,\n 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\n 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n ];\n\n function hash(data, offset, length) {\n // initial hash values\n let h0 = 0x6a09e667,\n h1 = 0xbb67ae85,\n h2 = 0x3c6ef372,\n h3 = 0xa54ff53a,\n h4 = 0x510e527f,\n h5 = 0x9b05688c,\n h6 = 0x1f83d9ab,\n h7 = 0x5be0cd19;\n // pre-processing\n const paddedLength = Math.ceil((length + 9) / 64) * 64;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length << 3) & 0xff;\n const w = new Uint32Array(64);\n // for each 512 bit block\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j) {\n w[j] =\n (padded[i] << 24) |\n (padded[i + 1] << 16) |\n (padded[i + 2] << 8) |\n padded[i + 3];\n i += 4;\n }\n\n for (j = 16; j < 64; ++j) {\n w[j] =\n (littleSigmaPrime(w[j - 2]) +\n w[j - 7] +\n littleSigma(w[j - 15]) +\n w[j - 16]) |\n 0;\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n e = h4,\n f = h5,\n g = h6,\n h = h7,\n t1,\n t2;\n for (j = 0; j < 64; ++j) {\n t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n t2 = sigma(a) + maj(a, b, c);\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n }\n // prettier-ignore\n return new Uint8Array([\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\n (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n ]);\n }\n\n return hash;\n})();\n\nconst calculateSHA512 = (function calculateSHA512Closure() {\n function ch(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.not();\n tmp.and(z);\n result.xor(tmp);\n }\n\n function maj(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.and(z);\n result.xor(tmp);\n tmp.assign(y);\n tmp.and(z);\n result.xor(tmp);\n }\n\n function sigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(28);\n tmp.assign(x);\n tmp.rotateRight(34);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(39);\n result.xor(tmp);\n }\n\n function sigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(14);\n tmp.assign(x);\n tmp.rotateRight(18);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(41);\n result.xor(tmp);\n }\n\n function littleSigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(1);\n tmp.assign(x);\n tmp.rotateRight(8);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(7);\n result.xor(tmp);\n }\n\n function littleSigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(19);\n tmp.assign(x);\n tmp.rotateRight(61);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(6);\n result.xor(tmp);\n }\n\n // prettier-ignore\n const k = [\n new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\n new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\n new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\n new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\n new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\n new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\n new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\n new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\n new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\n new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\n new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\n new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\n new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\n new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\n new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\n new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\n new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\n new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\n new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\n new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\n new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\n new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\n new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\n new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\n new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\n new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\n new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\n new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\n new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\n new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\n new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\n new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\n new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\n new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\n new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\n new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\n new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\n new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\n new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\n new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n function hash(data, offset, length, mode384 = false) {\n // initial hash values\n let h0, h1, h2, h3, h4, h5, h6, h7;\n if (!mode384) {\n h0 = new Word64(0x6a09e667, 0xf3bcc908);\n h1 = new Word64(0xbb67ae85, 0x84caa73b);\n h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n h4 = new Word64(0x510e527f, 0xade682d1);\n h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n h7 = new Word64(0x5be0cd19, 0x137e2179);\n } else {\n // SHA384 is exactly the same\n // except with different starting values and a trimmed result\n h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n h1 = new Word64(0x629a292a, 0x367cd507);\n h2 = new Word64(0x9159015a, 0x3070dd17);\n h3 = new Word64(0x152fecd8, 0xf70e5939);\n h4 = new Word64(0x67332667, 0xffc00b31);\n h5 = new Word64(0x8eb44a87, 0x68581511);\n h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n }\n\n // pre-processing\n const paddedLength = Math.ceil((length + 17) / 128) * 128;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 16;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length << 3) & 0xff;\n\n const w = new Array(80);\n for (i = 0; i < 80; i++) {\n w[i] = new Word64(0, 0);\n }\n let a = new Word64(0, 0),\n b = new Word64(0, 0),\n c = new Word64(0, 0);\n let d = new Word64(0, 0),\n e = new Word64(0, 0),\n f = new Word64(0, 0);\n let g = new Word64(0, 0),\n h = new Word64(0, 0);\n const t1 = new Word64(0, 0),\n t2 = new Word64(0, 0);\n const tmp1 = new Word64(0, 0),\n tmp2 = new Word64(0, 0);\n let tmp3;\n\n // for each 1024 bit block\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j) {\n w[j].high =\n (padded[i] << 24) |\n (padded[i + 1] << 16) |\n (padded[i + 2] << 8) |\n padded[i + 3];\n w[j].low =\n (padded[i + 4] << 24) |\n (padded[i + 5] << 16) |\n (padded[i + 6] << 8) |\n padded[i + 7];\n i += 8;\n }\n for (j = 16; j < 80; ++j) {\n tmp3 = w[j];\n littleSigmaPrime(tmp3, w[j - 2], tmp2);\n tmp3.add(w[j - 7]);\n littleSigma(tmp1, w[j - 15], tmp2);\n tmp3.add(tmp1);\n tmp3.add(w[j - 16]);\n }\n\n a.assign(h0);\n b.assign(h1);\n c.assign(h2);\n d.assign(h3);\n e.assign(h4);\n f.assign(h5);\n g.assign(h6);\n h.assign(h7);\n for (j = 0; j < 80; ++j) {\n t1.assign(h);\n sigmaPrime(tmp1, e, tmp2);\n t1.add(tmp1);\n ch(tmp1, e, f, g, tmp2);\n t1.add(tmp1);\n t1.add(k[j]);\n t1.add(w[j]);\n\n sigma(t2, a, tmp2);\n maj(tmp1, a, b, c, tmp2);\n t2.add(tmp1);\n\n tmp3 = h;\n h = g;\n g = f;\n f = e;\n d.add(t1);\n e = d;\n d = c;\n c = b;\n b = a;\n tmp3.assign(t1);\n tmp3.add(t2);\n a = tmp3;\n }\n h0.add(a);\n h1.add(b);\n h2.add(c);\n h3.add(d);\n h4.add(e);\n h5.add(f);\n h6.add(g);\n h7.add(h);\n }\n\n let result;\n if (!mode384) {\n result = new Uint8Array(64);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n h6.copyTo(result, 48);\n h7.copyTo(result, 56);\n } else {\n result = new Uint8Array(48);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n }\n return result;\n }\n\n return hash;\n})();\n\nfunction calculateSHA384(data, offset, length) {\n return calculateSHA512(data, offset, length, /* mode384 = */ true);\n}\n\nclass NullCipher {\n decryptBlock(data) {\n return data;\n }\n\n encrypt(data) {\n return data;\n }\n}\n\nclass AESBaseCipher {\n constructor() {\n if (this.constructor === AESBaseCipher) {\n unreachable(\"Cannot initialize AESBaseCipher.\");\n }\n\n this._s = new Uint8Array([\n 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n 0xb0, 0x54, 0xbb, 0x16,\n ]);\n\n this._inv_s = new Uint8Array([\n 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n 0x55, 0x21, 0x0c, 0x7d,\n ]);\n\n this._mix = new Uint32Array([\n 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\n ]);\n\n this._mixCol = new Uint8Array(256);\n for (let i = 0; i < 256; i++) {\n if (i < 128) {\n this._mixCol[i] = i << 1;\n } else {\n this._mixCol[i] = (i << 1) ^ 0x1b;\n }\n }\n\n this.buffer = new Uint8Array(16);\n this.bufferPosition = 0;\n }\n\n _expandKey(cipherKey) {\n unreachable(\"Cannot call `_expandKey` on the base class\");\n }\n\n _decrypt(input, key) {\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n\n // AddRoundKey\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n // InvSubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = this._inv_s[state[j]];\n }\n // AddRoundKey\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n // InvMixColumns\n for (let j = 0; j < 16; j += 4) {\n const s0 = this._mix[state[j]];\n const s1 = this._mix[state[j + 1]];\n const s2 = this._mix[state[j + 2]];\n const s3 = this._mix[state[j + 3]];\n t =\n s0 ^\n (s1 >>> 8) ^\n (s1 << 24) ^\n (s2 >>> 16) ^\n (s2 << 16) ^\n (s3 >>> 24) ^\n (s3 << 8);\n state[j] = (t >>> 24) & 0xff;\n state[j + 1] = (t >> 16) & 0xff;\n state[j + 2] = (t >> 8) & 0xff;\n state[j + 3] = t & 0xff;\n }\n }\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n for (let j = 0; j < 16; ++j) {\n // InvSubBytes\n state[j] = this._inv_s[state[j]];\n // AddRoundKey\n state[j] ^= key[j];\n }\n return state;\n }\n\n _encrypt(input, key) {\n const s = this._s;\n\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n\n for (let j = 0; j < 16; ++j) {\n // AddRoundKey\n state[j] ^= key[j];\n }\n\n for (let i = 1; i < this._cyclesOfRepetition; i++) {\n // SubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // MixColumns\n for (let j = 0; j < 16; j += 4) {\n const s0 = state[j + 0];\n const s1 = state[j + 1];\n const s2 = state[j + 2];\n const s3 = state[j + 3];\n t = s0 ^ s1 ^ s2 ^ s3;\n state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n }\n // AddRoundKey\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n }\n\n // SubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // AddRoundKey\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n return state;\n }\n\n _decryptBlock2(data, finalize) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n let iv = this.iv;\n\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n // buffer is full, decrypting\n const plain = this._decrypt(buffer, this._key);\n // xor-ing the IV vector to get plain text\n for (let j = 0; j < 16; ++j) {\n plain[j] ^= iv[j];\n }\n iv = buffer;\n result.push(plain);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n // combining plain text blocks into one\n let outputLength = 16 * result.length;\n if (finalize) {\n // undo a padding that is described in RFC 2898\n const lastBlock = result[result.length - 1];\n let psLen = lastBlock[15];\n if (psLen <= 16) {\n for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n if (lastBlock[i] !== psLen) {\n // Invalid padding, assume that the block has no padding.\n psLen = 0;\n break;\n }\n }\n outputLength -= psLen;\n result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n }\n }\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n\n decryptBlock(data, finalize, iv = null) {\n const sourceLength = data.length;\n const buffer = this.buffer;\n let bufferLength = this.bufferPosition;\n // If an IV is not supplied, wait for IV values. They are at the start\n // of the stream.\n if (iv) {\n this.iv = iv;\n } else {\n for (\n let i = 0;\n bufferLength < 16 && i < sourceLength;\n ++i, ++bufferLength\n ) {\n buffer[bufferLength] = data[i];\n }\n if (bufferLength < 16) {\n // Need more data.\n this.bufferLength = bufferLength;\n return new Uint8Array(0);\n }\n this.iv = buffer;\n data = data.subarray(16);\n }\n this.buffer = new Uint8Array(16);\n this.bufferLength = 0;\n // starting decryption\n this.decryptBlock = this._decryptBlock2;\n return this.decryptBlock(data, finalize);\n }\n\n encrypt(data, iv) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n\n if (!iv) {\n iv = new Uint8Array(16);\n }\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n\n for (let j = 0; j < 16; ++j) {\n buffer[j] ^= iv[j];\n }\n\n // buffer is full, encrypting\n const cipher = this._encrypt(buffer, this._key);\n iv = cipher;\n result.push(cipher);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n // combining plain text blocks into one\n const outputLength = 16 * result.length;\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n}\n\nclass AES128Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n\n this._cyclesOfRepetition = 10;\n this._keySize = 160; // bits\n\n this._rcon = new Uint8Array([\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d,\n ]);\n\n this._key = this._expandKey(key);\n }\n\n _expandKey(cipherKey) {\n const b = 176;\n const s = this._s;\n const rcon = this._rcon;\n\n const result = new Uint8Array(b);\n result.set(cipherKey);\n\n for (let j = 16, i = 1; j < b; ++i) {\n // RotWord\n let t1 = result[j - 3];\n let t2 = result[j - 2];\n let t3 = result[j - 1];\n let t4 = result[j - 4];\n // SubWord\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n // Rcon\n t1 ^= rcon[i];\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 16];\n j++;\n result[j] = t2 ^= result[j - 16];\n j++;\n result[j] = t3 ^= result[j - 16];\n j++;\n result[j] = t4 ^= result[j - 16];\n j++;\n }\n }\n return result;\n }\n}\n\nclass AES256Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n\n this._cyclesOfRepetition = 14;\n this._keySize = 224; // bits\n\n this._key = this._expandKey(key);\n }\n\n _expandKey(cipherKey) {\n const b = 240;\n const s = this._s;\n\n const result = new Uint8Array(b);\n result.set(cipherKey);\n\n let r = 1;\n let t1, t2, t3, t4;\n for (let j = 32, i = 1; j < b; ++i) {\n if (j % 32 === 16) {\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n } else if (j % 32 === 0) {\n // RotWord\n t1 = result[j - 3];\n t2 = result[j - 2];\n t3 = result[j - 1];\n t4 = result[j - 4];\n // SubWord\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n // Rcon\n t1 ^= r;\n if ((r <<= 1) >= 256) {\n r = (r ^ 0x1b) & 0xff;\n }\n }\n\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 32];\n j++;\n result[j] = t2 ^= result[j - 32];\n j++;\n result[j] = t3 ^= result[j - 32];\n j++;\n result[j] = t4 ^= result[j - 32];\n j++;\n }\n }\n return result;\n }\n}\n\nclass PDF17 {\n checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n const result = calculateSHA256(hashData, 0, hashData.length);\n return isArrayEqual(result, ownerPassword);\n }\n\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = calculateSHA256(hashData, 0, hashData.length);\n return isArrayEqual(result, userPassword);\n }\n\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n const key = calculateSHA256(hashData, 0, hashData.length);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n\n getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n // `key` is the decryption key for the UE string.\n const key = calculateSHA256(hashData, 0, hashData.length);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n}\n\nconst PDF20 = (function PDF20Closure() {\n function calculatePDF20Hash(password, input, userBytes) {\n // This refers to Algorithm 2.B as defined in ISO 32000-2.\n let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n let e = [0];\n let i = 0;\n while (i < 64 || e[e.length - 1] > i - 32) {\n const combinedLength = password.length + k.length + userBytes.length,\n combinedArray = new Uint8Array(combinedLength);\n let writeOffset = 0;\n combinedArray.set(password, writeOffset);\n writeOffset += password.length;\n combinedArray.set(k, writeOffset);\n writeOffset += k.length;\n combinedArray.set(userBytes, writeOffset);\n\n const k1 = new Uint8Array(combinedLength * 64);\n for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) {\n k1.set(combinedArray, pos);\n }\n // AES128 CBC NO PADDING with first 16 bytes of k as the key\n // and the second 16 as the iv.\n const cipher = new AES128Cipher(k.subarray(0, 16));\n e = cipher.encrypt(k1, k.subarray(16, 32));\n // Now we have to take the first 16 bytes of an unsigned big endian\n // integer and compute the remainder modulo 3. That is a fairly large\n // number and JavaScript isn't going to handle that well, so we're using\n // a trick that allows us to perform modulo math byte by byte.\n let remainder = 0;\n for (let z = 0; z < 16; z++) {\n remainder *= 256 % 3;\n remainder %= 3;\n remainder += (e[z] >>> 0) % 3;\n remainder %= 3;\n }\n if (remainder === 0) {\n k = calculateSHA256(e, 0, e.length);\n } else if (remainder === 1) {\n k = calculateSHA384(e, 0, e.length);\n } else if (remainder === 2) {\n k = calculateSHA512(e, 0, e.length);\n }\n i++;\n }\n return k.subarray(0, 32);\n }\n\n // eslint-disable-next-line no-shadow\n class PDF20 {\n hash(password, concatBytes, userBytes) {\n return calculatePDF20Hash(password, concatBytes, userBytes);\n }\n\n checkOwnerPassword(\n password,\n ownerValidationSalt,\n userBytes,\n ownerPassword\n ) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n const result = calculatePDF20Hash(password, hashData, userBytes);\n return isArrayEqual(result, ownerPassword);\n }\n\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = calculatePDF20Hash(password, hashData, []);\n return isArrayEqual(result, userPassword);\n }\n\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n const key = calculatePDF20Hash(password, hashData, userBytes);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n\n getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n // `key` is the decryption key for the UE string.\n const key = calculatePDF20Hash(password, hashData, []);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n }\n\n return PDF20;\n})();\n\nclass CipherTransform {\n constructor(stringCipherConstructor, streamCipherConstructor) {\n this.StringCipherConstructor = stringCipherConstructor;\n this.StreamCipherConstructor = streamCipherConstructor;\n }\n\n createStream(stream, length) {\n const cipher = new this.StreamCipherConstructor();\n return new DecryptStream(\n stream,\n length,\n function cipherTransformDecryptStream(data, finalize) {\n return cipher.decryptBlock(data, finalize);\n }\n );\n }\n\n decryptString(s) {\n const cipher = new this.StringCipherConstructor();\n let data = stringToBytes(s);\n data = cipher.decryptBlock(data, true);\n return bytesToString(data);\n }\n\n encryptString(s) {\n const cipher = new this.StringCipherConstructor();\n if (cipher instanceof AESBaseCipher) {\n // Append some chars equal to \"16 - (M mod 16)\"\n // where M is the string length (see section 7.6.2 in PDF specification)\n // to have a final string where the length is a multiple of 16.\n // Special note:\n // \"Note that the pad is present when M is evenly divisible by 16;\n // it contains 16 bytes of 0x10.\"\n const strLen = s.length;\n const pad = 16 - (strLen % 16);\n s += String.fromCharCode(pad).repeat(pad);\n\n // Generate an initialization vector\n const iv = new Uint8Array(16);\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(iv);\n } else {\n for (let i = 0; i < 16; i++) {\n iv[i] = Math.floor(256 * Math.random());\n }\n }\n\n let data = stringToBytes(s);\n data = cipher.encrypt(data, iv);\n\n const buf = new Uint8Array(16 + data.length);\n buf.set(iv);\n buf.set(data, 16);\n\n return bytesToString(buf);\n }\n\n let data = stringToBytes(s);\n data = cipher.encrypt(data);\n return bytesToString(data);\n }\n}\n\nconst CipherTransformFactory = (function CipherTransformFactoryClosure() {\n const defaultPasswordBytes = new Uint8Array([\n 0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56,\n 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80,\n 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a,\n ]);\n\n function createEncryptionKey20(\n revision,\n password,\n ownerPassword,\n ownerValidationSalt,\n ownerKeySalt,\n uBytes,\n userPassword,\n userValidationSalt,\n userKeySalt,\n ownerEncryption,\n userEncryption,\n perms\n ) {\n if (password) {\n const passwordLength = Math.min(127, password.length);\n password = password.subarray(0, passwordLength);\n } else {\n password = [];\n }\n let pdfAlgorithm;\n if (revision === 6) {\n pdfAlgorithm = new PDF20();\n } else {\n pdfAlgorithm = new PDF17();\n }\n\n if (\n pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)\n ) {\n return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n } else if (\n password.length &&\n pdfAlgorithm.checkOwnerPassword(\n password,\n ownerValidationSalt,\n uBytes,\n ownerPassword\n )\n ) {\n return pdfAlgorithm.getOwnerKey(\n password,\n ownerKeySalt,\n uBytes,\n ownerEncryption\n );\n }\n\n return null;\n }\n\n function prepareKeyData(\n fileId,\n password,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n ) {\n const hashDataSize = 40 + ownerPassword.length + fileId.length;\n const hashData = new Uint8Array(hashDataSize);\n let i = 0,\n j,\n n;\n if (password) {\n n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n }\n j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n // as now the padded password in the hashData[0..i]\n for (j = 0, n = ownerPassword.length; j < n; ++j) {\n hashData[i++] = ownerPassword[j];\n }\n hashData[i++] = flags & 0xff;\n hashData[i++] = (flags >> 8) & 0xff;\n hashData[i++] = (flags >> 16) & 0xff;\n hashData[i++] = (flags >>> 24) & 0xff;\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n if (revision >= 4 && !encryptMetadata) {\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, keyLengthInBytes);\n }\n }\n const encryptionKey = hash.subarray(0, keyLengthInBytes);\n let cipher, checkData;\n\n if (revision >= 3) {\n for (i = 0; i < 32; ++i) {\n hashData[i] = defaultPasswordBytes[i];\n }\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n n = encryptionKey.length;\n const derivedKey = new Uint8Array(n);\n for (j = 1; j <= 19; ++j) {\n for (let k = 0; k < n; ++k) {\n derivedKey[k] = encryptionKey[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n checkData = cipher.encryptBlock(checkData);\n }\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n } else {\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(defaultPasswordBytes);\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n }\n return encryptionKey;\n }\n\n function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n const hashData = new Uint8Array(32);\n let i = 0;\n const n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n let j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, hash.length);\n }\n }\n\n let cipher, userPassword;\n if (revision >= 3) {\n userPassword = ownerPassword;\n const derivedKey = new Uint8Array(keyLengthInBytes);\n for (j = 19; j >= 0; j--) {\n for (let k = 0; k < keyLengthInBytes; ++k) {\n derivedKey[k] = hash[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n userPassword = cipher.encryptBlock(userPassword);\n }\n } else {\n cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n userPassword = cipher.encryptBlock(ownerPassword);\n }\n return userPassword;\n }\n\n const identityName = Name.get(\"Identity\");\n\n function buildObjectKey(num, gen, encryptionKey, isAes = false) {\n const key = new Uint8Array(encryptionKey.length + 9);\n const n = encryptionKey.length;\n let i;\n for (i = 0; i < n; ++i) {\n key[i] = encryptionKey[i];\n }\n key[i++] = num & 0xff;\n key[i++] = (num >> 8) & 0xff;\n key[i++] = (num >> 16) & 0xff;\n key[i++] = gen & 0xff;\n key[i++] = (gen >> 8) & 0xff;\n if (isAes) {\n key[i++] = 0x73;\n key[i++] = 0x41;\n key[i++] = 0x6c;\n key[i++] = 0x54;\n }\n const hash = calculateMD5(key, 0, i);\n return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n }\n\n function buildCipherConstructor(cf, name, num, gen, key) {\n if (!isName(name)) {\n throw new FormatError(\"Invalid crypt filter name.\");\n }\n const cryptFilter = cf.get(name.name);\n let cfm;\n if (cryptFilter !== null && cryptFilter !== undefined) {\n cfm = cryptFilter.get(\"CFM\");\n }\n if (!cfm || cfm.name === \"None\") {\n return function cipherTransformFactoryBuildCipherConstructorNone() {\n return new NullCipher();\n };\n }\n if (cfm.name === \"V2\") {\n return function cipherTransformFactoryBuildCipherConstructorV2() {\n return new ARCFourCipher(\n buildObjectKey(num, gen, key, /* isAes = */ false)\n );\n };\n }\n if (cfm.name === \"AESV2\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n return new AES128Cipher(\n buildObjectKey(num, gen, key, /* isAes = */ true)\n );\n };\n }\n if (cfm.name === \"AESV3\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n return new AES256Cipher(key);\n };\n }\n throw new FormatError(\"Unknown crypto method\");\n }\n\n // eslint-disable-next-line no-shadow\n class CipherTransformFactory {\n constructor(dict, fileId, password) {\n const filter = dict.get(\"Filter\");\n if (!isName(filter, \"Standard\")) {\n throw new FormatError(\"unknown encryption method\");\n }\n this.filterName = filter.name;\n this.dict = dict;\n const algorithm = dict.get(\"V\");\n if (\n !Number.isInteger(algorithm) ||\n (algorithm !== 1 &&\n algorithm !== 2 &&\n algorithm !== 4 &&\n algorithm !== 5)\n ) {\n throw new FormatError(\"unsupported encryption algorithm\");\n }\n this.algorithm = algorithm;\n let keyLength = dict.get(\"Length\");\n if (!keyLength) {\n // Spec asks to rely on encryption dictionary's Length entry, however\n // some PDFs don't have it. Trying to recover.\n if (algorithm <= 3) {\n // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\n keyLength = 40;\n } else {\n // Trying to find default handler -- it usually has Length.\n const cfDict = dict.get(\"CF\");\n const streamCryptoName = dict.get(\"StmF\");\n if (isDict(cfDict) && isName(streamCryptoName)) {\n cfDict.suppressEncryption = true; // See comment below.\n const handlerDict = cfDict.get(streamCryptoName.name);\n keyLength = (handlerDict && handlerDict.get(\"Length\")) || 128;\n if (keyLength < 40) {\n // Sometimes it's incorrect value of bits, generators specify\n // bytes.\n keyLength <<= 3;\n }\n }\n }\n }\n if (\n !Number.isInteger(keyLength) ||\n keyLength < 40 ||\n keyLength % 8 !== 0\n ) {\n throw new FormatError(\"invalid key length\");\n }\n\n // prepare keys\n const ownerPassword = stringToBytes(dict.get(\"O\")).subarray(0, 32);\n const userPassword = stringToBytes(dict.get(\"U\")).subarray(0, 32);\n const flags = dict.get(\"P\");\n const revision = dict.get(\"R\");\n // meaningful when V is 4 or 5\n const encryptMetadata =\n (algorithm === 4 || algorithm === 5) &&\n dict.get(\"EncryptMetadata\") !== false;\n this.encryptMetadata = encryptMetadata;\n\n const fileIdBytes = stringToBytes(fileId);\n let passwordBytes;\n if (password) {\n if (revision === 6) {\n try {\n password = utf8StringToString(password);\n } catch (ex) {\n warn(\n \"CipherTransformFactory: \" +\n \"Unable to convert UTF8 encoded password.\"\n );\n }\n }\n passwordBytes = stringToBytes(password);\n }\n\n let encryptionKey;\n if (algorithm !== 5) {\n encryptionKey = prepareKeyData(\n fileIdBytes,\n passwordBytes,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n );\n } else {\n const ownerValidationSalt = stringToBytes(dict.get(\"O\")).subarray(\n 32,\n 40\n );\n const ownerKeySalt = stringToBytes(dict.get(\"O\")).subarray(40, 48);\n const uBytes = stringToBytes(dict.get(\"U\")).subarray(0, 48);\n const userValidationSalt = stringToBytes(dict.get(\"U\")).subarray(\n 32,\n 40\n );\n const userKeySalt = stringToBytes(dict.get(\"U\")).subarray(40, 48);\n const ownerEncryption = stringToBytes(dict.get(\"OE\"));\n const userEncryption = stringToBytes(dict.get(\"UE\"));\n const perms = stringToBytes(dict.get(\"Perms\"));\n encryptionKey = createEncryptionKey20(\n revision,\n passwordBytes,\n ownerPassword,\n ownerValidationSalt,\n ownerKeySalt,\n uBytes,\n userPassword,\n userValidationSalt,\n userKeySalt,\n ownerEncryption,\n userEncryption,\n perms\n );\n }\n if (!encryptionKey && !password) {\n throw new PasswordException(\n \"No password given\",\n PasswordResponses.NEED_PASSWORD\n );\n } else if (!encryptionKey && password) {\n // Attempting use the password as an owner password\n const decodedPassword = decodeUserPassword(\n passwordBytes,\n ownerPassword,\n revision,\n keyLength\n );\n encryptionKey = prepareKeyData(\n fileIdBytes,\n decodedPassword,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n );\n }\n\n if (!encryptionKey) {\n throw new PasswordException(\n \"Incorrect Password\",\n PasswordResponses.INCORRECT_PASSWORD\n );\n }\n\n this.encryptionKey = encryptionKey;\n\n if (algorithm >= 4) {\n const cf = dict.get(\"CF\");\n if (isDict(cf)) {\n // The 'CF' dictionary itself should not be encrypted, and by setting\n // `suppressEncryption` we can prevent an infinite loop inside of\n // `XRef_fetchUncompressed` if the dictionary contains indirect\n // objects (fixes issue7665.pdf).\n cf.suppressEncryption = true;\n }\n this.cf = cf;\n this.stmf = dict.get(\"StmF\") || identityName;\n this.strf = dict.get(\"StrF\") || identityName;\n this.eff = dict.get(\"EFF\") || this.stmf;\n }\n }\n\n createCipherTransform(num, gen) {\n if (this.algorithm === 4 || this.algorithm === 5) {\n return new CipherTransform(\n buildCipherConstructor(\n this.cf,\n this.stmf,\n num,\n gen,\n this.encryptionKey\n ),\n buildCipherConstructor(\n this.cf,\n this.strf,\n num,\n gen,\n this.encryptionKey\n )\n );\n }\n // algorithms 1 and 2\n const key = buildObjectKey(\n num,\n gen,\n this.encryptionKey,\n /* isAes = */ false\n );\n const cipherConstructor = function buildCipherCipherConstructor() {\n return new ARCFourCipher(key);\n };\n return new CipherTransform(cipherConstructor, cipherConstructor);\n }\n }\n\n return CipherTransformFactory;\n})();\n\nexport {\n AES128Cipher,\n AES256Cipher,\n ARCFourCipher,\n calculateMD5,\n calculateSHA256,\n calculateSHA384,\n calculateSHA512,\n CipherTransformFactory,\n PDF17,\n PDF20,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nconst chunkSize = 512;\n\nclass DecryptStream extends DecodeStream {\n constructor(str, maybeLength, decrypt) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.decrypt = decrypt;\n this.nextChunk = null;\n this.initialized = false;\n }\n\n readBlock() {\n let chunk;\n if (this.initialized) {\n chunk = this.nextChunk;\n } else {\n chunk = this.str.getBytes(chunkSize);\n this.initialized = true;\n }\n if (!chunk || chunk.length === 0) {\n this.eof = true;\n return;\n }\n this.nextChunk = this.str.getBytes(chunkSize);\n const hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n const decrypt = this.decrypt;\n chunk = decrypt(chunk, !hasMoreData);\n\n let bufferLength = this.bufferLength;\n const n = chunk.length,\n buffer = this.ensureBuffer(bufferLength + n);\n for (let i = 0; i < n; i++) {\n buffer[bufferLength++] = chunk[i];\n }\n this.bufferLength = bufferLength;\n }\n}\n\nexport { DecryptStream };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $globalData,\n $nodeName,\n $text,\n $toHTML,\n $toPages,\n} from \"./xfa_object.js\";\nimport { Binder } from \"./bind.js\";\nimport { DataHandler } from \"./data.js\";\nimport { FontFinder } from \"./fonts.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\nimport { XFAParser } from \"./parser.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nclass XFAFactory {\n constructor(data) {\n try {\n this.root = new XFAParser().parse(XFAFactory._createDocument(data));\n const binder = new Binder(this.root);\n this.form = binder.bind();\n this.dataHandler = new DataHandler(this.root, binder.getData());\n this.form[$globalData].template = this.form;\n } catch (e) {\n warn(`XFA - an error occurred during parsing and binding: ${e}`);\n }\n }\n\n isValid() {\n return this.root && this.form;\n }\n\n /**\n * In order to avoid to block the event loop, the conversion\n * into pages is made asynchronously.\n */\n _createPagesHelper() {\n const iterator = this.form[$toPages]();\n return new Promise((resolve, reject) => {\n const nextIteration = () => {\n try {\n const value = iterator.next();\n if (value.done) {\n resolve(value.value);\n } else {\n setTimeout(nextIteration, 0);\n }\n } catch (e) {\n reject(e);\n }\n };\n setTimeout(nextIteration, 0);\n });\n }\n\n async _createPages() {\n try {\n this.pages = await this._createPagesHelper();\n this.dims = this.pages.children.map(c => {\n const { width, height } = c.attributes.style;\n return [0, 0, parseInt(width), parseInt(height)];\n });\n } catch (e) {\n warn(`XFA - an error occurred during layout: ${e}`);\n }\n }\n\n getBoundingBox(pageIndex) {\n return this.dims[pageIndex];\n }\n\n async getNumPages() {\n if (!this.pages) {\n await this._createPages();\n }\n return this.dims.length;\n }\n\n setImages(images) {\n this.form[$globalData].images = images;\n }\n\n setFonts(fonts) {\n this.form[$globalData].fontFinder = new FontFinder(fonts);\n const missingFonts = [];\n for (let typeface of this.form[$globalData].usedTypefaces) {\n typeface = stripQuotes(typeface);\n const font = this.form[$globalData].fontFinder.find(typeface);\n if (!font) {\n missingFonts.push(typeface);\n }\n }\n\n if (missingFonts.length > 0) {\n return missingFonts;\n }\n\n return null;\n }\n\n appendFonts(fonts, reallyMissingFonts) {\n this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\n }\n\n async getPages() {\n if (!this.pages) {\n await this._createPages();\n }\n const pages = this.pages;\n this.pages = null;\n return pages;\n }\n\n serializeData(storage) {\n return this.dataHandler.serialize(storage);\n }\n\n static _createDocument(data) {\n if (!data[\"/xdp:xdp\"]) {\n return data[\"xdp:xdp\"];\n }\n return Object.values(data).join(\"\");\n }\n\n static getRichTextAsHtml(rc) {\n if (!rc || typeof rc !== \"string\") {\n return null;\n }\n\n try {\n let root = new XFAParser(XhtmlNamespace, /* richText */ true).parse(rc);\n if (![\"body\", \"xhtml\"].includes(root[$nodeName])) {\n // No body, so create one.\n const newRoot = XhtmlNamespace.body({});\n newRoot[$appendChild](root);\n root = newRoot;\n }\n\n const result = root[$toHTML]();\n if (!result.success) {\n return null;\n }\n\n const { html } = result;\n const { attributes } = html;\n if (attributes) {\n if (attributes.class) {\n attributes.class = attributes.class.filter(\n attr => !attr.startsWith(\"xfa\")\n );\n }\n attributes.dir = \"auto\";\n }\n\n return { html, str: root[$text]() };\n } catch (e) {\n warn(`XFA - an error occurred during parsing of rich text: ${e}`);\n }\n return null;\n }\n}\n\nexport { XFAFactory };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInteger, getKeyword, HTMLResult } from \"./utils.js\";\nimport { shadow, utf8StringToString, warn } from \"../../shared/util.js\";\nimport { encodeToXmlString } from \"../core_utils.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { searchNode } from \"./som.js\";\n\n// We use these symbols to avoid name conflict between tags\n// and properties/methods names.\nconst $acceptWhitespace = Symbol();\nconst $addHTML = Symbol();\nconst $appendChild = Symbol();\nconst $childrenToHTML = Symbol();\nconst $clean = Symbol();\nconst $cleanPage = Symbol();\nconst $cleanup = Symbol();\nconst $clone = Symbol();\nconst $consumed = Symbol();\nconst $content = Symbol(\"content\");\nconst $data = Symbol(\"data\");\nconst $dump = Symbol();\nconst $extra = Symbol(\"extra\");\nconst $finalize = Symbol();\nconst $flushHTML = Symbol();\nconst $getAttributeIt = Symbol();\nconst $getAttributes = Symbol();\nconst $getAvailableSpace = Symbol();\nconst $getChildrenByClass = Symbol();\nconst $getChildrenByName = Symbol();\nconst $getChildrenByNameIt = Symbol();\nconst $getDataValue = Symbol();\nconst $getExtra = Symbol();\nconst $getRealChildrenByNameIt = Symbol();\nconst $getChildren = Symbol();\nconst $getContainedChildren = Symbol();\nconst $getNextPage = Symbol();\nconst $getSubformParent = Symbol();\nconst $getParent = Symbol();\nconst $getTemplateRoot = Symbol();\nconst $globalData = Symbol();\nconst $hasSettableValue = Symbol();\nconst $ids = Symbol();\nconst $indexOf = Symbol();\nconst $insertAt = Symbol();\nconst $isCDATAXml = Symbol();\nconst $isBindable = Symbol();\nconst $isDataValue = Symbol();\nconst $isDescendent = Symbol();\nconst $isNsAgnostic = Symbol();\nconst $isSplittable = Symbol();\nconst $isThereMoreWidth = Symbol();\nconst $isTransparent = Symbol();\nconst $isUsable = Symbol();\nconst $lastAttribute = Symbol();\nconst $namespaceId = Symbol(\"namespaceId\");\nconst $nodeName = Symbol(\"nodeName\");\nconst $nsAttributes = Symbol();\nconst $onChild = Symbol();\nconst $onChildCheck = Symbol();\nconst $onText = Symbol();\nconst $pushGlyphs = Symbol();\nconst $popPara = Symbol();\nconst $pushPara = Symbol();\nconst $removeChild = Symbol();\nconst $root = Symbol(\"root\");\nconst $resolvePrototypes = Symbol();\nconst $searchNode = Symbol();\nconst $setId = Symbol();\nconst $setSetAttributes = Symbol();\nconst $setValue = Symbol();\nconst $tabIndex = Symbol();\nconst $text = Symbol();\nconst $toPages = Symbol();\nconst $toHTML = Symbol();\nconst $toString = Symbol();\nconst $toStyle = Symbol();\nconst $uid = Symbol(\"uid\");\n\nconst _applyPrototype = Symbol();\nconst _attributes = Symbol();\nconst _attributeNames = Symbol();\nconst _children = Symbol(\"_children\");\nconst _cloneAttribute = Symbol();\nconst _dataValue = Symbol();\nconst _defaultValue = Symbol();\nconst _filteredChildrenGenerator = Symbol();\nconst _getPrototype = Symbol();\nconst _getUnsetAttributes = Symbol();\nconst _hasChildren = Symbol();\nconst _max = Symbol();\nconst _options = Symbol();\nconst _parent = Symbol(\"parent\");\nconst _resolvePrototypesHelper = Symbol();\nconst _setAttributes = Symbol();\nconst _validator = Symbol();\n\nlet uid = 0;\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nclass XFAObject {\n constructor(nsId, name, hasChildren = false) {\n this[$namespaceId] = nsId;\n this[$nodeName] = name;\n this[_hasChildren] = hasChildren;\n this[_parent] = null;\n this[_children] = [];\n this[$uid] = `${name}${uid++}`;\n this[$globalData] = null;\n }\n\n [$onChild](child) {\n if (!this[_hasChildren] || !this[$onChildCheck](child)) {\n return false;\n }\n\n const name = child[$nodeName];\n const node = this[name];\n\n if (node instanceof XFAObjectArray) {\n if (node.push(child)) {\n this[$appendChild](child);\n return true;\n }\n } else {\n // IRL it's possible to already have a node.\n // So just replace it with the last version.\n if (node !== null) {\n this[$removeChild](node);\n }\n this[name] = child;\n this[$appendChild](child);\n return true;\n }\n\n let id = \"\";\n if (this.id) {\n id = ` (id: ${this.id})`;\n } else if (this.name) {\n id = ` (name: ${this.name} ${this.h.value})`;\n }\n warn(`XFA - node \"${this[$nodeName]}\"${id} has already enough \"${name}\"!`);\n return false;\n }\n\n [$onChildCheck](child) {\n return (\n this.hasOwnProperty(child[$nodeName]) &&\n child[$namespaceId] === this[$namespaceId]\n );\n }\n\n [$isNsAgnostic]() {\n return false;\n }\n\n [$acceptWhitespace]() {\n return false;\n }\n\n [$isCDATAXml]() {\n return false;\n }\n\n [$isBindable]() {\n return false;\n }\n\n [$popPara]() {\n if (this.para) {\n this[$getTemplateRoot]()[$extra].paraStack.pop();\n }\n }\n\n [$pushPara]() {\n this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\n }\n\n [$setId](ids) {\n if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\n ids.set(this.id, this);\n }\n }\n\n [$getTemplateRoot]() {\n return this[$globalData].template;\n }\n\n [$isSplittable]() {\n return false;\n }\n\n /**\n Return true if this node (typically a container)\n can provide more width during layout.\n The goal is to help to know what a descendant must\n do in case of horizontal overflow.\n */\n [$isThereMoreWidth]() {\n return false;\n }\n\n [$appendChild](child) {\n child[_parent] = this;\n this[_children].push(child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n\n [$removeChild](child) {\n const i = this[_children].indexOf(child);\n this[_children].splice(i, 1);\n }\n\n [$hasSettableValue]() {\n return this.hasOwnProperty(\"value\");\n }\n\n [$setValue](_) {}\n\n [$onText](_) {}\n\n [$finalize]() {}\n\n [$clean](builder) {\n delete this[_hasChildren];\n if (this[$cleanup]) {\n builder.clean(this[$cleanup]);\n delete this[$cleanup];\n }\n }\n\n [$indexOf](child) {\n return this[_children].indexOf(child);\n }\n\n [$insertAt](i, child) {\n child[_parent] = this;\n this[_children].splice(i, 0, child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n\n /**\n * If true the element is transparent when searching a node using\n * a SOM expression which means that looking for \"foo.bar\" in\n * <... name=\"foo\"><toto><titi><... name=\"bar\"></titi></toto>...\n * is fine because toto and titi are transparent.\n */\n [$isTransparent]() {\n return !this.name;\n }\n\n [$lastAttribute]() {\n return \"\";\n }\n\n [$text]() {\n if (this[_children].length === 0) {\n return this[$content];\n }\n return this[_children].map(c => c[$text]()).join(\"\");\n }\n\n get [_attributeNames]() {\n // Lazily get attributes names\n const proto = Object.getPrototypeOf(this);\n if (!proto._attributes) {\n const attributes = (proto._attributes = new Set());\n for (const name of Object.getOwnPropertyNames(this)) {\n if (\n this[name] === null ||\n this[name] instanceof XFAObject ||\n this[name] instanceof XFAObjectArray\n ) {\n break;\n }\n attributes.add(name);\n }\n }\n return shadow(this, _attributeNames, proto._attributes);\n }\n\n [$isDescendent](parent) {\n let node = this;\n while (node) {\n if (node === parent) {\n return true;\n }\n node = node[$getParent]();\n }\n return false;\n }\n\n [$getParent]() {\n return this[_parent];\n }\n\n [$getSubformParent]() {\n return this[$getParent]();\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[name];\n }\n\n [$dump]() {\n const dumped = Object.create(null);\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n const value = this[name];\n if (value === null) {\n continue;\n }\n if (value instanceof XFAObject) {\n dumped[name] = value[$dump]();\n } else if (value instanceof XFAObjectArray) {\n if (!value.isEmpty()) {\n dumped[name] = value.dump();\n }\n } else {\n dumped[name] = value;\n }\n }\n\n return dumped;\n }\n\n [$toStyle]() {\n return null;\n }\n\n [$toHTML]() {\n return HTMLResult.EMPTY;\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in Subform and SubformSet.\n for (const node of this[$getChildren]()) {\n yield node;\n }\n }\n\n *[_filteredChildrenGenerator](filter, include) {\n for (const node of this[$getContainedChildren]()) {\n if (!filter || include === filter.has(node[$nodeName])) {\n const availableSpace = this[$getAvailableSpace]();\n const res = node[$toHTML](availableSpace);\n if (!res.success) {\n this[$extra].failingNode = node;\n }\n yield res;\n }\n }\n }\n\n [$flushHTML]() {\n return null;\n }\n\n [$addHTML](html, bbox) {\n this[$extra].children.push(html);\n }\n\n [$getAvailableSpace]() {}\n\n [$childrenToHTML]({ filter = null, include = true }) {\n if (!this[$extra].generator) {\n this[$extra].generator = this[_filteredChildrenGenerator](\n filter,\n include\n );\n } else {\n const availableSpace = this[$getAvailableSpace]();\n const res = this[$extra].failingNode[$toHTML](availableSpace);\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n delete this[$extra].failingNode;\n }\n\n while (true) {\n const gen = this[$extra].generator.next();\n if (gen.done) {\n break;\n }\n const res = gen.value;\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n }\n\n this[$extra].generator = null;\n\n return HTMLResult.EMPTY;\n }\n\n [$setSetAttributes](attributes) {\n // Just keep set attributes because it can be used in a proto.\n this[_setAttributes] = new Set(Object.keys(attributes));\n }\n\n /**\n * Get attribute names which have been set in the proto but not in this.\n */\n [_getUnsetAttributes](protoAttributes) {\n const allAttr = this[_attributeNames];\n const setAttr = this[_setAttributes];\n return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x));\n }\n\n /**\n * Update the node with properties coming from a prototype and apply\n * this function recursivly to all children.\n */\n [$resolvePrototypes](ids, ancestors = new Set()) {\n for (const child of this[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n\n [_resolvePrototypesHelper](ids, ancestors) {\n const proto = this[_getPrototype](ids, ancestors);\n if (proto) {\n // _applyPrototype will apply $resolvePrototypes with correct ancestors\n // to avoid infinite loop.\n this[_applyPrototype](proto, ids, ancestors);\n } else {\n this[$resolvePrototypes](ids, ancestors);\n }\n }\n\n [_getPrototype](ids, ancestors) {\n const { use, usehref } = this;\n if (!use && !usehref) {\n return null;\n }\n\n let proto = null;\n let somExpression = null;\n let id = null;\n let ref = use;\n\n // If usehref and use are non-empty then use usehref.\n if (usehref) {\n ref = usehref;\n // Href can be one of the following:\n // - #ID\n // - URI#ID\n // - #som(expression)\n // - URI#som(expression)\n // - URI\n // For now we don't handle URI other than \".\" (current document).\n if (usehref.startsWith(\"#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\"#som(\".length, usehref.length - 1);\n } else if (usehref.startsWith(\".#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\".#som(\".length, usehref.length - 1);\n } else if (usehref.startsWith(\"#\")) {\n id = usehref.slice(1);\n } else if (usehref.startsWith(\".#\")) {\n id = usehref.slice(2);\n }\n } else if (use.startsWith(\"#\")) {\n id = use.slice(1);\n } else {\n somExpression = use;\n }\n\n this.use = this.usehref = \"\";\n if (id) {\n proto = ids.get(id);\n } else {\n proto = searchNode(\n ids.get($root),\n this,\n somExpression,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (proto) {\n proto = proto[0];\n }\n }\n\n if (!proto) {\n warn(`XFA - Invalid prototype reference: ${ref}.`);\n return null;\n }\n\n if (proto[$nodeName] !== this[$nodeName]) {\n warn(\n `XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`\n );\n return null;\n }\n\n if (ancestors.has(proto)) {\n // We've a cycle so break it.\n warn(`XFA - Cycle detected in prototypes use.`);\n return null;\n }\n\n ancestors.add(proto);\n\n // The prototype can have a \"use\" attribute itself.\n const protoProto = proto[_getPrototype](ids, ancestors);\n if (protoProto) {\n proto[_applyPrototype](protoProto, ids, ancestors);\n }\n\n // The prototype can have a child which itself has a \"use\" property.\n proto[$resolvePrototypes](ids, ancestors);\n\n ancestors.delete(proto);\n\n return proto;\n }\n\n [_applyPrototype](proto, ids, ancestors) {\n if (ancestors.has(proto)) {\n // We've a cycle so break it.\n warn(`XFA - Cycle detected in prototypes use.`);\n return;\n }\n\n if (!this[$content] && proto[$content]) {\n this[$content] = proto[$content];\n }\n\n const newAncestors = new Set(ancestors);\n newAncestors.add(proto);\n\n for (const unsetAttrName of this[_getUnsetAttributes](\n proto[_setAttributes]\n )) {\n this[unsetAttrName] = proto[unsetAttrName];\n if (this[_setAttributes]) {\n this[_setAttributes].add(unsetAttrName);\n }\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n continue;\n }\n const value = this[name];\n const protoValue = proto[name];\n\n if (value instanceof XFAObjectArray) {\n for (const child of value[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n\n for (\n let i = value[_children].length, ii = protoValue[_children].length;\n i < ii;\n i++\n ) {\n const child = proto[_children][i][$clone]();\n if (value.push(child)) {\n child[_parent] = this;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n } else {\n // No need to continue: other nodes will be rejected.\n break;\n }\n }\n continue;\n }\n\n if (value !== null) {\n value[$resolvePrototypes](ids, ancestors);\n if (protoValue) {\n // protoValue must be treated as a prototype for value.\n value[_applyPrototype](protoValue, ids, ancestors);\n }\n continue;\n }\n\n if (protoValue !== null) {\n const child = protoValue[$clone]();\n child[_parent] = this;\n this[name] = child;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n }\n\n static [_cloneAttribute](obj) {\n if (Array.isArray(obj)) {\n return obj.map(x => XFAObject[_cloneAttribute](x));\n }\n if (typeof obj === \"object\" && obj !== null) {\n return Object.assign({}, obj);\n }\n return obj;\n }\n\n [$clone]() {\n const clone = Object.create(Object.getPrototypeOf(this));\n for (const $symbol of Object.getOwnPropertySymbols(this)) {\n try {\n clone[$symbol] = this[$symbol];\n } catch (_) {\n shadow(clone, $symbol, this[$symbol]);\n }\n }\n clone[$uid] = `${clone[$nodeName]}${uid++}`;\n clone[_children] = [];\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n clone[name] = XFAObject[_cloneAttribute](this[name]);\n continue;\n }\n const value = this[name];\n if (value instanceof XFAObjectArray) {\n clone[name] = new XFAObjectArray(value[_max]);\n } else {\n clone[name] = null;\n }\n }\n\n for (const child of this[_children]) {\n const name = child[$nodeName];\n const clonedChild = child[$clone]();\n clone[_children].push(clonedChild);\n clonedChild[_parent] = clone;\n if (clone[name] === null) {\n clone[name] = clonedChild;\n } else {\n clone[name][_children].push(clonedChild);\n }\n }\n\n return clone;\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[_children].filter(c => c[$nodeName] === name);\n }\n\n [$getChildrenByClass](name) {\n return this[name];\n }\n\n [$getChildrenByName](name, allTransparent, first = true) {\n return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\n }\n\n *[$getChildrenByNameIt](name, allTransparent, first = true) {\n if (name === \"parent\") {\n yield this[_parent];\n return;\n }\n\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n\n if (child.name === name) {\n yield child;\n }\n\n if (allTransparent || child[$isTransparent]()) {\n yield* child[$getChildrenByNameIt](name, allTransparent, false);\n }\n }\n\n if (first && this[_attributeNames].has(name)) {\n yield new XFAAttribute(this, name, this[name]);\n }\n }\n}\n\nclass XFAObjectArray {\n constructor(max = Infinity) {\n this[_max] = max;\n this[_children] = [];\n }\n\n push(child) {\n const len = this[_children].length;\n if (len <= this[_max]) {\n this[_children].push(child);\n return true;\n }\n warn(\n `XFA - node \"${child[$nodeName]}\" accepts no more than ${this[_max]} children`\n );\n return false;\n }\n\n isEmpty() {\n return this[_children].length === 0;\n }\n\n dump() {\n return this[_children].length === 1\n ? this[_children][0][$dump]()\n : this[_children].map(x => x[$dump]());\n }\n\n [$clone]() {\n const clone = new XFAObjectArray(this[_max]);\n clone[_children] = this[_children].map(c => c[$clone]());\n return clone;\n }\n\n get children() {\n return this[_children];\n }\n\n clear() {\n this[_children].length = 0;\n }\n}\n\nclass XFAAttribute {\n constructor(node, name, value) {\n this[_parent] = node;\n this[$nodeName] = name;\n this[$content] = value;\n this[$consumed] = false;\n this[$uid] = `attribute${uid++}`;\n }\n\n [$getParent]() {\n return this[_parent];\n }\n\n [$isDataValue]() {\n return true;\n }\n\n [$getDataValue]() {\n return this[$content].trim();\n }\n\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n\n [$text]() {\n return this[$content];\n }\n\n [$isDescendent](parent) {\n return this[_parent] === parent || this[_parent][$isDescendent](parent);\n }\n}\n\nclass XmlObject extends XFAObject {\n constructor(nsId, name, attributes = {}) {\n super(nsId, name);\n this[$content] = \"\";\n this[_dataValue] = null;\n if (name !== \"#text\") {\n const map = new Map();\n this[_attributes] = map;\n for (const [attrName, value] of Object.entries(attributes)) {\n map.set(attrName, new XFAAttribute(this, attrName, value));\n }\n if (attributes.hasOwnProperty($nsAttributes)) {\n // XFA attributes.\n const dataNode = attributes[$nsAttributes].xfa.dataNode;\n if (dataNode !== undefined) {\n if (dataNode === \"dataGroup\") {\n this[_dataValue] = false;\n } else if (dataNode === \"dataValue\") {\n this[_dataValue] = true;\n }\n }\n }\n }\n this[$consumed] = false;\n }\n\n [$toString](buf) {\n const tagName = this[$nodeName];\n if (tagName === \"#text\") {\n buf.push(encodeToXmlString(this[$content]));\n return;\n }\n const utf8TagName = utf8StringToString(tagName);\n const prefix = this[$namespaceId] === NS_DATASETS ? \"xfa:\" : \"\";\n buf.push(`<${prefix}${utf8TagName}`);\n for (const [name, value] of this[_attributes].entries()) {\n const utf8Name = utf8StringToString(name);\n buf.push(` ${utf8Name}=\"${encodeToXmlString(value[$content])}\"`);\n }\n if (this[_dataValue] !== null) {\n if (this[_dataValue]) {\n buf.push(` xfa:dataNode=\"dataValue\"`);\n } else {\n buf.push(` xfa:dataNode=\"dataGroup\"`);\n }\n }\n if (!this[$content] && this[_children].length === 0) {\n buf.push(\"/>\");\n return;\n }\n\n buf.push(\">\");\n if (this[$content]) {\n if (typeof this[$content] === \"string\") {\n buf.push(encodeToXmlString(this[$content]));\n } else {\n this[$content][$toString](buf);\n }\n } else {\n for (const child of this[_children]) {\n child[$toString](buf);\n }\n }\n buf.push(`</${prefix}${utf8TagName}>`);\n }\n\n [$onChild](child) {\n if (this[$content]) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n this[$content] = \"\";\n }\n this[$appendChild](child);\n return true;\n }\n\n [$onText](str) {\n this[$content] += str;\n }\n\n [$finalize]() {\n if (this[$content] && this[_children].length > 0) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n delete this[$content];\n }\n }\n\n [$toHTML]() {\n if (this[$nodeName] === \"#text\") {\n return HTMLResult.success({\n name: \"#text\",\n value: this[$content],\n });\n }\n\n return HTMLResult.EMPTY;\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[_children].filter(c => c[$nodeName] === name);\n }\n\n [$getAttributes]() {\n return this[_attributes];\n }\n\n [$getChildrenByClass](name) {\n const value = this[_attributes].get(name);\n if (value !== undefined) {\n return value;\n }\n return this[$getChildren](name);\n }\n\n *[$getChildrenByNameIt](name, allTransparent) {\n const value = this[_attributes].get(name);\n if (value) {\n yield value;\n }\n\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n\n if (allTransparent) {\n yield* child[$getChildrenByNameIt](name, allTransparent);\n }\n }\n }\n\n *[$getAttributeIt](name, skipConsumed) {\n const value = this[_attributes].get(name);\n if (value && (!skipConsumed || !value[$consumed])) {\n yield value;\n }\n for (const child of this[_children]) {\n yield* child[$getAttributeIt](name, skipConsumed);\n }\n }\n\n *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\n for (const child of this[_children]) {\n if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\n yield child;\n }\n\n if (allTransparent) {\n yield* child[$getRealChildrenByNameIt](\n name,\n allTransparent,\n skipConsumed\n );\n }\n }\n }\n\n [$isDataValue]() {\n if (this[_dataValue] === null) {\n return (\n this[_children].length === 0 ||\n this[_children][0][$namespaceId] === NamespaceIds.xhtml.id\n );\n }\n return this[_dataValue];\n }\n\n [$getDataValue]() {\n if (this[_dataValue] === null) {\n if (this[_children].length === 0) {\n return this[$content].trim();\n }\n if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) {\n return this[_children][0][$text]().trim();\n }\n return null;\n }\n return this[$content].trim();\n }\n\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n\n [$dump](hasNS = false) {\n const dumped = Object.create(null);\n if (hasNS) {\n dumped.$ns = this[$namespaceId];\n }\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n dumped.$name = this[$nodeName];\n\n dumped.children = [];\n for (const child of this[_children]) {\n dumped.children.push(child[$dump](hasNS));\n }\n\n dumped.attributes = Object.create(null);\n for (const [name, value] of this[_attributes]) {\n dumped.attributes[name] = value[$content];\n }\n\n return dumped;\n }\n}\n\nclass ContentObject extends XFAObject {\n constructor(nsId, name) {\n super(nsId, name);\n this[$content] = \"\";\n }\n\n [$onText](text) {\n this[$content] += text;\n }\n\n [$finalize]() {}\n}\n\nclass OptionObject extends ContentObject {\n constructor(nsId, name, options) {\n super(nsId, name);\n this[_options] = options;\n }\n\n [$finalize]() {\n this[$content] = getKeyword({\n data: this[$content],\n defaultValue: this[_options][0],\n validate: k => this[_options].includes(k),\n });\n }\n\n [$clean](builder) {\n super[$clean](builder);\n delete this[_options];\n }\n}\n\nclass StringObject extends ContentObject {\n [$finalize]() {\n this[$content] = this[$content].trim();\n }\n}\n\nclass IntegerObject extends ContentObject {\n constructor(nsId, name, defaultValue, validator) {\n super(nsId, name);\n this[_defaultValue] = defaultValue;\n this[_validator] = validator;\n }\n\n [$finalize]() {\n this[$content] = getInteger({\n data: this[$content],\n defaultValue: this[_defaultValue],\n validate: this[_validator],\n });\n }\n\n [$clean](builder) {\n super[$clean](builder);\n delete this[_defaultValue];\n delete this[_validator];\n }\n}\n\nclass Option01 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 0, n => n === 1);\n }\n}\n\nclass Option10 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 1, n => n === 0);\n }\n}\n\nexport {\n $acceptWhitespace,\n $addHTML,\n $appendChild,\n $childrenToHTML,\n $clean,\n $cleanPage,\n $cleanup,\n $clone,\n $consumed,\n $content,\n $data,\n $dump,\n $extra,\n $finalize,\n $flushHTML,\n $getAttributeIt,\n $getAttributes,\n $getAvailableSpace,\n $getChildren,\n $getChildrenByClass,\n $getChildrenByName,\n $getChildrenByNameIt,\n $getContainedChildren,\n $getDataValue,\n $getExtra,\n $getNextPage,\n $getParent,\n $getRealChildrenByNameIt,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $hasSettableValue,\n $ids,\n $indexOf,\n $insertAt,\n $isBindable,\n $isCDATAXml,\n $isDataValue,\n $isDescendent,\n $isNsAgnostic,\n $isSplittable,\n $isThereMoreWidth,\n $isTransparent,\n $isUsable,\n $namespaceId,\n $nodeName,\n $nsAttributes,\n $onChild,\n $onChildCheck,\n $onText,\n $popPara,\n $pushGlyphs,\n $pushPara,\n $removeChild,\n $resolvePrototypes,\n $root,\n $searchNode,\n $setId,\n $setSetAttributes,\n $setValue,\n $tabIndex,\n $text,\n $toHTML,\n $toPages,\n $toString,\n $toStyle,\n $uid,\n ContentObject,\n IntegerObject,\n Option01,\n Option10,\n OptionObject,\n StringObject,\n XFAAttribute,\n XFAObject,\n XFAObjectArray,\n XmlObject,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { shadow } from \"../../shared/util.js\";\n\nconst dimConverters = {\n pt: x => x,\n cm: x => (x / 2.54) * 72,\n mm: x => (x / (10 * 2.54)) * 72,\n in: x => x * 72,\n px: x => x,\n};\nconst measurementPattern = /([+-]?\\d+\\.?\\d*)(.*)/;\n\nfunction stripQuotes(str) {\n if (str.startsWith(\"'\") || str.startsWith('\"')) {\n return str.slice(1, str.length - 1);\n }\n return str;\n}\n\nfunction getInteger({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseInt(data, 10);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\n\nfunction getFloat({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseFloat(data);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\n\nfunction getKeyword({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n if (validate(data)) {\n return data;\n }\n return defaultValue;\n}\n\nfunction getStringOption(data, options) {\n return getKeyword({\n data,\n defaultValue: options[0],\n validate: k => options.includes(k),\n });\n}\n\nfunction getMeasurement(str, def = \"0\") {\n def = def || \"0\";\n if (!str) {\n return getMeasurement(def);\n }\n const match = str.trim().match(measurementPattern);\n if (!match) {\n return getMeasurement(def);\n }\n const [, valueStr, unit] = match;\n const value = parseFloat(valueStr);\n if (isNaN(value)) {\n return getMeasurement(def);\n }\n\n if (value === 0) {\n return 0;\n }\n\n const conv = dimConverters[unit];\n if (conv) {\n return conv(value);\n }\n\n return value;\n}\n\nfunction getRatio(data) {\n if (!data) {\n return { num: 1, den: 1 };\n }\n const ratio = data\n .trim()\n .split(/\\s*:\\s*/)\n .map(x => parseFloat(x))\n .filter(x => !isNaN(x));\n if (ratio.length === 1) {\n ratio.push(1);\n }\n\n if (ratio.length === 0) {\n return { num: 1, den: 1 };\n }\n\n const [num, den] = ratio;\n return { num, den };\n}\n\nfunction getRelevant(data) {\n if (!data) {\n return [];\n }\n return data\n .trim()\n .split(/\\s+/)\n .map(e => {\n return {\n excluded: e[0] === \"-\",\n viewname: e.substring(1),\n };\n });\n}\n\nfunction getColor(data, def = [0, 0, 0]) {\n let [r, g, b] = def;\n if (!data) {\n return { r, g, b };\n }\n const color = data\n .trim()\n .split(/\\s*,\\s*/)\n .map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255))\n .map(c => (isNaN(c) ? 0 : c));\n\n if (color.length < 3) {\n return { r, g, b };\n }\n\n [r, g, b] = color;\n return { r, g, b };\n}\n\nfunction getBBox(data) {\n const def = -1;\n if (!data) {\n return { x: def, y: def, width: def, height: def };\n }\n const bbox = data\n .trim()\n .split(/\\s*,\\s*/)\n .map(m => getMeasurement(m, \"-1\"));\n if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {\n return { x: def, y: def, width: def, height: def };\n }\n\n const [x, y, width, height] = bbox;\n return { x, y, width, height };\n}\n\nclass HTMLResult {\n static get FAILURE() {\n return shadow(this, \"FAILURE\", new HTMLResult(false, null, null, null));\n }\n\n static get EMPTY() {\n return shadow(this, \"EMPTY\", new HTMLResult(true, null, null, null));\n }\n\n constructor(success, html, bbox, breakNode) {\n this.success = success;\n this.html = html;\n this.bbox = bbox;\n this.breakNode = breakNode;\n }\n\n isBreak() {\n return !!this.breakNode;\n }\n\n static breakNode(node) {\n return new HTMLResult(false, null, null, node);\n }\n\n static success(html, bbox = null) {\n return new HTMLResult(true, html, bbox, null);\n }\n}\n\nexport {\n getBBox,\n getColor,\n getFloat,\n getInteger,\n getKeyword,\n getMeasurement,\n getRatio,\n getRelevant,\n getStringOption,\n HTMLResult,\n stripQuotes,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst $buildXFAObject = Symbol();\n\nconst NamespaceIds = {\n config: {\n id: 0,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xci/\"),\n },\n connectionSet: {\n id: 1,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-connection-set/\"),\n },\n datasets: {\n id: 2,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-data/\"),\n },\n form: {\n id: 3,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-form/\"),\n },\n localeSet: {\n id: 4,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-locale-set/\"),\n },\n pdf: {\n id: 5,\n check: ns => ns === \"http://ns.adobe.com/xdp/pdf/\",\n },\n signature: {\n id: 6,\n check: ns => ns === \"http://www.w3.org/2000/09/xmldsig#\",\n },\n sourceSet: {\n id: 7,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-source-set/\"),\n },\n stylesheet: {\n id: 8,\n check: ns => ns === \"http://www.w3.org/1999/XSL/Transform\",\n },\n template: {\n id: 9,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-template/\"),\n },\n xdc: {\n id: 10,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xdc/\"),\n },\n xdp: {\n id: 11,\n check: ns => ns === \"http://ns.adobe.com/xdp/\",\n },\n xfdf: {\n id: 12,\n check: ns => ns === \"http://ns.adobe.com/xfdf/\",\n },\n xhtml: {\n id: 13,\n check: ns => ns === \"http://www.w3.org/1999/xhtml\",\n },\n xmpmeta: {\n id: 14,\n check: ns => ns === \"http://ns.adobe.com/xmpmeta/\",\n },\n};\n\nexport { $buildXFAObject, NamespaceIds };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $getChildren,\n $getChildrenByClass,\n $getChildrenByName,\n $getParent,\n $namespaceId,\n XFAObject,\n XFAObjectArray,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst namePattern = /^[^.[]+/;\nconst indexPattern = /^[^\\]]+/;\nconst operators = {\n dot: 0,\n dotDot: 1,\n dotHash: 2,\n dotBracket: 3,\n dotParen: 4,\n};\n\nconst shortcuts = new Map([\n [\"$data\", (root, current) => (root.datasets ? root.datasets.data : root)],\n [\n \"$record\",\n (root, current) =>\n (root.datasets ? root.datasets.data : root)[$getChildren]()[0],\n ],\n [\"$template\", (root, current) => root.template],\n [\"$connectionSet\", (root, current) => root.connectionSet],\n [\"$form\", (root, current) => root.form],\n [\"$layout\", (root, current) => root.layout],\n [\"$host\", (root, current) => root.host],\n [\"$dataWindow\", (root, current) => root.dataWindow],\n [\"$event\", (root, current) => root.event],\n [\"!\", (root, current) => root.datasets],\n [\"$xfa\", (root, current) => root],\n [\"xfa\", (root, current) => root],\n [\"$\", (root, current) => current],\n]);\n\nconst somCache = new WeakMap();\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction parseIndex(index) {\n index = index.trim();\n if (index === \"*\") {\n return Infinity;\n }\n return parseInt(index, 10) || 0;\n}\n\n// For now expressions containaing .[...] or .(...) are not\n// evaluated so don't parse them.\n// TODO: implement that stuff and the remove the noExpr param.\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\n let match = expr.match(namePattern);\n if (!match) {\n return null;\n }\n\n let [name] = match;\n const parsed = [\n {\n name,\n cacheName: \".\" + name,\n index: 0,\n js: null,\n formCalc: null,\n operator: operators.dot,\n },\n ];\n\n let pos = name.length;\n\n while (pos < expr.length) {\n const spos = pos;\n const char = expr.charAt(pos++);\n if (char === \"[\") {\n match = expr.slice(pos).match(indexPattern);\n if (!match) {\n warn(\"XFA - Invalid index in SOM expression\");\n return null;\n }\n parsed[parsed.length - 1].index = parseIndex(match[0]);\n pos += match[0].length + 1;\n continue;\n }\n\n let operator;\n switch (expr.charAt(pos)) {\n case \".\":\n if (!dotDotAllowed) {\n return null;\n }\n pos++;\n operator = operators.dotDot;\n break;\n case \"#\":\n pos++;\n operator = operators.dotHash;\n break;\n case \"[\":\n if (noExpr) {\n warn(\n \"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\"\n );\n return null;\n }\n // TODO: FormCalc expression so need to use the parser\n operator = operators.dotBracket;\n break;\n case \"(\":\n if (noExpr) {\n warn(\n \"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\"\n );\n return null;\n }\n // TODO:\n // Javascript expression: should be a boolean operation with a path\n // so maybe we can have our own parser for that stuff or\n // maybe use the formcalc one.\n operator = operators.dotParen;\n break;\n default:\n operator = operators.dot;\n break;\n }\n\n match = expr.slice(pos).match(namePattern);\n if (!match) {\n break;\n }\n\n [name] = match;\n pos += name.length;\n parsed.push({\n name,\n cacheName: expr.slice(spos, pos),\n operator,\n index: 0,\n js: null,\n formCalc: null,\n });\n }\n return parsed;\n}\n\nfunction searchNode(\n root,\n container,\n expr,\n dotDotAllowed = true,\n useCache = true\n) {\n const parsed = parseExpression(expr, dotDotAllowed);\n if (!parsed) {\n return null;\n }\n\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n let isQualified;\n if (fn) {\n isQualified = true;\n root = [fn(root, container)];\n i = 1;\n } else {\n isQualified = container === null;\n root = [container || root];\n }\n\n for (let ii = parsed.length; i < ii; i++) {\n const { name, cacheName, operator, index } = parsed[i];\n const nodes = [];\n for (const node of root) {\n if (!(node instanceof XFAObject)) {\n continue;\n }\n\n let children, cached;\n\n if (useCache) {\n cached = somCache.get(node);\n if (!cached) {\n cached = new Map();\n somCache.set(node, cached);\n }\n children = cached.get(cacheName);\n }\n\n if (!children) {\n switch (operator) {\n case operators.dot:\n children = node[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = node[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = node[$getChildrenByClass](name);\n if (children instanceof XFAObjectArray) {\n children = children.children;\n } else {\n children = [children];\n }\n break;\n default:\n break;\n }\n if (useCache) {\n cached.set(cacheName, children);\n }\n }\n\n if (children.length > 0) {\n nodes.push(children);\n }\n }\n\n if (nodes.length === 0 && !isQualified && i === 0) {\n // We've an unqualified expression and we didn't find anything\n // so look at container and siblings of container and so on.\n // http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=114\n const parent = container[$getParent]();\n container = parent;\n if (!container) {\n return null;\n }\n i = -1;\n root = [container];\n continue;\n }\n\n if (isFinite(index)) {\n root = nodes.filter(node => index < node.length).map(node => node[index]);\n } else {\n root = nodes.reduce((acc, node) => acc.concat(node), []);\n }\n }\n\n if (root.length === 0) {\n return null;\n }\n\n return root;\n}\n\nfunction createNodes(root, path) {\n let node = null;\n for (const { name, index } of path) {\n for (let i = 0, ii = !isFinite(index) ? 0 : index; i <= ii; i++) {\n const nsId = root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId];\n node = new XmlObject(nsId, name);\n root[$appendChild](node);\n }\n\n root = node;\n }\n return node;\n}\n\nfunction createDataNode(root, container, expr) {\n const parsed = parseExpression(expr);\n if (!parsed) {\n return null;\n }\n\n if (parsed.some(x => x.operator === operators.dotDot)) {\n return null;\n }\n\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n if (fn) {\n root = fn(root, container);\n i = 1;\n } else {\n root = container || root;\n }\n\n for (let ii = parsed.length; i < ii; i++) {\n const { name, operator, index } = parsed[i];\n if (!isFinite(index)) {\n parsed[i].index = 0;\n return createNodes(root, parsed.slice(i));\n }\n\n let children;\n switch (operator) {\n case operators.dot:\n children = root[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = root[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = root[$getChildrenByClass](name);\n if (children instanceof XFAObjectArray) {\n children = children.children;\n } else {\n children = [children];\n }\n break;\n default:\n break;\n }\n\n if (children.length === 0) {\n return createNodes(root, parsed.slice(i));\n }\n\n if (index < children.length) {\n const child = children[index];\n if (!(child instanceof XFAObject)) {\n warn(`XFA - Cannot create a node.`);\n return null;\n }\n root = child;\n } else {\n parsed[i].index = index - children.length;\n return createNodes(root, parsed.slice(i));\n }\n }\n return null;\n}\n\nexport { createDataNode, searchNode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $clone,\n $consumed,\n $content,\n $data,\n $finalize,\n $getAttributeIt,\n $getChildren,\n $getDataValue,\n $getParent,\n $getRealChildrenByNameIt,\n $hasSettableValue,\n $indexOf,\n $insertAt,\n $isBindable,\n $isDataValue,\n $isDescendent,\n $namespaceId,\n $nodeName,\n $removeChild,\n $setValue,\n $text,\n XFAAttribute,\n XFAObjectArray,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { BindItems, Field, Items, SetProperty, Text } from \"./template.js\";\nimport { createDataNode, searchNode } from \"./som.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction createText(content) {\n const node = new Text({});\n node[$content] = content;\n return node;\n}\n\nclass Binder {\n constructor(root) {\n this.root = root;\n this.datasets = root.datasets;\n if (root.datasets && root.datasets.data) {\n this.data = root.datasets.data;\n } else {\n this.data = new XmlObject(NamespaceIds.datasets.id, \"data\");\n }\n this.emptyMerge = this.data[$getChildren]().length === 0;\n\n this.root.form = this.form = root.template[$clone]();\n }\n\n _isConsumeData() {\n return !this.emptyMerge && this._mergeMode;\n }\n\n _isMatchTemplate() {\n return !this._isConsumeData();\n }\n\n bind() {\n this._bindElement(this.form, this.data);\n return this.form;\n }\n\n getData() {\n return this.data;\n }\n\n _bindValue(formNode, data, picture) {\n // Nodes must have the same \"type\": container or value.\n // Here we make the link between form node and\n // data node (through $data property): we'll use it\n // to save form data.\n\n formNode[$data] = data;\n if (formNode[$hasSettableValue]()) {\n if (data[$isDataValue]()) {\n const value = data[$getDataValue]();\n // TODO: use picture.\n formNode[$setValue](createText(value));\n } else if (\n formNode instanceof Field &&\n formNode.ui &&\n formNode.ui.choiceList &&\n formNode.ui.choiceList.open === \"multiSelect\"\n ) {\n const value = data[$getChildren]()\n .map(child => child[$content].trim())\n .join(\"\\n\");\n formNode[$setValue](createText(value));\n } else if (this._isConsumeData()) {\n warn(`XFA - Nodes haven't the same type.`);\n }\n } else if (!data[$isDataValue]() || this._isMatchTemplate()) {\n this._bindElement(formNode, data);\n } else {\n warn(`XFA - Nodes haven't the same type.`);\n }\n }\n\n _findDataByNameToConsume(name, isValue, dataNode, global) {\n if (!name) {\n return null;\n }\n\n // Firstly, we try to find a node with the given name:\n // - in dataNode;\n // - if not found, then in parent;\n // - and if not in found, then in grand-parent.\n let generator, match;\n for (let i = 0; i < 3; i++) {\n generator = dataNode[$getRealChildrenByNameIt](\n name,\n /* allTransparent = */ false,\n /* skipConsumed = */ true\n );\n // Try to find a match of the same kind.\n while (true) {\n match = generator.next().value;\n if (!match) {\n break;\n }\n\n if (isValue === match[$isDataValue]()) {\n return match;\n }\n }\n if (\n dataNode[$namespaceId] === NamespaceIds.datasets.id &&\n dataNode[$nodeName] === \"data\"\n ) {\n break;\n }\n dataNode = dataNode[$getParent]();\n }\n\n if (!global) {\n return null;\n }\n\n // Secondly, if global try to find it just under the root of datasets\n // (which is the location of global variables).\n generator = this.data[$getRealChildrenByNameIt](\n name,\n /* allTransparent = */ true,\n /* skipConsumed = */ false\n );\n\n match = generator.next().value;\n if (match) {\n return match;\n }\n\n // Thirdly, try to find it in attributes.\n generator = this.data[$getAttributeIt](name, /* skipConsumed = */ true);\n match = generator.next().value;\n if (match && match[$isDataValue]()) {\n return match;\n }\n\n return null;\n }\n\n _setProperties(formNode, dataNode) {\n // For example:\n // <field name=\"LastName\" ...>\n // <setProperty ref=\"$data.Main.Style.NameFont\" target=\"font.typeface\"/>\n // <setProperty ref=\"$data.Main.Style.NameSize\" target=\"font.size\"/>\n // <setProperty ref=\"$data.Main.Help.LastName\" target=\"assist.toolTip\"/>\n // </field>\n\n if (!formNode.hasOwnProperty(\"setProperty\")) {\n return;\n }\n\n for (const { ref, target, connection } of formNode.setProperty.children) {\n if (connection) {\n // TODO: evaluate if we should implement this feature.\n // Skip for security reasons.\n continue;\n }\n if (!ref) {\n continue;\n }\n\n const nodes = searchNode(\n this.root,\n dataNode,\n ref,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n const [node] = nodes;\n\n if (!node[$isDescendent](this.data)) {\n warn(`XFA - Invalid node: must be a data node.`);\n continue;\n }\n\n const targetNodes = searchNode(\n this.root,\n formNode,\n target,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!targetNodes) {\n warn(`XFA - Invalid target: ${target}.`);\n continue;\n }\n const [targetNode] = targetNodes;\n\n if (!targetNode[$isDescendent](formNode)) {\n warn(`XFA - Invalid target: must be a property or subproperty.`);\n continue;\n }\n\n const targetParent = targetNode[$getParent]();\n if (\n targetNode instanceof SetProperty ||\n targetParent instanceof SetProperty\n ) {\n warn(\n `XFA - Invalid target: cannot be a setProperty or one of its properties.`\n );\n continue;\n }\n\n if (\n targetNode instanceof BindItems ||\n targetParent instanceof BindItems\n ) {\n warn(\n `XFA - Invalid target: cannot be a bindItems or one of its properties.`\n );\n continue;\n }\n\n const content = node[$text]();\n const name = targetNode[$nodeName];\n\n if (targetNode instanceof XFAAttribute) {\n const attrs = Object.create(null);\n attrs[name] = content;\n const obj = Reflect.construct(\n Object.getPrototypeOf(targetParent).constructor,\n [attrs]\n );\n targetParent[name] = obj[name];\n continue;\n }\n\n if (!targetNode.hasOwnProperty($content)) {\n warn(`XFA - Invalid node to use in setProperty`);\n continue;\n }\n\n targetNode[$data] = node;\n targetNode[$content] = content;\n targetNode[$finalize]();\n }\n }\n\n _bindItems(formNode, dataNode) {\n // For example:\n // <field name=\"CardName\"...>\n // <bindItems ref=\"$data.main.ccs.cc[*]\" labelRef=\"uiname\"\n // valueRef=\"token\"/>\n // <ui><choiceList/></ui>\n // </field>\n\n if (\n !formNode.hasOwnProperty(\"items\") ||\n !formNode.hasOwnProperty(\"bindItems\") ||\n formNode.bindItems.isEmpty()\n ) {\n return;\n }\n\n for (const item of formNode.items.children) {\n formNode[$removeChild](item);\n }\n\n formNode.items.clear();\n\n const labels = new Items({});\n const values = new Items({});\n\n formNode[$appendChild](labels);\n formNode.items.push(labels);\n\n formNode[$appendChild](values);\n formNode.items.push(values);\n\n for (const { ref, labelRef, valueRef, connection } of formNode.bindItems\n .children) {\n if (connection) {\n // TODO: evaluate if we should implement this feature.\n // Skip for security reasons.\n continue;\n }\n if (!ref) {\n continue;\n }\n\n const nodes = searchNode(\n this.root,\n dataNode,\n ref,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n for (const node of nodes) {\n if (!node[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid ref (${ref}): must be a datasets child.`);\n continue;\n }\n\n const labelNodes = searchNode(\n this.root,\n node,\n labelRef,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!labelNodes) {\n warn(`XFA - Invalid label: ${labelRef}.`);\n continue;\n }\n const [labelNode] = labelNodes;\n\n if (!labelNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid label: must be a datasets child.`);\n continue;\n }\n\n const valueNodes = searchNode(\n this.root,\n node,\n valueRef,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!valueNodes) {\n warn(`XFA - Invalid value: ${valueRef}.`);\n continue;\n }\n const [valueNode] = valueNodes;\n\n if (!valueNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid value: must be a datasets child.`);\n continue;\n }\n\n const label = createText(labelNode[$text]());\n const value = createText(valueNode[$text]());\n\n labels[$appendChild](label);\n labels.text.push(label);\n\n values[$appendChild](value);\n values.text.push(value);\n }\n }\n }\n\n _bindOccurrences(formNode, matches, picture) {\n // Insert nodes which are not in the template but reflect\n // what we've in data tree.\n\n let baseClone;\n if (matches.length > 1) {\n // Clone before binding to avoid bad state.\n baseClone = formNode[$clone]();\n baseClone[$removeChild](baseClone.occur);\n baseClone.occur = null;\n }\n\n this._bindValue(formNode, matches[0], picture);\n this._setProperties(formNode, matches[0]);\n this._bindItems(formNode, matches[0]);\n\n if (matches.length === 1) {\n return;\n }\n\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n const pos = parent[$indexOf](formNode);\n\n for (let i = 1, ii = matches.length; i < ii; i++) {\n const match = matches[i];\n const clone = baseClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n\n this._bindValue(clone, match, picture);\n this._setProperties(clone, match);\n this._bindItems(clone, match);\n }\n }\n\n _createOccurrences(formNode) {\n if (!this.emptyMerge) {\n return;\n }\n\n const { occur } = formNode;\n if (!occur || occur.initial <= 1) {\n return;\n }\n\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n\n if (!(parent[name] instanceof XFAObjectArray)) {\n return;\n }\n\n let currentNumber;\n if (formNode.name) {\n currentNumber = parent[name].children.filter(\n e => e.name === formNode.name\n ).length;\n } else {\n currentNumber = parent[name].children.length;\n }\n\n const pos = parent[$indexOf](formNode) + 1;\n const ii = occur.initial - currentNumber;\n if (ii) {\n const nodeClone = formNode[$clone]();\n nodeClone[$removeChild](nodeClone.occur);\n nodeClone.occur = null;\n parent[name].push(nodeClone);\n parent[$insertAt](pos, nodeClone);\n\n for (let i = 1; i < ii; i++) {\n const clone = nodeClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n }\n }\n }\n\n _getOccurInfo(formNode) {\n const { name, occur } = formNode;\n if (!occur || !name) {\n return [1, 1];\n }\n const max = occur.max === -1 ? Infinity : occur.max;\n return [occur.min, max];\n }\n\n _setAndBind(formNode, dataNode) {\n this._setProperties(formNode, dataNode);\n this._bindItems(formNode, dataNode);\n this._bindElement(formNode, dataNode);\n }\n\n _bindElement(formNode, dataNode) {\n // Some nodes can be useless because min=0 so remove them\n // after the loop to avoid bad things.\n\n const uselessNodes = [];\n\n this._createOccurrences(formNode);\n\n for (const child of formNode[$getChildren]()) {\n if (child[$data]) {\n // Already bound.\n continue;\n }\n\n if (this._mergeMode === undefined && child[$nodeName] === \"subform\") {\n this._mergeMode = child.mergeMode === \"consumeData\";\n\n // XFA specs p. 182:\n // The highest-level subform and the data node representing\n // the current record are special; they are always\n // bound even if their names don't match.\n const dataChildren = dataNode[$getChildren]();\n if (dataChildren.length > 0) {\n this._bindOccurrences(child, [dataChildren[0]], null);\n } else if (this.emptyMerge) {\n const nsId =\n dataNode[$namespaceId] === NS_DATASETS\n ? -1\n : dataNode[$namespaceId];\n const dataChild = (child[$data] = new XmlObject(\n nsId,\n child.name || \"root\"\n ));\n dataNode[$appendChild](dataChild);\n this._bindElement(child, dataChild);\n }\n continue;\n }\n\n if (!child[$isBindable]()) {\n // The node cannot contain some new data so there is nothing\n // to create in the data node.\n continue;\n }\n\n let global = false;\n let picture = null;\n let ref = null;\n let match = null;\n if (child.bind) {\n switch (child.bind.match) {\n case \"none\":\n this._setAndBind(child, dataNode);\n continue;\n case \"global\":\n global = true;\n break;\n case \"dataRef\":\n if (!child.bind.ref) {\n warn(`XFA - ref is empty in node ${child[$nodeName]}.`);\n this._setAndBind(child, dataNode);\n continue;\n }\n ref = child.bind.ref;\n break;\n default:\n break;\n }\n if (child.bind.picture) {\n picture = child.bind.picture[$content];\n }\n }\n\n const [min, max] = this._getOccurInfo(child);\n\n if (ref) {\n // Don't use a cache for searching: nodes can change during binding.\n match = searchNode(\n this.root,\n dataNode,\n ref,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (match === null) {\n // Nothing found: we must create some nodes in data in order\n // to have something to match with the given expression.\n // See http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=199\n match = createDataNode(this.data, dataNode, ref);\n if (!match) {\n // For example if the node contains a .(...) then it isn't\n // findable.\n // TODO: remove this when .(...) is implemented.\n continue;\n }\n if (this._isConsumeData()) {\n match[$consumed] = true;\n }\n\n // Don't bind the value in newly created node because it's empty.\n this._setAndBind(child, match);\n continue;\n } else {\n if (this._isConsumeData()) {\n // Filter out consumed nodes.\n match = match.filter(node => !node[$consumed]);\n }\n if (match.length > max) {\n match = match.slice(0, max);\n } else if (match.length === 0) {\n match = null;\n }\n if (match && this._isConsumeData()) {\n match.forEach(node => {\n node[$consumed] = true;\n });\n }\n }\n } else {\n if (!child.name) {\n this._setAndBind(child, dataNode);\n continue;\n }\n if (this._isConsumeData()) {\n // In consumeData mode, search for the next node with the given name.\n // occurs.max gives us the max number of node to match.\n const matches = [];\n while (matches.length < max) {\n const found = this._findDataByNameToConsume(\n child.name,\n child[$hasSettableValue](),\n dataNode,\n global\n );\n\n if (!found) {\n break;\n }\n found[$consumed] = true;\n matches.push(found);\n }\n match = matches.length > 0 ? matches : null;\n } else {\n // If we've an empty merge, there are no reason\n // to make multiple bind so skip consumed nodes.\n match = dataNode[$getRealChildrenByNameIt](\n child.name,\n /* allTransparent = */ false,\n /* skipConsumed = */ this.emptyMerge\n ).next().value;\n if (!match) {\n // If there is no match (no data) and `min === 0` then\n // the container is entirely excluded.\n // https://www.pdfa.org/norm-refs/XFA-3_3.pdf#G12.1428332\n if (min === 0) {\n uselessNodes.push(child);\n continue;\n }\n // We're in matchTemplate mode so create a node in data to reflect\n // what we've in template.\n const nsId =\n dataNode[$namespaceId] === NS_DATASETS\n ? -1\n : dataNode[$namespaceId];\n match = child[$data] = new XmlObject(nsId, child.name);\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n dataNode[$appendChild](match);\n\n // Don't bind the value in newly created node because it's empty.\n this._setAndBind(child, match);\n continue;\n }\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n match = [match];\n }\n }\n\n if (match) {\n this._bindOccurrences(child, match, picture);\n } else if (min > 0) {\n this._setAndBind(child, dataNode);\n } else {\n uselessNodes.push(child);\n }\n }\n\n uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\n }\n}\n\nexport { Binder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $addHTML,\n $appendChild,\n $childrenToHTML,\n $clean,\n $cleanPage,\n $content,\n $data,\n $extra,\n $finalize,\n $flushHTML,\n $getAvailableSpace,\n $getChildren,\n $getContainedChildren,\n $getExtra,\n $getNextPage,\n $getParent,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $hasSettableValue,\n $ids,\n $isBindable,\n $isCDATAXml,\n $isSplittable,\n $isThereMoreWidth,\n $isTransparent,\n $isUsable,\n $namespaceId,\n $nodeName,\n $onChild,\n $onText,\n $popPara,\n $pushPara,\n $removeChild,\n $searchNode,\n $setSetAttributes,\n $setValue,\n $tabIndex,\n $text,\n $toHTML,\n $toPages,\n $toStyle,\n $uid,\n ContentObject,\n Option01,\n OptionObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n addHTML,\n checkDimensions,\n flushHTML,\n getAvailableSpace,\n} from \"./layout.js\";\nimport {\n computeBbox,\n createWrapper,\n fixDimensions,\n fixTextIndent,\n fixURL,\n isPrintOnly,\n layoutClass,\n layoutNode,\n measureToString,\n setAccess,\n setFontFamily,\n setMinMaxDimensions,\n setPara,\n toStyle,\n} from \"./html_utils.js\";\nimport {\n getBBox,\n getColor,\n getFloat,\n getInteger,\n getKeyword,\n getMeasurement,\n getRatio,\n getRelevant,\n getStringOption,\n HTMLResult,\n} from \"./utils.js\";\nimport { stringToBytes, Util, warn } from \"../../shared/util.js\";\nimport { getMetrics } from \"./fonts.js\";\nimport { recoverJsURL } from \"../core_utils.js\";\nimport { searchNode } from \"./som.js\";\n\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\n// In case of lr-tb (and rl-tb) layouts, we try:\n// - to put the container at the end of a line\n// - and if it fails we try on the next line.\n// If both tries failed then it's up to the parent\n// to handle the situation.\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\n\n// It's possible to have a bug in the layout and so as\n// a consequence we could loop for ever in Template::toHTML()\n// so in order to avoid that (and avoid a OOM crash) we break\n// the loop after having MAX_EMPTY_PAGES empty pages.\nconst MAX_EMPTY_PAGES = 3;\n\n// Default value to start with for the tabIndex property.\nconst DEFAULT_TAB_INDEX = 5000;\n\nconst HEADING_PATTERN = /^H(\\d+)$/;\n\n// Allowed mime types for images\nconst MIMES = new Set([\n \"image/gif\",\n \"image/jpeg\",\n \"image/jpg\",\n \"image/pjpeg\",\n \"image/png\",\n \"image/apng\",\n \"image/x-png\",\n \"image/bmp\",\n \"image/x-ms-bmp\",\n \"image/tiff\",\n \"image/tif\",\n \"application/octet-stream\",\n]);\n\nconst IMAGES_HEADERS = [\n [[0x42, 0x4d], \"image/bmp\"],\n [[0xff, 0xd8, 0xff], \"image/jpeg\"],\n [[0x49, 0x49, 0x2a, 0x00], \"image/tiff\"],\n [[0x4d, 0x4d, 0x00, 0x2a], \"image/tiff\"],\n [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \"image/gif\"],\n [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \"image/png\"],\n];\n\nfunction getBorderDims(node) {\n if (!node || !node.border) {\n return { w: 0, h: 0 };\n }\n\n const borderExtra = node.border[$getExtra]();\n if (!borderExtra) {\n return { w: 0, h: 0 };\n }\n\n return {\n w:\n borderExtra.widths[0] +\n borderExtra.widths[2] +\n borderExtra.insets[0] +\n borderExtra.insets[2],\n h:\n borderExtra.widths[1] +\n borderExtra.widths[3] +\n borderExtra.insets[1] +\n borderExtra.insets[3],\n };\n}\n\nfunction hasMargin(node) {\n return (\n node.margin &&\n (node.margin.topInset ||\n node.margin.rightInset ||\n node.margin.bottomInset ||\n node.margin.leftInset)\n );\n}\n\nfunction _setValue(templateNode, value) {\n if (!templateNode.value) {\n const nodeValue = new Value({});\n templateNode[$appendChild](nodeValue);\n templateNode.value = nodeValue;\n }\n templateNode.value[$setValue](value);\n}\n\nfunction* getContainedChildren(node) {\n for (const child of node[$getChildren]()) {\n if (child instanceof SubformSet) {\n yield* child[$getContainedChildren]();\n continue;\n }\n yield child;\n }\n}\n\nfunction setTabIndex(node) {\n while (node) {\n if (!node.traversal) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n\n if (node[$tabIndex]) {\n return;\n }\n\n let next = null;\n for (const child of node.traversal[$getChildren]()) {\n if (child.operation === \"next\") {\n next = child;\n break;\n }\n }\n\n if (!next || !next.ref) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n\n const root = node[$getTemplateRoot]();\n node[$tabIndex] = ++root[$tabIndex];\n\n const ref = root[$searchNode](next.ref, node);\n if (!ref) {\n return;\n }\n\n node = ref[0];\n }\n}\n\nfunction applyAssist(obj, attributes) {\n const assist = obj.assist;\n if (assist) {\n const assistTitle = assist[$toHTML]();\n if (assistTitle) {\n attributes.title = assistTitle;\n }\n const role = assist.role;\n const match = role.match(HEADING_PATTERN);\n if (match) {\n const ariaRole = \"heading\";\n const ariaLevel = match[1];\n attributes.role = ariaRole;\n attributes[\"aria-level\"] = ariaLevel;\n }\n }\n // XXX: We could end up in a situation where the obj has a heading role and\n // is also a table. For now prioritize the table role.\n if (obj.layout === \"table\") {\n attributes.role = \"table\";\n } else if (obj.layout === \"row\") {\n attributes.role = \"row\";\n } else {\n const parent = obj[$getParent]();\n if (parent.layout === \"row\") {\n if (parent.assist && parent.assist.role === \"TH\") {\n attributes.role = \"columnheader\";\n } else {\n attributes.role = \"cell\";\n }\n }\n }\n}\n\nfunction ariaLabel(obj) {\n if (!obj.assist) {\n return null;\n }\n const assist = obj.assist;\n if (assist.speak && assist.speak[$content] !== \"\") {\n return assist.speak[$content];\n }\n if (assist.toolTip) {\n return assist.toolTip[$content];\n }\n // TODO: support finding the related caption element. See xfa_bug1718037.pdf\n // for an example.\n return null;\n}\n\nfunction valueToHtml(value) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: Object.create(null),\n },\n children: [\n {\n name: \"span\",\n attributes: {\n style: Object.create(null),\n },\n value,\n },\n ],\n });\n}\n\nfunction setFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === null) {\n root[$extra].firstUnsplittable = node;\n root[$extra].noLayoutFailure = true;\n }\n}\n\nfunction unsetFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === node) {\n root[$extra].noLayoutFailure = false;\n }\n}\n\nfunction handleBreak(node) {\n if (node[$extra]) {\n return false;\n }\n\n node[$extra] = Object.create(null);\n\n if (node.targetType === \"auto\") {\n return false;\n }\n\n const root = node[$getTemplateRoot]();\n let target = null;\n if (node.target) {\n target = root[$searchNode](node.target, node[$getParent]());\n if (!target) {\n return false;\n }\n target = target[0];\n }\n\n const { currentPageArea, currentContentArea } = root[$extra];\n\n if (node.targetType === \"pageArea\") {\n if (!(target instanceof PageArea)) {\n target = null;\n }\n\n if (node.startNew) {\n node[$extra].target = target || currentPageArea;\n return true;\n } else if (target && target !== currentPageArea) {\n node[$extra].target = target;\n return true;\n }\n\n return false;\n }\n\n if (!(target instanceof ContentArea)) {\n target = null;\n }\n\n const pageArea = target && target[$getParent]();\n\n let index;\n let nextPageArea = pageArea;\n if (node.startNew) {\n // startNew === 1 so we must create a new container (pageArea or\n // contentArea).\n if (target) {\n const contentAreas = pageArea.contentArea.children;\n const indexForCurrent = contentAreas.indexOf(currentContentArea);\n const indexForTarget = contentAreas.indexOf(target);\n if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) {\n // The next container is after the current container so\n // we can stay on the same page.\n nextPageArea = null;\n }\n index = indexForTarget - 1;\n } else {\n index = currentPageArea.contentArea.children.indexOf(currentContentArea);\n }\n } else if (target && target !== currentContentArea) {\n const contentAreas = pageArea.contentArea.children;\n index = contentAreas.indexOf(target) - 1;\n nextPageArea = pageArea === currentPageArea ? null : pageArea;\n } else {\n return false;\n }\n\n node[$extra].target = nextPageArea;\n node[$extra].index = index;\n return true;\n}\n\nfunction handleOverflow(node, extraNode, space) {\n const root = node[$getTemplateRoot]();\n const saved = root[$extra].noLayoutFailure;\n const savedMethod = extraNode[$getSubformParent];\n\n // Replace $getSubformParent to emulate that extraNode is just\n // under node.\n extraNode[$getSubformParent] = () => node;\n\n root[$extra].noLayoutFailure = true;\n const res = extraNode[$toHTML](space);\n node[$addHTML](res.html, res.bbox);\n root[$extra].noLayoutFailure = saved;\n extraNode[$getSubformParent] = savedMethod;\n}\n\nclass AppearanceFilter extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"appearanceFilter\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Arc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"arc\", /* hasChildren = */ true);\n this.circular = getInteger({\n data: attributes.circular,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.startAngle = getFloat({\n data: attributes.startAngle,\n defaultValue: 0,\n validate: x => true,\n });\n this.sweepAngle = getFloat({\n data: attributes.sweepAngle,\n defaultValue: 360,\n validate: x => true,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n this.fill = null;\n }\n\n [$toHTML]() {\n const edge = this.edge ? this.edge : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(\n edge.presence === \"visible\" ? edge.thickness : 0\n );\n style.stroke = edgeStyle.color;\n let arc;\n const attributes = {\n xmlns: SVG_NS,\n style: {\n width: \"100%\",\n height: \"100%\",\n overflow: \"visible\",\n },\n };\n\n if (this.sweepAngle === 360) {\n arc = {\n name: \"ellipse\",\n attributes: {\n xmlns: SVG_NS,\n cx: \"50%\",\n cy: \"50%\",\n rx: \"50%\",\n ry: \"50%\",\n style,\n },\n };\n } else {\n const startAngle = (this.startAngle * Math.PI) / 180;\n const sweepAngle = (this.sweepAngle * Math.PI) / 180;\n const largeArc = this.sweepAngle > 180 ? 1 : 0;\n const [x1, y1, x2, y2] = [\n 50 * (1 + Math.cos(startAngle)),\n 50 * (1 - Math.sin(startAngle)),\n 50 * (1 + Math.cos(startAngle + sweepAngle)),\n 50 * (1 - Math.sin(startAngle + sweepAngle)),\n ];\n\n arc = {\n name: \"path\",\n attributes: {\n xmlns: SVG_NS,\n d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\n vectorEffect: \"non-scaling-stroke\",\n style,\n },\n };\n\n Object.assign(attributes, {\n viewBox: \"0 0 100 100\",\n preserveAspectRatio: \"none\",\n });\n }\n\n const svg = {\n name: \"svg\",\n children: [arc],\n attributes,\n };\n\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass Area extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"area\", /* hasChildren = */ true);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n this.area = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$isTransparent]() {\n return true;\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$addHTML](html, bbox) {\n const [x, y, w, h] = bbox;\n this[$extra].width = Math.max(this[$extra].width, x + w);\n this[$extra].height = Math.max(this[$extra].height, y + h);\n\n this[$extra].children.push(html);\n }\n\n [$getAvailableSpace]() {\n return this[$extra].availableSpace;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"position\");\n const attributes = {\n style,\n id: this[$uid],\n class: [\"xfaArea\"],\n };\n\n if (isPrintOnly(this)) {\n attributes.class.push(\"xfaPrintOnly\");\n }\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const children = [];\n this[$extra] = {\n children,\n width: 0,\n height: 0,\n availableSpace,\n };\n\n const result = this[$childrenToHTML]({\n filter: new Set([\n \"area\",\n \"draw\",\n \"field\",\n \"exclGroup\",\n \"subform\",\n \"subformSet\",\n ]),\n include: true,\n });\n\n if (!result.success) {\n if (result.isBreak()) {\n return result;\n }\n // Nothing to propose for the element which doesn't fit the\n // available space.\n delete this[$extra];\n return HTMLResult.FAILURE;\n }\n\n style.width = measureToString(this[$extra].width);\n style.height = measureToString(this[$extra].height);\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\n delete this[$extra];\n\n return HTMLResult.success(html, bbox);\n }\n}\n\nclass Assist extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"assist\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.role = attributes.role || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.speak = null;\n this.toolTip = null;\n }\n\n [$toHTML]() {\n return this.toolTip && this.toolTip[$content]\n ? this.toolTip[$content]\n : null;\n }\n}\n\nclass Barcode extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"barcode\", /* hasChildren = */ true);\n this.charEncoding = getKeyword({\n data: attributes.charEncoding\n ? attributes.charEncoding.toLowerCase()\n : \"\",\n defaultValue: \"\",\n validate: k =>\n [\n \"utf-8\",\n \"big-five\",\n \"fontspecific\",\n \"gbk\",\n \"gb-18030\",\n \"gb-2312\",\n \"ksc-5601\",\n \"none\",\n \"shift-jis\",\n \"ucs-2\",\n \"utf-16\",\n ].includes(k) || k.match(/iso-8859-\\d{2}/),\n });\n this.checksum = getStringOption(attributes.checksum, [\n \"none\",\n \"1mod10\",\n \"1mod10_1mod11\",\n \"2mod10\",\n \"auto\",\n ]);\n this.dataColumnCount = getInteger({\n data: attributes.dataColumnCount,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.dataLength = getInteger({\n data: attributes.dataLength,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.dataPrep = getStringOption(attributes.dataPrep, [\n \"none\",\n \"flateCompress\",\n ]);\n this.dataRowCount = getInteger({\n data: attributes.dataRowCount,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.endChar = attributes.endChar || \"\";\n this.errorCorrectionLevel = getInteger({\n data: attributes.errorCorrectionLevel,\n defaultValue: -1,\n validate: x => x >= 0 && x <= 8,\n });\n this.id = attributes.id || \"\";\n this.moduleHeight = getMeasurement(attributes.moduleHeight, \"5mm\");\n this.moduleWidth = getMeasurement(attributes.moduleWidth, \"0.25mm\");\n this.printCheckDigit = getInteger({\n data: attributes.printCheckDigit,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.rowColumnRatio = getRatio(attributes.rowColumnRatio);\n this.startChar = attributes.startChar || \"\";\n this.textLocation = getStringOption(attributes.textLocation, [\n \"below\",\n \"above\",\n \"aboveEmbedded\",\n \"belowEmbedded\",\n \"none\",\n ]);\n this.truncate = getInteger({\n data: attributes.truncate,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.type = getStringOption(\n attributes.type ? attributes.type.toLowerCase() : \"\",\n [\n \"aztec\",\n \"codabar\",\n \"code2of5industrial\",\n \"code2of5interleaved\",\n \"code2of5matrix\",\n \"code2of5standard\",\n \"code3of9\",\n \"code3of9extended\",\n \"code11\",\n \"code49\",\n \"code93\",\n \"code128\",\n \"code128a\",\n \"code128b\",\n \"code128c\",\n \"code128sscc\",\n \"datamatrix\",\n \"ean8\",\n \"ean8add2\",\n \"ean8add5\",\n \"ean13\",\n \"ean13add2\",\n \"ean13add5\",\n \"ean13pwcd\",\n \"fim\",\n \"logmars\",\n \"maxicode\",\n \"msi\",\n \"pdf417\",\n \"pdf417macro\",\n \"plessey\",\n \"postauscust2\",\n \"postauscust3\",\n \"postausreplypaid\",\n \"postausstandard\",\n \"postukrm4scc\",\n \"postusdpbc\",\n \"postusimb\",\n \"postusstandard\",\n \"postus5zip\",\n \"qrcode\",\n \"rfid\",\n \"rss14\",\n \"rss14expanded\",\n \"rss14limited\",\n \"rss14stacked\",\n \"rss14stackedomni\",\n \"rss14truncated\",\n \"telepen\",\n \"ucc128\",\n \"ucc128random\",\n \"ucc128sscc\",\n \"upca\",\n \"upcaadd2\",\n \"upcaadd5\",\n \"upcapwcd\",\n \"upce\",\n \"upceadd2\",\n \"upceadd5\",\n \"upcean2\",\n \"upcean5\",\n \"upsmaxicode\",\n ]\n );\n this.upsMode = getStringOption(attributes.upsMode, [\n \"usCarrier\",\n \"internationalCarrier\",\n \"secureSymbol\",\n \"standardSymbol\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio);\n this.encrypt = null;\n this.extras = null;\n }\n}\n\nclass Bind extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bind\", /* hasChildren = */ true);\n this.match = getStringOption(attributes.match, [\n \"once\",\n \"dataRef\",\n \"global\",\n \"none\",\n ]);\n this.ref = attributes.ref || \"\";\n this.picture = null;\n }\n}\n\nclass BindItems extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bindItems\");\n this.connection = attributes.connection || \"\";\n this.labelRef = attributes.labelRef || \"\";\n this.ref = attributes.ref || \"\";\n this.valueRef = attributes.valueRef || \"\";\n }\n}\n\nclass Bookend extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bookend\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass BooleanElement extends Option01 {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"boolean\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] === 1 ? \"1\" : \"0\");\n }\n}\n\nclass Border extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"border\", /* hasChildren = */ true);\n this.break = getStringOption(attributes.break, [\"close\", \"open\"]);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.extras = null;\n this.fill = null;\n this.margin = null;\n }\n\n [$getExtra]() {\n if (!this[$extra]) {\n const edges = this.edge.children.slice();\n if (edges.length < 4) {\n const defaultEdge = edges[edges.length - 1] || new Edge({});\n for (let i = edges.length; i < 4; i++) {\n edges.push(defaultEdge);\n }\n }\n\n const widths = edges.map(edge => edge.thickness);\n const insets = [0, 0, 0, 0];\n if (this.margin) {\n insets[0] = this.margin.topInset;\n insets[1] = this.margin.rightInset;\n insets[2] = this.margin.bottomInset;\n insets[3] = this.margin.leftInset;\n }\n this[$extra] = { widths, insets, edges };\n }\n return this[$extra];\n }\n\n [$toStyle]() {\n // TODO: incomplete (hand).\n const { edges } = this[$getExtra]();\n const edgeStyles = edges.map(node => {\n const style = node[$toStyle]();\n style.color = style.color || \"#000000\";\n return style;\n });\n\n const style = Object.create(null);\n if (this.margin) {\n Object.assign(style, this.margin[$toStyle]());\n }\n\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n }\n\n if (this.corner.children.some(node => node.radius !== 0)) {\n const cornerStyles = this.corner.children.map(node => node[$toStyle]());\n if (cornerStyles.length === 2 || cornerStyles.length === 3) {\n const last = cornerStyles[cornerStyles.length - 1];\n for (let i = cornerStyles.length; i < 4; i++) {\n cornerStyles.push(last);\n }\n }\n\n style.borderRadius = cornerStyles.map(s => s.radius).join(\" \");\n }\n\n switch (this.presence) {\n case \"invisible\":\n case \"hidden\":\n style.borderStyle = \"\";\n break;\n case \"inactive\":\n style.borderStyle = \"none\";\n break;\n default:\n style.borderStyle = edgeStyles.map(s => s.style).join(\" \");\n break;\n }\n\n style.borderWidth = edgeStyles.map(s => s.width).join(\" \");\n style.borderColor = edgeStyles.map(s => s.color).join(\" \");\n\n return style;\n }\n}\n\nclass Break extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"break\", /* hasChildren = */ true);\n this.after = getStringOption(attributes.after, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n \"pageEven\",\n \"pageOdd\",\n ]);\n this.afterTarget = attributes.afterTarget || \"\";\n this.before = getStringOption(attributes.before, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n \"pageEven\",\n \"pageOdd\",\n ]);\n this.beforeTarget = attributes.beforeTarget || \"\";\n this.bookendLeader = attributes.bookendLeader || \"\";\n this.bookendTrailer = attributes.bookendTrailer || \"\";\n this.id = attributes.id || \"\";\n this.overflowLeader = attributes.overflowLeader || \"\";\n this.overflowTarget = attributes.overflowTarget || \"\";\n this.overflowTrailer = attributes.overflowTrailer || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass BreakAfter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakAfter\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n ]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n}\n\nclass BreakBefore extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakBefore\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n ]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n\n [$toHTML](availableSpace) {\n this[$extra] = {};\n return HTMLResult.FAILURE;\n }\n}\n\nclass Button extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"button\", /* hasChildren = */ true);\n this.highlight = getStringOption(attributes.highlight, [\n \"inverted\",\n \"none\",\n \"outline\",\n \"push\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: highlight.\n\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const htmlButton = {\n name: \"button\",\n attributes: {\n id: this[$uid],\n class: [\"xfaButton\"],\n style: {},\n },\n children: [],\n };\n\n for (const event of grandpa.event.children) {\n // if (true) break;\n if (event.activity !== \"click\" || !event.script) {\n continue;\n }\n const jsURL = recoverJsURL(event.script[$content]);\n if (!jsURL) {\n continue;\n }\n const href = fixURL(jsURL.url);\n if (!href) {\n continue;\n }\n\n // we've an url so generate a <a>\n htmlButton.children.push({\n name: \"a\",\n attributes: {\n id: \"link\" + this[$uid],\n href,\n newWindow: jsURL.newWindow,\n class: [\"xfaLink\"],\n style: {},\n },\n children: [],\n });\n }\n\n return HTMLResult.success(htmlButton);\n }\n}\n\nclass Calculate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"calculate\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.override = getStringOption(attributes.override, [\n \"disabled\",\n \"error\",\n \"ignore\",\n \"warning\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.script = null;\n }\n}\n\nclass Caption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"caption\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.placement = getStringOption(attributes.placement, [\n \"left\",\n \"bottom\",\n \"inline\",\n \"right\",\n \"top\",\n ]);\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.reserve = Math.ceil(getMeasurement(attributes.reserve));\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.font = null;\n this.margin = null;\n this.para = null;\n this.value = null;\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$getExtra](availableSpace) {\n if (!this[$extra]) {\n let { width, height } = availableSpace;\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width = this.reserve <= 0 ? width : this.reserve;\n break;\n case \"top\":\n case \"bottom\":\n height = this.reserve <= 0 ? height : this.reserve;\n break;\n }\n\n this[$extra] = layoutNode(this, { width, height });\n }\n return this[$extra];\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n if (!this.value) {\n return HTMLResult.EMPTY;\n }\n\n this[$pushPara]();\n const value = this.value[$toHTML](availableSpace).html;\n\n if (!value) {\n this[$popPara]();\n return HTMLResult.EMPTY;\n }\n\n const savedReserve = this.reserve;\n if (this.reserve <= 0) {\n const { w, h } = this[$getExtra](availableSpace);\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n this.reserve = w;\n break;\n case \"top\":\n case \"bottom\":\n this.reserve = h;\n break;\n }\n }\n\n const children = [];\n if (typeof value === \"string\") {\n children.push({\n name: \"#text\",\n value,\n });\n } else {\n children.push(value);\n }\n\n const style = toStyle(this, \"font\", \"margin\", \"visibility\");\n switch (this.placement) {\n case \"left\":\n case \"right\":\n if (this.reserve > 0) {\n style.width = measureToString(this.reserve);\n }\n break;\n case \"top\":\n case \"bottom\":\n if (this.reserve > 0) {\n style.height = measureToString(this.reserve);\n }\n break;\n }\n\n setPara(this, null, value);\n this[$popPara]();\n\n this.reserve = savedReserve;\n\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style,\n class: [\"xfaCaption\"],\n },\n children,\n });\n }\n}\n\nclass Certificate extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificate\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Certificates extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificates\", /* hasChildren = */ true);\n this.credentialServerPolicy = getStringOption(\n attributes.credentialServerPolicy,\n [\"optional\", \"required\"]\n );\n this.id = attributes.id || \"\";\n this.url = attributes.url || \"\";\n this.urlPolicy = attributes.urlPolicy || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryption = null;\n this.issuers = null;\n this.keyUsage = null;\n this.oids = null;\n this.signing = null;\n this.subjectDNs = null;\n }\n}\n\nclass CheckButton extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"checkButton\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.mark = getStringOption(attributes.mark, [\n \"default\",\n \"check\",\n \"circle\",\n \"cross\",\n \"diamond\",\n \"square\",\n \"star\",\n ]);\n this.shape = getStringOption(attributes.shape, [\"square\", \"round\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: border, shape and mark.\n\n const style = toStyle(\"margin\");\n const size = measureToString(this.size);\n\n style.width = style.height = size;\n\n let type;\n let className;\n let groupId;\n const field = this[$getParent]()[$getParent]();\n const items =\n (field.items.children.length &&\n field.items.children[0][$toHTML]().html) ||\n [];\n const exportedValue = {\n on: (items[0] !== undefined ? items[0] : \"on\").toString(),\n off: (items[1] !== undefined ? items[1] : \"off\").toString(),\n };\n\n const value = (field.value && field.value[$text]()) || \"off\";\n const checked = value === exportedValue.on || undefined;\n const container = field[$getSubformParent]();\n const fieldId = field[$uid];\n let dataId;\n\n if (container instanceof ExclGroup) {\n groupId = container[$uid];\n type = \"radio\";\n className = \"xfaRadio\";\n dataId = (container[$data] && container[$data][$uid]) || container[$uid];\n } else {\n type = \"checkbox\";\n className = \"xfaCheckbox\";\n dataId = (field[$data] && field[$data][$uid]) || field[$uid];\n }\n\n const input = {\n name: \"input\",\n attributes: {\n class: [className],\n style,\n fieldId,\n dataId,\n type,\n checked,\n xfaOn: exportedValue.on,\n xfaOff: exportedValue.off,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n if (groupId) {\n input.attributes.name = groupId;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [input],\n });\n }\n}\n\nclass ChoiceList extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"choiceList\", /* hasChildren = */ true);\n this.commitOn = getStringOption(attributes.commitOn, [\"select\", \"exit\"]);\n this.id = attributes.id || \"\";\n this.open = getStringOption(attributes.open, [\n \"userControl\",\n \"always\",\n \"multiSelect\",\n \"onEntry\",\n ]);\n this.textEntry = getInteger({\n data: attributes.textEntry,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"margin\");\n const ui = this[$getParent]();\n const field = ui[$getParent]();\n const fontSize = (field.font && field.font.size) || 10;\n const optionStyle = {\n fontSize: `calc(${fontSize}px * var(--zoom-factor))`,\n };\n const children = [];\n\n if (field.items.children.length > 0) {\n const items = field.items;\n let displayedIndex = 0;\n let saveIndex = 0;\n if (items.children.length === 2) {\n displayedIndex = items.children[0].save;\n saveIndex = 1 - displayedIndex;\n }\n const displayed = items.children[displayedIndex][$toHTML]().html;\n const values = items.children[saveIndex][$toHTML]().html;\n\n let selected = false;\n const value = (field.value && field.value[$text]()) || \"\";\n for (let i = 0, ii = displayed.length; i < ii; i++) {\n const option = {\n name: \"option\",\n attributes: {\n value: values[i] || displayed[i],\n style: optionStyle,\n },\n value: displayed[i],\n };\n if (values[i] === value) {\n option.attributes.selected = selected = true;\n }\n children.push(option);\n }\n\n if (!selected) {\n children.splice(0, 0, {\n name: \"option\",\n attributes: {\n hidden: true,\n selected: true,\n },\n value: \" \",\n });\n }\n }\n\n const selectAttributes = {\n class: [\"xfaSelect\"],\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n style,\n \"aria-label\": ariaLabel(field),\n };\n\n if (this.open === \"multiSelect\") {\n selectAttributes.multiple = true;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [\n {\n name: \"select\",\n children,\n attributes: selectAttributes,\n },\n ],\n });\n }\n}\n\nclass Color extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"color\", /* hasChildren = */ true);\n this.cSpace = getStringOption(attributes.cSpace, [\"SRGB\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.value = attributes.value ? getColor(attributes.value) : \"\";\n this.extras = null;\n }\n\n [$hasSettableValue]() {\n return false;\n }\n\n [$toStyle]() {\n return this.value\n ? Util.makeHexColor(this.value.r, this.value.g, this.value.b)\n : null;\n }\n}\n\nclass Comb extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"comb\");\n this.id = attributes.id || \"\";\n this.numberOfCells = getInteger({\n data: attributes.numberOfCells,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Connect extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"connect\", /* hasChildren = */ true);\n this.connection = attributes.connection || \"\";\n this.id = attributes.id || \"\";\n this.ref = attributes.ref || \"\";\n this.usage = getStringOption(attributes.usage, [\n \"exportAndImport\",\n \"exportOnly\",\n \"importOnly\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.picture = null;\n }\n}\n\nclass ContentArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"contentArea\", /* hasChildren = */ true);\n this.h = getMeasurement(attributes.h);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = getMeasurement(attributes.w);\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const left = measureToString(this.x);\n const top = measureToString(this.y);\n\n const style = {\n left,\n top,\n width: measureToString(this.w),\n height: measureToString(this.h),\n };\n\n const classNames = [\"xfaContentarea\"];\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {\n style,\n class: classNames,\n id: this[$uid],\n },\n });\n }\n}\n\nclass Corner extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"corner\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.inverted = getInteger({\n data: attributes.inverted,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.join = getStringOption(attributes.join, [\"square\", \"round\"]);\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.radius = getMeasurement(attributes.radius);\n this.stroke = getStringOption(attributes.stroke, [\n \"solid\",\n \"dashDot\",\n \"dashDotDot\",\n \"dashed\",\n \"dotted\",\n \"embossed\",\n \"etched\",\n \"lowered\",\n \"raised\",\n ]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle]() {\n // In using CSS it's only possible to handle radius\n // (at least with basic css).\n // Is there a real use (interest ?) of all these properties ?\n // Maybe it's possible to implement them using svg and border-image...\n // TODO: implement all the missing properties.\n const style = toStyle(this, \"visibility\");\n style.radius = measureToString(this.join === \"square\" ? 0 : this.radius);\n return style;\n }\n}\n\nclass DateElement extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"date\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass DateTime extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTime\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass DateTimeEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTimeEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.picker = getStringOption(attributes.picker, [\"host\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n // When the picker is host we should use type=date for the input\n // but we need to put the buttons outside the text-field.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Decimal extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"decimal\");\n this.fracDigits = getInteger({\n data: attributes.fracDigits,\n defaultValue: 2,\n validate: x => true,\n });\n this.id = attributes.id || \"\";\n this.leadDigits = getInteger({\n data: attributes.leadDigits,\n defaultValue: -1,\n validate: x => true,\n });\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass DefaultUi extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"defaultUi\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass Desc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"desc\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\n\nclass DigestMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethod\", [\n \"\",\n \"SHA1\",\n \"SHA256\",\n \"SHA512\",\n \"RIPEMD160\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass DigestMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethods\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.digestMethod = new XFAObjectArray();\n }\n}\n\nclass Draw extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"draw\", /* hasChildren = */ true);\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.border = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.value = null;\n this.setProperty = new XFAObjectArray();\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n\n fixDimensions(this);\n this[$pushPara]();\n\n // If at least one dimension is missing and we've a text\n // then we can guess it in laying out the text.\n const savedW = this.w;\n const savedH = this.h;\n const { w, h, isBroken } = layoutNode(this, availableSpace);\n if (w && this.w === \"\") {\n // If the parent layout is lr-tb with a w=100 and we already have a child\n // which takes 90 on the current line.\n // If we have a text with a length (in px) equal to 100 then it'll be\n // splitted into almost 10 chunks: so it won't be nice.\n // So if we've potentially more width to provide in some parent containers\n // let's increase it to give a chance to have a better rendering.\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n\n this.w = w;\n }\n if (h && this.h === \"\") {\n this.h = h;\n }\n\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n\n const style = toStyle(\n this,\n \"font\",\n \"hAlign\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"rotate\",\n \"anchorType\",\n \"border\",\n \"margin\"\n );\n\n setMinMaxDimensions(this, style);\n\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n\n const classNames = [\"xfaDraw\"];\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const attributes = {\n style,\n id: this[$uid],\n class: classNames,\n };\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const html = {\n name: \"div\",\n attributes,\n children: [],\n };\n\n applyAssist(this, attributes);\n\n const bbox = computeBbox(this, html, availableSpace);\n\n const value = this.value ? this.value[$toHTML](availableSpace).html : null;\n if (value === null) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n html.children.push(value);\n setPara(this, style, value);\n\n this.w = savedW;\n this.h = savedH;\n\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Edge extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"edge\", /* hasChildren = */ true);\n this.cap = getStringOption(attributes.cap, [\"square\", \"butt\", \"round\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.stroke = getStringOption(attributes.stroke, [\n \"solid\",\n \"dashDot\",\n \"dashDotDot\",\n \"dashed\",\n \"dotted\",\n \"embossed\",\n \"etched\",\n \"lowered\",\n \"raised\",\n ]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle]() {\n // TODO: dashDot & dashDotDot.\n const style = toStyle(this, \"visibility\");\n Object.assign(style, {\n linecap: this.cap,\n width: measureToString(this.thickness),\n color: this.color ? this.color[$toStyle]() : \"#000000\",\n style: \"\",\n });\n\n if (this.presence !== \"visible\") {\n style.style = \"none\";\n } else {\n switch (this.stroke) {\n case \"solid\":\n style.style = \"solid\";\n break;\n case \"dashDot\":\n style.style = \"dashed\";\n break;\n case \"dashDotDot\":\n style.style = \"dashed\";\n break;\n case \"dashed\":\n style.style = \"dashed\";\n break;\n case \"dotted\":\n style.style = \"dotted\";\n break;\n case \"embossed\":\n style.style = \"ridge\";\n break;\n case \"etched\":\n style.style = \"groove\";\n break;\n case \"lowered\":\n style.style = \"inset\";\n break;\n case \"raised\":\n style.style = \"outset\";\n break;\n }\n }\n return style;\n }\n}\n\nclass Encoding extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encoding\", [\n \"adbe.x509.rsa_sha1\",\n \"adbe.pkcs7.detached\",\n \"adbe.pkcs7.sha1\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Encodings extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encodings\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encoding = new XFAObjectArray();\n }\n}\n\nclass Encrypt extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encrypt\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = null;\n }\n}\n\nclass EncryptData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptData\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"encrypt\",\n \"decrypt\",\n ]);\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\n\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryption\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass EncryptionMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethod\", [\n \"\",\n \"AES256-CBC\",\n \"TRIPLEDES-CBC\",\n \"AES128-CBC\",\n \"AES192-CBC\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass EncryptionMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethods\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryptionMethod = new XFAObjectArray();\n }\n}\n\nclass Event extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"event\", /* hasChildren = */ true);\n this.activity = getStringOption(attributes.activity, [\n \"click\",\n \"change\",\n \"docClose\",\n \"docReady\",\n \"enter\",\n \"exit\",\n \"full\",\n \"indexChange\",\n \"initialize\",\n \"mouseDown\",\n \"mouseEnter\",\n \"mouseExit\",\n \"mouseUp\",\n \"postExecute\",\n \"postOpen\",\n \"postPrint\",\n \"postSave\",\n \"postSign\",\n \"postSubmit\",\n \"preExecute\",\n \"preOpen\",\n \"prePrint\",\n \"preSave\",\n \"preSign\",\n \"preSubmit\",\n \"ready\",\n \"validationState\",\n ]);\n this.id = attributes.id || \"\";\n this.listen = getStringOption(attributes.listen, [\n \"refOnly\",\n \"refAndDescendents\",\n ]);\n this.name = attributes.name || \"\";\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n\n // One-of properties\n this.encryptData = null;\n this.execute = null;\n this.script = null;\n this.signData = null;\n this.submit = null;\n }\n}\n\nclass ExData extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exData\");\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.maxLength = getInteger({\n data: attributes.maxLength,\n defaultValue: -1,\n validate: x => x >= -1,\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\n \"none\",\n \"base64\",\n \"package\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$isCDATAXml]() {\n return this.contentType === \"text/html\";\n }\n\n [$onChild](child) {\n if (\n this.contentType === \"text/html\" &&\n child[$namespaceId] === NamespaceIds.xhtml.id\n ) {\n this[$content] = child;\n return true;\n }\n\n if (this.contentType === \"text/xml\") {\n this[$content] = child;\n return true;\n }\n\n return false;\n }\n\n [$toHTML](availableSpace) {\n if (this.contentType !== \"text/html\" || !this[$content]) {\n // TODO: fix other cases.\n return HTMLResult.EMPTY;\n }\n\n return this[$content][$toHTML](availableSpace);\n }\n}\n\nclass ExObject extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exObject\", /* hasChildren = */ true);\n this.archive = attributes.archive || \"\";\n this.classId = attributes.classId || \"\";\n this.codeBase = attributes.codeBase || \"\";\n this.codeType = attributes.codeType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\n\nclass ExclGroup extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exclGroup\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\n \"position\",\n \"lr-tb\",\n \"rl-row\",\n \"rl-tb\",\n \"row\",\n \"table\",\n \"tb\",\n ]);\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$hasSettableValue]() {\n return true;\n }\n\n [$setValue](value) {\n for (const field of this.field.children) {\n if (!field.value) {\n const nodeValue = new Value({});\n field[$appendChild](nodeValue);\n field.value = nodeValue;\n }\n\n field.value[$setValue](value);\n }\n }\n\n [$isThereMoreWidth]() {\n return (\n (this.layout.endsWith(\"-tb\") &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine > 0) ||\n this[$getParent]()[$isThereMoreWidth]()\n );\n }\n\n [$isSplittable]() {\n // We cannot cache the result here because the contentArea\n // can change.\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (\n parent.layout &&\n parent.layout.endsWith(\"-tb\") &&\n parent[$extra].numberInLine !== 0\n ) {\n // See comment in Subform::[$isSplittable] for an explanation.\n return false;\n }\n\n this[$extra]._isSplittable = true;\n return true;\n }\n\n [$flushHTML]() {\n return flushHTML(this);\n }\n\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (\n this.presence === \"hidden\" ||\n this.presence === \"inactive\" ||\n this.h === 0 ||\n this.w === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n fixDimensions(this);\n\n const children = [];\n const attributes = {\n id: this[$uid],\n class: [],\n };\n\n setAccess(this, attributes.class);\n\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\n }\n\n Object.assign(this[$extra], {\n children,\n attributes,\n attempt: 0,\n line: null,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height),\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0,\n });\n\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n const filter = new Set([\"field\"]);\n\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n\n const style = toStyle(\n this,\n \"anchorType\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"border\",\n \"margin\",\n \"hAlign\"\n );\n const classNames = [\"xfaExclgroup\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n attributes.style = style;\n attributes.class = classNames;\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n // If the layout is lr-tb then having attempt equals to\n // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n // on the next line so this on is empty.\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true,\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (\n isLrTb &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine === 0 &&\n !this[$getTemplateRoot]()[$extra].noLayoutFailure\n ) {\n // See comment in Subform::[$toHTML].\n this[$extra].attempt = maxRun;\n break;\n }\n }\n\n this[$popPara]();\n\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n\n if (this[$extra].attempt === maxRun) {\n if (!isSplittable) {\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n delete this[$extra];\n\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Execute extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"execute\");\n this.connection = attributes.connection || \"\";\n this.executeType = getStringOption(attributes.executeType, [\n \"import\",\n \"remerge\",\n ]);\n this.id = attributes.id || \"\";\n this.runAt = getStringOption(attributes.runAt, [\n \"client\",\n \"both\",\n \"server\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Extras extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"extras\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n // (Spec) The XFA template grammar defines the extras and desc elements,\n // which can be used to add human-readable or machine-readable\n // data to a template.\n}\n\nclass Field extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"field\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.format = null;\n // For a choice list, one list is used to have display entries\n // and the other for the exported values\n this.items = new XFAObjectArray(2);\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.validate = null;\n this.value = null;\n this.bindItems = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (!this.ui) {\n // It's allowed to not have an ui, specs say:\n // If the UI element contains no children or is not present,\n // the application chooses a default user interface for the\n // container, based on the type of the container's content.\n\n this.ui = new Ui({});\n this.ui[$globalData] = this[$globalData];\n this[$appendChild](this.ui);\n let node;\n\n // The items element can have 2 element max and\n // according to the items specs it's likely a good\n // way to guess the correct ui type.\n switch (this.items.children.length) {\n case 0:\n node = new TextEdit({});\n this.ui.textEdit = node;\n break;\n case 1:\n node = new CheckButton({});\n this.ui.checkButton = node;\n break;\n case 2:\n node = new ChoiceList({});\n this.ui.choiceList = node;\n break;\n }\n this.ui[$appendChild](node);\n }\n\n if (\n !this.ui ||\n this.presence === \"hidden\" ||\n this.presence === \"inactive\" ||\n this.h === 0 ||\n this.w === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n if (this.caption) {\n // Maybe we already tried to layout this field with\n // another availableSpace, so to avoid to use the cached\n // value just delete it.\n delete this.caption[$extra];\n }\n\n this[$pushPara]();\n\n const caption = this.caption\n ? this.caption[$toHTML](availableSpace).html\n : null;\n const savedW = this.w;\n const savedH = this.h;\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n let borderDims = null;\n if (this.w === \"\" || this.h === \"\") {\n let width = null;\n let height = null;\n\n let uiW = 0;\n let uiH = 0;\n if (this.ui.checkButton) {\n uiW = uiH = this.ui.checkButton.size;\n } else {\n const { w, h } = layoutNode(this, availableSpace);\n if (w !== null) {\n uiW = w;\n uiH = h;\n } else {\n uiH = getMetrics(this.font, /* real = */ true).lineNoGap;\n }\n }\n\n borderDims = getBorderDims(this.ui[$getExtra]());\n uiW += borderDims.w;\n uiH += borderDims.h;\n\n if (this.caption) {\n const { w, h, isBroken } = this.caption[$getExtra](availableSpace);\n // See comment in Draw::[$toHTML] to have an explanation\n // about this line.\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n\n width = w;\n height = h;\n\n switch (this.caption.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width += uiW;\n break;\n case \"top\":\n case \"bottom\":\n height += uiH;\n break;\n }\n } else {\n width = uiW;\n height = uiH;\n }\n\n if (width && this.w === \"\") {\n width += marginH;\n this.w = Math.min(\n this.maxW <= 0 ? Infinity : this.maxW,\n this.minW + 1 < width ? width : this.minW\n );\n }\n\n if (height && this.h === \"\") {\n height += marginV;\n this.h = Math.min(\n this.maxH <= 0 ? Infinity : this.maxH,\n this.minH + 1 < height ? height : this.minH\n );\n }\n }\n\n this[$popPara]();\n\n fixDimensions(this);\n\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n\n const style = toStyle(\n this,\n \"font\",\n \"dimensions\",\n \"position\",\n \"rotate\",\n \"anchorType\",\n \"presence\",\n \"margin\",\n \"hAlign\"\n );\n\n setMinMaxDimensions(this, style);\n\n const classNames = [\"xfaField\"];\n // If no font, font properties are inherited.\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const attributes = {\n style,\n id: this[$uid],\n class: classNames,\n };\n\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n\n setAccess(this, classNames);\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const children = [];\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n const borderStyle = this.border ? this.border[$toStyle]() : null;\n const bbox = computeBbox(this, html, availableSpace);\n const ui = this.ui[$toHTML]().html;\n if (!ui) {\n Object.assign(style, borderStyle);\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n if (this[$tabIndex]) {\n if (ui.children && ui.children[0]) {\n ui.children[0].attributes.tabindex = this[$tabIndex];\n } else {\n ui.attributes.tabindex = this[$tabIndex];\n }\n }\n\n if (!ui.attributes.style) {\n ui.attributes.style = Object.create(null);\n }\n\n let aElement = null;\n\n if (this.ui.button) {\n if (ui.children.length === 1) {\n [aElement] = ui.children.splice(0, 1);\n }\n Object.assign(ui.attributes.style, borderStyle);\n } else {\n Object.assign(style, borderStyle);\n }\n\n children.push(ui);\n\n if (this.value) {\n if (this.ui.imageEdit) {\n ui.children.push(this.value[$toHTML]().html);\n } else if (!this.ui.button) {\n let value = \"\";\n if (this.value.exData) {\n value = this.value.exData[$text]();\n } else if (this.value.text) {\n value = this.value.text[$getExtra]();\n } else {\n const htmlValue = this.value[$toHTML]().html;\n if (htmlValue !== null) {\n value = htmlValue.children[0].value;\n }\n }\n if (this.ui.textEdit && this.value.text && this.value.text.maxChars) {\n ui.children[0].attributes.maxLength = this.value.text.maxChars;\n }\n\n if (value) {\n if (this.ui.numericEdit) {\n value = parseFloat(value);\n value = isNaN(value) ? \"\" : value.toString();\n }\n\n if (ui.children[0].name === \"textarea\") {\n ui.children[0].attributes.textContent = value;\n } else {\n ui.children[0].attributes.value = value;\n }\n }\n }\n }\n\n if (!this.ui.imageEdit && ui.children && ui.children[0] && this.h) {\n borderDims = borderDims || getBorderDims(this.ui[$getExtra]());\n\n let captionHeight = 0;\n if (this.caption && [\"top\", \"bottom\"].includes(this.caption.placement)) {\n captionHeight = this.caption.reserve;\n if (captionHeight <= 0) {\n captionHeight = this.caption[$getExtra](availableSpace).h;\n }\n const inputHeight = this.h - captionHeight - marginV - borderDims.h;\n ui.children[0].attributes.style.height = measureToString(inputHeight);\n } else {\n ui.children[0].attributes.style.height = \"100%\";\n }\n }\n\n if (aElement) {\n ui.children.push(aElement);\n }\n\n if (!caption) {\n if (ui.attributes.class) {\n // Even if no caption this class will help to center the ui.\n ui.attributes.class.push(\"xfaLeft\");\n }\n this.w = savedW;\n this.h = savedH;\n\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n if (this.ui.button) {\n if (style.padding) {\n delete style.padding;\n }\n if (caption.name === \"div\") {\n caption.name = \"span\";\n }\n ui.children.push(caption);\n return HTMLResult.success(html, bbox);\n } else if (this.ui.checkButton) {\n caption.attributes.class[0] = \"xfaCaptionForCheckButton\";\n }\n\n if (!ui.attributes.class) {\n ui.attributes.class = [];\n }\n\n ui.children.splice(0, 0, caption);\n\n switch (this.caption.placement) {\n case \"left\":\n ui.attributes.class.push(\"xfaLeft\");\n break;\n case \"right\":\n ui.attributes.class.push(\"xfaRight\");\n break;\n case \"top\":\n ui.attributes.class.push(\"xfaTop\");\n break;\n case \"bottom\":\n ui.attributes.class.push(\"xfaBottom\");\n break;\n case \"inline\":\n // TODO;\n ui.attributes.class.push(\"xfaLeft\");\n break;\n }\n\n this.w = savedW;\n this.h = savedH;\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Fill extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"fill\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n\n // One-of properties or none\n this.linear = null;\n this.pattern = null;\n this.radial = null;\n this.solid = null;\n this.stipple = null;\n }\n\n [$toStyle]() {\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const ggrandpa = grandpa[$getParent]();\n const style = Object.create(null);\n\n // Use for color, i.e. #...\n let propName = \"color\";\n\n // Use for non-color, i.e. gradient, radial-gradient...\n let altPropName = propName;\n\n if (parent instanceof Border) {\n propName = \"background-color\";\n altPropName = \"background\";\n if (ggrandpa instanceof Ui) {\n // The default fill color is white.\n style.backgroundColor = \"white\";\n }\n }\n if (parent instanceof Rectangle || parent instanceof Arc) {\n propName = altPropName = \"fill\";\n style.fill = \"white\";\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"color\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n const color = obj[$toStyle](this.color);\n if (color) {\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n return style;\n }\n\n if (this.color && this.color.value) {\n const color = this.color[$toStyle]();\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n\n return style;\n }\n}\n\nclass Filter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"filter\", /* hasChildren = */ true);\n this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\n \"\",\n \"required\",\n \"optional\",\n \"none\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.version = getInteger({\n data: this.version,\n defaultValue: 5,\n validate: x => x >= 1 && x <= 5,\n });\n this.appearanceFilter = null;\n this.certificates = null;\n this.digestMethods = null;\n this.encodings = null;\n this.encryptionMethods = null;\n this.handler = null;\n this.lockDocument = null;\n this.mdp = null;\n this.reasons = null;\n this.timeStamp = null;\n }\n}\n\nclass Float extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"float\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass Font extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"font\", /* hasChildren = */ true);\n this.baselineShift = getMeasurement(attributes.baselineShift);\n this.fontHorizontalScale = getFloat({\n data: attributes.fontHorizontalScale,\n defaultValue: 100,\n validate: x => x >= 0,\n });\n this.fontVerticalScale = getFloat({\n data: attributes.fontVerticalScale,\n defaultValue: 100,\n validate: x => x >= 0,\n });\n this.id = attributes.id || \"\";\n this.kerningMode = getStringOption(attributes.kerningMode, [\n \"none\",\n \"pair\",\n ]);\n this.letterSpacing = getMeasurement(attributes.letterSpacing, \"0\");\n this.lineThrough = getInteger({\n data: attributes.lineThrough,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, [\n \"all\",\n \"word\",\n ]);\n this.overline = getInteger({\n data: attributes.overline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.overlinePeriod = getStringOption(attributes.overlinePeriod, [\n \"all\",\n \"word\",\n ]);\n this.posture = getStringOption(attributes.posture, [\"normal\", \"italic\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.typeface = attributes.typeface || \"Courier\";\n this.underline = getInteger({\n data: attributes.underline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.underlinePeriod = getStringOption(attributes.underlinePeriod, [\n \"all\",\n \"word\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.weight = getStringOption(attributes.weight, [\"normal\", \"bold\"]);\n this.extras = null;\n this.fill = null;\n }\n\n [$clean](builder) {\n super[$clean](builder);\n this[$globalData].usedTypefaces.add(this.typeface);\n }\n\n [$toStyle]() {\n const style = toStyle(this, \"fill\");\n const color = style.color;\n if (color) {\n if (color === \"#000000\") {\n // Default font color.\n delete style.color;\n } else if (!color.startsWith(\"#\")) {\n // We've a gradient which is not possible for a font color\n // so use a workaround.\n style.background = color;\n style.backgroundClip = \"text\";\n style.color = \"transparent\";\n }\n }\n\n if (this.baselineShift) {\n style.verticalAlign = measureToString(this.baselineShift);\n }\n\n // TODO: fontHorizontalScale\n // TODO: fontVerticalScale\n\n style.fontKerning = this.kerningMode === \"none\" ? \"none\" : \"normal\";\n style.letterSpacing = measureToString(this.letterSpacing);\n\n if (this.lineThrough !== 0) {\n style.textDecoration = \"line-through\";\n if (this.lineThrough === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: lineThroughPeriod\n\n if (this.overline !== 0) {\n style.textDecoration = \"overline\";\n if (this.overline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: overlinePeriod\n\n style.fontStyle = this.posture;\n style.fontSize = measureToString(0.99 * this.size);\n\n setFontFamily(this, this, this[$globalData].fontFinder, style);\n\n if (this.underline !== 0) {\n style.textDecoration = \"underline\";\n if (this.underline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: underlinePeriod\n\n style.fontWeight = this.weight;\n\n return style;\n }\n}\n\nclass Format extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"format\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n }\n}\n\nclass Handler extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"handler\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Hyphenation extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"hyphenation\");\n this.excludeAllCaps = getInteger({\n data: attributes.excludeAllCaps,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.excludeInitialCap = getInteger({\n data: attributes.excludeInitialCap,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hyphenate = getInteger({\n data: attributes.hyphenate,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.id = attributes.id || \"\";\n this.pushCharacterCount = getInteger({\n data: attributes.pushCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0,\n });\n this.remainCharacterCount = getInteger({\n data: attributes.remainCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wordCharacterCount = getInteger({\n data: attributes.wordCharacterCount,\n defaultValue: 7,\n validate: x => x >= 0,\n });\n }\n}\n\nclass Image extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"image\");\n this.aspect = getStringOption(attributes.aspect, [\n \"fit\",\n \"actual\",\n \"height\",\n \"none\",\n \"width\",\n ]);\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\n \"base64\",\n \"none\",\n \"package\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$toHTML]() {\n if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n return HTMLResult.EMPTY;\n }\n\n let buffer =\n this[$globalData].images && this[$globalData].images.get(this.href);\n if (!buffer && (this.href || !this[$content])) {\n // In general, we don't get remote data and use what we have\n // in the pdf itself, so no picture for non null href.\n return HTMLResult.EMPTY;\n }\n\n if (!buffer && this.transferEncoding === \"base64\") {\n buffer = stringToBytes(atob(this[$content]));\n }\n\n if (!buffer) {\n return HTMLResult.EMPTY;\n }\n\n if (!this.contentType) {\n for (const [header, type] of IMAGES_HEADERS) {\n if (\n buffer.length > header.length &&\n header.every((x, i) => x === buffer[i])\n ) {\n this.contentType = type;\n break;\n }\n }\n if (!this.contentType) {\n return HTMLResult.EMPTY;\n }\n }\n\n // TODO: Firefox doesn't support natively tiff (and tif) format.\n const blob = new Blob([buffer], { type: this.contentType });\n let style;\n switch (this.aspect) {\n case \"fit\":\n case \"actual\":\n // TODO: check what to do with actual.\n // Normally we should return {auto, auto} for it but\n // it implies some wrong rendering (see xfa_bug1716816.pdf).\n break;\n case \"height\":\n style = {\n height: \"100%\",\n objectFit: \"fill\",\n };\n break;\n case \"none\":\n style = {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"fill\",\n };\n break;\n case \"width\":\n style = {\n width: \"100%\",\n objectFit: \"fill\",\n };\n break;\n }\n const parent = this[$getParent]();\n return HTMLResult.success({\n name: \"img\",\n attributes: {\n class: [\"xfaImage\"],\n style,\n src: URL.createObjectURL(blob),\n alt: parent ? ariaLabel(parent[$getParent]()) : null,\n },\n });\n }\n}\n\nclass ImageEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"imageEdit\", /* hasChildren = */ true);\n this.data = getStringOption(attributes.data, [\"link\", \"embed\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n if (this.data === \"embed\") {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {},\n });\n }\n\n return HTMLResult.EMPTY;\n }\n}\n\nclass Integer extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"integer\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseInt(this[$content].trim(), 10);\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass Issuers extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"issuers\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass Items extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"items\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.ref = attributes.ref || \"\";\n this.save = getInteger({\n data: attributes.save,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n [$toHTML]() {\n const output = [];\n for (const child of this[$getChildren]()) {\n output.push(child[$text]());\n }\n return HTMLResult.success(output);\n }\n}\n\nclass Keep extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keep\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n const options = [\"none\", \"contentArea\", \"pageArea\"];\n this.intact = getStringOption(attributes.intact, options);\n this.next = getStringOption(attributes.next, options);\n this.previous = getStringOption(attributes.previous, options);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass KeyUsage extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keyUsage\");\n const options = [\"\", \"yes\", \"no\"];\n this.crlSign = getStringOption(attributes.crlSign, options);\n this.dataEncipherment = getStringOption(\n attributes.dataEncipherment,\n options\n );\n this.decipherOnly = getStringOption(attributes.decipherOnly, options);\n this.digitalSignature = getStringOption(\n attributes.digitalSignature,\n options\n );\n this.encipherOnly = getStringOption(attributes.encipherOnly, options);\n this.id = attributes.id || \"\";\n this.keyAgreement = getStringOption(attributes.keyAgreement, options);\n this.keyCertSign = getStringOption(attributes.keyCertSign, options);\n this.keyEncipherment = getStringOption(attributes.keyEncipherment, options);\n this.nonRepudiation = getStringOption(attributes.nonRepudiation, options);\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Line extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"line\", /* hasChildren = */ true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.slope = getStringOption(attributes.slope, [\"\\\\\", \"/\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n }\n\n [$toHTML]() {\n const parent = this[$getParent]()[$getParent]();\n const edge = this.edge ? this.edge : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n const thickness = edge.presence === \"visible\" ? edge.thickness : 0;\n style.strokeWidth = measureToString(thickness);\n style.stroke = edgeStyle.color;\n let x1, y1, x2, y2;\n let width = \"100%\";\n let height = \"100%\";\n\n if (parent.w <= thickness) {\n [x1, y1, x2, y2] = [\"50%\", 0, \"50%\", \"100%\"];\n width = style.strokeWidth;\n } else if (parent.h <= thickness) {\n [x1, y1, x2, y2] = [0, \"50%\", \"100%\", \"50%\"];\n height = style.strokeWidth;\n } else {\n if (this.slope === \"\\\\\") {\n [x1, y1, x2, y2] = [0, 0, \"100%\", \"100%\"];\n } else {\n [x1, y1, x2, y2] = [0, \"100%\", \"100%\", 0];\n }\n }\n\n const line = {\n name: \"line\",\n attributes: {\n xmlns: SVG_NS,\n x1,\n y1,\n x2,\n y2,\n style,\n },\n };\n\n const svg = {\n name: \"svg\",\n children: [line],\n attributes: {\n xmlns: SVG_NS,\n width,\n height,\n style: {\n overflow: \"visible\",\n },\n },\n };\n\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass Linear extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"linear\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\n \"toRight\",\n \"toBottom\",\n \"toLeft\",\n \"toTop\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const transf = this.type.replace(/([RBLT])/, \" $1\").toLowerCase();\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\n }\n}\n\nclass LockDocument extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"lockDocument\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n this[$content] = getStringOption(this[$content], [\"auto\", \"0\", \"1\"]);\n }\n}\n\nclass Manifest extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"manifest\", /* hasChildren = */ true);\n this.action = getStringOption(attributes.action, [\n \"include\",\n \"all\",\n \"exclude\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.ref = new XFAObjectArray();\n }\n}\n\nclass Margin extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"margin\", /* hasChildren = */ true);\n this.bottomInset = getMeasurement(attributes.bottomInset, \"0\");\n this.id = attributes.id || \"\";\n this.leftInset = getMeasurement(attributes.leftInset, \"0\");\n this.rightInset = getMeasurement(attributes.rightInset, \"0\");\n this.topInset = getMeasurement(attributes.topInset, \"0\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toStyle]() {\n return {\n margin:\n measureToString(this.topInset) +\n \" \" +\n measureToString(this.rightInset) +\n \" \" +\n measureToString(this.bottomInset) +\n \" \" +\n measureToString(this.leftInset),\n };\n }\n}\n\nclass Mdp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"mdp\");\n this.id = attributes.id || \"\";\n this.permissions = getInteger({\n data: attributes.permissions,\n defaultValue: 2,\n validate: x => x === 1 || x === 3,\n });\n this.signatureType = getStringOption(attributes.signatureType, [\n \"filler\",\n \"author\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Medium extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"medium\");\n this.id = attributes.id || \"\";\n this.imagingBBox = getBBox(attributes.imagingBBox);\n this.long = getMeasurement(attributes.long);\n this.orientation = getStringOption(attributes.orientation, [\n \"portrait\",\n \"landscape\",\n ]);\n this.short = getMeasurement(attributes.short);\n this.stock = attributes.stock || \"\";\n this.trayIn = getStringOption(attributes.trayIn, [\n \"auto\",\n \"delegate\",\n \"pageFront\",\n ]);\n this.trayOut = getStringOption(attributes.trayOut, [\"auto\", \"delegate\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Message extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"message\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.text = new XFAObjectArray();\n }\n}\n\nclass NumericEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"numericEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Occur extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"occur\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.initial =\n attributes.initial !== \"\"\n ? getInteger({\n data: attributes.initial,\n defaultValue: \"\",\n validate: x => true,\n })\n : \"\";\n this.max =\n attributes.max !== \"\"\n ? getInteger({\n data: attributes.max,\n defaultValue: 1,\n validate: x => true,\n })\n : \"\";\n this.min =\n attributes.min !== \"\"\n ? getInteger({\n data: attributes.min,\n defaultValue: 1,\n validate: x => true,\n })\n : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$clean]() {\n const parent = this[$getParent]();\n const originalMin = this.min;\n\n if (this.min === \"\") {\n this.min =\n parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\n }\n if (this.max === \"\") {\n if (originalMin === \"\") {\n this.max =\n parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\n } else {\n this.max = this.min;\n }\n }\n\n if (this.max !== -1 && this.max < this.min) {\n this.max = this.min;\n }\n\n if (this.initial === \"\") {\n this.initial = parent instanceof Template ? 1 : this.min;\n }\n }\n}\n\nclass Oid extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oid\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Oids extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oids\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.oid = new XFAObjectArray();\n }\n}\n\nclass Overflow extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"overflow\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.target = attributes.target || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$getExtra]() {\n if (!this[$extra]) {\n const parent = this[$getParent]();\n const root = this[$getTemplateRoot]();\n const target = root[$searchNode](this.target, parent);\n const leader = root[$searchNode](this.leader, parent);\n const trailer = root[$searchNode](this.trailer, parent);\n this[$extra] = {\n target: (target && target[0]) || null,\n leader: (leader && leader[0]) || null,\n trailer: (trailer && trailer[0]) || null,\n addLeader: false,\n addTrailer: false,\n };\n }\n return this[$extra];\n }\n}\n\nclass PageArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageArea\", /* hasChildren = */ true);\n this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\n \"any\",\n \"blank\",\n \"notBlank\",\n ]);\n this.id = attributes.id || \"\";\n this.initialNumber = getInteger({\n data: attributes.initialNumber,\n defaultValue: 1,\n validate: x => true,\n });\n this.name = attributes.name || \"\";\n this.numbered = getInteger({\n data: attributes.numbered,\n defaultValue: 1,\n validate: x => true,\n });\n this.oddOrEven = getStringOption(attributes.oddOrEven, [\n \"any\",\n \"even\",\n \"odd\",\n ]);\n this.pagePosition = getStringOption(attributes.pagePosition, [\n \"any\",\n \"first\",\n \"last\",\n \"only\",\n \"rest\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.desc = null;\n this.extras = null;\n this.medium = null;\n this.occur = null;\n this.area = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n }\n\n [$isUsable]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0,\n };\n return true;\n }\n return (\n !this.occur ||\n this.occur.max === -1 ||\n this[$extra].numberOfUse < this.occur.max\n );\n }\n\n [$cleanPage]() {\n delete this[$extra];\n }\n\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0,\n };\n }\n\n const parent = this[$getParent]();\n if (parent.relation === \"orderedOccurrence\") {\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n return this;\n }\n }\n\n return parent[$getNextPage]();\n }\n\n [$getAvailableSpace]() {\n return this[$extra].space || { width: 0, height: 0 };\n }\n\n [$toHTML]() {\n // TODO: incomplete.\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n };\n }\n\n const children = [];\n this[$extra].children = children;\n\n const style = Object.create(null);\n if (this.medium && this.medium.short && this.medium.long) {\n style.width = measureToString(this.medium.short);\n style.height = measureToString(this.medium.long);\n this[$extra].space = {\n width: this.medium.short,\n height: this.medium.long,\n };\n if (this.medium.orientation === \"landscape\") {\n const x = style.width;\n style.width = style.height;\n style.height = x;\n this[$extra].space = {\n width: this.medium.long,\n height: this.medium.short,\n };\n }\n } else {\n warn(\"XFA - No medium specified in pageArea: please file a bug.\");\n }\n\n this[$childrenToHTML]({\n filter: new Set([\"area\", \"draw\", \"field\", \"subform\"]),\n include: true,\n });\n\n // contentarea must be the last container to be sure it is\n // on top of the others.\n this[$childrenToHTML]({\n filter: new Set([\"contentArea\"]),\n include: true,\n });\n\n return HTMLResult.success({\n name: \"div\",\n children,\n attributes: {\n class: [\"xfaPage\"],\n id: this[$uid],\n style,\n xfaName: this.name,\n },\n });\n }\n}\n\nclass PageSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageSet\", /* hasChildren = */ true);\n this.duplexImposition = getStringOption(attributes.duplexImposition, [\n \"longEdge\",\n \"shortEdge\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\n \"orderedOccurrence\",\n \"duplexPaginated\",\n \"simplexPaginated\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.occur = null;\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n }\n\n [$cleanPage]() {\n for (const page of this.pageArea.children) {\n page[$cleanPage]();\n }\n for (const page of this.pageSet.children) {\n page[$cleanPage]();\n }\n }\n\n [$isUsable]() {\n return (\n !this.occur ||\n this.occur.max === -1 ||\n this[$extra].numberOfUse < this.occur.max\n );\n }\n\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n pageIndex: -1,\n pageSetIndex: -1,\n };\n }\n\n if (this.relation === \"orderedOccurrence\") {\n if (this[$extra].pageIndex + 1 < this.pageArea.children.length) {\n this[$extra].pageIndex += 1;\n const pageArea = this.pageArea.children[this[$extra].pageIndex];\n return pageArea[$getNextPage]();\n }\n\n if (this[$extra].pageSetIndex + 1 < this.pageSet.children.length) {\n this[$extra].pageSetIndex += 1;\n return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage]();\n }\n\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n this[$extra].pageIndex = -1;\n this[$extra].pageSetIndex = -1;\n return this[$getNextPage]();\n }\n\n const parent = this[$getParent]();\n if (parent instanceof PageSet) {\n return parent[$getNextPage]();\n }\n\n this[$cleanPage]();\n return this[$getNextPage]();\n }\n const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber;\n const parity = pageNumber % 2 === 0 ? \"even\" : \"odd\";\n const position = pageNumber === 0 ? \"first\" : \"rest\";\n\n let page = this.pageArea.children.find(\n p => p.oddOrEven === parity && p.pagePosition === position\n );\n if (page) {\n return page;\n }\n\n page = this.pageArea.children.find(\n p => p.oddOrEven === \"any\" && p.pagePosition === position\n );\n if (page) {\n return page;\n }\n\n page = this.pageArea.children.find(\n p => p.oddOrEven === \"any\" && p.pagePosition === \"any\"\n );\n if (page) {\n return page;\n }\n\n return this.pageArea.children[0];\n }\n}\n\nclass Para extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"para\", /* hasChildren = */ true);\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.lineHeight = attributes.lineHeight\n ? getMeasurement(attributes.lineHeight, \"0pt\")\n : \"\";\n this.marginLeft = attributes.marginLeft\n ? getMeasurement(attributes.marginLeft, \"0pt\")\n : \"\";\n this.marginRight = attributes.marginRight\n ? getMeasurement(attributes.marginRight, \"0pt\")\n : \"\";\n this.orphans = getInteger({\n data: attributes.orphans,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.preserve = attributes.preserve || \"\";\n this.radixOffset = attributes.radixOffset\n ? getMeasurement(attributes.radixOffset, \"0pt\")\n : \"\";\n this.spaceAbove = attributes.spaceAbove\n ? getMeasurement(attributes.spaceAbove, \"0pt\")\n : \"\";\n this.spaceBelow = attributes.spaceBelow\n ? getMeasurement(attributes.spaceBelow, \"0pt\")\n : \"\";\n this.tabDefault = attributes.tabDefault\n ? getMeasurement(this.tabDefault)\n : \"\";\n this.tabStops = (attributes.tabStops || \"\")\n .trim()\n .split(/\\s+/)\n .map((x, i) => (i % 2 === 1 ? getMeasurement(x) : x));\n this.textIndent = attributes.textIndent\n ? getMeasurement(attributes.textIndent, \"0pt\")\n : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vAlign = getStringOption(attributes.vAlign, [\n \"top\",\n \"bottom\",\n \"middle\",\n ]);\n this.widows = getInteger({\n data: attributes.widows,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.hyphenation = null;\n }\n\n [$toStyle]() {\n const style = toStyle(this, \"hAlign\");\n if (this.marginLeft !== \"\") {\n style.paddingLeft = measureToString(this.marginLeft);\n }\n if (this.marginRight !== \"\") {\n style.paddingight = measureToString(this.marginRight);\n }\n if (this.spaceAbove !== \"\") {\n style.paddingTop = measureToString(this.spaceAbove);\n }\n if (this.spaceBelow !== \"\") {\n style.paddingBottom = measureToString(this.spaceBelow);\n }\n if (this.textIndent !== \"\") {\n style.textIndent = measureToString(this.textIndent);\n fixTextIndent(style);\n }\n\n if (this.lineHeight > 0) {\n style.lineHeight = measureToString(this.lineHeight);\n }\n\n if (this.tabDefault !== \"\") {\n style.tabSize = measureToString(this.tabDefault);\n }\n\n if (this.tabStops.length > 0) {\n // TODO\n }\n\n if (this.hyphenatation) {\n Object.assign(style, this.hyphenatation[$toStyle]());\n }\n\n return style;\n }\n}\n\nclass PasswordEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"passwordEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.passwordChar = attributes.passwordChar || \"*\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n}\n\nclass Pattern extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pattern\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\n \"crossHatch\",\n \"crossDiagonal\",\n \"diagonalLeft\",\n \"diagonalRight\",\n \"horizontal\",\n \"vertical\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const width = 5;\n const cmd = \"repeating-linear-gradient\";\n const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${\n 2 * width\n }px`;\n switch (this.type) {\n case \"crossHatch\":\n return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\n case \"crossDiagonal\":\n return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\n case \"diagonalLeft\":\n return `${cmd}(45deg,${colors})`;\n case \"diagonalRight\":\n return `${cmd}(-45deg,${colors})`;\n case \"horizontal\":\n return `${cmd}(to top,${colors})`;\n case \"vertical\":\n return `${cmd}(to right,${colors})`;\n }\n\n return \"\";\n }\n}\n\nclass Picture extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"picture\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Proto extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"proto\", /* hasChildren = */ true);\n this.appearanceFilter = new XFAObjectArray();\n this.arc = new XFAObjectArray();\n this.area = new XFAObjectArray();\n this.assist = new XFAObjectArray();\n this.barcode = new XFAObjectArray();\n this.bindItems = new XFAObjectArray();\n this.bookend = new XFAObjectArray();\n this.boolean = new XFAObjectArray();\n this.border = new XFAObjectArray();\n this.break = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.button = new XFAObjectArray();\n this.calculate = new XFAObjectArray();\n this.caption = new XFAObjectArray();\n this.certificate = new XFAObjectArray();\n this.certificates = new XFAObjectArray();\n this.checkButton = new XFAObjectArray();\n this.choiceList = new XFAObjectArray();\n this.color = new XFAObjectArray();\n this.comb = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.corner = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.dateTimeEdit = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.defaultUi = new XFAObjectArray();\n this.desc = new XFAObjectArray();\n this.digestMethod = new XFAObjectArray();\n this.digestMethods = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.edge = new XFAObjectArray();\n this.encoding = new XFAObjectArray();\n this.encodings = new XFAObjectArray();\n this.encrypt = new XFAObjectArray();\n this.encryptData = new XFAObjectArray();\n this.encryption = new XFAObjectArray();\n this.encryptionMethod = new XFAObjectArray();\n this.encryptionMethods = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.execute = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.fill = new XFAObjectArray();\n this.filter = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.font = new XFAObjectArray();\n this.format = new XFAObjectArray();\n this.handler = new XFAObjectArray();\n this.hyphenation = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.imageEdit = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.issuers = new XFAObjectArray();\n this.items = new XFAObjectArray();\n this.keep = new XFAObjectArray();\n this.keyUsage = new XFAObjectArray();\n this.line = new XFAObjectArray();\n this.linear = new XFAObjectArray();\n this.lockDocument = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.margin = new XFAObjectArray();\n this.mdp = new XFAObjectArray();\n this.medium = new XFAObjectArray();\n this.message = new XFAObjectArray();\n this.numericEdit = new XFAObjectArray();\n this.occur = new XFAObjectArray();\n this.oid = new XFAObjectArray();\n this.oids = new XFAObjectArray();\n this.overflow = new XFAObjectArray();\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n this.para = new XFAObjectArray();\n this.passwordEdit = new XFAObjectArray();\n this.pattern = new XFAObjectArray();\n this.picture = new XFAObjectArray();\n this.radial = new XFAObjectArray();\n this.reason = new XFAObjectArray();\n this.reasons = new XFAObjectArray();\n this.rectangle = new XFAObjectArray();\n this.ref = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n this.signature = new XFAObjectArray();\n this.signing = new XFAObjectArray();\n this.solid = new XFAObjectArray();\n this.speak = new XFAObjectArray();\n this.stipple = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n this.subjectDN = new XFAObjectArray();\n this.subjectDNs = new XFAObjectArray();\n this.submit = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.textEdit = new XFAObjectArray();\n this.time = new XFAObjectArray();\n this.timeStamp = new XFAObjectArray();\n this.toolTip = new XFAObjectArray();\n this.traversal = new XFAObjectArray();\n this.traverse = new XFAObjectArray();\n this.ui = new XFAObjectArray();\n this.validate = new XFAObjectArray();\n this.value = new XFAObjectArray();\n this.variables = new XFAObjectArray();\n }\n}\n\nclass Radial extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"radial\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"toEdge\", \"toCenter\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const colors =\n this.type === \"toEdge\"\n ? `${startColor},${endColor}`\n : `${endColor},${startColor}`;\n return `radial-gradient(circle at center, ${colors})`;\n }\n}\n\nclass Reason extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reason\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Reasons extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reasons\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.reason = new XFAObjectArray();\n }\n}\n\nclass Rectangle extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"rectangle\", /* hasChildren = */ true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.fill = null;\n }\n\n [$toHTML]() {\n const edge = this.edge.children.length\n ? this.edge.children[0]\n : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(\n edge.presence === \"visible\" ? edge.thickness : 0\n );\n style.stroke = edgeStyle.color;\n\n const corner = this.corner.children.length\n ? this.corner.children[0]\n : new Corner({});\n const cornerStyle = corner[$toStyle]();\n\n const rect = {\n name: \"rect\",\n attributes: {\n xmlns: SVG_NS,\n width: \"100%\",\n height: \"100%\",\n x: 0,\n y: 0,\n rx: cornerStyle.radius,\n ry: cornerStyle.radius,\n style,\n },\n };\n\n const svg = {\n name: \"svg\",\n children: [rect],\n attributes: {\n xmlns: SVG_NS,\n style: {\n overflow: \"visible\",\n },\n width: \"100%\",\n height: \"100%\",\n },\n };\n\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass RefElement extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ref\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Script extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"script\");\n this.binding = attributes.binding || \"\";\n this.contentType = attributes.contentType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.runAt = getStringOption(attributes.runAt, [\n \"client\",\n \"both\",\n \"server\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SetProperty extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"setProperty\");\n this.connection = attributes.connection || \"\";\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n }\n}\n\nclass SignData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signData\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"sign\",\n \"clear\",\n \"verify\",\n ]);\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\n\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signature\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"PDF1.3\", \"PDF1.6\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.filter = null;\n this.manifest = null;\n this.margin = null;\n }\n}\n\nclass Signing extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signing\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass Solid extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"solid\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n return startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n }\n}\n\nclass Speak extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"speak\");\n this.disable = getInteger({\n data: attributes.disable,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.id = attributes.id || \"\";\n this.priority = getStringOption(attributes.priority, [\n \"custom\",\n \"caption\",\n \"name\",\n \"toolTip\",\n ]);\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Stipple extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"stipple\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.rate = getInteger({\n data: attributes.rate,\n defaultValue: 50,\n validate: x => x >= 0 && x <= 100,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](bgColor) {\n const alpha = this.rate / 100;\n return Util.makeHexColor(\n Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha),\n Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha),\n Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)\n );\n }\n}\n\nclass Subform extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subform\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.allowMacro = getInteger({\n data: attributes.allowMacro,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.columnWidths = (attributes.columnWidths || \"\")\n .trim()\n .split(/\\s+/)\n .map(x => (x === \"-1\" ? -1 : getMeasurement(x)));\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\n \"position\",\n \"lr-tb\",\n \"rl-row\",\n \"rl-tb\",\n \"row\",\n \"table\",\n \"tb\",\n ]);\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.mergeMode = getStringOption(attributes.mergeMode, [\n \"consumeData\",\n \"matchTemplate\",\n ]);\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.restoreState = getStringOption(attributes.restoreState, [\n \"manual\",\n \"auto\",\n ]);\n this.scope = getStringOption(attributes.scope, [\"name\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.bookend = null;\n this.border = null;\n this.break = null;\n this.calculate = null;\n this.desc = null;\n this.extras = null;\n this.keep = null;\n this.margin = null;\n this.occur = null;\n this.overflow = null;\n this.pageSet = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.variables = null;\n this.area = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.proto = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n\n [$getSubformParent]() {\n const parent = this[$getParent]();\n if (parent instanceof SubformSet) {\n return parent[$getSubformParent]();\n }\n return parent;\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$isThereMoreWidth]() {\n return (\n (this.layout.endsWith(\"-tb\") &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine > 0) ||\n this[$getParent]()[$isThereMoreWidth]()\n );\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$flushHTML]() {\n return flushHTML(this);\n }\n\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n\n [$isSplittable]() {\n // We cannot cache the result here because the contentArea\n // can change.\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (this.keep && this.keep.intact !== \"none\") {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (\n parent.layout &&\n parent.layout.endsWith(\"-tb\") &&\n parent[$extra].numberInLine !== 0\n ) {\n // If parent can fit in w=100 and there's already an element which takes\n // 90 then we've 10 for this element. Suppose this element has a tb layout\n // and 5 elements have a width of 7 and the 6th has a width of 20:\n // then this element (and all its content) must move on the next line.\n // If this element is splittable then the first 5 children will stay\n // at the end of the line: we don't want that.\n return false;\n }\n\n this[$extra]._isSplittable = true;\n\n return true;\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (this.break) {\n // break element is deprecated so plug it on one of its replacement\n // breakBefore or breakAfter.\n if (this.break.after !== \"auto\" || this.break.afterTarget !== \"\") {\n const node = new BreakAfter({\n targetType: this.break.after,\n target: this.break.afterTarget,\n startNew: this.break.startNew.toString(),\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakAfter.push(node);\n }\n\n if (this.break.before !== \"auto\" || this.break.beforeTarget !== \"\") {\n const node = new BreakBefore({\n targetType: this.break.before,\n target: this.break.beforeTarget,\n startNew: this.break.startNew.toString(),\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakBefore.push(node);\n }\n\n if (this.break.overflowTarget !== \"\") {\n const node = new Overflow({\n target: this.break.overflowTarget,\n leader: this.break.overflowLeader,\n trailer: this.break.overflowTrailer,\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.overflow.push(node);\n }\n\n this[$removeChild](this.break);\n this.break = null;\n }\n\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n\n if (\n this.breakBefore.children.length > 1 ||\n this.breakAfter.children.length > 1\n ) {\n // Specs are always talking about the breakBefore element\n // and it doesn't really make sense to have several ones.\n warn(\n \"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\"\n );\n }\n\n if (this.breakBefore.children.length >= 1) {\n const breakBefore = this.breakBefore.children[0];\n if (handleBreak(breakBefore)) {\n return HTMLResult.breakNode(breakBefore);\n }\n }\n\n if (this[$extra] && this[$extra].afterBreakAfter) {\n return HTMLResult.EMPTY;\n }\n\n // TODO: incomplete.\n fixDimensions(this);\n const children = [];\n const attributes = {\n id: this[$uid],\n class: [],\n };\n\n setAccess(this, attributes.class);\n\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\n }\n\n Object.assign(this[$extra], {\n children,\n line: null,\n attributes,\n attempt: 0,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height),\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0,\n });\n\n const root = this[$getTemplateRoot]();\n const savedNoLayoutFailure = root[$extra].noLayoutFailure;\n\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n\n const filter = new Set([\n \"area\",\n \"draw\",\n \"exclGroup\",\n \"field\",\n \"subform\",\n \"subformSet\",\n ]);\n\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n\n const style = toStyle(\n this,\n \"anchorType\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"border\",\n \"margin\",\n \"hAlign\"\n );\n const classNames = [\"xfaSubform\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n\n attributes.style = style;\n attributes.class = classNames;\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addLeader) {\n overflowExtra.addLeader = false;\n handleOverflow(this, overflowExtra.leader, availableSpace);\n }\n }\n\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n // If the layout is lr-tb then having attempt equals to\n // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n // on the next line so this on is empty.\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true,\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (\n isLrTb &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine === 0 &&\n !root[$extra].noLayoutFailure\n ) {\n // We're failing to put the first element on the line so no\n // need to test on the next line.\n // The goal is not only to avoid some useless checks but to avoid\n // bugs too: if a descendant managed to put a node and failed\n // on the next one, going to the next step here will imply to\n // visit the descendant again, clear [$extra].children and restart\n // on the failing node, consequently the first node just disappears\n // because it has never been flushed.\n this[$extra].attempt = maxRun;\n break;\n }\n }\n\n this[$popPara]();\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n root[$extra].noLayoutFailure = savedNoLayoutFailure;\n\n if (this[$extra].attempt === maxRun) {\n if (this.overflow) {\n this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\n }\n\n if (!isSplittable) {\n // Since a new try will happen in a new container with maybe\n // new dimensions, we invalidate already layed out components.\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addTrailer) {\n overflowExtra.addTrailer = false;\n handleOverflow(this, overflowExtra.trailer, availableSpace);\n }\n }\n\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n\n if (\n (style.width === \"0px\" || style.height === \"0px\") &&\n children.length === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n const result = HTMLResult.success(createWrapper(this, html), bbox);\n\n if (this.breakAfter.children.length >= 1) {\n const breakAfter = this.breakAfter.children[0];\n if (handleBreak(breakAfter)) {\n this[$extra].afterBreakAfter = result;\n return HTMLResult.breakNode(breakAfter);\n }\n }\n\n delete this[$extra];\n\n return result;\n }\n}\n\nclass SubformSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subformSet\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\n \"ordered\",\n \"choice\",\n \"unordered\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.bookend = null;\n this.break = null;\n this.desc = null;\n this.extras = null;\n this.occur = null;\n this.overflow = null;\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n\n // TODO: need to handle break stuff and relation.\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$getSubformParent]() {\n let parent = this[$getParent]();\n while (!(parent instanceof Subform)) {\n parent = parent[$getParent]();\n }\n return parent;\n }\n\n [$isBindable]() {\n return true;\n }\n}\n\nclass SubjectDN extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDN\");\n this.delimiter = attributes.delimiter || \",\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n this[$content] = new Map(\n this[$content].split(this.delimiter).map(kv => {\n kv = kv.split(\"=\", 2);\n kv[0] = kv[0].trim();\n return kv;\n })\n );\n }\n}\n\nclass SubjectDNs extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDNs\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.subjectDN = new XFAObjectArray();\n }\n}\n\nclass Submit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"submit\", /* hasChildren = */ true);\n this.embedPDF = getInteger({\n data: attributes.embedPDF,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.format = getStringOption(attributes.format, [\n \"xdp\",\n \"formdata\",\n \"pdf\",\n \"urlencoded\",\n \"xfd\",\n \"xml\",\n ]);\n this.id = attributes.id || \"\";\n this.target = attributes.target || \"\";\n this.textEncoding = getKeyword({\n data: attributes.textEncoding\n ? attributes.textEncoding.toLowerCase()\n : \"\",\n defaultValue: \"\",\n validate: k =>\n [\n \"utf-8\",\n \"big-five\",\n \"fontspecific\",\n \"gbk\",\n \"gb-18030\",\n \"gb-2312\",\n \"ksc-5601\",\n \"none\",\n \"shift-jis\",\n \"ucs-2\",\n \"utf-16\",\n ].includes(k) || k.match(/iso-8859-\\d{2}/),\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.xdpContent = attributes.xdpContent || \"\";\n this.encrypt = null;\n this.encryptData = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n }\n}\n\nclass Template extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"template\", /* hasChildren = */ true);\n this.baseProfile = getStringOption(attributes.baseProfile, [\n \"full\",\n \"interactiveForms\",\n ]);\n this.extras = null;\n\n // Spec is unclear:\n // A container element that describes a single subform capable of\n // enclosing other containers.\n // Can we have more than one subform ?\n this.subform = new XFAObjectArray();\n }\n\n [$finalize]() {\n if (this.subform.children.length === 0) {\n warn(\"XFA - No subforms in template node.\");\n }\n if (this.subform.children.length >= 2) {\n warn(\"XFA - Several subforms in template node: please file a bug.\");\n }\n this[$tabIndex] = DEFAULT_TAB_INDEX;\n }\n\n [$isSplittable]() {\n return true;\n }\n\n [$searchNode](expr, container) {\n if (expr.startsWith(\"#\")) {\n // This is an id.\n return [this[$ids].get(expr.slice(1))];\n }\n return searchNode(this, container, expr, true, true);\n }\n\n /**\n * This function is a generator because the conversion into\n * pages is done asynchronously and we want to save the state\n * of the function where we were in the previous iteration.\n */\n *[$toPages]() {\n if (!this.subform.children.length) {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n });\n }\n this[$extra] = {\n overflowNode: null,\n firstUnsplittable: null,\n currentContentArea: null,\n currentPageArea: null,\n noLayoutFailure: false,\n pageNumber: 1,\n pagePosition: \"first\",\n oddOrEven: \"odd\",\n blankOrNotBlank: \"nonBlank\",\n paraStack: [],\n };\n\n const root = this.subform.children[0];\n root.pageSet[$cleanPage]();\n\n const pageAreas = root.pageSet.pageArea.children;\n const mainHtml = {\n name: \"div\",\n children: [],\n };\n\n let pageArea = null;\n let breakBefore = null;\n let breakBeforeTarget = null;\n if (root.breakBefore.children.length >= 1) {\n breakBefore = root.breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (\n root.subform.children.length >= 1 &&\n root.subform.children[0].breakBefore.children.length >= 1\n ) {\n breakBefore = root.subform.children[0].breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (root.break && root.break.beforeTarget) {\n breakBefore = root.break;\n breakBeforeTarget = breakBefore.beforeTarget;\n } else if (\n root.subform.children.length >= 1 &&\n root.subform.children[0].break &&\n root.subform.children[0].break.beforeTarget\n ) {\n breakBefore = root.subform.children[0].break;\n breakBeforeTarget = breakBefore.beforeTarget;\n }\n\n if (breakBefore) {\n const target = this[$searchNode](\n breakBeforeTarget,\n breakBefore[$getParent]()\n );\n if (target instanceof PageArea) {\n pageArea = target;\n // Consume breakBefore.\n breakBefore[$extra] = {};\n }\n }\n\n if (!pageArea) {\n pageArea = pageAreas[0];\n }\n\n pageArea[$extra] = {\n numberOfUse: 1,\n };\n\n const pageAreaParent = pageArea[$getParent]();\n pageAreaParent[$extra] = {\n numberOfUse: 1,\n pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\n pageSetIndex: 0,\n };\n\n let targetPageArea;\n let leader = null;\n let trailer = null;\n let hasSomething = true;\n let hasSomethingCounter = 0;\n let startIndex = 0;\n\n while (true) {\n if (!hasSomething) {\n mainHtml.children.pop();\n // Nothing has been added in the previous page\n if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\n warn(\"XFA - Something goes wrong: please file a bug.\");\n return mainHtml;\n }\n } else {\n hasSomethingCounter = 0;\n }\n\n targetPageArea = null;\n this[$extra].currentPageArea = pageArea;\n const page = pageArea[$toHTML]().html;\n mainHtml.children.push(page);\n\n if (leader) {\n this[$extra].noLayoutFailure = true;\n page.children.push(leader[$toHTML](pageArea[$extra].space).html);\n leader = null;\n }\n\n if (trailer) {\n this[$extra].noLayoutFailure = true;\n page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\n trailer = null;\n }\n\n const contentAreas = pageArea.contentArea.children;\n const htmlContentAreas = page.children.filter(node =>\n node.attributes.class.includes(\"xfaContentarea\")\n );\n\n hasSomething = false;\n this[$extra].firstUnsplittable = null;\n this[$extra].noLayoutFailure = false;\n\n const flush = index => {\n const html = root[$flushHTML]();\n if (html) {\n hasSomething =\n hasSomething || (html.children && html.children.length !== 0);\n htmlContentAreas[index].children.push(html);\n }\n };\n\n for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {\n const contentArea = (this[$extra].currentContentArea = contentAreas[i]);\n const space = { width: contentArea.w, height: contentArea.h };\n startIndex = 0;\n\n if (leader) {\n htmlContentAreas[i].children.push(leader[$toHTML](space).html);\n leader = null;\n }\n\n if (trailer) {\n htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\n trailer = null;\n }\n\n const html = root[$toHTML](space);\n if (html.success) {\n if (html.html) {\n hasSomething =\n hasSomething ||\n (html.html.children && html.html.children.length !== 0);\n htmlContentAreas[i].children.push(html.html);\n } else if (!hasSomething && mainHtml.children.length > 1) {\n mainHtml.children.pop();\n }\n return mainHtml;\n }\n\n if (html.isBreak()) {\n const node = html.breakNode;\n flush(i);\n\n if (node.targetType === \"auto\") {\n continue;\n }\n\n if (node.leader) {\n leader = this[$searchNode](node.leader, node[$getParent]());\n leader = leader ? leader[0] : null;\n }\n\n if (node.trailer) {\n trailer = this[$searchNode](node.trailer, node[$getParent]());\n trailer = trailer ? trailer[0] : null;\n }\n\n if (node.targetType === \"pageArea\") {\n targetPageArea = node[$extra].target;\n i = Infinity;\n } else if (!node[$extra].target) {\n // We stay on the same page.\n i = node[$extra].index;\n } else {\n targetPageArea = node[$extra].target;\n startIndex = node[$extra].index + 1;\n i = Infinity;\n }\n\n continue;\n }\n\n if (this[$extra].overflowNode) {\n const node = this[$extra].overflowNode;\n this[$extra].overflowNode = null;\n\n const overflowExtra = node[$getExtra]();\n const target = overflowExtra.target;\n overflowExtra.addLeader = overflowExtra.leader !== null;\n overflowExtra.addTrailer = overflowExtra.trailer !== null;\n\n flush(i);\n\n const currentIndex = i;\n\n i = Infinity;\n if (target instanceof PageArea) {\n // We must stop the contentAreas filling and go to the next page.\n targetPageArea = target;\n } else if (target instanceof ContentArea) {\n const index = contentAreas.findIndex(e => e === target);\n if (index !== -1) {\n if (index > currentIndex) {\n // In the next loop iteration `i` will be incremented, note the\n // `continue` just below, hence we need to subtract one here.\n i = index - 1;\n } else {\n // The targetted contentArea has already been filled\n // so create a new page.\n startIndex = index;\n }\n } else {\n targetPageArea = target[$getParent]();\n startIndex = targetPageArea.contentArea.children.findIndex(\n e => e === target\n );\n }\n }\n continue;\n }\n\n flush(i);\n }\n\n this[$extra].pageNumber += 1;\n if (targetPageArea) {\n if (targetPageArea[$isUsable]()) {\n targetPageArea[$extra].numberOfUse += 1;\n } else {\n targetPageArea = null;\n }\n }\n pageArea = targetPageArea || pageArea[$getNextPage]();\n yield null;\n }\n }\n}\n\nclass Text extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"text\");\n this.id = attributes.id || \"\";\n this.maxChars = getInteger({\n data: attributes.maxChars,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$acceptWhitespace]() {\n return true;\n }\n\n [$onChild](child) {\n if (child[$namespaceId] === NamespaceIds.xhtml.id) {\n this[$content] = child;\n return true;\n }\n warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`);\n return false;\n }\n\n [$onText](str) {\n if (this[$content] instanceof XFAObject) {\n return;\n }\n super[$onText](str);\n }\n\n [$finalize]() {\n if (typeof this[$content] === \"string\") {\n this[$content] = this[$content].replace(/\\r\\n/g, \"\\n\");\n }\n }\n\n [$getExtra]() {\n if (typeof this[$content] === \"string\") {\n return this[$content]\n .split(/[\\u2029\\u2028\\n]/)\n .reduce((acc, line) => {\n if (line) {\n acc.push(line);\n }\n return acc;\n }, [])\n .join(\"\\n\");\n }\n return this[$content][$text]();\n }\n\n [$toHTML](availableSpace) {\n if (typeof this[$content] === \"string\") {\n // \\u2028 is a line separator.\n // \\u2029 is a paragraph separator.\n const html = valueToHtml(this[$content]).html;\n\n if (this[$content].includes(\"\\u2029\")) {\n // We've plain text containing a paragraph separator\n // so convert it into a set of <p>.\n html.name = \"div\";\n html.children = [];\n this[$content]\n .split(\"\\u2029\")\n .map(para =>\n // Convert a paragraph into a set of <span> (for lines)\n // separated by <br>.\n para.split(/[\\u2028\\n]/).reduce((acc, line) => {\n acc.push(\n {\n name: \"span\",\n value: line,\n },\n {\n name: \"br\",\n }\n );\n return acc;\n }, [])\n )\n .forEach(lines => {\n html.children.push({\n name: \"p\",\n children: lines,\n });\n });\n } else if (/[\\u2028\\n]/.test(this[$content])) {\n html.name = \"div\";\n html.children = [];\n // Convert plain text into a set of <span> (for lines)\n // separated by <br>.\n this[$content].split(/[\\u2028\\n]/).forEach(line => {\n html.children.push(\n {\n name: \"span\",\n value: line,\n },\n {\n name: \"br\",\n }\n );\n });\n }\n\n return HTMLResult.success(html);\n }\n\n return this[$content][$toHTML](availableSpace);\n }\n}\n\nclass TextEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"textEdit\", /* hasChildren = */ true);\n this.allowRichText = getInteger({\n data: attributes.allowRichText,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.multiLine = getInteger({\n data: attributes.multiLine,\n defaultValue: \"\",\n validate: x => x === 0 || x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n let html;\n const field = this[$getParent]()[$getParent]();\n if (this.multiLine === \"\") {\n this.multiLine = field instanceof Draw ? 1 : 0;\n }\n if (this.multiLine === 1) {\n html = {\n name: \"textarea\",\n attributes: {\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n } else {\n html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Time extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"time\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n // TODO: need to handle the string as a time and not as a date.\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass TimeStamp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"timeStamp\");\n this.id = attributes.id || \"\";\n this.server = attributes.server || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass ToolTip extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"toolTip\");\n this.id = attributes.id || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Traversal extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traversal\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.traverse = new XFAObjectArray();\n }\n}\n\nclass Traverse extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traverse\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"next\",\n \"back\",\n \"down\",\n \"first\",\n \"left\",\n \"right\",\n \"up\",\n ]);\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.script = null;\n }\n\n get name() {\n // SOM expression: see page 94\n return this.operation;\n }\n\n [$isTransparent]() {\n return false;\n }\n}\n\nclass Ui extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ui\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n\n // One-of properties\n this.barcode = null;\n this.button = null;\n this.checkButton = null;\n this.choiceList = null;\n this.dateTimeEdit = null;\n this.defaultUi = null;\n this.imageEdit = null;\n this.numericEdit = null;\n this.passwordEdit = null;\n this.signature = null;\n this.textEdit = null;\n }\n\n [$getExtra]() {\n if (this[$extra] === undefined) {\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"picture\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n this[$extra] = obj;\n return obj;\n }\n this[$extra] = null;\n }\n return this[$extra];\n }\n\n [$toHTML](availableSpace) {\n // TODO: picture.\n const obj = this[$getExtra]();\n if (obj) {\n return obj[$toHTML](availableSpace);\n }\n return HTMLResult.EMPTY;\n }\n}\n\nclass Validate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"validate\", /* hasChildren = */ true);\n this.formatTest = getStringOption(attributes.formatTest, [\n \"warning\",\n \"disabled\",\n \"error\",\n ]);\n this.id = attributes.id || \"\";\n this.nullTest = getStringOption(attributes.nullTest, [\n \"disabled\",\n \"error\",\n \"warning\",\n ]);\n this.scriptTest = getStringOption(attributes.scriptTest, [\n \"error\",\n \"disabled\",\n \"warning\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.picture = null;\n this.script = null;\n }\n}\n\nclass Value extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"value\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.override = getInteger({\n data: attributes.override,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n\n // One-of properties\n this.arc = null;\n this.boolean = null;\n this.date = null;\n this.dateTime = null;\n this.decimal = null;\n this.exData = null;\n this.float = null;\n this.image = null;\n this.integer = null;\n this.line = null;\n this.rectangle = null;\n this.text = null;\n this.time = null;\n }\n\n [$setValue](value) {\n const parent = this[$getParent]();\n if (parent instanceof Field) {\n if (parent.ui && parent.ui.imageEdit) {\n if (!this.image) {\n this.image = new Image({});\n this[$appendChild](this.image);\n }\n this.image[$content] = value[$content];\n return;\n }\n }\n\n const valueName = value[$nodeName];\n if (this[valueName] !== null) {\n this[valueName][$content] = value[$content];\n return;\n }\n\n // Reset all the properties.\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (obj instanceof XFAObject) {\n this[name] = null;\n this[$removeChild](obj);\n }\n }\n\n this[value[$nodeName]] = value;\n this[$appendChild](value);\n }\n\n [$text]() {\n if (this.exData) {\n if (typeof this.exData[$content] === \"string\") {\n return this.exData[$content].trim();\n }\n return this.exData[$content][$text]().trim();\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"image\") {\n continue;\n }\n const obj = this[name];\n if (obj instanceof XFAObject) {\n return (obj[$content] || \"\").toString().trim();\n }\n }\n return null;\n }\n\n [$toHTML](availableSpace) {\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n return obj[$toHTML](availableSpace);\n }\n\n return HTMLResult.EMPTY;\n }\n}\n\nclass Variables extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"variables\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n [$isTransparent]() {\n return true;\n }\n}\n\nclass TemplateNamespace {\n static [$buildXFAObject](name, attributes) {\n if (TemplateNamespace.hasOwnProperty(name)) {\n const node = TemplateNamespace[name](attributes);\n node[$setSetAttributes](attributes);\n return node;\n }\n return undefined;\n }\n\n static appearanceFilter(attrs) {\n return new AppearanceFilter(attrs);\n }\n\n static arc(attrs) {\n return new Arc(attrs);\n }\n\n static area(attrs) {\n return new Area(attrs);\n }\n\n static assist(attrs) {\n return new Assist(attrs);\n }\n\n static barcode(attrs) {\n return new Barcode(attrs);\n }\n\n static bind(attrs) {\n return new Bind(attrs);\n }\n\n static bindItems(attrs) {\n return new BindItems(attrs);\n }\n\n static bookend(attrs) {\n return new Bookend(attrs);\n }\n\n static boolean(attrs) {\n return new BooleanElement(attrs);\n }\n\n static border(attrs) {\n return new Border(attrs);\n }\n\n static break(attrs) {\n return new Break(attrs);\n }\n\n static breakAfter(attrs) {\n return new BreakAfter(attrs);\n }\n\n static breakBefore(attrs) {\n return new BreakBefore(attrs);\n }\n\n static button(attrs) {\n return new Button(attrs);\n }\n\n static calculate(attrs) {\n return new Calculate(attrs);\n }\n\n static caption(attrs) {\n return new Caption(attrs);\n }\n\n static certificate(attrs) {\n return new Certificate(attrs);\n }\n\n static certificates(attrs) {\n return new Certificates(attrs);\n }\n\n static checkButton(attrs) {\n return new CheckButton(attrs);\n }\n\n static choiceList(attrs) {\n return new ChoiceList(attrs);\n }\n\n static color(attrs) {\n return new Color(attrs);\n }\n\n static comb(attrs) {\n return new Comb(attrs);\n }\n\n static connect(attrs) {\n return new Connect(attrs);\n }\n\n static contentArea(attrs) {\n return new ContentArea(attrs);\n }\n\n static corner(attrs) {\n return new Corner(attrs);\n }\n\n static date(attrs) {\n return new DateElement(attrs);\n }\n\n static dateTime(attrs) {\n return new DateTime(attrs);\n }\n\n static dateTimeEdit(attrs) {\n return new DateTimeEdit(attrs);\n }\n\n static decimal(attrs) {\n return new Decimal(attrs);\n }\n\n static defaultUi(attrs) {\n return new DefaultUi(attrs);\n }\n\n static desc(attrs) {\n return new Desc(attrs);\n }\n\n static digestMethod(attrs) {\n return new DigestMethod(attrs);\n }\n\n static digestMethods(attrs) {\n return new DigestMethods(attrs);\n }\n\n static draw(attrs) {\n return new Draw(attrs);\n }\n\n static edge(attrs) {\n return new Edge(attrs);\n }\n\n static encoding(attrs) {\n return new Encoding(attrs);\n }\n\n static encodings(attrs) {\n return new Encodings(attrs);\n }\n\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n\n static encryptData(attrs) {\n return new EncryptData(attrs);\n }\n\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n\n static encryptionMethod(attrs) {\n return new EncryptionMethod(attrs);\n }\n\n static encryptionMethods(attrs) {\n return new EncryptionMethods(attrs);\n }\n\n static event(attrs) {\n return new Event(attrs);\n }\n\n static exData(attrs) {\n return new ExData(attrs);\n }\n\n static exObject(attrs) {\n return new ExObject(attrs);\n }\n\n static exclGroup(attrs) {\n return new ExclGroup(attrs);\n }\n\n static execute(attrs) {\n return new Execute(attrs);\n }\n\n static extras(attrs) {\n return new Extras(attrs);\n }\n\n static field(attrs) {\n return new Field(attrs);\n }\n\n static fill(attrs) {\n return new Fill(attrs);\n }\n\n static filter(attrs) {\n return new Filter(attrs);\n }\n\n static float(attrs) {\n return new Float(attrs);\n }\n\n static font(attrs) {\n return new Font(attrs);\n }\n\n static format(attrs) {\n return new Format(attrs);\n }\n\n static handler(attrs) {\n return new Handler(attrs);\n }\n\n static hyphenation(attrs) {\n return new Hyphenation(attrs);\n }\n\n static image(attrs) {\n return new Image(attrs);\n }\n\n static imageEdit(attrs) {\n return new ImageEdit(attrs);\n }\n\n static integer(attrs) {\n return new Integer(attrs);\n }\n\n static issuers(attrs) {\n return new Issuers(attrs);\n }\n\n static items(attrs) {\n return new Items(attrs);\n }\n\n static keep(attrs) {\n return new Keep(attrs);\n }\n\n static keyUsage(attrs) {\n return new KeyUsage(attrs);\n }\n\n static line(attrs) {\n return new Line(attrs);\n }\n\n static linear(attrs) {\n return new Linear(attrs);\n }\n\n static lockDocument(attrs) {\n return new LockDocument(attrs);\n }\n\n static manifest(attrs) {\n return new Manifest(attrs);\n }\n\n static margin(attrs) {\n return new Margin(attrs);\n }\n\n static mdp(attrs) {\n return new Mdp(attrs);\n }\n\n static medium(attrs) {\n return new Medium(attrs);\n }\n\n static message(attrs) {\n return new Message(attrs);\n }\n\n static numericEdit(attrs) {\n return new NumericEdit(attrs);\n }\n\n static occur(attrs) {\n return new Occur(attrs);\n }\n\n static oid(attrs) {\n return new Oid(attrs);\n }\n\n static oids(attrs) {\n return new Oids(attrs);\n }\n\n static overflow(attrs) {\n return new Overflow(attrs);\n }\n\n static pageArea(attrs) {\n return new PageArea(attrs);\n }\n\n static pageSet(attrs) {\n return new PageSet(attrs);\n }\n\n static para(attrs) {\n return new Para(attrs);\n }\n\n static passwordEdit(attrs) {\n return new PasswordEdit(attrs);\n }\n\n static pattern(attrs) {\n return new Pattern(attrs);\n }\n\n static picture(attrs) {\n return new Picture(attrs);\n }\n\n static proto(attrs) {\n return new Proto(attrs);\n }\n\n static radial(attrs) {\n return new Radial(attrs);\n }\n\n static reason(attrs) {\n return new Reason(attrs);\n }\n\n static reasons(attrs) {\n return new Reasons(attrs);\n }\n\n static rectangle(attrs) {\n return new Rectangle(attrs);\n }\n\n static ref(attrs) {\n return new RefElement(attrs);\n }\n\n static script(attrs) {\n return new Script(attrs);\n }\n\n static setProperty(attrs) {\n return new SetProperty(attrs);\n }\n\n static signData(attrs) {\n return new SignData(attrs);\n }\n\n static signature(attrs) {\n return new Signature(attrs);\n }\n\n static signing(attrs) {\n return new Signing(attrs);\n }\n\n static solid(attrs) {\n return new Solid(attrs);\n }\n\n static speak(attrs) {\n return new Speak(attrs);\n }\n\n static stipple(attrs) {\n return new Stipple(attrs);\n }\n\n static subform(attrs) {\n return new Subform(attrs);\n }\n\n static subformSet(attrs) {\n return new SubformSet(attrs);\n }\n\n static subjectDN(attrs) {\n return new SubjectDN(attrs);\n }\n\n static subjectDNs(attrs) {\n return new SubjectDNs(attrs);\n }\n\n static submit(attrs) {\n return new Submit(attrs);\n }\n\n static template(attrs) {\n return new Template(attrs);\n }\n\n static text(attrs) {\n return new Text(attrs);\n }\n\n static textEdit(attrs) {\n return new TextEdit(attrs);\n }\n\n static time(attrs) {\n return new Time(attrs);\n }\n\n static timeStamp(attrs) {\n return new TimeStamp(attrs);\n }\n\n static toolTip(attrs) {\n return new ToolTip(attrs);\n }\n\n static traversal(attrs) {\n return new Traversal(attrs);\n }\n\n static traverse(attrs) {\n return new Traverse(attrs);\n }\n\n static ui(attrs) {\n return new Ui(attrs);\n }\n\n static validate(attrs) {\n return new Validate(attrs);\n }\n\n static value(attrs) {\n return new Value(attrs);\n }\n\n static variables(attrs) {\n return new Variables(attrs);\n }\n}\n\nexport {\n BindItems,\n Field,\n Items,\n SetProperty,\n Template,\n TemplateNamespace,\n Text,\n Value,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $extra,\n $flushHTML,\n $getSubformParent,\n $getTemplateRoot,\n $isSplittable,\n $isThereMoreWidth,\n} from \"./xfa_object.js\";\nimport { measureToString } from \"./html_utils.js\";\n\n// Subform and ExclGroup have a layout so they share these functions.\n\n/**\n * How layout works ?\n *\n * A container has an initial space (with a width and a height) to fit in,\n * which means that once all the children have been added then\n * the total width/height must be lower than the given ones in\n * the initial space.\n * So if the container has known dimensions and these ones are ok with the\n * space then continue else we return HTMLResult.FAILURE: it's up to the\n * parent to deal with this failure (e.g. if parent layout is lr-tb and\n * we fail to add a child at end of line (lr) then we try to add it on the\n * next line).\n * And then we run through the children, each child gets its initial space\n * in calling its parent $getAvailableSpace method\n * (see _filteredChildrenGenerator and $childrenToHTML in xfa_object.js)\n * then we try to layout child in its space. If everything is ok then we add\n * the result to its parent through $addHTML which will recompute the available\n * space in parent according to its layout property else we return\n * HTMLResult.Failure.\n * Before a failure some children may have been layed out: they've been saved in\n * [$extra].children and [$extra] has properties generator and failingNode\n * in order to save the state where we were before a failure.\n * This [$extra].children property is useful when a container has to be splited.\n * So if a container is unbreakable, we must delete its [$extra] property before\n * returning.\n */\n\nfunction createLine(node, children) {\n return {\n name: \"div\",\n attributes: {\n class: [node.layout === \"lr-tb\" ? \"xfaLr\" : \"xfaRl\"],\n },\n children,\n };\n}\n\nfunction flushHTML(node) {\n if (!node[$extra]) {\n return null;\n }\n\n const attributes = node[$extra].attributes;\n const html = {\n name: \"div\",\n attributes,\n children: node[$extra].children,\n };\n\n if (node[$extra].failingNode) {\n const htmlFromFailing = node[$extra].failingNode[$flushHTML]();\n if (htmlFromFailing) {\n if (node.layout.endsWith(\"-tb\")) {\n html.children.push(createLine(node, [htmlFromFailing]));\n } else {\n html.children.push(htmlFromFailing);\n }\n }\n }\n\n if (html.children.length === 0) {\n return null;\n }\n\n return html;\n}\n\nfunction addHTML(node, html, bbox) {\n const extra = node[$extra];\n const availableSpace = extra.availableSpace;\n\n const [x, y, w, h] = bbox;\n switch (node.layout) {\n case \"position\": {\n extra.width = Math.max(extra.width, x + w);\n extra.height = Math.max(extra.height, y + h);\n extra.children.push(html);\n break;\n }\n case \"lr-tb\":\n case \"rl-tb\":\n if (!extra.line || extra.attempt === 1) {\n extra.line = createLine(node, []);\n extra.children.push(extra.line);\n extra.numberInLine = 0;\n }\n\n extra.numberInLine += 1;\n extra.line.children.push(html);\n\n if (extra.attempt === 0) {\n // Add the element on the line\n extra.currentWidth += w;\n extra.height = Math.max(extra.height, extra.prevHeight + h);\n } else {\n extra.currentWidth = w;\n extra.prevHeight = extra.height;\n extra.height += h;\n\n // The element has been added on a new line so switch to line mode now.\n extra.attempt = 0;\n }\n extra.width = Math.max(extra.width, extra.currentWidth);\n break;\n case \"rl-row\":\n case \"row\": {\n extra.children.push(html);\n extra.width += w;\n extra.height = Math.max(extra.height, h);\n const height = measureToString(extra.height);\n for (const child of extra.children) {\n child.attributes.style.height = height;\n }\n break;\n }\n case \"table\": {\n extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n extra.height += h;\n extra.children.push(html);\n break;\n }\n case \"tb\": {\n // Even if the subform can possibly take all the available width,\n // we must compute the final width as it is in order to be able\n // for example to center the subform within its parent.\n extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n extra.height += h;\n extra.children.push(html);\n break;\n }\n }\n}\n\nfunction getAvailableSpace(node) {\n const availableSpace = node[$extra].availableSpace;\n const marginV = node.margin\n ? node.margin.topInset + node.margin.bottomInset\n : 0;\n const marginH = node.margin\n ? node.margin.leftInset + node.margin.rightInset\n : 0;\n\n switch (node.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (node[$extra].attempt === 0) {\n return {\n width: availableSpace.width - marginH - node[$extra].currentWidth,\n height: availableSpace.height - marginV - node[$extra].prevHeight,\n };\n }\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height,\n };\n case \"rl-row\":\n case \"row\":\n const width = node[$extra].columnWidths\n .slice(node[$extra].currentColumn)\n .reduce((a, x) => a + x);\n return { width, height: availableSpace.height - marginH };\n case \"table\":\n case \"tb\":\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height,\n };\n case \"position\":\n default:\n return availableSpace;\n }\n}\n\nfunction getTransformedBBox(node) {\n // Take into account rotation and anchor to get the real bounding box.\n let w = node.w === \"\" ? NaN : node.w;\n let h = node.h === \"\" ? NaN : node.h;\n let [centerX, centerY] = [0, 0];\n switch (node.anchorType || \"\") {\n case \"bottomCenter\":\n [centerX, centerY] = [w / 2, h];\n break;\n case \"bottomLeft\":\n [centerX, centerY] = [0, h];\n break;\n case \"bottomRight\":\n [centerX, centerY] = [w, h];\n break;\n case \"middleCenter\":\n [centerX, centerY] = [w / 2, h / 2];\n break;\n case \"middleLeft\":\n [centerX, centerY] = [0, h / 2];\n break;\n case \"middleRight\":\n [centerX, centerY] = [w, h / 2];\n break;\n case \"topCenter\":\n [centerX, centerY] = [w / 2, 0];\n break;\n case \"topRight\":\n [centerX, centerY] = [w, 0];\n break;\n }\n\n let x, y;\n switch (node.rotate || 0) {\n case 0:\n [x, y] = [-centerX, -centerY];\n break;\n case 90:\n [x, y] = [-centerY, centerX];\n [w, h] = [h, -w];\n break;\n case 180:\n [x, y] = [centerX, centerY];\n [w, h] = [-w, -h];\n break;\n case 270:\n [x, y] = [centerY, -centerX];\n [w, h] = [-h, w];\n break;\n }\n\n return [\n node.x + x + Math.min(0, w),\n node.y + y + Math.min(0, h),\n Math.abs(w),\n Math.abs(h),\n ];\n}\n\n/**\n * Returning true means that the node will be layed out\n * else the layout will go to its next step (changing of line\n * in case of lr-tb or changing content area...).\n */\nfunction checkDimensions(node, space) {\n if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\n return true;\n }\n\n if (node.w === 0 || node.h === 0) {\n return true;\n }\n\n const ERROR = 2;\n const parent = node[$getSubformParent]();\n const attempt = (parent[$extra] && parent[$extra].attempt) || 0;\n\n const [, y, w, h] = getTransformedBBox(node);\n switch (parent.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (attempt === 0) {\n // Try to put an element in the line.\n\n if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n // Not enough height.\n return false;\n }\n\n if (node.w !== \"\") {\n if (Math.round(w - space.width) <= ERROR) {\n return true;\n }\n if (parent[$extra].numberInLine === 0) {\n return space.height > ERROR;\n }\n\n return false;\n }\n\n return space.width > ERROR;\n }\n\n // No layout failure.\n\n // Put the element on the line but we can fail\n // and then in the second step (next line) we'll accept.\n if (node.w !== \"\") {\n return Math.round(w - space.width) <= ERROR;\n }\n\n return space.width > ERROR;\n }\n\n // Second attempt: try to put the element on the next line.\n\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n // We cannot fail.\n return true;\n }\n\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n return false;\n }\n\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n\n return space.height > ERROR;\n case \"table\":\n case \"tb\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n // If the node has a height then check if it's fine with available height.\n // If the node is breakable then we can return true.\n if (node.h !== \"\" && !node[$isSplittable]()) {\n return Math.round(h - space.height) <= ERROR;\n }\n // Else wait and see: this node will be layed out itself\n // in the provided space and maybe a children won't fit.\n\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n\n return space.height > ERROR;\n case \"position\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n if (node.h === \"\" || Math.round(h + y - space.height) <= ERROR) {\n return true;\n }\n\n const area = node[$getTemplateRoot]()[$extra].currentContentArea;\n return h + y > area.h;\n case \"rl-row\":\n case \"row\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n if (node.h !== \"\") {\n return Math.round(h - space.height) <= ERROR;\n }\n return true;\n default:\n // No layout, so accept everything.\n return true;\n }\n}\n\nexport { addHTML, checkDimensions, flushHTML, getAvailableSpace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $content,\n $extra,\n $getParent,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $nodeName,\n $pushGlyphs,\n $text,\n $toStyle,\n XFAObject,\n} from \"./xfa_object.js\";\nimport { createValidAbsoluteUrl, warn } from \"../../shared/util.js\";\nimport { getMeasurement, stripQuotes } from \"./utils.js\";\nimport { selectFont } from \"./fonts.js\";\nimport { TextMeasure } from \"./text.js\";\n\nfunction measureToString(m) {\n if (typeof m === \"string\") {\n return \"0px\";\n }\n\n return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\n}\n\nconst converters = {\n anchorType(node, style) {\n const parent = node[$getSubformParent]();\n if (!parent || (parent.layout && parent.layout !== \"position\")) {\n // anchorType is only used in a positioned layout.\n return;\n }\n\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n switch (node.anchorType) {\n case \"bottomCenter\":\n style.transform += \"translate(-50%, -100%)\";\n break;\n case \"bottomLeft\":\n style.transform += \"translate(0,-100%)\";\n break;\n case \"bottomRight\":\n style.transform += \"translate(-100%,-100%)\";\n break;\n case \"middleCenter\":\n style.transform += \"translate(-50%,-50%)\";\n break;\n case \"middleLeft\":\n style.transform += \"translate(0,-50%)\";\n break;\n case \"middleRight\":\n style.transform += \"translate(-100%,-50%)\";\n break;\n case \"topCenter\":\n style.transform += \"translate(-50%,0)\";\n break;\n case \"topRight\":\n style.transform += \"translate(-100%,0)\";\n break;\n }\n },\n dimensions(node, style) {\n const parent = node[$getSubformParent]();\n let width = node.w;\n const height = node.h;\n if (parent.layout && parent.layout.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let w;\n if (colSpan === -1) {\n w = extra.columnWidths\n .slice(extra.currentColumn)\n .reduce((a, x) => a + x, 0);\n extra.currentColumn = 0;\n } else {\n w = extra.columnWidths\n .slice(extra.currentColumn, extra.currentColumn + colSpan)\n .reduce((a, x) => a + x, 0);\n extra.currentColumn =\n (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n }\n\n if (!isNaN(w)) {\n width = node.w = w;\n }\n }\n\n if (width !== \"\") {\n style.width = measureToString(width);\n } else {\n style.width = \"auto\";\n }\n\n if (height !== \"\") {\n style.height = measureToString(height);\n } else {\n style.height = \"auto\";\n }\n },\n position(node, style) {\n const parent = node[$getSubformParent]();\n if (parent && parent.layout && parent.layout !== \"position\") {\n // IRL, we've some x/y in tb layout.\n // Specs say x/y is only used in positioned layout.\n return;\n }\n\n style.position = \"absolute\";\n style.left = measureToString(node.x);\n style.top = measureToString(node.y);\n },\n rotate(node, style) {\n if (node.rotate) {\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n style.transform += `rotate(-${node.rotate}deg)`;\n style.transformOrigin = \"top left\";\n }\n },\n presence(node, style) {\n switch (node.presence) {\n case \"invisible\":\n style.visibility = \"hidden\";\n break;\n case \"hidden\":\n case \"inactive\":\n style.display = \"none\";\n break;\n }\n },\n hAlign(node, style) {\n if (node[$nodeName] === \"para\") {\n switch (node.hAlign) {\n case \"justifyAll\":\n style.textAlign = \"justify-all\";\n break;\n case \"radix\":\n // TODO: implement this correctly !\n style.textAlign = \"left\";\n break;\n default:\n style.textAlign = node.hAlign;\n }\n } else {\n switch (node.hAlign) {\n case \"left\":\n style.alignSelf = \"start\";\n break;\n case \"center\":\n style.alignSelf = \"center\";\n break;\n case \"right\":\n style.alignSelf = \"end\";\n break;\n }\n }\n },\n margin(node, style) {\n if (node.margin) {\n style.margin = node.margin[$toStyle]().margin;\n }\n },\n};\n\nfunction setMinMaxDimensions(node, style) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\") {\n if (node.minW > 0) {\n style.minWidth = measureToString(node.minW);\n }\n if (node.maxW > 0) {\n style.maxWidth = measureToString(node.maxW);\n }\n if (node.minH > 0) {\n style.minHeight = measureToString(node.minH);\n }\n if (node.maxH > 0) {\n style.maxHeight = measureToString(node.maxH);\n }\n }\n}\n\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\n const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder);\n if (typeof text === \"string\") {\n measure.addString(text);\n } else {\n text[$pushGlyphs](measure);\n }\n\n return measure.compute(width);\n}\n\nfunction layoutNode(node, availableSpace) {\n let height = null;\n let width = null;\n let isBroken = false;\n\n if ((!node.w || !node.h) && node.value) {\n let marginH = 0;\n let marginV = 0;\n if (node.margin) {\n marginH = node.margin.leftInset + node.margin.rightInset;\n marginV = node.margin.topInset + node.margin.bottomInset;\n }\n\n let lineHeight = null;\n let margin = null;\n if (node.para) {\n margin = Object.create(null);\n lineHeight = node.para.lineHeight === \"\" ? null : node.para.lineHeight;\n margin.top = node.para.spaceAbove === \"\" ? 0 : node.para.spaceAbove;\n margin.bottom = node.para.spaceBelow === \"\" ? 0 : node.para.spaceBelow;\n margin.left = node.para.marginLeft === \"\" ? 0 : node.para.marginLeft;\n margin.right = node.para.marginRight === \"\" ? 0 : node.para.marginRight;\n }\n\n let font = node.font;\n if (!font) {\n const root = node[$getTemplateRoot]();\n let parent = node[$getParent]();\n while (parent && parent !== root) {\n if (parent.font) {\n font = parent.font;\n break;\n }\n parent = parent[$getParent]();\n }\n }\n\n const maxWidth = (!node.w ? availableSpace.width : node.w) - marginH;\n const fontFinder = node[$globalData].fontFinder;\n if (\n node.value.exData &&\n node.value.exData[$content] &&\n node.value.exData.contentType === \"text/html\"\n ) {\n const res = layoutText(\n node.value.exData[$content],\n font,\n margin,\n lineHeight,\n fontFinder,\n maxWidth\n );\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n } else {\n const text = node.value[$text]();\n if (text) {\n const res = layoutText(\n text,\n font,\n margin,\n lineHeight,\n fontFinder,\n maxWidth\n );\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n }\n }\n\n if (width !== null && !node.w) {\n width += marginH;\n }\n\n if (height !== null && !node.h) {\n height += marginV;\n }\n }\n return { w: width, h: height, isBroken };\n}\n\nfunction computeBbox(node, html, availableSpace) {\n let bbox;\n if (node.w !== \"\" && node.h !== \"\") {\n bbox = [node.x, node.y, node.w, node.h];\n } else {\n if (!availableSpace) {\n return null;\n }\n let width = node.w;\n if (width === \"\") {\n if (node.maxW === 0) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\" && parent.w !== \"\") {\n width = 0;\n } else {\n width = node.minW;\n }\n } else {\n width = Math.min(node.maxW, availableSpace.width);\n }\n html.attributes.style.width = measureToString(width);\n }\n\n let height = node.h;\n if (height === \"\") {\n if (node.maxH === 0) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\" && parent.h !== \"\") {\n height = 0;\n } else {\n height = node.minH;\n }\n } else {\n height = Math.min(node.maxH, availableSpace.height);\n }\n html.attributes.style.height = measureToString(height);\n }\n\n bbox = [node.x, node.y, width, height];\n }\n return bbox;\n}\n\nfunction fixDimensions(node) {\n const parent = node[$getSubformParent]();\n if (parent.layout && parent.layout.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let width;\n if (colSpan === -1) {\n width = extra.columnWidths\n .slice(extra.currentColumn)\n .reduce((a, w) => a + w, 0);\n } else {\n width = extra.columnWidths\n .slice(extra.currentColumn, extra.currentColumn + colSpan)\n .reduce((a, w) => a + w, 0);\n }\n if (!isNaN(width)) {\n node.w = width;\n }\n }\n\n if (parent.layout && parent.layout !== \"position\") {\n // Useless in this context.\n node.x = node.y = 0;\n }\n\n if (node.layout === \"table\") {\n if (node.w === \"\" && Array.isArray(node.columnWidths)) {\n node.w = node.columnWidths.reduce((a, x) => a + x, 0);\n }\n }\n}\n\nfunction layoutClass(node) {\n switch (node.layout) {\n case \"position\":\n return \"xfaPosition\";\n case \"lr-tb\":\n return \"xfaLrTb\";\n case \"rl-row\":\n return \"xfaRlRow\";\n case \"rl-tb\":\n return \"xfaRlTb\";\n case \"row\":\n return \"xfaRow\";\n case \"table\":\n return \"xfaTable\";\n case \"tb\":\n return \"xfaTb\";\n default:\n return \"xfaPosition\";\n }\n}\n\nfunction toStyle(node, ...names) {\n const style = Object.create(null);\n for (const name of names) {\n const value = node[name];\n if (value === null) {\n continue;\n }\n if (converters.hasOwnProperty(name)) {\n converters[name](node, style);\n continue;\n }\n\n if (value instanceof XFAObject) {\n const newStyle = value[$toStyle]();\n if (newStyle) {\n Object.assign(style, newStyle);\n } else {\n warn(`(DEBUG) - XFA - style for ${name} not implemented yet`);\n }\n }\n }\n return style;\n}\n\nfunction createWrapper(node, html) {\n const { attributes } = html;\n const { style } = attributes;\n\n const wrapper = {\n name: \"div\",\n attributes: {\n class: [\"xfaWrapper\"],\n style: Object.create(null),\n },\n children: [],\n };\n\n attributes.class.push(\"xfaWrapped\");\n\n if (node.border) {\n const { widths, insets } = node.border[$extra];\n let width, height;\n let top = insets[0];\n let left = insets[3];\n const insetsH = insets[0] + insets[2];\n const insetsW = insets[1] + insets[3];\n switch (node.border.hand) {\n case \"even\":\n top -= widths[0] / 2;\n left -= widths[3] / 2;\n width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`;\n height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`;\n break;\n case \"left\":\n top -= widths[0];\n left -= widths[3];\n width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\n height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\n break;\n case \"right\":\n width = insetsW ? `calc(100% - ${insetsW}px)` : \"100%\";\n height = insetsH ? `calc(100% - ${insetsH}px)` : \"100%\";\n break;\n }\n const classNames = [\"xfaBorder\"];\n if (isPrintOnly(node.border)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const border = {\n name: \"div\",\n attributes: {\n class: classNames,\n style: {\n top: `${top}px`,\n left: `${left}px`,\n width,\n height,\n },\n },\n children: [],\n };\n\n for (const key of [\n \"border\",\n \"borderWidth\",\n \"borderColor\",\n \"borderRadius\",\n \"borderStyle\",\n ]) {\n if (style[key] !== undefined) {\n border.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n wrapper.children.push(border, html);\n } else {\n wrapper.children.push(html);\n }\n\n for (const key of [\n \"background\",\n \"backgroundClip\",\n \"top\",\n \"left\",\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\",\n \"transform\",\n \"transformOrigin\",\n \"visibility\",\n ]) {\n if (style[key] !== undefined) {\n wrapper.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n\n if (style.position === \"absolute\") {\n wrapper.attributes.style.position = \"absolute\";\n } else {\n wrapper.attributes.style.position = \"relative\";\n }\n delete style.position;\n\n if (style.alignSelf) {\n wrapper.attributes.style.alignSelf = style.alignSelf;\n delete style.alignSelf;\n }\n\n return wrapper;\n}\n\nfunction fixTextIndent(styles) {\n const indent = getMeasurement(styles.textIndent, \"0px\");\n if (indent >= 0) {\n return;\n }\n\n // If indent is negative then it's a hanging indent.\n const align = styles.textAlign === \"right\" ? \"right\" : \"left\";\n const name = \"padding\" + (align === \"left\" ? \"Left\" : \"Right\");\n const padding = getMeasurement(styles[name], \"0px\");\n styles[name] = `${padding - indent}px`;\n}\n\nfunction setAccess(node, classNames) {\n switch (node.access) {\n case \"nonInteractive\":\n classNames.push(\"xfaNonInteractive\");\n break;\n case \"readOnly\":\n classNames.push(\"xfaReadOnly\");\n break;\n case \"protected\":\n classNames.push(\"xfaDisabled\");\n break;\n }\n}\n\nfunction isPrintOnly(node) {\n return (\n node.relevant.length > 0 &&\n !node.relevant[0].excluded &&\n node.relevant[0].viewname === \"print\"\n );\n}\n\nfunction getCurrentPara(node) {\n const stack = node[$getTemplateRoot]()[$extra].paraStack;\n return stack.length ? stack[stack.length - 1] : null;\n}\n\nfunction setPara(node, nodeStyle, value) {\n if (value.attributes.class && value.attributes.class.includes(\"xfaRich\")) {\n if (nodeStyle) {\n if (node.h === \"\") {\n nodeStyle.height = \"auto\";\n }\n if (node.w === \"\") {\n nodeStyle.width = \"auto\";\n }\n }\n\n const para = getCurrentPara(node);\n if (para) {\n // By definition exData are external data so para\n // has no effect on it.\n const valueStyle = value.attributes.style;\n valueStyle.display = \"flex\";\n valueStyle.flexDirection = \"column\";\n switch (para.vAlign) {\n case \"top\":\n valueStyle.justifyContent = \"start\";\n break;\n case \"bottom\":\n valueStyle.justifyContent = \"end\";\n break;\n case \"middle\":\n valueStyle.justifyContent = \"center\";\n break;\n }\n\n const paraStyle = para[$toStyle]();\n for (const [key, val] of Object.entries(paraStyle)) {\n if (!(key in valueStyle)) {\n valueStyle[key] = val;\n }\n }\n }\n }\n}\n\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\n if (!fontFinder) {\n // The font cannot be found in the pdf so use the default one.\n delete style.fontFamily;\n return;\n }\n\n const name = stripQuotes(xfaFont.typeface);\n style.fontFamily = `\"${name}\"`;\n\n const typeface = fontFinder.find(name);\n if (typeface) {\n const { fontFamily } = typeface.regular.cssFontInfo;\n if (fontFamily !== name) {\n style.fontFamily = `\"${fontFamily}\"`;\n }\n\n const para = getCurrentPara(node);\n if (para && para.lineHeight !== \"\") {\n return;\n }\n\n if (style.lineHeight) {\n // Already something so don't overwrite.\n return;\n }\n\n const pdfFont = selectFont(xfaFont, typeface);\n if (pdfFont) {\n style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\n }\n }\n}\n\nfunction fixURL(str) {\n const absoluteUrl = createValidAbsoluteUrl(str, /* baseUrl = */ null, {\n addDefaultProtocol: true,\n tryConvertEncoding: true,\n });\n return absoluteUrl ? absoluteUrl.href : null;\n}\n\nexport {\n computeBbox,\n createWrapper,\n fixDimensions,\n fixTextIndent,\n fixURL,\n isPrintOnly,\n layoutClass,\n layoutNode,\n measureToString,\n setAccess,\n setFontFamily,\n setMinMaxDimensions,\n setPara,\n toStyle,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $globalData } from \"./xfa_object.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass FontFinder {\n constructor(pdfFonts) {\n this.fonts = new Map();\n this.cache = new Map();\n this.warned = new Set();\n this.defaultFont = null;\n this.add(pdfFonts);\n }\n\n add(pdfFonts, reallyMissingFonts = null) {\n for (const pdfFont of pdfFonts) {\n this.addPdfFont(pdfFont);\n }\n for (const pdfFont of this.fonts.values()) {\n if (!pdfFont.regular) {\n pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\n }\n }\n\n if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\n return;\n }\n const myriad = this.fonts.get(\"PdfJS-Fallback-PdfJS-XFA\");\n for (const missing of reallyMissingFonts) {\n this.fonts.set(missing, myriad);\n }\n }\n\n addPdfFont(pdfFont) {\n const cssFontInfo = pdfFont.cssFontInfo;\n const name = cssFontInfo.fontFamily;\n let font = this.fonts.get(name);\n if (!font) {\n font = Object.create(null);\n this.fonts.set(name, font);\n if (!this.defaultFont) {\n this.defaultFont = font;\n }\n }\n let property = \"\";\n const fontWeight = parseFloat(cssFontInfo.fontWeight);\n if (parseFloat(cssFontInfo.italicAngle) !== 0) {\n property = fontWeight >= 700 ? \"bolditalic\" : \"italic\";\n } else if (fontWeight >= 700) {\n property = \"bold\";\n }\n\n if (!property) {\n if (\n pdfFont.name.includes(\"Bold\") ||\n (pdfFont.psName && pdfFont.psName.includes(\"Bold\"))\n ) {\n property = \"bold\";\n }\n if (\n pdfFont.name.includes(\"Italic\") ||\n pdfFont.name.endsWith(\"It\") ||\n (pdfFont.psName &&\n (pdfFont.psName.includes(\"Italic\") || pdfFont.psName.endsWith(\"It\")))\n ) {\n property += \"italic\";\n }\n }\n\n if (!property) {\n property = \"regular\";\n }\n\n font[property] = pdfFont;\n }\n\n getDefault() {\n return this.defaultFont;\n }\n\n find(fontName, mustWarn = true) {\n let font = this.fonts.get(fontName) || this.cache.get(fontName);\n if (font) {\n return font;\n }\n\n const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi;\n let name = fontName.replace(pattern, \"\");\n font = this.fonts.get(name);\n if (font) {\n this.cache.set(fontName, font);\n return font;\n }\n name = name.toLowerCase();\n\n const maybe = [];\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n\n if (maybe.length === 0) {\n for (const [, pdfFont] of this.fonts.entries()) {\n if (\n pdfFont.regular.name &&\n pdfFont.regular.name\n .replace(pattern, \"\")\n .toLowerCase()\n .startsWith(name)\n ) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length === 0) {\n name = name.replace(/psmt|mt/gi, \"\");\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length === 0) {\n for (const pdfFont of this.fonts.values()) {\n if (\n pdfFont.regular.name &&\n pdfFont.regular.name\n .replace(pattern, \"\")\n .toLowerCase()\n .startsWith(name)\n ) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length >= 1) {\n if (maybe.length !== 1 && mustWarn) {\n warn(`XFA - Too many choices to guess the correct font: ${fontName}`);\n }\n this.cache.set(fontName, maybe[0]);\n return maybe[0];\n }\n\n if (mustWarn && !this.warned.has(fontName)) {\n this.warned.add(fontName);\n warn(`XFA - Cannot find the font: ${fontName}`);\n }\n return null;\n }\n}\n\nfunction selectFont(xfaFont, typeface) {\n if (xfaFont.posture === \"italic\") {\n if (xfaFont.weight === \"bold\") {\n return typeface.bolditalic;\n }\n return typeface.italic;\n } else if (xfaFont.weight === \"bold\") {\n return typeface.bold;\n }\n\n return typeface.regular;\n}\n\nfunction getMetrics(xfaFont, real = false) {\n let pdfFont = null;\n if (xfaFont) {\n const name = stripQuotes(xfaFont.typeface);\n const typeface = xfaFont[$globalData].fontFinder.find(name);\n pdfFont = selectFont(xfaFont, typeface);\n }\n\n if (!pdfFont) {\n return {\n lineHeight: 12,\n lineGap: 2,\n lineNoGap: 10,\n };\n }\n\n const size = xfaFont.size || 10;\n const lineHeight = pdfFont.lineHeight\n ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight)\n : 1.2;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n return {\n lineHeight: lineHeight * size,\n lineGap: lineGap * size,\n lineNoGap: Math.max(1, lineHeight - lineGap) * size,\n };\n}\n\nexport { FontFinder, getMetrics, selectFont };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { selectFont } from \"./fonts.js\";\n\nconst WIDTH_FACTOR = 1.02;\n\nclass FontInfo {\n constructor(xfaFont, margin, lineHeight, fontFinder) {\n this.lineHeight = lineHeight;\n this.paraMargin = margin || {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n\n if (!xfaFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n\n this.xfaFont = {\n typeface: xfaFont.typeface,\n posture: xfaFont.posture,\n weight: xfaFont.weight,\n size: xfaFont.size,\n letterSpacing: xfaFont.letterSpacing,\n };\n const typeface = fontFinder.find(xfaFont.typeface);\n if (!typeface) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n\n this.pdfFont = selectFont(xfaFont, typeface);\n\n if (!this.pdfFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n }\n }\n\n defaultFont(fontFinder) {\n // TODO: Add a default font based on Liberation.\n const font =\n fontFinder.find(\"Helvetica\", false) ||\n fontFinder.find(\"Myriad Pro\", false) ||\n fontFinder.find(\"Arial\", false) ||\n fontFinder.getDefault();\n if (font && font.regular) {\n const pdfFont = font.regular;\n const info = pdfFont.cssFontInfo;\n const xfaFont = {\n typeface: info.fontFamily,\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0,\n };\n return [pdfFont, xfaFont];\n }\n\n const xfaFont = {\n typeface: \"Courier\",\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0,\n };\n return [null, xfaFont];\n }\n}\n\nclass FontSelector {\n constructor(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fontFinder\n ) {\n this.fontFinder = fontFinder;\n this.stack = [\n new FontInfo(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fontFinder\n ),\n ];\n }\n\n pushData(xfaFont, margin, lineHeight) {\n const lastFont = this.stack[this.stack.length - 1];\n for (const name of [\n \"typeface\",\n \"posture\",\n \"weight\",\n \"size\",\n \"letterSpacing\",\n ]) {\n if (!xfaFont[name]) {\n xfaFont[name] = lastFont.xfaFont[name];\n }\n }\n\n for (const name of [\"top\", \"bottom\", \"left\", \"right\"]) {\n if (isNaN(margin[name])) {\n margin[name] = lastFont.paraMargin[name];\n }\n }\n\n const fontInfo = new FontInfo(\n xfaFont,\n margin,\n lineHeight || lastFont.lineHeight,\n this.fontFinder\n );\n if (!fontInfo.pdfFont) {\n fontInfo.pdfFont = lastFont.pdfFont;\n }\n\n this.stack.push(fontInfo);\n }\n\n popFont() {\n this.stack.pop();\n }\n\n topFont() {\n return this.stack[this.stack.length - 1];\n }\n}\n\n/**\n * Compute a text area dimensions based on font metrics.\n */\nclass TextMeasure {\n constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\n this.glyphs = [];\n this.fontSelector = new FontSelector(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fonts\n );\n this.extraHeight = 0;\n }\n\n pushData(xfaFont, margin, lineHeight) {\n this.fontSelector.pushData(xfaFont, margin, lineHeight);\n }\n\n popFont(xfaFont) {\n return this.fontSelector.popFont();\n }\n\n addPara() {\n const lastFont = this.fontSelector.topFont();\n this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\n }\n\n addString(str) {\n if (!str) {\n return;\n }\n\n const lastFont = this.fontSelector.topFont();\n const fontSize = lastFont.xfaFont.size;\n if (lastFont.pdfFont) {\n const letterSpacing = lastFont.xfaFont.letterSpacing;\n const pdfFont = lastFont.pdfFont;\n const fontLineHeight = pdfFont.lineHeight || 1.2;\n const lineHeight =\n lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n const noGap = fontLineHeight - lineGap;\n const firstLineHeight = Math.max(1, noGap) * fontSize;\n const scale = fontSize / 1000;\n const fallbackWidth =\n pdfFont.defaultWidth || pdfFont.charsToGlyphs(\" \")[0].width;\n\n for (const line of str.split(/[\\u2029\\n]/)) {\n const encodedLine = pdfFont.encodeString(line).join(\"\");\n const glyphs = pdfFont.charsToGlyphs(encodedLine);\n\n for (const glyph of glyphs) {\n const width = glyph.width || fallbackWidth;\n this.glyphs.push([\n width * scale + letterSpacing,\n lineHeight,\n firstLineHeight,\n glyph.unicode,\n false,\n ]);\n }\n\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n return;\n }\n\n // When we have no font in the pdf, just use the font size as default width.\n for (const line of str.split(/[\\u2029\\n]/)) {\n for (const char of line.split(\"\")) {\n this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\n }\n\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n }\n\n compute(maxWidth) {\n let lastSpacePos = -1,\n lastSpaceWidth = 0,\n width = 0,\n height = 0,\n currentLineWidth = 0,\n currentLineHeight = 0;\n let isBroken = false;\n let isFirstLine = true;\n\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] =\n this.glyphs[i];\n const isSpace = char === \" \";\n const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\n if (isEOL) {\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isFirstLine = false;\n continue;\n }\n\n if (isSpace) {\n if (currentLineWidth + glyphWidth > maxWidth) {\n // We can break here but the space is not taken into account.\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isBroken = true;\n isFirstLine = false;\n } else {\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n lastSpaceWidth = currentLineWidth;\n currentLineWidth += glyphWidth;\n lastSpacePos = i;\n }\n continue;\n }\n\n if (currentLineWidth + glyphWidth > maxWidth) {\n // We must break to the last white position (if available)\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n if (lastSpacePos !== -1) {\n i = lastSpacePos;\n width = Math.max(width, lastSpaceWidth);\n currentLineWidth = 0;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n } else {\n // Just break in the middle of the word\n width = Math.max(width, currentLineWidth);\n currentLineWidth = glyphWidth;\n }\n isBroken = true;\n isFirstLine = false;\n\n continue;\n }\n\n currentLineWidth += glyphWidth;\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n }\n\n width = Math.max(width, currentLineWidth);\n height += currentLineHeight + this.extraHeight;\n\n return { width: WIDTH_FACTOR * width, height, isBroken };\n }\n}\n\nexport { TextMeasure };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $getAttributes,\n $getChildren,\n $nodeName,\n $setValue,\n $toString,\n $uid,\n} from \"./xfa_object.js\";\n\nclass DataHandler {\n constructor(root, data) {\n this.data = data;\n this.dataset = root.datasets || null;\n }\n\n serialize(storage) {\n const stack = [[-1, this.data[$getChildren]()]];\n\n while (stack.length > 0) {\n const last = stack[stack.length - 1];\n const [i, children] = last;\n if (i + 1 === children.length) {\n stack.pop();\n continue;\n }\n\n const child = children[++last[0]];\n const storageEntry = storage.get(child[$uid]);\n if (storageEntry) {\n child[$setValue](storageEntry);\n } else {\n const attributes = child[$getAttributes]();\n for (const value of attributes.values()) {\n const entry = storage.get(value[$uid]);\n if (entry) {\n value[$setValue](entry);\n break;\n }\n }\n }\n\n const nodes = child[$getChildren]();\n if (nodes.length > 0) {\n stack.push([-1, nodes]);\n }\n }\n\n const buf = [\n `<xfa:datasets xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\">`,\n ];\n if (this.dataset) {\n // Dump nodes other than data: they can contains for example\n // some data for choice lists.\n for (const child of this.dataset[$getChildren]()) {\n if (child[$nodeName] !== \"data\") {\n child[$toString](buf);\n }\n }\n }\n this.data[$toString](buf);\n buf.push(\"</xfa:datasets>\");\n\n return buf.join(\"\");\n }\n}\n\nexport { DataHandler };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $clean,\n $content,\n $finalize,\n $globalData,\n $isCDATAXml,\n $nsAttributes,\n $onChild,\n $onText,\n $setId,\n} from \"./xfa_object.js\";\nimport { XMLParserBase, XMLParserErrorCode } from \"../xml_parser.js\";\nimport { Builder } from \"./builder.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass XFAParser extends XMLParserBase {\n constructor(rootNameSpace = null, richText = false) {\n super();\n this._builder = new Builder(rootNameSpace);\n this._stack = [];\n this._globalData = {\n usedTypefaces: new Set(),\n };\n this._ids = new Map();\n this._current = this._builder.buildRoot(this._ids);\n this._errorCode = XMLParserErrorCode.NoError;\n this._whiteRegex = /^\\s+$/;\n this._nbsps = /\\xa0+/g;\n this._richText = richText;\n }\n\n parse(data) {\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n\n this._current[$finalize]();\n\n return this._current.element;\n }\n\n onText(text) {\n // Normally by definition a &nbsp is unbreakable\n // but in real life Acrobat can break strings on &nbsp.\n text = text.replace(this._nbsps, match => match.slice(1) + \" \");\n if (this._richText || this._current[$acceptWhitespace]()) {\n this._current[$onText](text, this._richText);\n return;\n }\n\n if (this._whiteRegex.test(text)) {\n return;\n }\n this._current[$onText](text.trim());\n }\n\n onCdata(text) {\n this._current[$onText](text);\n }\n\n _mkAttributes(attributes, tagName) {\n // Transform attributes into an object and get out\n // namespaces information.\n let namespace = null;\n let prefixes = null;\n const attributeObj = Object.create({});\n for (const { name, value } of attributes) {\n if (name === \"xmlns\") {\n if (!namespace) {\n namespace = value;\n } else {\n warn(`XFA - multiple namespace definition in <${tagName}>`);\n }\n } else if (name.startsWith(\"xmlns:\")) {\n const prefix = name.substring(\"xmlns:\".length);\n if (!prefixes) {\n prefixes = [];\n }\n prefixes.push({ prefix, value });\n } else {\n const i = name.indexOf(\":\");\n if (i === -1) {\n attributeObj[name] = value;\n } else {\n // Attributes can have their own namespace.\n // For example in data, we can have <foo xfa:dataNode=\"dataGroup\"/>\n let nsAttrs = attributeObj[$nsAttributes];\n if (!nsAttrs) {\n nsAttrs = attributeObj[$nsAttributes] = Object.create(null);\n }\n const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\n let attrs = nsAttrs[ns];\n if (!attrs) {\n attrs = nsAttrs[ns] = Object.create(null);\n }\n attrs[attrName] = value;\n }\n }\n }\n\n return [namespace, prefixes, attributeObj];\n }\n\n _getNameAndPrefix(name, nsAgnostic) {\n const i = name.indexOf(\":\");\n if (i === -1) {\n return [name, null];\n }\n return [name.substring(i + 1), nsAgnostic ? \"\" : name.substring(0, i)];\n }\n\n onBeginElement(tagName, attributes, isEmpty) {\n const [namespace, prefixes, attributesObj] = this._mkAttributes(\n attributes,\n tagName\n );\n const [name, nsPrefix] = this._getNameAndPrefix(\n tagName,\n this._builder.isNsAgnostic()\n );\n const node = this._builder.build({\n nsPrefix,\n name,\n attributes: attributesObj,\n namespace,\n prefixes,\n });\n node[$globalData] = this._globalData;\n\n if (isEmpty) {\n // No children: just push the node into its parent.\n node[$finalize]();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n return;\n }\n\n this._stack.push(this._current);\n this._current = node;\n }\n\n onEndElement(name) {\n const node = this._current;\n if (node[$isCDATAXml]() && typeof node[$content] === \"string\") {\n const parser = new XFAParser();\n parser._globalData = this._globalData;\n const root = parser.parse(node[$content]);\n node[$content] = null;\n node[$onChild](root);\n }\n\n node[$finalize]();\n this._current = this._stack.pop();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { XFAParser };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $cleanup,\n $finalize,\n $ids,\n $isNsAgnostic,\n $nsAttributes,\n $onChild,\n $resolvePrototypes,\n $root,\n XFAObject,\n} from \"./xfa_object.js\";\nimport { NamespaceSetUp } from \"./setup.js\";\nimport { Template } from \"./template.js\";\nimport { UnknownNamespace } from \"./unknown.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass Root extends XFAObject {\n constructor(ids) {\n super(-1, \"root\", Object.create(null));\n this.element = null;\n this[$ids] = ids;\n }\n\n [$onChild](child) {\n this.element = child;\n return true;\n }\n\n [$finalize]() {\n super[$finalize]();\n if (this.element.template instanceof Template) {\n // Set the root element in $ids using a symbol in order\n // to avoid conflict with real IDs.\n this[$ids].set($root, this.element);\n\n this.element.template[$resolvePrototypes](this[$ids]);\n this.element.template[$ids] = this[$ids];\n }\n }\n}\n\nclass Empty extends XFAObject {\n constructor() {\n super(-1, \"\", Object.create(null));\n }\n\n [$onChild](_) {\n return false;\n }\n}\n\nclass Builder {\n constructor(rootNameSpace = null) {\n this._namespaceStack = [];\n this._nsAgnosticLevel = 0;\n\n // Each prefix has its own stack\n this._namespacePrefixes = new Map();\n this._namespaces = new Map();\n this._nextNsId = Math.max(\n ...Object.values(NamespaceIds).map(({ id }) => id)\n );\n this._currentNamespace =\n rootNameSpace || new UnknownNamespace(++this._nextNsId);\n }\n\n buildRoot(ids) {\n return new Root(ids);\n }\n\n build({ nsPrefix, name, attributes, namespace, prefixes }) {\n const hasNamespaceDef = namespace !== null;\n if (hasNamespaceDef) {\n // Define the current namespace to use.\n this._namespaceStack.push(this._currentNamespace);\n this._currentNamespace = this._searchNamespace(namespace);\n }\n\n if (prefixes) {\n // The xml node may have namespace prefix definitions\n this._addNamespacePrefix(prefixes);\n }\n\n if (attributes.hasOwnProperty($nsAttributes)) {\n // Only support xfa-data namespace.\n const dataTemplate = NamespaceSetUp.datasets;\n const nsAttrs = attributes[$nsAttributes];\n let xfaAttrs = null;\n for (const [ns, attrs] of Object.entries(nsAttrs)) {\n const nsToUse = this._getNamespaceToUse(ns);\n if (nsToUse === dataTemplate) {\n xfaAttrs = { xfa: attrs };\n break;\n }\n }\n if (xfaAttrs) {\n attributes[$nsAttributes] = xfaAttrs;\n } else {\n delete attributes[$nsAttributes];\n }\n }\n\n const namespaceToUse = this._getNamespaceToUse(nsPrefix);\n const node =\n (namespaceToUse && namespaceToUse[$buildXFAObject](name, attributes)) ||\n new Empty();\n\n if (node[$isNsAgnostic]()) {\n this._nsAgnosticLevel++;\n }\n\n // In case the node has some namespace things,\n // we must pop the different stacks.\n if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\n node[$cleanup] = {\n hasNamespace: hasNamespaceDef,\n prefixes,\n nsAgnostic: node[$isNsAgnostic](),\n };\n }\n\n return node;\n }\n\n isNsAgnostic() {\n return this._nsAgnosticLevel > 0;\n }\n\n _searchNamespace(nsName) {\n let ns = this._namespaces.get(nsName);\n if (ns) {\n return ns;\n }\n for (const [name, { check }] of Object.entries(NamespaceIds)) {\n if (check(nsName)) {\n ns = NamespaceSetUp[name];\n if (ns) {\n this._namespaces.set(nsName, ns);\n return ns;\n }\n // The namespace is known but not handled.\n break;\n }\n }\n\n ns = new UnknownNamespace(++this._nextNsId);\n this._namespaces.set(nsName, ns);\n return ns;\n }\n\n _addNamespacePrefix(prefixes) {\n for (const { prefix, value } of prefixes) {\n const namespace = this._searchNamespace(value);\n let prefixStack = this._namespacePrefixes.get(prefix);\n if (!prefixStack) {\n prefixStack = [];\n this._namespacePrefixes.set(prefix, prefixStack);\n }\n prefixStack.push(namespace);\n }\n }\n\n _getNamespaceToUse(prefix) {\n if (!prefix) {\n return this._currentNamespace;\n }\n const prefixStack = this._namespacePrefixes.get(prefix);\n if (prefixStack && prefixStack.length > 0) {\n return prefixStack[prefixStack.length - 1];\n }\n\n warn(`Unknown namespace prefix: ${prefix}.`);\n return null;\n }\n\n clean(data) {\n const { hasNamespace, prefixes, nsAgnostic } = data;\n if (hasNamespace) {\n this._currentNamespace = this._namespaceStack.pop();\n }\n if (prefixes) {\n prefixes.forEach(({ prefix }) => {\n this._namespacePrefixes.get(prefix).pop();\n });\n }\n if (nsAgnostic) {\n this._nsAgnosticLevel--;\n }\n }\n}\n\nexport { Builder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ConfigNamespace } from \"./config.js\";\nimport { ConnectionSetNamespace } from \"./connection_set.js\";\nimport { DatasetsNamespace } from \"./datasets.js\";\nimport { LocaleSetNamespace } from \"./locale_set.js\";\nimport { SignatureNamespace } from \"./signature.js\";\nimport { StylesheetNamespace } from \"./stylesheet.js\";\nimport { TemplateNamespace } from \"./template.js\";\nimport { XdpNamespace } from \"./xdp.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nconst NamespaceSetUp = {\n config: ConfigNamespace,\n connection: ConnectionSetNamespace,\n datasets: DatasetsNamespace,\n localeSet: LocaleSetNamespace,\n signature: SignatureNamespace,\n stylesheet: StylesheetNamespace,\n template: TemplateNamespace,\n xdp: XdpNamespace,\n xhtml: XhtmlNamespace,\n};\n\nexport { NamespaceSetUp };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $content,\n $finalize,\n ContentObject,\n IntegerObject,\n Option01,\n Option10,\n OptionObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\nimport { shadow, warn } from \"../../shared/util.js\";\n\nconst CONFIG_NS_ID = NamespaceIds.config.id;\n\nclass Acrobat extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat\", /* hasChildren = */ true);\n this.acrobat7 = null;\n this.autoSave = null;\n this.common = null;\n this.validate = null;\n this.validateApprovalSignatures = null;\n this.submitUrl = new XFAObjectArray();\n }\n}\n\nclass Acrobat7 extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat7\", /* hasChildren = */ true);\n this.dynamicRender = null;\n }\n}\n\nclass ADBE_JSConsole extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSConsole\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\n\nclass ADBE_JSDebugger extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSDebugger\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\n\nclass AddSilentPrint extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addSilentPrint\");\n }\n}\n\nclass AddViewerPreferences extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addViewerPreferences\");\n }\n}\n\nclass AdjustData extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adjustData\");\n }\n}\n\nclass AdobeExtensionLevel extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adobeExtensionLevel\", 0, n => n >= 1 && n <= 8);\n }\n}\n\nclass Agent extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"agent\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.common = new XFAObjectArray();\n }\n}\n\nclass AlwaysEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"alwaysEmbed\");\n }\n}\n\nclass Amd extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"amd\");\n }\n}\n\nclass Area extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"area\");\n this.level = getInteger({\n data: attributes.level,\n defaultValue: 0,\n validate: n => n >= 1 && n <= 3,\n });\n this.name = getStringOption(attributes.name, [\n \"\",\n \"barcode\",\n \"coreinit\",\n \"deviceDriver\",\n \"font\",\n \"general\",\n \"layout\",\n \"merge\",\n \"script\",\n \"signature\",\n \"sourceSet\",\n \"templateCache\",\n ]);\n }\n}\n\nclass Attributes extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"attributes\", [\"preserve\", \"delegate\", \"ignore\"]);\n }\n}\n\nclass AutoSave extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"autoSave\", [\"disabled\", \"enabled\"]);\n }\n}\n\nclass Base extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"base\");\n }\n}\n\nclass BatchOutput extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"batchOutput\");\n this.format = getStringOption(attributes.format, [\n \"none\",\n \"concat\",\n \"zip\",\n \"zipCompress\",\n ]);\n }\n}\n\nclass BehaviorOverride extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"behaviorOverride\");\n }\n\n [$finalize]() {\n this[$content] = new Map(\n this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x => x.includes(\":\"))\n .map(x => x.split(\":\", 2))\n );\n }\n}\n\nclass Cache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"cache\", /* hasChildren = */ true);\n this.templateCache = null;\n }\n}\n\nclass Change extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"change\");\n }\n}\n\nclass Common extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"common\", /* hasChildren = */ true);\n this.data = null;\n this.locale = null;\n this.localeSet = null;\n this.messaging = null;\n this.suppressBanner = null;\n this.template = null;\n this.validationMessaging = null;\n this.versionControl = null;\n this.log = new XFAObjectArray();\n }\n}\n\nclass Compress extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compress\");\n this.scope = getStringOption(attributes.scope, [\"imageOnly\", \"document\"]);\n }\n}\n\nclass CompressLogicalStructure extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressLogicalStructure\");\n }\n}\n\nclass CompressObjectStream extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressObjectStream\");\n }\n}\n\nclass Compression extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compression\", /* hasChildren = */ true);\n this.compressLogicalStructure = null;\n this.compressObjectStream = null;\n this.level = null;\n this.type = null;\n }\n}\n\nclass Config extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"config\", /* hasChildren = */ true);\n this.acrobat = null;\n this.present = null;\n this.trace = null;\n this.agent = new XFAObjectArray();\n }\n}\n\nclass Conformance extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"conformance\", [\"A\", \"B\"]);\n }\n}\n\nclass ContentCopy extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"contentCopy\");\n }\n}\n\nclass Copies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"copies\", 1, n => n >= 1);\n }\n}\n\nclass Creator extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"creator\");\n }\n}\n\nclass CurrentPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"currentPage\", 0, n => n >= 0);\n }\n}\n\nclass Data extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"data\", /* hasChildren = */ true);\n this.adjustData = null;\n this.attributes = null;\n this.incrementalLoad = null;\n this.outputXSL = null;\n this.range = null;\n this.record = null;\n this.startNode = null;\n this.uri = null;\n this.window = null;\n this.xsl = null;\n this.excludeNS = new XFAObjectArray();\n this.transform = new XFAObjectArray();\n }\n}\n\nclass Debug extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"debug\", /* hasChildren = */ true);\n this.uri = null;\n }\n}\n\nclass DefaultTypeface extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"defaultTypeface\");\n this.writingScript = getStringOption(attributes.writingScript, [\n \"*\",\n \"Arabic\",\n \"Cyrillic\",\n \"EastEuropeanRoman\",\n \"Greek\",\n \"Hebrew\",\n \"Japanese\",\n \"Korean\",\n \"Roman\",\n \"SimplifiedChinese\",\n \"Thai\",\n \"TraditionalChinese\",\n \"Vietnamese\",\n ]);\n }\n}\n\nclass Destination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"destination\", [\n \"pdf\",\n \"pcl\",\n \"ps\",\n \"webClient\",\n \"zpl\",\n ]);\n }\n}\n\nclass DocumentAssembly extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"documentAssembly\");\n }\n}\n\nclass Driver extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"driver\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass DuplexOption extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"duplexOption\", [\n \"simplex\",\n \"duplexFlipLongEdge\",\n \"duplexFlipShortEdge\",\n ]);\n }\n}\n\nclass DynamicRender extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"dynamicRender\", [\"forbidden\", \"required\"]);\n }\n}\n\nclass Embed extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"embed\");\n }\n}\n\nclass Encrypt extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encrypt\");\n }\n}\n\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryption\", /* hasChildren = */ true);\n this.encrypt = null;\n this.encryptionLevel = null;\n this.permissions = null;\n }\n}\n\nclass EncryptionLevel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryptionLevel\", [\"40bit\", \"128bit\"]);\n }\n}\n\nclass Enforce extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"enforce\");\n }\n}\n\nclass Equate extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equate\");\n\n this.force = getInteger({\n data: attributes.force,\n defaultValue: 1,\n validate: n => n === 0,\n });\n\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n }\n}\n\nclass EquateRange extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equateRange\");\n\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n this._unicodeRange = attributes.unicodeRange || \"\";\n }\n\n get unicodeRange() {\n const ranges = [];\n const unicodeRegex = /U\\+([0-9a-fA-F]+)/;\n const unicodeRange = this._unicodeRange;\n for (let range of unicodeRange\n .split(\",\")\n .map(x => x.trim())\n .filter(x => !!x)) {\n range = range.split(\"-\", 2).map(x => {\n const found = x.match(unicodeRegex);\n if (!found) {\n return 0;\n }\n return parseInt(found[1], 16);\n });\n if (range.length === 1) {\n range.push(range[0]);\n }\n ranges.push(range);\n }\n return shadow(this, \"unicodeRange\", ranges);\n }\n}\n\nclass Exclude extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"exclude\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(\n x =>\n x &&\n [\n \"calculate\",\n \"close\",\n \"enter\",\n \"exit\",\n \"initialize\",\n \"ready\",\n \"validate\",\n ].includes(x)\n );\n }\n}\n\nclass ExcludeNS extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"excludeNS\");\n }\n}\n\nclass FlipLabel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"flipLabel\", [\"usePrinterSetting\", \"on\", \"off\"]);\n }\n}\n\nclass FontInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"fontInfo\", /* hasChildren = */ true);\n this.embed = null;\n this.map = null;\n this.subsetBelow = null;\n this.alwaysEmbed = new XFAObjectArray();\n this.defaultTypeface = new XFAObjectArray();\n this.neverEmbed = new XFAObjectArray();\n }\n}\n\nclass FormFieldFilling extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"formFieldFilling\");\n }\n}\n\nclass GroupParent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"groupParent\");\n }\n}\n\nclass IfEmpty extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ifEmpty\", [\n \"dataValue\",\n \"dataGroup\",\n \"ignore\",\n \"remove\",\n ]);\n }\n}\n\nclass IncludeXDPContent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"includeXDPContent\");\n }\n}\n\nclass IncrementalLoad extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalLoad\", [\"none\", \"forwardOnly\"]);\n }\n}\n\nclass IncrementalMerge extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalMerge\");\n }\n}\n\nclass Interactive extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"interactive\");\n }\n}\n\nclass Jog extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"jog\", [\"usePrinterSetting\", \"none\", \"pageSet\"]);\n }\n}\n\nclass LabelPrinter extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"labelPrinter\", /* hasChildren = */ true);\n this.name = getStringOption(attributes.name, [\"zpl\", \"dpl\", \"ipl\", \"tcpl\"]);\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass Layout extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"layout\", [\"paginate\", \"panel\"]);\n }\n}\n\nclass Level extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"level\", 0, n => n > 0);\n }\n}\n\nclass Linearized extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"linearized\");\n }\n}\n\nclass Locale extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"locale\");\n }\n}\n\nclass LocaleSet extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"localeSet\");\n }\n}\n\nclass Log extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"log\", /* hasChildren = */ true);\n this.mode = null;\n this.threshold = null;\n this.to = null;\n this.uri = null;\n }\n}\n\n// Renamed in MapElement to avoid confusion with usual js Map.\nclass MapElement extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"map\", /* hasChildren = */ true);\n this.equate = new XFAObjectArray();\n this.equateRange = new XFAObjectArray();\n }\n}\n\nclass MediumInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mediumInfo\", /* hasChildren = */ true);\n this.map = null;\n }\n}\n\nclass Message extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"message\", /* hasChildren = */ true);\n this.msgId = null;\n this.severity = null;\n }\n}\n\nclass Messaging extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"messaging\", /* hasChildren = */ true);\n this.message = new XFAObjectArray();\n }\n}\n\nclass Mode extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mode\", [\"append\", \"overwrite\"]);\n }\n}\n\nclass ModifyAnnots extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"modifyAnnots\");\n }\n}\n\nclass MsgId extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"msgId\", 1, n => n >= 1);\n }\n}\n\nclass NameAttr extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"nameAttr\");\n }\n}\n\nclass NeverEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"neverEmbed\");\n }\n}\n\nclass NumberOfCopies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"numberOfCopies\", null, n => n >= 2 && n <= 5);\n }\n}\n\nclass OpenAction extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"openAction\", /* hasChildren = */ true);\n this.destination = null;\n }\n}\n\nclass Output extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"output\", /* hasChildren = */ true);\n this.to = null;\n this.type = null;\n this.uri = null;\n }\n}\n\nclass OutputBin extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputBin\");\n }\n}\n\nclass OutputXSL extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputXSL\", /* hasChildren = */ true);\n this.uri = null;\n }\n}\n\nclass Overprint extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"overprint\", [\"none\", \"both\", \"draw\", \"field\"]);\n }\n}\n\nclass Packets extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"packets\");\n }\n\n [$finalize]() {\n if (this[$content] === \"*\") {\n return;\n }\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x =>\n [\"config\", \"datasets\", \"template\", \"xfdf\", \"xslt\"].includes(x)\n );\n }\n}\n\nclass PageOffset extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageOffset\");\n this.x = getInteger({\n data: attributes.x,\n defaultValue: \"useXDCSetting\",\n validate: n => true,\n });\n this.y = getInteger({\n data: attributes.y,\n defaultValue: \"useXDCSetting\",\n validate: n => true,\n });\n }\n}\n\nclass PageRange extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageRange\");\n }\n\n [$finalize]() {\n const numbers = this[$content]\n .trim()\n .split(/\\s+/)\n .map(x => parseInt(x, 10));\n const ranges = [];\n for (let i = 0, ii = numbers.length; i < ii; i += 2) {\n ranges.push(numbers.slice(i, i + 2));\n }\n this[$content] = ranges;\n }\n}\n\nclass Pagination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pagination\", [\n \"simplex\",\n \"duplexShortEdge\",\n \"duplexLongEdge\",\n ]);\n }\n}\n\nclass PaginationOverride extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"paginationOverride\", [\n \"none\",\n \"forceDuplex\",\n \"forceDuplexLongEdge\",\n \"forceDuplexShortEdge\",\n \"forceSimplex\",\n ]);\n }\n}\n\nclass Part extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"part\", 1, n => false);\n }\n}\n\nclass Pcl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pcl\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.pageOffset = null;\n this.staple = null;\n this.xdc = null;\n }\n}\n\nclass Pdf extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdf\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.adobeExtensionLevel = null;\n this.batchOutput = null;\n this.compression = null;\n this.creator = null;\n this.encryption = null;\n this.fontInfo = null;\n this.interactive = null;\n this.linearized = null;\n this.openAction = null;\n this.pdfa = null;\n this.producer = null;\n this.renderPolicy = null;\n this.scriptModel = null;\n this.silentPrint = null;\n this.submitFormat = null;\n this.tagged = null;\n this.version = null;\n this.viewerPreferences = null;\n this.xdc = null;\n }\n}\n\nclass Pdfa extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdfa\", /* hasChildren = */ true);\n this.amd = null;\n this.conformance = null;\n this.includeXDPContent = null;\n this.part = null;\n }\n}\n\nclass Permissions extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"permissions\", /* hasChildren = */ true);\n this.accessibleContent = null;\n this.change = null;\n this.contentCopy = null;\n this.documentAssembly = null;\n this.formFieldFilling = null;\n this.modifyAnnots = null;\n this.plaintextMetadata = null;\n this.print = null;\n this.printHighQuality = null;\n }\n}\n\nclass PickTrayByPDFSize extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pickTrayByPDFSize\");\n }\n}\n\nclass Picture extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"picture\");\n }\n\n // TODO: check the validity of the picture clause.\n // See page 1150 in the spec.\n}\n\nclass PlaintextMetadata extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"plaintextMetadata\");\n }\n}\n\nclass Presence extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"presence\", [\n \"preserve\",\n \"dissolve\",\n \"dissolveStructure\",\n \"ignore\",\n \"remove\",\n ]);\n }\n}\n\nclass Present extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"present\", /* hasChildren = */ true);\n this.behaviorOverride = null;\n this.cache = null;\n this.common = null;\n this.copies = null;\n this.destination = null;\n this.incrementalMerge = null;\n this.layout = null;\n this.output = null;\n this.overprint = null;\n this.pagination = null;\n this.paginationOverride = null;\n this.script = null;\n this.validate = null;\n this.xdp = null;\n this.driver = new XFAObjectArray();\n this.labelPrinter = new XFAObjectArray();\n this.pcl = new XFAObjectArray();\n this.pdf = new XFAObjectArray();\n this.ps = new XFAObjectArray();\n this.submitUrl = new XFAObjectArray();\n this.webClient = new XFAObjectArray();\n this.zpl = new XFAObjectArray();\n }\n}\n\nclass Print extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"print\");\n }\n}\n\nclass PrintHighQuality extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printHighQuality\");\n }\n}\n\nclass PrintScaling extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printScaling\", [\"appdefault\", \"noScaling\"]);\n }\n}\n\nclass PrinterName extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printerName\");\n }\n}\n\nclass Producer extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"producer\");\n }\n}\n\nclass Ps extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ps\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.staple = null;\n this.xdc = null;\n }\n}\n\nclass Range extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"range\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s*,\\s*/, 2)\n .map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10)))\n .filter(range => range.every(x => !isNaN(x)))\n .map(range => {\n if (range.length === 1) {\n range.push(range[0]);\n }\n return range;\n });\n }\n}\n\nclass Record extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"record\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim();\n const n = parseInt(this[$content], 10);\n if (!isNaN(n) && n >= 0) {\n this[$content] = n;\n }\n }\n}\n\nclass Relevant extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"relevant\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/);\n }\n}\n\nclass Rename extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"rename\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim();\n // String must be a XFA name: same as XML one except that there\n // is no colon.\n if (\n this[$content].toLowerCase().startsWith(\"xml\") ||\n this[$content].match(new RegExp(\"[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*\", \"u\"))\n ) {\n warn(\"XFA - Rename: invalid XFA name\");\n }\n }\n}\n\nclass RenderPolicy extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"renderPolicy\", [\"server\", \"client\"]);\n }\n}\n\nclass RunScripts extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"runScripts\", [\"both\", \"client\", \"none\", \"server\"]);\n }\n}\n\nclass Script extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"script\", /* hasChildren = */ true);\n this.currentPage = null;\n this.exclude = null;\n this.runScripts = null;\n }\n}\n\nclass ScriptModel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"scriptModel\", [\"XFA\", \"none\"]);\n }\n}\n\nclass Severity extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"severity\", [\n \"ignore\",\n \"error\",\n \"information\",\n \"trace\",\n \"warning\",\n ]);\n }\n}\n\nclass SilentPrint extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"silentPrint\", /* hasChildren = */ true);\n this.addSilentPrint = null;\n this.printerName = null;\n }\n}\n\nclass Staple extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"staple\");\n this.mode = getStringOption(attributes.mode, [\n \"usePrinterSetting\",\n \"on\",\n \"off\",\n ]);\n }\n}\n\nclass StartNode extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startNode\");\n }\n}\n\nclass StartPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startPage\", 0, n => true);\n }\n}\n\nclass SubmitFormat extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitFormat\", [\n \"html\",\n \"delegate\",\n \"fdf\",\n \"xml\",\n \"pdf\",\n ]);\n }\n}\n\nclass SubmitUrl extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitUrl\");\n }\n}\n\nclass SubsetBelow extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"subsetBelow\", 100, n => n >= 0 && n <= 100);\n }\n}\n\nclass SuppressBanner extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"suppressBanner\");\n }\n}\n\nclass Tagged extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"tagged\");\n }\n}\n\nclass Template extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"template\", /* hasChildren = */ true);\n this.base = null;\n this.relevant = null;\n this.startPage = null;\n this.uri = null;\n this.xsl = null;\n }\n}\n\nclass Threshold extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"threshold\", [\n \"trace\",\n \"error\",\n \"information\",\n \"warning\",\n ]);\n }\n}\n\nclass To extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"to\", [\n \"null\",\n \"memory\",\n \"stderr\",\n \"stdout\",\n \"system\",\n \"uri\",\n ]);\n }\n}\n\nclass TemplateCache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"templateCache\");\n this.maxEntries = getInteger({\n data: attributes.maxEntries,\n defaultValue: 5,\n validate: n => n >= 0,\n });\n }\n}\n\nclass Trace extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"trace\", /* hasChildren = */ true);\n this.area = new XFAObjectArray();\n }\n}\n\nclass Transform extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"transform\", /* hasChildren = */ true);\n this.groupParent = null;\n this.ifEmpty = null;\n this.nameAttr = null;\n this.picture = null;\n this.presence = null;\n this.rename = null;\n this.whitespace = null;\n }\n}\n\nclass Type extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"type\", [\n \"none\",\n \"ascii85\",\n \"asciiHex\",\n \"ccittfax\",\n \"flate\",\n \"lzw\",\n \"runLength\",\n \"native\",\n \"xdp\",\n \"mergedXDP\",\n ]);\n }\n}\n\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"uri\");\n }\n}\n\nclass Validate extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validate\", [\n \"preSubmit\",\n \"prePrint\",\n \"preExecute\",\n \"preSave\",\n ]);\n }\n}\n\nclass ValidateApprovalSignatures extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validateApprovalSignatures\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x => [\"docReady\", \"postSign\"].includes(x));\n }\n}\n\nclass ValidationMessaging extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validationMessaging\", [\n \"allMessagesIndividually\",\n \"allMessagesTogether\",\n \"firstMessageOnly\",\n \"noMessages\",\n ]);\n }\n}\n\nclass Version extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"version\", [\"1.7\", \"1.6\", \"1.5\", \"1.4\", \"1.3\", \"1.2\"]);\n }\n}\n\nclass VersionControl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"VersionControl\");\n this.outputBelow = getStringOption(attributes.outputBelow, [\n \"warn\",\n \"error\",\n \"update\",\n ]);\n this.sourceAbove = getStringOption(attributes.sourceAbove, [\n \"warn\",\n \"error\",\n ]);\n this.sourceBelow = getStringOption(attributes.sourceBelow, [\n \"update\",\n \"maintain\",\n ]);\n }\n}\n\nclass ViewerPreferences extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"viewerPreferences\", /* hasChildren = */ true);\n this.ADBE_JSConsole = null;\n this.ADBE_JSDebugger = null;\n this.addViewerPreferences = null;\n this.duplexOption = null;\n this.enforce = null;\n this.numberOfCopies = null;\n this.pageRange = null;\n this.pickTrayByPDFSize = null;\n this.printScaling = null;\n }\n}\n\nclass WebClient extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"webClient\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass Whitespace extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"whitespace\", [\n \"preserve\",\n \"ltrim\",\n \"normalize\",\n \"rtrim\",\n \"trim\",\n ]);\n }\n}\n\nclass Window extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"window\");\n }\n\n [$finalize]() {\n const pair = this[$content]\n .trim()\n .split(/\\s*,\\s*/, 2)\n .map(x => parseInt(x, 10));\n if (pair.some(x => isNaN(x))) {\n this[$content] = [0, 0];\n return;\n }\n if (pair.length === 1) {\n pair.push(pair[0]);\n }\n this[$content] = pair;\n }\n}\n\nclass Xdc extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdc\", /* hasChildren = */ true);\n this.uri = new XFAObjectArray();\n this.xsl = new XFAObjectArray();\n }\n}\n\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdp\", /* hasChildren = */ true);\n this.packets = null;\n }\n}\n\nclass Xsl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xsl\", /* hasChildren = */ true);\n this.debug = null;\n this.uri = null;\n }\n}\n\nclass Zpl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"zpl\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass ConfigNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConfigNamespace.hasOwnProperty(name)) {\n return ConfigNamespace[name](attributes);\n }\n return undefined;\n }\n\n static acrobat(attrs) {\n return new Acrobat(attrs);\n }\n\n static acrobat7(attrs) {\n return new Acrobat7(attrs);\n }\n\n static ADBE_JSConsole(attrs) {\n return new ADBE_JSConsole(attrs);\n }\n\n static ADBE_JSDebugger(attrs) {\n return new ADBE_JSDebugger(attrs);\n }\n\n static addSilentPrint(attrs) {\n return new AddSilentPrint(attrs);\n }\n\n static addViewerPreferences(attrs) {\n return new AddViewerPreferences(attrs);\n }\n\n static adjustData(attrs) {\n return new AdjustData(attrs);\n }\n\n static adobeExtensionLevel(attrs) {\n return new AdobeExtensionLevel(attrs);\n }\n\n static agent(attrs) {\n return new Agent(attrs);\n }\n\n static alwaysEmbed(attrs) {\n return new AlwaysEmbed(attrs);\n }\n\n static amd(attrs) {\n return new Amd(attrs);\n }\n\n static area(attrs) {\n return new Area(attrs);\n }\n\n static attributes(attrs) {\n return new Attributes(attrs);\n }\n\n static autoSave(attrs) {\n return new AutoSave(attrs);\n }\n\n static base(attrs) {\n return new Base(attrs);\n }\n\n static batchOutput(attrs) {\n return new BatchOutput(attrs);\n }\n\n static behaviorOverride(attrs) {\n return new BehaviorOverride(attrs);\n }\n\n static cache(attrs) {\n return new Cache(attrs);\n }\n\n static change(attrs) {\n return new Change(attrs);\n }\n\n static common(attrs) {\n return new Common(attrs);\n }\n\n static compress(attrs) {\n return new Compress(attrs);\n }\n\n static compressLogicalStructure(attrs) {\n return new CompressLogicalStructure(attrs);\n }\n\n static compressObjectStream(attrs) {\n return new CompressObjectStream(attrs);\n }\n\n static compression(attrs) {\n return new Compression(attrs);\n }\n\n static config(attrs) {\n return new Config(attrs);\n }\n\n static conformance(attrs) {\n return new Conformance(attrs);\n }\n\n static contentCopy(attrs) {\n return new ContentCopy(attrs);\n }\n\n static copies(attrs) {\n return new Copies(attrs);\n }\n\n static creator(attrs) {\n return new Creator(attrs);\n }\n\n static currentPage(attrs) {\n return new CurrentPage(attrs);\n }\n\n static data(attrs) {\n return new Data(attrs);\n }\n\n static debug(attrs) {\n return new Debug(attrs);\n }\n\n static defaultTypeface(attrs) {\n return new DefaultTypeface(attrs);\n }\n\n static destination(attrs) {\n return new Destination(attrs);\n }\n\n static documentAssembly(attrs) {\n return new DocumentAssembly(attrs);\n }\n\n static driver(attrs) {\n return new Driver(attrs);\n }\n\n static duplexOption(attrs) {\n return new DuplexOption(attrs);\n }\n\n static dynamicRender(attrs) {\n return new DynamicRender(attrs);\n }\n\n static embed(attrs) {\n return new Embed(attrs);\n }\n\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n\n static encryptionLevel(attrs) {\n return new EncryptionLevel(attrs);\n }\n\n static enforce(attrs) {\n return new Enforce(attrs);\n }\n\n static equate(attrs) {\n return new Equate(attrs);\n }\n\n static equateRange(attrs) {\n return new EquateRange(attrs);\n }\n\n static exclude(attrs) {\n return new Exclude(attrs);\n }\n\n static excludeNS(attrs) {\n return new ExcludeNS(attrs);\n }\n\n static flipLabel(attrs) {\n return new FlipLabel(attrs);\n }\n\n static fontInfo(attrs) {\n return new FontInfo(attrs);\n }\n\n static formFieldFilling(attrs) {\n return new FormFieldFilling(attrs);\n }\n\n static groupParent(attrs) {\n return new GroupParent(attrs);\n }\n\n static ifEmpty(attrs) {\n return new IfEmpty(attrs);\n }\n\n static includeXDPContent(attrs) {\n return new IncludeXDPContent(attrs);\n }\n\n static incrementalLoad(attrs) {\n return new IncrementalLoad(attrs);\n }\n\n static incrementalMerge(attrs) {\n return new IncrementalMerge(attrs);\n }\n\n static interactive(attrs) {\n return new Interactive(attrs);\n }\n\n static jog(attrs) {\n return new Jog(attrs);\n }\n\n static labelPrinter(attrs) {\n return new LabelPrinter(attrs);\n }\n\n static layout(attrs) {\n return new Layout(attrs);\n }\n\n static level(attrs) {\n return new Level(attrs);\n }\n\n static linearized(attrs) {\n return new Linearized(attrs);\n }\n\n static locale(attrs) {\n return new Locale(attrs);\n }\n\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n\n static log(attrs) {\n return new Log(attrs);\n }\n\n static map(attrs) {\n return new MapElement(attrs);\n }\n\n static mediumInfo(attrs) {\n return new MediumInfo(attrs);\n }\n\n static message(attrs) {\n return new Message(attrs);\n }\n\n static messaging(attrs) {\n return new Messaging(attrs);\n }\n\n static mode(attrs) {\n return new Mode(attrs);\n }\n\n static modifyAnnots(attrs) {\n return new ModifyAnnots(attrs);\n }\n\n static msgId(attrs) {\n return new MsgId(attrs);\n }\n\n static nameAttr(attrs) {\n return new NameAttr(attrs);\n }\n\n static neverEmbed(attrs) {\n return new NeverEmbed(attrs);\n }\n\n static numberOfCopies(attrs) {\n return new NumberOfCopies(attrs);\n }\n\n static openAction(attrs) {\n return new OpenAction(attrs);\n }\n\n static output(attrs) {\n return new Output(attrs);\n }\n\n static outputBin(attrs) {\n return new OutputBin(attrs);\n }\n\n static outputXSL(attrs) {\n return new OutputXSL(attrs);\n }\n\n static overprint(attrs) {\n return new Overprint(attrs);\n }\n\n static packets(attrs) {\n return new Packets(attrs);\n }\n\n static pageOffset(attrs) {\n return new PageOffset(attrs);\n }\n\n static pageRange(attrs) {\n return new PageRange(attrs);\n }\n\n static pagination(attrs) {\n return new Pagination(attrs);\n }\n\n static paginationOverride(attrs) {\n return new PaginationOverride(attrs);\n }\n\n static part(attrs) {\n return new Part(attrs);\n }\n\n static pcl(attrs) {\n return new Pcl(attrs);\n }\n\n static pdf(attrs) {\n return new Pdf(attrs);\n }\n\n static pdfa(attrs) {\n return new Pdfa(attrs);\n }\n\n static permissions(attrs) {\n return new Permissions(attrs);\n }\n\n static pickTrayByPDFSize(attrs) {\n return new PickTrayByPDFSize(attrs);\n }\n\n static picture(attrs) {\n return new Picture(attrs);\n }\n\n static plaintextMetadata(attrs) {\n return new PlaintextMetadata(attrs);\n }\n\n static presence(attrs) {\n return new Presence(attrs);\n }\n\n static present(attrs) {\n return new Present(attrs);\n }\n\n static print(attrs) {\n return new Print(attrs);\n }\n\n static printHighQuality(attrs) {\n return new PrintHighQuality(attrs);\n }\n\n static printScaling(attrs) {\n return new PrintScaling(attrs);\n }\n\n static printerName(attrs) {\n return new PrinterName(attrs);\n }\n\n static producer(attrs) {\n return new Producer(attrs);\n }\n\n static ps(attrs) {\n return new Ps(attrs);\n }\n\n static range(attrs) {\n return new Range(attrs);\n }\n\n static record(attrs) {\n return new Record(attrs);\n }\n\n static relevant(attrs) {\n return new Relevant(attrs);\n }\n\n static rename(attrs) {\n return new Rename(attrs);\n }\n\n static renderPolicy(attrs) {\n return new RenderPolicy(attrs);\n }\n\n static runScripts(attrs) {\n return new RunScripts(attrs);\n }\n\n static script(attrs) {\n return new Script(attrs);\n }\n\n static scriptModel(attrs) {\n return new ScriptModel(attrs);\n }\n\n static severity(attrs) {\n return new Severity(attrs);\n }\n\n static silentPrint(attrs) {\n return new SilentPrint(attrs);\n }\n\n static staple(attrs) {\n return new Staple(attrs);\n }\n\n static startNode(attrs) {\n return new StartNode(attrs);\n }\n\n static startPage(attrs) {\n return new StartPage(attrs);\n }\n\n static submitFormat(attrs) {\n return new SubmitFormat(attrs);\n }\n\n static submitUrl(attrs) {\n return new SubmitUrl(attrs);\n }\n\n static subsetBelow(attrs) {\n return new SubsetBelow(attrs);\n }\n\n static suppressBanner(attrs) {\n return new SuppressBanner(attrs);\n }\n\n static tagged(attrs) {\n return new Tagged(attrs);\n }\n\n static template(attrs) {\n return new Template(attrs);\n }\n\n static templateCache(attrs) {\n return new TemplateCache(attrs);\n }\n\n static threshold(attrs) {\n return new Threshold(attrs);\n }\n\n static to(attrs) {\n return new To(attrs);\n }\n\n static trace(attrs) {\n return new Trace(attrs);\n }\n\n static transform(attrs) {\n return new Transform(attrs);\n }\n\n static type(attrs) {\n return new Type(attrs);\n }\n\n static uri(attrs) {\n return new Uri(attrs);\n }\n\n static validate(attrs) {\n return new Validate(attrs);\n }\n\n static validateApprovalSignatures(attrs) {\n return new ValidateApprovalSignatures(attrs);\n }\n\n static validationMessaging(attrs) {\n return new ValidationMessaging(attrs);\n }\n\n static version(attrs) {\n return new Version(attrs);\n }\n\n static versionControl(attrs) {\n return new VersionControl(attrs);\n }\n\n static viewerPreferences(attrs) {\n return new ViewerPreferences(attrs);\n }\n\n static webClient(attrs) {\n return new WebClient(attrs);\n }\n\n static whitespace(attrs) {\n return new Whitespace(attrs);\n }\n\n static window(attrs) {\n return new Window(attrs);\n }\n\n static xdc(attrs) {\n return new Xdc(attrs);\n }\n\n static xdp(attrs) {\n return new Xdp(attrs);\n }\n\n static xsl(attrs) {\n return new Xsl(attrs);\n }\n\n static zpl(attrs) {\n return new Zpl(attrs);\n }\n}\n\nexport { ConfigNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { StringObject, XFAObject, XFAObjectArray } from \"./xfa_object.js\";\n\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\n\nclass ConnectionSet extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"connectionSet\", /* hasChildren = */ true);\n this.wsdlConnection = new XFAObjectArray();\n this.xmlConnection = new XFAObjectArray();\n this.xsdConnection = new XFAObjectArray();\n }\n}\n\nclass EffectiveInputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveInputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass EffectiveOutputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveOutputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Operation extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"operation\");\n this.id = attributes.id || \"\";\n this.input = attributes.input || \"\";\n this.name = attributes.name || \"\";\n this.output = attributes.output || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass RootElement extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"rootElement\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SoapAction extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAction\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SoapAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"uri\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass WsdlAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass WsdlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.effectiveInputPolicy = null;\n this.effectiveOutputPolicy = null;\n this.operation = null;\n this.soapAction = null;\n this.soapAddress = null;\n this.wsdlAddress = null;\n }\n}\n\nclass XmlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xmlConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.uri = null;\n }\n}\n\nclass XsdConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xsdConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.rootElement = null;\n this.uri = null;\n }\n}\n\nclass ConnectionSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConnectionSetNamespace.hasOwnProperty(name)) {\n return ConnectionSetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static connectionSet(attrs) {\n return new ConnectionSet(attrs);\n }\n\n static effectiveInputPolicy(attrs) {\n return new EffectiveInputPolicy(attrs);\n }\n\n static effectiveOutputPolicy(attrs) {\n return new EffectiveOutputPolicy(attrs);\n }\n\n static operation(attrs) {\n return new Operation(attrs);\n }\n\n static rootElement(attrs) {\n return new RootElement(attrs);\n }\n\n static soapAction(attrs) {\n return new SoapAction(attrs);\n }\n\n static soapAddress(attrs) {\n return new SoapAddress(attrs);\n }\n\n static uri(attrs) {\n return new Uri(attrs);\n }\n\n static wsdlAddress(attrs) {\n return new WsdlAddress(attrs);\n }\n\n static wsdlConnection(attrs) {\n return new WsdlConnection(attrs);\n }\n\n static xmlConnection(attrs) {\n return new XmlConnection(attrs);\n }\n\n static xsdConnection(attrs) {\n return new XsdConnection(attrs);\n }\n}\n\nexport { ConnectionSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $isNsAgnostic,\n $namespaceId,\n $nodeName,\n $onChild,\n XFAObject,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\n\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\n\nclass Data extends XmlObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"data\", attributes);\n }\n\n [$isNsAgnostic]() {\n return true;\n }\n}\n\nclass Datasets extends XFAObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"datasets\", /* hasChildren = */ true);\n this.data = null;\n this.Signature = null;\n }\n\n [$onChild](child) {\n const name = child[$nodeName];\n if (\n (name === \"data\" && child[$namespaceId] === DATASETS_NS_ID) ||\n (name === \"Signature\" &&\n child[$namespaceId] === NamespaceIds.signature.id)\n ) {\n this[name] = child;\n }\n this[$appendChild](child);\n }\n}\n\nclass DatasetsNamespace {\n static [$buildXFAObject](name, attributes) {\n if (DatasetsNamespace.hasOwnProperty(name)) {\n return DatasetsNamespace[name](attributes);\n }\n return undefined;\n }\n\n static datasets(attributes) {\n return new Datasets(attributes);\n }\n\n static data(attributes) {\n return new Data(attributes);\n }\n}\n\nexport { DatasetsNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n ContentObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\n\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\n\nclass CalendarSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"calendarSymbols\", /* hasChildren = */ true);\n this.name = \"gregorian\";\n this.dayNames = new XFAObjectArray(2);\n this.eraNames = null;\n this.meridiemNames = null;\n this.monthNames = new XFAObjectArray(2);\n }\n}\n\nclass CurrencySymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbol\");\n this.name = getStringOption(attributes.name, [\n \"symbol\",\n \"isoname\",\n \"decimal\",\n ]);\n }\n}\n\nclass CurrencySymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbols\", /* hasChildren = */ true);\n this.currencySymbol = new XFAObjectArray(3);\n }\n}\n\nclass DatePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass DatePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePatterns\", /* hasChildren = */ true);\n this.datePattern = new XFAObjectArray(4);\n }\n}\n\nclass DateTimeSymbols extends ContentObject {\n // TODO: spec unclear about the format of the array.\n\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dateTimeSymbols\");\n }\n}\n\nclass Day extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"day\");\n }\n}\n\nclass DayNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dayNames\", /* hasChildren = */ true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.day = new XFAObjectArray(7);\n }\n}\n\nclass Era extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"era\");\n }\n}\n\nclass EraNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"eraNames\", /* hasChildren = */ true);\n this.era = new XFAObjectArray(2);\n }\n}\n\nclass Locale extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"locale\", /* hasChildren = */ true);\n this.desc = attributes.desc || \"\";\n this.name = \"isoname\";\n this.calendarSymbols = null;\n this.currencySymbols = null;\n this.datePatterns = null;\n this.dateTimeSymbols = null;\n this.numberPatterns = null;\n this.numberSymbols = null;\n this.timePatterns = null;\n this.typeFaces = null;\n }\n}\n\nclass LocaleSet extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"localeSet\", /* hasChildren = */ true);\n this.locale = new XFAObjectArray();\n }\n}\n\nclass Meridiem extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiem\");\n }\n}\n\nclass MeridiemNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiemNames\", /* hasChildren = */ true);\n this.meridiem = new XFAObjectArray(2);\n }\n}\n\nclass Month extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"month\");\n }\n}\n\nclass MonthNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"monthNames\", /* hasChildren = */ true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.month = new XFAObjectArray(12);\n }\n}\n\nclass NumberPattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass NumberPatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPatterns\", /* hasChildren = */ true);\n this.numberPattern = new XFAObjectArray(4);\n }\n}\n\nclass NumberSymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbol\");\n this.name = getStringOption(attributes.name, [\n \"decimal\",\n \"grouping\",\n \"percent\",\n \"minus\",\n \"zero\",\n ]);\n }\n}\n\nclass NumberSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbols\", /* hasChildren = */ true);\n this.numberSymbol = new XFAObjectArray(5);\n }\n}\n\nclass TimePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass TimePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePatterns\", /* hasChildren = */ true);\n this.timePattern = new XFAObjectArray(4);\n }\n}\n\nclass TypeFace extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFace\", /* hasChildren = */ true);\n this.name = attributes.name | \"\";\n }\n}\n\nclass TypeFaces extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFaces\", /* hasChildren = */ true);\n this.typeFace = new XFAObjectArray();\n }\n}\n\nclass LocaleSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (LocaleSetNamespace.hasOwnProperty(name)) {\n return LocaleSetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static calendarSymbols(attrs) {\n return new CalendarSymbols(attrs);\n }\n\n static currencySymbol(attrs) {\n return new CurrencySymbol(attrs);\n }\n\n static currencySymbols(attrs) {\n return new CurrencySymbols(attrs);\n }\n\n static datePattern(attrs) {\n return new DatePattern(attrs);\n }\n\n static datePatterns(attrs) {\n return new DatePatterns(attrs);\n }\n\n static dateTimeSymbols(attrs) {\n return new DateTimeSymbols(attrs);\n }\n\n static day(attrs) {\n return new Day(attrs);\n }\n\n static dayNames(attrs) {\n return new DayNames(attrs);\n }\n\n static era(attrs) {\n return new Era(attrs);\n }\n\n static eraNames(attrs) {\n return new EraNames(attrs);\n }\n\n static locale(attrs) {\n return new Locale(attrs);\n }\n\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n\n static meridiem(attrs) {\n return new Meridiem(attrs);\n }\n\n static meridiemNames(attrs) {\n return new MeridiemNames(attrs);\n }\n\n static month(attrs) {\n return new Month(attrs);\n }\n\n static monthNames(attrs) {\n return new MonthNames(attrs);\n }\n\n static numberPattern(attrs) {\n return new NumberPattern(attrs);\n }\n\n static numberPatterns(attrs) {\n return new NumberPatterns(attrs);\n }\n\n static numberSymbol(attrs) {\n return new NumberSymbol(attrs);\n }\n\n static numberSymbols(attrs) {\n return new NumberSymbols(attrs);\n }\n\n static timePattern(attrs) {\n return new TimePattern(attrs);\n }\n\n static timePatterns(attrs) {\n return new TimePatterns(attrs);\n }\n\n static typeFace(attrs) {\n return new TypeFace(attrs);\n }\n\n static typeFaces(attrs) {\n return new TypeFaces(attrs);\n }\n}\n\nexport { LocaleSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\n\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(SIGNATURE_NS_ID, \"signature\", /* hasChildren = */ true);\n }\n}\n\nclass SignatureNamespace {\n static [$buildXFAObject](name, attributes) {\n if (SignatureNamespace.hasOwnProperty(name)) {\n return SignatureNamespace[name](attributes);\n }\n return undefined;\n }\n\n static signature(attributes) {\n return new Signature(attributes);\n }\n}\n\nexport { SignatureNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\n\nclass Stylesheet extends XFAObject {\n constructor(attributes) {\n super(STYLESHEET_NS_ID, \"stylesheet\", /* hasChildren = */ true);\n }\n}\n\nclass StylesheetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (StylesheetNamespace.hasOwnProperty(name)) {\n return StylesheetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static stylesheet(attributes) {\n return new Stylesheet(attributes);\n }\n}\n\nexport { StylesheetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $namespaceId,\n $nodeName,\n $onChildCheck,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\n\nconst XDP_NS_ID = NamespaceIds.xdp.id;\n\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(XDP_NS_ID, \"xdp\", /* hasChildren = */ true);\n this.uuid = attributes.uuid || \"\";\n this.timeStamp = attributes.timeStamp || \"\";\n this.config = null;\n this.connectionSet = null;\n this.datasets = null;\n this.localeSet = null;\n this.stylesheet = new XFAObjectArray();\n this.template = null;\n }\n\n [$onChildCheck](child) {\n const ns = NamespaceIds[child[$nodeName]];\n return ns && child[$namespaceId] === ns.id;\n }\n}\n\nclass XdpNamespace {\n static [$buildXFAObject](name, attributes) {\n if (XdpNamespace.hasOwnProperty(name)) {\n return XdpNamespace[name](attributes);\n }\n return undefined;\n }\n\n static xdp(attributes) {\n return new Xdp(attributes);\n }\n}\n\nexport { XdpNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $childrenToHTML,\n $clean,\n $content,\n $extra,\n $getChildren,\n $getParent,\n $globalData,\n $nodeName,\n $onText,\n $pushGlyphs,\n $text,\n $toHTML,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n fixTextIndent,\n fixURL,\n measureToString,\n setFontFamily,\n} from \"./html_utils.js\";\nimport { getMeasurement, HTMLResult, stripQuotes } from \"./utils.js\";\n\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\nconst $richText = Symbol();\n\nconst VALID_STYLES = new Set([\n \"color\",\n \"font\",\n \"font-family\",\n \"font-size\",\n \"font-stretch\",\n \"font-style\",\n \"font-weight\",\n \"margin\",\n \"margin-bottom\",\n \"margin-left\",\n \"margin-right\",\n \"margin-top\",\n \"letter-spacing\",\n \"line-height\",\n \"orphans\",\n \"page-break-after\",\n \"page-break-before\",\n \"page-break-inside\",\n \"tab-interval\",\n \"tab-stop\",\n \"text-align\",\n \"text-decoration\",\n \"text-indent\",\n \"vertical-align\",\n \"widows\",\n \"kerning-mode\",\n \"xfa-font-horizontal-scale\",\n \"xfa-font-vertical-scale\",\n \"xfa-spacerun\",\n \"xfa-tab-stops\",\n]);\n\nconst StyleMapping = new Map([\n [\"page-break-after\", \"breakAfter\"],\n [\"page-break-before\", \"breakBefore\"],\n [\"page-break-inside\", \"breakInside\"],\n [\"kerning-mode\", value => (value === \"none\" ? \"none\" : \"normal\")],\n [\n \"xfa-font-horizontal-scale\",\n value =>\n `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n ],\n [\n \"xfa-font-vertical-scale\",\n value =>\n `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n ],\n [\"xfa-spacerun\", \"\"],\n [\"xfa-tab-stops\", \"\"],\n [\n \"font-size\",\n (value, original) => {\n value = original.fontSize = getMeasurement(value);\n return measureToString(0.99 * value);\n },\n ],\n [\"letter-spacing\", value => measureToString(getMeasurement(value))],\n [\"line-height\", value => measureToString(getMeasurement(value))],\n [\"margin\", value => measureToString(getMeasurement(value))],\n [\"margin-bottom\", value => measureToString(getMeasurement(value))],\n [\"margin-left\", value => measureToString(getMeasurement(value))],\n [\"margin-right\", value => measureToString(getMeasurement(value))],\n [\"margin-top\", value => measureToString(getMeasurement(value))],\n [\"text-indent\", value => measureToString(getMeasurement(value))],\n [\"font-family\", value => value],\n [\"vertical-align\", value => measureToString(getMeasurement(value))],\n]);\n\nconst spacesRegExp = /\\s+/g;\nconst crlfRegExp = /[\\r\\n]+/g;\nconst crlfForRichTextRegExp = /\\r\\n?/g;\n\nfunction mapStyle(styleStr, node, richText) {\n const style = Object.create(null);\n if (!styleStr) {\n return style;\n }\n const original = Object.create(null);\n for (const [key, value] of styleStr.split(\";\").map(s => s.split(\":\", 2))) {\n const mapping = StyleMapping.get(key);\n if (mapping === \"\") {\n continue;\n }\n let newValue = value;\n if (mapping) {\n if (typeof mapping === \"string\") {\n newValue = mapping;\n } else {\n newValue = mapping(value, original);\n }\n }\n if (key.endsWith(\"scale\")) {\n if (style.transform) {\n style.transform = `${style[key]} ${newValue}`;\n } else {\n style.transform = newValue;\n }\n } else {\n style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] =\n newValue;\n }\n }\n\n if (style.fontFamily) {\n setFontFamily(\n {\n typeface: style.fontFamily,\n weight: style.fontWeight || \"normal\",\n posture: style.fontStyle || \"normal\",\n size: original.fontSize || 0,\n },\n node,\n node[$globalData].fontFinder,\n style\n );\n }\n\n if (\n richText &&\n style.verticalAlign &&\n style.verticalAlign !== \"0px\" &&\n style.fontSize\n ) {\n // A non-zero verticalAlign means that we've a sub/super-script and\n // consequently the font size must be decreased.\n // https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf#G11.2097514\n // And the two following factors to position the scripts have been\n // found here:\n // https://en.wikipedia.org/wiki/Subscript_and_superscript#Desktop_publishing\n const SUB_SUPER_SCRIPT_FACTOR = 0.583;\n const VERTICAL_FACTOR = 0.333;\n const fontSize = getMeasurement(style.fontSize);\n style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR);\n style.verticalAlign = measureToString(\n Math.sign(getMeasurement(style.verticalAlign)) *\n fontSize *\n VERTICAL_FACTOR\n );\n }\n\n fixTextIndent(style);\n return style;\n}\n\nfunction checkStyle(node) {\n if (!node.style) {\n return \"\";\n }\n\n // Remove any non-allowed keys.\n return node.style\n .trim()\n .split(/\\s*;\\s*/)\n .filter(s => !!s)\n .map(s => s.split(/\\s*:\\s*/, 2))\n .filter(([key, value]) => {\n if (key === \"font-family\") {\n node[$globalData].usedTypefaces.add(value);\n }\n return VALID_STYLES.has(key);\n })\n .map(kv => kv.join(\":\"))\n .join(\";\");\n}\n\nconst NoWhites = new Set([\"body\", \"html\"]);\n\nclass XhtmlObject extends XmlObject {\n constructor(attributes, name) {\n super(XHTML_NS_ID, name);\n this[$richText] = false;\n this.style = attributes.style || \"\";\n }\n\n [$clean](builder) {\n super[$clean](builder);\n this.style = checkStyle(this);\n }\n\n [$acceptWhitespace]() {\n return !NoWhites.has(this[$nodeName]);\n }\n\n [$onText](str, richText = false) {\n if (!richText) {\n str = str.replace(crlfRegExp, \"\");\n if (!this.style.includes(\"xfa-spacerun:yes\")) {\n str = str.replace(spacesRegExp, \" \");\n }\n } else {\n this[$richText] = true;\n }\n\n if (str) {\n this[$content] += str;\n }\n }\n\n [$pushGlyphs](measure, mustPop = true) {\n const xfaFont = Object.create(null);\n const margin = {\n top: NaN,\n bottom: NaN,\n left: NaN,\n right: NaN,\n };\n let lineHeight = null;\n for (const [key, value] of this.style\n .split(\";\")\n .map(s => s.split(\":\", 2))) {\n switch (key) {\n case \"font-family\":\n xfaFont.typeface = stripQuotes(value);\n break;\n case \"font-size\":\n xfaFont.size = getMeasurement(value);\n break;\n case \"font-weight\":\n xfaFont.weight = value;\n break;\n case \"font-style\":\n xfaFont.posture = value;\n break;\n case \"letter-spacing\":\n xfaFont.letterSpacing = getMeasurement(value);\n break;\n case \"margin\":\n const values = value.split(/ \\t/).map(x => getMeasurement(x));\n switch (values.length) {\n case 1:\n margin.top =\n margin.bottom =\n margin.left =\n margin.right =\n values[0];\n break;\n case 2:\n margin.top = margin.bottom = values[0];\n margin.left = margin.right = values[1];\n break;\n case 3:\n margin.top = values[0];\n margin.bottom = values[2];\n margin.left = margin.right = values[1];\n break;\n case 4:\n margin.top = values[0];\n margin.left = values[1];\n margin.bottom = values[2];\n margin.right = values[3];\n break;\n }\n break;\n case \"margin-top\":\n margin.top = getMeasurement(value);\n break;\n case \"margin-bottom\":\n margin.bottom = getMeasurement(value);\n break;\n case \"margin-left\":\n margin.left = getMeasurement(value);\n break;\n case \"margin-right\":\n margin.right = getMeasurement(value);\n break;\n case \"line-height\":\n lineHeight = getMeasurement(value);\n break;\n }\n }\n\n measure.pushData(xfaFont, margin, lineHeight);\n\n if (this[$content]) {\n measure.addString(this[$content]);\n } else {\n for (const child of this[$getChildren]()) {\n if (child[$nodeName] === \"#text\") {\n measure.addString(child[$content]);\n continue;\n }\n child[$pushGlyphs](measure);\n }\n }\n\n if (mustPop) {\n measure.popFont();\n }\n }\n\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children,\n };\n\n this[$childrenToHTML]({});\n\n if (children.length === 0 && !this[$content]) {\n return HTMLResult.EMPTY;\n }\n\n let value;\n if (this[$richText]) {\n value = this[$content]\n ? this[$content].replace(crlfForRichTextRegExp, \"\\n\")\n : undefined;\n } else {\n value = this[$content] || undefined;\n }\n\n return HTMLResult.success({\n name: this[$nodeName],\n attributes: {\n href: this.href,\n style: mapStyle(this.style, this, this[$richText]),\n },\n children,\n value,\n });\n }\n}\n\nclass A extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"a\");\n this.href = fixURL(attributes.href) || \"\";\n }\n}\n\nclass B extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"b\");\n }\n\n [$pushGlyphs](measure) {\n measure.pushFont({ weight: \"bold\" });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\n\nclass Body extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"body\");\n }\n\n [$toHTML](availableSpace) {\n const res = super[$toHTML](availableSpace);\n const { html } = res;\n if (!html) {\n return HTMLResult.EMPTY;\n }\n html.name = \"div\";\n html.attributes.class = [\"xfaRich\"];\n return res;\n }\n}\n\nclass Br extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"br\");\n }\n\n [$text]() {\n return \"\\n\";\n }\n\n [$pushGlyphs](measure) {\n measure.addString(\"\\n\");\n }\n\n [$toHTML](availableSpace) {\n return HTMLResult.success({\n name: \"br\",\n });\n }\n}\n\nclass Html extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"html\");\n }\n\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children,\n };\n\n this[$childrenToHTML]({});\n if (children.length === 0) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {},\n },\n value: this[$content] || \"\",\n });\n }\n\n if (children.length === 1) {\n const child = children[0];\n if (child.attributes && child.attributes.class.includes(\"xfaRich\")) {\n return HTMLResult.success(child);\n }\n }\n\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {},\n },\n children,\n });\n }\n}\n\nclass I extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"i\");\n }\n\n [$pushGlyphs](measure) {\n measure.pushFont({ posture: \"italic\" });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\n\nclass Li extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"li\");\n }\n}\n\nclass Ol extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ol\");\n }\n}\n\nclass P extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"p\");\n }\n\n [$pushGlyphs](measure) {\n super[$pushGlyphs](measure, /* mustPop = */ false);\n measure.addString(\"\\n\");\n measure.addPara();\n measure.popFont();\n }\n\n [$text]() {\n const siblings = this[$getParent]()[$getChildren]();\n if (siblings[siblings.length - 1] === this) {\n return super[$text]();\n }\n return super[$text]() + \"\\n\";\n }\n}\n\nclass Span extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"span\");\n }\n}\n\nclass Sub extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sub\");\n }\n}\n\nclass Sup extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sup\");\n }\n}\n\nclass Ul extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ul\");\n }\n}\n\nclass XhtmlNamespace {\n static [$buildXFAObject](name, attributes) {\n if (XhtmlNamespace.hasOwnProperty(name)) {\n return XhtmlNamespace[name](attributes);\n }\n return undefined;\n }\n\n static a(attributes) {\n return new A(attributes);\n }\n\n static b(attributes) {\n return new B(attributes);\n }\n\n static body(attributes) {\n return new Body(attributes);\n }\n\n static br(attributes) {\n return new Br(attributes);\n }\n\n static html(attributes) {\n return new Html(attributes);\n }\n\n static i(attributes) {\n return new I(attributes);\n }\n\n static li(attributes) {\n return new Li(attributes);\n }\n\n static ol(attributes) {\n return new Ol(attributes);\n }\n\n static p(attributes) {\n return new P(attributes);\n }\n\n static span(attributes) {\n return new Span(attributes);\n }\n\n static sub(attributes) {\n return new Sub(attributes);\n }\n\n static sup(attributes) {\n return new Sup(attributes);\n }\n\n static ul(attributes) {\n return new Ul(attributes);\n }\n}\n\nexport { XhtmlNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject } from \"./namespaces.js\";\nimport { XmlObject } from \"./xfa_object.js\";\n\nclass UnknownNamespace {\n constructor(nsId) {\n this.namespaceId = nsId;\n }\n\n [$buildXFAObject](name, attributes) {\n return new XmlObject(this.namespaceId, name, attributes);\n }\n}\n\nexport { UnknownNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FormatError,\n info,\n InvalidPDFException,\n warn,\n} from \"../shared/util.js\";\nimport { CIRCULAR_REF, Cmd, Dict, isCmd, Ref, RefSet } from \"./primitives.js\";\nimport {\n DocStats,\n MissingDataException,\n ParserEOFException,\n XRefEntryException,\n XRefParseException,\n} from \"./core_utils.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { CipherTransformFactory } from \"./crypto.js\";\n\nclass XRef {\n constructor(stream, pdfManager) {\n this.stream = stream;\n this.pdfManager = pdfManager;\n this.entries = [];\n this.xrefstms = Object.create(null);\n this._cacheMap = new Map(); // Prepare the XRef cache.\n this._pendingRefs = new RefSet();\n this.stats = new DocStats(pdfManager.msgHandler);\n this._newRefNum = null;\n }\n\n getNewRef() {\n if (this._newRefNum === null) {\n this._newRefNum = this.entries.length;\n }\n return Ref.get(this._newRefNum++, 0);\n }\n\n resetNewRef() {\n this._newRefNum = null;\n }\n\n setStartXRef(startXRef) {\n // Store the starting positions of xref tables as we process them\n // so we can recover from missing data errors\n this.startXRefQueue = [startXRef];\n }\n\n parse(recoveryMode = false) {\n let trailerDict;\n if (!recoveryMode) {\n trailerDict = this.readXRef();\n } else {\n warn(\"Indexing all PDF objects\");\n trailerDict = this.indexObjects();\n }\n trailerDict.assignXref(this);\n this.trailer = trailerDict;\n\n let encrypt;\n try {\n encrypt = trailerDict.get(\"Encrypt\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n }\n if (encrypt instanceof Dict) {\n const ids = trailerDict.get(\"ID\");\n const fileId = ids && ids.length ? ids[0] : \"\";\n // The 'Encrypt' dictionary itself should not be encrypted, and by\n // setting `suppressEncryption` we can prevent an infinite loop inside\n // of `XRef_fetchUncompressed` if the dictionary contains indirect\n // objects (fixes issue7665.pdf).\n encrypt.suppressEncryption = true;\n this.encrypt = new CipherTransformFactory(\n encrypt,\n fileId,\n this.pdfManager.password\n );\n }\n\n // Get the root dictionary (catalog) object, and do some basic validation.\n let root;\n try {\n root = trailerDict.get(\"Root\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n }\n if (root instanceof Dict) {\n try {\n const pages = root.get(\"Pages\");\n if (pages instanceof Dict) {\n this.root = root;\n return;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Pages\" reference: \"${ex}\".`);\n }\n }\n\n if (!recoveryMode) {\n throw new XRefParseException();\n }\n // Even recovery failed, there's nothing more we can do here.\n throw new InvalidPDFException(\"Invalid Root reference.\");\n }\n\n processXRefTable(parser) {\n if (!(\"tableState\" in this)) {\n // Stores state of the table as we process it so we can resume\n // from middle of table in case of missing data error\n this.tableState = {\n entryNum: 0,\n streamPos: parser.lexer.stream.pos,\n parserBuf1: parser.buf1,\n parserBuf2: parser.buf2,\n };\n }\n\n const obj = this.readXRefTable(parser);\n\n // Sanity check\n if (!isCmd(obj, \"trailer\")) {\n throw new FormatError(\n \"Invalid XRef table: could not find trailer dictionary\"\n );\n }\n // Read trailer dictionary, e.g.\n // trailer\n // << /Size 22\n // /Root 20R\n // /Info 10R\n // /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]\n // >>\n // The parser goes through the entire stream << ... >> and provides\n // a getter interface for the key-value table\n let dict = parser.getObj();\n\n // The pdflib PDF generator can generate a nested trailer dictionary\n if (!(dict instanceof Dict) && dict.dict) {\n dict = dict.dict;\n }\n if (!(dict instanceof Dict)) {\n throw new FormatError(\n \"Invalid XRef table: could not parse trailer dictionary\"\n );\n }\n delete this.tableState;\n\n return dict;\n }\n\n readXRefTable(parser) {\n // Example of cross-reference table:\n // xref\n // 0 1 <-- subsection header (first obj #, obj count)\n // 0000000000 65535 f <-- actual object (offset, generation #, f/n)\n // 23 2 <-- subsection header ... and so on ...\n // 0000025518 00002 n\n // 0000025635 00000 n\n // trailer\n // ...\n\n const stream = parser.lexer.stream;\n const tableState = this.tableState;\n stream.pos = tableState.streamPos;\n parser.buf1 = tableState.parserBuf1;\n parser.buf2 = tableState.parserBuf2;\n\n // Outer loop is over subsection headers\n let obj;\n\n while (true) {\n if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n if (isCmd((obj = parser.getObj()), \"trailer\")) {\n break;\n }\n tableState.firstEntryNum = obj;\n tableState.entryCount = parser.getObj();\n }\n\n let first = tableState.firstEntryNum;\n const count = tableState.entryCount;\n if (!Number.isInteger(first) || !Number.isInteger(count)) {\n throw new FormatError(\n \"Invalid XRef table: wrong types in subsection header\"\n );\n }\n // Inner loop is over objects themselves\n for (let i = tableState.entryNum; i < count; i++) {\n tableState.streamPos = stream.pos;\n tableState.entryNum = i;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n\n const entry = {};\n entry.offset = parser.getObj();\n entry.gen = parser.getObj();\n const type = parser.getObj();\n\n if (type instanceof Cmd) {\n switch (type.cmd) {\n case \"f\":\n entry.free = true;\n break;\n case \"n\":\n entry.uncompressed = true;\n break;\n }\n }\n\n // Validate entry obj\n if (\n !Number.isInteger(entry.offset) ||\n !Number.isInteger(entry.gen) ||\n !(entry.free || entry.uncompressed)\n ) {\n throw new FormatError(\n `Invalid entry in XRef subsection: ${first}, ${count}`\n );\n }\n\n // The first xref table entry, i.e. obj 0, should be free. Attempting\n // to adjust an incorrect first obj # (fixes issue 3248 and 7229).\n if (i === 0 && entry.free && first === 1) {\n first = 0;\n }\n\n if (!this.entries[i + first]) {\n this.entries[i + first] = entry;\n }\n }\n\n tableState.entryNum = 0;\n tableState.streamPos = stream.pos;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n delete tableState.firstEntryNum;\n delete tableState.entryCount;\n }\n\n // Sanity check: as per spec, first object must be free\n if (this.entries[0] && !this.entries[0].free) {\n throw new FormatError(\"Invalid XRef table: unexpected first object\");\n }\n return obj;\n }\n\n processXRefStream(stream) {\n if (!(\"streamState\" in this)) {\n // Stores state of the stream as we process it so we can resume\n // from middle of stream in case of missing data error\n const streamParameters = stream.dict;\n const byteWidths = streamParameters.get(\"W\");\n let range = streamParameters.get(\"Index\");\n if (!range) {\n range = [0, streamParameters.get(\"Size\")];\n }\n\n this.streamState = {\n entryRanges: range,\n byteWidths,\n entryNum: 0,\n streamPos: stream.pos,\n };\n }\n this.readXRefStream(stream);\n delete this.streamState;\n\n return stream.dict;\n }\n\n readXRefStream(stream) {\n const streamState = this.streamState;\n stream.pos = streamState.streamPos;\n\n const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] =\n streamState.byteWidths;\n\n const entryRanges = streamState.entryRanges;\n while (entryRanges.length > 0) {\n const [first, n] = entryRanges;\n\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n }\n if (\n !Number.isInteger(typeFieldWidth) ||\n !Number.isInteger(offsetFieldWidth) ||\n !Number.isInteger(generationFieldWidth)\n ) {\n throw new FormatError(\n `Invalid XRef entry fields length: ${first}, ${n}`\n );\n }\n for (let i = streamState.entryNum; i < n; ++i) {\n streamState.entryNum = i;\n streamState.streamPos = stream.pos;\n\n let type = 0,\n offset = 0,\n generation = 0;\n for (let j = 0; j < typeFieldWidth; ++j) {\n const typeByte = stream.getByte();\n if (typeByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'type'.\");\n }\n type = (type << 8) | typeByte;\n }\n // if type field is absent, its default value is 1\n if (typeFieldWidth === 0) {\n type = 1;\n }\n for (let j = 0; j < offsetFieldWidth; ++j) {\n const offsetByte = stream.getByte();\n if (offsetByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'offset'.\");\n }\n offset = (offset << 8) | offsetByte;\n }\n for (let j = 0; j < generationFieldWidth; ++j) {\n const generationByte = stream.getByte();\n if (generationByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'generation'.\");\n }\n generation = (generation << 8) | generationByte;\n }\n const entry = {};\n entry.offset = offset;\n entry.gen = generation;\n switch (type) {\n case 0:\n entry.free = true;\n break;\n case 1:\n entry.uncompressed = true;\n break;\n case 2:\n break;\n default:\n throw new FormatError(`Invalid XRef entry type: ${type}`);\n }\n if (!this.entries[first + i]) {\n this.entries[first + i] = entry;\n }\n }\n\n streamState.entryNum = 0;\n streamState.streamPos = stream.pos;\n entryRanges.splice(0, 2);\n }\n }\n\n indexObjects() {\n // Simple scan through the PDF content to find objects,\n // trailers and XRef streams.\n const TAB = 0x9,\n LF = 0xa,\n CR = 0xd,\n SPACE = 0x20;\n const PERCENT = 0x25,\n LT = 0x3c;\n\n function readToken(data, offset) {\n let token = \"\",\n ch = data[offset];\n while (ch !== LF && ch !== CR && ch !== LT) {\n if (++offset >= data.length) {\n break;\n }\n token += String.fromCharCode(ch);\n ch = data[offset];\n }\n return token;\n }\n function skipUntil(data, offset, what) {\n const length = what.length,\n dataLength = data.length;\n let skipped = 0;\n // finding byte sequence\n while (offset < dataLength) {\n let i = 0;\n while (i < length && data[offset + i] === what[i]) {\n ++i;\n }\n if (i >= length) {\n break; // sequence found\n }\n offset++;\n skipped++;\n }\n return skipped;\n }\n const objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n const endobjRegExp = /\\bendobj[\\b\\s]$/;\n const nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n const CHECK_CONTENT_LENGTH = 25;\n\n const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n const startxrefBytes = new Uint8Array([\n 115, 116, 97, 114, 116, 120, 114, 101, 102,\n ]);\n const objBytes = new Uint8Array([111, 98, 106]);\n const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n\n // Clear out any existing entries, since they may be bogus.\n this.entries.length = 0;\n this._cacheMap.clear();\n\n const stream = this.stream;\n stream.pos = 0;\n const buffer = stream.getBytes(),\n length = buffer.length;\n let position = stream.start;\n const trailers = [],\n xrefStms = [];\n while (position < length) {\n let ch = buffer[position];\n if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n ++position;\n continue;\n }\n if (ch === PERCENT) {\n // %-comment\n do {\n ++position;\n if (position >= length) {\n break;\n }\n ch = buffer[position];\n } while (ch !== LF && ch !== CR);\n continue;\n }\n const token = readToken(buffer, position);\n let m;\n if (\n token.startsWith(\"xref\") &&\n (token.length === 4 || /\\s/.test(token[4]))\n ) {\n position += skipUntil(buffer, position, trailerBytes);\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else if ((m = objRegExp.exec(token))) {\n const num = m[1] | 0,\n gen = m[2] | 0;\n\n let contentLength,\n startPos = position + token.length,\n updateEntries = false;\n if (!this.entries[num]) {\n updateEntries = true;\n } else if (this.entries[num].gen === gen) {\n // Before overwriting an existing entry, ensure that the new one won't\n // cause *immediate* errors when it's accessed (fixes issue13783.pdf).\n try {\n const parser = new Parser({\n lexer: new Lexer(stream.makeSubStream(startPos)),\n });\n parser.getObj();\n updateEntries = true;\n } catch (ex) {\n if (ex instanceof ParserEOFException) {\n warn(`indexObjects -- checking object (${token}): \"${ex}\".`);\n } else {\n // The error may come from the `Parser`-instance being initialized\n // without an `XRef`-instance (we don't have a usable one yet).\n updateEntries = true;\n }\n }\n }\n if (updateEntries) {\n this.entries[num] = {\n offset: position - stream.start,\n gen,\n uncompressed: true,\n };\n }\n\n // Find the next \"obj\" string, rather than \"endobj\", to ensure that\n // we won't skip over a new 'obj' operator in corrupt files where\n // 'endobj' operators are missing (fixes issue9105_reduced.pdf).\n while (startPos < buffer.length) {\n const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n contentLength = endPos - position;\n\n const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n const tokenStr = bytesToString(buffer.subarray(checkPos, endPos));\n\n // Check if the current object ends with an 'endobj' operator.\n if (endobjRegExp.test(tokenStr)) {\n break;\n } else {\n // Check if an \"obj\" occurrence is actually a new object,\n // i.e. the current object is missing the 'endobj' operator.\n const objToken = nestedObjRegExp.exec(tokenStr);\n\n if (objToken && objToken[1]) {\n warn(\n 'indexObjects: Found new \"obj\" inside of another \"obj\", ' +\n 'caused by missing \"endobj\" -- trying to recover.'\n );\n contentLength -= objToken[1].length;\n break;\n }\n }\n startPos = endPos;\n }\n const content = buffer.subarray(position, position + contentLength);\n\n // checking XRef stream suspect\n // (it shall have '/XRef' and next char is not a letter)\n const xrefTagOffset = skipUntil(content, 0, xrefBytes);\n if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n xrefStms.push(position - stream.start);\n this.xrefstms[position - stream.start] = 1; // Avoid recursion\n }\n\n position += contentLength;\n } else if (\n token.startsWith(\"trailer\") &&\n (token.length === 7 || /\\s/.test(token[7]))\n ) {\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else {\n position += token.length + 1;\n }\n }\n // reading XRef streams\n for (let i = 0, ii = xrefStms.length; i < ii; ++i) {\n this.startXRefQueue.push(xrefStms[i]);\n this.readXRef(/* recoveryMode */ true);\n }\n // finding main trailer\n let trailerDict;\n for (let i = 0, ii = trailers.length; i < ii; ++i) {\n stream.pos = trailers[i];\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n recoveryMode: true,\n });\n const obj = parser.getObj();\n if (!isCmd(obj, \"trailer\")) {\n continue;\n }\n // read the trailer dictionary\n const dict = parser.getObj();\n if (!(dict instanceof Dict)) {\n continue;\n }\n // Do some basic validation of the trailer/root dictionary candidate.\n try {\n const rootDict = dict.get(\"Root\");\n if (!(rootDict instanceof Dict)) {\n continue;\n }\n const pagesDict = rootDict.get(\"Pages\");\n if (!(pagesDict instanceof Dict)) {\n continue;\n }\n const pagesCount = pagesDict.get(\"Count\");\n if (!Number.isInteger(pagesCount)) {\n continue;\n }\n // The top-level /Pages dictionary isn't obviously corrupt.\n } catch (ex) {\n continue;\n }\n // taking the first one with 'ID'\n if (dict.has(\"ID\")) {\n return dict;\n }\n // The current dictionary is a candidate, but continue searching.\n trailerDict = dict;\n }\n // No trailer with 'ID', taking last one (if exists).\n if (trailerDict) {\n return trailerDict;\n }\n // No trailer dictionary found, taking the \"top\"-dictionary (if exists).\n if (this.topDict) {\n return this.topDict;\n }\n // nothing helps\n throw new InvalidPDFException(\"Invalid PDF structure.\");\n }\n\n readXRef(recoveryMode = false) {\n const stream = this.stream;\n // Keep track of already parsed XRef tables, to prevent an infinite loop\n // when parsing corrupt PDF files where e.g. the /Prev entries create a\n // circular dependency between tables (fixes bug1393476.pdf).\n const startXRefParsedCache = new Set();\n\n try {\n while (this.startXRefQueue.length) {\n const startXRef = this.startXRefQueue[0];\n\n if (startXRefParsedCache.has(startXRef)) {\n warn(\"readXRef - skipping XRef table since it was already parsed.\");\n this.startXRefQueue.shift();\n continue;\n }\n startXRefParsedCache.add(startXRef);\n\n stream.pos = startXRef + stream.start;\n\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n let obj = parser.getObj();\n let dict;\n\n // Get dictionary\n if (isCmd(obj, \"xref\")) {\n // Parse end-of-file XRef\n dict = this.processXRefTable(parser);\n if (!this.topDict) {\n this.topDict = dict;\n }\n\n // Recursively get other XRefs 'XRefStm', if any\n obj = dict.get(\"XRefStm\");\n if (Number.isInteger(obj)) {\n const pos = obj;\n // ignore previously loaded xref streams\n // (possible infinite recursion)\n if (!(pos in this.xrefstms)) {\n this.xrefstms[pos] = 1;\n this.startXRefQueue.push(pos);\n }\n }\n } else if (Number.isInteger(obj)) {\n // Parse in-stream XRef\n if (\n !Number.isInteger(parser.getObj()) ||\n !isCmd(parser.getObj(), \"obj\") ||\n !((obj = parser.getObj()) instanceof BaseStream)\n ) {\n throw new FormatError(\"Invalid XRef stream\");\n }\n dict = this.processXRefStream(obj);\n if (!this.topDict) {\n this.topDict = dict;\n }\n if (!dict) {\n throw new FormatError(\"Failed to read XRef stream\");\n }\n } else {\n throw new FormatError(\"Invalid XRef stream header\");\n }\n\n // Recursively get previous dictionary, if any\n obj = dict.get(\"Prev\");\n if (Number.isInteger(obj)) {\n this.startXRefQueue.push(obj);\n } else if (obj instanceof Ref) {\n // The spec says Prev must not be a reference, i.e. \"/Prev NNN\"\n // This is a fallback for non-compliant PDFs, i.e. \"/Prev NNN 0 R\"\n this.startXRefQueue.push(obj.num);\n }\n\n this.startXRefQueue.shift();\n }\n\n return this.topDict;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n info(\"(while reading XRef): \" + e);\n\n this.startXRefQueue.shift();\n }\n\n if (recoveryMode) {\n return undefined;\n }\n throw new XRefParseException();\n }\n\n getEntry(i) {\n const xrefEntry = this.entries[i];\n if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n return xrefEntry;\n }\n return null;\n }\n\n fetchIfRef(obj, suppressEncryption = false) {\n if (obj instanceof Ref) {\n return this.fetch(obj, suppressEncryption);\n }\n return obj;\n }\n\n fetch(ref, suppressEncryption = false) {\n if (!(ref instanceof Ref)) {\n throw new Error(\"ref object is not a reference\");\n }\n const num = ref.num;\n\n // The XRef cache is populated with objects which are obtained through\n // `Parser.getObj`, and indirectly via `Lexer.getObj`. Neither of these\n // methods should ever return `undefined` (note the `assert` calls below).\n const cacheEntry = this._cacheMap.get(num);\n if (cacheEntry !== undefined) {\n // In documents with Object Streams, it's possible that cached `Dict`s\n // have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\n if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n cacheEntry.objId = ref.toString();\n }\n return cacheEntry;\n }\n let xrefEntry = this.getEntry(num);\n\n if (xrefEntry === null) {\n // The referenced entry can be free.\n this._cacheMap.set(num, xrefEntry);\n return xrefEntry;\n }\n // Prevent circular references, in corrupt PDF documents, from hanging the\n // worker-thread. This relies, implicitly, on the parsing being synchronous.\n if (this._pendingRefs.has(ref)) {\n this._pendingRefs.remove(ref);\n\n warn(`Ignoring circular reference: ${ref}.`);\n return CIRCULAR_REF;\n }\n this._pendingRefs.put(ref);\n\n try {\n if (xrefEntry.uncompressed) {\n xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n } else {\n xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n }\n this._pendingRefs.remove(ref);\n } catch (ex) {\n this._pendingRefs.remove(ref);\n throw ex;\n }\n if (xrefEntry instanceof Dict) {\n xrefEntry.objId = ref.toString();\n } else if (xrefEntry instanceof BaseStream) {\n xrefEntry.dict.objId = ref.toString();\n }\n return xrefEntry;\n }\n\n fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n const gen = ref.gen;\n let num = ref.num;\n if (xrefEntry.gen !== gen) {\n throw new XRefEntryException(`Inconsistent generation in XRef: ${ref}`);\n }\n const stream = this.stream.makeSubStream(\n xrefEntry.offset + this.stream.start\n );\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n\n if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (obj3.cmd !== \"obj\") {\n // some bad PDFs use \"obj1234\" and really mean 1234\n if (obj3.cmd.startsWith(\"obj\")) {\n num = parseInt(obj3.cmd.substring(3), 10);\n if (!Number.isNaN(num)) {\n return num;\n }\n }\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (this.encrypt && !suppressEncryption) {\n xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n } else {\n xrefEntry = parser.getObj();\n }\n if (!(xrefEntry instanceof BaseStream)) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n xrefEntry !== undefined,\n 'fetchUncompressed: The \"xrefEntry\" cannot be undefined.'\n );\n }\n this._cacheMap.set(num, xrefEntry);\n }\n return xrefEntry;\n }\n\n fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n const tableOffset = xrefEntry.offset;\n const stream = this.fetch(Ref.get(tableOffset, 0));\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"bad ObjStm stream\");\n }\n const first = stream.dict.get(\"First\");\n const n = stream.dict.get(\"N\");\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(\"invalid first and n parameters for ObjStm stream\");\n }\n let parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n const nums = new Array(n);\n const offsets = new Array(n);\n // read the object numbers to populate cache\n for (let i = 0; i < n; ++i) {\n const num = parser.getObj();\n if (!Number.isInteger(num)) {\n throw new FormatError(\n `invalid object number in the ObjStm stream: ${num}`\n );\n }\n const offset = parser.getObj();\n if (!Number.isInteger(offset)) {\n throw new FormatError(\n `invalid object offset in the ObjStm stream: ${offset}`\n );\n }\n nums[i] = num;\n offsets[i] = offset;\n }\n\n const start = (stream.start || 0) + first;\n const entries = new Array(n);\n // read stream objects for cache\n for (let i = 0; i < n; ++i) {\n const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined;\n if (length < 0) {\n throw new FormatError(\"Invalid offset in the ObjStm stream.\");\n }\n parser = new Parser({\n lexer: new Lexer(\n stream.makeSubStream(start + offsets[i], length, stream.dict)\n ),\n xref: this,\n allowStreams: true,\n });\n\n const obj = parser.getObj();\n entries[i] = obj;\n if (obj instanceof BaseStream) {\n continue;\n }\n const num = nums[i],\n entry = this.entries[num];\n if (entry && entry.offset === tableOffset && entry.gen === i) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n obj !== undefined,\n 'fetchCompressed: The \"obj\" cannot be undefined.'\n );\n }\n this._cacheMap.set(num, obj);\n }\n }\n xrefEntry = entries[xrefEntry.gen];\n if (xrefEntry === undefined) {\n throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n }\n return xrefEntry;\n }\n\n async fetchIfRefAsync(obj, suppressEncryption) {\n if (obj instanceof Ref) {\n return this.fetchAsync(obj, suppressEncryption);\n }\n return obj;\n }\n\n async fetchAsync(ref, suppressEncryption) {\n try {\n return this.fetch(ref, suppressEncryption);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.pdfManager.requestRange(ex.begin, ex.end);\n return this.fetchAsync(ref, suppressEncryption);\n }\n }\n\n getCatalogObj() {\n return this.root;\n }\n}\n\nexport { XRef };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n PasswordException,\n UnexpectedResponseException,\n UnknownErrorException,\n warn,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n throw new Error(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n warn('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n return reason;\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this._createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = createPromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason),\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\n\n /**\n * @private\n */\n _createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: createPromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n }\n\n /**\n * @private\n */\n _processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(\n streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n );\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n /**\n * @private\n */\n async _deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall && streamController.startCall.promise,\n streamController.pullCall && streamController.pullCall.promise,\n streamController.cancelCall && streamController.cancelCall.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from \"../shared/util.js\";\n\n/** @implements {IPDFStream} */\nclass PDFWorkerStream {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this._contentLength = null;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFWorkerStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFWorkerStreamReader {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n this._contentLength = null;\n this._isRangeSupported = false;\n this._isStreamingSupported = false;\n\n const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n this._reader = readableStream.getReader();\n\n this._headersReady = this._msgHandler\n .sendWithPromise(\"ReaderHeadersReady\")\n .then(data => {\n this._isStreamingSupported = data.isStreamingSupported;\n this._isRangeSupported = data.isRangeSupported;\n this._contentLength = data.contentLength;\n });\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n async read() {\n const { value, done } = await this._reader.read();\n if (done) {\n return { value: undefined, done: true };\n }\n // `value` is wrapped into Uint8Array, we need to\n // unwrap it to ArrayBuffer for further processing.\n return { value: value.buffer, done: false };\n }\n\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFWorkerStreamRangeReader {\n constructor(begin, end, msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n begin,\n end,\n });\n this._reader = readableStream.getReader();\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n const { value, done } = await this._reader.read();\n if (done) {\n return { value: undefined, done: true };\n }\n return { value: value.buffer, done: false };\n }\n\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\nexport { PDFWorkerStream };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__w_pdfjs_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__w_pdfjs_require__.o(definition, key) && !__w_pdfjs_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__w_pdfjs_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__w_pdfjs_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WorkerMessageHandler } from \"./core/worker.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nexport { WorkerMessageHandler };\n"],"names":["constructor","finished","finish","terminate","ensureNotTerminated","setup","testMessageProcessed","handler","data","setVerbosityLevel","WorkerMessageHandler","createDocumentHandler","terminated","cancelXHRs","WorkerTasks","verbosity","apiVersion","docParams","workerVersion","enumerableProperties","docId","docBaseUrl","workerHandlerName","task","i","pdfManager","isPureXfa","startWorkerTask","reason","finishWorkerTask","htmlForXfa","pdfManagerCapability","source","newPdfManager","cachedChunks","pdfStream","fullRequest","disableAutoFetch","msgHandler","password","length","rangeChunkSize","loaded","flushChunks","pdfFile","arraysToBytes","warn","readPromise","readChunk","arrayByteLength","total","Math","reject","pdfInfo","ex","pdfManagerReady","loadDocument","onFailure","evaluatorOptions","maxImageSize","disableFontFace","ignoreErrors","isEvalSupported","fontExtraProperties","useSystemFonts","cMapUrl","standardFontDataUrl","getPdfManager","stream","pageRef","Ref","ref","page","promises","pageIndex","newRefs","xfaData","refs","x","a","xfa","acroForm","xfaDatasetsRef","hasXfaDatasetsEntry","Array","ii","acroFormRef","xref","newXrefInfo","Object","infoObj","xrefInfo","isString","stringToPDFString","rootRef","encryptRef","newRef","infoRef","info","fileIds","originalData","hasXfa","start","VerbosityLevel","Date","intent","cacheKey","annotationStorage","operatorListInfo","sink","featureId","UNSUPPORTED_FEATURES","normalizeWhitespace","includeMarkedContent","combineTextItems","waitOn","cleanupPromise","setupDoc","initializeFromPort","maybePort","isMessagePort","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","RenderingIntentFlag","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","NONE","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","Number","console","unreachable","base","other","url","baseUrl","options","dots","stringToUTF8String","absoluteUrl","_isValidProtocol","enumerable","configurable","writable","BaseException","NullCharactersRegExp","InvisibleCharactersRegExp","replaceInvisible","str","assert","bytes","MAX_ARGUMENT_COUNT","String","strBuf","chunkEnd","chunk","arr","resultLength","pos","item","stringToBytes","itemLength","value","obj","buffer8","view32","IsLittleEndianCached","shadow","isLittleEndian","IsEvalSupportedCached","hexNumbers","n","makeHexColor","m1","m2","applyTransform","xt","p","m","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","Util","p2","r","p3","p4","inverseTransform","apply3dTransform","v","singularValueDecompose2dScale","transpose","b","c","first","second","sx","sy","normalizeRect","rect","intersect","orderedX","rect1","rect2","orderedY","result","bezierBoundingBox","tvalues","bounds","t","b2ac","sqrtb2ac","t1","t2","j","jlen","mt","PDFStringTranslateTable","code","match","buf","char","decodeURIComponent","escape","unescape","encodeURIComponent","arr1","arr2","date","buffer","capability","isSettled","get","resolve","contentType","forceDataSchema","URL","type","digits","b1","b2","b3","d1","d2","d3","d4","isNodeJS","process","CIRCULAR_REF","Symbol","EOF","Name","nameCache","nameValue","_clearCache","Cmd","cmdCache","cmdValue","nonSerializable","assignXref","size","key2","key3","getAsync","getArray","getRaw","getKeys","getRawValues","set","has","forEach","callback","empty","emptyDict","merge","mergeSubDicts","mergedDict","properties","dict","property","values","subDict","Dict","refCache","toString","key","gen","refValue","parent","put","remove","clear","putAlias","isName","v1","v2","isEmpty","isDataLoaded","getByte","getBytes","forceClamped","peekByte","peekedByte","peekBytes","getUint16","b0","getInt32","getByteRange","getString","bytesToString","skip","reset","moveStart","makeSubStream","getBaseStreams","createValidAbsoluteUrl","onLoadedStream","ensureDoc","ensureXRef","ensureCatalog","getPage","fontFallback","loadXfaFonts","loadXfaImages","serializeXfaData","cleanup","manuallyTriggered","ensure","requestRange","requestLoadedStream","sendProgressiveData","updatePassword","parseDocBaseUrl","Promise","args","getMissingChunks","chunks","numChunksLoaded","onReceiveData","chunkSize","begin","end","beginChunk","endChunk","curChunk","onReceiveProgressiveData","position","ensureByte","ensureRange","nextEmptyChunk","numChunks","hasChunk","strEnd","subarray","ChunkedStreamSubstream","missingChunks","subStream","sendRequest","rangeReader","chunkData","requestAllChunks","_requestChunks","requestId","chunksNeeded","chunksToRequest","requestIds","groupedChunksToRequest","groupedChunk","getStream","requestRanges","ranges","range","groupChunks","groupedChunks","prevChunk","onProgress","isProgressive","loadedRequests","lastChunk","onError","getBeginChunk","getEndChunk","abort","lookup","initializer","_send","streamTypes","fontTypes","addStreamType","addFontType","stopWhenFound","visited","ROMAN_NUMBER_MAP","lowerCase","number","romanBuf","romanStr","offset","ch","positionPattern","component","name","parseInt","isRef","parents","entry","_collectJS","js","isStream","list","actions","additionalActionsDicts","additionalActions","action","eventType","actionDict","objectSize","XMLEntities","entity","DEFAULT_CSS_FONT_OBLIQUE","DEFAULT_CSS_FONT_WEIGHT","CSS_FONT_WEIGHT_VALUES","fontFamily","weight","fontWeight","cssFontInfo","angle","parseFloat","isNaN","italicAngle","URL_OPEN_METHODS","regex","jsUrl","newWindow","arrayBuffer","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","idCounters","createObjId","getPageObjId","_getInheritableProperty","isDict","dictArray","content","resources","_getBoundingBox","box","mediaBox","cropBox","userUnit","isNum","view","isArrayEqual","rotate","_onSubStreamError","getContentStream","bbox","partialEvaluator","idFactory","fontCache","builtInCMapCache","standardFontDataCache","globalImageCache","newRefsPromises","annotation","loadResources","objectLoader","getOperatorList","contentStreamPromise","resourcesPromise","dataPromises","pageListPromise","opList","transparency","operatorList","annotations","pageOpList","renderForms","intentAny","intentDisplay","intentPrint","opListPromises","extractTextContent","getStructTree","structTreeRoot","structTree","_parseStructTree","tree","getAnnotationsData","annotationsData","annots","_parsedAnnotations","parsedAnnotations","annotationPromises","jsActions","collectActions","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","PDF_HEADER_VERSION_REGEXP","limit","backwards","signatureLength","signature","scanBytes","scanLength","signatureEnd","isArrayBuffer","getDocId","createFontId","parse","linearization","Linearization","err","startXRef","find","step","startXRefLength","found","isWhiteSpace","checkHeader","MAX_PDF_VERSION_LENGTH","version","parseStartXRef","numPages","num","_hasOnlyDocumentSignatures","recursionDepth","RECURSION_LIMIT","field","isSignature","isInvisible","entries","template","datasets","config","connectionSet","localeSet","stylesheet","xfaFactory","xfaImagesDict","keys","xfaImages","fontRes","pdfFonts","initialState","clone","fonts","descriptor","validateCSSFont","missingFonts","reallyMissingFonts","getXfaFontName","fontInfo","getXfaFontDict","formInfo","hasFields","hasAcroForm","hasSignatures","fields","sigFlags","hasOnlyDocumentSignatures","documentInfo","DocumentInfoValidators","Title","Author","Subject","Keywords","Creator","Producer","CreationDate","ModDate","Trapped","docInfo","PDFFormatVersion","Language","EncryptFilterName","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","IsSignaturesPresent","infoDict","customValue","isBool","fingerprints","hash","hex","idArray","validate","hashOriginal","hashModified","calculateMD5","hexString","_getLinearizationPage","catalog","cachedPromise","promise","globalIdFactory","nonBlendModesSet","checkFirstPage","recoveryMode","checkLastPage","pagesTree","reasonAll","pageDict","_collectFieldObjects","partName","kids","fieldObjects","allFields","fieldPromises","allPromises","hasJSActions","_parseHasJSActions","fieldObject","object","calculationOrderIds","calculationOrder","ids","getXFAFontMap","factors","baseWidths","baseMapping","metrics","fontName","normalizeFontName","fontMap","rescaledBaseWidths","w","currentCode","newWidths","unicode1","unicode","currentArray","widths","getXfaFontWidths","systemInfo","CalibriBoldFactors","CalibriBoldMetrics","lineHeight","lineGap","CalibriBoldItalicFactors","CalibriBoldItalicMetrics","CalibriItalicFactors","CalibriItalicMetrics","CalibriRegularFactors","CalibriRegularMetrics","HelveticaBoldFactors","HelveticaBoldMetrics","HelveticaBoldItalicFactors","HelveticaBoldItalicMetrics","HelveticaItalicFactors","HelveticaItalicMetrics","HelveticaRegularFactors","HelveticaRegularMetrics","LiberationSansBoldWidths","LiberationSansBoldMapping","LiberationSansBoldItalicWidths","LiberationSansBoldItalicMapping","LiberationSansItalicWidths","LiberationSansItalicMapping","LiberationSansRegularWidths","LiberationSansRegularMapping","MyriadProBoldFactors","MyriadProBoldMetrics","MyriadProBoldItalicFactors","MyriadProBoldItalicMetrics","MyriadProItalicFactors","MyriadProItalicMetrics","MyriadProRegularFactors","MyriadProRegularMetrics","SegoeuiBoldFactors","SegoeuiBoldMetrics","SegoeuiBoldItalicFactors","SegoeuiBoldItalicMetrics","SegoeuiItalicFactors","SegoeuiItalicMetrics","SegoeuiRegularFactors","SegoeuiRegularMetrics","SEAC_ANALYSIS_ENABLED","FontFlags","FixedPitch","Serif","Symbolic","Script","Nonsymbolic","Italic","AllCap","SmallCap","ForceBold","MacStandardGlyphOrdering","isStandardFont","subtype","glyphsUnicodeMap","getUnicodeForGlyph","charCodeToGlyphId","isSymbolicFont","baseEncoding","charCode","glyphId","glyphNames","getEncoding","builtInEncoding","differences","glyphName","standardGlyphName","recoverGlyphName","ExpertEncoding","MacExpertEncoding","MacRomanEncoding","StandardEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","getGlyphsUnicode","getArrayLookupTableFactory","getDingbatsGlyphsUnicode","getSpecialPUASymbols","getLookupTableFactory","mapSpecialUnicodeValues","undefined","nameLen","hexStr","substring","toUpperCase","UnicodeRanges","getUnicodeRangeFor","isRTLRangeFor","getNormalizedUnicodes","reverseIfRtl","chars","charsLength","charCodeAt","push","join","create","collectFields","_create","id","parameters","fieldType","_getPageIndex","annotDict","defaultColor","rgbColor","color","ColorSpace","quadPoints","quadPointsLists","jj","y","quadPointsList","quadPoint","minX","minY","xRatio","yRatio","params","annotationFlags","borderStyle","backgroundColor","borderColor","contentsObj","hasAppearance","modificationDate","hasOwnCanvas","kidIds","kid","_hasFlag","_isViewable","_isPrintable","mustBeViewed","storageEntry","mustBePrinted","viewable","printable","_parseStringHelper","dir","bidi","setTitle","setContents","setModificationDate","setFlags","flags","hasFlag","setRectangle","setColor","getRgbColor","setBorderAndBackgroundColors","mk","setBorderStyle","dictType","array","setAppearance","appearanceStates","normalAppearanceState","as","appearance","isUsingOwnCanvas","appearanceDict","matrix","getTransformMatrix","fallbackFontDict","getFieldObject","strokeColor","fillColor","_constructFieldName","fieldName","loopDict","setWidth","width","maxWidth","maxHeight","setStyle","style","setDashArray","forceStyle","dashArray","isValid","allZeros","validNumber","element","setHorizontalCornerRadius","setVerticalCornerRadius","rawIRT","rt","XFAFactory","setCreationDate","_setDefaultAppearance","maxX","maxY","pointsArray","pointsCallback","formDict","appearanceStreamDict","appearanceStream","gsDict","stateDict","fieldValue","defaultFieldValue","defaultAppearance","parseDefaultAppearance","localResources","acroFormResources","appearanceResources","mergedResources","_decodeFormValue","formValue","hasFieldFlag","path","AP","encrypt","originalTransform","newTransform","isAscii","stringToUTF16BEString","bufferOriginal","writeDict","bufferNew","_getAppearance","isPassword","lineCount","defaultPadding","hPadding","totalHeight","totalWidth","descent","vPadding","alignment","encodedString","escapeString","renderedText","_getFontData","_computeFontSize","roundWithOneDigit","FONT_FACTOR","fontSize","numberOfLines","height","_renderText","glyphs","scale","glyph","shift","_getSaveFieldResources","localFont","acroFormFont","subFontDict","subResourcesDict","maximumLength","_getCombAppearance","combWidth","positions","text","renderedComb","_getMultilineAppearance","lines","padding","_splitLine","line","lastSpacePosInStringStart","lastSpacePosInStringEnd","lastSpacePos","startChunk","currentWidth","glyphWidth","defaultValue","multiline","charLimit","comb","editable","hidden","savedAppearance","_saveCheckbox","evaluator","_saveRadioButton","parentBuffer","parentTransform","_getDefaultCheckedAppearance","FONT_RATIO","xShift","yShift","_processCheckBox","customAppearance","normalAppearance","asValue","yes","exportValues","otherYes","_processRadioButton","fieldParent","fieldParentValue","_processPushButton","Catalog","destDict","resultObj","option","isOptionArray","exportValue","displayValue","numItems","multipleSelection","items","DEFAULT_ICON_SIZE","getQuadPoints","parentItem","parentSubtype","rawParent","parentRect","parentFlags","lineCoordinates","strokeAlpha","interiorColor","fillAlpha","borderWidth","borderAdjust","extra","points","controlPointsDistance","x0","y0","x1","y1","xMid","yMid","xOffset","yOffset","rawVertices","vertex","vertices","rawInkLists","inkList","blendMode","dy","xEnd","file","operation","fn","fontColor","colorCmd","escapePDFName","COMPONENTS","alpha01","w1","h1","newIndex","xScaled","w1Scanline","py","oldIndex","dest","src","getRgb","rgb","getRgbItem","getRgbBuffer","getOutputLength","isPassthrough","isDefaultDecode","fillRgb","count","originalWidth","rgbBuf","numComponentColors","needsResizing","originalHeight","allColors","bpc","colorMap","destPos","comps","rgbPos","resizeRgbImage","usesZeroToOneRange","_cache","csRef","csName","localColorSpaceCache","getCached","localColorSpace","parseAsync","parsedColorSpace","cachedColorSpace","_parse","cs","colorSpaces","resourcesCS","mode","whitePoint","blackPoint","gamma","numComps","alt","altCS","baseCS","hiVal","tintFn","pdfFunctionFactory","decode","singletons","tmpBuf","baseNumComps","baseBuf","scaled","tinted","srcOffset","inputLength","outputDelta","lookupPos","destOffset","decodeMap","q","bits","DeviceCmykCS","k","convertToRgb","CalGrayCS","A","AG","L","val","CalRGBCS","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","LMS","sourceWhitePoint","D65X","D65Y","D65Z","adjustToRange","decodeL","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","XYZ_In","matrixProduct","LMS_Flat","convertToFlat","LMS_D65","convertToD65","B","AGR","BGG","CGB","Y","Z","XYZ","normalizeWhitePointToFlat","XYZ_Black","compensateBlackPoint","XYZ_D65","normalizeWhitePointToD65","SRGB","sRGBTransferFunction","XW","YW","ZW","XB","YB","ZB","LabCS","low2","Ls","bs","maxVal","M","N","fn_g","g","DefaultPartialEvaluatorOptions","PatternType","TILING","SHADING","TEXT_CHUNK_BATCH_SIZE","deferred","parsingArray","maybeBM","normalizeBlendMode","TIME_SLOT_DURATION_MS","CHECK_TIME_EVERY","check","TimeSlotManager","_pdfFunctionFactory","newOptions","newEvaluator","hasBlendModes","processed","nodes","node","graphicStates","graphicState","bm","xObjects","xObject","xResources","fetchBuiltInCMap","cachedData","response","fetch","cMapData","compressionType","fetchStandardFontData","standardFontNameToFileName","filename","buildFormXObject","xobj","optionalContent","group","groupOptions","isolated","knockout","groupSubtype","colorSpace","_sendImgData","cacheGlobally","transfers","imgData","buildPaintImageXObject","isInline","image","imageRef","h","imageMask","interpolate","bitStrideLength","imgArray","imageIsFromDecodeStream","inverseDecode","localImageCache","softMask","mask","SMALL_IMAGE_DIMENSIONS","imageObj","res","objId","PDFImage","byteSize","handleSMask","smaskContent","smaskOptions","backdrop","transferObj","isPDFFunction","transferFn","transferMap","tmp","stateManager","handleTransferFunction","transferArray","transferMaps","numFns","numEffectfulFns","handleTilingType","tilingOpList","patternResources","patternDict","operatorListIR","tilingPatternIR","getTilingPatternIR","localTilingPatternCache","handleSetFont","fontArgs","translated","loadedName","state","handleText","isAddToPathSet","PartialEvaluator","ensureStateFont","gStateRef","gState","isSimpleGState","gStateObj","gStateKeys","localGStateCache","loadFont","errorFont","fontRef","partialMsg","fontCapability","preEvaluatedFont","fontRefIsRef","fontID","fontAliases","aliasFontRef","translatedFont","fontFile3","fontType","getFontType","buildPath","parsingText","lastIndex","opArgs","parseColorSpace","parseShading","localShadingPatternCache","Pattern","patternIR","handleColorN","patternName","rawPattern","patterns","localTilingPattern","pattern","typeNum","shading","_parseVisibilityExpression","MAX_NESTING","operator","currentResult","raw","nestedResult","parseMarkedContentProps","contentProperties","optionalContentType","expression","optionalContentGroups","groupIds","ocg","policy","self","xobjs","preprocessor","timeSlotManager","next","promiseBody","isValidName","localImage","resolveXObject","globalImage","combinedGlyphs","arrLength","arrItem","shadingRes","patternId","localGStateObj","extGState","closePendingRestoreOPS","getTextContent","seenStyles","WhitespaceRegexp","DiacriticRegExp","NormalizedUnicodes","textContent","styles","textContentItem","initialized","vertical","prevTransform","textAdvanceScale","spaceInFlowMin","spaceInFlowMax","trackingSpaceMin","negativeSpaceMax","hasEOL","TRACKING_SPACE_FACTOR","NEGATIVE_SPACE_FACTOR","SPACE_IN_FLOW_MIN_FACTOR","SPACE_IN_FLOW_MAX_FACTOR","showSpacedTextBuffer","emptyXObjectCache","emptyGStateCache","textState","tsm","glyphHeight","ascent","trm","getCurrentTextTransform","scaleLineX","scaleCtmX","scaleFactor","textChunk","bidiResult","replaceWhitespace","currentTransform","posX","posY","lastPosX","lastPosY","advanceY","advanceX","appendEOL","flushTextContentItem","addFakeSpaces","charSpacing","scaledDim","glyphUnicode","compareWithLastPosition","ensureTextContentItem","transf","runBidiTransform","batch","enqueueChunk","fontNameArg","fontSizeArg","updateAdvanceScale","spaceFactor","elements","buildTextContentItem","extraSpacing","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","enqueue","gStateFont","resolveGState","tag","mcid","stop","extractDataStructures","toUnicodePromise","baseDict","cidSystemInfo","registry","ordering","supplement","cidToGidMap","cidToGidBytes","baseEncodingName","encoding","diffEncoding","index","isNonsymbolicFont","readToUnicode","builtToUnicode","_simpleFontToUnicode","forceGlyphs","toUnicode","codeStr","buildToUnicode","ucs2CMapName","ucs2CMap","useCMap","cid","ucs2","cmap","map","token","w2","readCidToGidMap","glyphsData","glyphID","extractWidths","glyphsWidths","defaultWidth","glyphsVMetrics","vmetrics","defaultVMetrics","vmetric","firstChar","baseFontName","isMonospace","firstWidth","isSerifFont","fontNameWoStyle","getBaseFontMetrics","monospace","stdFontMap","lookupName","Metrics","glyphWidths","buildCharCodeToWidth","widthsByGlyphName","preEvaluateFont","composite","df","lastChar","diffLength","diffBuf","diffEntry","uint8array","widthsBuf","compositeWidths","subWidthsBuf","translateFont","isType3Font","isSimulatedFlags","xHeight","capHeight","standardFontName","getStandardFontName","newProperties","baseFont","fontNameStr","baseFontStr","fontFile","isInternalFont","glyphScaleFactors","subtypeEntry","length1","length2","length3","fixedPitch","fontMatrix","scaleFactors","cidEncoding","cMap","buildFontPaths","accent","send","fallback","loadType3Data","type3Evaluator","type3Dependencies","loadCharProcsPromise","charProcs","fontResources","charProcOperatorList","isEmptyBBox","glyphStream","dummyOperatorList","_removeType3ColorOperators","charBBox","old","prev","setTextLineMatrix","translateTextMatrix","translateTextLineMatrix","carriageReturn","opMap","getOPMap","numArgs","variableArgs","MAX_INVALID_PATH_OPS","lexer","EvaluatorPreprocessor","savedStatesDepth","read","cmd","opSpec","argsLength","nonProcessedArgs","preprocessCommand","BUILT_IN_CMAPS","MAX_MAP_RANGE","builtInCMap","addCodespaceRange","mapCidRange","high","low","dstLow","mapBfRange","lastByte","nextCharCode","mapBfRangeToArray","mapOne","contains","charCodeOf","getMap","readCharCode","codespaceRanges","nn","codespaceRange","kk","out","getCharCodeLength","isIdentityCMap","BinaryCMapReader","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","readByte","readNumber","last","readSigned","readHex","readHexNumber","stack","sp","bufferSize","readHexSigned","sign","readString","len","s","header","sequence","dataSize","ucs2DataSize","subitemsCount","addHex","hexToInt","incHex","hexToStr","extend","CMapFactory","isCmd","expectString","strToInt","dst","expectInt","parseWMode","parseCMapName","previous","embeddedUseCMap","parseCodespaceRange","parseBfChar","parseCidChar","parseBfRange","parseCidRange","extendCMap","createBuiltInCMap","useCodespaceRanges","parseCMap","parsedCMap","MAX_LENGTH_TO_CACHE","MAX_ADLER32_LENGTH","bytesLength","allowStreams","refill","tryShift","e","getObj","cipherTransform","buf1","findDefaultInlineStreamEnd","I","SPACE","LF","CR","NUL","startPos","maybeEIPos","followingBytes","nextObj","endOffset","findDCTDecodeInlineStreamEnd","foundEOI","markerLength","findASCII85DecodeInlineStreamEnd","TILDE","GT","tildePos","maybeEI","findASCIIHexDecodeInlineStreamEnd","inlineStreamSkipEI","makeInlineImage","dictLength","filter","filterName","filterZero","imageStream","imageBytes","initialStreamPos","dictBytes","computeAdler32","cacheEntry","_findStreamLength","SCAN_BLOCK_LENGTH","makeStream","ENDSTREAM_SIGNATURE","actualLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","maybeLength","filterArray","paramsArray","makeFilter","xrefStats","earlyChange","specialChars","knownCommands","nextChar","peekChar","getNumber","eNotation","divideBy","baseValue","powerValue","powerValueSign","currentDigit","numParen","done","charBuffered","getName","toHexDigit","previousCh","x2","_hexStringWarn","MAX_HEX_STRING_NUM_WARN","getHexString","isFirstHex","firstDigit","secondDigit","comment","nextCh","knownCommandFound","possibleCommand","peekObj","streamPos","currentChar","beginInlineImagePos","skipToNextLine","allowZeroValue","linDict","hints","hintsLength","hint","parser","obj1","obj2","obj3","getInt","getHints","objectNumberFirst","endFirst","mainXRefEntriesOffset","pageFirst","readBlock","TILDA_CHAR","Z_LOWER_CHAR","bufferLength","input","emptyBuffer","maybeMinBufferLength","ensureBuffer","requested","buffer2","bufEnd","streams","newLength","baseStreamsBuf","baseStreams","UPSTREAM_BLOCK_SIZE","maxDecodeLength","digit","EndOfLine","EncodedByteAlign","Columns","Rows","EndOfBlock","BlackIs1","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoblock","code1","readNextChar","refLine","codingLine","columns","refPos","blackPixels","code2","code3","gotEOL","_addPixels","codingPos","a1","_addPixelsNeg","_findTableCode","limitValue","table","_getTwoDimCode","_getWhiteCode","_getBlackCode","_lookBits","_eatBits","codeLenCodeMap","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","cmf","flg","getBits","codeSize","codeBuf","getCode","codes","maxLen","codeLen","codeVal","generateHuffmanTable","lengths","hdr","blockLen","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","what","repeatLength","dist","jbig2Image","globalsStream","globals","dataLength","getContexts","decoder","contextCache","cache","contexts","bit","readBits","codeLength","SegmentTypes","CodingTemplates","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodingContext","bitmap","OLD_PIXEL_MASK","row","row1","row2","contextLabel","pixel","decodeMMRBitmap","templateIndex","at","decodeBitmapTemplate0","useskip","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","pseudoPixelContext","ltp","sltp","i0","j0","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceBitmap","referenceHeight","huffman","newSymbols","currentHeight","symbolCodeLength","log2","symbols","tableB1","getStandardTable","symbolWidths","deltaHeight","huffmanTables","decodeInteger","firstSymbol","deltaWidth","numberOfInstances","decodeTextRegion","symbolId","decodeIAID","rdx","rdy","symbol","decodeRefinement","decodeBitmap","bitmapSize","huffmanInput","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMin","bitmapWidth","xMax","symbolBitmap","exportedSymbols","currentFlag","totalSymbolsLength","runLength","stripT","firstS","deltaT","deltaFirstS","currentS","currentT","stripSize","applyRefinement","refinement","inputSymbols","symbolWidth","symbolHeight","rdw","rdh","offsetT","offsetS","s2","symbolRow","deltaS","collectiveWidth","patternBitmap","patternWidth","combinationOperator","regionBitmap","numberOfPatterns","pattern0","patternHeight","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","gridOffsetX","gridOffsetY","regionRow","patternRow","regionY","regionX","segmentHeader","readUint32","segmentType","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","readUint16","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","genericRegionMmr","searchPatternLength","searchPattern","segments","readSegmentHeader","segment","RegionSegmentInformationFieldLength","dictionary","dictionaryFlags","atLength","readInt8","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","callbackName","visitor","processSegment","readSegments","processSegments","bitPacked","onPageInformation","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","onSymbolDictionary","getSymbolDictionaryHuffmanTables","referredSegments","referredSymbols","decodeSymbolDictionary","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","decodePatternDictionary","onImmediateHalftoneRegion","decodeHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","customTables","decodeTablesSegment","lineData","buildTree","decodeNode","htOffset","reader","assignPrefixCodes","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","prefixLength","rangeLength","standardTablesCache","readBit","numBits","byteAlign","currentIndex","runCodesTable","numberOfRepeats","repeatedLength","symbolIDTable","customIndex","tableFirstS","getCustomHuffmanTable","tableDeltaS","tableDeltaT","tableDeltaHeight","tableDeltaWidth","tableBitmapSize","tableAggregateInstances","eof","currentByte","endOfBlock","lookForEOFLimit","parseChunks","parseJbig2Chunks","parseJbig2","QeTable","qe","nmps","nlps","switchFlag","byteIn","bp","cx_index","cx_mps","qeTableIcx","qeIcx","jpegOptions","decodeTransform","colorTransform","decodeArr","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","forceRGB","isSourcePDF","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","children","parseDNLMarker","mcusPerLine","frame","progressive","startOffset","bitsData","bitsCount","nextByte","scanLines","maybeScanLines","blockRow","receive","decodeHuffman","diff","receiveAndExtend","rs","z","blockOffset","eobrun","successiveACState","offsetZ","successiveACNextValue","mcuRow","mcu","mcuCol","blockCol","getBlockBufferOffset","componentsLength","components","spectralStart","decodeFn","successivePrev","mcuExpected","mcuToRead","resetInterval","decodeBlock","decodeMcu","fileMarker","findNextFileMarker","qt","blockData","p0","blockBufferOffset","p5","p6","p7","v0","v3","v4","v7","v5","v6","col","blocksPerLine","blocksPerColumn","computationBuffer","quantizeAndInverse","maxPos","newPos","currentPos","currentMarker","invalid","marker","newMarker","dnlScanLines","mcusPerColumn","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","appData","readDataBlock","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","sofScanLines","componentsCount","maxH","maxV","componentId","qId","l","quantizationId","quantizationTable","prepareComponents","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","buildHuffmanTable","selectorsCount","componentIndex","tableSpec","spectralEnd","successiveApproximation","decodeScan","nextFileMarker","output","buildComponentData","scaleX","scaleY","_getLinearizedBlockData","numComponents","xScaleBlockOffset","mask3LSB","componentScaleX","componentScaleY","blocksPerScanline","lastComponentScaleX","_isColorConversionNeeded","_convertYccToRgb","Cb","Cr","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","getData","rgbData","grayColor","jpxImage","tileCount","tileComponents","tileWidth","tileHeight","tileLeft","tileTop","srcPosition","dataPosition","imgRowSize","tileRowSize","rowBytes","SubbandsGainLog2","LL","LH","HL","HH","head","headerSize","lbox","tbox","jumpDataLength","method","colorspace","headerType","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","parseCodestream","context","doNotRecover","siz","precision","isSigned","XRsiz","YRsiz","calculateComponentDimensions","calculateTileGrids","qcd","sqcd","spqcdSize","scalarExpounded","spqcds","spqcd","qcc","cqcc","cod","scod","blockStyle","precinctsSizes","precinctsSize","PPx","PPy","unsupported","tile","initializeTile","buildPackets","parseTilePackets","transformComponents","tiles","numXtiles","numYtiles","tileComponent","codOrCoc","precinctWidth","dimensions","precinctHeight","isZeroRes","resolution","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","numprecinctshigh","numprecincts","xcb_","ycb_","codeblockWidth","codeblockHeight","cbx0","subband","cby0","cbx1","cby1","precinctParameters","codeblocks","precincts","codeblock","cbx","cby","tbx0","tby0","tbx1","tby1","pi","pj","precinctNumber","precinct","cbxMin","cbyMin","cbxMax","cbyMax","numcodeblockwide","numcodeblockhigh","precinctCodeblocks","subbands","tileIndex","layersCount","maxDecompositionLevelsCount","packet","createPacket","maxNumPrecinctsInLevel","maxNumPrecincts","resolutions","getPrecinctSizesInImageScale","precinctsIterationSizes","px","decompositionLevelsCount","sizeInImageScale","getPrecinctIndexIfExist","pxIndex","precinctIterationSizes","pyIndex","startPrecinctRowIndex","minWidth","minHeight","maxNumWide","maxNumHigh","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","widthCurrentResolution","heightCurrentResolution","blocksDimensions","getBlocksDimensions","buildPrecincts","buildCodeblocks","bscale","resolutionSubbands","progressionOrder","skipNextBit","skipBytes","sopMarkerUsed","ephMarkerUsed","packetsIterator","alignToByte","skipMarkerIfEqual","layerNumber","queue","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","inclusionTree","zeroBitPlanesTree","valueReady","codingpasses","readCodingpasses","codingpassesLog2","codedDataLength","packetItem","right","bottom","blockWidth","blockHeight","bitModel","currentCodingpassType","totalLength","dataItem","encodedData","magnitude","bitsDecoded","magnitudeCorrection","reversible","interleave","levelOffset","nb","coefficients","mb","codingStyleParameters","quantizationParameters","guardBits","segmentationSymbolUsed","subbandCoefficients","mu","epsilon","gainLog2","delta","copyCoefficients","left","top","resultImages","transformedTiles","transformTile","tile0","fourComponents","y0items","y1items","y2items","y3items","component0","y2","qcdOrQcc","levelsLength","level","currentLevel","incrementValue","nextLevel","stopValue","propagateValues","levelIndex","currentValue","BitModel","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","contextLabelTable","coefficientCount","coefficentsMagnitude","zeroBitPlanes","setDecoder","setNeighborsSignificance","neighborsSignificance","column","runSignificancePropagationPass","coefficentsSign","processingFlags","labels","processedInverseMask","processedMask","firstMagnitudeBitMask","i1","decision","decodeSignBit","significance1","sign1","sign0","contribution","horizontalContribution","decoded","runMagnitudeRefinementPass","width4","index0","indexNext","significance","runCleanupPass","oneRowDown","twoRowsDown","threeRowsDown","iNext","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","checkSegmentationSymbol","calculate","ll","j1","j2","iterate","llWidth","llHeight","llItems","hl_lh_hh","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","u","alpha","beta","K_","current","maxLzwDictionarySize","lzwState","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","bitsCached","blockSize","decodedSizeDelta","estimatedDecodedSize","prevCode","decodedLength","currentBufferLength","hasPrev","predictor","colors","readBlockTiff","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","readBlockPng","pixBytes","prevRow","up","upLeft","pa","pb","pc","repeatHeader","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","matchesForCache","isTrueTypeFile","isTrueTypeCollectionFile","fileType","isOpenTypeFile","isType1File","isCFFFile","fileSubtype","glyphMap","toFontChar","shouldThrow","msg","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","originalCharCode","hasGlyph","fontCharCode","codeIndices","getRanges","numTables","string16","string32","bmpLength","trailingRangesCount","segCount","searchParams","OpenTypeFileBuilder","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","bias","contiguous","startCode","format314","format31012","header31012","os2","selection","usWinAscent","override","unitsPerEm","yMax","yMin","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","typoAscent","typoDescent","winAscent","winDescent","proto","strings","createPostscriptName","stringsUnicode","strBufUnicode","names","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","baseName","serifFonts","fallbackName","getFontFileType","cff","adjustWidths","amendFallbackToUnicode","renderer","FontRendererFactory","exportData","extraProperties","exportDataProperties","fallbackToSystemFont","nonStdFontMap","isMappedToStandardFont","isNarrow","applyStandardFontGlyphMap","buildToFontChar","unicodeCharCode","checkAndRepair","VALID_TABLES","tables","readTableEntry","checksum","previousPosition","ttf","searchRange","entrySelector","rangeShift","ttcTag","ttc","majorVersion","minorVersion","numFonts","offsetTable","readTrueTypeCollectionHeader","fontNameParts","potentialHeader","readOpenTypeHeader","potentialTables","readTables","readNameTable","nameEntry","fallbackData","platformId","encodingId","mappings","hasShortCmap","canBreak","useTable","potentialTable","correctlySorted","nextBytes","nextPlatformId","int16","format","subHeaderKeys","maxSubHeaderKey","subHeaderKey","subHeaders","entryCount","idDelta","signedInt16","idRangePos","segIndex","offsetsCount","rangeOffset","offsetIndex","offsets","caretOffset","numOfMetrics","macStyle","headTable","numOfSidebearings","numGlyphs","numMissing","glyphProfile","sizeOfInstructions","sourceEnd","glyf","contoursCount","writeSignedInt16","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","flag","xLength","yLength","xyLength","repeat","glyphDataLength","destStart","int32","indexToLocFormat","numGlyphsPlusOne","locaLength","itemSize","itemDecode","itemEncode","numGlyphsOut","dupFirstEntry","locaDataSize","locaData","loca","oldGlyfData","oldGlyfDataLength","newGlyfData","locaEntries","missingGlyphs","writeOffset","sanitizeGlyph","maxSizeOfInstructions","simpleGlyph","firstEntryLength","post","valid","glyphNameIndexes","customNames","stringLength","propertiesObj","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","records","NAME_RECORD_LENGTH","platform","language","record","nameIndex","TTOpsStackDeltas","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","ttContext","inFDEF","ifLevel","inELSE","op","funcId","newStackLength","stackTop","stackDelta","foldTTTable","functionsDefined","functionsUsed","functionsStackDeltas","hintsValid","sanitizeTTProgram","checkInvalidFunctions","cvt","cvtData","ttcData","readTrueTypeCollectionData","isTrueType","isComposite","cffFile","isGlyphLocationsLong","glyfTable","locaTable","isLocationLong","advanceWidth","lsb","maxFunctionDefs","maxZones","sanitizeTTPrograms","sanitizeMetrics","sanitizeHead","glyphsInfo","sanitizeGlyphLocations","metricsOverride","readPostScriptTable","createPostTable","isCidToGidMapEmpty","convertCidString","cmapTable","readCmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","cmapMappingsLength","forcePostTable","unicodeOrCharCode","glyphZeroId","newMapping","adjustMapping","createCmapTable","validateOS2Table","createOS2Table","compiler","createNameTable","namePrototype","builder","convert","adjustToUnicode","mapping","newCharCodeToGlyphId","charCodes","seacs","charset","seacMap","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","getCharCodes","baseFontCharCode","createCharCode","accentFontCharCode","safeString16","charstrings","cffWidths","hmtx","charstring","spaceWidth","possibleSpaceReplacements","charcode","_charToGlyph","isSpace","widthCode","isInFont","operatorListId","fontChar","charsToGlyphs","getCharPositions","glyphCacheValues","encodeString","buffers","currentBuf","hasCurrentBufErrors","getCharCode","charCodeLength","error","MAX_SUBR_NESTING","CFFStandardStrings","NUM_STANDARD_CFF_STRINGS","CFFParser","CharstringValidationData","min","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackFn","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","topDict","charStringOffset","charStringIndex","fontBBox","fdArrayIndex","dictRaw","fontDict","charStringsAndSeacs","charStrings","localSubrIndex","fdSelect","fdArray","privateDict","parseHeader","hdrSize","offSize","endPos","parseDict","parseFloatOperand","operands","parseOperand","parseIndex","cffIndex","offsetSize","offsetStart","offsetEnd","parseNameIndex","parseStringIndex","createDict","cffDict","pair","parseCharString","stackSize","validationCommand","subrsIndex","subrNumber","parseCharStrings","callDepth","firstStackClearing","hasVStems","localSubrToUse","privateDictToUse","fdIndex","nominalWidth","emptyPrivateDictionary","parentDict","parsePrivateDict","privateOffset","privateDictEnd","dictData","subrsOffset","relativeOffset","parseCharsets","CFFCharsetPredefinedTypes","parseEncoding","predefined","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","dataEnd","readSupplement","parseFDSelect","duplicateFirstGlyph","glyphZero","hasGlyphId","getSID","add","setByKey","valueLength","setByName","hasName","getByName","removeByName","createTables","keyToNameMap","nameToKeyMap","defaults","types","opcodes","order","layout","CFFTopDict","CFFDict","CFFPrivateDict","ISO_ADOBE","EXPERT","EXPERT_SUBSET","getFDIndex","glyphIndex","isTracking","track","setEntryLocation","dataOffset","offset1","offset2","offset3","offset4","compile","xuid","compiled","topDictTracker","fontDictTrackers","encodeNumber","EncodeFloatRegExp","encodeFloat","CFFCompiler","nibbles","encodeInteger","compileHeader","compileNameIndex","sanitizedName","compileTopDicts","dicts","fontDictTracker","fontDictData","trackers","compilePrivateDicts","privateDictTracker","privateDictData","outputLength","subrs","compileDict","offsetTracker","compileStringIndex","compileGlobalSubrIndex","compileCharStrings","charStringsIndex","compileCharset","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","compileEncoding","compileFDSelect","lastFD","currentFD","numRanges","compileTypedArray","compileIndex","objects","lastOffset","ISOAdobeCharset","ExpertCharset","ExpertSubsetCharset","getStdFontMap","getFontNameToFileMap","getNonStdFontMap","getSerifFonts","getSymbolsFonts","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","amend","getCharset","getGlyphMapping","charsets","type1FontGlyphMapping","_createBuiltInEncoding","numSubrs","getUshort","getLong","idOffset","groups","gsubrs","isCFFCIDFont","cmds","numberOfContours","arg1","arg2","scale01","scale10","subglyph","compileGlyf","endPtsOfContours","instructionLength","numberOfPoints","startPoint","contour","quadraticCurveTo","stems","stackClean","xa","ya","xb","yb","bezierCurveTo","subrCode","getSubroutineBias","y3","achar","bchar","lookupCmap","compileCharString","NOOP","getPathJs","compileGlyph","compileGlyphImpl","hasBuiltPath","cffInfo","glyphNameMap","parseCmap","parseCff","parseGlyfTable","ON_CURVE_POINT","X_SHORT_VECTOR","Y_SHORT_VECTOR","REPEAT_FLAG","X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR","Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR","OVERLAP_SIMPLE","ARG_1_AND_2_ARE_WORDS","ARGS_ARE_XY_VALUES","WE_HAVE_A_SCALE","MORE_COMPONENTS","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_INSTRUCTIONS","Glyph","getSize","write","totalSize","locaIndex","simple","composites","GlyphHeader","CompositeGlyph","SimpleGlyph","spos","xMiddle","endPt","numberOfPt","instructions","allXCoordinates","xCoordinates","yCoordinates","pointFlags","contours","endPtsOfContoursIndex","lastCoordinate","lastX","lastY","abs","argument1","argument2","abs1","abs2","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","getSearchParams","maxPower2","entrySize","toArray","sfnt","tablesNames","tableOffsets","paddedLength","writeData","writeInt16","tableName","quad","writeInt32","addTable","streamBytesLength","streamBytes","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","findBlock","suggestedLength","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","eexecBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","getHeaderBlock","headerBlockParser","eexecBlock","getEexecBlock","eexecBlockParser","type2Charstrings","charstringsLen","getSeacs","getType2Charstrings","type1Charstrings","getType2Subrs","type1Subrs","type2Subrs","wrap","charsetArray","subrIndex","HINTING_ENABLED","Type1CharString","COMMAND_MAP","hstem","vstem","vmoveto","rlineto","hlineto","vlineto","rrcurveto","callsubr","flex","drop","endchar","rmoveto","hmoveto","vhcurveto","hvcurveto","encoded","wx","sbx","asb","sby","num2","num1","flexArgs","executeCommand","stackLength","howManyArgs","Type1Parser","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","discardNumber","c1","c2","decrypted","digit1","isHexDigit","digit2","isBinary","decrypt","decryptAscii","readNumberArray","readInt","readBoolean","getToken","isSpecial","readCharStrings","lenIV","extractFontProgram","privateData","program","blueArray","charString","charStringObject","extractFontHeader","encodingArg","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","SMALL_NUMBER","getIR","t0","domainArr","extendStart","extendEnd","extendArr","distance","r1","r2","fnObj","NUMBER_OF_SAMPLES","colorStops","ratio","cssColor","background","BaseShading","coordsArr","shadingType","r0","csNumComps","hasData","align","readFlag","readCoordinate","bitsPerCoordinate","xi","yi","readComponents","ci","getB","lut","t_","buildB","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","TRIANGLE_DENSITY","decodeContext","bitsPerFlag","colorFn","patchMesh","verticesPerRow","_decodeType4Shading","coords","operators","ps","verticesLeft","f","coord","_decodeType5Shading","_decodeType6Shading","tmp1","tmp2","tmp3","tmp4","_decodeType7Shading","_buildFigureFromPatch","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","MeshShading","splitYBy","figureCoords","figureColors","cl","cr","c0","c3","bRow","bCol","newColor","_updateBounds","_packData","coordsPacked","xy","colorsPacked","figures","xstep","ystep","paintType","tilingType","cachedFunction","parsedFunction","createFromArray","fnRef","localFunction","_localFunctionCache","getSampleArray","sampleMul","strBytes","strIdx","parseArray","fnArray","constructSampled","ymin","domain","toNumberArray","inputSize","outputSize","toMultiArray","bps","encode","samples","cubeVertices","cubeN","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","constructInterpolated","constructStiched","fnRefs","fns","dmin","dmax","rmin","rmax","constructPostScript","numOutputs","numInputs","MAX_CACHE_SIZE","cache_available","cachedValue","stackIndex","bound","fnDict","MAX_STACK_SIZE","PostScriptStack","pop","copy","roll","execute","counter","PostScriptCompiler","visit","arg","visitArgument","visitVariable","variable","visitLiteral","literal","visitBinaryOperation","visitVariableDefinition","definition","visitMin","max","lastRegister","buildAddOperation","buildMulOperation","buildSubOperation","ast1","ast2","tmpVar","buildMinOperation","statementBuilder","instruction","expr","nextToken","accept","expect","PostScriptTokenTypes","parseBlock","parseCondition","conditionLocation","jumpLocation","endOfTrue","LBRACE","RBRACE","NUMBER","OPERATOR","IF","IFELSE","opCache","getOperator","opValue","PostScriptToken","getByRef","onlyRefs","NUM_PAGES_THRESHOLD","MIN_IMAGES_TO_CACHE","MAX_BYTE_SIZE","_byteSize","imageData","_cacheLimitReached","GlobalImageCache","shouldCache","pageIndexSet","addPageIndex","addByteSize","setData","onlyData","baseTypes","arabicTypes","temp","startLevel","isLTR","strLength","createBidiText","numBidi","charType","levels","isOdd","sor","eor","lastType","findUnequal","before","after","setValues","isEven","highestLevel","lowestOddLevel","reverseValues","getMetrics","SEED","MASK_HIGH","MASK_LOW","seed","update","blockCounts","tailLength","dataUint32","k1","k2","h2","C1","C2","C1_LOW","C2_LOW","hexdigest","hex1","hex2","iFirstPIMXO","iFirstSave","argsArray","InitialState","addState","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","curr","iFirstTransform","iFirstPIIXO","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","kind","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","handlePaintSolidColorImageMask","isSameImage","firstPIMXOArg0","firstTransformArg0","firstTransformArg1","firstTransformArg2","firstTransformArg3","iTransform","iPIMXO","transformArgs","images","maskParams","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","_optimize","flush","iCurr","CHUNK_SIZE","CHUNK_SIZE_ABOUT","streamSink","ready","addOp","OperatorList","addDependency","addDependencies","addOpList","_transfers","addend","isMask","isIndexed","maskDict","buildImage","smaskData","maskData","createMask","computedLength","haveFullData","drawWidth","drawHeight","decodeBuffer","decodeAddends","decodeCoefficients","decodeAndClamp","getComponents","bufferPos","rowComps","loop1End","loop2End","remainingBits","fillOpacity","sw","sh","alphaBuf","resizeImageMask","opacity","imageOffset","maskOffset","rgbaBuf","undoPreblend","matte","matteRgb","matteR","matteG","matteB","createImageData","forceRGBA","newArray","imageLength","actualHeight","maybeUndoPreblend","fillGrayBuffer","getImageBytes","lang","needsRendering","collection","metadata","streamRef","suppressEncryption","markInfo","_readMarkInfo","Marked","UserProperties","Suspects","_readStructTreeRoot","root","toplevelPagesDict","pagesObj","documentOutline","_readDocumentOutline","blackColor","outlineDict","title","outlineItem","unsafeUrl","bold","italic","permissions","_readPermissions","optionalContentConfig","defaultConfig","groupsData","groupRefs","groupRef","_readOptionalContentConfig","onParsed","contentGroupRefs","nestedLevels","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","nestedName","parseOrder","MAX_NESTED_LEVELS","creator","baseState","on","parseOnOff","off","setActualNumPages","hasActualNumPages","_pagesCount","destinations","dests","fetchDestination","getDestination","allDest","_readDests","pageLabels","_readPageLabels","prefix","numberTree","nums","currentLabel","labelDict","st","toRomanNumerals","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","charBuf","pageLayout","pageMode","viewerPreferences","ViewerPreferencesValidators","HideToolbar","HideMenubar","HideWindowUI","FitWindow","CenterWindow","DisplayDocTitle","NonFullScreenPageMode","Direction","ViewArea","ViewClip","PrintArea","PrintClip","PrintScaling","Duplex","PickTrayByPDFSize","PrintPageRange","NumCopies","prefs","prefValue","openAction","attachments","nameTree","fs","_collectJavaScript","jsDict","appendIfJavaScriptDict","translatedFonts","getPageDict","nodesToVisit","visitedNodes","pagesRef","pageKidsCountCache","currentPageIndex","currentNode","getAllPageDicts","posInKids","queueItem","addPageError","kidObj","addPageDict","getPageIndex","cachedPageIndex","isRefsEqual","parentRef","kidPromises","parseDestDictionary","actionType","actionName","include","urlDict","remoteDest","JSON","namedAction","jsAction","jsURL","recoverJsURL","addDefaultProtocol","tryConvertEncoding","getAll","kidsOrEntries","loopCount","MAX_LEVELS","limits","currentKey","pickPlatformItem","fileObj","serializable","lowerCaseName","xmlDocument","_repair","_getSequence","_parseArray","rdf","desc","parsedData","rawData","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","isWhitespace","_resolveEntities","_parseContent","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","parsed","_parseProcessingInstruction","attrStart","parseXml","ch2","q2","complexDoctype","doctypeContent","isClosed","onResolveEntity","onPi","onComment","onCdata","onDoctype","onText","onBeginElement","onEndElement","firstChild","nextSibling","childNodes","child","hasChildNodes","searchNode","paths","siblingPos","dump","encodeToXmlString","attribute","hasAttributes","parseFromString","isWhitespaceString","lastElement","MAX_DEPTH","StructElementType","PAGE_CONTENT","STREAM_CONTENT","OBJECT","ELEMENT","init","readRoleMap","roleMapDict","role","nameObj","parseKids","pageObjId","objRef","parseKid","kidDict","refObjId","parentTree","parentArray","addNode","parentNode","addTopLevelNode","kidRef","kidElement","nodeToSerializable","mayHaveChildren","load","rawValue","_walk","nodesToRevisit","pendingRequests","manager","foundMissingData","addChildren","writeValue","string","roundedValue","writeArray","numberToString","writeStream","time","md5Buffer","filesize","md5BufferLen","writeString","xml","parseXFAPath","oldXfa","newXfa","writeXFADataForAcroform","updateXFA","newXref","refForXrefTable","baseOffset","xrefTableData","indexes","maxOffset","md5","computeMD5","sizes","structSize","tableLength","bufferLen","footer","writeInt","keyLength","encryptBlock","decryptBlock","h0","h3","padded","rotateArg","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","not","lowAdd","highAdd","copyTo","assign","calculateSHA256","rotr","h4","h5","h6","h7","littleSigmaPrime","littleSigma","sigmaPrime","sigma","maj","calculateSHA512","mode384","_expandKey","_decrypt","s0","s1","s3","_encrypt","_decryptBlock2","sourceLength","iv","plain","lastBlock","psLen","cipher","rcon","t3","t4","checkOwnerPassword","hashData","ownerValidationSalt","checkUserPassword","getOwnerKey","ownerKeySalt","getUserKey","PDF20","combinedLength","userBytes","combinedArray","remainder","calculateSHA384","calculatePDF20Hash","createStream","decryptString","encryptString","strLen","pad","crypto","CipherTransformFactory","defaultPasswordBytes","passwordLength","revision","pdfAlgorithm","hashDataSize","ownerPassword","fileId","keyLengthInBytes","encryptionKey","checkData","derivedKey","userPassword","identityName","isAes","cryptFilter","cf","cfm","buildObjectKey","algorithm","cfDict","streamCryptoName","handlerDict","encryptMetadata","fileIdBytes","utf8StringToString","passwordBytes","prepareKeyData","uBytes","userValidationSalt","userKeySalt","ownerEncryption","userEncryption","perms","createEncryptionKey20","decodedPassword","decodeUserPassword","createCipherTransform","buildCipherConstructor","cipherConstructor","hasMoreData","binder","_createPagesHelper","iterator","nextIteration","setTimeout","_createPages","getBoundingBox","getNumPages","setImages","setFonts","typeface","stripQuotes","appendFonts","getPages","pages","serializeData","_createDocument","getRichTextAsHtml","newRoot","XhtmlNamespace","attr","$acceptWhitespace","$addHTML","$appendChild","$childrenToHTML","$clean","$cleanPage","$cleanup","$clone","$consumed","$content","$data","$dump","$extra","$finalize","$flushHTML","$getAttributeIt","$getAttributes","$getAvailableSpace","$getChildrenByClass","$getChildrenByName","$getChildrenByNameIt","$getDataValue","$getExtra","$getRealChildrenByNameIt","$getChildren","$getContainedChildren","$getNextPage","$getSubformParent","$getParent","$getTemplateRoot","$globalData","$hasSettableValue","$ids","$indexOf","$insertAt","$isCDATAXml","$isBindable","$isDataValue","$isDescendent","$isNsAgnostic","$isSplittable","$isThereMoreWidth","$isTransparent","$isUsable","$lastAttribute","$namespaceId","$nodeName","$nsAttributes","$onChild","$onChildCheck","$onText","$pushGlyphs","$popPara","$pushPara","$removeChild","$root","$resolvePrototypes","$searchNode","$setId","$setSetAttributes","$setValue","$tabIndex","$text","$toPages","$toHTML","$toString","$toStyle","$uid","_applyPrototype","_attributes","_attributeNames","_children","_cloneAttribute","_dataValue","_defaultValue","_filteredChildrenGenerator","_getPrototype","_getUnsetAttributes","_hasChildren","_max","_options","_parent","_resolvePrototypesHelper","_setAttributes","_validator","uid","NS_DATASETS","NamespaceIds","hasChildren","dumped","HTMLResult","availableSpace","allAttr","setAttr","ancestors","somExpression","usehref","use","protoProto","newAncestors","protoValue","XFAObject","clonedChild","allTransparent","dataNode","tagName","utf8TagName","utf8Name","hasNS","dimConverters","pt","cm","mm","in","measurementPattern","def","getMeasurement","conv","den","excluded","viewname","FAILURE","EMPTY","isBreak","breakNode","success","$buildXFAObject","ns","form","pdf","sourceSet","xdc","xdp","xfdf","xhtml","xmpmeta","namePattern","indexPattern","dot","dotDot","dotHash","dotBracket","dotParen","shortcuts","somCache","noExpr","cacheName","formCalc","dotDotAllowed","useCache","parseExpression","isQualified","container","cached","isFinite","acc","nsId","createNodes","_isConsumeData","_isMatchTemplate","bind","_bindValue","formNode","createText","_findDataByNameToConsume","generator","isValue","_setProperties","targetNodes","targetNode","targetParent","attrs","Reflect","_bindItems","labelNodes","labelNode","valueNodes","valueNode","label","_bindOccurrences","matches","baseClone","_createOccurrences","occur","currentNumber","nodeClone","_getOccurInfo","_setAndBind","_bindElement","uselessNodes","dataChildren","dataChild","global","picture","createDataNode","TEMPLATE_NS_ID","SVG_NS","MAX_ATTEMPTS_FOR_LRTB_LAYOUT","MAX_EMPTY_PAGES","DEFAULT_TAB_INDEX","HEADING_PATTERN","MIMES","IMAGES_HEADERS","borderExtra","templateNode","nodeValue","assist","assistTitle","ariaRole","ariaLevel","class","target","pageArea","nextPageArea","contentAreas","indexForCurrent","indexForTarget","currentPageArea","saved","savedMethod","extraNode","edge","edgeStyle","measureToString","xmlns","overflow","arc","cx","cy","rx","ry","startAngle","sweepAngle","largeArc","vectorEffect","viewBox","preserveAspectRatio","svg","hasMargin","display","getRelevant","getContainedChildren","toStyle","isPrintOnly","html","getRatio","valueToHtml","edges","defaultEdge","insets","edgeStyles","cornerStyles","grandpa","htmlButton","event","href","fixURL","_setValue","savedReserve","setPara","exportedValue","checked","fieldId","groupId","className","dataId","xfaOn","xfaOff","ariaLabel","ui","optionStyle","displayedIndex","saveIndex","displayed","selected","selectAttributes","getStringOption","getColor","classNames","setTabIndex","fixDimensions","savedW","savedH","layoutNode","isBroken","setFirstUnsplittable","checkDimensions","unsetFirstUnsplittable","setMinMaxDimensions","applyAssist","computeBbox","createWrapper","linecap","flushHTML","addHTML","getAvailableSpace","setAccess","attempt","numberInLine","prevHeight","isSplittable","columnWidths","layoutClass","isLrTb","maxRun","marginH","marginV","caption","borderDims","uiW","uiH","getBorderDims","aElement","htmlValue","captionHeight","inputHeight","ggrandpa","propName","altPropName","setFontFamily","atob","blob","objectFit","thickness","startColor","endColor","margin","getBBox","originalMin","leader","trailer","addLeader","addTrailer","numberOfUse","xfaName","pageSetIndex","pageNumber","parity","fixTextIndent","corner","cornerStyle","bgColor","targetType","startNew","breakBefore","handleBreak","savedNoLayoutFailure","overflowExtra","handleOverflow","breakAfter","kv","overflowNode","firstUnsplittable","currentContentArea","noLayoutFailure","pagePosition","oddOrEven","blankOrNotBlank","paraStack","pageAreas","mainHtml","breakBeforeTarget","pageAreaParent","hasSomething","hasSomethingCounter","startIndex","targetPageArea","htmlContentAreas","contentArea","space","para","valueName","TemplateNamespace","appearanceFilter","area","barcode","bindItems","bookend","boolean","border","break","button","certificate","certificates","checkButton","choiceList","connect","dateTime","dateTimeEdit","decimal","defaultUi","digestMethod","digestMethods","draw","encryptData","encryption","encryptionMethod","encryptionMethods","exData","exObject","exclGroup","extras","float","hyphenation","imageEdit","integer","issuers","keep","keyUsage","linear","lockDocument","manifest","mdp","medium","message","numericEdit","oid","oids","pageSet","passwordEdit","radial","reasons","script","setProperty","signData","signing","solid","speak","stipple","subform","subformSet","subjectDN","subjectDNs","submit","textEdit","timeStamp","toolTip","traversal","traverse","variables","htmlFromFailing","createLine","ERROR","getTransformedBBox","converters","anchorType","colSpan","presence","hAlign","measure","fontFinder","layoutText","newStyle","wrapper","insetsH","insetsW","indent","nodeStyle","getCurrentPara","valueStyle","paraStyle","xfaFont","pdfFont","selectFont","myriad","addPdfFont","getDefault","mustWarn","maybe","family","real","lineNoGap","WIDTH_FACTOR","posture","letterSpacing","defaultFont","pushData","lastFont","popFont","topFont","addPara","addString","fontLineHeight","noGap","firstLineHeight","fallbackWidth","encodedLine","compute","lastSpaceWidth","currentLineWidth","currentLineHeight","isFirstLine","serialize","storage","rootNameSpace","richText","usedTypefaces","_mkAttributes","namespace","prefixes","attributeObj","nsAttrs","_getNameAndPrefix","nsAgnostic","buildRoot","build","hasNamespaceDef","dataTemplate","NamespaceSetUp","xfaAttrs","nsToUse","namespaceToUse","hasNamespace","isNsAgnostic","_searchNamespace","_addNamespacePrefix","prefixStack","_getNamespaceToUse","clean","connection","CONFIG_NS_ID","unicodeRange","unicodeRegex","numbers","ConfigNamespace","acrobat","acrobat7","ADBE_JSConsole","ADBE_JSDebugger","addSilentPrint","addViewerPreferences","adjustData","adobeExtensionLevel","agent","alwaysEmbed","amd","autoSave","batchOutput","behaviorOverride","change","common","compress","compressLogicalStructure","compressObjectStream","compression","conformance","contentCopy","copies","currentPage","debug","defaultTypeface","destination","documentAssembly","driver","duplexOption","dynamicRender","embed","encryptionLevel","enforce","equate","equateRange","exclude","excludeNS","flipLabel","formFieldFilling","groupParent","ifEmpty","includeXDPContent","incrementalLoad","incrementalMerge","interactive","jog","labelPrinter","linearized","locale","log","mediumInfo","messaging","modifyAnnots","msgId","nameAttr","neverEmbed","numberOfCopies","outputBin","outputXSL","overprint","packets","pageOffset","pageRange","pagination","paginationOverride","part","pcl","pdfa","pickTrayByPDFSize","plaintextMetadata","present","print","printHighQuality","printScaling","printerName","producer","relevant","rename","renderPolicy","runScripts","scriptModel","severity","silentPrint","staple","startNode","startPage","submitFormat","submitUrl","subsetBelow","suppressBanner","tagged","templateCache","threshold","to","trace","uri","validateApprovalSignatures","validationMessaging","versionControl","webClient","whitespace","window","xsl","zpl","CONNECTION_SET_NS_ID","ConnectionSetNamespace","effectiveInputPolicy","effectiveOutputPolicy","rootElement","soapAction","soapAddress","wsdlAddress","wsdlConnection","xmlConnection","xsdConnection","DATASETS_NS_ID","DatasetsNamespace","LOCALE_SET_NS_ID","LocaleSetNamespace","calendarSymbols","currencySymbol","currencySymbols","datePattern","datePatterns","dateTimeSymbols","day","dayNames","era","eraNames","meridiem","meridiemNames","month","monthNames","numberPattern","numberPatterns","numberSymbol","numberSymbols","timePattern","timePatterns","typeFace","typeFaces","SIGNATURE_NS_ID","SignatureNamespace","STYLESHEET_NS_ID","StylesheetNamespace","XDP_NS_ID","XdpNamespace","XHTML_NS_ID","$richText","VALID_STYLES","StyleMapping","original","spacesRegExp","crlfRegExp","crlfForRichTextRegExp","styleStr","newValue","SUB_SUPER_SCRIPT_FACTOR","VERTICAL_FACTOR","NoWhites","checkStyle","mustPop","mapStyle","siblings","body","br","li","ol","span","sub","sup","ul","getNewRef","resetNewRef","setStartXRef","trailerDict","processXRefTable","entryNum","parserBuf1","parserBuf2","readXRefTable","tableState","processXRefStream","streamParameters","byteWidths","entryRanges","readXRefStream","streamState","generation","typeByte","typeFieldWidth","offsetByte","generationByte","indexObjects","TAB","PERCENT","LT","skipped","objRegExp","endobjRegExp","nestedObjRegExp","CHECK_CONTENT_LENGTH","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailers","xrefStms","readToken","skipUntil","updateEntries","uncompressed","contentLength","checkPos","tokenStr","objToken","xrefTagOffset","rootDict","pagesDict","pagesCount","readXRef","startXRefParsedCache","getEntry","xrefEntry","fetchIfRef","fetchUncompressed","fetchCompressed","tableOffset","fetchIfRefAsync","fetchAsync","getCatalogObj","CallbackKind","DATA","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","callbackId","wrapReason","cbSourceName","cbTargetName","comObj","sourceName","targetName","ah","sendWithPromise","sendWithStream","streamId","controller","startCapability","startCall","pullCall","cancelCall","desiredSize","pull","pullCapability","cancel","cancelCapability","_createStreamSink","lastDesiredSize","close","sinkCapability","onPull","onCancel","isCancelled","_processStreamMessage","streamController","_deleteStreamController","destroy","getFullReader","getRangeReader","cancelAllRequests","readableStream","headersReady","isStreamingSupported","isRangeSupported","pdfjsVersion","pdfjsBuild"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"pdf.worker.js","mappings":"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ARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,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","sources":["webpack://pdfjs-dist/build/pdf.worker/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.worker/src/core/worker.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/util.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf.worker/src/core/primitives.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pdf_manager.js","webpack://pdfjs-dist/build/pdf.worker/src/core/chunked_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/core_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/base_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/document.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/calibri_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/helvetica_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/liberationsans_widths.js","webpack://pdfjs-dist/build/pdf.worker/src/core/myriadpro_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/segoeui_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/encodings.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyphlist.js","webpack://pdfjs-dist/build/pdf.worker/src/core/unicode.js","webpack://pdfjs-dist/build/pdf.worker/src/core/annotation.js","webpack://pdfjs-dist/build/pdf.worker/src/core/default_appearance.js","webpack://pdfjs-dist/build/pdf.worker/src/core/colorspace.js","webpack://pdfjs-dist/build/pdf.worker/src/core/evaluator.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cmap.js","webpack://pdfjs-dist/build/pdf.worker/src/core/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_85_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decode_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_hex_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt.js","webpack://pdfjs-dist/build/pdf.worker/src/core/flate_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2.js","webpack://pdfjs-dist/build/pdf.worker/src/core/arithmetic_decoder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpeg_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpg.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx.js","webpack://pdfjs-dist/build/pdf.worker/src/core/lzw_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/predictor_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/run_length_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/charsets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/standard_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/to_unicode_map.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/font_renderer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metrics.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyf.js","webpack://pdfjs-dist/build/pdf.worker/src/core/opentype_file_builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pattern.js","webpack://pdfjs-dist/build/pdf.worker/src/core/function.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ps_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/bidi.js","webpack://pdfjs-dist/build/pdf.worker/src/core/murmurhash3.js","webpack://pdfjs-dist/build/pdf.worker/src/core/operator_list.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image.js","webpack://pdfjs-dist/build/pdf.worker/src/core/catalog.js","webpack://pdfjs-dist/build/pdf.worker/src/core/name_number_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cleanup_helper.js","webpack://pdfjs-dist/build/pdf.worker/src/core/file_spec.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metadata_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xml_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/struct_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/object_loader.js","webpack://pdfjs-dist/build/pdf.worker/src/core/writer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/crypto.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decrypt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/factory.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xfa_object.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/namespaces.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/som.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/bind.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/template.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/layout.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/html_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/text.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/data.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/setup.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/config.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/connection_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/datasets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/locale_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/signature.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/stylesheet.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xdp.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xhtml.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/unknown.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xref.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker_stream.js","webpack://pdfjs-dist/build/pdf.worker/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/define property getters","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/hasOwnProperty shorthand","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/make namespace object","webpack://pdfjs-dist/build/pdf.worker/src/pdf.worker.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = factory();\n})(this, function() {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n arrayByteLength,\n arraysToBytes,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n MissingPDFException,\n PasswordException,\n setVerbosityLevel,\n stringToPDFString,\n UnexpectedResponseException,\n UnknownErrorException,\n UNSUPPORTED_FEATURES,\n VerbosityLevel,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, Ref } from \"./primitives.js\";\nimport { LocalPdfManager, NetworkPdfManager } from \"./pdf_manager.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { incrementalUpdate } from \"./writer.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { PDFWorkerStream } from \"./worker_stream.js\";\nimport { XRefParseException } from \"./core_utils.js\";\n\nclass WorkerTask {\n constructor(name) {\n this.name = name;\n this.terminated = false;\n this._capability = createPromiseCapability();\n }\n\n get finished() {\n return this._capability.promise;\n }\n\n finish() {\n this._capability.resolve();\n }\n\n terminate() {\n this.terminated = true;\n }\n\n ensureNotTerminated() {\n if (this.terminated) {\n throw new Error(\"Worker task was terminated\");\n }\n }\n}\n\nclass WorkerMessageHandler {\n static setup(handler, port) {\n let testMessageProcessed = false;\n handler.on(\"test\", function wphSetupTest(data) {\n if (testMessageProcessed) {\n return; // we already processed 'test' message once\n }\n testMessageProcessed = true;\n\n // Ensure that `TypedArray`s can be sent to the worker,\n // and that `postMessage` transfers are supported.\n handler.send(\"test\", data instanceof Uint8Array && data[0] === 255);\n });\n\n handler.on(\"configure\", function wphConfigure(data) {\n setVerbosityLevel(data.verbosity);\n });\n\n handler.on(\"GetDocRequest\", function wphSetupDoc(data) {\n return WorkerMessageHandler.createDocumentHandler(data, port);\n });\n }\n\n static createDocumentHandler(docParams, port) {\n // This context is actually holds references on pdfManager and handler,\n // until the latter is destroyed.\n let pdfManager;\n let terminated = false;\n let cancelXHRs = null;\n const WorkerTasks = [];\n const verbosity = getVerbosityLevel();\n\n const apiVersion = docParams.apiVersion;\n const workerVersion =\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null;\n if (apiVersion !== workerVersion) {\n throw new Error(\n `The API version \"${apiVersion}\" does not match ` +\n `the Worker version \"${workerVersion}\".`\n );\n }\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Fail early, and predictably, rather than having (some) fonts fail to\n // load/render with slightly cryptic error messages in environments where\n // the `Array.prototype` has been *incorrectly* extended.\n //\n // PLEASE NOTE: We do *not* want to slow down font parsing by adding\n // `hasOwnProperty` checks all over the code-base.\n const enumerableProperties = [];\n for (const property in []) {\n enumerableProperties.push(property);\n }\n if (enumerableProperties.length) {\n throw new Error(\n \"The `Array.prototype` contains unexpected enumerable properties: \" +\n enumerableProperties.join(\", \") +\n \"; thus breaking e.g. `for...in` iteration of `Array`s.\"\n );\n }\n\n // Ensure that (primarily) Node.js users won't accidentally attempt to use\n // a non-translated/non-polyfilled build of the library, since that would\n // quickly fail anyway because of missing functionality.\n if (typeof ReadableStream === \"undefined\") {\n const partialMsg =\n \"The browser/environment lacks native support for critical \" +\n \"functionality used by the PDF.js library (e.g. `ReadableStream`); \";\n\n if (isNodeJS) {\n throw new Error(partialMsg + \"please use a `legacy`-build instead.\");\n }\n throw new Error(partialMsg + \"please update to a supported browser.\");\n }\n }\n\n const docId = docParams.docId;\n const docBaseUrl = docParams.docBaseUrl;\n const workerHandlerName = docParams.docId + \"_worker\";\n let handler = new MessageHandler(workerHandlerName, docId, port);\n\n function ensureNotTerminated() {\n if (terminated) {\n throw new Error(\"Worker was terminated\");\n }\n }\n\n function startWorkerTask(task) {\n WorkerTasks.push(task);\n }\n\n function finishWorkerTask(task) {\n task.finish();\n const i = WorkerTasks.indexOf(task);\n WorkerTasks.splice(i, 1);\n }\n\n async function loadDocument(recoveryMode) {\n await pdfManager.ensureDoc(\"checkHeader\");\n await pdfManager.ensureDoc(\"parseStartXRef\");\n await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n\n // Check that at least the first page can be successfully loaded,\n // since otherwise the XRef table is definitely not valid.\n await pdfManager.ensureDoc(\"checkFirstPage\", [recoveryMode]);\n // Check that the last page can be sucessfully loaded, to ensure that\n // `numPages` is correct, and fallback to walking the entire /Pages-tree.\n await pdfManager.ensureDoc(\"checkLastPage\", [recoveryMode]);\n\n const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n if (isPureXfa) {\n const task = new WorkerTask(\"loadXfaFonts\");\n startWorkerTask(task);\n await Promise.all([\n pdfManager\n .loadXfaFonts(handler, task)\n .catch(reason => {\n // Ignore errors, to allow the document to load.\n })\n .then(() => finishWorkerTask(task)),\n pdfManager.loadXfaImages(),\n ]);\n }\n\n const [numPages, fingerprints] = await Promise.all([\n pdfManager.ensureDoc(\"numPages\"),\n pdfManager.ensureDoc(\"fingerprints\"),\n ]);\n\n // Get htmlForXfa after numPages to avoid to create HTML twice.\n const htmlForXfa = isPureXfa\n ? await pdfManager.ensureDoc(\"htmlForXfa\")\n : null;\n\n return { numPages, fingerprints, htmlForXfa };\n }\n\n function getPdfManager(data, evaluatorOptions, enableXfa) {\n const pdfManagerCapability = createPromiseCapability();\n let newPdfManager;\n\n const source = data.source;\n if (source.data) {\n try {\n newPdfManager = new LocalPdfManager(\n docId,\n source.data,\n source.password,\n handler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n return pdfManagerCapability.promise;\n }\n\n let pdfStream,\n cachedChunks = [];\n try {\n pdfStream = new PDFWorkerStream(handler);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n return pdfManagerCapability.promise;\n }\n\n const fullRequest = pdfStream.getFullReader();\n fullRequest.headersReady\n .then(function () {\n if (!fullRequest.isRangeSupported) {\n return;\n }\n\n // We don't need auto-fetch when streaming is enabled.\n const disableAutoFetch =\n source.disableAutoFetch || fullRequest.isStreamingSupported;\n newPdfManager = new NetworkPdfManager(\n docId,\n pdfStream,\n {\n msgHandler: handler,\n password: source.password,\n length: fullRequest.contentLength,\n disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n },\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n // There may be a chance that `newPdfManager` is not initialized for\n // the first few runs of `readchunk` block of code. Be sure to send\n // all cached chunks, if any, to chunked_stream via pdf_manager.\n for (let i = 0; i < cachedChunks.length; i++) {\n newPdfManager.sendProgressiveData(cachedChunks[i]);\n }\n\n cachedChunks = [];\n pdfManagerCapability.resolve(newPdfManager);\n cancelXHRs = null;\n })\n .catch(function (reason) {\n pdfManagerCapability.reject(reason);\n cancelXHRs = null;\n });\n\n let loaded = 0;\n const flushChunks = function () {\n const pdfFile = arraysToBytes(cachedChunks);\n if (source.length && pdfFile.length !== source.length) {\n warn(\"reported HTTP length is different from actual\");\n }\n // the data is array, instantiating directly from it\n try {\n newPdfManager = new LocalPdfManager(\n docId,\n pdfFile,\n source.password,\n handler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n cachedChunks = [];\n };\n const readPromise = new Promise(function (resolve, reject) {\n const readChunk = function ({ value, done }) {\n try {\n ensureNotTerminated();\n if (done) {\n if (!newPdfManager) {\n flushChunks();\n }\n cancelXHRs = null;\n return;\n }\n\n loaded += arrayByteLength(value);\n if (!fullRequest.isStreamingSupported) {\n handler.send(\"DocProgress\", {\n loaded,\n total: Math.max(loaded, fullRequest.contentLength || 0),\n });\n }\n\n if (newPdfManager) {\n newPdfManager.sendProgressiveData(value);\n } else {\n cachedChunks.push(value);\n }\n\n fullRequest.read().then(readChunk, reject);\n } catch (e) {\n reject(e);\n }\n };\n fullRequest.read().then(readChunk, reject);\n });\n readPromise.catch(function (e) {\n pdfManagerCapability.reject(e);\n cancelXHRs = null;\n });\n\n cancelXHRs = function (reason) {\n pdfStream.cancelAllRequests(reason);\n };\n\n return pdfManagerCapability.promise;\n }\n\n function setupDoc(data) {\n function onSuccess(doc) {\n ensureNotTerminated();\n handler.send(\"GetDoc\", { pdfInfo: doc });\n }\n\n function onFailure(ex) {\n ensureNotTerminated();\n\n if (ex instanceof PasswordException) {\n const task = new WorkerTask(`PasswordException: response ${ex.code}`);\n startWorkerTask(task);\n\n handler\n .sendWithPromise(\"PasswordRequest\", ex)\n .then(function ({ password }) {\n finishWorkerTask(task);\n pdfManager.updatePassword(password);\n pdfManagerReady();\n })\n .catch(function () {\n finishWorkerTask(task);\n handler.send(\"DocException\", ex);\n });\n } else if (\n ex instanceof InvalidPDFException ||\n ex instanceof MissingPDFException ||\n ex instanceof UnexpectedResponseException ||\n ex instanceof UnknownErrorException\n ) {\n handler.send(\"DocException\", ex);\n } else {\n handler.send(\n \"DocException\",\n new UnknownErrorException(ex.message, ex.toString())\n );\n }\n }\n\n function pdfManagerReady() {\n ensureNotTerminated();\n\n loadDocument(false).then(onSuccess, function (reason) {\n ensureNotTerminated();\n\n // Try again with recoveryMode == true\n if (!(reason instanceof XRefParseException)) {\n onFailure(reason);\n return;\n }\n pdfManager.requestLoadedStream();\n pdfManager.onLoadedStream().then(function () {\n ensureNotTerminated();\n\n loadDocument(true).then(onSuccess, onFailure);\n });\n });\n }\n\n ensureNotTerminated();\n\n const evaluatorOptions = {\n maxImageSize: data.maxImageSize,\n disableFontFace: data.disableFontFace,\n ignoreErrors: data.ignoreErrors,\n isEvalSupported: data.isEvalSupported,\n fontExtraProperties: data.fontExtraProperties,\n useSystemFonts: data.useSystemFonts,\n cMapUrl: data.cMapUrl,\n standardFontDataUrl: data.standardFontDataUrl,\n };\n\n getPdfManager(data, evaluatorOptions, data.enableXfa)\n .then(function (newPdfManager) {\n if (terminated) {\n // We were in a process of setting up the manager, but it got\n // terminated in the middle.\n newPdfManager.terminate(\n new AbortException(\"Worker was terminated.\")\n );\n throw new Error(\"Worker was terminated\");\n }\n pdfManager = newPdfManager;\n\n pdfManager.onLoadedStream().then(function (stream) {\n handler.send(\"DataLoaded\", { length: stream.bytes.byteLength });\n });\n })\n .then(pdfManagerReady, onFailure);\n }\n\n handler.on(\"GetPage\", function wphSetupGetPage(data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return Promise.all([\n pdfManager.ensure(page, \"rotate\"),\n pdfManager.ensure(page, \"ref\"),\n pdfManager.ensure(page, \"userUnit\"),\n pdfManager.ensure(page, \"view\"),\n ]).then(function ([rotate, ref, userUnit, view]) {\n return {\n rotate,\n ref,\n userUnit,\n view,\n };\n });\n });\n });\n\n handler.on(\"GetPageIndex\", function wphSetupGetPageIndex(data) {\n const pageRef = Ref.get(data.num, data.gen);\n return pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n });\n\n handler.on(\"GetDestinations\", function wphSetupGetDestinations(data) {\n return pdfManager.ensureCatalog(\"destinations\");\n });\n\n handler.on(\"GetDestination\", function wphSetupGetDestination(data) {\n return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n });\n\n handler.on(\"GetPageLabels\", function wphSetupGetPageLabels(data) {\n return pdfManager.ensureCatalog(\"pageLabels\");\n });\n\n handler.on(\"GetPageLayout\", function wphSetupGetPageLayout(data) {\n return pdfManager.ensureCatalog(\"pageLayout\");\n });\n\n handler.on(\"GetPageMode\", function wphSetupGetPageMode(data) {\n return pdfManager.ensureCatalog(\"pageMode\");\n });\n\n handler.on(\"GetViewerPreferences\", function (data) {\n return pdfManager.ensureCatalog(\"viewerPreferences\");\n });\n\n handler.on(\"GetOpenAction\", function (data) {\n return pdfManager.ensureCatalog(\"openAction\");\n });\n\n handler.on(\"GetAttachments\", function wphSetupGetAttachments(data) {\n return pdfManager.ensureCatalog(\"attachments\");\n });\n\n handler.on(\"GetJavaScript\", function wphSetupGetJavaScript(data) {\n return pdfManager.ensureCatalog(\"javaScript\");\n });\n\n handler.on(\"GetDocJSActions\", function wphSetupGetDocJSActions(data) {\n return pdfManager.ensureCatalog(\"jsActions\");\n });\n\n handler.on(\"GetPageJSActions\", function ({ pageIndex }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"jsActions\");\n });\n });\n\n handler.on(\"GetOutline\", function wphSetupGetOutline(data) {\n return pdfManager.ensureCatalog(\"documentOutline\");\n });\n\n handler.on(\"GetOptionalContentConfig\", function (data) {\n return pdfManager.ensureCatalog(\"optionalContentConfig\");\n });\n\n handler.on(\"GetPermissions\", function (data) {\n return pdfManager.ensureCatalog(\"permissions\");\n });\n\n handler.on(\"GetMetadata\", function wphSetupGetMetadata(data) {\n return Promise.all([\n pdfManager.ensureDoc(\"documentInfo\"),\n pdfManager.ensureCatalog(\"metadata\"),\n ]);\n });\n\n handler.on(\"GetMarkInfo\", function wphSetupGetMarkInfo(data) {\n return pdfManager.ensureCatalog(\"markInfo\");\n });\n\n handler.on(\"GetData\", function wphSetupGetData(data) {\n pdfManager.requestLoadedStream();\n return pdfManager.onLoadedStream().then(function (stream) {\n return stream.bytes;\n });\n });\n\n handler.on(\"GetAnnotations\", function ({ pageIndex, intent }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return page.getAnnotationsData(intent);\n });\n });\n\n handler.on(\"GetFieldObjects\", function (data) {\n return pdfManager.ensureDoc(\"fieldObjects\");\n });\n\n handler.on(\"HasJSActions\", function (data) {\n return pdfManager.ensureDoc(\"hasJSActions\");\n });\n\n handler.on(\"GetCalculationOrderIds\", function (data) {\n return pdfManager.ensureDoc(\"calculationOrderIds\");\n });\n\n handler.on(\n \"SaveDocument\",\n function ({ isPureXfa, numPages, annotationStorage, filename }) {\n pdfManager.requestLoadedStream();\n\n const promises = [\n pdfManager.onLoadedStream(),\n pdfManager.ensureCatalog(\"acroForm\"),\n pdfManager.ensureCatalog(\"acroFormRef\"),\n pdfManager.ensureDoc(\"xref\"),\n pdfManager.ensureDoc(\"startXRef\"),\n ];\n\n if (isPureXfa) {\n promises.push(pdfManager.serializeXfaData(annotationStorage));\n } else {\n for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n promises.push(\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`Save: page ${pageIndex}`);\n return page\n .save(handler, task, annotationStorage)\n .finally(function () {\n finishWorkerTask(task);\n });\n })\n );\n }\n }\n\n return Promise.all(promises).then(function ([\n stream,\n acroForm,\n acroFormRef,\n xref,\n startXRef,\n ...refs\n ]) {\n let newRefs = [];\n let xfaData = null;\n if (isPureXfa) {\n xfaData = refs[0];\n if (!xfaData) {\n return stream.bytes;\n }\n } else {\n for (const ref of refs) {\n newRefs = ref\n .filter(x => x !== null)\n .reduce((a, b) => a.concat(b), newRefs);\n }\n\n if (newRefs.length === 0) {\n // No new refs so just return the initial bytes\n return stream.bytes;\n }\n }\n\n const xfa = (acroForm instanceof Dict && acroForm.get(\"XFA\")) || null;\n let xfaDatasetsRef = null;\n let hasXfaDatasetsEntry = false;\n if (Array.isArray(xfa)) {\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n if (xfa[i] === \"datasets\") {\n xfaDatasetsRef = xfa[i + 1];\n acroFormRef = null;\n hasXfaDatasetsEntry = true;\n }\n }\n if (xfaDatasetsRef === null) {\n xfaDatasetsRef = xref.getNewRef();\n }\n } else if (xfa) {\n acroFormRef = null;\n // TODO: Support XFA streams.\n warn(\"Unsupported XFA type.\");\n }\n\n let newXrefInfo = Object.create(null);\n if (xref.trailer) {\n // Get string info from Info in order to compute fileId.\n const infoObj = Object.create(null);\n const xrefInfo = xref.trailer.get(\"Info\") || null;\n if (xrefInfo instanceof Dict) {\n xrefInfo.forEach((key, value) => {\n if (typeof value === \"string\") {\n infoObj[key] = stringToPDFString(value);\n }\n });\n }\n\n newXrefInfo = {\n rootRef: xref.trailer.getRaw(\"Root\") || null,\n encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n newRef: xref.getNewRef(),\n infoRef: xref.trailer.getRaw(\"Info\") || null,\n info: infoObj,\n fileIds: xref.trailer.get(\"ID\") || null,\n startXRef,\n filename,\n };\n }\n xref.resetNewRef();\n\n return incrementalUpdate({\n originalData: stream.bytes,\n xrefInfo: newXrefInfo,\n newRefs,\n xref,\n hasXfa: !!xfa,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n xfaData,\n });\n });\n }\n );\n\n handler.on(\"GetOperatorList\", function wphSetupRenderPage(data, sink) {\n const pageIndex = data.pageIndex;\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n startWorkerTask(task);\n\n // NOTE: Keep this condition in sync with the `info` helper function.\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n // Pre compile the pdf page and fetch the fonts/images.\n page\n .getOperatorList({\n handler,\n sink,\n task,\n intent: data.intent,\n cacheKey: data.cacheKey,\n annotationStorage: data.annotationStorage,\n })\n .then(\n function (operatorListInfo) {\n finishWorkerTask(task);\n\n if (start) {\n info(\n `page=${pageIndex + 1} - getOperatorList: time=` +\n `${Date.now() - start}ms, len=${operatorListInfo.length}`\n );\n }\n sink.close();\n },\n function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return; // ignoring errors from the terminated thread\n }\n // For compatibility with older behavior, generating unknown\n // unsupported feature notification on errors.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n });\n\n sink.error(reason);\n\n // TODO: Should `reason` be re-thrown here (currently that casues\n // \"Uncaught exception: ...\" messages in the console)?\n }\n );\n });\n });\n\n handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n const pageIndex = data.pageIndex;\n\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n startWorkerTask(task);\n\n // NOTE: Keep this condition in sync with the `info` helper function.\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n page\n .extractTextContent({\n handler,\n task,\n sink,\n includeMarkedContent: data.includeMarkedContent,\n combineTextItems: data.combineTextItems,\n })\n .then(\n function () {\n finishWorkerTask(task);\n\n if (start) {\n info(\n `page=${pageIndex + 1} - getTextContent: time=` +\n `${Date.now() - start}ms`\n );\n }\n sink.close();\n },\n function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return; // ignoring errors from the terminated thread\n }\n sink.error(reason);\n\n // TODO: Should `reason` be re-thrown here (currently that casues\n // \"Uncaught exception: ...\" messages in the console)?\n }\n );\n });\n });\n\n handler.on(\"GetStructTree\", function wphGetStructTree(data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"getStructTree\");\n });\n });\n\n handler.on(\"FontFallback\", function (data) {\n return pdfManager.fontFallback(data.id, handler);\n });\n\n handler.on(\"Cleanup\", function wphCleanup(data) {\n return pdfManager.cleanup(/* manuallyTriggered = */ true);\n });\n\n handler.on(\"Terminate\", function wphTerminate(data) {\n terminated = true;\n\n const waitOn = [];\n if (pdfManager) {\n pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n\n const cleanupPromise = pdfManager.cleanup();\n waitOn.push(cleanupPromise);\n\n pdfManager = null;\n } else {\n clearGlobalCaches();\n }\n if (cancelXHRs) {\n cancelXHRs(new AbortException(\"Worker was terminated.\"));\n }\n\n for (const task of WorkerTasks) {\n waitOn.push(task.finished);\n task.terminate();\n }\n\n return Promise.all(waitOn).then(function () {\n // Notice that even if we destroying handler, resolved response promise\n // must be sent back.\n handler.destroy();\n handler = null;\n });\n });\n\n handler.on(\"Ready\", function wphReady(data) {\n setupDoc(docParams);\n docParams = null; // we don't need docParams anymore -- saving memory.\n });\n return workerHandlerName;\n }\n\n static initializeFromPort(port) {\n const handler = new MessageHandler(\"worker\", \"main\", port);\n WorkerMessageHandler.setup(handler, port);\n handler.send(\"ready\", null);\n }\n}\n\nfunction isMessagePort(maybePort) {\n return (\n typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort\n );\n}\n\n// Worker thread (and not Node.js)?\nif (\n typeof window === \"undefined\" &&\n !isNodeJS &&\n typeof self !== \"undefined\" &&\n isMessagePort(self)\n) {\n WorkerMessageHandler.initializeFromPort(self);\n}\n\nexport { WorkerMessageHandler, WorkerTask };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (\n typeof bytes !== \"object\" ||\n bytes === null ||\n bytes.length === undefined\n ) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n unreachable(\"Invalid argument for arrayByteLength\");\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n },\n};\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if (\n (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n ) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n // Y: first and second points belong to different rectangles?\n if (\n (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n ) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n IsEvalSupportedCached,\n IsLittleEndianCached,\n isSameOrigin,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = require(\"dommatrix/dist/dommatrix.js\");\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream = __non_webpack_require__(\n \"web-streams-polyfill/dist/ponyfill.js\"\n ).ReadableStream;\n })();\n\n // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n (function checkStructuredClone() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `structuredClone`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.structuredClone) {\n return;\n }\n require(\"core-js/web/structured-clone.js\");\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable } from \"../shared/util.js\";\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\n\nconst Name = (function NameClosure() {\n let nameCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Name {\n constructor(name) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n typeof name !== \"string\"\n ) {\n unreachable('Name: The \"name\" must be a string.');\n }\n this.name = name;\n }\n\n static get(name) {\n const nameValue = nameCache[name];\n // eslint-disable-next-line no-restricted-syntax\n return nameValue ? nameValue : (nameCache[name] = new Name(name));\n }\n\n static _clearCache() {\n nameCache = Object.create(null);\n }\n }\n\n return Name;\n})();\n\nconst Cmd = (function CmdClosure() {\n let cmdCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Cmd {\n constructor(cmd) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n typeof cmd !== \"string\"\n ) {\n unreachable('Cmd: The \"cmd\" must be a string.');\n }\n this.cmd = cmd;\n }\n\n static get(cmd) {\n const cmdValue = cmdCache[cmd];\n // eslint-disable-next-line no-restricted-syntax\n return cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd));\n }\n\n static _clearCache() {\n cmdCache = Object.create(null);\n }\n }\n\n return Cmd;\n})();\n\nconst nonSerializable = function nonSerializableClosure() {\n return nonSerializable; // Creating closure on some variable.\n};\n\nclass Dict {\n constructor(xref = null) {\n // Map should only be used internally, use functions below to access.\n this._map = Object.create(null);\n this.xref = xref;\n this.objId = null;\n this.suppressEncryption = false;\n this.__nonSerializable__ = nonSerializable; // Disable cloning of the Dict.\n }\n\n assignXref(newXref) {\n this.xref = newXref;\n }\n\n get size() {\n return Object.keys(this._map).length;\n }\n\n // Automatically dereferences Ref objects.\n get(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n return this.xref.fetch(value, this.suppressEncryption);\n }\n return value;\n }\n\n // Same as get(), but returns a promise and uses fetchIfRefAsync().\n async getAsync(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n return this.xref.fetchAsync(value, this.suppressEncryption);\n }\n return value;\n }\n\n // Same as get(), but dereferences all elements if the result is an Array.\n getArray(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n value = this.xref.fetch(value, this.suppressEncryption);\n }\n\n if (Array.isArray(value)) {\n value = value.slice(); // Ensure that we don't modify the Dict data.\n for (let i = 0, ii = value.length; i < ii; i++) {\n if (value[i] instanceof Ref && this.xref) {\n value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n }\n }\n }\n return value;\n }\n\n // No dereferencing.\n getRaw(key) {\n return this._map[key];\n }\n\n getKeys() {\n return Object.keys(this._map);\n }\n\n // No dereferencing.\n getRawValues() {\n return Object.values(this._map);\n }\n\n set(key, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n if (typeof key !== \"string\") {\n unreachable('Dict.set: The \"key\" must be a string.');\n } else if (value === undefined) {\n unreachable('Dict.set: The \"value\" cannot be undefined.');\n }\n }\n this._map[key] = value;\n }\n\n has(key) {\n return this._map[key] !== undefined;\n }\n\n forEach(callback) {\n for (const key in this._map) {\n callback(key, this.get(key));\n }\n }\n\n static get empty() {\n const emptyDict = new Dict(null);\n\n emptyDict.set = (key, value) => {\n unreachable(\"Should not call `set` on the empty dictionary.\");\n };\n return shadow(this, \"empty\", emptyDict);\n }\n\n static merge({ xref, dictArray, mergeSubDicts = false }) {\n const mergedDict = new Dict(xref),\n properties = new Map();\n\n for (const dict of dictArray) {\n if (!(dict instanceof Dict)) {\n continue;\n }\n for (const [key, value] of Object.entries(dict._map)) {\n let property = properties.get(key);\n if (property === undefined) {\n property = [];\n properties.set(key, property);\n } else if (!mergeSubDicts || !(value instanceof Dict)) {\n // Ignore additional entries, if either:\n // - This is a \"shallow\" merge, where only the first element matters.\n // - The value is *not* a `Dict`, since other types cannot be merged.\n continue;\n }\n property.push(value);\n }\n }\n for (const [name, values] of properties) {\n if (values.length === 1 || !(values[0] instanceof Dict)) {\n mergedDict._map[name] = values[0];\n continue;\n }\n const subDict = new Dict(xref);\n\n for (const dict of values) {\n for (const [key, value] of Object.entries(dict._map)) {\n if (subDict._map[key] === undefined) {\n subDict._map[key] = value;\n }\n }\n }\n if (subDict.size > 0) {\n mergedDict._map[name] = subDict;\n }\n }\n properties.clear();\n\n return mergedDict.size > 0 ? mergedDict : Dict.empty;\n }\n}\n\nconst Ref = (function RefClosure() {\n let refCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Ref {\n constructor(num, gen) {\n this.num = num;\n this.gen = gen;\n }\n\n toString() {\n // This function is hot, so we make the string as compact as possible.\n // |this.gen| is almost always zero, so we treat that case specially.\n if (this.gen === 0) {\n return `${this.num}R`;\n }\n return `${this.num}R${this.gen}`;\n }\n\n static get(num, gen) {\n const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n const refValue = refCache[key];\n // eslint-disable-next-line no-restricted-syntax\n return refValue ? refValue : (refCache[key] = new Ref(num, gen));\n }\n\n static _clearCache() {\n refCache = Object.create(null);\n }\n }\n\n return Ref;\n})();\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nclass RefSet {\n constructor(parent = null) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n parent &&\n !(parent instanceof RefSet)\n ) {\n unreachable('RefSet: Invalid \"parent\" value.');\n }\n this._set = new Set(parent && parent._set);\n }\n\n has(ref) {\n return this._set.has(ref.toString());\n }\n\n put(ref) {\n this._set.add(ref.toString());\n }\n\n remove(ref) {\n this._set.delete(ref.toString());\n }\n\n forEach(callback) {\n for (const ref of this._set.values()) {\n callback(ref);\n }\n }\n\n clear() {\n this._set.clear();\n }\n}\n\nclass RefSetCache {\n constructor() {\n this._map = new Map();\n }\n\n get size() {\n return this._map.size;\n }\n\n get(ref) {\n return this._map.get(ref.toString());\n }\n\n has(ref) {\n return this._map.has(ref.toString());\n }\n\n put(ref, obj) {\n this._map.set(ref.toString(), obj);\n }\n\n putAlias(ref, aliasRef) {\n this._map.set(ref.toString(), this.get(aliasRef));\n }\n\n forEach(callback) {\n for (const value of this._map.values()) {\n callback(value);\n }\n }\n\n clear() {\n this._map.clear();\n }\n}\n\nfunction isName(v, name) {\n return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n return (\n v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n );\n}\n\nfunction isRefsEqual(v1, v2) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n v1 instanceof Ref && v2 instanceof Ref,\n \"isRefsEqual: Both parameters should be `Ref`s.\"\n );\n }\n return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction clearPrimitiveCaches() {\n Cmd._clearCache();\n Name._clearCache();\n Ref._clearCache();\n}\n\nexport {\n CIRCULAR_REF,\n clearPrimitiveCaches,\n Cmd,\n Dict,\n EOF,\n isCmd,\n isDict,\n isName,\n isRefsEqual,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createValidAbsoluteUrl, unreachable, warn } from \"../shared/util.js\";\nimport { ChunkedStreamManager } from \"./chunked_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { PDFDocument } from \"./document.js\";\nimport { Stream } from \"./stream.js\";\n\nfunction parseDocBaseUrl(url) {\n if (url) {\n const absoluteUrl = createValidAbsoluteUrl(url);\n if (absoluteUrl) {\n return absoluteUrl.href;\n }\n warn(`Invalid absolute docBaseUrl: \"${url}\".`);\n }\n return null;\n}\n\nclass BasePdfManager {\n constructor() {\n if (this.constructor === BasePdfManager) {\n unreachable(\"Cannot initialize BasePdfManager.\");\n }\n }\n\n get docId() {\n return this._docId;\n }\n\n get password() {\n return this._password;\n }\n\n get docBaseUrl() {\n return this._docBaseUrl;\n }\n\n onLoadedStream() {\n unreachable(\"Abstract method `onLoadedStream` called\");\n }\n\n ensureDoc(prop, args) {\n return this.ensure(this.pdfDocument, prop, args);\n }\n\n ensureXRef(prop, args) {\n return this.ensure(this.pdfDocument.xref, prop, args);\n }\n\n ensureCatalog(prop, args) {\n return this.ensure(this.pdfDocument.catalog, prop, args);\n }\n\n getPage(pageIndex) {\n return this.pdfDocument.getPage(pageIndex);\n }\n\n fontFallback(id, handler) {\n return this.pdfDocument.fontFallback(id, handler);\n }\n\n loadXfaFonts(handler, task) {\n return this.pdfDocument.loadXfaFonts(handler, task);\n }\n\n loadXfaImages() {\n return this.pdfDocument.loadXfaImages();\n }\n\n serializeXfaData(annotationStorage) {\n return this.pdfDocument.serializeXfaData(annotationStorage);\n }\n\n cleanup(manuallyTriggered = false) {\n return this.pdfDocument.cleanup(manuallyTriggered);\n }\n\n async ensure(obj, prop, args) {\n unreachable(\"Abstract method `ensure` called\");\n }\n\n requestRange(begin, end) {\n unreachable(\"Abstract method `requestRange` called\");\n }\n\n requestLoadedStream() {\n unreachable(\"Abstract method `requestLoadedStream` called\");\n }\n\n sendProgressiveData(chunk) {\n unreachable(\"Abstract method `sendProgressiveData` called\");\n }\n\n updatePassword(password) {\n this._password = password;\n }\n\n terminate(reason) {\n unreachable(\"Abstract method `terminate` called\");\n }\n}\n\nclass LocalPdfManager extends BasePdfManager {\n constructor(\n docId,\n data,\n password,\n msgHandler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n ) {\n super();\n\n this._docId = docId;\n this._password = password;\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this.msgHandler = msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.enableXfa = enableXfa;\n\n const stream = new Stream(data);\n this.pdfDocument = new PDFDocument(this, stream);\n this._loadedStreamPromise = Promise.resolve(stream);\n }\n\n async ensure(obj, prop, args) {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n return value;\n }\n\n requestRange(begin, end) {\n return Promise.resolve();\n }\n\n requestLoadedStream() {}\n\n onLoadedStream() {\n return this._loadedStreamPromise;\n }\n\n terminate(reason) {}\n}\n\nclass NetworkPdfManager extends BasePdfManager {\n constructor(\n docId,\n pdfNetworkStream,\n args,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n ) {\n super();\n\n this._docId = docId;\n this._password = args.password;\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this.msgHandler = args.msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.enableXfa = enableXfa;\n\n this.streamManager = new ChunkedStreamManager(pdfNetworkStream, {\n msgHandler: args.msgHandler,\n length: args.length,\n disableAutoFetch: args.disableAutoFetch,\n rangeChunkSize: args.rangeChunkSize,\n });\n this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n }\n\n async ensure(obj, prop, args) {\n try {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n return value;\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.requestRange(ex.begin, ex.end);\n return this.ensure(obj, prop, args);\n }\n }\n\n requestRange(begin, end) {\n return this.streamManager.requestRange(begin, end);\n }\n\n requestLoadedStream() {\n this.streamManager.requestAllChunks();\n }\n\n sendProgressiveData(chunk) {\n this.streamManager.onReceiveData({ chunk });\n }\n\n onLoadedStream() {\n return this.streamManager.onLoadedStream();\n }\n\n terminate(reason) {\n this.streamManager.abort(reason);\n }\n}\n\nexport { LocalPdfManager, NetworkPdfManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n arrayByteLength,\n arraysToBytes,\n createPromiseCapability,\n} from \"../shared/util.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nclass ChunkedStream extends Stream {\n constructor(length, chunkSize, manager) {\n super(\n /* arrayBuffer = */ new Uint8Array(length),\n /* start = */ 0,\n /* length = */ length,\n /* dict = */ null\n );\n\n this.chunkSize = chunkSize;\n this._loadedChunks = new Set();\n this.numChunks = Math.ceil(length / chunkSize);\n this.manager = manager;\n this.progressiveDataLength = 0;\n this.lastSuccessfulEnsureByteChunk = -1; // Single-entry cache\n }\n\n // If a particular stream does not implement one or more of these methods,\n // an error should be thrown.\n getMissingChunks() {\n const chunks = [];\n for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n chunks.push(chunk);\n }\n }\n return chunks;\n }\n\n get numChunksLoaded() {\n return this._loadedChunks.size;\n }\n\n get isDataLoaded() {\n return this.numChunksLoaded === this.numChunks;\n }\n\n onReceiveData(begin, chunk) {\n const chunkSize = this.chunkSize;\n if (begin % chunkSize !== 0) {\n throw new Error(`Bad begin offset: ${begin}`);\n }\n\n // Using `this.length` is inaccurate here since `this.start` can be moved\n // (see the `moveStart` method).\n const end = begin + chunk.byteLength;\n if (end % chunkSize !== 0 && end !== this.bytes.length) {\n throw new Error(`Bad end offset: ${end}`);\n }\n\n this.bytes.set(new Uint8Array(chunk), begin);\n const beginChunk = Math.floor(begin / chunkSize);\n const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // Since a value can only occur *once* in a `Set`, there's no need to\n // manually check `Set.prototype.has()` before adding the value here.\n this._loadedChunks.add(curChunk);\n }\n }\n\n onReceiveProgressiveData(data) {\n let position = this.progressiveDataLength;\n const beginChunk = Math.floor(position / this.chunkSize);\n\n this.bytes.set(new Uint8Array(data), position);\n position += data.byteLength;\n this.progressiveDataLength = position;\n const endChunk =\n position >= this.end\n ? this.numChunks\n : Math.floor(position / this.chunkSize);\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // Since a value can only occur *once* in a `Set`, there's no need to\n // manually check `Set.prototype.has()` before adding the value here.\n this._loadedChunks.add(curChunk);\n }\n }\n\n ensureByte(pos) {\n if (pos < this.progressiveDataLength) {\n return;\n }\n\n const chunk = Math.floor(pos / this.chunkSize);\n if (chunk > this.numChunks) {\n return;\n }\n if (chunk === this.lastSuccessfulEnsureByteChunk) {\n return;\n }\n\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(pos, pos + 1);\n }\n this.lastSuccessfulEnsureByteChunk = chunk;\n }\n\n ensureRange(begin, end) {\n if (begin >= end) {\n return;\n }\n if (end <= this.progressiveDataLength) {\n return;\n }\n\n const beginChunk = Math.floor(begin / this.chunkSize);\n if (beginChunk > this.numChunks) {\n return;\n }\n const endChunk = Math.min(\n Math.floor((end - 1) / this.chunkSize) + 1,\n this.numChunks\n );\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(begin, end);\n }\n }\n }\n\n nextEmptyChunk(beginChunk) {\n const numChunks = this.numChunks;\n for (let i = 0; i < numChunks; ++i) {\n const chunk = (beginChunk + i) % numChunks; // Wrap around to beginning.\n if (!this._loadedChunks.has(chunk)) {\n return chunk;\n }\n }\n return null;\n }\n\n hasChunk(chunk) {\n return this._loadedChunks.has(chunk);\n }\n\n getByte() {\n const pos = this.pos;\n if (pos >= this.end) {\n return -1;\n }\n if (pos >= this.progressiveDataLength) {\n this.ensureByte(pos);\n }\n return this.bytes[this.pos++];\n }\n\n getBytes(length, forceClamped = false) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n\n if (!length) {\n if (strEnd > this.progressiveDataLength) {\n this.ensureRange(pos, strEnd);\n }\n const subarray = bytes.subarray(pos, strEnd);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n let end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n if (end > this.progressiveDataLength) {\n this.ensureRange(pos, end);\n }\n\n this.pos = end;\n const subarray = bytes.subarray(pos, end);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n if (end > this.progressiveDataLength) {\n this.ensureRange(begin, end);\n }\n return this.bytes.subarray(begin, end);\n }\n\n makeSubStream(start, length, dict = null) {\n if (length) {\n if (start + length > this.progressiveDataLength) {\n this.ensureRange(start, start + length);\n }\n } else {\n // When the `length` is undefined you do *not*, under any circumstances,\n // want to fallback on calling `this.ensureRange(start, this.end)` since\n // that would force the *entire* PDF file to be loaded, thus completely\n // breaking the whole purpose of using streaming and/or range requests.\n //\n // However, not doing any checking here could very easily lead to wasted\n // time/resources during e.g. parsing, since `MissingDataException`s will\n // require data to be re-parsed, which we attempt to minimize by at least\n // checking that the *beginning* of the data is available here.\n if (start >= this.progressiveDataLength) {\n this.ensureByte(start);\n }\n }\n\n function ChunkedStreamSubstream() {}\n ChunkedStreamSubstream.prototype = Object.create(this);\n ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n const chunkSize = this.chunkSize;\n const beginChunk = Math.floor(this.start / chunkSize);\n const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n const missingChunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n missingChunks.push(chunk);\n }\n }\n return missingChunks;\n };\n Object.defineProperty(ChunkedStreamSubstream.prototype, \"isDataLoaded\", {\n get() {\n if (this.numChunksLoaded === this.numChunks) {\n return true;\n }\n return this.getMissingChunks().length === 0;\n },\n configurable: true,\n });\n\n const subStream = new ChunkedStreamSubstream();\n subStream.pos = subStream.start = start;\n subStream.end = start + length || this.end;\n subStream.dict = dict;\n return subStream;\n }\n\n getBaseStreams() {\n return [this];\n }\n}\n\nclass ChunkedStreamManager {\n constructor(pdfNetworkStream, args) {\n this.length = args.length;\n this.chunkSize = args.rangeChunkSize;\n this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n this.pdfNetworkStream = pdfNetworkStream;\n this.disableAutoFetch = args.disableAutoFetch;\n this.msgHandler = args.msgHandler;\n\n this.currRequestId = 0;\n\n this._chunksNeededByRequest = new Map();\n this._requestsByChunk = new Map();\n this._promisesByRequest = new Map();\n this.progressiveDataLength = 0;\n this.aborted = false;\n\n this._loadedStreamCapability = createPromiseCapability();\n }\n\n onLoadedStream() {\n return this._loadedStreamCapability.promise;\n }\n\n sendRequest(begin, end) {\n const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n if (!rangeReader.isStreamingSupported) {\n rangeReader.onProgress = this.onProgress.bind(this);\n }\n\n let chunks = [],\n loaded = 0;\n return new Promise((resolve, reject) => {\n const readChunk = chunk => {\n try {\n if (!chunk.done) {\n const data = chunk.value;\n chunks.push(data);\n loaded += arrayByteLength(data);\n if (rangeReader.isStreamingSupported) {\n this.onProgress({ loaded });\n }\n rangeReader.read().then(readChunk, reject);\n return;\n }\n const chunkData = arraysToBytes(chunks);\n chunks = null;\n resolve(chunkData);\n } catch (e) {\n reject(e);\n }\n };\n rangeReader.read().then(readChunk, reject);\n }).then(data => {\n if (this.aborted) {\n return; // Ignoring any data after abort.\n }\n this.onReceiveData({ chunk: data, begin });\n });\n }\n\n /**\n * Get all the chunks that are not yet loaded and group them into\n * contiguous ranges to load in as few requests as possible.\n */\n requestAllChunks() {\n const missingChunks = this.stream.getMissingChunks();\n this._requestChunks(missingChunks);\n return this._loadedStreamCapability.promise;\n }\n\n _requestChunks(chunks) {\n const requestId = this.currRequestId++;\n\n const chunksNeeded = new Set();\n this._chunksNeededByRequest.set(requestId, chunksNeeded);\n for (const chunk of chunks) {\n if (!this.stream.hasChunk(chunk)) {\n chunksNeeded.add(chunk);\n }\n }\n\n if (chunksNeeded.size === 0) {\n return Promise.resolve();\n }\n\n const capability = createPromiseCapability();\n this._promisesByRequest.set(requestId, capability);\n\n const chunksToRequest = [];\n for (const chunk of chunksNeeded) {\n let requestIds = this._requestsByChunk.get(chunk);\n if (!requestIds) {\n requestIds = [];\n this._requestsByChunk.set(chunk, requestIds);\n\n chunksToRequest.push(chunk);\n }\n requestIds.push(requestId);\n }\n\n if (chunksToRequest.length > 0) {\n const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n for (const groupedChunk of groupedChunksToRequest) {\n const begin = groupedChunk.beginChunk * this.chunkSize;\n const end = Math.min(\n groupedChunk.endChunk * this.chunkSize,\n this.length\n );\n this.sendRequest(begin, end).catch(capability.reject);\n }\n }\n\n return capability.promise.catch(reason => {\n if (this.aborted) {\n return; // Ignoring any pending requests after abort.\n }\n throw reason;\n });\n }\n\n getStream() {\n return this.stream;\n }\n\n /**\n * Loads any chunks in the requested range that are not yet loaded.\n */\n requestRange(begin, end) {\n end = Math.min(end, this.length);\n\n const beginChunk = this.getBeginChunk(begin);\n const endChunk = this.getEndChunk(end);\n\n const chunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n chunks.push(chunk);\n }\n return this._requestChunks(chunks);\n }\n\n requestRanges(ranges = []) {\n const chunksToRequest = [];\n for (const range of ranges) {\n const beginChunk = this.getBeginChunk(range.begin);\n const endChunk = this.getEndChunk(range.end);\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!chunksToRequest.includes(chunk)) {\n chunksToRequest.push(chunk);\n }\n }\n }\n\n chunksToRequest.sort(function (a, b) {\n return a - b;\n });\n return this._requestChunks(chunksToRequest);\n }\n\n /**\n * Groups a sorted array of chunks into as few contiguous larger\n * chunks as possible.\n */\n groupChunks(chunks) {\n const groupedChunks = [];\n let beginChunk = -1;\n let prevChunk = -1;\n\n for (let i = 0, ii = chunks.length; i < ii; ++i) {\n const chunk = chunks[i];\n if (beginChunk < 0) {\n beginChunk = chunk;\n }\n\n if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n groupedChunks.push({ beginChunk, endChunk: prevChunk + 1 });\n beginChunk = chunk;\n }\n if (i + 1 === chunks.length) {\n groupedChunks.push({ beginChunk, endChunk: chunk + 1 });\n }\n\n prevChunk = chunk;\n }\n return groupedChunks;\n }\n\n onProgress(args) {\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n total: this.length,\n });\n }\n\n onReceiveData(args) {\n const chunk = args.chunk;\n const isProgressive = args.begin === undefined;\n const begin = isProgressive ? this.progressiveDataLength : args.begin;\n const end = begin + chunk.byteLength;\n\n const beginChunk = Math.floor(begin / this.chunkSize);\n const endChunk =\n end < this.length\n ? Math.floor(end / this.chunkSize)\n : Math.ceil(end / this.chunkSize);\n\n if (isProgressive) {\n this.stream.onReceiveProgressiveData(chunk);\n this.progressiveDataLength = end;\n } else {\n this.stream.onReceiveData(begin, chunk);\n }\n\n if (this.stream.isDataLoaded) {\n this._loadedStreamCapability.resolve(this.stream);\n }\n\n const loadedRequests = [];\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // The server might return more chunks than requested.\n const requestIds = this._requestsByChunk.get(curChunk);\n if (!requestIds) {\n continue;\n }\n this._requestsByChunk.delete(curChunk);\n\n for (const requestId of requestIds) {\n const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n if (chunksNeeded.has(curChunk)) {\n chunksNeeded.delete(curChunk);\n }\n\n if (chunksNeeded.size > 0) {\n continue;\n }\n loadedRequests.push(requestId);\n }\n }\n\n // If there are no pending requests, automatically fetch the next\n // unfetched chunk of the PDF file.\n if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n let nextEmptyChunk;\n if (this.stream.numChunksLoaded === 1) {\n // This is a special optimization so that after fetching the first\n // chunk, rather than fetching the second chunk, we fetch the last\n // chunk.\n const lastChunk = this.stream.numChunks - 1;\n if (!this.stream.hasChunk(lastChunk)) {\n nextEmptyChunk = lastChunk;\n }\n } else {\n nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n }\n if (Number.isInteger(nextEmptyChunk)) {\n this._requestChunks([nextEmptyChunk]);\n }\n }\n\n for (const requestId of loadedRequests) {\n const capability = this._promisesByRequest.get(requestId);\n this._promisesByRequest.delete(requestId);\n capability.resolve();\n }\n\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize,\n total: this.length,\n });\n }\n\n onError(err) {\n this._loadedStreamCapability.reject(err);\n }\n\n getBeginChunk(begin) {\n return Math.floor(begin / this.chunkSize);\n }\n\n getEndChunk(end) {\n return Math.floor((end - 1) / this.chunkSize) + 1;\n }\n\n abort(reason) {\n this.aborted = true;\n if (this.pdfNetworkStream) {\n this.pdfNetworkStream.cancelAllRequests(reason);\n }\n for (const capability of this._promisesByRequest.values()) {\n capability.reject(reason);\n }\n }\n}\n\nexport { ChunkedStream, ChunkedStreamManager };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n BaseException,\n FontType,\n objectSize,\n StreamType,\n stringToPDFString,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\n\nfunction getLookupTableFactory(initializer) {\n let lookup;\n return function () {\n if (initializer) {\n lookup = Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n return lookup;\n };\n}\n\nfunction getArrayLookupTableFactory(initializer) {\n let lookup;\n return function () {\n if (initializer) {\n let arr = initializer();\n initializer = null;\n lookup = Object.create(null);\n for (let i = 0, ii = arr.length; i < ii; i += 2) {\n lookup[arr[i]] = arr[i + 1];\n }\n arr = null;\n }\n return lookup;\n };\n}\n\nclass MissingDataException extends BaseException {\n constructor(begin, end) {\n super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n this.begin = begin;\n this.end = end;\n }\n}\n\nclass ParserEOFException extends BaseException {\n constructor(msg) {\n super(msg, \"ParserEOFException\");\n }\n}\n\nclass XRefEntryException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefEntryException\");\n }\n}\n\nclass XRefParseException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefParseException\");\n }\n}\n\nclass DocStats {\n constructor(handler) {\n this._handler = handler;\n\n this._streamTypes = new Set();\n this._fontTypes = new Set();\n }\n\n _send() {\n const streamTypes = Object.create(null),\n fontTypes = Object.create(null);\n for (const type of this._streamTypes) {\n streamTypes[type] = true;\n }\n for (const type of this._fontTypes) {\n fontTypes[type] = true;\n }\n this._handler.send(\"DocStats\", { streamTypes, fontTypes });\n }\n\n addStreamType(type) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(StreamType[type] === type, 'addStreamType: Invalid \"type\" value.');\n }\n if (this._streamTypes.has(type)) {\n return;\n }\n this._streamTypes.add(type);\n this._send();\n }\n\n addFontType(type) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(FontType[type] === type, 'addFontType: Invalid \"type\" value.');\n }\n if (this._fontTypes.has(type)) {\n return;\n }\n this._fontTypes.add(type);\n this._send();\n }\n}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n * array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n * the key is found. If set to `false`, we always walk up the entire parent\n * chain, for example to be able to find `\\Resources` placed on multiple\n * levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n dict,\n key,\n getArray = false,\n stopWhenFound = true,\n}) {\n let values;\n const visited = new RefSet();\n\n while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\n if (dict.objId) {\n visited.put(dict.objId);\n }\n const value = getArray ? dict.getArray(key) : dict.get(key);\n if (value !== undefined) {\n if (stopWhenFound) {\n return value;\n }\n if (!values) {\n values = [];\n }\n values.push(value);\n }\n dict = dict.get(\"Parent\");\n }\n return values;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n * to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n assert(\n Number.isInteger(number) && number > 0,\n \"The number should be a positive integer.\"\n );\n const romanBuf = [];\n let pos;\n // Thousands\n while (number >= 1000) {\n number -= 1000;\n romanBuf.push(\"M\");\n }\n // Hundreds\n pos = (number / 100) | 0;\n number %= 100;\n romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n // Tens\n pos = (number / 10) | 0;\n number %= 10;\n romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n // Ones\n romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); // eslint-disable-line unicorn/no-array-push-push\n\n const romanStr = romanBuf.join(\"\");\n return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n if (x <= 0) {\n return 0;\n }\n return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n return (data[offset] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n return (\n ((data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]) >>>\n 0\n );\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\n/**\n * AcroForm field names use an array like notation to refer to\n * repeated XFA elements e.g. foo.bar[nnn].\n * see: XFA Spec Chapter 3 - Repeated Elements\n *\n * @param {string} path - XFA path name.\n * @returns {Array} - Array of Objects with the name and pos of\n * each part of the path.\n */\nfunction parseXFAPath(path) {\n const positionPattern = /(.+)\\[(\\d+)\\]$/;\n return path.split(\".\").map(component => {\n const m = component.match(positionPattern);\n if (m) {\n return { name: m[1], pos: parseInt(m[2], 10) };\n }\n return { name: component, pos: 0 };\n });\n}\n\nfunction escapePDFName(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n // Whitespace or delimiters aren't regular chars, so escape them.\n if (\n char < 0x21 ||\n char > 0x7e ||\n char === 0x23 /* # */ ||\n char === 0x28 /* ( */ ||\n char === 0x29 /* ) */ ||\n char === 0x3c /* < */ ||\n char === 0x3e /* > */ ||\n char === 0x5b /* [ */ ||\n char === 0x5d /* ] */ ||\n char === 0x7b /* { */ ||\n char === 0x7d /* } */ ||\n char === 0x2f /* / */ ||\n char === 0x25 /* % */\n ) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`#${char.toString(16)}`);\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n\n if (start < str.length) {\n buffer.push(str.substring(start, str.length));\n }\n\n return buffer.join(\"\");\n}\n\nfunction _collectJS(entry, xref, list, parents) {\n if (!entry) {\n return;\n }\n\n let parent = null;\n if (entry instanceof Ref) {\n if (parents.has(entry)) {\n // If we've already found entry then we've a cycle.\n return;\n }\n parent = entry;\n parents.put(parent);\n entry = xref.fetch(entry);\n }\n if (Array.isArray(entry)) {\n for (const element of entry) {\n _collectJS(element, xref, list, parents);\n }\n } else if (entry instanceof Dict) {\n if (isName(entry.get(\"S\"), \"JavaScript\")) {\n const js = entry.get(\"JS\");\n let code;\n if (js instanceof BaseStream) {\n code = js.getString();\n } else if (typeof js === \"string\") {\n code = js;\n }\n code = code && stringToPDFString(code);\n if (code) {\n list.push(code);\n }\n }\n _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n }\n\n if (parent) {\n parents.remove(parent);\n }\n}\n\nfunction collectActions(xref, dict, eventType) {\n const actions = Object.create(null);\n const additionalActionsDicts = getInheritableProperty({\n dict,\n key: \"AA\",\n stopWhenFound: false,\n });\n if (additionalActionsDicts) {\n // additionalActionsDicts contains dicts from ancestors\n // as they're found in the tree from bottom to top.\n // So the dicts are visited in reverse order to guarantee\n // that actions from elder ancestors will be overwritten\n // by ones from younger ancestors.\n for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n const additionalActions = additionalActionsDicts[i];\n if (!(additionalActions instanceof Dict)) {\n continue;\n }\n for (const key of additionalActions.getKeys()) {\n const action = eventType[key];\n if (!action) {\n continue;\n }\n const actionDict = additionalActions.getRaw(key);\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions[action] = list;\n }\n }\n }\n }\n // Collect the Action if any (we may have one on pushbutton).\n if (dict.has(\"A\")) {\n const actionDict = dict.get(\"A\");\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions.Action = list;\n }\n }\n return objectSize(actions) > 0 ? actions : null;\n}\n\nconst XMLEntities = {\n /* < */ 0x3c: \"&lt;\",\n /* > */ 0x3e: \"&gt;\",\n /* & */ 0x26: \"&amp;\",\n /* \" */ 0x22: \"&quot;\",\n /* ' */ 0x27: \"&apos;\",\n};\n\nfunction encodeToXmlString(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.codePointAt(i);\n if (0x20 <= char && char <= 0x7e) {\n // ascii\n const entity = XMLEntities[char];\n if (entity) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(entity);\n start = i + 1;\n }\n } else {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n // char is represented by two u16\n i++;\n }\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n if (start < str.length) {\n buffer.push(str.substring(start, str.length));\n }\n return buffer.join(\"\");\n}\n\nfunction validateCSSFont(cssFontInfo) {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-style.\n const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight.\n const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n const CSS_FONT_WEIGHT_VALUES = new Set([\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\",\n \"1000\",\n \"normal\",\n \"bold\",\n \"bolder\",\n \"lighter\",\n ]);\n\n const { fontFamily, fontWeight, italicAngle } = cssFontInfo;\n\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/string.\n if (/^\".*\"$/.test(fontFamily)) {\n if (/[^\\\\]\"/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n warn(`XFA - FontFamily contains some unescaped \": ${fontFamily}.`);\n return false;\n }\n } else if (/^'.*'$/.test(fontFamily)) {\n if (/[^\\\\]'/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n warn(`XFA - FontFamily contains some unescaped ': ${fontFamily}.`);\n return false;\n }\n } else {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident.\n for (const ident of fontFamily.split(/[ \\t]+/)) {\n if (/^(\\d|(-(\\d|-)))/.test(ident) || !/^[\\w-\\\\]+$/.test(ident)) {\n warn(\n `XFA - FontFamily contains some invalid <custom-ident>: ${fontFamily}.`\n );\n return false;\n }\n }\n }\n\n const weight = fontWeight ? fontWeight.toString() : \"\";\n cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight)\n ? weight\n : DEFAULT_CSS_FONT_WEIGHT;\n\n const angle = parseFloat(italicAngle);\n cssFontInfo.italicAngle =\n isNaN(angle) || angle < -90 || angle > 90\n ? DEFAULT_CSS_FONT_OBLIQUE\n : italicAngle.toString();\n\n return true;\n}\n\nfunction recoverJsURL(str) {\n // Attempt to recover valid URLs from `JS` entries with certain\n // white-listed formats:\n // - window.open('http://example.com')\n // - app.launchURL('http://example.com', true)\n // - xfa.host.gotoURL('http://example.com')\n const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n const regex = new RegExp(\n \"^\\\\s*(\" +\n URL_OPEN_METHODS.join(\"|\").split(\".\").join(\"\\\\.\") +\n \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n \"i\"\n );\n\n const jsUrl = regex.exec(str);\n if (jsUrl && jsUrl[2]) {\n const url = jsUrl[2];\n let newWindow = false;\n\n if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n newWindow = true;\n }\n return { url, newWindow };\n }\n\n return null;\n}\n\nexport {\n collectActions,\n DocStats,\n encodeToXmlString,\n escapePDFName,\n getArrayLookupTableFactory,\n getInheritableProperty,\n getLookupTableFactory,\n isWhiteSpace,\n log2,\n MissingDataException,\n ParserEOFException,\n parseXFAPath,\n readInt8,\n readUint16,\n readUint32,\n recoverJsURL,\n toRomanNumerals,\n validateCSSFont,\n XRefEntryException,\n XRefParseException,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, shadow, unreachable } from \"../shared/util.js\";\n\nclass BaseStream {\n constructor() {\n if (this.constructor === BaseStream) {\n unreachable(\"Cannot initialize BaseStream.\");\n }\n }\n\n // eslint-disable-next-line getter-return\n get length() {\n unreachable(\"Abstract getter `length` accessed\");\n }\n\n // eslint-disable-next-line getter-return\n get isEmpty() {\n unreachable(\"Abstract getter `isEmpty` accessed\");\n }\n\n get isDataLoaded() {\n return shadow(this, \"isDataLoaded\", true);\n }\n\n getByte() {\n unreachable(\"Abstract method `getByte` called\");\n }\n\n getBytes(length, forceClamped = false) {\n unreachable(\"Abstract method `getBytes` called\");\n }\n\n peekByte() {\n const peekedByte = this.getByte();\n if (peekedByte !== -1) {\n this.pos--;\n }\n return peekedByte;\n }\n\n peekBytes(length, forceClamped = false) {\n const bytes = this.getBytes(length, forceClamped);\n this.pos -= bytes.length;\n return bytes;\n }\n\n getUint16() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n }\n\n getInt32() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n const b2 = this.getByte();\n const b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n }\n\n getByteRange(begin, end) {\n unreachable(\"Abstract method `getByteRange` called\");\n }\n\n getString(length) {\n return bytesToString(this.getBytes(length, /* forceClamped = */ false));\n }\n\n skip(n) {\n this.pos += n || 1;\n }\n\n reset() {\n unreachable(\"Abstract method `reset` called\");\n }\n\n moveStart() {\n unreachable(\"Abstract method `moveStart` called\");\n }\n\n makeSubStream(start, length, dict = null) {\n unreachable(\"Abstract method `makeSubStream` called\");\n }\n\n /**\n * @returns {Array | null}\n */\n getBaseStreams() {\n return null;\n }\n}\n\nexport { BaseStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { stringToBytes } from \"../shared/util.js\";\n\nclass Stream extends BaseStream {\n constructor(arrayBuffer, start, length, dict) {\n super();\n\n this.bytes =\n arrayBuffer instanceof Uint8Array\n ? arrayBuffer\n : new Uint8Array(arrayBuffer);\n this.start = start || 0;\n this.pos = this.start;\n this.end = start + length || this.bytes.length;\n this.dict = dict;\n }\n\n get length() {\n return this.end - this.start;\n }\n\n get isEmpty() {\n return this.length === 0;\n }\n\n getByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.bytes[this.pos++];\n }\n\n getBytes(length, forceClamped = false) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n\n if (!length) {\n const subarray = bytes.subarray(pos, strEnd);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n let end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n this.pos = end;\n const subarray = bytes.subarray(pos, end);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n return this.bytes.subarray(begin, end);\n }\n\n reset() {\n this.pos = this.start;\n }\n\n moveStart() {\n this.start = this.pos;\n }\n\n makeSubStream(start, length, dict = null) {\n return new Stream(this.bytes.buffer, start, length, dict);\n }\n}\n\nclass StringStream extends Stream {\n constructor(str) {\n super(stringToBytes(str));\n }\n}\n\nclass NullStream extends Stream {\n constructor() {\n super(new Uint8Array(0));\n }\n}\n\nexport { NullStream, Stream, StringStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n OPS,\n PageActionEventType,\n RenderingIntentFlag,\n shadow,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n unreachable,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n collectActions,\n getInheritableProperty,\n isWhiteSpace,\n MissingDataException,\n validateCSSFont,\n XRefEntryException,\n XRefParseException,\n} from \"./core_utils.js\";\nimport { Dict, isName, Name, Ref } from \"./primitives.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { AnnotationFactory } from \"./annotation.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { Linearization } from \"./parser.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PartialEvaluator } from \"./evaluator.js\";\nimport { StreamsSequenceStream } from \"./decode_stream.js\";\nimport { StructTreePage } from \"./struct_tree.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\nimport { XRef } from \"./xref.js\";\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nclass Page {\n constructor({\n pdfManager,\n xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalImageCache,\n nonBlendModesSet,\n xfaFactory,\n }) {\n this.pdfManager = pdfManager;\n this.pageIndex = pageIndex;\n this.pageDict = pageDict;\n this.xref = xref;\n this.ref = ref;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalImageCache = globalImageCache;\n this.nonBlendModesSet = nonBlendModesSet;\n this.evaluatorOptions = pdfManager.evaluatorOptions;\n this.resourcesPromise = null;\n this.xfaFactory = xfaFactory;\n\n const idCounters = {\n obj: 0,\n };\n this._localIdFactory = class extends globalIdFactory {\n static createObjId() {\n return `p${pageIndex}_${++idCounters.obj}`;\n }\n\n static getPageObjId() {\n return `page${ref.toString()}`;\n }\n };\n }\n\n /**\n * @private\n */\n _getInheritableProperty(key, getArray = false) {\n const value = getInheritableProperty({\n dict: this.pageDict,\n key,\n getArray,\n stopWhenFound: false,\n });\n if (!Array.isArray(value)) {\n return value;\n }\n if (value.length === 1 || !(value[0] instanceof Dict)) {\n return value[0];\n }\n return Dict.merge({ xref: this.xref, dictArray: value });\n }\n\n get content() {\n return this.pageDict.getArray(\"Contents\");\n }\n\n get resources() {\n // For robustness: The spec states that a \\Resources entry has to be\n // present, but can be empty. Some documents still omit it; in this case\n // we return an empty dictionary.\n return shadow(\n this,\n \"resources\",\n this._getInheritableProperty(\"Resources\") || Dict.empty\n );\n }\n\n _getBoundingBox(name) {\n if (this.xfaData) {\n return this.xfaData.bbox;\n }\n\n const box = this._getInheritableProperty(name, /* getArray = */ true);\n\n if (Array.isArray(box) && box.length === 4) {\n if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n return box;\n }\n warn(`Empty /${name} entry.`);\n }\n return null;\n }\n\n get mediaBox() {\n // Reset invalid media box to letter size.\n return shadow(\n this,\n \"mediaBox\",\n this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX\n );\n }\n\n get cropBox() {\n // Reset invalid crop box to media box.\n return shadow(\n this,\n \"cropBox\",\n this._getBoundingBox(\"CropBox\") || this.mediaBox\n );\n }\n\n get userUnit() {\n let obj = this.pageDict.get(\"UserUnit\");\n if (typeof obj !== \"number\" || obj <= 0) {\n obj = DEFAULT_USER_UNIT;\n }\n return shadow(this, \"userUnit\", obj);\n }\n\n get view() {\n // From the spec, 6th ed., p.963:\n // \"The crop, bleed, trim, and art boxes should not ordinarily\n // extend beyond the boundaries of the media box. If they do, they are\n // effectively reduced to their intersection with the media box.\"\n const { cropBox, mediaBox } = this;\n let view;\n if (cropBox === mediaBox || isArrayEqual(cropBox, mediaBox)) {\n view = mediaBox;\n } else {\n const box = Util.intersect(cropBox, mediaBox);\n if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n view = box;\n } else {\n warn(\"Empty /CropBox and /MediaBox intersection.\");\n }\n }\n return shadow(this, \"view\", view || mediaBox);\n }\n\n get rotate() {\n let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n // Normalize rotation so it's a multiple of 90 and between 0 and 270.\n if (rotate % 90 !== 0) {\n rotate = 0;\n } else if (rotate >= 360) {\n rotate %= 360;\n } else if (rotate < 0) {\n // The spec doesn't cover negatives. Assume it's counterclockwise\n // rotation. The following is the other implementation of modulo.\n rotate = ((rotate % 360) + 360) % 360;\n }\n return shadow(this, \"rotate\", rotate);\n }\n\n /**\n * @private\n */\n _onSubStreamError(handler, reason, objId) {\n if (this.evaluatorOptions.ignoreErrors) {\n // Error(s) when reading one of the /Contents sub-streams -- sending\n // unsupported feature notification and allow parsing to continue.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorContentSubStream,\n });\n warn(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n return;\n }\n throw reason;\n }\n\n /**\n * @returns {Promise<BaseStream>}\n */\n getContentStream(handler) {\n return this.pdfManager.ensure(this, \"content\").then(content => {\n if (content instanceof BaseStream) {\n return content;\n }\n if (Array.isArray(content)) {\n return new StreamsSequenceStream(\n content,\n this._onSubStreamError.bind(this, handler)\n );\n }\n // Replace non-existent page content with empty content.\n return new NullStream();\n });\n }\n\n get xfaData() {\n return shadow(\n this,\n \"xfaData\",\n this.xfaFactory\n ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) }\n : null\n );\n }\n\n save(handler, task, annotationStorage) {\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n // Fetch the page's annotations and save the content\n // in case of interactive form fields.\n return this._parsedAnnotations.then(function (annotations) {\n const newRefsPromises = [];\n for (const annotation of annotations) {\n if (!annotation.mustBePrinted(annotationStorage)) {\n continue;\n }\n newRefsPromises.push(\n annotation\n .save(partialEvaluator, task, annotationStorage)\n .catch(function (reason) {\n warn(\n \"save - ignoring annotation data during \" +\n `\"${task.name}\" task: \"${reason}\".`\n );\n return null;\n })\n );\n }\n\n return Promise.all(newRefsPromises);\n });\n }\n\n loadResources(keys) {\n if (!this.resourcesPromise) {\n // TODO: add async `_getInheritableProperty` and remove this.\n this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n }\n return this.resourcesPromise.then(() => {\n const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n return objectLoader.load();\n });\n }\n\n getOperatorList({\n handler,\n sink,\n task,\n intent,\n cacheKey,\n annotationStorage = null,\n }) {\n const contentStreamPromise = this.getContentStream(handler);\n const resourcesPromise = this.loadResources([\n \"ColorSpace\",\n \"ExtGState\",\n \"Font\",\n \"Pattern\",\n \"Properties\",\n \"Shading\",\n \"XObject\",\n ]);\n\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n const pageListPromise = dataPromises.then(([contentStream]) => {\n const opList = new OperatorList(intent, sink);\n\n handler.send(\"StartRenderPage\", {\n transparency: partialEvaluator.hasBlendModes(\n this.resources,\n this.nonBlendModesSet\n ),\n pageIndex: this.pageIndex,\n cacheKey,\n });\n\n return partialEvaluator\n .getOperatorList({\n stream: contentStream,\n task,\n resources: this.resources,\n operatorList: opList,\n })\n .then(function () {\n return opList;\n });\n });\n\n // Fetch the page's annotations and add their operator lists to the\n // page's operator list to render them.\n return Promise.all([pageListPromise, this._parsedAnnotations]).then(\n function ([pageOpList, annotations]) {\n if (\n annotations.length === 0 ||\n intent & RenderingIntentFlag.ANNOTATIONS_DISABLE\n ) {\n pageOpList.flush(true);\n return { length: pageOpList.totalLength };\n }\n const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n // Collect the operator list promises for the annotations. Each promise\n // is resolved with the complete operator list for a single annotation.\n const opListPromises = [];\n for (const annotation of annotations) {\n if (\n intentAny ||\n (intentDisplay && annotation.mustBeViewed(annotationStorage)) ||\n (intentPrint && annotation.mustBePrinted(annotationStorage))\n ) {\n opListPromises.push(\n annotation\n .getOperatorList(\n partialEvaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n )\n .catch(function (reason) {\n warn(\n \"getOperatorList - ignoring annotation data during \" +\n `\"${task.name}\" task: \"${reason}\".`\n );\n return null;\n })\n );\n }\n }\n\n return Promise.all(opListPromises).then(function (opLists) {\n pageOpList.addOp(OPS.beginAnnotations, []);\n for (const opList of opLists) {\n pageOpList.addOpList(opList);\n }\n pageOpList.addOp(OPS.endAnnotations, []);\n pageOpList.flush(true);\n return { length: pageOpList.totalLength };\n });\n }\n );\n }\n\n extractTextContent({\n handler,\n task,\n includeMarkedContent,\n sink,\n combineTextItems,\n }) {\n const contentStreamPromise = this.getContentStream(handler);\n const resourcesPromise = this.loadResources([\n \"ExtGState\",\n \"Font\",\n \"Properties\",\n \"XObject\",\n ]);\n\n const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n return dataPromises.then(([contentStream]) => {\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n return partialEvaluator.getTextContent({\n stream: contentStream,\n task,\n resources: this.resources,\n includeMarkedContent,\n combineTextItems,\n sink,\n viewBox: this.view,\n });\n });\n }\n\n async getStructTree() {\n const structTreeRoot = await this.pdfManager.ensureCatalog(\n \"structTreeRoot\"\n );\n if (!structTreeRoot) {\n return null;\n }\n const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [\n structTreeRoot,\n ]);\n return structTree.serializable;\n }\n\n /**\n * @private\n */\n _parseStructTree(structTreeRoot) {\n const tree = new StructTreePage(structTreeRoot, this.pageDict);\n tree.parse();\n return tree;\n }\n\n getAnnotationsData(intent) {\n return this._parsedAnnotations.then(function (annotations) {\n const annotationsData = [];\n\n if (annotations.length === 0) {\n return annotationsData;\n }\n const intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n for (const annotation of annotations) {\n // Get the annotation even if it's hidden because\n // JS can change its display.\n if (\n intentAny ||\n (intentDisplay && annotation.viewable) ||\n (intentPrint && annotation.printable)\n ) {\n annotationsData.push(annotation.data);\n }\n }\n return annotationsData;\n });\n }\n\n get annotations() {\n const annots = this._getInheritableProperty(\"Annots\");\n return shadow(this, \"annotations\", Array.isArray(annots) ? annots : []);\n }\n\n get _parsedAnnotations() {\n const parsedAnnotations = this.pdfManager\n .ensure(this, \"annotations\")\n .then(() => {\n const annotationPromises = [];\n for (const annotationRef of this.annotations) {\n annotationPromises.push(\n AnnotationFactory.create(\n this.xref,\n annotationRef,\n this.pdfManager,\n this._localIdFactory,\n /* collectFields */ false\n ).catch(function (reason) {\n warn(`_parsedAnnotations: \"${reason}\".`);\n return null;\n })\n );\n }\n\n return Promise.all(annotationPromises).then(function (annotations) {\n return annotations.filter(annotation => !!annotation);\n });\n });\n\n return shadow(this, \"_parsedAnnotations\", parsedAnnotations);\n }\n\n get jsActions() {\n const actions = collectActions(\n this.xref,\n this.pageDict,\n PageActionEventType\n );\n return shadow(this, \"jsActions\", actions);\n }\n}\n\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([\n 0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66,\n]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\n\nconst FINGERPRINT_FIRST_BYTES = 1024;\nconst EMPTY_FINGERPRINT =\n \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\n\nconst PDF_HEADER_VERSION_REGEXP = /^[1-9]\\.\\d$/;\n\nfunction find(stream, signature, limit = 1024, backwards = false) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(limit > 0, 'The \"limit\" must be a positive integer.');\n }\n const signatureLength = signature.length;\n\n const scanBytes = stream.peekBytes(limit);\n const scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n return false;\n }\n if (backwards) {\n const signatureEnd = signatureLength - 1;\n\n let pos = scanBytes.length - 1;\n while (pos >= signatureEnd) {\n let j = 0;\n while (\n j < signatureLength &&\n scanBytes[pos - j] === signature[signatureEnd - j]\n ) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos - signatureEnd;\n return true;\n }\n pos--;\n }\n } else {\n // forwards\n let pos = 0;\n while (pos <= scanLength) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos;\n return true;\n }\n pos++;\n }\n }\n return false;\n}\n\n/**\n * The `PDFDocument` class holds all the (worker-thread) data of the PDF file.\n */\nclass PDFDocument {\n constructor(pdfManager, arg) {\n let stream;\n if (arg instanceof BaseStream) {\n stream = arg;\n } else if (isArrayBuffer(arg)) {\n stream = new Stream(arg);\n } else {\n throw new Error(\"PDFDocument: Unknown argument type\");\n }\n if (stream.length <= 0) {\n throw new InvalidPDFException(\n \"The PDF file is empty, i.e. its size is zero bytes.\"\n );\n }\n\n this.pdfManager = pdfManager;\n this.stream = stream;\n this.xref = new XRef(stream, pdfManager);\n this._pagePromises = new Map();\n this._version = null;\n\n const idCounters = {\n font: 0,\n };\n this._globalIdFactory = class {\n static getDocId() {\n return `g_${pdfManager.docId}`;\n }\n\n static createFontId() {\n return `f${++idCounters.font}`;\n }\n\n static createObjId() {\n unreachable(\"Abstract method `createObjId` called.\");\n }\n\n static getPageObjId() {\n unreachable(\"Abstract method `getPageObjId` called.\");\n }\n };\n }\n\n parse(recoveryMode) {\n this.xref.parse(recoveryMode);\n this.catalog = new Catalog(this.pdfManager, this.xref);\n\n // The `checkHeader` method is called before this method and parses the\n // version from the header. The specification states in section 7.5.2\n // that the version from the catalog, if present, should overwrite the\n // version from the header.\n if (this.catalog.version) {\n this._version = this.catalog.version;\n }\n }\n\n get linearization() {\n let linearization = null;\n try {\n linearization = Linearization.create(this.stream);\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(err);\n }\n return shadow(this, \"linearization\", linearization);\n }\n\n get startXRef() {\n const stream = this.stream;\n let startXRef = 0;\n\n if (this.linearization) {\n // Find the end of the first object.\n stream.reset();\n if (find(stream, ENDOBJ_SIGNATURE)) {\n startXRef = stream.pos + 6 - stream.start;\n }\n } else {\n // Find `startxref` by checking backwards from the end of the file.\n const step = 1024;\n const startXRefLength = STARTXREF_SIGNATURE.length;\n let found = false,\n pos = stream.end;\n\n while (!found && pos > 0) {\n pos -= step - startXRefLength;\n if (pos < 0) {\n pos = 0;\n }\n stream.pos = pos;\n found = find(stream, STARTXREF_SIGNATURE, step, true);\n }\n\n if (found) {\n stream.skip(9);\n let ch;\n do {\n ch = stream.getByte();\n } while (isWhiteSpace(ch));\n let str = \"\";\n while (ch >= /* Space = */ 0x20 && ch <= /* '9' = */ 0x39) {\n str += String.fromCharCode(ch);\n ch = stream.getByte();\n }\n startXRef = parseInt(str, 10);\n if (isNaN(startXRef)) {\n startXRef = 0;\n }\n }\n }\n return shadow(this, \"startXRef\", startXRef);\n }\n\n // Find the header, get the PDF format version and setup the\n // stream to start from the header.\n checkHeader() {\n const stream = this.stream;\n stream.reset();\n\n if (!find(stream, PDF_HEADER_SIGNATURE)) {\n // May not be a PDF file, but don't throw an error and let\n // parsing continue.\n return;\n }\n stream.moveStart();\n\n // Read the PDF format version.\n const MAX_PDF_VERSION_LENGTH = 12;\n let version = \"\",\n ch;\n while ((ch = stream.getByte()) > /* Space = */ 0x20) {\n if (version.length >= MAX_PDF_VERSION_LENGTH) {\n break;\n }\n version += String.fromCharCode(ch);\n }\n if (!this._version) {\n // Remove the \"%PDF-\" prefix.\n this._version = version.substring(5);\n }\n }\n\n parseStartXRef() {\n this.xref.setStartXRef(this.startXRef);\n }\n\n get numPages() {\n let num = 0;\n if (this.catalog.hasActualNumPages) {\n num = this.catalog.numPages;\n } else if (this.xfaFactory) {\n // num is a Promise.\n num = this.xfaFactory.getNumPages();\n } else if (this.linearization) {\n num = this.linearization.numPages;\n } else {\n num = this.catalog.numPages;\n }\n return shadow(this, \"numPages\", num);\n }\n\n /**\n * @private\n */\n _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n const RECURSION_LIMIT = 10;\n\n if (!Array.isArray(fields)) {\n return false;\n }\n return fields.every(field => {\n field = this.xref.fetchIfRef(field);\n if (!(field instanceof Dict)) {\n return false;\n }\n if (field.has(\"Kids\")) {\n if (++recursionDepth > RECURSION_LIMIT) {\n warn(\"_hasOnlyDocumentSignatures: maximum recursion depth reached\");\n return false;\n }\n return this._hasOnlyDocumentSignatures(\n field.get(\"Kids\"),\n recursionDepth\n );\n }\n const isSignature = isName(field.get(\"FT\"), \"Sig\");\n const rectangle = field.get(\"Rect\");\n const isInvisible =\n Array.isArray(rectangle) && rectangle.every(value => value === 0);\n return isSignature && isInvisible;\n });\n }\n\n get xfaData() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return null;\n }\n\n const xfa = acroForm.get(\"XFA\");\n const entries = {\n \"xdp:xdp\": \"\",\n template: \"\",\n datasets: \"\",\n config: \"\",\n connectionSet: \"\",\n localeSet: \"\",\n stylesheet: \"\",\n \"/xdp:xdp\": \"\",\n };\n if (xfa instanceof BaseStream && !xfa.isEmpty) {\n try {\n entries[\"xdp:xdp\"] = stringToUTF8String(xfa.getString());\n return entries;\n } catch (_) {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n\n if (!Array.isArray(xfa) || xfa.length === 0) {\n return null;\n }\n\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n let name;\n if (i === 0) {\n name = \"xdp:xdp\";\n } else if (i === ii - 2) {\n name = \"/xdp:xdp\";\n } else {\n name = xfa[i];\n }\n\n if (!entries.hasOwnProperty(name)) {\n continue;\n }\n const data = this.xref.fetchIfRef(xfa[i + 1]);\n if (!(data instanceof BaseStream) || data.isEmpty) {\n continue;\n }\n try {\n entries[name] = stringToUTF8String(data.getString());\n } catch (_) {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n return entries;\n }\n\n get xfaFactory() {\n let data;\n if (\n this.pdfManager.enableXfa &&\n this.catalog.needsRendering &&\n this.formInfo.hasXfa &&\n !this.formInfo.hasAcroForm\n ) {\n data = this.xfaData;\n }\n return shadow(this, \"xfaFactory\", data ? new XFAFactory(data) : null);\n }\n\n get isPureXfa() {\n return this.xfaFactory ? this.xfaFactory.isValid() : false;\n }\n\n get htmlForXfa() {\n return this.xfaFactory ? this.xfaFactory.getPages() : null;\n }\n\n async loadXfaImages() {\n const xfaImagesDict = await this.pdfManager.ensureCatalog(\"xfaImages\");\n if (!xfaImagesDict) {\n return;\n }\n\n const keys = xfaImagesDict.getKeys();\n const objectLoader = new ObjectLoader(xfaImagesDict, keys, this.xref);\n await objectLoader.load();\n\n const xfaImages = new Map();\n for (const key of keys) {\n const stream = xfaImagesDict.get(key);\n if (stream instanceof BaseStream) {\n xfaImages.set(key, stream.getBytes());\n }\n }\n\n this.xfaFactory.setImages(xfaImages);\n }\n\n async loadXfaFonts(handler, task) {\n const acroForm = await this.pdfManager.ensureCatalog(\"acroForm\");\n if (!acroForm) {\n return;\n }\n const resources = await acroForm.getAsync(\"DR\");\n if (!(resources instanceof Dict)) {\n return;\n }\n const objectLoader = new ObjectLoader(resources, [\"Font\"], this.xref);\n await objectLoader.load();\n\n const fontRes = resources.get(\"Font\");\n if (!(fontRes instanceof Dict)) {\n return;\n }\n\n const options = Object.assign(\n Object.create(null),\n this.pdfManager.evaluatorOptions\n );\n options.useSystemFonts = false;\n\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: -1,\n idFactory: this._globalIdFactory,\n fontCache: this.catalog.fontCache,\n builtInCMapCache: this.catalog.builtInCMapCache,\n standardFontDataCache: this.catalog.standardFontDataCache,\n options,\n });\n const operatorList = new OperatorList();\n const pdfFonts = [];\n const initialState = {\n get font() {\n return pdfFonts[pdfFonts.length - 1];\n },\n set font(font) {\n pdfFonts.push(font);\n },\n clone() {\n return this;\n },\n };\n\n const fonts = new Map();\n fontRes.forEach((fontName, font) => {\n fonts.set(fontName, font);\n });\n const promises = [];\n\n for (const [fontName, font] of fonts) {\n const descriptor = font.get(\"FontDescriptor\");\n if (!(descriptor instanceof Dict)) {\n continue;\n }\n let fontFamily = descriptor.get(\"FontFamily\");\n // For example, \"Wingdings 3\" is not a valid font name in the css specs.\n fontFamily = fontFamily.replace(/[ ]+(\\d)/g, \"$1\");\n const fontWeight = descriptor.get(\"FontWeight\");\n\n // Angle is expressed in degrees counterclockwise in PDF\n // when it's clockwise in CSS\n // (see https://drafts.csswg.org/css-fonts-4/#valdef-font-style-oblique-angle)\n const italicAngle = -descriptor.get(\"ItalicAngle\");\n const cssFontInfo = { fontFamily, fontWeight, italicAngle };\n\n if (!validateCSSFont(cssFontInfo)) {\n continue;\n }\n promises.push(\n partialEvaluator\n .handleSetFont(\n resources,\n [Name.get(fontName), 1],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ null,\n /* cssFontInfo = */ cssFontInfo\n )\n .catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n })\n );\n }\n\n await Promise.all(promises);\n const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n\n if (!missingFonts) {\n return;\n }\n\n options.ignoreErrors = true;\n promises.length = 0;\n pdfFonts.length = 0;\n\n const reallyMissingFonts = new Set();\n for (const missing of missingFonts) {\n if (!getXfaFontName(`${missing}-Regular`)) {\n // No substitution available: we'll fallback on Myriad.\n reallyMissingFonts.add(missing);\n }\n }\n\n if (reallyMissingFonts.size) {\n missingFonts.push(\"PdfJS-Fallback\");\n }\n\n for (const missing of missingFonts) {\n if (reallyMissingFonts.has(missing)) {\n continue;\n }\n for (const fontInfo of [\n { name: \"Regular\", fontWeight: 400, italicAngle: 0 },\n { name: \"Bold\", fontWeight: 700, italicAngle: 0 },\n { name: \"Italic\", fontWeight: 400, italicAngle: 12 },\n { name: \"BoldItalic\", fontWeight: 700, italicAngle: 12 },\n ]) {\n const name = `${missing}-${fontInfo.name}`;\n const dict = getXfaFontDict(name);\n\n promises.push(\n partialEvaluator\n .handleSetFont(\n resources,\n [Name.get(name), 1],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ dict,\n /* cssFontInfo = */ {\n fontFamily: missing,\n fontWeight: fontInfo.fontWeight,\n italicAngle: fontInfo.italicAngle,\n }\n )\n .catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n })\n );\n }\n }\n\n await Promise.all(promises);\n this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n }\n\n async serializeXfaData(annotationStorage) {\n return this.xfaFactory\n ? this.xfaFactory.serializeData(annotationStorage)\n : null;\n }\n\n get formInfo() {\n const formInfo = {\n hasFields: false,\n hasAcroForm: false,\n hasXfa: false,\n hasSignatures: false,\n };\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return shadow(this, \"formInfo\", formInfo);\n }\n\n try {\n const fields = acroForm.get(\"Fields\");\n const hasFields = Array.isArray(fields) && fields.length > 0;\n formInfo.hasFields = hasFields; // Used by the `fieldObjects` getter.\n\n // The document contains XFA data if the `XFA` entry is a non-empty\n // array or stream.\n const xfa = acroForm.get(\"XFA\");\n formInfo.hasXfa =\n (Array.isArray(xfa) && xfa.length > 0) ||\n (xfa instanceof BaseStream && !xfa.isEmpty);\n\n // The document contains AcroForm data if the `Fields` entry is a\n // non-empty array and it doesn't consist of only document signatures.\n // This second check is required for files that don't actually contain\n // AcroForm data (only XFA data), but that use the `Fields` entry to\n // store (invisible) document signatures. This can be detected using\n // the first bit of the `SigFlags` integer (see Table 219 in the\n // specification).\n const sigFlags = acroForm.get(\"SigFlags\");\n const hasSignatures = !!(sigFlags & 0x1);\n const hasOnlyDocumentSignatures =\n hasSignatures && this._hasOnlyDocumentSignatures(fields);\n formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n formInfo.hasSignatures = hasSignatures;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Cannot fetch form information: \"${ex}\".`);\n }\n return shadow(this, \"formInfo\", formInfo);\n }\n\n get documentInfo() {\n let version = this._version;\n if (\n typeof version !== \"string\" ||\n !PDF_HEADER_VERSION_REGEXP.test(version)\n ) {\n warn(`Invalid PDF header version number: ${version}`);\n version = null;\n }\n\n const docInfo = {\n PDFFormatVersion: version,\n Language: this.catalog.lang,\n EncryptFilterName: this.xref.encrypt\n ? this.xref.encrypt.filterName\n : null,\n IsLinearized: !!this.linearization,\n IsAcroFormPresent: this.formInfo.hasAcroForm,\n IsXFAPresent: this.formInfo.hasXfa,\n IsCollectionPresent: !!this.catalog.collection,\n IsSignaturesPresent: this.formInfo.hasSignatures,\n };\n\n let infoDict;\n try {\n infoDict = this.xref.trailer.get(\"Info\");\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(\"The document information dictionary is invalid.\");\n }\n if (!(infoDict instanceof Dict)) {\n return shadow(this, \"documentInfo\", docInfo);\n }\n\n for (const key of infoDict.getKeys()) {\n const value = infoDict.get(key);\n\n switch (key) {\n case \"Title\":\n case \"Author\":\n case \"Subject\":\n case \"Keywords\":\n case \"Creator\":\n case \"Producer\":\n case \"CreationDate\":\n case \"ModDate\":\n if (typeof value === \"string\") {\n docInfo[key] = stringToPDFString(value);\n continue;\n }\n break;\n case \"Trapped\":\n if (value instanceof Name) {\n docInfo[key] = value;\n continue;\n }\n break;\n default:\n // For custom values, only accept white-listed types to prevent\n // errors that would occur when trying to send non-serializable\n // objects to the main-thread (for example `Dict` or `Stream`).\n let customValue;\n switch (typeof value) {\n case \"string\":\n customValue = stringToPDFString(value);\n break;\n case \"number\":\n case \"boolean\":\n customValue = value;\n break;\n default:\n if (value instanceof Name) {\n customValue = value;\n }\n break;\n }\n\n if (customValue === undefined) {\n warn(`Bad value, for custom key \"${key}\", in Info: ${value}.`);\n continue;\n }\n if (!docInfo.Custom) {\n docInfo.Custom = Object.create(null);\n }\n docInfo.Custom[key] = customValue;\n continue;\n }\n warn(`Bad value, for key \"${key}\", in Info: ${value}.`);\n }\n return shadow(this, \"documentInfo\", docInfo);\n }\n\n get fingerprints() {\n function validate(data) {\n return (\n typeof data === \"string\" &&\n data.length > 0 &&\n data !== EMPTY_FINGERPRINT\n );\n }\n\n function hexString(hash) {\n const buf = [];\n for (let i = 0, ii = hash.length; i < ii; i++) {\n const hex = hash[i].toString(16);\n buf.push(hex.padStart(2, \"0\"));\n }\n return buf.join(\"\");\n }\n\n const idArray = this.xref.trailer.get(\"ID\");\n let hashOriginal, hashModified;\n if (Array.isArray(idArray) && validate(idArray[0])) {\n hashOriginal = stringToBytes(idArray[0]);\n\n if (idArray[1] !== idArray[0] && validate(idArray[1])) {\n hashModified = stringToBytes(idArray[1]);\n }\n } else {\n hashOriginal = calculateMD5(\n this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\n 0,\n FINGERPRINT_FIRST_BYTES\n );\n }\n\n return shadow(this, \"fingerprints\", [\n hexString(hashOriginal),\n hashModified ? hexString(hashModified) : null,\n ]);\n }\n\n async _getLinearizationPage(pageIndex) {\n const { catalog, linearization, xref } = this;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n linearization && linearization.pageFirst === pageIndex,\n \"_getLinearizationPage - invalid pageIndex argument.\"\n );\n }\n\n const ref = Ref.get(linearization.objectNumberFirst, 0);\n try {\n const obj = await xref.fetchAsync(ref);\n // Ensure that the object that was found is actually a Page dictionary.\n if (obj instanceof Dict) {\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || (!obj.has(\"Type\") && !obj.has(\"Kids\"))) {\n if (!catalog.pageKidsCountCache.has(ref)) {\n catalog.pageKidsCountCache.put(ref, 1); // Cache the Page reference.\n }\n // Help improve performance of the `Catalog.getPageIndex` method.\n if (!catalog.pageIndexCache.has(ref)) {\n catalog.pageIndexCache.put(ref, 0);\n }\n\n return [obj, ref];\n }\n }\n throw new FormatError(\n \"The Linearization dictionary doesn't point to a valid Page dictionary.\"\n );\n } catch (reason) {\n warn(`_getLinearizationPage: \"${reason.message}\".`);\n return catalog.getPageDict(pageIndex);\n }\n }\n\n getPage(pageIndex) {\n const cachedPromise = this._pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const { catalog, linearization, xfaFactory } = this;\n\n let promise;\n if (xfaFactory) {\n promise = Promise.resolve([Dict.empty, null]);\n } else if (linearization && linearization.pageFirst === pageIndex) {\n promise = this._getLinearizationPage(pageIndex);\n } else {\n promise = catalog.getPageDict(pageIndex);\n }\n promise = promise.then(([pageDict, ref]) => {\n return new Page({\n pdfManager: this.pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalImageCache: catalog.globalImageCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory,\n });\n });\n\n this._pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n async checkFirstPage(recoveryMode = false) {\n if (recoveryMode) {\n return;\n }\n try {\n await this.getPage(0);\n } catch (reason) {\n if (reason instanceof XRefEntryException) {\n // Clear out the various caches to ensure that we haven't stored any\n // inconsistent and/or incorrect state, since that could easily break\n // subsequent `this.getPage` calls.\n this._pagePromises.delete(0);\n await this.cleanup();\n\n throw new XRefParseException();\n }\n }\n }\n\n async checkLastPage(recoveryMode = false) {\n const { catalog, pdfManager } = this;\n\n catalog.setActualNumPages(); // Ensure that it's always reset.\n let numPages;\n\n try {\n await Promise.all([\n pdfManager.ensureDoc(\"xfaFactory\"),\n pdfManager.ensureDoc(\"linearization\"),\n pdfManager.ensureCatalog(\"numPages\"),\n ]);\n\n if (this.xfaFactory) {\n return; // The Page count is always calculated for XFA-documents.\n } else if (this.linearization) {\n numPages = this.linearization.numPages;\n } else {\n numPages = catalog.numPages;\n }\n\n if (!Number.isInteger(numPages)) {\n throw new FormatError(\"Page count is not an integer.\");\n } else if (numPages <= 1) {\n return;\n }\n await this.getPage(numPages - 1);\n } catch (reason) {\n // Clear out the various caches to ensure that we haven't stored any\n // inconsistent and/or incorrect state, since that could easily break\n // subsequent `this.getPage` calls.\n this._pagePromises.delete(numPages - 1);\n await this.cleanup();\n\n if (reason instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n warn(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`);\n\n let pagesTree;\n try {\n pagesTree = await catalog.getAllPageDicts(recoveryMode);\n } catch (reasonAll) {\n if (reasonAll instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n catalog.setActualNumPages(1);\n return;\n }\n\n for (const [pageIndex, [pageDict, ref]] of pagesTree) {\n let promise;\n if (pageDict instanceof Error) {\n promise = Promise.reject(pageDict);\n\n // Prevent \"uncaught exception: Object\"-messages in the console.\n promise.catch(() => {});\n } else {\n promise = Promise.resolve(\n new Page({\n pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalImageCache: catalog.globalImageCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory: null,\n })\n );\n }\n\n this._pagePromises.set(pageIndex, promise);\n }\n catalog.setActualNumPages(pagesTree.size);\n }\n }\n\n fontFallback(id, handler) {\n return this.catalog.fontFallback(id, handler);\n }\n\n async cleanup(manuallyTriggered = false) {\n return this.catalog\n ? this.catalog.cleanup(manuallyTriggered)\n : clearGlobalCaches();\n }\n\n /**\n * @private\n */\n _collectFieldObjects(name, fieldRef, promises) {\n const field = this.xref.fetchIfRef(fieldRef);\n if (field.has(\"T\")) {\n const partName = stringToPDFString(field.get(\"T\"));\n if (name === \"\") {\n name = partName;\n } else {\n name = `${name}.${partName}`;\n }\n }\n\n if (!promises.has(name)) {\n promises.set(name, []);\n }\n promises.get(name).push(\n AnnotationFactory.create(\n this.xref,\n fieldRef,\n this.pdfManager,\n this._localIdFactory,\n /* collectFields */ true\n )\n .then(annotation => annotation && annotation.getFieldObject())\n .catch(function (reason) {\n warn(`_collectFieldObjects: \"${reason}\".`);\n return null;\n })\n );\n\n if (field.has(\"Kids\")) {\n const kids = field.get(\"Kids\");\n for (const kid of kids) {\n this._collectFieldObjects(name, kid, promises);\n }\n }\n }\n\n get fieldObjects() {\n if (!this.formInfo.hasFields) {\n return shadow(this, \"fieldObjects\", Promise.resolve(null));\n }\n\n const allFields = Object.create(null);\n const fieldPromises = new Map();\n for (const fieldRef of this.catalog.acroForm.get(\"Fields\")) {\n this._collectFieldObjects(\"\", fieldRef, fieldPromises);\n }\n\n const allPromises = [];\n for (const [name, promises] of fieldPromises) {\n allPromises.push(\n Promise.all(promises).then(fields => {\n fields = fields.filter(field => !!field);\n if (fields.length > 0) {\n allFields[name] = fields;\n }\n })\n );\n }\n\n return shadow(\n this,\n \"fieldObjects\",\n Promise.all(allPromises).then(() => allFields)\n );\n }\n\n get hasJSActions() {\n const promise = this.pdfManager.ensureDoc(\"_parseHasJSActions\");\n return shadow(this, \"hasJSActions\", promise);\n }\n\n /**\n * @private\n */\n async _parseHasJSActions() {\n const [catalogJsActions, fieldObjects] = await Promise.all([\n this.pdfManager.ensureCatalog(\"jsActions\"),\n this.pdfManager.ensureDoc(\"fieldObjects\"),\n ]);\n\n if (catalogJsActions) {\n return true;\n }\n if (fieldObjects) {\n return Object.values(fieldObjects).some(fieldObject =>\n fieldObject.some(object => object.actions !== null)\n );\n }\n return false;\n }\n\n get calculationOrderIds() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm || !acroForm.has(\"CO\")) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n\n const calculationOrder = acroForm.get(\"CO\");\n if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n\n const ids = [];\n for (const id of calculationOrder) {\n if (id instanceof Ref) {\n ids.push(id.toString());\n }\n }\n if (ids.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n return shadow(this, \"calculationOrderIds\", ids);\n }\n}\n\nexport { Page, PDFDocument };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CalibriBoldFactors,\n CalibriBoldItalicFactors,\n CalibriBoldItalicMetrics,\n CalibriBoldMetrics,\n CalibriItalicFactors,\n CalibriItalicMetrics,\n CalibriRegularFactors,\n CalibriRegularMetrics,\n} from \"./calibri_factors.js\";\nimport { Dict, Name } from \"./primitives.js\";\nimport {\n HelveticaBoldFactors,\n HelveticaBoldItalicFactors,\n HelveticaBoldItalicMetrics,\n HelveticaBoldMetrics,\n HelveticaItalicFactors,\n HelveticaItalicMetrics,\n HelveticaRegularFactors,\n HelveticaRegularMetrics,\n} from \"./helvetica_factors.js\";\nimport {\n LiberationSansBoldItalicMapping,\n LiberationSansBoldItalicWidths,\n LiberationSansBoldMapping,\n LiberationSansBoldWidths,\n LiberationSansItalicMapping,\n LiberationSansItalicWidths,\n LiberationSansRegularMapping,\n LiberationSansRegularWidths,\n} from \"./liberationsans_widths.js\";\nimport {\n MyriadProBoldFactors,\n MyriadProBoldItalicFactors,\n MyriadProBoldItalicMetrics,\n MyriadProBoldMetrics,\n MyriadProItalicFactors,\n MyriadProItalicMetrics,\n MyriadProRegularFactors,\n MyriadProRegularMetrics,\n} from \"./myriadpro_factors.js\";\nimport {\n SegoeuiBoldFactors,\n SegoeuiBoldItalicFactors,\n SegoeuiBoldItalicMetrics,\n SegoeuiBoldMetrics,\n SegoeuiItalicFactors,\n SegoeuiItalicMetrics,\n SegoeuiRegularFactors,\n SegoeuiRegularMetrics,\n} from \"./segoeui_factors.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\nconst getXFAFontMap = getLookupTableFactory(function (t) {\n t[\"MyriadPro-Regular\"] = t[\"PdfJS-Fallback-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: MyriadProRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: MyriadProRegularMetrics,\n };\n t[\"MyriadPro-Bold\"] = t[\"PdfJS-Fallback-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: MyriadProBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: MyriadProBoldMetrics,\n };\n t[\"MyriadPro-It\"] =\n t[\"MyriadPro-Italic\"] =\n t[\"PdfJS-Fallback-Italic\"] =\n {\n name: \"LiberationSans-Italic\",\n factors: MyriadProItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: MyriadProItalicMetrics,\n };\n t[\"MyriadPro-BoldIt\"] =\n t[\"MyriadPro-BoldItalic\"] =\n t[\"PdfJS-Fallback-BoldItalic\"] =\n {\n name: \"LiberationSans-BoldItalic\",\n factors: MyriadProBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: MyriadProBoldItalicMetrics,\n };\n t.ArialMT =\n t.Arial =\n t[\"Arial-Regular\"] =\n {\n name: \"LiberationSans-Regular\",\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n };\n t[\"Arial-BoldMT\"] = t[\"Arial-Bold\"] = {\n name: \"LiberationSans-Bold\",\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n };\n t[\"Arial-ItalicMT\"] = t[\"Arial-Italic\"] = {\n name: \"LiberationSans-Italic\",\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n };\n t[\"Arial-BoldItalicMT\"] = t[\"Arial-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n };\n t[\"Calibri-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: CalibriRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: CalibriRegularMetrics,\n };\n t[\"Calibri-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: CalibriBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: CalibriBoldMetrics,\n };\n t[\"Calibri-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: CalibriItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: CalibriItalicMetrics,\n };\n t[\"Calibri-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: CalibriBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: CalibriBoldItalicMetrics,\n };\n t[\"Segoeui-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: SegoeuiRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: SegoeuiRegularMetrics,\n };\n t[\"Segoeui-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: SegoeuiBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: SegoeuiBoldMetrics,\n };\n t[\"Segoeui-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: SegoeuiItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: SegoeuiItalicMetrics,\n };\n t[\"Segoeui-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: SegoeuiBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: SegoeuiBoldItalicMetrics,\n };\n t[\"Helvetica-Regular\"] = t.Helvetica = {\n name: \"LiberationSans-Regular\",\n factors: HelveticaRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: HelveticaRegularMetrics,\n };\n t[\"Helvetica-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: HelveticaBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: HelveticaBoldMetrics,\n };\n t[\"Helvetica-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: HelveticaItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: HelveticaItalicMetrics,\n };\n t[\"Helvetica-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: HelveticaBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: HelveticaBoldItalicMetrics,\n };\n});\n\nfunction getXfaFontName(name) {\n const fontName = normalizeFontName(name);\n const fontMap = getXFAFontMap();\n return fontMap[fontName];\n}\n\nfunction getXfaFontWidths(name) {\n const info = getXfaFontName(name);\n if (!info) {\n return null;\n }\n\n const { baseWidths, baseMapping, factors } = info;\n let rescaledBaseWidths;\n if (!factors) {\n rescaledBaseWidths = baseWidths;\n } else {\n rescaledBaseWidths = baseWidths.map((w, i) => w * factors[i]);\n }\n\n let currentCode = -2;\n let currentArray;\n\n // Widths array for composite font is:\n // CharCode1 [10, 20, 30] ...\n // which means:\n // - CharCode1 has a width equal to 10\n // - CharCode1+1 has a width equal to 20\n // - CharCode1+2 has a width equal to 30\n //\n // The baseMapping array contains a map for glyph index to unicode.\n // So from baseMapping we'll get sorted unicodes and their positions\n // (i.e. glyph indices) and then we put widths in an array for the\n // the consecutive unicodes.\n const newWidths = [];\n for (const [unicode, glyphIndex] of baseMapping\n .map(\n (charUnicode, index) => [\n charUnicode,\n index,\n ] /* collect unicode and glyph index */\n )\n .sort(\n ([unicode1], [unicode2]) =>\n unicode1 - unicode2 /* order by unicode only */\n )) {\n if (unicode === -1) {\n continue;\n }\n\n if (unicode === currentCode + 1) {\n currentArray.push(rescaledBaseWidths[glyphIndex]);\n currentCode += 1;\n } else {\n currentCode = unicode;\n currentArray = [rescaledBaseWidths[glyphIndex]];\n newWidths.push(unicode, currentArray);\n }\n }\n\n return newWidths;\n}\n\nfunction getXfaFontDict(name) {\n const widths = getXfaFontWidths(name);\n const dict = new Dict(null);\n dict.set(\"BaseFont\", Name.get(name));\n dict.set(\"Type\", Name.get(\"Font\"));\n dict.set(\"Subtype\", Name.get(\"CIDFontType2\"));\n dict.set(\"Encoding\", Name.get(\"Identity-H\"));\n dict.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n dict.set(\"W\", widths);\n dict.set(\"FirstChar\", widths[0]);\n dict.set(\n \"LastChar\",\n widths[widths.length - 2] + widths[widths.length - 1].length - 1\n );\n const descriptor = new Dict(null);\n dict.set(\"FontDescriptor\", descriptor);\n const systemInfo = new Dict(null);\n systemInfo.set(\"Ordering\", \"Identity\");\n systemInfo.set(\"Registry\", \"Adobe\");\n systemInfo.set(\"Supplement\", 0);\n dict.set(\"CIDSystemInfo\", systemInfo);\n\n return dict;\n}\n\nexport { getXfaFontDict, getXfaFontName };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as calibrib.ttf.\nconst CalibriBoldFactors = [\n 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795,\n 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577,\n 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176,\n 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401,\n 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343,\n 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331,\n 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133,\n 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787,\n 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056,\n 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908,\n 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133,\n 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506,\n 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508,\n 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762,\n 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518,\n 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785,\n 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785,\n 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762,\n 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241,\n 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518,\n 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518,\n 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785,\n 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401,\n 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1,\n 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823,\n 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785,\n 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958,\n 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864,\n 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399,\n 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785,\n 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257,\n 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908,\n 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528,\n 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161,\n 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029,\n 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257,\n 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943,\n 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819,\n 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211,\n 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813,\n 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638,\n 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926,\n 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1,\n 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1,\n 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012,\n 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372,\n 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133,\n 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527,\n 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018,\n 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747,\n 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572,\n 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as calibriz.ttf.\nconst CalibriBoldItalicFactors = [\n 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795,\n 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577,\n 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908,\n 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401,\n 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411,\n 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548,\n 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133,\n 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839,\n 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1,\n 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133,\n 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539,\n 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958,\n 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938,\n 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795,\n 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887,\n 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401,\n 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331,\n 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411,\n 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805,\n 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289,\n 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133,\n 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921,\n 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958,\n 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958,\n 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401,\n 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331,\n 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938,\n 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958,\n 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766,\n 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399,\n 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399,\n 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492,\n 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908,\n 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528,\n 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387,\n 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346,\n 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356,\n 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938,\n 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466,\n 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733,\n 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988,\n 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581,\n 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015,\n 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794,\n 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527,\n 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012,\n 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171,\n 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021,\n 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527,\n 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284,\n 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356,\n 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572,\n 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as calibrii.ttf.\nconst CalibriItalicFactors = [\n 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374,\n 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306,\n 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245,\n 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918,\n 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562,\n 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152,\n 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552,\n 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737,\n 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642,\n 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675,\n 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685,\n 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118,\n 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844,\n 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245,\n 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601,\n 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274,\n 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245,\n 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203,\n 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875,\n 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865,\n 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105,\n 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685,\n 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896,\n 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032,\n 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249,\n 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118,\n 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789,\n 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776,\n 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245,\n 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306,\n 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004,\n 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1,\n 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695,\n 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824,\n 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206,\n 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249,\n 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782,\n 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516,\n 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297,\n 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507,\n 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248,\n 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309,\n 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552,\n 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566,\n 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176,\n 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1,\n 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055,\n 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as calibri.ttf.\nconst CalibriRegularFactors = [\n 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503,\n 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306,\n 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128,\n 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297,\n 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469,\n 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527,\n 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133,\n 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098,\n 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1,\n 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972,\n 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834,\n 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685,\n 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284,\n 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331,\n 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464,\n 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469,\n 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469,\n 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675,\n 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457,\n 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206,\n 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105,\n 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872,\n 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685,\n 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918,\n 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429,\n 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122,\n 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692,\n 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223,\n 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469,\n 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469,\n 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004,\n 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128,\n 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622,\n 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387,\n 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254,\n 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275,\n 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122,\n 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772,\n 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018,\n 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516,\n 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442,\n 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181,\n 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986,\n 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527,\n 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566,\n 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523,\n 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1,\n 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055,\n 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1,\n 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriRegularMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\nexport {\n CalibriBoldFactors,\n CalibriBoldItalicFactors,\n CalibriBoldItalicMetrics,\n CalibriBoldMetrics,\n CalibriItalicFactors,\n CalibriItalicMetrics,\n CalibriRegularFactors,\n CalibriRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as NimbusSans-Bold.otf.\nconst HelveticaBoldFactors = [\n 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006,\n 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828,\n 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973,\n 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026,\n 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069,\n 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001,\n 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995,\n 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087,\n 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056,\n 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006,\n 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019,\n 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942,\n 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944,\n 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999,\n 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057,\n 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994,\n 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973,\n 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999,\n 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041,\n 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973,\n 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026,\n 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005,\n 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1,\n 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1,\n 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as NimbusSans-BoldItalic.otf.\nconst HelveticaBoldItalicFactors = [\n 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006,\n 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011,\n 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998,\n 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022,\n 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1,\n 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064,\n 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014,\n 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064,\n 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948,\n 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035,\n 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967,\n 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001,\n 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977,\n 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001,\n 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999,\n 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995,\n 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026,\n 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999,\n 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973,\n 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975,\n 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044,\n 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991,\n 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1,\n 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as NimbusSans-Italic.otf.\nconst HelveticaItalicFactors = [\n 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288,\n 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998,\n 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013,\n 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022,\n 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1,\n 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945,\n 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962,\n 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036,\n 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036,\n 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006,\n 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001,\n 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954,\n 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001,\n 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016,\n 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089,\n 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973,\n 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1,\n 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023,\n 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1,\n 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1,\n 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016,\n 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924,\n 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267,\n 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023,\n 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002,\n 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985,\n 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031,\n 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861,\n 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999,\n 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962,\n 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as NimbusSans-Regular.otf.\nconst HelveticaRegularFactors = [\n 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596,\n 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998,\n 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941,\n 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022,\n 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1,\n 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978,\n 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1,\n 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023,\n 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023,\n 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006,\n 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962,\n 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035,\n 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977,\n 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053,\n 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043,\n 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073,\n 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1,\n 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1,\n 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006,\n 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1,\n 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977,\n 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924,\n 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999,\n 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973,\n 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002,\n 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254,\n 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031,\n 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026,\n 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1,\n 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n HelveticaBoldFactors,\n HelveticaBoldItalicFactors,\n HelveticaBoldItalicMetrics,\n HelveticaBoldMetrics,\n HelveticaItalicFactors,\n HelveticaItalicMetrics,\n HelveticaRegularFactors,\n HelveticaRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Widths of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldWidths = [\n 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611,\n 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906,\n 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722,\n 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278,\n 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278,\n 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753,\n 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556,\n 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626,\n 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730,\n 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556,\n 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875,\n 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417,\n 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487,\n 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n 333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicWidths = [\n 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611,\n 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906,\n 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722,\n 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278,\n 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278,\n 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773,\n 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556,\n 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643,\n 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729,\n 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556,\n 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885,\n 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469,\n 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575,\n 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600,\n 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n 333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicWidths = [\n 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556,\n 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778,\n 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722,\n 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846,\n 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667,\n 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278,\n 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222,\n 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728,\n 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500,\n 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614,\n 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727,\n 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556,\n 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835,\n 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378,\n 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492,\n 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n 324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularWidths = [\n 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556,\n 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778,\n 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722,\n 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838,\n 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667,\n 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278,\n 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222,\n 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713,\n 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500,\n 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604,\n 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740,\n 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556,\n 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823,\n 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365,\n 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489,\n 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n 324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\nexport {\n LiberationSansBoldItalicMapping,\n LiberationSansBoldItalicWidths,\n LiberationSansBoldMapping,\n LiberationSansBoldWidths,\n LiberationSansItalicMapping,\n LiberationSansItalicWidths,\n LiberationSansRegularMapping,\n LiberationSansRegularWidths,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as MyriadPro-Bold.otf.\nconst MyriadProBoldFactors = [\n 1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884,\n 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582,\n 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793,\n 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275,\n 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179,\n 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083,\n 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903,\n 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933,\n 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407,\n 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938,\n 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793,\n 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295,\n 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1,\n 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838,\n 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061,\n 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179,\n 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438,\n 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938,\n 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938,\n 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446,\n 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039,\n 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938,\n 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093,\n 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938,\n 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768,\n 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258,\n 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621,\n 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1,\n 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1,\n 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446,\n 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646,\n 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713,\n 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438,\n 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083,\n 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446,\n 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1,\n 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088,\n 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261,\n 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019,\n 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156,\n 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704,\n 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933,\n 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933,\n 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367,\n 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774,\n 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083,\n 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582,\n 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1,\n 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1,\n 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169,\n 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as MyriadPro-BoldIt.otf.\nconst MyriadProBoldItalicFactors = [\n 1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222,\n 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582,\n 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276,\n 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655,\n 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222,\n 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605,\n 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058,\n 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796,\n 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168,\n 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236,\n 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276,\n 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074,\n 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1,\n 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043,\n 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729,\n 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621,\n 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058,\n 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951,\n 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216,\n 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381,\n 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595,\n 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364,\n 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216,\n 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783,\n 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083,\n 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523,\n 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621,\n 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036,\n 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726,\n 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222,\n 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513,\n 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077,\n 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651,\n 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677,\n 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236,\n 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1,\n 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275,\n 1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616,\n 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927,\n 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805,\n 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655,\n 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275,\n 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886,\n 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276,\n 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699,\n 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646,\n 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694,\n 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896,\n 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1,\n 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026,\n 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as MyriadPro-It.otf.\nconst MyriadProItalicFactors = [\n 1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307,\n 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945,\n 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465,\n 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058,\n 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125,\n 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588,\n 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832,\n 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012,\n 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075,\n 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493,\n 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537,\n 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537,\n 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353,\n 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446,\n 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158,\n 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864,\n 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588,\n 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512,\n 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424,\n 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882,\n 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852,\n 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399,\n 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453,\n 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1,\n 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424,\n 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728,\n 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475,\n 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865,\n 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867,\n 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866,\n 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658,\n 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578,\n 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512,\n 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773,\n 0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012,\n 1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901,\n 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947,\n 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588,\n 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701,\n 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386,\n 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298,\n 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787,\n 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737,\n 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859,\n 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219,\n 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027,\n 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1,\n 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233,\n 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as MyriadPro-Regular.otf.\nconst MyriadProRegularFactors = [\n 1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706,\n 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456,\n 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241,\n 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002,\n 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051,\n 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761,\n 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111,\n 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231,\n 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938,\n 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137,\n 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034,\n 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332,\n 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519,\n 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339,\n 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755,\n 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023,\n 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858,\n 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611,\n 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896,\n 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224,\n 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595,\n 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755,\n 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896,\n 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764,\n 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764,\n 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284,\n 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023,\n 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377,\n 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441,\n 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991,\n 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434,\n 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1,\n 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074,\n 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074,\n 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856,\n 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936,\n 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088,\n 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138,\n 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226,\n 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023,\n 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297,\n 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157,\n 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088,\n 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938,\n 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007,\n 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915,\n 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1,\n 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903,\n 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241,\n 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1,\n 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1,\n 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1,\n];\nconst MyriadProRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n MyriadProBoldFactors,\n MyriadProBoldItalicFactors,\n MyriadProBoldItalicMetrics,\n MyriadProBoldMetrics,\n MyriadProItalicFactors,\n MyriadProItalicMetrics,\n MyriadProRegularFactors,\n MyriadProRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as segoeuib.ttf.\nconst SegoeuiBoldFactors = [\n 1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647,\n 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578,\n 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424,\n 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847,\n 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406,\n 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489,\n 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361,\n 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304,\n 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527,\n 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862,\n 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579,\n 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727,\n 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826,\n 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866,\n 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363,\n 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795,\n 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426,\n 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135,\n 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752,\n 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278,\n 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826,\n 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752,\n 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641,\n 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517,\n 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278,\n 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1,\n 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406,\n 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285,\n 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418,\n 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251,\n 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931,\n 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104,\n 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862,\n 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041,\n 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752,\n 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733,\n 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923,\n 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912,\n 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167,\n 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134,\n 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889,\n 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996,\n 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008,\n 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008,\n 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434,\n 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439,\n 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511,\n 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1,\n 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633,\n 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372,\n 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1,\n 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279,\n 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416,\n 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as segoeuiz.ttf.\nconst SegoeuiBoldItalicFactors = [\n 1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953,\n 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754,\n 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378,\n 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723,\n 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128,\n 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527,\n 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293,\n 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042,\n 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236,\n 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922,\n 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107,\n 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754,\n 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047,\n 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356,\n 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363,\n 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429,\n 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552,\n 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135,\n 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585,\n 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236,\n 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165,\n 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922,\n 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363,\n 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897,\n 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503,\n 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042,\n 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922,\n 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406,\n 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236,\n 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922,\n 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552,\n 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641,\n 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527,\n 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135,\n 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135,\n 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168,\n 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385,\n 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818,\n 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126,\n 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205,\n 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815,\n 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552,\n 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945,\n 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961,\n 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518,\n 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377,\n 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514,\n 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777,\n 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1,\n 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633,\n 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372,\n 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1,\n 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279,\n 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416,\n 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as segoeuii.ttf.\nconst SegoeuiItalicFactors = [\n 1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373,\n 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383,\n 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308,\n 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016,\n 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989,\n 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143,\n 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627,\n 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454,\n 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225,\n 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973,\n 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748,\n 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781,\n 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971,\n 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836,\n 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729,\n 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782,\n 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924,\n 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402,\n 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454,\n 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146,\n 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225,\n 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351,\n 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729,\n 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506,\n 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533,\n 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454,\n 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176,\n 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484,\n 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231,\n 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989,\n 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225,\n 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1,\n 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004,\n 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351,\n 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351,\n 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043,\n 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498,\n 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839,\n 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965,\n 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2,\n 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924,\n 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642,\n 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284,\n 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205,\n 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119,\n 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679,\n 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675,\n 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973,\n 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945,\n 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621,\n 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1,\n 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836,\n 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1,\n 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622,\n 1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862,\n 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603,\n 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1,\n 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as segoeui.ttf.\nconst SegoeuiRegularFactors = [\n 1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985,\n 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246,\n 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084,\n 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831,\n 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968,\n 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433,\n 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484,\n 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011,\n 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399,\n 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043,\n 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912,\n 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808,\n 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032,\n 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381,\n 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734,\n 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782,\n 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714,\n 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049,\n 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383,\n 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527,\n 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923,\n 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706,\n 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734,\n 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093,\n 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403,\n 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1,\n 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782,\n 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011,\n 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298,\n 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444,\n 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066,\n 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649,\n 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771,\n 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132,\n 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287,\n 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571,\n 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771,\n 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572,\n 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366,\n 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491,\n 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796,\n 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287,\n 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424,\n 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424,\n 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087,\n 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205,\n 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 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,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965,\n 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088,\n 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196,\n 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483,\n 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518,\n 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279,\n 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714,\n 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238,\n 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025,\n 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1,\n 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1,\n 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiRegularMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\nexport {\n SegoeuiBoldFactors,\n SegoeuiBoldItalicFactors,\n SegoeuiBoldItalicMetrics,\n SegoeuiBoldMetrics,\n SegoeuiItalicFactors,\n SegoeuiItalicMetrics,\n SegoeuiRegularFactors,\n SegoeuiRegularMetrics,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FontType, info } from \"../shared/util.js\";\nimport { getEncoding, StandardEncoding } from \"./encodings.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getUnicodeForGlyph } from \"./unicode.js\";\n\n// Accented characters have issues on Windows and Linux. When this flag is\n// enabled glyphs that use seac and seac style endchar operators are truncated\n// and we instead just store the glyph id's of the base glyph and its accent to\n// be drawn individually.\n// Linux (freetype) requires that when a seac style endchar is used\n// that the charset must be a predefined one, however we build a\n// custom one. Windows just refuses to draw glyphs with seac operators.\nconst SEAC_ANALYSIS_ENABLED = true;\n\nconst FontFlags = {\n FixedPitch: 1,\n Serif: 2,\n Symbolic: 4,\n Script: 8,\n Nonsymbolic: 32,\n Italic: 64,\n AllCap: 65536,\n SmallCap: 131072,\n ForceBold: 262144,\n};\n\n// prettier-ignore\nconst MacStandardGlyphOrdering = [\n \".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\",\n \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\",\n \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\",\n \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\",\n \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\",\n \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\",\n \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\",\n \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\",\n \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\",\n \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\",\n \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\",\n \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\",\n \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\",\n \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\",\n \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\",\n \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\",\n \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\",\n \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\",\n \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\",\n \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\",\n \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\",\n \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\",\n \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\",\n \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\",\n \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\",\n \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\",\n \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\",\n \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\",\n \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\",\n \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\",\n \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\",\n \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\",\n \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\",\n \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\n\nfunction getFontType(type, subtype, isStandardFont = false) {\n switch (type) {\n case \"Type1\":\n if (isStandardFont) {\n return FontType.TYPE1STANDARD;\n }\n return subtype === \"Type1C\" ? FontType.TYPE1C : FontType.TYPE1;\n case \"CIDFontType0\":\n return subtype === \"CIDFontType0C\"\n ? FontType.CIDFONTTYPE0C\n : FontType.CIDFONTTYPE0;\n case \"OpenType\":\n return FontType.OPENTYPE;\n case \"TrueType\":\n return FontType.TRUETYPE;\n case \"CIDFontType2\":\n return FontType.CIDFONTTYPE2;\n case \"MMType1\":\n return FontType.MMTYPE1;\n case \"Type0\":\n return FontType.TYPE0;\n default:\n return FontType.UNKNOWN;\n }\n}\n\n// Some bad PDF generators, e.g. Scribus PDF, include glyph names\n// in a 'uniXXXX' format -- attempting to recover proper ones.\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n if (glyphsUnicodeMap[name] !== undefined) {\n return name;\n }\n // The glyph name is non-standard, trying to recover.\n const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n if (unicode !== -1) {\n for (const key in glyphsUnicodeMap) {\n if (glyphsUnicodeMap[key] === unicode) {\n return key;\n }\n }\n }\n info(\"Unable to recover a standard glyph name for: \" + name);\n return name;\n}\n\n/**\n * Shared logic for building a char code to glyph id mapping for Type1 and\n * simple CFF fonts. See section 9.6.6.2 of the spec.\n * @param {Object} properties Font properties object.\n * @param {Object} builtInEncoding The encoding contained within the actual font\n * data.\n * @param {Array} glyphNames Array of glyph names where the index is the\n * glyph ID.\n * @returns {Object} A char code to glyph ID map.\n */\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n const charCodeToGlyphId = Object.create(null);\n let glyphId, charCode, baseEncoding;\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n if (properties.isInternalFont) {\n baseEncoding = builtInEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n } else if (properties.baseEncodingName) {\n // If a valid base encoding name was used, the mapping is initialized with\n // that.\n baseEncoding = getEncoding(properties.baseEncodingName);\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n } else if (isSymbolicFont) {\n // For a symbolic font the encoding should be the fonts built-in encoding.\n for (charCode in builtInEncoding) {\n charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n }\n } else {\n // For non-symbolic fonts that don't have a base encoding the standard\n // encoding should be used.\n baseEncoding = StandardEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n }\n\n // Lastly, merge in the differences.\n const differences = properties.differences;\n let glyphsUnicodeMap;\n if (differences) {\n for (charCode in differences) {\n const glyphName = differences[charCode];\n glyphId = glyphNames.indexOf(glyphName);\n\n if (glyphId === -1) {\n if (!glyphsUnicodeMap) {\n glyphsUnicodeMap = getGlyphsUnicode();\n }\n const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n if (standardGlyphName !== glyphName) {\n glyphId = glyphNames.indexOf(standardGlyphName);\n }\n }\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n }\n return charCodeToGlyphId;\n}\n\nfunction normalizeFontName(name) {\n return name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n}\n\nexport {\n FontFlags,\n getFontType,\n MacStandardGlyphOrdering,\n normalizeFontName,\n recoverGlyphName,\n SEAC_ANALYSIS_ENABLED,\n type1FontGlyphMapping,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ExpertEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\",\n \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\",\n \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\",\n \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\",\n \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\",\n \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\",\n \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\",\n \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\",\n \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\",\n \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\",\n \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\",\n \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\",\n \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\",\n \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\",\n \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\",\n \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\",\n \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\",\n \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\",\n \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n \"Ydieresissmall\"];\n\n// prettier-ignore\nconst MacExpertEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\",\n \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\",\n \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\",\n \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\",\n \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\",\n \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\",\n \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\",\n \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\",\n \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\",\n \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\",\n \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\",\n \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\",\n \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\",\n \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\",\n \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\",\n \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\",\n \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\",\n \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\",\n \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\",\n \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\",\n \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\",\n \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\",\n \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\",\n \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\",\n \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\",\n \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\",\n \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\",\n \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\n\n// prettier-ignore\nconst MacRomanEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\",\n \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\",\n \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\",\n \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\",\n \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\",\n \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\",\n \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\",\n \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\",\n \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\",\n \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\",\n \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\",\n \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\",\n \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\",\n \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\",\n \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\",\n \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\",\n \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\",\n \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\",\n \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\",\n \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\",\n \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\",\n \"ogonek\", \"caron\"];\n\n// prettier-ignore\nconst StandardEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\",\n \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\",\n \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\",\n \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\",\n \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\",\n \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\",\n \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\",\n \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\",\n \"\", \"\", \"\"];\n\n// prettier-ignore\nconst WinAnsiEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\",\n \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\",\n \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\",\n \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\",\n \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\",\n \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\",\n \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\",\n \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\",\n \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\",\n \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\",\n \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\",\n \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\",\n \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\",\n \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\",\n \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\",\n \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\",\n \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\",\n \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\",\n \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\",\n \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\",\n \"ydieresis\"];\n\n// prettier-ignore\nconst SymbolSetEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\",\n \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\",\n \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\",\n \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\",\n \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\",\n \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\",\n \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\",\n \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\",\n \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\",\n \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\",\n \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\",\n \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\",\n \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\",\n \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\",\n \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\",\n \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\",\n \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\",\n \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\",\n \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\",\n \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\",\n \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\",\n \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\",\n \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\",\n \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\",\n \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\",\n \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\",\n \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\",\n \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\",\n \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\",\n \"bracerightbt\", \"\"];\n\n// prettier-ignore\nconst ZapfDingbatsEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\",\n \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\",\n \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\",\n \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\",\n \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\",\n \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\",\n \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\",\n \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\",\n \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\",\n \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\",\n \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\",\n \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\",\n \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\",\n \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\",\n \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\",\n \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\",\n \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\",\n \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\",\n \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\",\n \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\",\n \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\n\nfunction getEncoding(encodingName) {\n switch (encodingName) {\n case \"WinAnsiEncoding\":\n return WinAnsiEncoding;\n case \"StandardEncoding\":\n return StandardEncoding;\n case \"MacRomanEncoding\":\n return MacRomanEncoding;\n case \"SymbolSetEncoding\":\n return SymbolSetEncoding;\n case \"ZapfDingbatsEncoding\":\n return ZapfDingbatsEncoding;\n case \"ExpertEncoding\":\n return ExpertEncoding;\n case \"MacExpertEncoding\":\n return MacExpertEncoding;\n default:\n return null;\n }\n}\n\nexport {\n ExpertEncoding,\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport { getArrayLookupTableFactory } from \"./core_utils.js\";\n\nconst getGlyphsUnicode = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"A\", 0x0041,\n \"AE\", 0x00c6,\n \"AEacute\", 0x01fc,\n \"AEmacron\", 0x01e2,\n \"AEsmall\", 0xf7e6,\n \"Aacute\", 0x00c1,\n \"Aacutesmall\", 0xf7e1,\n \"Abreve\", 0x0102,\n \"Abreveacute\", 0x1eae,\n \"Abrevecyrillic\", 0x04d0,\n \"Abrevedotbelow\", 0x1eb6,\n \"Abrevegrave\", 0x1eb0,\n \"Abrevehookabove\", 0x1eb2,\n \"Abrevetilde\", 0x1eb4,\n \"Acaron\", 0x01cd,\n \"Acircle\", 0x24b6,\n \"Acircumflex\", 0x00c2,\n \"Acircumflexacute\", 0x1ea4,\n \"Acircumflexdotbelow\", 0x1eac,\n \"Acircumflexgrave\", 0x1ea6,\n \"Acircumflexhookabove\", 0x1ea8,\n \"Acircumflexsmall\", 0xf7e2,\n \"Acircumflextilde\", 0x1eaa,\n \"Acute\", 0xf6c9,\n \"Acutesmall\", 0xf7b4,\n \"Acyrillic\", 0x0410,\n \"Adblgrave\", 0x0200,\n \"Adieresis\", 0x00c4,\n \"Adieresiscyrillic\", 0x04d2,\n \"Adieresismacron\", 0x01de,\n \"Adieresissmall\", 0xf7e4,\n \"Adotbelow\", 0x1ea0,\n \"Adotmacron\", 0x01e0,\n \"Agrave\", 0x00c0,\n \"Agravesmall\", 0xf7e0,\n \"Ahookabove\", 0x1ea2,\n \"Aiecyrillic\", 0x04d4,\n \"Ainvertedbreve\", 0x0202,\n \"Alpha\", 0x0391,\n \"Alphatonos\", 0x0386,\n \"Amacron\", 0x0100,\n \"Amonospace\", 0xff21,\n \"Aogonek\", 0x0104,\n \"Aring\", 0x00c5,\n \"Aringacute\", 0x01fa,\n \"Aringbelow\", 0x1e00,\n \"Aringsmall\", 0xf7e5,\n \"Asmall\", 0xf761,\n \"Atilde\", 0x00c3,\n \"Atildesmall\", 0xf7e3,\n \"Aybarmenian\", 0x0531,\n \"B\", 0x0042,\n \"Bcircle\", 0x24b7,\n \"Bdotaccent\", 0x1e02,\n \"Bdotbelow\", 0x1e04,\n \"Becyrillic\", 0x0411,\n \"Benarmenian\", 0x0532,\n \"Beta\", 0x0392,\n \"Bhook\", 0x0181,\n \"Blinebelow\", 0x1e06,\n \"Bmonospace\", 0xff22,\n \"Brevesmall\", 0xf6f4,\n \"Bsmall\", 0xf762,\n \"Btopbar\", 0x0182,\n \"C\", 0x0043,\n \"Caarmenian\", 0x053e,\n \"Cacute\", 0x0106,\n \"Caron\", 0xf6ca,\n \"Caronsmall\", 0xf6f5,\n \"Ccaron\", 0x010c,\n \"Ccedilla\", 0x00c7,\n \"Ccedillaacute\", 0x1e08,\n \"Ccedillasmall\", 0xf7e7,\n \"Ccircle\", 0x24b8,\n \"Ccircumflex\", 0x0108,\n \"Cdot\", 0x010a,\n \"Cdotaccent\", 0x010a,\n \"Cedillasmall\", 0xf7b8,\n \"Chaarmenian\", 0x0549,\n \"Cheabkhasiancyrillic\", 0x04bc,\n \"Checyrillic\", 0x0427,\n \"Chedescenderabkhasiancyrillic\", 0x04be,\n \"Chedescendercyrillic\", 0x04b6,\n \"Chedieresiscyrillic\", 0x04f4,\n \"Cheharmenian\", 0x0543,\n \"Chekhakassiancyrillic\", 0x04cb,\n \"Cheverticalstrokecyrillic\", 0x04b8,\n \"Chi\", 0x03a7,\n \"Chook\", 0x0187,\n \"Circumflexsmall\", 0xf6f6,\n \"Cmonospace\", 0xff23,\n \"Coarmenian\", 0x0551,\n \"Csmall\", 0xf763,\n \"D\", 0x0044,\n \"DZ\", 0x01f1,\n \"DZcaron\", 0x01c4,\n \"Daarmenian\", 0x0534,\n \"Dafrican\", 0x0189,\n \"Dcaron\", 0x010e,\n \"Dcedilla\", 0x1e10,\n \"Dcircle\", 0x24b9,\n \"Dcircumflexbelow\", 0x1e12,\n \"Dcroat\", 0x0110,\n \"Ddotaccent\", 0x1e0a,\n \"Ddotbelow\", 0x1e0c,\n \"Decyrillic\", 0x0414,\n \"Deicoptic\", 0x03ee,\n \"Delta\", 0x2206,\n \"Deltagreek\", 0x0394,\n \"Dhook\", 0x018a,\n \"Dieresis\", 0xf6cb,\n \"DieresisAcute\", 0xf6cc,\n \"DieresisGrave\", 0xf6cd,\n \"Dieresissmall\", 0xf7a8,\n \"Digammagreek\", 0x03dc,\n \"Djecyrillic\", 0x0402,\n \"Dlinebelow\", 0x1e0e,\n \"Dmonospace\", 0xff24,\n \"Dotaccentsmall\", 0xf6f7,\n \"Dslash\", 0x0110,\n \"Dsmall\", 0xf764,\n \"Dtopbar\", 0x018b,\n \"Dz\", 0x01f2,\n \"Dzcaron\", 0x01c5,\n \"Dzeabkhasiancyrillic\", 0x04e0,\n \"Dzecyrillic\", 0x0405,\n \"Dzhecyrillic\", 0x040f,\n \"E\", 0x0045,\n \"Eacute\", 0x00c9,\n \"Eacutesmall\", 0xf7e9,\n \"Ebreve\", 0x0114,\n \"Ecaron\", 0x011a,\n \"Ecedillabreve\", 0x1e1c,\n \"Echarmenian\", 0x0535,\n \"Ecircle\", 0x24ba,\n \"Ecircumflex\", 0x00ca,\n \"Ecircumflexacute\", 0x1ebe,\n \"Ecircumflexbelow\", 0x1e18,\n \"Ecircumflexdotbelow\", 0x1ec6,\n \"Ecircumflexgrave\", 0x1ec0,\n \"Ecircumflexhookabove\", 0x1ec2,\n \"Ecircumflexsmall\", 0xf7ea,\n \"Ecircumflextilde\", 0x1ec4,\n \"Ecyrillic\", 0x0404,\n \"Edblgrave\", 0x0204,\n \"Edieresis\", 0x00cb,\n \"Edieresissmall\", 0xf7eb,\n \"Edot\", 0x0116,\n \"Edotaccent\", 0x0116,\n \"Edotbelow\", 0x1eb8,\n \"Efcyrillic\", 0x0424,\n \"Egrave\", 0x00c8,\n \"Egravesmall\", 0xf7e8,\n \"Eharmenian\", 0x0537,\n \"Ehookabove\", 0x1eba,\n \"Eightroman\", 0x2167,\n \"Einvertedbreve\", 0x0206,\n \"Eiotifiedcyrillic\", 0x0464,\n \"Elcyrillic\", 0x041b,\n \"Elevenroman\", 0x216a,\n \"Emacron\", 0x0112,\n \"Emacronacute\", 0x1e16,\n \"Emacrongrave\", 0x1e14,\n \"Emcyrillic\", 0x041c,\n \"Emonospace\", 0xff25,\n \"Encyrillic\", 0x041d,\n \"Endescendercyrillic\", 0x04a2,\n \"Eng\", 0x014a,\n \"Enghecyrillic\", 0x04a4,\n \"Enhookcyrillic\", 0x04c7,\n \"Eogonek\", 0x0118,\n \"Eopen\", 0x0190,\n \"Epsilon\", 0x0395,\n \"Epsilontonos\", 0x0388,\n \"Ercyrillic\", 0x0420,\n \"Ereversed\", 0x018e,\n \"Ereversedcyrillic\", 0x042d,\n \"Escyrillic\", 0x0421,\n \"Esdescendercyrillic\", 0x04aa,\n \"Esh\", 0x01a9,\n \"Esmall\", 0xf765,\n \"Eta\", 0x0397,\n \"Etarmenian\", 0x0538,\n \"Etatonos\", 0x0389,\n \"Eth\", 0x00d0,\n \"Ethsmall\", 0xf7f0,\n \"Etilde\", 0x1ebc,\n \"Etildebelow\", 0x1e1a,\n \"Euro\", 0x20ac,\n \"Ezh\", 0x01b7,\n \"Ezhcaron\", 0x01ee,\n \"Ezhreversed\", 0x01b8,\n \"F\", 0x0046,\n \"Fcircle\", 0x24bb,\n \"Fdotaccent\", 0x1e1e,\n \"Feharmenian\", 0x0556,\n \"Feicoptic\", 0x03e4,\n \"Fhook\", 0x0191,\n \"Fitacyrillic\", 0x0472,\n \"Fiveroman\", 0x2164,\n \"Fmonospace\", 0xff26,\n \"Fourroman\", 0x2163,\n \"Fsmall\", 0xf766,\n \"G\", 0x0047,\n \"GBsquare\", 0x3387,\n \"Gacute\", 0x01f4,\n \"Gamma\", 0x0393,\n \"Gammaafrican\", 0x0194,\n \"Gangiacoptic\", 0x03ea,\n \"Gbreve\", 0x011e,\n \"Gcaron\", 0x01e6,\n \"Gcedilla\", 0x0122,\n \"Gcircle\", 0x24bc,\n \"Gcircumflex\", 0x011c,\n \"Gcommaaccent\", 0x0122,\n \"Gdot\", 0x0120,\n \"Gdotaccent\", 0x0120,\n \"Gecyrillic\", 0x0413,\n \"Ghadarmenian\", 0x0542,\n \"Ghemiddlehookcyrillic\", 0x0494,\n \"Ghestrokecyrillic\", 0x0492,\n \"Gheupturncyrillic\", 0x0490,\n \"Ghook\", 0x0193,\n \"Gimarmenian\", 0x0533,\n \"Gjecyrillic\", 0x0403,\n \"Gmacron\", 0x1e20,\n \"Gmonospace\", 0xff27,\n \"Grave\", 0xf6ce,\n \"Gravesmall\", 0xf760,\n \"Gsmall\", 0xf767,\n \"Gsmallhook\", 0x029b,\n \"Gstroke\", 0x01e4,\n \"H\", 0x0048,\n \"H18533\", 0x25cf,\n \"H18543\", 0x25aa,\n \"H18551\", 0x25ab,\n \"H22073\", 0x25a1,\n \"HPsquare\", 0x33cb,\n \"Haabkhasiancyrillic\", 0x04a8,\n \"Hadescendercyrillic\", 0x04b2,\n \"Hardsigncyrillic\", 0x042a,\n \"Hbar\", 0x0126,\n \"Hbrevebelow\", 0x1e2a,\n \"Hcedilla\", 0x1e28,\n \"Hcircle\", 0x24bd,\n \"Hcircumflex\", 0x0124,\n \"Hdieresis\", 0x1e26,\n \"Hdotaccent\", 0x1e22,\n \"Hdotbelow\", 0x1e24,\n \"Hmonospace\", 0xff28,\n \"Hoarmenian\", 0x0540,\n \"Horicoptic\", 0x03e8,\n \"Hsmall\", 0xf768,\n \"Hungarumlaut\", 0xf6cf,\n \"Hungarumlautsmall\", 0xf6f8,\n \"Hzsquare\", 0x3390,\n \"I\", 0x0049,\n \"IAcyrillic\", 0x042f,\n \"IJ\", 0x0132,\n \"IUcyrillic\", 0x042e,\n \"Iacute\", 0x00cd,\n \"Iacutesmall\", 0xf7ed,\n \"Ibreve\", 0x012c,\n \"Icaron\", 0x01cf,\n \"Icircle\", 0x24be,\n \"Icircumflex\", 0x00ce,\n \"Icircumflexsmall\", 0xf7ee,\n \"Icyrillic\", 0x0406,\n \"Idblgrave\", 0x0208,\n \"Idieresis\", 0x00cf,\n \"Idieresisacute\", 0x1e2e,\n \"Idieresiscyrillic\", 0x04e4,\n \"Idieresissmall\", 0xf7ef,\n \"Idot\", 0x0130,\n \"Idotaccent\", 0x0130,\n \"Idotbelow\", 0x1eca,\n \"Iebrevecyrillic\", 0x04d6,\n \"Iecyrillic\", 0x0415,\n \"Ifraktur\", 0x2111,\n \"Igrave\", 0x00cc,\n \"Igravesmall\", 0xf7ec,\n \"Ihookabove\", 0x1ec8,\n \"Iicyrillic\", 0x0418,\n \"Iinvertedbreve\", 0x020a,\n \"Iishortcyrillic\", 0x0419,\n \"Imacron\", 0x012a,\n \"Imacroncyrillic\", 0x04e2,\n \"Imonospace\", 0xff29,\n \"Iniarmenian\", 0x053b,\n \"Iocyrillic\", 0x0401,\n \"Iogonek\", 0x012e,\n \"Iota\", 0x0399,\n \"Iotaafrican\", 0x0196,\n \"Iotadieresis\", 0x03aa,\n \"Iotatonos\", 0x038a,\n \"Ismall\", 0xf769,\n \"Istroke\", 0x0197,\n \"Itilde\", 0x0128,\n \"Itildebelow\", 0x1e2c,\n \"Izhitsacyrillic\", 0x0474,\n \"Izhitsadblgravecyrillic\", 0x0476,\n \"J\", 0x004a,\n \"Jaarmenian\", 0x0541,\n \"Jcircle\", 0x24bf,\n \"Jcircumflex\", 0x0134,\n \"Jecyrillic\", 0x0408,\n \"Jheharmenian\", 0x054b,\n \"Jmonospace\", 0xff2a,\n \"Jsmall\", 0xf76a,\n \"K\", 0x004b,\n \"KBsquare\", 0x3385,\n \"KKsquare\", 0x33cd,\n \"Kabashkircyrillic\", 0x04a0,\n \"Kacute\", 0x1e30,\n \"Kacyrillic\", 0x041a,\n \"Kadescendercyrillic\", 0x049a,\n \"Kahookcyrillic\", 0x04c3,\n \"Kappa\", 0x039a,\n \"Kastrokecyrillic\", 0x049e,\n \"Kaverticalstrokecyrillic\", 0x049c,\n \"Kcaron\", 0x01e8,\n \"Kcedilla\", 0x0136,\n \"Kcircle\", 0x24c0,\n \"Kcommaaccent\", 0x0136,\n \"Kdotbelow\", 0x1e32,\n \"Keharmenian\", 0x0554,\n \"Kenarmenian\", 0x053f,\n \"Khacyrillic\", 0x0425,\n \"Kheicoptic\", 0x03e6,\n \"Khook\", 0x0198,\n \"Kjecyrillic\", 0x040c,\n \"Klinebelow\", 0x1e34,\n \"Kmonospace\", 0xff2b,\n \"Koppacyrillic\", 0x0480,\n \"Koppagreek\", 0x03de,\n \"Ksicyrillic\", 0x046e,\n \"Ksmall\", 0xf76b,\n \"L\", 0x004c,\n \"LJ\", 0x01c7,\n \"LL\", 0xf6bf,\n \"Lacute\", 0x0139,\n \"Lambda\", 0x039b,\n \"Lcaron\", 0x013d,\n \"Lcedilla\", 0x013b,\n \"Lcircle\", 0x24c1,\n \"Lcircumflexbelow\", 0x1e3c,\n \"Lcommaaccent\", 0x013b,\n \"Ldot\", 0x013f,\n \"Ldotaccent\", 0x013f,\n \"Ldotbelow\", 0x1e36,\n \"Ldotbelowmacron\", 0x1e38,\n \"Liwnarmenian\", 0x053c,\n \"Lj\", 0x01c8,\n \"Ljecyrillic\", 0x0409,\n \"Llinebelow\", 0x1e3a,\n \"Lmonospace\", 0xff2c,\n \"Lslash\", 0x0141,\n \"Lslashsmall\", 0xf6f9,\n \"Lsmall\", 0xf76c,\n \"M\", 0x004d,\n \"MBsquare\", 0x3386,\n \"Macron\", 0xf6d0,\n \"Macronsmall\", 0xf7af,\n \"Macute\", 0x1e3e,\n \"Mcircle\", 0x24c2,\n \"Mdotaccent\", 0x1e40,\n \"Mdotbelow\", 0x1e42,\n \"Menarmenian\", 0x0544,\n \"Mmonospace\", 0xff2d,\n \"Msmall\", 0xf76d,\n \"Mturned\", 0x019c,\n \"Mu\", 0x039c,\n \"N\", 0x004e,\n \"NJ\", 0x01ca,\n \"Nacute\", 0x0143,\n \"Ncaron\", 0x0147,\n \"Ncedilla\", 0x0145,\n \"Ncircle\", 0x24c3,\n \"Ncircumflexbelow\", 0x1e4a,\n \"Ncommaaccent\", 0x0145,\n \"Ndotaccent\", 0x1e44,\n \"Ndotbelow\", 0x1e46,\n \"Nhookleft\", 0x019d,\n \"Nineroman\", 0x2168,\n \"Nj\", 0x01cb,\n \"Njecyrillic\", 0x040a,\n \"Nlinebelow\", 0x1e48,\n \"Nmonospace\", 0xff2e,\n \"Nowarmenian\", 0x0546,\n \"Nsmall\", 0xf76e,\n \"Ntilde\", 0x00d1,\n \"Ntildesmall\", 0xf7f1,\n \"Nu\", 0x039d,\n \"O\", 0x004f,\n \"OE\", 0x0152,\n \"OEsmall\", 0xf6fa,\n \"Oacute\", 0x00d3,\n \"Oacutesmall\", 0xf7f3,\n \"Obarredcyrillic\", 0x04e8,\n \"Obarreddieresiscyrillic\", 0x04ea,\n \"Obreve\", 0x014e,\n \"Ocaron\", 0x01d1,\n \"Ocenteredtilde\", 0x019f,\n \"Ocircle\", 0x24c4,\n \"Ocircumflex\", 0x00d4,\n \"Ocircumflexacute\", 0x1ed0,\n \"Ocircumflexdotbelow\", 0x1ed8,\n \"Ocircumflexgrave\", 0x1ed2,\n \"Ocircumflexhookabove\", 0x1ed4,\n \"Ocircumflexsmall\", 0xf7f4,\n \"Ocircumflextilde\", 0x1ed6,\n \"Ocyrillic\", 0x041e,\n \"Odblacute\", 0x0150,\n \"Odblgrave\", 0x020c,\n \"Odieresis\", 0x00d6,\n \"Odieresiscyrillic\", 0x04e6,\n \"Odieresissmall\", 0xf7f6,\n \"Odotbelow\", 0x1ecc,\n \"Ogoneksmall\", 0xf6fb,\n \"Ograve\", 0x00d2,\n \"Ogravesmall\", 0xf7f2,\n \"Oharmenian\", 0x0555,\n \"Ohm\", 0x2126,\n \"Ohookabove\", 0x1ece,\n \"Ohorn\", 0x01a0,\n \"Ohornacute\", 0x1eda,\n \"Ohorndotbelow\", 0x1ee2,\n \"Ohorngrave\", 0x1edc,\n \"Ohornhookabove\", 0x1ede,\n \"Ohorntilde\", 0x1ee0,\n \"Ohungarumlaut\", 0x0150,\n \"Oi\", 0x01a2,\n \"Oinvertedbreve\", 0x020e,\n \"Omacron\", 0x014c,\n \"Omacronacute\", 0x1e52,\n \"Omacrongrave\", 0x1e50,\n \"Omega\", 0x2126,\n \"Omegacyrillic\", 0x0460,\n \"Omegagreek\", 0x03a9,\n \"Omegaroundcyrillic\", 0x047a,\n \"Omegatitlocyrillic\", 0x047c,\n \"Omegatonos\", 0x038f,\n \"Omicron\", 0x039f,\n \"Omicrontonos\", 0x038c,\n \"Omonospace\", 0xff2f,\n \"Oneroman\", 0x2160,\n \"Oogonek\", 0x01ea,\n \"Oogonekmacron\", 0x01ec,\n \"Oopen\", 0x0186,\n \"Oslash\", 0x00d8,\n \"Oslashacute\", 0x01fe,\n \"Oslashsmall\", 0xf7f8,\n \"Osmall\", 0xf76f,\n \"Ostrokeacute\", 0x01fe,\n \"Otcyrillic\", 0x047e,\n \"Otilde\", 0x00d5,\n \"Otildeacute\", 0x1e4c,\n \"Otildedieresis\", 0x1e4e,\n \"Otildesmall\", 0xf7f5,\n \"P\", 0x0050,\n \"Pacute\", 0x1e54,\n \"Pcircle\", 0x24c5,\n \"Pdotaccent\", 0x1e56,\n \"Pecyrillic\", 0x041f,\n \"Peharmenian\", 0x054a,\n \"Pemiddlehookcyrillic\", 0x04a6,\n \"Phi\", 0x03a6,\n \"Phook\", 0x01a4,\n \"Pi\", 0x03a0,\n \"Piwrarmenian\", 0x0553,\n \"Pmonospace\", 0xff30,\n \"Psi\", 0x03a8,\n \"Psicyrillic\", 0x0470,\n \"Psmall\", 0xf770,\n \"Q\", 0x0051,\n \"Qcircle\", 0x24c6,\n \"Qmonospace\", 0xff31,\n \"Qsmall\", 0xf771,\n \"R\", 0x0052,\n \"Raarmenian\", 0x054c,\n \"Racute\", 0x0154,\n \"Rcaron\", 0x0158,\n \"Rcedilla\", 0x0156,\n \"Rcircle\", 0x24c7,\n \"Rcommaaccent\", 0x0156,\n \"Rdblgrave\", 0x0210,\n \"Rdotaccent\", 0x1e58,\n \"Rdotbelow\", 0x1e5a,\n \"Rdotbelowmacron\", 0x1e5c,\n \"Reharmenian\", 0x0550,\n \"Rfraktur\", 0x211c,\n \"Rho\", 0x03a1,\n \"Ringsmall\", 0xf6fc,\n \"Rinvertedbreve\", 0x0212,\n \"Rlinebelow\", 0x1e5e,\n \"Rmonospace\", 0xff32,\n \"Rsmall\", 0xf772,\n \"Rsmallinverted\", 0x0281,\n \"Rsmallinvertedsuperior\", 0x02b6,\n \"S\", 0x0053,\n \"SF010000\", 0x250c,\n \"SF020000\", 0x2514,\n \"SF030000\", 0x2510,\n \"SF040000\", 0x2518,\n \"SF050000\", 0x253c,\n \"SF060000\", 0x252c,\n \"SF070000\", 0x2534,\n \"SF080000\", 0x251c,\n \"SF090000\", 0x2524,\n \"SF100000\", 0x2500,\n \"SF110000\", 0x2502,\n \"SF190000\", 0x2561,\n \"SF200000\", 0x2562,\n \"SF210000\", 0x2556,\n \"SF220000\", 0x2555,\n \"SF230000\", 0x2563,\n \"SF240000\", 0x2551,\n \"SF250000\", 0x2557,\n \"SF260000\", 0x255d,\n \"SF270000\", 0x255c,\n \"SF280000\", 0x255b,\n \"SF360000\", 0x255e,\n \"SF370000\", 0x255f,\n \"SF380000\", 0x255a,\n \"SF390000\", 0x2554,\n \"SF400000\", 0x2569,\n \"SF410000\", 0x2566,\n \"SF420000\", 0x2560,\n \"SF430000\", 0x2550,\n \"SF440000\", 0x256c,\n \"SF450000\", 0x2567,\n \"SF460000\", 0x2568,\n \"SF470000\", 0x2564,\n \"SF480000\", 0x2565,\n \"SF490000\", 0x2559,\n \"SF500000\", 0x2558,\n \"SF510000\", 0x2552,\n \"SF520000\", 0x2553,\n \"SF530000\", 0x256b,\n \"SF540000\", 0x256a,\n \"Sacute\", 0x015a,\n \"Sacutedotaccent\", 0x1e64,\n \"Sampigreek\", 0x03e0,\n \"Scaron\", 0x0160,\n \"Scarondotaccent\", 0x1e66,\n \"Scaronsmall\", 0xf6fd,\n \"Scedilla\", 0x015e,\n \"Schwa\", 0x018f,\n \"Schwacyrillic\", 0x04d8,\n \"Schwadieresiscyrillic\", 0x04da,\n \"Scircle\", 0x24c8,\n \"Scircumflex\", 0x015c,\n \"Scommaaccent\", 0x0218,\n \"Sdotaccent\", 0x1e60,\n \"Sdotbelow\", 0x1e62,\n \"Sdotbelowdotaccent\", 0x1e68,\n \"Seharmenian\", 0x054d,\n \"Sevenroman\", 0x2166,\n \"Shaarmenian\", 0x0547,\n \"Shacyrillic\", 0x0428,\n \"Shchacyrillic\", 0x0429,\n \"Sheicoptic\", 0x03e2,\n \"Shhacyrillic\", 0x04ba,\n \"Shimacoptic\", 0x03ec,\n \"Sigma\", 0x03a3,\n \"Sixroman\", 0x2165,\n \"Smonospace\", 0xff33,\n \"Softsigncyrillic\", 0x042c,\n \"Ssmall\", 0xf773,\n \"Stigmagreek\", 0x03da,\n \"T\", 0x0054,\n \"Tau\", 0x03a4,\n \"Tbar\", 0x0166,\n \"Tcaron\", 0x0164,\n \"Tcedilla\", 0x0162,\n \"Tcircle\", 0x24c9,\n \"Tcircumflexbelow\", 0x1e70,\n \"Tcommaaccent\", 0x0162,\n \"Tdotaccent\", 0x1e6a,\n \"Tdotbelow\", 0x1e6c,\n \"Tecyrillic\", 0x0422,\n \"Tedescendercyrillic\", 0x04ac,\n \"Tenroman\", 0x2169,\n \"Tetsecyrillic\", 0x04b4,\n \"Theta\", 0x0398,\n \"Thook\", 0x01ac,\n \"Thorn\", 0x00de,\n \"Thornsmall\", 0xf7fe,\n \"Threeroman\", 0x2162,\n \"Tildesmall\", 0xf6fe,\n \"Tiwnarmenian\", 0x054f,\n \"Tlinebelow\", 0x1e6e,\n \"Tmonospace\", 0xff34,\n \"Toarmenian\", 0x0539,\n \"Tonefive\", 0x01bc,\n \"Tonesix\", 0x0184,\n \"Tonetwo\", 0x01a7,\n \"Tretroflexhook\", 0x01ae,\n \"Tsecyrillic\", 0x0426,\n \"Tshecyrillic\", 0x040b,\n \"Tsmall\", 0xf774,\n \"Twelveroman\", 0x216b,\n \"Tworoman\", 0x2161,\n \"U\", 0x0055,\n \"Uacute\", 0x00da,\n \"Uacutesmall\", 0xf7fa,\n \"Ubreve\", 0x016c,\n \"Ucaron\", 0x01d3,\n \"Ucircle\", 0x24ca,\n \"Ucircumflex\", 0x00db,\n \"Ucircumflexbelow\", 0x1e76,\n \"Ucircumflexsmall\", 0xf7fb,\n \"Ucyrillic\", 0x0423,\n \"Udblacute\", 0x0170,\n \"Udblgrave\", 0x0214,\n \"Udieresis\", 0x00dc,\n \"Udieresisacute\", 0x01d7,\n \"Udieresisbelow\", 0x1e72,\n \"Udieresiscaron\", 0x01d9,\n \"Udieresiscyrillic\", 0x04f0,\n \"Udieresisgrave\", 0x01db,\n \"Udieresismacron\", 0x01d5,\n \"Udieresissmall\", 0xf7fc,\n \"Udotbelow\", 0x1ee4,\n \"Ugrave\", 0x00d9,\n \"Ugravesmall\", 0xf7f9,\n \"Uhookabove\", 0x1ee6,\n \"Uhorn\", 0x01af,\n \"Uhornacute\", 0x1ee8,\n \"Uhorndotbelow\", 0x1ef0,\n \"Uhorngrave\", 0x1eea,\n \"Uhornhookabove\", 0x1eec,\n \"Uhorntilde\", 0x1eee,\n \"Uhungarumlaut\", 0x0170,\n \"Uhungarumlautcyrillic\", 0x04f2,\n \"Uinvertedbreve\", 0x0216,\n \"Ukcyrillic\", 0x0478,\n \"Umacron\", 0x016a,\n \"Umacroncyrillic\", 0x04ee,\n \"Umacrondieresis\", 0x1e7a,\n \"Umonospace\", 0xff35,\n \"Uogonek\", 0x0172,\n \"Upsilon\", 0x03a5,\n \"Upsilon1\", 0x03d2,\n \"Upsilonacutehooksymbolgreek\", 0x03d3,\n \"Upsilonafrican\", 0x01b1,\n \"Upsilondieresis\", 0x03ab,\n \"Upsilondieresishooksymbolgreek\", 0x03d4,\n \"Upsilonhooksymbol\", 0x03d2,\n \"Upsilontonos\", 0x038e,\n \"Uring\", 0x016e,\n \"Ushortcyrillic\", 0x040e,\n \"Usmall\", 0xf775,\n \"Ustraightcyrillic\", 0x04ae,\n \"Ustraightstrokecyrillic\", 0x04b0,\n \"Utilde\", 0x0168,\n \"Utildeacute\", 0x1e78,\n \"Utildebelow\", 0x1e74,\n \"V\", 0x0056,\n \"Vcircle\", 0x24cb,\n \"Vdotbelow\", 0x1e7e,\n \"Vecyrillic\", 0x0412,\n \"Vewarmenian\", 0x054e,\n \"Vhook\", 0x01b2,\n \"Vmonospace\", 0xff36,\n \"Voarmenian\", 0x0548,\n \"Vsmall\", 0xf776,\n \"Vtilde\", 0x1e7c,\n \"W\", 0x0057,\n \"Wacute\", 0x1e82,\n \"Wcircle\", 0x24cc,\n \"Wcircumflex\", 0x0174,\n \"Wdieresis\", 0x1e84,\n \"Wdotaccent\", 0x1e86,\n \"Wdotbelow\", 0x1e88,\n \"Wgrave\", 0x1e80,\n \"Wmonospace\", 0xff37,\n \"Wsmall\", 0xf777,\n \"X\", 0x0058,\n \"Xcircle\", 0x24cd,\n \"Xdieresis\", 0x1e8c,\n \"Xdotaccent\", 0x1e8a,\n \"Xeharmenian\", 0x053d,\n \"Xi\", 0x039e,\n \"Xmonospace\", 0xff38,\n \"Xsmall\", 0xf778,\n \"Y\", 0x0059,\n \"Yacute\", 0x00dd,\n \"Yacutesmall\", 0xf7fd,\n \"Yatcyrillic\", 0x0462,\n \"Ycircle\", 0x24ce,\n \"Ycircumflex\", 0x0176,\n \"Ydieresis\", 0x0178,\n \"Ydieresissmall\", 0xf7ff,\n \"Ydotaccent\", 0x1e8e,\n \"Ydotbelow\", 0x1ef4,\n \"Yericyrillic\", 0x042b,\n \"Yerudieresiscyrillic\", 0x04f8,\n \"Ygrave\", 0x1ef2,\n \"Yhook\", 0x01b3,\n \"Yhookabove\", 0x1ef6,\n \"Yiarmenian\", 0x0545,\n \"Yicyrillic\", 0x0407,\n \"Yiwnarmenian\", 0x0552,\n \"Ymonospace\", 0xff39,\n \"Ysmall\", 0xf779,\n \"Ytilde\", 0x1ef8,\n \"Yusbigcyrillic\", 0x046a,\n \"Yusbigiotifiedcyrillic\", 0x046c,\n \"Yuslittlecyrillic\", 0x0466,\n \"Yuslittleiotifiedcyrillic\", 0x0468,\n \"Z\", 0x005a,\n \"Zaarmenian\", 0x0536,\n \"Zacute\", 0x0179,\n \"Zcaron\", 0x017d,\n \"Zcaronsmall\", 0xf6ff,\n \"Zcircle\", 0x24cf,\n \"Zcircumflex\", 0x1e90,\n \"Zdot\", 0x017b,\n \"Zdotaccent\", 0x017b,\n \"Zdotbelow\", 0x1e92,\n \"Zecyrillic\", 0x0417,\n \"Zedescendercyrillic\", 0x0498,\n \"Zedieresiscyrillic\", 0x04de,\n \"Zeta\", 0x0396,\n \"Zhearmenian\", 0x053a,\n \"Zhebrevecyrillic\", 0x04c1,\n \"Zhecyrillic\", 0x0416,\n \"Zhedescendercyrillic\", 0x0496,\n \"Zhedieresiscyrillic\", 0x04dc,\n \"Zlinebelow\", 0x1e94,\n \"Zmonospace\", 0xff3a,\n \"Zsmall\", 0xf77a,\n \"Zstroke\", 0x01b5,\n \"a\", 0x0061,\n \"aabengali\", 0x0986,\n \"aacute\", 0x00e1,\n \"aadeva\", 0x0906,\n \"aagujarati\", 0x0a86,\n \"aagurmukhi\", 0x0a06,\n \"aamatragurmukhi\", 0x0a3e,\n \"aarusquare\", 0x3303,\n \"aavowelsignbengali\", 0x09be,\n \"aavowelsigndeva\", 0x093e,\n \"aavowelsigngujarati\", 0x0abe,\n \"abbreviationmarkarmenian\", 0x055f,\n \"abbreviationsigndeva\", 0x0970,\n \"abengali\", 0x0985,\n \"abopomofo\", 0x311a,\n \"abreve\", 0x0103,\n \"abreveacute\", 0x1eaf,\n \"abrevecyrillic\", 0x04d1,\n \"abrevedotbelow\", 0x1eb7,\n \"abrevegrave\", 0x1eb1,\n \"abrevehookabove\", 0x1eb3,\n \"abrevetilde\", 0x1eb5,\n \"acaron\", 0x01ce,\n \"acircle\", 0x24d0,\n \"acircumflex\", 0x00e2,\n \"acircumflexacute\", 0x1ea5,\n \"acircumflexdotbelow\", 0x1ead,\n \"acircumflexgrave\", 0x1ea7,\n \"acircumflexhookabove\", 0x1ea9,\n \"acircumflextilde\", 0x1eab,\n \"acute\", 0x00b4,\n \"acutebelowcmb\", 0x0317,\n \"acutecmb\", 0x0301,\n \"acutecomb\", 0x0301,\n \"acutedeva\", 0x0954,\n \"acutelowmod\", 0x02cf,\n \"acutetonecmb\", 0x0341,\n \"acyrillic\", 0x0430,\n \"adblgrave\", 0x0201,\n \"addakgurmukhi\", 0x0a71,\n \"adeva\", 0x0905,\n \"adieresis\", 0x00e4,\n \"adieresiscyrillic\", 0x04d3,\n \"adieresismacron\", 0x01df,\n \"adotbelow\", 0x1ea1,\n \"adotmacron\", 0x01e1,\n \"ae\", 0x00e6,\n \"aeacute\", 0x01fd,\n \"aekorean\", 0x3150,\n \"aemacron\", 0x01e3,\n \"afii00208\", 0x2015,\n \"afii08941\", 0x20a4,\n \"afii10017\", 0x0410,\n \"afii10018\", 0x0411,\n \"afii10019\", 0x0412,\n \"afii10020\", 0x0413,\n \"afii10021\", 0x0414,\n \"afii10022\", 0x0415,\n \"afii10023\", 0x0401,\n \"afii10024\", 0x0416,\n \"afii10025\", 0x0417,\n \"afii10026\", 0x0418,\n \"afii10027\", 0x0419,\n \"afii10028\", 0x041a,\n \"afii10029\", 0x041b,\n \"afii10030\", 0x041c,\n \"afii10031\", 0x041d,\n \"afii10032\", 0x041e,\n \"afii10033\", 0x041f,\n \"afii10034\", 0x0420,\n \"afii10035\", 0x0421,\n \"afii10036\", 0x0422,\n \"afii10037\", 0x0423,\n \"afii10038\", 0x0424,\n \"afii10039\", 0x0425,\n \"afii10040\", 0x0426,\n \"afii10041\", 0x0427,\n \"afii10042\", 0x0428,\n \"afii10043\", 0x0429,\n \"afii10044\", 0x042a,\n \"afii10045\", 0x042b,\n \"afii10046\", 0x042c,\n \"afii10047\", 0x042d,\n \"afii10048\", 0x042e,\n \"afii10049\", 0x042f,\n \"afii10050\", 0x0490,\n \"afii10051\", 0x0402,\n \"afii10052\", 0x0403,\n \"afii10053\", 0x0404,\n \"afii10054\", 0x0405,\n \"afii10055\", 0x0406,\n \"afii10056\", 0x0407,\n \"afii10057\", 0x0408,\n \"afii10058\", 0x0409,\n \"afii10059\", 0x040a,\n \"afii10060\", 0x040b,\n \"afii10061\", 0x040c,\n \"afii10062\", 0x040e,\n \"afii10063\", 0xf6c4,\n \"afii10064\", 0xf6c5,\n \"afii10065\", 0x0430,\n \"afii10066\", 0x0431,\n \"afii10067\", 0x0432,\n \"afii10068\", 0x0433,\n \"afii10069\", 0x0434,\n \"afii10070\", 0x0435,\n \"afii10071\", 0x0451,\n \"afii10072\", 0x0436,\n \"afii10073\", 0x0437,\n \"afii10074\", 0x0438,\n \"afii10075\", 0x0439,\n \"afii10076\", 0x043a,\n \"afii10077\", 0x043b,\n \"afii10078\", 0x043c,\n \"afii10079\", 0x043d,\n \"afii10080\", 0x043e,\n \"afii10081\", 0x043f,\n \"afii10082\", 0x0440,\n \"afii10083\", 0x0441,\n \"afii10084\", 0x0442,\n \"afii10085\", 0x0443,\n \"afii10086\", 0x0444,\n \"afii10087\", 0x0445,\n \"afii10088\", 0x0446,\n \"afii10089\", 0x0447,\n \"afii10090\", 0x0448,\n \"afii10091\", 0x0449,\n \"afii10092\", 0x044a,\n \"afii10093\", 0x044b,\n \"afii10094\", 0x044c,\n \"afii10095\", 0x044d,\n \"afii10096\", 0x044e,\n \"afii10097\", 0x044f,\n \"afii10098\", 0x0491,\n \"afii10099\", 0x0452,\n \"afii10100\", 0x0453,\n \"afii10101\", 0x0454,\n \"afii10102\", 0x0455,\n \"afii10103\", 0x0456,\n \"afii10104\", 0x0457,\n \"afii10105\", 0x0458,\n \"afii10106\", 0x0459,\n \"afii10107\", 0x045a,\n \"afii10108\", 0x045b,\n \"afii10109\", 0x045c,\n \"afii10110\", 0x045e,\n \"afii10145\", 0x040f,\n \"afii10146\", 0x0462,\n \"afii10147\", 0x0472,\n \"afii10148\", 0x0474,\n \"afii10192\", 0xf6c6,\n \"afii10193\", 0x045f,\n \"afii10194\", 0x0463,\n \"afii10195\", 0x0473,\n \"afii10196\", 0x0475,\n \"afii10831\", 0xf6c7,\n \"afii10832\", 0xf6c8,\n \"afii10846\", 0x04d9,\n \"afii299\", 0x200e,\n \"afii300\", 0x200f,\n \"afii301\", 0x200d,\n \"afii57381\", 0x066a,\n \"afii57388\", 0x060c,\n \"afii57392\", 0x0660,\n \"afii57393\", 0x0661,\n \"afii57394\", 0x0662,\n \"afii57395\", 0x0663,\n \"afii57396\", 0x0664,\n \"afii57397\", 0x0665,\n \"afii57398\", 0x0666,\n \"afii57399\", 0x0667,\n \"afii57400\", 0x0668,\n \"afii57401\", 0x0669,\n \"afii57403\", 0x061b,\n \"afii57407\", 0x061f,\n \"afii57409\", 0x0621,\n \"afii57410\", 0x0622,\n \"afii57411\", 0x0623,\n \"afii57412\", 0x0624,\n \"afii57413\", 0x0625,\n \"afii57414\", 0x0626,\n \"afii57415\", 0x0627,\n \"afii57416\", 0x0628,\n \"afii57417\", 0x0629,\n \"afii57418\", 0x062a,\n \"afii57419\", 0x062b,\n \"afii57420\", 0x062c,\n \"afii57421\", 0x062d,\n \"afii57422\", 0x062e,\n \"afii57423\", 0x062f,\n \"afii57424\", 0x0630,\n \"afii57425\", 0x0631,\n \"afii57426\", 0x0632,\n \"afii57427\", 0x0633,\n \"afii57428\", 0x0634,\n \"afii57429\", 0x0635,\n \"afii57430\", 0x0636,\n \"afii57431\", 0x0637,\n \"afii57432\", 0x0638,\n \"afii57433\", 0x0639,\n \"afii57434\", 0x063a,\n \"afii57440\", 0x0640,\n \"afii57441\", 0x0641,\n \"afii57442\", 0x0642,\n \"afii57443\", 0x0643,\n \"afii57444\", 0x0644,\n \"afii57445\", 0x0645,\n \"afii57446\", 0x0646,\n \"afii57448\", 0x0648,\n \"afii57449\", 0x0649,\n \"afii57450\", 0x064a,\n \"afii57451\", 0x064b,\n \"afii57452\", 0x064c,\n \"afii57453\", 0x064d,\n \"afii57454\", 0x064e,\n \"afii57455\", 0x064f,\n \"afii57456\", 0x0650,\n \"afii57457\", 0x0651,\n \"afii57458\", 0x0652,\n \"afii57470\", 0x0647,\n \"afii57505\", 0x06a4,\n \"afii57506\", 0x067e,\n \"afii57507\", 0x0686,\n \"afii57508\", 0x0698,\n \"afii57509\", 0x06af,\n \"afii57511\", 0x0679,\n \"afii57512\", 0x0688,\n \"afii57513\", 0x0691,\n \"afii57514\", 0x06ba,\n \"afii57519\", 0x06d2,\n \"afii57534\", 0x06d5,\n \"afii57636\", 0x20aa,\n \"afii57645\", 0x05be,\n \"afii57658\", 0x05c3,\n \"afii57664\", 0x05d0,\n \"afii57665\", 0x05d1,\n \"afii57666\", 0x05d2,\n \"afii57667\", 0x05d3,\n \"afii57668\", 0x05d4,\n \"afii57669\", 0x05d5,\n \"afii57670\", 0x05d6,\n \"afii57671\", 0x05d7,\n \"afii57672\", 0x05d8,\n \"afii57673\", 0x05d9,\n \"afii57674\", 0x05da,\n \"afii57675\", 0x05db,\n \"afii57676\", 0x05dc,\n \"afii57677\", 0x05dd,\n \"afii57678\", 0x05de,\n \"afii57679\", 0x05df,\n \"afii57680\", 0x05e0,\n \"afii57681\", 0x05e1,\n \"afii57682\", 0x05e2,\n \"afii57683\", 0x05e3,\n \"afii57684\", 0x05e4,\n \"afii57685\", 0x05e5,\n \"afii57686\", 0x05e6,\n \"afii57687\", 0x05e7,\n \"afii57688\", 0x05e8,\n \"afii57689\", 0x05e9,\n \"afii57690\", 0x05ea,\n \"afii57694\", 0xfb2a,\n \"afii57695\", 0xfb2b,\n \"afii57700\", 0xfb4b,\n \"afii57705\", 0xfb1f,\n \"afii57716\", 0x05f0,\n \"afii57717\", 0x05f1,\n \"afii57718\", 0x05f2,\n \"afii57723\", 0xfb35,\n \"afii57793\", 0x05b4,\n \"afii57794\", 0x05b5,\n \"afii57795\", 0x05b6,\n \"afii57796\", 0x05bb,\n \"afii57797\", 0x05b8,\n \"afii57798\", 0x05b7,\n \"afii57799\", 0x05b0,\n \"afii57800\", 0x05b2,\n \"afii57801\", 0x05b1,\n \"afii57802\", 0x05b3,\n \"afii57803\", 0x05c2,\n \"afii57804\", 0x05c1,\n \"afii57806\", 0x05b9,\n \"afii57807\", 0x05bc,\n \"afii57839\", 0x05bd,\n \"afii57841\", 0x05bf,\n \"afii57842\", 0x05c0,\n \"afii57929\", 0x02bc,\n \"afii61248\", 0x2105,\n \"afii61289\", 0x2113,\n \"afii61352\", 0x2116,\n \"afii61573\", 0x202c,\n \"afii61574\", 0x202d,\n \"afii61575\", 0x202e,\n \"afii61664\", 0x200c,\n \"afii63167\", 0x066d,\n \"afii64937\", 0x02bd,\n \"agrave\", 0x00e0,\n \"agujarati\", 0x0a85,\n \"agurmukhi\", 0x0a05,\n \"ahiragana\", 0x3042,\n \"ahookabove\", 0x1ea3,\n \"aibengali\", 0x0990,\n \"aibopomofo\", 0x311e,\n \"aideva\", 0x0910,\n \"aiecyrillic\", 0x04d5,\n \"aigujarati\", 0x0a90,\n \"aigurmukhi\", 0x0a10,\n \"aimatragurmukhi\", 0x0a48,\n \"ainarabic\", 0x0639,\n \"ainfinalarabic\", 0xfeca,\n \"aininitialarabic\", 0xfecb,\n \"ainmedialarabic\", 0xfecc,\n \"ainvertedbreve\", 0x0203,\n \"aivowelsignbengali\", 0x09c8,\n \"aivowelsigndeva\", 0x0948,\n \"aivowelsigngujarati\", 0x0ac8,\n \"akatakana\", 0x30a2,\n \"akatakanahalfwidth\", 0xff71,\n \"akorean\", 0x314f,\n \"alef\", 0x05d0,\n \"alefarabic\", 0x0627,\n \"alefdageshhebrew\", 0xfb30,\n \"aleffinalarabic\", 0xfe8e,\n \"alefhamzaabovearabic\", 0x0623,\n \"alefhamzaabovefinalarabic\", 0xfe84,\n \"alefhamzabelowarabic\", 0x0625,\n \"alefhamzabelowfinalarabic\", 0xfe88,\n \"alefhebrew\", 0x05d0,\n \"aleflamedhebrew\", 0xfb4f,\n \"alefmaddaabovearabic\", 0x0622,\n \"alefmaddaabovefinalarabic\", 0xfe82,\n \"alefmaksuraarabic\", 0x0649,\n \"alefmaksurafinalarabic\", 0xfef0,\n \"alefmaksurainitialarabic\", 0xfef3,\n \"alefmaksuramedialarabic\", 0xfef4,\n \"alefpatahhebrew\", 0xfb2e,\n \"alefqamatshebrew\", 0xfb2f,\n \"aleph\", 0x2135,\n \"allequal\", 0x224c,\n \"alpha\", 0x03b1,\n \"alphatonos\", 0x03ac,\n \"amacron\", 0x0101,\n \"amonospace\", 0xff41,\n \"ampersand\", 0x0026,\n \"ampersandmonospace\", 0xff06,\n \"ampersandsmall\", 0xf726,\n \"amsquare\", 0x33c2,\n \"anbopomofo\", 0x3122,\n \"angbopomofo\", 0x3124,\n \"angbracketleft\", 0x3008, // Glyph is missing from Adobe's original list.\n \"angbracketright\", 0x3009, // Glyph is missing from Adobe's original list.\n \"angkhankhuthai\", 0x0e5a,\n \"angle\", 0x2220,\n \"anglebracketleft\", 0x3008,\n \"anglebracketleftvertical\", 0xfe3f,\n \"anglebracketright\", 0x3009,\n \"anglebracketrightvertical\", 0xfe40,\n \"angleleft\", 0x2329,\n \"angleright\", 0x232a,\n \"angstrom\", 0x212b,\n \"anoteleia\", 0x0387,\n \"anudattadeva\", 0x0952,\n \"anusvarabengali\", 0x0982,\n \"anusvaradeva\", 0x0902,\n \"anusvaragujarati\", 0x0a82,\n \"aogonek\", 0x0105,\n \"apaatosquare\", 0x3300,\n \"aparen\", 0x249c,\n \"apostrophearmenian\", 0x055a,\n \"apostrophemod\", 0x02bc,\n \"apple\", 0xf8ff,\n \"approaches\", 0x2250,\n \"approxequal\", 0x2248,\n \"approxequalorimage\", 0x2252,\n \"approximatelyequal\", 0x2245,\n \"araeaekorean\", 0x318e,\n \"araeakorean\", 0x318d,\n \"arc\", 0x2312,\n \"arighthalfring\", 0x1e9a,\n \"aring\", 0x00e5,\n \"aringacute\", 0x01fb,\n \"aringbelow\", 0x1e01,\n \"arrowboth\", 0x2194,\n \"arrowdashdown\", 0x21e3,\n \"arrowdashleft\", 0x21e0,\n \"arrowdashright\", 0x21e2,\n \"arrowdashup\", 0x21e1,\n \"arrowdblboth\", 0x21d4,\n \"arrowdbldown\", 0x21d3,\n \"arrowdblleft\", 0x21d0,\n \"arrowdblright\", 0x21d2,\n \"arrowdblup\", 0x21d1,\n \"arrowdown\", 0x2193,\n \"arrowdownleft\", 0x2199,\n \"arrowdownright\", 0x2198,\n \"arrowdownwhite\", 0x21e9,\n \"arrowheaddownmod\", 0x02c5,\n \"arrowheadleftmod\", 0x02c2,\n \"arrowheadrightmod\", 0x02c3,\n \"arrowheadupmod\", 0x02c4,\n \"arrowhorizex\", 0xf8e7,\n \"arrowleft\", 0x2190,\n \"arrowleftdbl\", 0x21d0,\n \"arrowleftdblstroke\", 0x21cd,\n \"arrowleftoverright\", 0x21c6,\n \"arrowleftwhite\", 0x21e6,\n \"arrowright\", 0x2192,\n \"arrowrightdblstroke\", 0x21cf,\n \"arrowrightheavy\", 0x279e,\n \"arrowrightoverleft\", 0x21c4,\n \"arrowrightwhite\", 0x21e8,\n \"arrowtableft\", 0x21e4,\n \"arrowtabright\", 0x21e5,\n \"arrowup\", 0x2191,\n \"arrowupdn\", 0x2195,\n \"arrowupdnbse\", 0x21a8,\n \"arrowupdownbase\", 0x21a8,\n \"arrowupleft\", 0x2196,\n \"arrowupleftofdown\", 0x21c5,\n \"arrowupright\", 0x2197,\n \"arrowupwhite\", 0x21e7,\n \"arrowvertex\", 0xf8e6,\n \"asciicircum\", 0x005e,\n \"asciicircummonospace\", 0xff3e,\n \"asciitilde\", 0x007e,\n \"asciitildemonospace\", 0xff5e,\n \"ascript\", 0x0251,\n \"ascriptturned\", 0x0252,\n \"asmallhiragana\", 0x3041,\n \"asmallkatakana\", 0x30a1,\n \"asmallkatakanahalfwidth\", 0xff67,\n \"asterisk\", 0x002a,\n \"asteriskaltonearabic\", 0x066d,\n \"asteriskarabic\", 0x066d,\n \"asteriskmath\", 0x2217,\n \"asteriskmonospace\", 0xff0a,\n \"asterisksmall\", 0xfe61,\n \"asterism\", 0x2042,\n \"asuperior\", 0xf6e9,\n \"asymptoticallyequal\", 0x2243,\n \"at\", 0x0040,\n \"atilde\", 0x00e3,\n \"atmonospace\", 0xff20,\n \"atsmall\", 0xfe6b,\n \"aturned\", 0x0250,\n \"aubengali\", 0x0994,\n \"aubopomofo\", 0x3120,\n \"audeva\", 0x0914,\n \"augujarati\", 0x0a94,\n \"augurmukhi\", 0x0a14,\n \"aulengthmarkbengali\", 0x09d7,\n \"aumatragurmukhi\", 0x0a4c,\n \"auvowelsignbengali\", 0x09cc,\n \"auvowelsigndeva\", 0x094c,\n \"auvowelsigngujarati\", 0x0acc,\n \"avagrahadeva\", 0x093d,\n \"aybarmenian\", 0x0561,\n \"ayin\", 0x05e2,\n \"ayinaltonehebrew\", 0xfb20,\n \"ayinhebrew\", 0x05e2,\n \"b\", 0x0062,\n \"babengali\", 0x09ac,\n \"backslash\", 0x005c,\n \"backslashmonospace\", 0xff3c,\n \"badeva\", 0x092c,\n \"bagujarati\", 0x0aac,\n \"bagurmukhi\", 0x0a2c,\n \"bahiragana\", 0x3070,\n \"bahtthai\", 0x0e3f,\n \"bakatakana\", 0x30d0,\n \"bar\", 0x007c,\n \"barmonospace\", 0xff5c,\n \"bbopomofo\", 0x3105,\n \"bcircle\", 0x24d1,\n \"bdotaccent\", 0x1e03,\n \"bdotbelow\", 0x1e05,\n \"beamedsixteenthnotes\", 0x266c,\n \"because\", 0x2235,\n \"becyrillic\", 0x0431,\n \"beharabic\", 0x0628,\n \"behfinalarabic\", 0xfe90,\n \"behinitialarabic\", 0xfe91,\n \"behiragana\", 0x3079,\n \"behmedialarabic\", 0xfe92,\n \"behmeeminitialarabic\", 0xfc9f,\n \"behmeemisolatedarabic\", 0xfc08,\n \"behnoonfinalarabic\", 0xfc6d,\n \"bekatakana\", 0x30d9,\n \"benarmenian\", 0x0562,\n \"bet\", 0x05d1,\n \"beta\", 0x03b2,\n \"betasymbolgreek\", 0x03d0,\n \"betdagesh\", 0xfb31,\n \"betdageshhebrew\", 0xfb31,\n \"bethebrew\", 0x05d1,\n \"betrafehebrew\", 0xfb4c,\n \"bhabengali\", 0x09ad,\n \"bhadeva\", 0x092d,\n \"bhagujarati\", 0x0aad,\n \"bhagurmukhi\", 0x0a2d,\n \"bhook\", 0x0253,\n \"bihiragana\", 0x3073,\n \"bikatakana\", 0x30d3,\n \"bilabialclick\", 0x0298,\n \"bindigurmukhi\", 0x0a02,\n \"birusquare\", 0x3331,\n \"blackcircle\", 0x25cf,\n \"blackdiamond\", 0x25c6,\n \"blackdownpointingtriangle\", 0x25bc,\n \"blackleftpointingpointer\", 0x25c4,\n \"blackleftpointingtriangle\", 0x25c0,\n \"blacklenticularbracketleft\", 0x3010,\n \"blacklenticularbracketleftvertical\", 0xfe3b,\n \"blacklenticularbracketright\", 0x3011,\n \"blacklenticularbracketrightvertical\", 0xfe3c,\n \"blacklowerlefttriangle\", 0x25e3,\n \"blacklowerrighttriangle\", 0x25e2,\n \"blackrectangle\", 0x25ac,\n \"blackrightpointingpointer\", 0x25ba,\n \"blackrightpointingtriangle\", 0x25b6,\n \"blacksmallsquare\", 0x25aa,\n \"blacksmilingface\", 0x263b,\n \"blacksquare\", 0x25a0,\n \"blackstar\", 0x2605,\n \"blackupperlefttriangle\", 0x25e4,\n \"blackupperrighttriangle\", 0x25e5,\n \"blackuppointingsmalltriangle\", 0x25b4,\n \"blackuppointingtriangle\", 0x25b2,\n \"blank\", 0x2423,\n \"blinebelow\", 0x1e07,\n \"block\", 0x2588,\n \"bmonospace\", 0xff42,\n \"bobaimaithai\", 0x0e1a,\n \"bohiragana\", 0x307c,\n \"bokatakana\", 0x30dc,\n \"bparen\", 0x249d,\n \"bqsquare\", 0x33c3,\n \"braceex\", 0xf8f4,\n \"braceleft\", 0x007b,\n \"braceleftbt\", 0xf8f3,\n \"braceleftmid\", 0xf8f2,\n \"braceleftmonospace\", 0xff5b,\n \"braceleftsmall\", 0xfe5b,\n \"bracelefttp\", 0xf8f1,\n \"braceleftvertical\", 0xfe37,\n \"braceright\", 0x007d,\n \"bracerightbt\", 0xf8fe,\n \"bracerightmid\", 0xf8fd,\n \"bracerightmonospace\", 0xff5d,\n \"bracerightsmall\", 0xfe5c,\n \"bracerighttp\", 0xf8fc,\n \"bracerightvertical\", 0xfe38,\n \"bracketleft\", 0x005b,\n \"bracketleftbt\", 0xf8f0,\n \"bracketleftex\", 0xf8ef,\n \"bracketleftmonospace\", 0xff3b,\n \"bracketlefttp\", 0xf8ee,\n \"bracketright\", 0x005d,\n \"bracketrightbt\", 0xf8fb,\n \"bracketrightex\", 0xf8fa,\n \"bracketrightmonospace\", 0xff3d,\n \"bracketrighttp\", 0xf8f9,\n \"breve\", 0x02d8,\n \"brevebelowcmb\", 0x032e,\n \"brevecmb\", 0x0306,\n \"breveinvertedbelowcmb\", 0x032f,\n \"breveinvertedcmb\", 0x0311,\n \"breveinverteddoublecmb\", 0x0361,\n \"bridgebelowcmb\", 0x032a,\n \"bridgeinvertedbelowcmb\", 0x033a,\n \"brokenbar\", 0x00a6,\n \"bstroke\", 0x0180,\n \"bsuperior\", 0xf6ea,\n \"btopbar\", 0x0183,\n \"buhiragana\", 0x3076,\n \"bukatakana\", 0x30d6,\n \"bullet\", 0x2022,\n \"bulletinverse\", 0x25d8,\n \"bulletoperator\", 0x2219,\n \"bullseye\", 0x25ce,\n \"c\", 0x0063,\n \"caarmenian\", 0x056e,\n \"cabengali\", 0x099a,\n \"cacute\", 0x0107,\n \"cadeva\", 0x091a,\n \"cagujarati\", 0x0a9a,\n \"cagurmukhi\", 0x0a1a,\n \"calsquare\", 0x3388,\n \"candrabindubengali\", 0x0981,\n \"candrabinducmb\", 0x0310,\n \"candrabindudeva\", 0x0901,\n \"candrabindugujarati\", 0x0a81,\n \"capslock\", 0x21ea,\n \"careof\", 0x2105,\n \"caron\", 0x02c7,\n \"caronbelowcmb\", 0x032c,\n \"caroncmb\", 0x030c,\n \"carriagereturn\", 0x21b5,\n \"cbopomofo\", 0x3118,\n \"ccaron\", 0x010d,\n \"ccedilla\", 0x00e7,\n \"ccedillaacute\", 0x1e09,\n \"ccircle\", 0x24d2,\n \"ccircumflex\", 0x0109,\n \"ccurl\", 0x0255,\n \"cdot\", 0x010b,\n \"cdotaccent\", 0x010b,\n \"cdsquare\", 0x33c5,\n \"cedilla\", 0x00b8,\n \"cedillacmb\", 0x0327,\n \"cent\", 0x00a2,\n \"centigrade\", 0x2103,\n \"centinferior\", 0xf6df,\n \"centmonospace\", 0xffe0,\n \"centoldstyle\", 0xf7a2,\n \"centsuperior\", 0xf6e0,\n \"chaarmenian\", 0x0579,\n \"chabengali\", 0x099b,\n \"chadeva\", 0x091b,\n \"chagujarati\", 0x0a9b,\n \"chagurmukhi\", 0x0a1b,\n \"chbopomofo\", 0x3114,\n \"cheabkhasiancyrillic\", 0x04bd,\n \"checkmark\", 0x2713,\n \"checyrillic\", 0x0447,\n \"chedescenderabkhasiancyrillic\", 0x04bf,\n \"chedescendercyrillic\", 0x04b7,\n \"chedieresiscyrillic\", 0x04f5,\n \"cheharmenian\", 0x0573,\n \"chekhakassiancyrillic\", 0x04cc,\n \"cheverticalstrokecyrillic\", 0x04b9,\n \"chi\", 0x03c7,\n \"chieuchacirclekorean\", 0x3277,\n \"chieuchaparenkorean\", 0x3217,\n \"chieuchcirclekorean\", 0x3269,\n \"chieuchkorean\", 0x314a,\n \"chieuchparenkorean\", 0x3209,\n \"chochangthai\", 0x0e0a,\n \"chochanthai\", 0x0e08,\n \"chochingthai\", 0x0e09,\n \"chochoethai\", 0x0e0c,\n \"chook\", 0x0188,\n \"cieucacirclekorean\", 0x3276,\n \"cieucaparenkorean\", 0x3216,\n \"cieuccirclekorean\", 0x3268,\n \"cieuckorean\", 0x3148,\n \"cieucparenkorean\", 0x3208,\n \"cieucuparenkorean\", 0x321c,\n \"circle\", 0x25cb,\n \"circlecopyrt\", 0x00a9, // Glyph is missing from Adobe's original list.\n \"circlemultiply\", 0x2297,\n \"circleot\", 0x2299,\n \"circleplus\", 0x2295,\n \"circlepostalmark\", 0x3036,\n \"circlewithlefthalfblack\", 0x25d0,\n \"circlewithrighthalfblack\", 0x25d1,\n \"circumflex\", 0x02c6,\n \"circumflexbelowcmb\", 0x032d,\n \"circumflexcmb\", 0x0302,\n \"clear\", 0x2327,\n \"clickalveolar\", 0x01c2,\n \"clickdental\", 0x01c0,\n \"clicklateral\", 0x01c1,\n \"clickretroflex\", 0x01c3,\n \"club\", 0x2663,\n \"clubsuitblack\", 0x2663,\n \"clubsuitwhite\", 0x2667,\n \"cmcubedsquare\", 0x33a4,\n \"cmonospace\", 0xff43,\n \"cmsquaredsquare\", 0x33a0,\n \"coarmenian\", 0x0581,\n \"colon\", 0x003a,\n \"colonmonetary\", 0x20a1,\n \"colonmonospace\", 0xff1a,\n \"colonsign\", 0x20a1,\n \"colonsmall\", 0xfe55,\n \"colontriangularhalfmod\", 0x02d1,\n \"colontriangularmod\", 0x02d0,\n \"comma\", 0x002c,\n \"commaabovecmb\", 0x0313,\n \"commaaboverightcmb\", 0x0315,\n \"commaaccent\", 0xf6c3,\n \"commaarabic\", 0x060c,\n \"commaarmenian\", 0x055d,\n \"commainferior\", 0xf6e1,\n \"commamonospace\", 0xff0c,\n \"commareversedabovecmb\", 0x0314,\n \"commareversedmod\", 0x02bd,\n \"commasmall\", 0xfe50,\n \"commasuperior\", 0xf6e2,\n \"commaturnedabovecmb\", 0x0312,\n \"commaturnedmod\", 0x02bb,\n \"compass\", 0x263c,\n \"congruent\", 0x2245,\n \"contourintegral\", 0x222e,\n \"control\", 0x2303,\n \"controlACK\", 0x0006,\n \"controlBEL\", 0x0007,\n \"controlBS\", 0x0008,\n \"controlCAN\", 0x0018,\n \"controlCR\", 0x000d,\n \"controlDC1\", 0x0011,\n \"controlDC2\", 0x0012,\n \"controlDC3\", 0x0013,\n \"controlDC4\", 0x0014,\n \"controlDEL\", 0x007f,\n \"controlDLE\", 0x0010,\n \"controlEM\", 0x0019,\n \"controlENQ\", 0x0005,\n \"controlEOT\", 0x0004,\n \"controlESC\", 0x001b,\n \"controlETB\", 0x0017,\n \"controlETX\", 0x0003,\n \"controlFF\", 0x000c,\n \"controlFS\", 0x001c,\n \"controlGS\", 0x001d,\n \"controlHT\", 0x0009,\n \"controlLF\", 0x000a,\n \"controlNAK\", 0x0015,\n \"controlNULL\", 0x0000, // Glyph is missing from Adobe's original list.\n \"controlRS\", 0x001e,\n \"controlSI\", 0x000f,\n \"controlSO\", 0x000e,\n \"controlSOT\", 0x0002,\n \"controlSTX\", 0x0001,\n \"controlSUB\", 0x001a,\n \"controlSYN\", 0x0016,\n \"controlUS\", 0x001f,\n \"controlVT\", 0x000b,\n \"copyright\", 0x00a9,\n \"copyrightsans\", 0xf8e9,\n \"copyrightserif\", 0xf6d9,\n \"cornerbracketleft\", 0x300c,\n \"cornerbracketlefthalfwidth\", 0xff62,\n \"cornerbracketleftvertical\", 0xfe41,\n \"cornerbracketright\", 0x300d,\n \"cornerbracketrighthalfwidth\", 0xff63,\n \"cornerbracketrightvertical\", 0xfe42,\n \"corporationsquare\", 0x337f,\n \"cosquare\", 0x33c7,\n \"coverkgsquare\", 0x33c6,\n \"cparen\", 0x249e,\n \"cruzeiro\", 0x20a2,\n \"cstretched\", 0x0297,\n \"curlyand\", 0x22cf,\n \"curlyor\", 0x22ce,\n \"currency\", 0x00a4,\n \"cyrBreve\", 0xf6d1,\n \"cyrFlex\", 0xf6d2,\n \"cyrbreve\", 0xf6d4,\n \"cyrflex\", 0xf6d5,\n \"d\", 0x0064,\n \"daarmenian\", 0x0564,\n \"dabengali\", 0x09a6,\n \"dadarabic\", 0x0636,\n \"dadeva\", 0x0926,\n \"dadfinalarabic\", 0xfebe,\n \"dadinitialarabic\", 0xfebf,\n \"dadmedialarabic\", 0xfec0,\n \"dagesh\", 0x05bc,\n \"dageshhebrew\", 0x05bc,\n \"dagger\", 0x2020,\n \"daggerdbl\", 0x2021,\n \"dagujarati\", 0x0aa6,\n \"dagurmukhi\", 0x0a26,\n \"dahiragana\", 0x3060,\n \"dakatakana\", 0x30c0,\n \"dalarabic\", 0x062f,\n \"dalet\", 0x05d3,\n \"daletdagesh\", 0xfb33,\n \"daletdageshhebrew\", 0xfb33,\n \"dalethebrew\", 0x05d3,\n \"dalfinalarabic\", 0xfeaa,\n \"dammaarabic\", 0x064f,\n \"dammalowarabic\", 0x064f,\n \"dammatanaltonearabic\", 0x064c,\n \"dammatanarabic\", 0x064c,\n \"danda\", 0x0964,\n \"dargahebrew\", 0x05a7,\n \"dargalefthebrew\", 0x05a7,\n \"dasiapneumatacyrilliccmb\", 0x0485,\n \"dblGrave\", 0xf6d3,\n \"dblanglebracketleft\", 0x300a,\n \"dblanglebracketleftvertical\", 0xfe3d,\n \"dblanglebracketright\", 0x300b,\n \"dblanglebracketrightvertical\", 0xfe3e,\n \"dblarchinvertedbelowcmb\", 0x032b,\n \"dblarrowleft\", 0x21d4,\n \"dblarrowright\", 0x21d2,\n \"dbldanda\", 0x0965,\n \"dblgrave\", 0xf6d6,\n \"dblgravecmb\", 0x030f,\n \"dblintegral\", 0x222c,\n \"dbllowline\", 0x2017,\n \"dbllowlinecmb\", 0x0333,\n \"dbloverlinecmb\", 0x033f,\n \"dblprimemod\", 0x02ba,\n \"dblverticalbar\", 0x2016,\n \"dblverticallineabovecmb\", 0x030e,\n \"dbopomofo\", 0x3109,\n \"dbsquare\", 0x33c8,\n \"dcaron\", 0x010f,\n \"dcedilla\", 0x1e11,\n \"dcircle\", 0x24d3,\n \"dcircumflexbelow\", 0x1e13,\n \"dcroat\", 0x0111,\n \"ddabengali\", 0x09a1,\n \"ddadeva\", 0x0921,\n \"ddagujarati\", 0x0aa1,\n \"ddagurmukhi\", 0x0a21,\n \"ddalarabic\", 0x0688,\n \"ddalfinalarabic\", 0xfb89,\n \"dddhadeva\", 0x095c,\n \"ddhabengali\", 0x09a2,\n \"ddhadeva\", 0x0922,\n \"ddhagujarati\", 0x0aa2,\n \"ddhagurmukhi\", 0x0a22,\n \"ddotaccent\", 0x1e0b,\n \"ddotbelow\", 0x1e0d,\n \"decimalseparatorarabic\", 0x066b,\n \"decimalseparatorpersian\", 0x066b,\n \"decyrillic\", 0x0434,\n \"degree\", 0x00b0,\n \"dehihebrew\", 0x05ad,\n \"dehiragana\", 0x3067,\n \"deicoptic\", 0x03ef,\n \"dekatakana\", 0x30c7,\n \"deleteleft\", 0x232b,\n \"deleteright\", 0x2326,\n \"delta\", 0x03b4,\n \"deltaturned\", 0x018d,\n \"denominatorminusonenumeratorbengali\", 0x09f8,\n \"dezh\", 0x02a4,\n \"dhabengali\", 0x09a7,\n \"dhadeva\", 0x0927,\n \"dhagujarati\", 0x0aa7,\n \"dhagurmukhi\", 0x0a27,\n \"dhook\", 0x0257,\n \"dialytikatonos\", 0x0385,\n \"dialytikatonoscmb\", 0x0344,\n \"diamond\", 0x2666,\n \"diamondsuitwhite\", 0x2662,\n \"dieresis\", 0x00a8,\n \"dieresisacute\", 0xf6d7,\n \"dieresisbelowcmb\", 0x0324,\n \"dieresiscmb\", 0x0308,\n \"dieresisgrave\", 0xf6d8,\n \"dieresistonos\", 0x0385,\n \"dihiragana\", 0x3062,\n \"dikatakana\", 0x30c2,\n \"dittomark\", 0x3003,\n \"divide\", 0x00f7,\n \"divides\", 0x2223,\n \"divisionslash\", 0x2215,\n \"djecyrillic\", 0x0452,\n \"dkshade\", 0x2593,\n \"dlinebelow\", 0x1e0f,\n \"dlsquare\", 0x3397,\n \"dmacron\", 0x0111,\n \"dmonospace\", 0xff44,\n \"dnblock\", 0x2584,\n \"dochadathai\", 0x0e0e,\n \"dodekthai\", 0x0e14,\n \"dohiragana\", 0x3069,\n \"dokatakana\", 0x30c9,\n \"dollar\", 0x0024,\n \"dollarinferior\", 0xf6e3,\n \"dollarmonospace\", 0xff04,\n \"dollaroldstyle\", 0xf724,\n \"dollarsmall\", 0xfe69,\n \"dollarsuperior\", 0xf6e4,\n \"dong\", 0x20ab,\n \"dorusquare\", 0x3326,\n \"dotaccent\", 0x02d9,\n \"dotaccentcmb\", 0x0307,\n \"dotbelowcmb\", 0x0323,\n \"dotbelowcomb\", 0x0323,\n \"dotkatakana\", 0x30fb,\n \"dotlessi\", 0x0131,\n \"dotlessj\", 0xf6be,\n \"dotlessjstrokehook\", 0x0284,\n \"dotmath\", 0x22c5,\n \"dottedcircle\", 0x25cc,\n \"doubleyodpatah\", 0xfb1f,\n \"doubleyodpatahhebrew\", 0xfb1f,\n \"downtackbelowcmb\", 0x031e,\n \"downtackmod\", 0x02d5,\n \"dparen\", 0x249f,\n \"dsuperior\", 0xf6eb,\n \"dtail\", 0x0256,\n \"dtopbar\", 0x018c,\n \"duhiragana\", 0x3065,\n \"dukatakana\", 0x30c5,\n \"dz\", 0x01f3,\n \"dzaltone\", 0x02a3,\n \"dzcaron\", 0x01c6,\n \"dzcurl\", 0x02a5,\n \"dzeabkhasiancyrillic\", 0x04e1,\n \"dzecyrillic\", 0x0455,\n \"dzhecyrillic\", 0x045f,\n \"e\", 0x0065,\n \"eacute\", 0x00e9,\n \"earth\", 0x2641,\n \"ebengali\", 0x098f,\n \"ebopomofo\", 0x311c,\n \"ebreve\", 0x0115,\n \"ecandradeva\", 0x090d,\n \"ecandragujarati\", 0x0a8d,\n \"ecandravowelsigndeva\", 0x0945,\n \"ecandravowelsigngujarati\", 0x0ac5,\n \"ecaron\", 0x011b,\n \"ecedillabreve\", 0x1e1d,\n \"echarmenian\", 0x0565,\n \"echyiwnarmenian\", 0x0587,\n \"ecircle\", 0x24d4,\n \"ecircumflex\", 0x00ea,\n \"ecircumflexacute\", 0x1ebf,\n \"ecircumflexbelow\", 0x1e19,\n \"ecircumflexdotbelow\", 0x1ec7,\n \"ecircumflexgrave\", 0x1ec1,\n \"ecircumflexhookabove\", 0x1ec3,\n \"ecircumflextilde\", 0x1ec5,\n \"ecyrillic\", 0x0454,\n \"edblgrave\", 0x0205,\n \"edeva\", 0x090f,\n \"edieresis\", 0x00eb,\n \"edot\", 0x0117,\n \"edotaccent\", 0x0117,\n \"edotbelow\", 0x1eb9,\n \"eegurmukhi\", 0x0a0f,\n \"eematragurmukhi\", 0x0a47,\n \"efcyrillic\", 0x0444,\n \"egrave\", 0x00e8,\n \"egujarati\", 0x0a8f,\n \"eharmenian\", 0x0567,\n \"ehbopomofo\", 0x311d,\n \"ehiragana\", 0x3048,\n \"ehookabove\", 0x1ebb,\n \"eibopomofo\", 0x311f,\n \"eight\", 0x0038,\n \"eightarabic\", 0x0668,\n \"eightbengali\", 0x09ee,\n \"eightcircle\", 0x2467,\n \"eightcircleinversesansserif\", 0x2791,\n \"eightdeva\", 0x096e,\n \"eighteencircle\", 0x2471,\n \"eighteenparen\", 0x2485,\n \"eighteenperiod\", 0x2499,\n \"eightgujarati\", 0x0aee,\n \"eightgurmukhi\", 0x0a6e,\n \"eighthackarabic\", 0x0668,\n \"eighthangzhou\", 0x3028,\n \"eighthnotebeamed\", 0x266b,\n \"eightideographicparen\", 0x3227,\n \"eightinferior\", 0x2088,\n \"eightmonospace\", 0xff18,\n \"eightoldstyle\", 0xf738,\n \"eightparen\", 0x247b,\n \"eightperiod\", 0x248f,\n \"eightpersian\", 0x06f8,\n \"eightroman\", 0x2177,\n \"eightsuperior\", 0x2078,\n \"eightthai\", 0x0e58,\n \"einvertedbreve\", 0x0207,\n \"eiotifiedcyrillic\", 0x0465,\n \"ekatakana\", 0x30a8,\n \"ekatakanahalfwidth\", 0xff74,\n \"ekonkargurmukhi\", 0x0a74,\n \"ekorean\", 0x3154,\n \"elcyrillic\", 0x043b,\n \"element\", 0x2208,\n \"elevencircle\", 0x246a,\n \"elevenparen\", 0x247e,\n \"elevenperiod\", 0x2492,\n \"elevenroman\", 0x217a,\n \"ellipsis\", 0x2026,\n \"ellipsisvertical\", 0x22ee,\n \"emacron\", 0x0113,\n \"emacronacute\", 0x1e17,\n \"emacrongrave\", 0x1e15,\n \"emcyrillic\", 0x043c,\n \"emdash\", 0x2014,\n \"emdashvertical\", 0xfe31,\n \"emonospace\", 0xff45,\n \"emphasismarkarmenian\", 0x055b,\n \"emptyset\", 0x2205,\n \"enbopomofo\", 0x3123,\n \"encyrillic\", 0x043d,\n \"endash\", 0x2013,\n \"endashvertical\", 0xfe32,\n \"endescendercyrillic\", 0x04a3,\n \"eng\", 0x014b,\n \"engbopomofo\", 0x3125,\n \"enghecyrillic\", 0x04a5,\n \"enhookcyrillic\", 0x04c8,\n \"enspace\", 0x2002,\n \"eogonek\", 0x0119,\n \"eokorean\", 0x3153,\n \"eopen\", 0x025b,\n \"eopenclosed\", 0x029a,\n \"eopenreversed\", 0x025c,\n \"eopenreversedclosed\", 0x025e,\n \"eopenreversedhook\", 0x025d,\n \"eparen\", 0x24a0,\n \"epsilon\", 0x03b5,\n \"epsilontonos\", 0x03ad,\n \"equal\", 0x003d,\n \"equalmonospace\", 0xff1d,\n \"equalsmall\", 0xfe66,\n \"equalsuperior\", 0x207c,\n \"equivalence\", 0x2261,\n \"erbopomofo\", 0x3126,\n \"ercyrillic\", 0x0440,\n \"ereversed\", 0x0258,\n \"ereversedcyrillic\", 0x044d,\n \"escyrillic\", 0x0441,\n \"esdescendercyrillic\", 0x04ab,\n \"esh\", 0x0283,\n \"eshcurl\", 0x0286,\n \"eshortdeva\", 0x090e,\n \"eshortvowelsigndeva\", 0x0946,\n \"eshreversedloop\", 0x01aa,\n \"eshsquatreversed\", 0x0285,\n \"esmallhiragana\", 0x3047,\n \"esmallkatakana\", 0x30a7,\n \"esmallkatakanahalfwidth\", 0xff6a,\n \"estimated\", 0x212e,\n \"esuperior\", 0xf6ec,\n \"eta\", 0x03b7,\n \"etarmenian\", 0x0568,\n \"etatonos\", 0x03ae,\n \"eth\", 0x00f0,\n \"etilde\", 0x1ebd,\n \"etildebelow\", 0x1e1b,\n \"etnahtafoukhhebrew\", 0x0591,\n \"etnahtafoukhlefthebrew\", 0x0591,\n \"etnahtahebrew\", 0x0591,\n \"etnahtalefthebrew\", 0x0591,\n \"eturned\", 0x01dd,\n \"eukorean\", 0x3161,\n \"euro\", 0x20ac,\n \"evowelsignbengali\", 0x09c7,\n \"evowelsigndeva\", 0x0947,\n \"evowelsigngujarati\", 0x0ac7,\n \"exclam\", 0x0021,\n \"exclamarmenian\", 0x055c,\n \"exclamdbl\", 0x203c,\n \"exclamdown\", 0x00a1,\n \"exclamdownsmall\", 0xf7a1,\n \"exclammonospace\", 0xff01,\n \"exclamsmall\", 0xf721,\n \"existential\", 0x2203,\n \"ezh\", 0x0292,\n \"ezhcaron\", 0x01ef,\n \"ezhcurl\", 0x0293,\n \"ezhreversed\", 0x01b9,\n \"ezhtail\", 0x01ba,\n \"f\", 0x0066,\n \"fadeva\", 0x095e,\n \"fagurmukhi\", 0x0a5e,\n \"fahrenheit\", 0x2109,\n \"fathaarabic\", 0x064e,\n \"fathalowarabic\", 0x064e,\n \"fathatanarabic\", 0x064b,\n \"fbopomofo\", 0x3108,\n \"fcircle\", 0x24d5,\n \"fdotaccent\", 0x1e1f,\n \"feharabic\", 0x0641,\n \"feharmenian\", 0x0586,\n \"fehfinalarabic\", 0xfed2,\n \"fehinitialarabic\", 0xfed3,\n \"fehmedialarabic\", 0xfed4,\n \"feicoptic\", 0x03e5,\n \"female\", 0x2640,\n \"ff\", 0xfb00,\n \"f_f\", 0xfb00, // Fixes issue 11016.\n \"ffi\", 0xfb03,\n \"ffl\", 0xfb04,\n \"fi\", 0xfb01,\n \"fifteencircle\", 0x246e,\n \"fifteenparen\", 0x2482,\n \"fifteenperiod\", 0x2496,\n \"figuredash\", 0x2012,\n \"filledbox\", 0x25a0,\n \"filledrect\", 0x25ac,\n \"finalkaf\", 0x05da,\n \"finalkafdagesh\", 0xfb3a,\n \"finalkafdageshhebrew\", 0xfb3a,\n \"finalkafhebrew\", 0x05da,\n \"finalmem\", 0x05dd,\n \"finalmemhebrew\", 0x05dd,\n \"finalnun\", 0x05df,\n \"finalnunhebrew\", 0x05df,\n \"finalpe\", 0x05e3,\n \"finalpehebrew\", 0x05e3,\n \"finaltsadi\", 0x05e5,\n \"finaltsadihebrew\", 0x05e5,\n \"firsttonechinese\", 0x02c9,\n \"fisheye\", 0x25c9,\n \"fitacyrillic\", 0x0473,\n \"five\", 0x0035,\n \"fivearabic\", 0x0665,\n \"fivebengali\", 0x09eb,\n \"fivecircle\", 0x2464,\n \"fivecircleinversesansserif\", 0x278e,\n \"fivedeva\", 0x096b,\n \"fiveeighths\", 0x215d,\n \"fivegujarati\", 0x0aeb,\n \"fivegurmukhi\", 0x0a6b,\n \"fivehackarabic\", 0x0665,\n \"fivehangzhou\", 0x3025,\n \"fiveideographicparen\", 0x3224,\n \"fiveinferior\", 0x2085,\n \"fivemonospace\", 0xff15,\n \"fiveoldstyle\", 0xf735,\n \"fiveparen\", 0x2478,\n \"fiveperiod\", 0x248c,\n \"fivepersian\", 0x06f5,\n \"fiveroman\", 0x2174,\n \"fivesuperior\", 0x2075,\n \"fivethai\", 0x0e55,\n \"fl\", 0xfb02,\n \"florin\", 0x0192,\n \"fmonospace\", 0xff46,\n \"fmsquare\", 0x3399,\n \"fofanthai\", 0x0e1f,\n \"fofathai\", 0x0e1d,\n \"fongmanthai\", 0x0e4f,\n \"forall\", 0x2200,\n \"four\", 0x0034,\n \"fourarabic\", 0x0664,\n \"fourbengali\", 0x09ea,\n \"fourcircle\", 0x2463,\n \"fourcircleinversesansserif\", 0x278d,\n \"fourdeva\", 0x096a,\n \"fourgujarati\", 0x0aea,\n \"fourgurmukhi\", 0x0a6a,\n \"fourhackarabic\", 0x0664,\n \"fourhangzhou\", 0x3024,\n \"fourideographicparen\", 0x3223,\n \"fourinferior\", 0x2084,\n \"fourmonospace\", 0xff14,\n \"fournumeratorbengali\", 0x09f7,\n \"fouroldstyle\", 0xf734,\n \"fourparen\", 0x2477,\n \"fourperiod\", 0x248b,\n \"fourpersian\", 0x06f4,\n \"fourroman\", 0x2173,\n \"foursuperior\", 0x2074,\n \"fourteencircle\", 0x246d,\n \"fourteenparen\", 0x2481,\n \"fourteenperiod\", 0x2495,\n \"fourthai\", 0x0e54,\n \"fourthtonechinese\", 0x02cb,\n \"fparen\", 0x24a1,\n \"fraction\", 0x2044,\n \"franc\", 0x20a3,\n \"g\", 0x0067,\n \"gabengali\", 0x0997,\n \"gacute\", 0x01f5,\n \"gadeva\", 0x0917,\n \"gafarabic\", 0x06af,\n \"gaffinalarabic\", 0xfb93,\n \"gafinitialarabic\", 0xfb94,\n \"gafmedialarabic\", 0xfb95,\n \"gagujarati\", 0x0a97,\n \"gagurmukhi\", 0x0a17,\n \"gahiragana\", 0x304c,\n \"gakatakana\", 0x30ac,\n \"gamma\", 0x03b3,\n \"gammalatinsmall\", 0x0263,\n \"gammasuperior\", 0x02e0,\n \"gangiacoptic\", 0x03eb,\n \"gbopomofo\", 0x310d,\n \"gbreve\", 0x011f,\n \"gcaron\", 0x01e7,\n \"gcedilla\", 0x0123,\n \"gcircle\", 0x24d6,\n \"gcircumflex\", 0x011d,\n \"gcommaaccent\", 0x0123,\n \"gdot\", 0x0121,\n \"gdotaccent\", 0x0121,\n \"gecyrillic\", 0x0433,\n \"gehiragana\", 0x3052,\n \"gekatakana\", 0x30b2,\n \"geometricallyequal\", 0x2251,\n \"gereshaccenthebrew\", 0x059c,\n \"gereshhebrew\", 0x05f3,\n \"gereshmuqdamhebrew\", 0x059d,\n \"germandbls\", 0x00df,\n \"gershayimaccenthebrew\", 0x059e,\n \"gershayimhebrew\", 0x05f4,\n \"getamark\", 0x3013,\n \"ghabengali\", 0x0998,\n \"ghadarmenian\", 0x0572,\n \"ghadeva\", 0x0918,\n \"ghagujarati\", 0x0a98,\n \"ghagurmukhi\", 0x0a18,\n \"ghainarabic\", 0x063a,\n \"ghainfinalarabic\", 0xfece,\n \"ghaininitialarabic\", 0xfecf,\n \"ghainmedialarabic\", 0xfed0,\n \"ghemiddlehookcyrillic\", 0x0495,\n \"ghestrokecyrillic\", 0x0493,\n \"gheupturncyrillic\", 0x0491,\n \"ghhadeva\", 0x095a,\n \"ghhagurmukhi\", 0x0a5a,\n \"ghook\", 0x0260,\n \"ghzsquare\", 0x3393,\n \"gihiragana\", 0x304e,\n \"gikatakana\", 0x30ae,\n \"gimarmenian\", 0x0563,\n \"gimel\", 0x05d2,\n \"gimeldagesh\", 0xfb32,\n \"gimeldageshhebrew\", 0xfb32,\n \"gimelhebrew\", 0x05d2,\n \"gjecyrillic\", 0x0453,\n \"glottalinvertedstroke\", 0x01be,\n \"glottalstop\", 0x0294,\n \"glottalstopinverted\", 0x0296,\n \"glottalstopmod\", 0x02c0,\n \"glottalstopreversed\", 0x0295,\n \"glottalstopreversedmod\", 0x02c1,\n \"glottalstopreversedsuperior\", 0x02e4,\n \"glottalstopstroke\", 0x02a1,\n \"glottalstopstrokereversed\", 0x02a2,\n \"gmacron\", 0x1e21,\n \"gmonospace\", 0xff47,\n \"gohiragana\", 0x3054,\n \"gokatakana\", 0x30b4,\n \"gparen\", 0x24a2,\n \"gpasquare\", 0x33ac,\n \"gradient\", 0x2207,\n \"grave\", 0x0060,\n \"gravebelowcmb\", 0x0316,\n \"gravecmb\", 0x0300,\n \"gravecomb\", 0x0300,\n \"gravedeva\", 0x0953,\n \"gravelowmod\", 0x02ce,\n \"gravemonospace\", 0xff40,\n \"gravetonecmb\", 0x0340,\n \"greater\", 0x003e,\n \"greaterequal\", 0x2265,\n \"greaterequalorless\", 0x22db,\n \"greatermonospace\", 0xff1e,\n \"greaterorequivalent\", 0x2273,\n \"greaterorless\", 0x2277,\n \"greateroverequal\", 0x2267,\n \"greatersmall\", 0xfe65,\n \"gscript\", 0x0261,\n \"gstroke\", 0x01e5,\n \"guhiragana\", 0x3050,\n \"guillemotleft\", 0x00ab,\n \"guillemotright\", 0x00bb,\n \"guilsinglleft\", 0x2039,\n \"guilsinglright\", 0x203a,\n \"gukatakana\", 0x30b0,\n \"guramusquare\", 0x3318,\n \"gysquare\", 0x33c9,\n \"h\", 0x0068,\n \"haabkhasiancyrillic\", 0x04a9,\n \"haaltonearabic\", 0x06c1,\n \"habengali\", 0x09b9,\n \"hadescendercyrillic\", 0x04b3,\n \"hadeva\", 0x0939,\n \"hagujarati\", 0x0ab9,\n \"hagurmukhi\", 0x0a39,\n \"haharabic\", 0x062d,\n \"hahfinalarabic\", 0xfea2,\n \"hahinitialarabic\", 0xfea3,\n \"hahiragana\", 0x306f,\n \"hahmedialarabic\", 0xfea4,\n \"haitusquare\", 0x332a,\n \"hakatakana\", 0x30cf,\n \"hakatakanahalfwidth\", 0xff8a,\n \"halantgurmukhi\", 0x0a4d,\n \"hamzaarabic\", 0x0621,\n \"hamzalowarabic\", 0x0621,\n \"hangulfiller\", 0x3164,\n \"hardsigncyrillic\", 0x044a,\n \"harpoonleftbarbup\", 0x21bc,\n \"harpoonrightbarbup\", 0x21c0,\n \"hasquare\", 0x33ca,\n \"hatafpatah\", 0x05b2,\n \"hatafpatah16\", 0x05b2,\n \"hatafpatah23\", 0x05b2,\n \"hatafpatah2f\", 0x05b2,\n \"hatafpatahhebrew\", 0x05b2,\n \"hatafpatahnarrowhebrew\", 0x05b2,\n \"hatafpatahquarterhebrew\", 0x05b2,\n \"hatafpatahwidehebrew\", 0x05b2,\n \"hatafqamats\", 0x05b3,\n \"hatafqamats1b\", 0x05b3,\n \"hatafqamats28\", 0x05b3,\n \"hatafqamats34\", 0x05b3,\n \"hatafqamatshebrew\", 0x05b3,\n \"hatafqamatsnarrowhebrew\", 0x05b3,\n \"hatafqamatsquarterhebrew\", 0x05b3,\n \"hatafqamatswidehebrew\", 0x05b3,\n \"hatafsegol\", 0x05b1,\n \"hatafsegol17\", 0x05b1,\n \"hatafsegol24\", 0x05b1,\n \"hatafsegol30\", 0x05b1,\n \"hatafsegolhebrew\", 0x05b1,\n \"hatafsegolnarrowhebrew\", 0x05b1,\n \"hatafsegolquarterhebrew\", 0x05b1,\n \"hatafsegolwidehebrew\", 0x05b1,\n \"hbar\", 0x0127,\n \"hbopomofo\", 0x310f,\n \"hbrevebelow\", 0x1e2b,\n \"hcedilla\", 0x1e29,\n \"hcircle\", 0x24d7,\n \"hcircumflex\", 0x0125,\n \"hdieresis\", 0x1e27,\n \"hdotaccent\", 0x1e23,\n \"hdotbelow\", 0x1e25,\n \"he\", 0x05d4,\n \"heart\", 0x2665,\n \"heartsuitblack\", 0x2665,\n \"heartsuitwhite\", 0x2661,\n \"hedagesh\", 0xfb34,\n \"hedageshhebrew\", 0xfb34,\n \"hehaltonearabic\", 0x06c1,\n \"heharabic\", 0x0647,\n \"hehebrew\", 0x05d4,\n \"hehfinalaltonearabic\", 0xfba7,\n \"hehfinalalttwoarabic\", 0xfeea,\n \"hehfinalarabic\", 0xfeea,\n \"hehhamzaabovefinalarabic\", 0xfba5,\n \"hehhamzaaboveisolatedarabic\", 0xfba4,\n \"hehinitialaltonearabic\", 0xfba8,\n \"hehinitialarabic\", 0xfeeb,\n \"hehiragana\", 0x3078,\n \"hehmedialaltonearabic\", 0xfba9,\n \"hehmedialarabic\", 0xfeec,\n \"heiseierasquare\", 0x337b,\n \"hekatakana\", 0x30d8,\n \"hekatakanahalfwidth\", 0xff8d,\n \"hekutaarusquare\", 0x3336,\n \"henghook\", 0x0267,\n \"herutusquare\", 0x3339,\n \"het\", 0x05d7,\n \"hethebrew\", 0x05d7,\n \"hhook\", 0x0266,\n \"hhooksuperior\", 0x02b1,\n \"hieuhacirclekorean\", 0x327b,\n \"hieuhaparenkorean\", 0x321b,\n \"hieuhcirclekorean\", 0x326d,\n \"hieuhkorean\", 0x314e,\n \"hieuhparenkorean\", 0x320d,\n \"hihiragana\", 0x3072,\n \"hikatakana\", 0x30d2,\n \"hikatakanahalfwidth\", 0xff8b,\n \"hiriq\", 0x05b4,\n \"hiriq14\", 0x05b4,\n \"hiriq21\", 0x05b4,\n \"hiriq2d\", 0x05b4,\n \"hiriqhebrew\", 0x05b4,\n \"hiriqnarrowhebrew\", 0x05b4,\n \"hiriqquarterhebrew\", 0x05b4,\n \"hiriqwidehebrew\", 0x05b4,\n \"hlinebelow\", 0x1e96,\n \"hmonospace\", 0xff48,\n \"hoarmenian\", 0x0570,\n \"hohipthai\", 0x0e2b,\n \"hohiragana\", 0x307b,\n \"hokatakana\", 0x30db,\n \"hokatakanahalfwidth\", 0xff8e,\n \"holam\", 0x05b9,\n \"holam19\", 0x05b9,\n \"holam26\", 0x05b9,\n \"holam32\", 0x05b9,\n \"holamhebrew\", 0x05b9,\n \"holamnarrowhebrew\", 0x05b9,\n \"holamquarterhebrew\", 0x05b9,\n \"holamwidehebrew\", 0x05b9,\n \"honokhukthai\", 0x0e2e,\n \"hookabovecomb\", 0x0309,\n \"hookcmb\", 0x0309,\n \"hookpalatalizedbelowcmb\", 0x0321,\n \"hookretroflexbelowcmb\", 0x0322,\n \"hoonsquare\", 0x3342,\n \"horicoptic\", 0x03e9,\n \"horizontalbar\", 0x2015,\n \"horncmb\", 0x031b,\n \"hotsprings\", 0x2668,\n \"house\", 0x2302,\n \"hparen\", 0x24a3,\n \"hsuperior\", 0x02b0,\n \"hturned\", 0x0265,\n \"huhiragana\", 0x3075,\n \"huiitosquare\", 0x3333,\n \"hukatakana\", 0x30d5,\n \"hukatakanahalfwidth\", 0xff8c,\n \"hungarumlaut\", 0x02dd,\n \"hungarumlautcmb\", 0x030b,\n \"hv\", 0x0195,\n \"hyphen\", 0x002d,\n \"hypheninferior\", 0xf6e5,\n \"hyphenmonospace\", 0xff0d,\n \"hyphensmall\", 0xfe63,\n \"hyphensuperior\", 0xf6e6,\n \"hyphentwo\", 0x2010,\n \"i\", 0x0069,\n \"iacute\", 0x00ed,\n \"iacyrillic\", 0x044f,\n \"ibengali\", 0x0987,\n \"ibopomofo\", 0x3127,\n \"ibreve\", 0x012d,\n \"icaron\", 0x01d0,\n \"icircle\", 0x24d8,\n \"icircumflex\", 0x00ee,\n \"icyrillic\", 0x0456,\n \"idblgrave\", 0x0209,\n \"ideographearthcircle\", 0x328f,\n \"ideographfirecircle\", 0x328b,\n \"ideographicallianceparen\", 0x323f,\n \"ideographiccallparen\", 0x323a,\n \"ideographiccentrecircle\", 0x32a5,\n \"ideographicclose\", 0x3006,\n \"ideographiccomma\", 0x3001,\n \"ideographiccommaleft\", 0xff64,\n \"ideographiccongratulationparen\", 0x3237,\n \"ideographiccorrectcircle\", 0x32a3,\n \"ideographicearthparen\", 0x322f,\n \"ideographicenterpriseparen\", 0x323d,\n \"ideographicexcellentcircle\", 0x329d,\n \"ideographicfestivalparen\", 0x3240,\n \"ideographicfinancialcircle\", 0x3296,\n \"ideographicfinancialparen\", 0x3236,\n \"ideographicfireparen\", 0x322b,\n \"ideographichaveparen\", 0x3232,\n \"ideographichighcircle\", 0x32a4,\n \"ideographiciterationmark\", 0x3005,\n \"ideographiclaborcircle\", 0x3298,\n \"ideographiclaborparen\", 0x3238,\n \"ideographicleftcircle\", 0x32a7,\n \"ideographiclowcircle\", 0x32a6,\n \"ideographicmedicinecircle\", 0x32a9,\n \"ideographicmetalparen\", 0x322e,\n \"ideographicmoonparen\", 0x322a,\n \"ideographicnameparen\", 0x3234,\n \"ideographicperiod\", 0x3002,\n \"ideographicprintcircle\", 0x329e,\n \"ideographicreachparen\", 0x3243,\n \"ideographicrepresentparen\", 0x3239,\n \"ideographicresourceparen\", 0x323e,\n \"ideographicrightcircle\", 0x32a8,\n \"ideographicsecretcircle\", 0x3299,\n \"ideographicselfparen\", 0x3242,\n \"ideographicsocietyparen\", 0x3233,\n \"ideographicspace\", 0x3000,\n \"ideographicspecialparen\", 0x3235,\n \"ideographicstockparen\", 0x3231,\n \"ideographicstudyparen\", 0x323b,\n \"ideographicsunparen\", 0x3230,\n \"ideographicsuperviseparen\", 0x323c,\n \"ideographicwaterparen\", 0x322c,\n \"ideographicwoodparen\", 0x322d,\n \"ideographiczero\", 0x3007,\n \"ideographmetalcircle\", 0x328e,\n \"ideographmooncircle\", 0x328a,\n \"ideographnamecircle\", 0x3294,\n \"ideographsuncircle\", 0x3290,\n \"ideographwatercircle\", 0x328c,\n \"ideographwoodcircle\", 0x328d,\n \"ideva\", 0x0907,\n \"idieresis\", 0x00ef,\n \"idieresisacute\", 0x1e2f,\n \"idieresiscyrillic\", 0x04e5,\n \"idotbelow\", 0x1ecb,\n \"iebrevecyrillic\", 0x04d7,\n \"iecyrillic\", 0x0435,\n \"ieungacirclekorean\", 0x3275,\n \"ieungaparenkorean\", 0x3215,\n \"ieungcirclekorean\", 0x3267,\n \"ieungkorean\", 0x3147,\n \"ieungparenkorean\", 0x3207,\n \"igrave\", 0x00ec,\n \"igujarati\", 0x0a87,\n \"igurmukhi\", 0x0a07,\n \"ihiragana\", 0x3044,\n \"ihookabove\", 0x1ec9,\n \"iibengali\", 0x0988,\n \"iicyrillic\", 0x0438,\n \"iideva\", 0x0908,\n \"iigujarati\", 0x0a88,\n \"iigurmukhi\", 0x0a08,\n \"iimatragurmukhi\", 0x0a40,\n \"iinvertedbreve\", 0x020b,\n \"iishortcyrillic\", 0x0439,\n \"iivowelsignbengali\", 0x09c0,\n \"iivowelsigndeva\", 0x0940,\n \"iivowelsigngujarati\", 0x0ac0,\n \"ij\", 0x0133,\n \"ikatakana\", 0x30a4,\n \"ikatakanahalfwidth\", 0xff72,\n \"ikorean\", 0x3163,\n \"ilde\", 0x02dc,\n \"iluyhebrew\", 0x05ac,\n \"imacron\", 0x012b,\n \"imacroncyrillic\", 0x04e3,\n \"imageorapproximatelyequal\", 0x2253,\n \"imatragurmukhi\", 0x0a3f,\n \"imonospace\", 0xff49,\n \"increment\", 0x2206,\n \"infinity\", 0x221e,\n \"iniarmenian\", 0x056b,\n \"integral\", 0x222b,\n \"integralbottom\", 0x2321,\n \"integralbt\", 0x2321,\n \"integralex\", 0xf8f5,\n \"integraltop\", 0x2320,\n \"integraltp\", 0x2320,\n \"intersection\", 0x2229,\n \"intisquare\", 0x3305,\n \"invbullet\", 0x25d8,\n \"invcircle\", 0x25d9,\n \"invsmileface\", 0x263b,\n \"iocyrillic\", 0x0451,\n \"iogonek\", 0x012f,\n \"iota\", 0x03b9,\n \"iotadieresis\", 0x03ca,\n \"iotadieresistonos\", 0x0390,\n \"iotalatin\", 0x0269,\n \"iotatonos\", 0x03af,\n \"iparen\", 0x24a4,\n \"irigurmukhi\", 0x0a72,\n \"ismallhiragana\", 0x3043,\n \"ismallkatakana\", 0x30a3,\n \"ismallkatakanahalfwidth\", 0xff68,\n \"issharbengali\", 0x09fa,\n \"istroke\", 0x0268,\n \"isuperior\", 0xf6ed,\n \"iterationhiragana\", 0x309d,\n \"iterationkatakana\", 0x30fd,\n \"itilde\", 0x0129,\n \"itildebelow\", 0x1e2d,\n \"iubopomofo\", 0x3129,\n \"iucyrillic\", 0x044e,\n \"ivowelsignbengali\", 0x09bf,\n \"ivowelsigndeva\", 0x093f,\n \"ivowelsigngujarati\", 0x0abf,\n \"izhitsacyrillic\", 0x0475,\n \"izhitsadblgravecyrillic\", 0x0477,\n \"j\", 0x006a,\n \"jaarmenian\", 0x0571,\n \"jabengali\", 0x099c,\n \"jadeva\", 0x091c,\n \"jagujarati\", 0x0a9c,\n \"jagurmukhi\", 0x0a1c,\n \"jbopomofo\", 0x3110,\n \"jcaron\", 0x01f0,\n \"jcircle\", 0x24d9,\n \"jcircumflex\", 0x0135,\n \"jcrossedtail\", 0x029d,\n \"jdotlessstroke\", 0x025f,\n \"jecyrillic\", 0x0458,\n \"jeemarabic\", 0x062c,\n \"jeemfinalarabic\", 0xfe9e,\n \"jeeminitialarabic\", 0xfe9f,\n \"jeemmedialarabic\", 0xfea0,\n \"jeharabic\", 0x0698,\n \"jehfinalarabic\", 0xfb8b,\n \"jhabengali\", 0x099d,\n \"jhadeva\", 0x091d,\n \"jhagujarati\", 0x0a9d,\n \"jhagurmukhi\", 0x0a1d,\n \"jheharmenian\", 0x057b,\n \"jis\", 0x3004,\n \"jmonospace\", 0xff4a,\n \"jparen\", 0x24a5,\n \"jsuperior\", 0x02b2,\n \"k\", 0x006b,\n \"kabashkircyrillic\", 0x04a1,\n \"kabengali\", 0x0995,\n \"kacute\", 0x1e31,\n \"kacyrillic\", 0x043a,\n \"kadescendercyrillic\", 0x049b,\n \"kadeva\", 0x0915,\n \"kaf\", 0x05db,\n \"kafarabic\", 0x0643,\n \"kafdagesh\", 0xfb3b,\n \"kafdageshhebrew\", 0xfb3b,\n \"kaffinalarabic\", 0xfeda,\n \"kafhebrew\", 0x05db,\n \"kafinitialarabic\", 0xfedb,\n \"kafmedialarabic\", 0xfedc,\n \"kafrafehebrew\", 0xfb4d,\n \"kagujarati\", 0x0a95,\n \"kagurmukhi\", 0x0a15,\n \"kahiragana\", 0x304b,\n \"kahookcyrillic\", 0x04c4,\n \"kakatakana\", 0x30ab,\n \"kakatakanahalfwidth\", 0xff76,\n \"kappa\", 0x03ba,\n \"kappasymbolgreek\", 0x03f0,\n \"kapyeounmieumkorean\", 0x3171,\n \"kapyeounphieuphkorean\", 0x3184,\n \"kapyeounpieupkorean\", 0x3178,\n \"kapyeounssangpieupkorean\", 0x3179,\n \"karoriisquare\", 0x330d,\n \"kashidaautoarabic\", 0x0640,\n \"kashidaautonosidebearingarabic\", 0x0640,\n \"kasmallkatakana\", 0x30f5,\n \"kasquare\", 0x3384,\n \"kasraarabic\", 0x0650,\n \"kasratanarabic\", 0x064d,\n \"kastrokecyrillic\", 0x049f,\n \"katahiraprolongmarkhalfwidth\", 0xff70,\n \"kaverticalstrokecyrillic\", 0x049d,\n \"kbopomofo\", 0x310e,\n \"kcalsquare\", 0x3389,\n \"kcaron\", 0x01e9,\n \"kcedilla\", 0x0137,\n \"kcircle\", 0x24da,\n \"kcommaaccent\", 0x0137,\n \"kdotbelow\", 0x1e33,\n \"keharmenian\", 0x0584,\n \"kehiragana\", 0x3051,\n \"kekatakana\", 0x30b1,\n \"kekatakanahalfwidth\", 0xff79,\n \"kenarmenian\", 0x056f,\n \"kesmallkatakana\", 0x30f6,\n \"kgreenlandic\", 0x0138,\n \"khabengali\", 0x0996,\n \"khacyrillic\", 0x0445,\n \"khadeva\", 0x0916,\n \"khagujarati\", 0x0a96,\n \"khagurmukhi\", 0x0a16,\n \"khaharabic\", 0x062e,\n \"khahfinalarabic\", 0xfea6,\n \"khahinitialarabic\", 0xfea7,\n \"khahmedialarabic\", 0xfea8,\n \"kheicoptic\", 0x03e7,\n \"khhadeva\", 0x0959,\n \"khhagurmukhi\", 0x0a59,\n \"khieukhacirclekorean\", 0x3278,\n \"khieukhaparenkorean\", 0x3218,\n \"khieukhcirclekorean\", 0x326a,\n \"khieukhkorean\", 0x314b,\n \"khieukhparenkorean\", 0x320a,\n \"khokhaithai\", 0x0e02,\n \"khokhonthai\", 0x0e05,\n \"khokhuatthai\", 0x0e03,\n \"khokhwaithai\", 0x0e04,\n \"khomutthai\", 0x0e5b,\n \"khook\", 0x0199,\n \"khorakhangthai\", 0x0e06,\n \"khzsquare\", 0x3391,\n \"kihiragana\", 0x304d,\n \"kikatakana\", 0x30ad,\n \"kikatakanahalfwidth\", 0xff77,\n \"kiroguramusquare\", 0x3315,\n \"kiromeetorusquare\", 0x3316,\n \"kirosquare\", 0x3314,\n \"kiyeokacirclekorean\", 0x326e,\n \"kiyeokaparenkorean\", 0x320e,\n \"kiyeokcirclekorean\", 0x3260,\n \"kiyeokkorean\", 0x3131,\n \"kiyeokparenkorean\", 0x3200,\n \"kiyeoksioskorean\", 0x3133,\n \"kjecyrillic\", 0x045c,\n \"klinebelow\", 0x1e35,\n \"klsquare\", 0x3398,\n \"kmcubedsquare\", 0x33a6,\n \"kmonospace\", 0xff4b,\n \"kmsquaredsquare\", 0x33a2,\n \"kohiragana\", 0x3053,\n \"kohmsquare\", 0x33c0,\n \"kokaithai\", 0x0e01,\n \"kokatakana\", 0x30b3,\n \"kokatakanahalfwidth\", 0xff7a,\n \"kooposquare\", 0x331e,\n \"koppacyrillic\", 0x0481,\n \"koreanstandardsymbol\", 0x327f,\n \"koroniscmb\", 0x0343,\n \"kparen\", 0x24a6,\n \"kpasquare\", 0x33aa,\n \"ksicyrillic\", 0x046f,\n \"ktsquare\", 0x33cf,\n \"kturned\", 0x029e,\n \"kuhiragana\", 0x304f,\n \"kukatakana\", 0x30af,\n \"kukatakanahalfwidth\", 0xff78,\n \"kvsquare\", 0x33b8,\n \"kwsquare\", 0x33be,\n \"l\", 0x006c,\n \"labengali\", 0x09b2,\n \"lacute\", 0x013a,\n \"ladeva\", 0x0932,\n \"lagujarati\", 0x0ab2,\n \"lagurmukhi\", 0x0a32,\n \"lakkhangyaothai\", 0x0e45,\n \"lamaleffinalarabic\", 0xfefc,\n \"lamalefhamzaabovefinalarabic\", 0xfef8,\n \"lamalefhamzaaboveisolatedarabic\", 0xfef7,\n \"lamalefhamzabelowfinalarabic\", 0xfefa,\n \"lamalefhamzabelowisolatedarabic\", 0xfef9,\n \"lamalefisolatedarabic\", 0xfefb,\n \"lamalefmaddaabovefinalarabic\", 0xfef6,\n \"lamalefmaddaaboveisolatedarabic\", 0xfef5,\n \"lamarabic\", 0x0644,\n \"lambda\", 0x03bb,\n \"lambdastroke\", 0x019b,\n \"lamed\", 0x05dc,\n \"lameddagesh\", 0xfb3c,\n \"lameddageshhebrew\", 0xfb3c,\n \"lamedhebrew\", 0x05dc,\n \"lamfinalarabic\", 0xfede,\n \"lamhahinitialarabic\", 0xfcca,\n \"laminitialarabic\", 0xfedf,\n \"lamjeeminitialarabic\", 0xfcc9,\n \"lamkhahinitialarabic\", 0xfccb,\n \"lamlamhehisolatedarabic\", 0xfdf2,\n \"lammedialarabic\", 0xfee0,\n \"lammeemhahinitialarabic\", 0xfd88,\n \"lammeeminitialarabic\", 0xfccc,\n \"largecircle\", 0x25ef,\n \"lbar\", 0x019a,\n \"lbelt\", 0x026c,\n \"lbopomofo\", 0x310c,\n \"lcaron\", 0x013e,\n \"lcedilla\", 0x013c,\n \"lcircle\", 0x24db,\n \"lcircumflexbelow\", 0x1e3d,\n \"lcommaaccent\", 0x013c,\n \"ldot\", 0x0140,\n \"ldotaccent\", 0x0140,\n \"ldotbelow\", 0x1e37,\n \"ldotbelowmacron\", 0x1e39,\n \"leftangleabovecmb\", 0x031a,\n \"lefttackbelowcmb\", 0x0318,\n \"less\", 0x003c,\n \"lessequal\", 0x2264,\n \"lessequalorgreater\", 0x22da,\n \"lessmonospace\", 0xff1c,\n \"lessorequivalent\", 0x2272,\n \"lessorgreater\", 0x2276,\n \"lessoverequal\", 0x2266,\n \"lesssmall\", 0xfe64,\n \"lezh\", 0x026e,\n \"lfblock\", 0x258c,\n \"lhookretroflex\", 0x026d,\n \"lira\", 0x20a4,\n \"liwnarmenian\", 0x056c,\n \"lj\", 0x01c9,\n \"ljecyrillic\", 0x0459,\n \"ll\", 0xf6c0,\n \"lladeva\", 0x0933,\n \"llagujarati\", 0x0ab3,\n \"llinebelow\", 0x1e3b,\n \"llladeva\", 0x0934,\n \"llvocalicbengali\", 0x09e1,\n \"llvocalicdeva\", 0x0961,\n \"llvocalicvowelsignbengali\", 0x09e3,\n \"llvocalicvowelsigndeva\", 0x0963,\n \"lmiddletilde\", 0x026b,\n \"lmonospace\", 0xff4c,\n \"lmsquare\", 0x33d0,\n \"lochulathai\", 0x0e2c,\n \"logicaland\", 0x2227,\n \"logicalnot\", 0x00ac,\n \"logicalnotreversed\", 0x2310,\n \"logicalor\", 0x2228,\n \"lolingthai\", 0x0e25,\n \"longs\", 0x017f,\n \"lowlinecenterline\", 0xfe4e,\n \"lowlinecmb\", 0x0332,\n \"lowlinedashed\", 0xfe4d,\n \"lozenge\", 0x25ca,\n \"lparen\", 0x24a7,\n \"lslash\", 0x0142,\n \"lsquare\", 0x2113,\n \"lsuperior\", 0xf6ee,\n \"ltshade\", 0x2591,\n \"luthai\", 0x0e26,\n \"lvocalicbengali\", 0x098c,\n \"lvocalicdeva\", 0x090c,\n \"lvocalicvowelsignbengali\", 0x09e2,\n \"lvocalicvowelsigndeva\", 0x0962,\n \"lxsquare\", 0x33d3,\n \"m\", 0x006d,\n \"mabengali\", 0x09ae,\n \"macron\", 0x00af,\n \"macronbelowcmb\", 0x0331,\n \"macroncmb\", 0x0304,\n \"macronlowmod\", 0x02cd,\n \"macronmonospace\", 0xffe3,\n \"macute\", 0x1e3f,\n \"madeva\", 0x092e,\n \"magujarati\", 0x0aae,\n \"magurmukhi\", 0x0a2e,\n \"mahapakhhebrew\", 0x05a4,\n \"mahapakhlefthebrew\", 0x05a4,\n \"mahiragana\", 0x307e,\n \"maichattawalowleftthai\", 0xf895,\n \"maichattawalowrightthai\", 0xf894,\n \"maichattawathai\", 0x0e4b,\n \"maichattawaupperleftthai\", 0xf893,\n \"maieklowleftthai\", 0xf88c,\n \"maieklowrightthai\", 0xf88b,\n \"maiekthai\", 0x0e48,\n \"maiekupperleftthai\", 0xf88a,\n \"maihanakatleftthai\", 0xf884,\n \"maihanakatthai\", 0x0e31,\n \"maitaikhuleftthai\", 0xf889,\n \"maitaikhuthai\", 0x0e47,\n \"maitholowleftthai\", 0xf88f,\n \"maitholowrightthai\", 0xf88e,\n \"maithothai\", 0x0e49,\n \"maithoupperleftthai\", 0xf88d,\n \"maitrilowleftthai\", 0xf892,\n \"maitrilowrightthai\", 0xf891,\n \"maitrithai\", 0x0e4a,\n \"maitriupperleftthai\", 0xf890,\n \"maiyamokthai\", 0x0e46,\n \"makatakana\", 0x30de,\n \"makatakanahalfwidth\", 0xff8f,\n \"male\", 0x2642,\n \"mansyonsquare\", 0x3347,\n \"maqafhebrew\", 0x05be,\n \"mars\", 0x2642,\n \"masoracirclehebrew\", 0x05af,\n \"masquare\", 0x3383,\n \"mbopomofo\", 0x3107,\n \"mbsquare\", 0x33d4,\n \"mcircle\", 0x24dc,\n \"mcubedsquare\", 0x33a5,\n \"mdotaccent\", 0x1e41,\n \"mdotbelow\", 0x1e43,\n \"meemarabic\", 0x0645,\n \"meemfinalarabic\", 0xfee2,\n \"meeminitialarabic\", 0xfee3,\n \"meemmedialarabic\", 0xfee4,\n \"meemmeeminitialarabic\", 0xfcd1,\n \"meemmeemisolatedarabic\", 0xfc48,\n \"meetorusquare\", 0x334d,\n \"mehiragana\", 0x3081,\n \"meizierasquare\", 0x337e,\n \"mekatakana\", 0x30e1,\n \"mekatakanahalfwidth\", 0xff92,\n \"mem\", 0x05de,\n \"memdagesh\", 0xfb3e,\n \"memdageshhebrew\", 0xfb3e,\n \"memhebrew\", 0x05de,\n \"menarmenian\", 0x0574,\n \"merkhahebrew\", 0x05a5,\n \"merkhakefulahebrew\", 0x05a6,\n \"merkhakefulalefthebrew\", 0x05a6,\n \"merkhalefthebrew\", 0x05a5,\n \"mhook\", 0x0271,\n \"mhzsquare\", 0x3392,\n \"middledotkatakanahalfwidth\", 0xff65,\n \"middot\", 0x00b7,\n \"mieumacirclekorean\", 0x3272,\n \"mieumaparenkorean\", 0x3212,\n \"mieumcirclekorean\", 0x3264,\n \"mieumkorean\", 0x3141,\n \"mieumpansioskorean\", 0x3170,\n \"mieumparenkorean\", 0x3204,\n \"mieumpieupkorean\", 0x316e,\n \"mieumsioskorean\", 0x316f,\n \"mihiragana\", 0x307f,\n \"mikatakana\", 0x30df,\n \"mikatakanahalfwidth\", 0xff90,\n \"minus\", 0x2212,\n \"minusbelowcmb\", 0x0320,\n \"minuscircle\", 0x2296,\n \"minusmod\", 0x02d7,\n \"minusplus\", 0x2213,\n \"minute\", 0x2032,\n \"miribaarusquare\", 0x334a,\n \"mirisquare\", 0x3349,\n \"mlonglegturned\", 0x0270,\n \"mlsquare\", 0x3396,\n \"mmcubedsquare\", 0x33a3,\n \"mmonospace\", 0xff4d,\n \"mmsquaredsquare\", 0x339f,\n \"mohiragana\", 0x3082,\n \"mohmsquare\", 0x33c1,\n \"mokatakana\", 0x30e2,\n \"mokatakanahalfwidth\", 0xff93,\n \"molsquare\", 0x33d6,\n \"momathai\", 0x0e21,\n \"moverssquare\", 0x33a7,\n \"moverssquaredsquare\", 0x33a8,\n \"mparen\", 0x24a8,\n \"mpasquare\", 0x33ab,\n \"mssquare\", 0x33b3,\n \"msuperior\", 0xf6ef,\n \"mturned\", 0x026f,\n \"mu\", 0x00b5,\n \"mu1\", 0x00b5,\n \"muasquare\", 0x3382,\n \"muchgreater\", 0x226b,\n \"muchless\", 0x226a,\n \"mufsquare\", 0x338c,\n \"mugreek\", 0x03bc,\n \"mugsquare\", 0x338d,\n \"muhiragana\", 0x3080,\n \"mukatakana\", 0x30e0,\n \"mukatakanahalfwidth\", 0xff91,\n \"mulsquare\", 0x3395,\n \"multiply\", 0x00d7,\n \"mumsquare\", 0x339b,\n \"munahhebrew\", 0x05a3,\n \"munahlefthebrew\", 0x05a3,\n \"musicalnote\", 0x266a,\n \"musicalnotedbl\", 0x266b,\n \"musicflatsign\", 0x266d,\n \"musicsharpsign\", 0x266f,\n \"mussquare\", 0x33b2,\n \"muvsquare\", 0x33b6,\n \"muwsquare\", 0x33bc,\n \"mvmegasquare\", 0x33b9,\n \"mvsquare\", 0x33b7,\n \"mwmegasquare\", 0x33bf,\n \"mwsquare\", 0x33bd,\n \"n\", 0x006e,\n \"nabengali\", 0x09a8,\n \"nabla\", 0x2207,\n \"nacute\", 0x0144,\n \"nadeva\", 0x0928,\n \"nagujarati\", 0x0aa8,\n \"nagurmukhi\", 0x0a28,\n \"nahiragana\", 0x306a,\n \"nakatakana\", 0x30ca,\n \"nakatakanahalfwidth\", 0xff85,\n \"napostrophe\", 0x0149,\n \"nasquare\", 0x3381,\n \"nbopomofo\", 0x310b,\n \"nbspace\", 0x00a0,\n \"ncaron\", 0x0148,\n \"ncedilla\", 0x0146,\n \"ncircle\", 0x24dd,\n \"ncircumflexbelow\", 0x1e4b,\n \"ncommaaccent\", 0x0146,\n \"ndotaccent\", 0x1e45,\n \"ndotbelow\", 0x1e47,\n \"nehiragana\", 0x306d,\n \"nekatakana\", 0x30cd,\n \"nekatakanahalfwidth\", 0xff88,\n \"newsheqelsign\", 0x20aa,\n \"nfsquare\", 0x338b,\n \"ngabengali\", 0x0999,\n \"ngadeva\", 0x0919,\n \"ngagujarati\", 0x0a99,\n \"ngagurmukhi\", 0x0a19,\n \"ngonguthai\", 0x0e07,\n \"nhiragana\", 0x3093,\n \"nhookleft\", 0x0272,\n \"nhookretroflex\", 0x0273,\n \"nieunacirclekorean\", 0x326f,\n \"nieunaparenkorean\", 0x320f,\n \"nieuncieuckorean\", 0x3135,\n \"nieuncirclekorean\", 0x3261,\n \"nieunhieuhkorean\", 0x3136,\n \"nieunkorean\", 0x3134,\n \"nieunpansioskorean\", 0x3168,\n \"nieunparenkorean\", 0x3201,\n \"nieunsioskorean\", 0x3167,\n \"nieuntikeutkorean\", 0x3166,\n \"nihiragana\", 0x306b,\n \"nikatakana\", 0x30cb,\n \"nikatakanahalfwidth\", 0xff86,\n \"nikhahitleftthai\", 0xf899,\n \"nikhahitthai\", 0x0e4d,\n \"nine\", 0x0039,\n \"ninearabic\", 0x0669,\n \"ninebengali\", 0x09ef,\n \"ninecircle\", 0x2468,\n \"ninecircleinversesansserif\", 0x2792,\n \"ninedeva\", 0x096f,\n \"ninegujarati\", 0x0aef,\n \"ninegurmukhi\", 0x0a6f,\n \"ninehackarabic\", 0x0669,\n \"ninehangzhou\", 0x3029,\n \"nineideographicparen\", 0x3228,\n \"nineinferior\", 0x2089,\n \"ninemonospace\", 0xff19,\n \"nineoldstyle\", 0xf739,\n \"nineparen\", 0x247c,\n \"nineperiod\", 0x2490,\n \"ninepersian\", 0x06f9,\n \"nineroman\", 0x2178,\n \"ninesuperior\", 0x2079,\n \"nineteencircle\", 0x2472,\n \"nineteenparen\", 0x2486,\n \"nineteenperiod\", 0x249a,\n \"ninethai\", 0x0e59,\n \"nj\", 0x01cc,\n \"njecyrillic\", 0x045a,\n \"nkatakana\", 0x30f3,\n \"nkatakanahalfwidth\", 0xff9d,\n \"nlegrightlong\", 0x019e,\n \"nlinebelow\", 0x1e49,\n \"nmonospace\", 0xff4e,\n \"nmsquare\", 0x339a,\n \"nnabengali\", 0x09a3,\n \"nnadeva\", 0x0923,\n \"nnagujarati\", 0x0aa3,\n \"nnagurmukhi\", 0x0a23,\n \"nnnadeva\", 0x0929,\n \"nohiragana\", 0x306e,\n \"nokatakana\", 0x30ce,\n \"nokatakanahalfwidth\", 0xff89,\n \"nonbreakingspace\", 0x00a0,\n \"nonenthai\", 0x0e13,\n \"nonuthai\", 0x0e19,\n \"noonarabic\", 0x0646,\n \"noonfinalarabic\", 0xfee6,\n \"noonghunnaarabic\", 0x06ba,\n \"noonghunnafinalarabic\", 0xfb9f,\n \"nooninitialarabic\", 0xfee7,\n \"noonjeeminitialarabic\", 0xfcd2,\n \"noonjeemisolatedarabic\", 0xfc4b,\n \"noonmedialarabic\", 0xfee8,\n \"noonmeeminitialarabic\", 0xfcd5,\n \"noonmeemisolatedarabic\", 0xfc4e,\n \"noonnoonfinalarabic\", 0xfc8d,\n \"notcontains\", 0x220c,\n \"notelement\", 0x2209,\n \"notelementof\", 0x2209,\n \"notequal\", 0x2260,\n \"notgreater\", 0x226f,\n \"notgreaternorequal\", 0x2271,\n \"notgreaternorless\", 0x2279,\n \"notidentical\", 0x2262,\n \"notless\", 0x226e,\n \"notlessnorequal\", 0x2270,\n \"notparallel\", 0x2226,\n \"notprecedes\", 0x2280,\n \"notsubset\", 0x2284,\n \"notsucceeds\", 0x2281,\n \"notsuperset\", 0x2285,\n \"nowarmenian\", 0x0576,\n \"nparen\", 0x24a9,\n \"nssquare\", 0x33b1,\n \"nsuperior\", 0x207f,\n \"ntilde\", 0x00f1,\n \"nu\", 0x03bd,\n \"nuhiragana\", 0x306c,\n \"nukatakana\", 0x30cc,\n \"nukatakanahalfwidth\", 0xff87,\n \"nuktabengali\", 0x09bc,\n \"nuktadeva\", 0x093c,\n \"nuktagujarati\", 0x0abc,\n \"nuktagurmukhi\", 0x0a3c,\n \"numbersign\", 0x0023,\n \"numbersignmonospace\", 0xff03,\n \"numbersignsmall\", 0xfe5f,\n \"numeralsigngreek\", 0x0374,\n \"numeralsignlowergreek\", 0x0375,\n \"numero\", 0x2116,\n \"nun\", 0x05e0,\n \"nundagesh\", 0xfb40,\n \"nundageshhebrew\", 0xfb40,\n \"nunhebrew\", 0x05e0,\n \"nvsquare\", 0x33b5,\n \"nwsquare\", 0x33bb,\n \"nyabengali\", 0x099e,\n \"nyadeva\", 0x091e,\n \"nyagujarati\", 0x0a9e,\n \"nyagurmukhi\", 0x0a1e,\n \"o\", 0x006f,\n \"oacute\", 0x00f3,\n \"oangthai\", 0x0e2d,\n \"obarred\", 0x0275,\n \"obarredcyrillic\", 0x04e9,\n \"obarreddieresiscyrillic\", 0x04eb,\n \"obengali\", 0x0993,\n \"obopomofo\", 0x311b,\n \"obreve\", 0x014f,\n \"ocandradeva\", 0x0911,\n \"ocandragujarati\", 0x0a91,\n \"ocandravowelsigndeva\", 0x0949,\n \"ocandravowelsigngujarati\", 0x0ac9,\n \"ocaron\", 0x01d2,\n \"ocircle\", 0x24de,\n \"ocircumflex\", 0x00f4,\n \"ocircumflexacute\", 0x1ed1,\n \"ocircumflexdotbelow\", 0x1ed9,\n \"ocircumflexgrave\", 0x1ed3,\n \"ocircumflexhookabove\", 0x1ed5,\n \"ocircumflextilde\", 0x1ed7,\n \"ocyrillic\", 0x043e,\n \"odblacute\", 0x0151,\n \"odblgrave\", 0x020d,\n \"odeva\", 0x0913,\n \"odieresis\", 0x00f6,\n \"odieresiscyrillic\", 0x04e7,\n \"odotbelow\", 0x1ecd,\n \"oe\", 0x0153,\n \"oekorean\", 0x315a,\n \"ogonek\", 0x02db,\n \"ogonekcmb\", 0x0328,\n \"ograve\", 0x00f2,\n \"ogujarati\", 0x0a93,\n \"oharmenian\", 0x0585,\n \"ohiragana\", 0x304a,\n \"ohookabove\", 0x1ecf,\n \"ohorn\", 0x01a1,\n \"ohornacute\", 0x1edb,\n \"ohorndotbelow\", 0x1ee3,\n \"ohorngrave\", 0x1edd,\n \"ohornhookabove\", 0x1edf,\n \"ohorntilde\", 0x1ee1,\n \"ohungarumlaut\", 0x0151,\n \"oi\", 0x01a3,\n \"oinvertedbreve\", 0x020f,\n \"okatakana\", 0x30aa,\n \"okatakanahalfwidth\", 0xff75,\n \"okorean\", 0x3157,\n \"olehebrew\", 0x05ab,\n \"omacron\", 0x014d,\n \"omacronacute\", 0x1e53,\n \"omacrongrave\", 0x1e51,\n \"omdeva\", 0x0950,\n \"omega\", 0x03c9,\n \"omega1\", 0x03d6,\n \"omegacyrillic\", 0x0461,\n \"omegalatinclosed\", 0x0277,\n \"omegaroundcyrillic\", 0x047b,\n \"omegatitlocyrillic\", 0x047d,\n \"omegatonos\", 0x03ce,\n \"omgujarati\", 0x0ad0,\n \"omicron\", 0x03bf,\n \"omicrontonos\", 0x03cc,\n \"omonospace\", 0xff4f,\n \"one\", 0x0031,\n \"onearabic\", 0x0661,\n \"onebengali\", 0x09e7,\n \"onecircle\", 0x2460,\n \"onecircleinversesansserif\", 0x278a,\n \"onedeva\", 0x0967,\n \"onedotenleader\", 0x2024,\n \"oneeighth\", 0x215b,\n \"onefitted\", 0xf6dc,\n \"onegujarati\", 0x0ae7,\n \"onegurmukhi\", 0x0a67,\n \"onehackarabic\", 0x0661,\n \"onehalf\", 0x00bd,\n \"onehangzhou\", 0x3021,\n \"oneideographicparen\", 0x3220,\n \"oneinferior\", 0x2081,\n \"onemonospace\", 0xff11,\n \"onenumeratorbengali\", 0x09f4,\n \"oneoldstyle\", 0xf731,\n \"oneparen\", 0x2474,\n \"oneperiod\", 0x2488,\n \"onepersian\", 0x06f1,\n \"onequarter\", 0x00bc,\n \"oneroman\", 0x2170,\n \"onesuperior\", 0x00b9,\n \"onethai\", 0x0e51,\n \"onethird\", 0x2153,\n \"oogonek\", 0x01eb,\n \"oogonekmacron\", 0x01ed,\n \"oogurmukhi\", 0x0a13,\n \"oomatragurmukhi\", 0x0a4b,\n \"oopen\", 0x0254,\n \"oparen\", 0x24aa,\n \"openbullet\", 0x25e6,\n \"option\", 0x2325,\n \"ordfeminine\", 0x00aa,\n \"ordmasculine\", 0x00ba,\n \"orthogonal\", 0x221f,\n \"oshortdeva\", 0x0912,\n \"oshortvowelsigndeva\", 0x094a,\n \"oslash\", 0x00f8,\n \"oslashacute\", 0x01ff,\n \"osmallhiragana\", 0x3049,\n \"osmallkatakana\", 0x30a9,\n \"osmallkatakanahalfwidth\", 0xff6b,\n \"ostrokeacute\", 0x01ff,\n \"osuperior\", 0xf6f0,\n \"otcyrillic\", 0x047f,\n \"otilde\", 0x00f5,\n \"otildeacute\", 0x1e4d,\n \"otildedieresis\", 0x1e4f,\n \"oubopomofo\", 0x3121,\n \"overline\", 0x203e,\n \"overlinecenterline\", 0xfe4a,\n \"overlinecmb\", 0x0305,\n \"overlinedashed\", 0xfe49,\n \"overlinedblwavy\", 0xfe4c,\n \"overlinewavy\", 0xfe4b,\n \"overscore\", 0x00af,\n \"ovowelsignbengali\", 0x09cb,\n \"ovowelsigndeva\", 0x094b,\n \"ovowelsigngujarati\", 0x0acb,\n \"p\", 0x0070,\n \"paampssquare\", 0x3380,\n \"paasentosquare\", 0x332b,\n \"pabengali\", 0x09aa,\n \"pacute\", 0x1e55,\n \"padeva\", 0x092a,\n \"pagedown\", 0x21df,\n \"pageup\", 0x21de,\n \"pagujarati\", 0x0aaa,\n \"pagurmukhi\", 0x0a2a,\n \"pahiragana\", 0x3071,\n \"paiyannoithai\", 0x0e2f,\n \"pakatakana\", 0x30d1,\n \"palatalizationcyrilliccmb\", 0x0484,\n \"palochkacyrillic\", 0x04c0,\n \"pansioskorean\", 0x317f,\n \"paragraph\", 0x00b6,\n \"parallel\", 0x2225,\n \"parenleft\", 0x0028,\n \"parenleftaltonearabic\", 0xfd3e,\n \"parenleftbt\", 0xf8ed,\n \"parenleftex\", 0xf8ec,\n \"parenleftinferior\", 0x208d,\n \"parenleftmonospace\", 0xff08,\n \"parenleftsmall\", 0xfe59,\n \"parenleftsuperior\", 0x207d,\n \"parenlefttp\", 0xf8eb,\n \"parenleftvertical\", 0xfe35,\n \"parenright\", 0x0029,\n \"parenrightaltonearabic\", 0xfd3f,\n \"parenrightbt\", 0xf8f8,\n \"parenrightex\", 0xf8f7,\n \"parenrightinferior\", 0x208e,\n \"parenrightmonospace\", 0xff09,\n \"parenrightsmall\", 0xfe5a,\n \"parenrightsuperior\", 0x207e,\n \"parenrighttp\", 0xf8f6,\n \"parenrightvertical\", 0xfe36,\n \"partialdiff\", 0x2202,\n \"paseqhebrew\", 0x05c0,\n \"pashtahebrew\", 0x0599,\n \"pasquare\", 0x33a9,\n \"patah\", 0x05b7,\n \"patah11\", 0x05b7,\n \"patah1d\", 0x05b7,\n \"patah2a\", 0x05b7,\n \"patahhebrew\", 0x05b7,\n \"patahnarrowhebrew\", 0x05b7,\n \"patahquarterhebrew\", 0x05b7,\n \"patahwidehebrew\", 0x05b7,\n \"pazerhebrew\", 0x05a1,\n \"pbopomofo\", 0x3106,\n \"pcircle\", 0x24df,\n \"pdotaccent\", 0x1e57,\n \"pe\", 0x05e4,\n \"pecyrillic\", 0x043f,\n \"pedagesh\", 0xfb44,\n \"pedageshhebrew\", 0xfb44,\n \"peezisquare\", 0x333b,\n \"pefinaldageshhebrew\", 0xfb43,\n \"peharabic\", 0x067e,\n \"peharmenian\", 0x057a,\n \"pehebrew\", 0x05e4,\n \"pehfinalarabic\", 0xfb57,\n \"pehinitialarabic\", 0xfb58,\n \"pehiragana\", 0x307a,\n \"pehmedialarabic\", 0xfb59,\n \"pekatakana\", 0x30da,\n \"pemiddlehookcyrillic\", 0x04a7,\n \"perafehebrew\", 0xfb4e,\n \"percent\", 0x0025,\n \"percentarabic\", 0x066a,\n \"percentmonospace\", 0xff05,\n \"percentsmall\", 0xfe6a,\n \"period\", 0x002e,\n \"periodarmenian\", 0x0589,\n \"periodcentered\", 0x00b7,\n \"periodhalfwidth\", 0xff61,\n \"periodinferior\", 0xf6e7,\n \"periodmonospace\", 0xff0e,\n \"periodsmall\", 0xfe52,\n \"periodsuperior\", 0xf6e8,\n \"perispomenigreekcmb\", 0x0342,\n \"perpendicular\", 0x22a5,\n \"perthousand\", 0x2030,\n \"peseta\", 0x20a7,\n \"pfsquare\", 0x338a,\n \"phabengali\", 0x09ab,\n \"phadeva\", 0x092b,\n \"phagujarati\", 0x0aab,\n \"phagurmukhi\", 0x0a2b,\n \"phi\", 0x03c6,\n \"phi1\", 0x03d5,\n \"phieuphacirclekorean\", 0x327a,\n \"phieuphaparenkorean\", 0x321a,\n \"phieuphcirclekorean\", 0x326c,\n \"phieuphkorean\", 0x314d,\n \"phieuphparenkorean\", 0x320c,\n \"philatin\", 0x0278,\n \"phinthuthai\", 0x0e3a,\n \"phisymbolgreek\", 0x03d5,\n \"phook\", 0x01a5,\n \"phophanthai\", 0x0e1e,\n \"phophungthai\", 0x0e1c,\n \"phosamphaothai\", 0x0e20,\n \"pi\", 0x03c0,\n \"pieupacirclekorean\", 0x3273,\n \"pieupaparenkorean\", 0x3213,\n \"pieupcieuckorean\", 0x3176,\n \"pieupcirclekorean\", 0x3265,\n \"pieupkiyeokkorean\", 0x3172,\n \"pieupkorean\", 0x3142,\n \"pieupparenkorean\", 0x3205,\n \"pieupsioskiyeokkorean\", 0x3174,\n \"pieupsioskorean\", 0x3144,\n \"pieupsiostikeutkorean\", 0x3175,\n \"pieupthieuthkorean\", 0x3177,\n \"pieuptikeutkorean\", 0x3173,\n \"pihiragana\", 0x3074,\n \"pikatakana\", 0x30d4,\n \"pisymbolgreek\", 0x03d6,\n \"piwrarmenian\", 0x0583,\n \"plus\", 0x002b,\n \"plusbelowcmb\", 0x031f,\n \"pluscircle\", 0x2295,\n \"plusminus\", 0x00b1,\n \"plusmod\", 0x02d6,\n \"plusmonospace\", 0xff0b,\n \"plussmall\", 0xfe62,\n \"plussuperior\", 0x207a,\n \"pmonospace\", 0xff50,\n \"pmsquare\", 0x33d8,\n \"pohiragana\", 0x307d,\n \"pointingindexdownwhite\", 0x261f,\n \"pointingindexleftwhite\", 0x261c,\n \"pointingindexrightwhite\", 0x261e,\n \"pointingindexupwhite\", 0x261d,\n \"pokatakana\", 0x30dd,\n \"poplathai\", 0x0e1b,\n \"postalmark\", 0x3012,\n \"postalmarkface\", 0x3020,\n \"pparen\", 0x24ab,\n \"precedes\", 0x227a,\n \"prescription\", 0x211e,\n \"primemod\", 0x02b9,\n \"primereversed\", 0x2035,\n \"product\", 0x220f,\n \"projective\", 0x2305,\n \"prolongedkana\", 0x30fc,\n \"propellor\", 0x2318,\n \"propersubset\", 0x2282,\n \"propersuperset\", 0x2283,\n \"proportion\", 0x2237,\n \"proportional\", 0x221d,\n \"psi\", 0x03c8,\n \"psicyrillic\", 0x0471,\n \"psilipneumatacyrilliccmb\", 0x0486,\n \"pssquare\", 0x33b0,\n \"puhiragana\", 0x3077,\n \"pukatakana\", 0x30d7,\n \"pvsquare\", 0x33b4,\n \"pwsquare\", 0x33ba,\n \"q\", 0x0071,\n \"qadeva\", 0x0958,\n \"qadmahebrew\", 0x05a8,\n \"qafarabic\", 0x0642,\n \"qaffinalarabic\", 0xfed6,\n \"qafinitialarabic\", 0xfed7,\n \"qafmedialarabic\", 0xfed8,\n \"qamats\", 0x05b8,\n \"qamats10\", 0x05b8,\n \"qamats1a\", 0x05b8,\n \"qamats1c\", 0x05b8,\n \"qamats27\", 0x05b8,\n \"qamats29\", 0x05b8,\n \"qamats33\", 0x05b8,\n \"qamatsde\", 0x05b8,\n \"qamatshebrew\", 0x05b8,\n \"qamatsnarrowhebrew\", 0x05b8,\n \"qamatsqatanhebrew\", 0x05b8,\n \"qamatsqatannarrowhebrew\", 0x05b8,\n \"qamatsqatanquarterhebrew\", 0x05b8,\n \"qamatsqatanwidehebrew\", 0x05b8,\n \"qamatsquarterhebrew\", 0x05b8,\n \"qamatswidehebrew\", 0x05b8,\n \"qarneyparahebrew\", 0x059f,\n \"qbopomofo\", 0x3111,\n \"qcircle\", 0x24e0,\n \"qhook\", 0x02a0,\n \"qmonospace\", 0xff51,\n \"qof\", 0x05e7,\n \"qofdagesh\", 0xfb47,\n \"qofdageshhebrew\", 0xfb47,\n \"qofhebrew\", 0x05e7,\n \"qparen\", 0x24ac,\n \"quarternote\", 0x2669,\n \"qubuts\", 0x05bb,\n \"qubuts18\", 0x05bb,\n \"qubuts25\", 0x05bb,\n \"qubuts31\", 0x05bb,\n \"qubutshebrew\", 0x05bb,\n \"qubutsnarrowhebrew\", 0x05bb,\n \"qubutsquarterhebrew\", 0x05bb,\n \"qubutswidehebrew\", 0x05bb,\n \"question\", 0x003f,\n \"questionarabic\", 0x061f,\n \"questionarmenian\", 0x055e,\n \"questiondown\", 0x00bf,\n \"questiondownsmall\", 0xf7bf,\n \"questiongreek\", 0x037e,\n \"questionmonospace\", 0xff1f,\n \"questionsmall\", 0xf73f,\n \"quotedbl\", 0x0022,\n \"quotedblbase\", 0x201e,\n \"quotedblleft\", 0x201c,\n \"quotedblmonospace\", 0xff02,\n \"quotedblprime\", 0x301e,\n \"quotedblprimereversed\", 0x301d,\n \"quotedblright\", 0x201d,\n \"quoteleft\", 0x2018,\n \"quoteleftreversed\", 0x201b,\n \"quotereversed\", 0x201b,\n \"quoteright\", 0x2019,\n \"quoterightn\", 0x0149,\n \"quotesinglbase\", 0x201a,\n \"quotesingle\", 0x0027,\n \"quotesinglemonospace\", 0xff07,\n \"r\", 0x0072,\n \"raarmenian\", 0x057c,\n \"rabengali\", 0x09b0,\n \"racute\", 0x0155,\n \"radeva\", 0x0930,\n \"radical\", 0x221a,\n \"radicalex\", 0xf8e5,\n \"radoverssquare\", 0x33ae,\n \"radoverssquaredsquare\", 0x33af,\n \"radsquare\", 0x33ad,\n \"rafe\", 0x05bf,\n \"rafehebrew\", 0x05bf,\n \"ragujarati\", 0x0ab0,\n \"ragurmukhi\", 0x0a30,\n \"rahiragana\", 0x3089,\n \"rakatakana\", 0x30e9,\n \"rakatakanahalfwidth\", 0xff97,\n \"ralowerdiagonalbengali\", 0x09f1,\n \"ramiddlediagonalbengali\", 0x09f0,\n \"ramshorn\", 0x0264,\n \"ratio\", 0x2236,\n \"rbopomofo\", 0x3116,\n \"rcaron\", 0x0159,\n \"rcedilla\", 0x0157,\n \"rcircle\", 0x24e1,\n \"rcommaaccent\", 0x0157,\n \"rdblgrave\", 0x0211,\n \"rdotaccent\", 0x1e59,\n \"rdotbelow\", 0x1e5b,\n \"rdotbelowmacron\", 0x1e5d,\n \"referencemark\", 0x203b,\n \"reflexsubset\", 0x2286,\n \"reflexsuperset\", 0x2287,\n \"registered\", 0x00ae,\n \"registersans\", 0xf8e8,\n \"registerserif\", 0xf6da,\n \"reharabic\", 0x0631,\n \"reharmenian\", 0x0580,\n \"rehfinalarabic\", 0xfeae,\n \"rehiragana\", 0x308c,\n \"rekatakana\", 0x30ec,\n \"rekatakanahalfwidth\", 0xff9a,\n \"resh\", 0x05e8,\n \"reshdageshhebrew\", 0xfb48,\n \"reshhebrew\", 0x05e8,\n \"reversedtilde\", 0x223d,\n \"reviahebrew\", 0x0597,\n \"reviamugrashhebrew\", 0x0597,\n \"revlogicalnot\", 0x2310,\n \"rfishhook\", 0x027e,\n \"rfishhookreversed\", 0x027f,\n \"rhabengali\", 0x09dd,\n \"rhadeva\", 0x095d,\n \"rho\", 0x03c1,\n \"rhook\", 0x027d,\n \"rhookturned\", 0x027b,\n \"rhookturnedsuperior\", 0x02b5,\n \"rhosymbolgreek\", 0x03f1,\n \"rhotichookmod\", 0x02de,\n \"rieulacirclekorean\", 0x3271,\n \"rieulaparenkorean\", 0x3211,\n \"rieulcirclekorean\", 0x3263,\n \"rieulhieuhkorean\", 0x3140,\n \"rieulkiyeokkorean\", 0x313a,\n \"rieulkiyeoksioskorean\", 0x3169,\n \"rieulkorean\", 0x3139,\n \"rieulmieumkorean\", 0x313b,\n \"rieulpansioskorean\", 0x316c,\n \"rieulparenkorean\", 0x3203,\n \"rieulphieuphkorean\", 0x313f,\n \"rieulpieupkorean\", 0x313c,\n \"rieulpieupsioskorean\", 0x316b,\n \"rieulsioskorean\", 0x313d,\n \"rieulthieuthkorean\", 0x313e,\n \"rieultikeutkorean\", 0x316a,\n \"rieulyeorinhieuhkorean\", 0x316d,\n \"rightangle\", 0x221f,\n \"righttackbelowcmb\", 0x0319,\n \"righttriangle\", 0x22bf,\n \"rihiragana\", 0x308a,\n \"rikatakana\", 0x30ea,\n \"rikatakanahalfwidth\", 0xff98,\n \"ring\", 0x02da,\n \"ringbelowcmb\", 0x0325,\n \"ringcmb\", 0x030a,\n \"ringhalfleft\", 0x02bf,\n \"ringhalfleftarmenian\", 0x0559,\n \"ringhalfleftbelowcmb\", 0x031c,\n \"ringhalfleftcentered\", 0x02d3,\n \"ringhalfright\", 0x02be,\n \"ringhalfrightbelowcmb\", 0x0339,\n \"ringhalfrightcentered\", 0x02d2,\n \"rinvertedbreve\", 0x0213,\n \"rittorusquare\", 0x3351,\n \"rlinebelow\", 0x1e5f,\n \"rlongleg\", 0x027c,\n \"rlonglegturned\", 0x027a,\n \"rmonospace\", 0xff52,\n \"rohiragana\", 0x308d,\n \"rokatakana\", 0x30ed,\n \"rokatakanahalfwidth\", 0xff9b,\n \"roruathai\", 0x0e23,\n \"rparen\", 0x24ad,\n \"rrabengali\", 0x09dc,\n \"rradeva\", 0x0931,\n \"rragurmukhi\", 0x0a5c,\n \"rreharabic\", 0x0691,\n \"rrehfinalarabic\", 0xfb8d,\n \"rrvocalicbengali\", 0x09e0,\n \"rrvocalicdeva\", 0x0960,\n \"rrvocalicgujarati\", 0x0ae0,\n \"rrvocalicvowelsignbengali\", 0x09c4,\n \"rrvocalicvowelsigndeva\", 0x0944,\n \"rrvocalicvowelsigngujarati\", 0x0ac4,\n \"rsuperior\", 0xf6f1,\n \"rtblock\", 0x2590,\n \"rturned\", 0x0279,\n \"rturnedsuperior\", 0x02b4,\n \"ruhiragana\", 0x308b,\n \"rukatakana\", 0x30eb,\n \"rukatakanahalfwidth\", 0xff99,\n \"rupeemarkbengali\", 0x09f2,\n \"rupeesignbengali\", 0x09f3,\n \"rupiah\", 0xf6dd,\n \"ruthai\", 0x0e24,\n \"rvocalicbengali\", 0x098b,\n \"rvocalicdeva\", 0x090b,\n \"rvocalicgujarati\", 0x0a8b,\n \"rvocalicvowelsignbengali\", 0x09c3,\n \"rvocalicvowelsigndeva\", 0x0943,\n \"rvocalicvowelsigngujarati\", 0x0ac3,\n \"s\", 0x0073,\n \"sabengali\", 0x09b8,\n \"sacute\", 0x015b,\n \"sacutedotaccent\", 0x1e65,\n \"sadarabic\", 0x0635,\n \"sadeva\", 0x0938,\n \"sadfinalarabic\", 0xfeba,\n \"sadinitialarabic\", 0xfebb,\n \"sadmedialarabic\", 0xfebc,\n \"sagujarati\", 0x0ab8,\n \"sagurmukhi\", 0x0a38,\n \"sahiragana\", 0x3055,\n \"sakatakana\", 0x30b5,\n \"sakatakanahalfwidth\", 0xff7b,\n \"sallallahoualayhewasallamarabic\", 0xfdfa,\n \"samekh\", 0x05e1,\n \"samekhdagesh\", 0xfb41,\n \"samekhdageshhebrew\", 0xfb41,\n \"samekhhebrew\", 0x05e1,\n \"saraaathai\", 0x0e32,\n \"saraaethai\", 0x0e41,\n \"saraaimaimalaithai\", 0x0e44,\n \"saraaimaimuanthai\", 0x0e43,\n \"saraamthai\", 0x0e33,\n \"saraathai\", 0x0e30,\n \"saraethai\", 0x0e40,\n \"saraiileftthai\", 0xf886,\n \"saraiithai\", 0x0e35,\n \"saraileftthai\", 0xf885,\n \"saraithai\", 0x0e34,\n \"saraothai\", 0x0e42,\n \"saraueeleftthai\", 0xf888,\n \"saraueethai\", 0x0e37,\n \"saraueleftthai\", 0xf887,\n \"sarauethai\", 0x0e36,\n \"sarauthai\", 0x0e38,\n \"sarauuthai\", 0x0e39,\n \"sbopomofo\", 0x3119,\n \"scaron\", 0x0161,\n \"scarondotaccent\", 0x1e67,\n \"scedilla\", 0x015f,\n \"schwa\", 0x0259,\n \"schwacyrillic\", 0x04d9,\n \"schwadieresiscyrillic\", 0x04db,\n \"schwahook\", 0x025a,\n \"scircle\", 0x24e2,\n \"scircumflex\", 0x015d,\n \"scommaaccent\", 0x0219,\n \"sdotaccent\", 0x1e61,\n \"sdotbelow\", 0x1e63,\n \"sdotbelowdotaccent\", 0x1e69,\n \"seagullbelowcmb\", 0x033c,\n \"second\", 0x2033,\n \"secondtonechinese\", 0x02ca,\n \"section\", 0x00a7,\n \"seenarabic\", 0x0633,\n \"seenfinalarabic\", 0xfeb2,\n \"seeninitialarabic\", 0xfeb3,\n \"seenmedialarabic\", 0xfeb4,\n \"segol\", 0x05b6,\n \"segol13\", 0x05b6,\n \"segol1f\", 0x05b6,\n \"segol2c\", 0x05b6,\n \"segolhebrew\", 0x05b6,\n \"segolnarrowhebrew\", 0x05b6,\n \"segolquarterhebrew\", 0x05b6,\n \"segoltahebrew\", 0x0592,\n \"segolwidehebrew\", 0x05b6,\n \"seharmenian\", 0x057d,\n \"sehiragana\", 0x305b,\n \"sekatakana\", 0x30bb,\n \"sekatakanahalfwidth\", 0xff7e,\n \"semicolon\", 0x003b,\n \"semicolonarabic\", 0x061b,\n \"semicolonmonospace\", 0xff1b,\n \"semicolonsmall\", 0xfe54,\n \"semivoicedmarkkana\", 0x309c,\n \"semivoicedmarkkanahalfwidth\", 0xff9f,\n \"sentisquare\", 0x3322,\n \"sentosquare\", 0x3323,\n \"seven\", 0x0037,\n \"sevenarabic\", 0x0667,\n \"sevenbengali\", 0x09ed,\n \"sevencircle\", 0x2466,\n \"sevencircleinversesansserif\", 0x2790,\n \"sevendeva\", 0x096d,\n \"seveneighths\", 0x215e,\n \"sevengujarati\", 0x0aed,\n \"sevengurmukhi\", 0x0a6d,\n \"sevenhackarabic\", 0x0667,\n \"sevenhangzhou\", 0x3027,\n \"sevenideographicparen\", 0x3226,\n \"seveninferior\", 0x2087,\n \"sevenmonospace\", 0xff17,\n \"sevenoldstyle\", 0xf737,\n \"sevenparen\", 0x247a,\n \"sevenperiod\", 0x248e,\n \"sevenpersian\", 0x06f7,\n \"sevenroman\", 0x2176,\n \"sevensuperior\", 0x2077,\n \"seventeencircle\", 0x2470,\n \"seventeenparen\", 0x2484,\n \"seventeenperiod\", 0x2498,\n \"seventhai\", 0x0e57,\n \"sfthyphen\", 0x00ad,\n \"shaarmenian\", 0x0577,\n \"shabengali\", 0x09b6,\n \"shacyrillic\", 0x0448,\n \"shaddaarabic\", 0x0651,\n \"shaddadammaarabic\", 0xfc61,\n \"shaddadammatanarabic\", 0xfc5e,\n \"shaddafathaarabic\", 0xfc60,\n \"shaddakasraarabic\", 0xfc62,\n \"shaddakasratanarabic\", 0xfc5f,\n \"shade\", 0x2592,\n \"shadedark\", 0x2593,\n \"shadelight\", 0x2591,\n \"shademedium\", 0x2592,\n \"shadeva\", 0x0936,\n \"shagujarati\", 0x0ab6,\n \"shagurmukhi\", 0x0a36,\n \"shalshelethebrew\", 0x0593,\n \"shbopomofo\", 0x3115,\n \"shchacyrillic\", 0x0449,\n \"sheenarabic\", 0x0634,\n \"sheenfinalarabic\", 0xfeb6,\n \"sheeninitialarabic\", 0xfeb7,\n \"sheenmedialarabic\", 0xfeb8,\n \"sheicoptic\", 0x03e3,\n \"sheqel\", 0x20aa,\n \"sheqelhebrew\", 0x20aa,\n \"sheva\", 0x05b0,\n \"sheva115\", 0x05b0,\n \"sheva15\", 0x05b0,\n \"sheva22\", 0x05b0,\n \"sheva2e\", 0x05b0,\n \"shevahebrew\", 0x05b0,\n \"shevanarrowhebrew\", 0x05b0,\n \"shevaquarterhebrew\", 0x05b0,\n \"shevawidehebrew\", 0x05b0,\n \"shhacyrillic\", 0x04bb,\n \"shimacoptic\", 0x03ed,\n \"shin\", 0x05e9,\n \"shindagesh\", 0xfb49,\n \"shindageshhebrew\", 0xfb49,\n \"shindageshshindot\", 0xfb2c,\n \"shindageshshindothebrew\", 0xfb2c,\n \"shindageshsindot\", 0xfb2d,\n \"shindageshsindothebrew\", 0xfb2d,\n \"shindothebrew\", 0x05c1,\n \"shinhebrew\", 0x05e9,\n \"shinshindot\", 0xfb2a,\n \"shinshindothebrew\", 0xfb2a,\n \"shinsindot\", 0xfb2b,\n \"shinsindothebrew\", 0xfb2b,\n \"shook\", 0x0282,\n \"sigma\", 0x03c3,\n \"sigma1\", 0x03c2,\n \"sigmafinal\", 0x03c2,\n \"sigmalunatesymbolgreek\", 0x03f2,\n \"sihiragana\", 0x3057,\n \"sikatakana\", 0x30b7,\n \"sikatakanahalfwidth\", 0xff7c,\n \"siluqhebrew\", 0x05bd,\n \"siluqlefthebrew\", 0x05bd,\n \"similar\", 0x223c,\n \"sindothebrew\", 0x05c2,\n \"siosacirclekorean\", 0x3274,\n \"siosaparenkorean\", 0x3214,\n \"sioscieuckorean\", 0x317e,\n \"sioscirclekorean\", 0x3266,\n \"sioskiyeokkorean\", 0x317a,\n \"sioskorean\", 0x3145,\n \"siosnieunkorean\", 0x317b,\n \"siosparenkorean\", 0x3206,\n \"siospieupkorean\", 0x317d,\n \"siostikeutkorean\", 0x317c,\n \"six\", 0x0036,\n \"sixarabic\", 0x0666,\n \"sixbengali\", 0x09ec,\n \"sixcircle\", 0x2465,\n \"sixcircleinversesansserif\", 0x278f,\n \"sixdeva\", 0x096c,\n \"sixgujarati\", 0x0aec,\n \"sixgurmukhi\", 0x0a6c,\n \"sixhackarabic\", 0x0666,\n \"sixhangzhou\", 0x3026,\n \"sixideographicparen\", 0x3225,\n \"sixinferior\", 0x2086,\n \"sixmonospace\", 0xff16,\n \"sixoldstyle\", 0xf736,\n \"sixparen\", 0x2479,\n \"sixperiod\", 0x248d,\n \"sixpersian\", 0x06f6,\n \"sixroman\", 0x2175,\n \"sixsuperior\", 0x2076,\n \"sixteencircle\", 0x246f,\n \"sixteencurrencydenominatorbengali\", 0x09f9,\n \"sixteenparen\", 0x2483,\n \"sixteenperiod\", 0x2497,\n \"sixthai\", 0x0e56,\n \"slash\", 0x002f,\n \"slashmonospace\", 0xff0f,\n \"slong\", 0x017f,\n \"slongdotaccent\", 0x1e9b,\n \"smileface\", 0x263a,\n \"smonospace\", 0xff53,\n \"sofpasuqhebrew\", 0x05c3,\n \"softhyphen\", 0x00ad,\n \"softsigncyrillic\", 0x044c,\n \"sohiragana\", 0x305d,\n \"sokatakana\", 0x30bd,\n \"sokatakanahalfwidth\", 0xff7f,\n \"soliduslongoverlaycmb\", 0x0338,\n \"solidusshortoverlaycmb\", 0x0337,\n \"sorusithai\", 0x0e29,\n \"sosalathai\", 0x0e28,\n \"sosothai\", 0x0e0b,\n \"sosuathai\", 0x0e2a,\n \"space\", 0x0020,\n \"spacehackarabic\", 0x0020,\n \"spade\", 0x2660,\n \"spadesuitblack\", 0x2660,\n \"spadesuitwhite\", 0x2664,\n \"sparen\", 0x24ae,\n \"squarebelowcmb\", 0x033b,\n \"squarecc\", 0x33c4,\n \"squarecm\", 0x339d,\n \"squarediagonalcrosshatchfill\", 0x25a9,\n \"squarehorizontalfill\", 0x25a4,\n \"squarekg\", 0x338f,\n \"squarekm\", 0x339e,\n \"squarekmcapital\", 0x33ce,\n \"squareln\", 0x33d1,\n \"squarelog\", 0x33d2,\n \"squaremg\", 0x338e,\n \"squaremil\", 0x33d5,\n \"squaremm\", 0x339c,\n \"squaremsquared\", 0x33a1,\n \"squareorthogonalcrosshatchfill\", 0x25a6,\n \"squareupperlefttolowerrightfill\", 0x25a7,\n \"squareupperrighttolowerleftfill\", 0x25a8,\n \"squareverticalfill\", 0x25a5,\n \"squarewhitewithsmallblack\", 0x25a3,\n \"srsquare\", 0x33db,\n \"ssabengali\", 0x09b7,\n \"ssadeva\", 0x0937,\n \"ssagujarati\", 0x0ab7,\n \"ssangcieuckorean\", 0x3149,\n \"ssanghieuhkorean\", 0x3185,\n \"ssangieungkorean\", 0x3180,\n \"ssangkiyeokkorean\", 0x3132,\n \"ssangnieunkorean\", 0x3165,\n \"ssangpieupkorean\", 0x3143,\n \"ssangsioskorean\", 0x3146,\n \"ssangtikeutkorean\", 0x3138,\n \"ssuperior\", 0xf6f2,\n \"sterling\", 0x00a3,\n \"sterlingmonospace\", 0xffe1,\n \"strokelongoverlaycmb\", 0x0336,\n \"strokeshortoverlaycmb\", 0x0335,\n \"subset\", 0x2282,\n \"subsetnotequal\", 0x228a,\n \"subsetorequal\", 0x2286,\n \"succeeds\", 0x227b,\n \"suchthat\", 0x220b,\n \"suhiragana\", 0x3059,\n \"sukatakana\", 0x30b9,\n \"sukatakanahalfwidth\", 0xff7d,\n \"sukunarabic\", 0x0652,\n \"summation\", 0x2211,\n \"sun\", 0x263c,\n \"superset\", 0x2283,\n \"supersetnotequal\", 0x228b,\n \"supersetorequal\", 0x2287,\n \"svsquare\", 0x33dc,\n \"syouwaerasquare\", 0x337c,\n \"t\", 0x0074,\n \"tabengali\", 0x09a4,\n \"tackdown\", 0x22a4,\n \"tackleft\", 0x22a3,\n \"tadeva\", 0x0924,\n \"tagujarati\", 0x0aa4,\n \"tagurmukhi\", 0x0a24,\n \"taharabic\", 0x0637,\n \"tahfinalarabic\", 0xfec2,\n \"tahinitialarabic\", 0xfec3,\n \"tahiragana\", 0x305f,\n \"tahmedialarabic\", 0xfec4,\n \"taisyouerasquare\", 0x337d,\n \"takatakana\", 0x30bf,\n \"takatakanahalfwidth\", 0xff80,\n \"tatweelarabic\", 0x0640,\n \"tau\", 0x03c4,\n \"tav\", 0x05ea,\n \"tavdages\", 0xfb4a,\n \"tavdagesh\", 0xfb4a,\n \"tavdageshhebrew\", 0xfb4a,\n \"tavhebrew\", 0x05ea,\n \"tbar\", 0x0167,\n \"tbopomofo\", 0x310a,\n \"tcaron\", 0x0165,\n \"tccurl\", 0x02a8,\n \"tcedilla\", 0x0163,\n \"tcheharabic\", 0x0686,\n \"tchehfinalarabic\", 0xfb7b,\n \"tchehinitialarabic\", 0xfb7c,\n \"tchehmedialarabic\", 0xfb7d,\n \"tcircle\", 0x24e3,\n \"tcircumflexbelow\", 0x1e71,\n \"tcommaaccent\", 0x0163,\n \"tdieresis\", 0x1e97,\n \"tdotaccent\", 0x1e6b,\n \"tdotbelow\", 0x1e6d,\n \"tecyrillic\", 0x0442,\n \"tedescendercyrillic\", 0x04ad,\n \"teharabic\", 0x062a,\n \"tehfinalarabic\", 0xfe96,\n \"tehhahinitialarabic\", 0xfca2,\n \"tehhahisolatedarabic\", 0xfc0c,\n \"tehinitialarabic\", 0xfe97,\n \"tehiragana\", 0x3066,\n \"tehjeeminitialarabic\", 0xfca1,\n \"tehjeemisolatedarabic\", 0xfc0b,\n \"tehmarbutaarabic\", 0x0629,\n \"tehmarbutafinalarabic\", 0xfe94,\n \"tehmedialarabic\", 0xfe98,\n \"tehmeeminitialarabic\", 0xfca4,\n \"tehmeemisolatedarabic\", 0xfc0e,\n \"tehnoonfinalarabic\", 0xfc73,\n \"tekatakana\", 0x30c6,\n \"tekatakanahalfwidth\", 0xff83,\n \"telephone\", 0x2121,\n \"telephoneblack\", 0x260e,\n \"telishagedolahebrew\", 0x05a0,\n \"telishaqetanahebrew\", 0x05a9,\n \"tencircle\", 0x2469,\n \"tenideographicparen\", 0x3229,\n \"tenparen\", 0x247d,\n \"tenperiod\", 0x2491,\n \"tenroman\", 0x2179,\n \"tesh\", 0x02a7,\n \"tet\", 0x05d8,\n \"tetdagesh\", 0xfb38,\n \"tetdageshhebrew\", 0xfb38,\n \"tethebrew\", 0x05d8,\n \"tetsecyrillic\", 0x04b5,\n \"tevirhebrew\", 0x059b,\n \"tevirlefthebrew\", 0x059b,\n \"thabengali\", 0x09a5,\n \"thadeva\", 0x0925,\n \"thagujarati\", 0x0aa5,\n \"thagurmukhi\", 0x0a25,\n \"thalarabic\", 0x0630,\n \"thalfinalarabic\", 0xfeac,\n \"thanthakhatlowleftthai\", 0xf898,\n \"thanthakhatlowrightthai\", 0xf897,\n \"thanthakhatthai\", 0x0e4c,\n \"thanthakhatupperleftthai\", 0xf896,\n \"theharabic\", 0x062b,\n \"thehfinalarabic\", 0xfe9a,\n \"thehinitialarabic\", 0xfe9b,\n \"thehmedialarabic\", 0xfe9c,\n \"thereexists\", 0x2203,\n \"therefore\", 0x2234,\n \"theta\", 0x03b8,\n \"theta1\", 0x03d1,\n \"thetasymbolgreek\", 0x03d1,\n \"thieuthacirclekorean\", 0x3279,\n \"thieuthaparenkorean\", 0x3219,\n \"thieuthcirclekorean\", 0x326b,\n \"thieuthkorean\", 0x314c,\n \"thieuthparenkorean\", 0x320b,\n \"thirteencircle\", 0x246c,\n \"thirteenparen\", 0x2480,\n \"thirteenperiod\", 0x2494,\n \"thonangmonthothai\", 0x0e11,\n \"thook\", 0x01ad,\n \"thophuthaothai\", 0x0e12,\n \"thorn\", 0x00fe,\n \"thothahanthai\", 0x0e17,\n \"thothanthai\", 0x0e10,\n \"thothongthai\", 0x0e18,\n \"thothungthai\", 0x0e16,\n \"thousandcyrillic\", 0x0482,\n \"thousandsseparatorarabic\", 0x066c,\n \"thousandsseparatorpersian\", 0x066c,\n \"three\", 0x0033,\n \"threearabic\", 0x0663,\n \"threebengali\", 0x09e9,\n \"threecircle\", 0x2462,\n \"threecircleinversesansserif\", 0x278c,\n \"threedeva\", 0x0969,\n \"threeeighths\", 0x215c,\n \"threegujarati\", 0x0ae9,\n \"threegurmukhi\", 0x0a69,\n \"threehackarabic\", 0x0663,\n \"threehangzhou\", 0x3023,\n \"threeideographicparen\", 0x3222,\n \"threeinferior\", 0x2083,\n \"threemonospace\", 0xff13,\n \"threenumeratorbengali\", 0x09f6,\n \"threeoldstyle\", 0xf733,\n \"threeparen\", 0x2476,\n \"threeperiod\", 0x248a,\n \"threepersian\", 0x06f3,\n \"threequarters\", 0x00be,\n \"threequartersemdash\", 0xf6de,\n \"threeroman\", 0x2172,\n \"threesuperior\", 0x00b3,\n \"threethai\", 0x0e53,\n \"thzsquare\", 0x3394,\n \"tihiragana\", 0x3061,\n \"tikatakana\", 0x30c1,\n \"tikatakanahalfwidth\", 0xff81,\n \"tikeutacirclekorean\", 0x3270,\n \"tikeutaparenkorean\", 0x3210,\n \"tikeutcirclekorean\", 0x3262,\n \"tikeutkorean\", 0x3137,\n \"tikeutparenkorean\", 0x3202,\n \"tilde\", 0x02dc,\n \"tildebelowcmb\", 0x0330,\n \"tildecmb\", 0x0303,\n \"tildecomb\", 0x0303,\n \"tildedoublecmb\", 0x0360,\n \"tildeoperator\", 0x223c,\n \"tildeoverlaycmb\", 0x0334,\n \"tildeverticalcmb\", 0x033e,\n \"timescircle\", 0x2297,\n \"tipehahebrew\", 0x0596,\n \"tipehalefthebrew\", 0x0596,\n \"tippigurmukhi\", 0x0a70,\n \"titlocyrilliccmb\", 0x0483,\n \"tiwnarmenian\", 0x057f,\n \"tlinebelow\", 0x1e6f,\n \"tmonospace\", 0xff54,\n \"toarmenian\", 0x0569,\n \"tohiragana\", 0x3068,\n \"tokatakana\", 0x30c8,\n \"tokatakanahalfwidth\", 0xff84,\n \"tonebarextrahighmod\", 0x02e5,\n \"tonebarextralowmod\", 0x02e9,\n \"tonebarhighmod\", 0x02e6,\n \"tonebarlowmod\", 0x02e8,\n \"tonebarmidmod\", 0x02e7,\n \"tonefive\", 0x01bd,\n \"tonesix\", 0x0185,\n \"tonetwo\", 0x01a8,\n \"tonos\", 0x0384,\n \"tonsquare\", 0x3327,\n \"topatakthai\", 0x0e0f,\n \"tortoiseshellbracketleft\", 0x3014,\n \"tortoiseshellbracketleftsmall\", 0xfe5d,\n \"tortoiseshellbracketleftvertical\", 0xfe39,\n \"tortoiseshellbracketright\", 0x3015,\n \"tortoiseshellbracketrightsmall\", 0xfe5e,\n \"tortoiseshellbracketrightvertical\", 0xfe3a,\n \"totaothai\", 0x0e15,\n \"tpalatalhook\", 0x01ab,\n \"tparen\", 0x24af,\n \"trademark\", 0x2122,\n \"trademarksans\", 0xf8ea,\n \"trademarkserif\", 0xf6db,\n \"tretroflexhook\", 0x0288,\n \"triagdn\", 0x25bc,\n \"triaglf\", 0x25c4,\n \"triagrt\", 0x25ba,\n \"triagup\", 0x25b2,\n \"ts\", 0x02a6,\n \"tsadi\", 0x05e6,\n \"tsadidagesh\", 0xfb46,\n \"tsadidageshhebrew\", 0xfb46,\n \"tsadihebrew\", 0x05e6,\n \"tsecyrillic\", 0x0446,\n \"tsere\", 0x05b5,\n \"tsere12\", 0x05b5,\n \"tsere1e\", 0x05b5,\n \"tsere2b\", 0x05b5,\n \"tserehebrew\", 0x05b5,\n \"tserenarrowhebrew\", 0x05b5,\n \"tserequarterhebrew\", 0x05b5,\n \"tserewidehebrew\", 0x05b5,\n \"tshecyrillic\", 0x045b,\n \"tsuperior\", 0xf6f3,\n \"ttabengali\", 0x099f,\n \"ttadeva\", 0x091f,\n \"ttagujarati\", 0x0a9f,\n \"ttagurmukhi\", 0x0a1f,\n \"tteharabic\", 0x0679,\n \"ttehfinalarabic\", 0xfb67,\n \"ttehinitialarabic\", 0xfb68,\n \"ttehmedialarabic\", 0xfb69,\n \"tthabengali\", 0x09a0,\n \"tthadeva\", 0x0920,\n \"tthagujarati\", 0x0aa0,\n \"tthagurmukhi\", 0x0a20,\n \"tturned\", 0x0287,\n \"tuhiragana\", 0x3064,\n \"tukatakana\", 0x30c4,\n \"tukatakanahalfwidth\", 0xff82,\n \"tusmallhiragana\", 0x3063,\n \"tusmallkatakana\", 0x30c3,\n \"tusmallkatakanahalfwidth\", 0xff6f,\n \"twelvecircle\", 0x246b,\n \"twelveparen\", 0x247f,\n \"twelveperiod\", 0x2493,\n \"twelveroman\", 0x217b,\n \"twentycircle\", 0x2473,\n \"twentyhangzhou\", 0x5344,\n \"twentyparen\", 0x2487,\n \"twentyperiod\", 0x249b,\n \"two\", 0x0032,\n \"twoarabic\", 0x0662,\n \"twobengali\", 0x09e8,\n \"twocircle\", 0x2461,\n \"twocircleinversesansserif\", 0x278b,\n \"twodeva\", 0x0968,\n \"twodotenleader\", 0x2025,\n \"twodotleader\", 0x2025,\n \"twodotleadervertical\", 0xfe30,\n \"twogujarati\", 0x0ae8,\n \"twogurmukhi\", 0x0a68,\n \"twohackarabic\", 0x0662,\n \"twohangzhou\", 0x3022,\n \"twoideographicparen\", 0x3221,\n \"twoinferior\", 0x2082,\n \"twomonospace\", 0xff12,\n \"twonumeratorbengali\", 0x09f5,\n \"twooldstyle\", 0xf732,\n \"twoparen\", 0x2475,\n \"twoperiod\", 0x2489,\n \"twopersian\", 0x06f2,\n \"tworoman\", 0x2171,\n \"twostroke\", 0x01bb,\n \"twosuperior\", 0x00b2,\n \"twothai\", 0x0e52,\n \"twothirds\", 0x2154,\n \"u\", 0x0075,\n \"uacute\", 0x00fa,\n \"ubar\", 0x0289,\n \"ubengali\", 0x0989,\n \"ubopomofo\", 0x3128,\n \"ubreve\", 0x016d,\n \"ucaron\", 0x01d4,\n \"ucircle\", 0x24e4,\n \"ucircumflex\", 0x00fb,\n \"ucircumflexbelow\", 0x1e77,\n \"ucyrillic\", 0x0443,\n \"udattadeva\", 0x0951,\n \"udblacute\", 0x0171,\n \"udblgrave\", 0x0215,\n \"udeva\", 0x0909,\n \"udieresis\", 0x00fc,\n \"udieresisacute\", 0x01d8,\n \"udieresisbelow\", 0x1e73,\n \"udieresiscaron\", 0x01da,\n \"udieresiscyrillic\", 0x04f1,\n \"udieresisgrave\", 0x01dc,\n \"udieresismacron\", 0x01d6,\n \"udotbelow\", 0x1ee5,\n \"ugrave\", 0x00f9,\n \"ugujarati\", 0x0a89,\n \"ugurmukhi\", 0x0a09,\n \"uhiragana\", 0x3046,\n \"uhookabove\", 0x1ee7,\n \"uhorn\", 0x01b0,\n \"uhornacute\", 0x1ee9,\n \"uhorndotbelow\", 0x1ef1,\n \"uhorngrave\", 0x1eeb,\n \"uhornhookabove\", 0x1eed,\n \"uhorntilde\", 0x1eef,\n \"uhungarumlaut\", 0x0171,\n \"uhungarumlautcyrillic\", 0x04f3,\n \"uinvertedbreve\", 0x0217,\n \"ukatakana\", 0x30a6,\n \"ukatakanahalfwidth\", 0xff73,\n \"ukcyrillic\", 0x0479,\n \"ukorean\", 0x315c,\n \"umacron\", 0x016b,\n \"umacroncyrillic\", 0x04ef,\n \"umacrondieresis\", 0x1e7b,\n \"umatragurmukhi\", 0x0a41,\n \"umonospace\", 0xff55,\n \"underscore\", 0x005f,\n \"underscoredbl\", 0x2017,\n \"underscoremonospace\", 0xff3f,\n \"underscorevertical\", 0xfe33,\n \"underscorewavy\", 0xfe4f,\n \"union\", 0x222a,\n \"universal\", 0x2200,\n \"uogonek\", 0x0173,\n \"uparen\", 0x24b0,\n \"upblock\", 0x2580,\n \"upperdothebrew\", 0x05c4,\n \"upsilon\", 0x03c5,\n \"upsilondieresis\", 0x03cb,\n \"upsilondieresistonos\", 0x03b0,\n \"upsilonlatin\", 0x028a,\n \"upsilontonos\", 0x03cd,\n \"uptackbelowcmb\", 0x031d,\n \"uptackmod\", 0x02d4,\n \"uragurmukhi\", 0x0a73,\n \"uring\", 0x016f,\n \"ushortcyrillic\", 0x045e,\n \"usmallhiragana\", 0x3045,\n \"usmallkatakana\", 0x30a5,\n \"usmallkatakanahalfwidth\", 0xff69,\n \"ustraightcyrillic\", 0x04af,\n \"ustraightstrokecyrillic\", 0x04b1,\n \"utilde\", 0x0169,\n \"utildeacute\", 0x1e79,\n \"utildebelow\", 0x1e75,\n \"uubengali\", 0x098a,\n \"uudeva\", 0x090a,\n \"uugujarati\", 0x0a8a,\n \"uugurmukhi\", 0x0a0a,\n \"uumatragurmukhi\", 0x0a42,\n \"uuvowelsignbengali\", 0x09c2,\n \"uuvowelsigndeva\", 0x0942,\n \"uuvowelsigngujarati\", 0x0ac2,\n \"uvowelsignbengali\", 0x09c1,\n \"uvowelsigndeva\", 0x0941,\n \"uvowelsigngujarati\", 0x0ac1,\n \"v\", 0x0076,\n \"vadeva\", 0x0935,\n \"vagujarati\", 0x0ab5,\n \"vagurmukhi\", 0x0a35,\n \"vakatakana\", 0x30f7,\n \"vav\", 0x05d5,\n \"vavdagesh\", 0xfb35,\n \"vavdagesh65\", 0xfb35,\n \"vavdageshhebrew\", 0xfb35,\n \"vavhebrew\", 0x05d5,\n \"vavholam\", 0xfb4b,\n \"vavholamhebrew\", 0xfb4b,\n \"vavvavhebrew\", 0x05f0,\n \"vavyodhebrew\", 0x05f1,\n \"vcircle\", 0x24e5,\n \"vdotbelow\", 0x1e7f,\n \"vecyrillic\", 0x0432,\n \"veharabic\", 0x06a4,\n \"vehfinalarabic\", 0xfb6b,\n \"vehinitialarabic\", 0xfb6c,\n \"vehmedialarabic\", 0xfb6d,\n \"vekatakana\", 0x30f9,\n \"venus\", 0x2640,\n \"verticalbar\", 0x007c,\n \"verticallineabovecmb\", 0x030d,\n \"verticallinebelowcmb\", 0x0329,\n \"verticallinelowmod\", 0x02cc,\n \"verticallinemod\", 0x02c8,\n \"vewarmenian\", 0x057e,\n \"vhook\", 0x028b,\n \"vikatakana\", 0x30f8,\n \"viramabengali\", 0x09cd,\n \"viramadeva\", 0x094d,\n \"viramagujarati\", 0x0acd,\n \"visargabengali\", 0x0983,\n \"visargadeva\", 0x0903,\n \"visargagujarati\", 0x0a83,\n \"vmonospace\", 0xff56,\n \"voarmenian\", 0x0578,\n \"voicediterationhiragana\", 0x309e,\n \"voicediterationkatakana\", 0x30fe,\n \"voicedmarkkana\", 0x309b,\n \"voicedmarkkanahalfwidth\", 0xff9e,\n \"vokatakana\", 0x30fa,\n \"vparen\", 0x24b1,\n \"vtilde\", 0x1e7d,\n \"vturned\", 0x028c,\n \"vuhiragana\", 0x3094,\n \"vukatakana\", 0x30f4,\n \"w\", 0x0077,\n \"wacute\", 0x1e83,\n \"waekorean\", 0x3159,\n \"wahiragana\", 0x308f,\n \"wakatakana\", 0x30ef,\n \"wakatakanahalfwidth\", 0xff9c,\n \"wakorean\", 0x3158,\n \"wasmallhiragana\", 0x308e,\n \"wasmallkatakana\", 0x30ee,\n \"wattosquare\", 0x3357,\n \"wavedash\", 0x301c,\n \"wavyunderscorevertical\", 0xfe34,\n \"wawarabic\", 0x0648,\n \"wawfinalarabic\", 0xfeee,\n \"wawhamzaabovearabic\", 0x0624,\n \"wawhamzaabovefinalarabic\", 0xfe86,\n \"wbsquare\", 0x33dd,\n \"wcircle\", 0x24e6,\n \"wcircumflex\", 0x0175,\n \"wdieresis\", 0x1e85,\n \"wdotaccent\", 0x1e87,\n \"wdotbelow\", 0x1e89,\n \"wehiragana\", 0x3091,\n \"weierstrass\", 0x2118,\n \"wekatakana\", 0x30f1,\n \"wekorean\", 0x315e,\n \"weokorean\", 0x315d,\n \"wgrave\", 0x1e81,\n \"whitebullet\", 0x25e6,\n \"whitecircle\", 0x25cb,\n \"whitecircleinverse\", 0x25d9,\n \"whitecornerbracketleft\", 0x300e,\n \"whitecornerbracketleftvertical\", 0xfe43,\n \"whitecornerbracketright\", 0x300f,\n \"whitecornerbracketrightvertical\", 0xfe44,\n \"whitediamond\", 0x25c7,\n \"whitediamondcontainingblacksmalldiamond\", 0x25c8,\n \"whitedownpointingsmalltriangle\", 0x25bf,\n \"whitedownpointingtriangle\", 0x25bd,\n \"whiteleftpointingsmalltriangle\", 0x25c3,\n \"whiteleftpointingtriangle\", 0x25c1,\n \"whitelenticularbracketleft\", 0x3016,\n \"whitelenticularbracketright\", 0x3017,\n \"whiterightpointingsmalltriangle\", 0x25b9,\n \"whiterightpointingtriangle\", 0x25b7,\n \"whitesmallsquare\", 0x25ab,\n \"whitesmilingface\", 0x263a,\n \"whitesquare\", 0x25a1,\n \"whitestar\", 0x2606,\n \"whitetelephone\", 0x260f,\n \"whitetortoiseshellbracketleft\", 0x3018,\n \"whitetortoiseshellbracketright\", 0x3019,\n \"whiteuppointingsmalltriangle\", 0x25b5,\n \"whiteuppointingtriangle\", 0x25b3,\n \"wihiragana\", 0x3090,\n \"wikatakana\", 0x30f0,\n \"wikorean\", 0x315f,\n \"wmonospace\", 0xff57,\n \"wohiragana\", 0x3092,\n \"wokatakana\", 0x30f2,\n \"wokatakanahalfwidth\", 0xff66,\n \"won\", 0x20a9,\n \"wonmonospace\", 0xffe6,\n \"wowaenthai\", 0x0e27,\n \"wparen\", 0x24b2,\n \"wring\", 0x1e98,\n \"wsuperior\", 0x02b7,\n \"wturned\", 0x028d,\n \"wynn\", 0x01bf,\n \"x\", 0x0078,\n \"xabovecmb\", 0x033d,\n \"xbopomofo\", 0x3112,\n \"xcircle\", 0x24e7,\n \"xdieresis\", 0x1e8d,\n \"xdotaccent\", 0x1e8b,\n \"xeharmenian\", 0x056d,\n \"xi\", 0x03be,\n \"xmonospace\", 0xff58,\n \"xparen\", 0x24b3,\n \"xsuperior\", 0x02e3,\n \"y\", 0x0079,\n \"yaadosquare\", 0x334e,\n \"yabengali\", 0x09af,\n \"yacute\", 0x00fd,\n \"yadeva\", 0x092f,\n \"yaekorean\", 0x3152,\n \"yagujarati\", 0x0aaf,\n \"yagurmukhi\", 0x0a2f,\n \"yahiragana\", 0x3084,\n \"yakatakana\", 0x30e4,\n \"yakatakanahalfwidth\", 0xff94,\n \"yakorean\", 0x3151,\n \"yamakkanthai\", 0x0e4e,\n \"yasmallhiragana\", 0x3083,\n \"yasmallkatakana\", 0x30e3,\n \"yasmallkatakanahalfwidth\", 0xff6c,\n \"yatcyrillic\", 0x0463,\n \"ycircle\", 0x24e8,\n \"ycircumflex\", 0x0177,\n \"ydieresis\", 0x00ff,\n \"ydotaccent\", 0x1e8f,\n \"ydotbelow\", 0x1ef5,\n \"yeharabic\", 0x064a,\n \"yehbarreearabic\", 0x06d2,\n \"yehbarreefinalarabic\", 0xfbaf,\n \"yehfinalarabic\", 0xfef2,\n \"yehhamzaabovearabic\", 0x0626,\n \"yehhamzaabovefinalarabic\", 0xfe8a,\n \"yehhamzaaboveinitialarabic\", 0xfe8b,\n \"yehhamzaabovemedialarabic\", 0xfe8c,\n \"yehinitialarabic\", 0xfef3,\n \"yehmedialarabic\", 0xfef4,\n \"yehmeeminitialarabic\", 0xfcdd,\n \"yehmeemisolatedarabic\", 0xfc58,\n \"yehnoonfinalarabic\", 0xfc94,\n \"yehthreedotsbelowarabic\", 0x06d1,\n \"yekorean\", 0x3156,\n \"yen\", 0x00a5,\n \"yenmonospace\", 0xffe5,\n \"yeokorean\", 0x3155,\n \"yeorinhieuhkorean\", 0x3186,\n \"yerahbenyomohebrew\", 0x05aa,\n \"yerahbenyomolefthebrew\", 0x05aa,\n \"yericyrillic\", 0x044b,\n \"yerudieresiscyrillic\", 0x04f9,\n \"yesieungkorean\", 0x3181,\n \"yesieungpansioskorean\", 0x3183,\n \"yesieungsioskorean\", 0x3182,\n \"yetivhebrew\", 0x059a,\n \"ygrave\", 0x1ef3,\n \"yhook\", 0x01b4,\n \"yhookabove\", 0x1ef7,\n \"yiarmenian\", 0x0575,\n \"yicyrillic\", 0x0457,\n \"yikorean\", 0x3162,\n \"yinyang\", 0x262f,\n \"yiwnarmenian\", 0x0582,\n \"ymonospace\", 0xff59,\n \"yod\", 0x05d9,\n \"yoddagesh\", 0xfb39,\n \"yoddageshhebrew\", 0xfb39,\n \"yodhebrew\", 0x05d9,\n \"yodyodhebrew\", 0x05f2,\n \"yodyodpatahhebrew\", 0xfb1f,\n \"yohiragana\", 0x3088,\n \"yoikorean\", 0x3189,\n \"yokatakana\", 0x30e8,\n \"yokatakanahalfwidth\", 0xff96,\n \"yokorean\", 0x315b,\n \"yosmallhiragana\", 0x3087,\n \"yosmallkatakana\", 0x30e7,\n \"yosmallkatakanahalfwidth\", 0xff6e,\n \"yotgreek\", 0x03f3,\n \"yoyaekorean\", 0x3188,\n \"yoyakorean\", 0x3187,\n \"yoyakthai\", 0x0e22,\n \"yoyingthai\", 0x0e0d,\n \"yparen\", 0x24b4,\n \"ypogegrammeni\", 0x037a,\n \"ypogegrammenigreekcmb\", 0x0345,\n \"yr\", 0x01a6,\n \"yring\", 0x1e99,\n \"ysuperior\", 0x02b8,\n \"ytilde\", 0x1ef9,\n \"yturned\", 0x028e,\n \"yuhiragana\", 0x3086,\n \"yuikorean\", 0x318c,\n \"yukatakana\", 0x30e6,\n \"yukatakanahalfwidth\", 0xff95,\n \"yukorean\", 0x3160,\n \"yusbigcyrillic\", 0x046b,\n \"yusbigiotifiedcyrillic\", 0x046d,\n \"yuslittlecyrillic\", 0x0467,\n \"yuslittleiotifiedcyrillic\", 0x0469,\n \"yusmallhiragana\", 0x3085,\n \"yusmallkatakana\", 0x30e5,\n \"yusmallkatakanahalfwidth\", 0xff6d,\n \"yuyekorean\", 0x318b,\n \"yuyeokorean\", 0x318a,\n \"yyabengali\", 0x09df,\n \"yyadeva\", 0x095f,\n \"z\", 0x007a,\n \"zaarmenian\", 0x0566,\n \"zacute\", 0x017a,\n \"zadeva\", 0x095b,\n \"zagurmukhi\", 0x0a5b,\n \"zaharabic\", 0x0638,\n \"zahfinalarabic\", 0xfec6,\n \"zahinitialarabic\", 0xfec7,\n \"zahiragana\", 0x3056,\n \"zahmedialarabic\", 0xfec8,\n \"zainarabic\", 0x0632,\n \"zainfinalarabic\", 0xfeb0,\n \"zakatakana\", 0x30b6,\n \"zaqefgadolhebrew\", 0x0595,\n \"zaqefqatanhebrew\", 0x0594,\n \"zarqahebrew\", 0x0598,\n \"zayin\", 0x05d6,\n \"zayindagesh\", 0xfb36,\n \"zayindageshhebrew\", 0xfb36,\n \"zayinhebrew\", 0x05d6,\n \"zbopomofo\", 0x3117,\n \"zcaron\", 0x017e,\n \"zcircle\", 0x24e9,\n \"zcircumflex\", 0x1e91,\n \"zcurl\", 0x0291,\n \"zdot\", 0x017c,\n \"zdotaccent\", 0x017c,\n \"zdotbelow\", 0x1e93,\n \"zecyrillic\", 0x0437,\n \"zedescendercyrillic\", 0x0499,\n \"zedieresiscyrillic\", 0x04df,\n \"zehiragana\", 0x305c,\n \"zekatakana\", 0x30bc,\n \"zero\", 0x0030,\n \"zeroarabic\", 0x0660,\n \"zerobengali\", 0x09e6,\n \"zerodeva\", 0x0966,\n \"zerogujarati\", 0x0ae6,\n \"zerogurmukhi\", 0x0a66,\n \"zerohackarabic\", 0x0660,\n \"zeroinferior\", 0x2080,\n \"zeromonospace\", 0xff10,\n \"zerooldstyle\", 0xf730,\n \"zeropersian\", 0x06f0,\n \"zerosuperior\", 0x2070,\n \"zerothai\", 0x0e50,\n \"zerowidthjoiner\", 0xfeff,\n \"zerowidthnonjoiner\", 0x200c,\n \"zerowidthspace\", 0x200b,\n \"zeta\", 0x03b6,\n \"zhbopomofo\", 0x3113,\n \"zhearmenian\", 0x056a,\n \"zhebrevecyrillic\", 0x04c2,\n \"zhecyrillic\", 0x0436,\n \"zhedescendercyrillic\", 0x0497,\n \"zhedieresiscyrillic\", 0x04dd,\n \"zihiragana\", 0x3058,\n \"zikatakana\", 0x30b8,\n \"zinorhebrew\", 0x05ae,\n \"zlinebelow\", 0x1e95,\n \"zmonospace\", 0xff5a,\n \"zohiragana\", 0x305e,\n \"zokatakana\", 0x30be,\n \"zparen\", 0x24b5,\n \"zretroflexhook\", 0x0290,\n \"zstroke\", 0x01b6,\n \"zuhiragana\", 0x305a,\n \"zukatakana\", 0x30ba,\n \".notdef\", 0x0000,\n\n // TeX-specific glyph names.\n \"angbracketleftbig\", 0x2329,\n \"angbracketleftBig\", 0x2329,\n \"angbracketleftbigg\", 0x2329,\n \"angbracketleftBigg\", 0x2329,\n \"angbracketrightBig\", 0x232a,\n \"angbracketrightbig\", 0x232a,\n \"angbracketrightBigg\", 0x232a,\n \"angbracketrightbigg\", 0x232a,\n \"arrowhookleft\", 0x21aa,\n \"arrowhookright\", 0x21a9,\n \"arrowlefttophalf\", 0x21bc,\n \"arrowleftbothalf\", 0x21bd,\n \"arrownortheast\", 0x2197,\n \"arrownorthwest\", 0x2196,\n \"arrowrighttophalf\", 0x21c0,\n \"arrowrightbothalf\", 0x21c1,\n \"arrowsoutheast\", 0x2198,\n \"arrowsouthwest\", 0x2199,\n \"backslashbig\", 0x2216,\n \"backslashBig\", 0x2216,\n \"backslashBigg\", 0x2216,\n \"backslashbigg\", 0x2216,\n \"bardbl\", 0x2016,\n \"bracehtipdownleft\", 0xfe37,\n \"bracehtipdownright\", 0xfe37,\n \"bracehtipupleft\", 0xfe38,\n \"bracehtipupright\", 0xfe38,\n \"braceleftBig\", 0x007b,\n \"braceleftbig\", 0x007b,\n \"braceleftbigg\", 0x007b,\n \"braceleftBigg\", 0x007b,\n \"bracerightBig\", 0x007d,\n \"bracerightbig\", 0x007d,\n \"bracerightbigg\", 0x007d,\n \"bracerightBigg\", 0x007d,\n \"bracketleftbig\", 0x005b,\n \"bracketleftBig\", 0x005b,\n \"bracketleftbigg\", 0x005b,\n \"bracketleftBigg\", 0x005b,\n \"bracketrightBig\", 0x005d,\n \"bracketrightbig\", 0x005d,\n \"bracketrightbigg\", 0x005d,\n \"bracketrightBigg\", 0x005d,\n \"ceilingleftbig\", 0x2308,\n \"ceilingleftBig\", 0x2308,\n \"ceilingleftBigg\", 0x2308,\n \"ceilingleftbigg\", 0x2308,\n \"ceilingrightbig\", 0x2309,\n \"ceilingrightBig\", 0x2309,\n \"ceilingrightbigg\", 0x2309,\n \"ceilingrightBigg\", 0x2309,\n \"circledotdisplay\", 0x2299,\n \"circledottext\", 0x2299,\n \"circlemultiplydisplay\", 0x2297,\n \"circlemultiplytext\", 0x2297,\n \"circleplusdisplay\", 0x2295,\n \"circleplustext\", 0x2295,\n \"contintegraldisplay\", 0x222e,\n \"contintegraltext\", 0x222e,\n \"coproductdisplay\", 0x2210,\n \"coproducttext\", 0x2210,\n \"floorleftBig\", 0x230a,\n \"floorleftbig\", 0x230a,\n \"floorleftbigg\", 0x230a,\n \"floorleftBigg\", 0x230a,\n \"floorrightbig\", 0x230b,\n \"floorrightBig\", 0x230b,\n \"floorrightBigg\", 0x230b,\n \"floorrightbigg\", 0x230b,\n \"hatwide\", 0x0302,\n \"hatwider\", 0x0302,\n \"hatwidest\", 0x0302,\n \"intercal\", 0x1d40,\n \"integraldisplay\", 0x222b,\n \"integraltext\", 0x222b,\n \"intersectiondisplay\", 0x22c2,\n \"intersectiontext\", 0x22c2,\n \"logicalanddisplay\", 0x2227,\n \"logicalandtext\", 0x2227,\n \"logicalordisplay\", 0x2228,\n \"logicalortext\", 0x2228,\n \"parenleftBig\", 0x0028,\n \"parenleftbig\", 0x0028,\n \"parenleftBigg\", 0x0028,\n \"parenleftbigg\", 0x0028,\n \"parenrightBig\", 0x0029,\n \"parenrightbig\", 0x0029,\n \"parenrightBigg\", 0x0029,\n \"parenrightbigg\", 0x0029,\n \"prime\", 0x2032,\n \"productdisplay\", 0x220f,\n \"producttext\", 0x220f,\n \"radicalbig\", 0x221a,\n \"radicalBig\", 0x221a,\n \"radicalBigg\", 0x221a,\n \"radicalbigg\", 0x221a,\n \"radicalbt\", 0x221a,\n \"radicaltp\", 0x221a,\n \"radicalvertex\", 0x221a,\n \"slashbig\", 0x002f,\n \"slashBig\", 0x002f,\n \"slashBigg\", 0x002f,\n \"slashbigg\", 0x002f,\n \"summationdisplay\", 0x2211,\n \"summationtext\", 0x2211,\n \"tildewide\", 0x02dc,\n \"tildewider\", 0x02dc,\n \"tildewidest\", 0x02dc,\n \"uniondisplay\", 0x22c3,\n \"unionmultidisplay\", 0x228e,\n \"unionmultitext\", 0x228e,\n \"unionsqdisplay\", 0x2294,\n \"unionsqtext\", 0x2294,\n \"uniontext\", 0x22c3,\n \"vextenddouble\", 0x2225,\n \"vextendsingle\", 0x2223,\n ];\n});\n\nconst getDingbatsGlyphsUnicode = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"space\", 0x0020,\n \"a1\", 0x2701,\n \"a2\", 0x2702,\n \"a202\", 0x2703,\n \"a3\", 0x2704,\n \"a4\", 0x260e,\n \"a5\", 0x2706,\n \"a119\", 0x2707,\n \"a118\", 0x2708,\n \"a117\", 0x2709,\n \"a11\", 0x261b,\n \"a12\", 0x261e,\n \"a13\", 0x270c,\n \"a14\", 0x270d,\n \"a15\", 0x270e,\n \"a16\", 0x270f,\n \"a105\", 0x2710,\n \"a17\", 0x2711,\n \"a18\", 0x2712,\n \"a19\", 0x2713,\n \"a20\", 0x2714,\n \"a21\", 0x2715,\n \"a22\", 0x2716,\n \"a23\", 0x2717,\n \"a24\", 0x2718,\n \"a25\", 0x2719,\n \"a26\", 0x271a,\n \"a27\", 0x271b,\n \"a28\", 0x271c,\n \"a6\", 0x271d,\n \"a7\", 0x271e,\n \"a8\", 0x271f,\n \"a9\", 0x2720,\n \"a10\", 0x2721,\n \"a29\", 0x2722,\n \"a30\", 0x2723,\n \"a31\", 0x2724,\n \"a32\", 0x2725,\n \"a33\", 0x2726,\n \"a34\", 0x2727,\n \"a35\", 0x2605,\n \"a36\", 0x2729,\n \"a37\", 0x272a,\n \"a38\", 0x272b,\n \"a39\", 0x272c,\n \"a40\", 0x272d,\n \"a41\", 0x272e,\n \"a42\", 0x272f,\n \"a43\", 0x2730,\n \"a44\", 0x2731,\n \"a45\", 0x2732,\n \"a46\", 0x2733,\n \"a47\", 0x2734,\n \"a48\", 0x2735,\n \"a49\", 0x2736,\n \"a50\", 0x2737,\n \"a51\", 0x2738,\n \"a52\", 0x2739,\n \"a53\", 0x273a,\n \"a54\", 0x273b,\n \"a55\", 0x273c,\n \"a56\", 0x273d,\n \"a57\", 0x273e,\n \"a58\", 0x273f,\n \"a59\", 0x2740,\n \"a60\", 0x2741,\n \"a61\", 0x2742,\n \"a62\", 0x2743,\n \"a63\", 0x2744,\n \"a64\", 0x2745,\n \"a65\", 0x2746,\n \"a66\", 0x2747,\n \"a67\", 0x2748,\n \"a68\", 0x2749,\n \"a69\", 0x274a,\n \"a70\", 0x274b,\n \"a71\", 0x25cf,\n \"a72\", 0x274d,\n \"a73\", 0x25a0,\n \"a74\", 0x274f,\n \"a203\", 0x2750,\n \"a75\", 0x2751,\n \"a204\", 0x2752,\n \"a76\", 0x25b2,\n \"a77\", 0x25bc,\n \"a78\", 0x25c6,\n \"a79\", 0x2756,\n \"a81\", 0x25d7,\n \"a82\", 0x2758,\n \"a83\", 0x2759,\n \"a84\", 0x275a,\n \"a97\", 0x275b,\n \"a98\", 0x275c,\n \"a99\", 0x275d,\n \"a100\", 0x275e,\n \"a101\", 0x2761,\n \"a102\", 0x2762,\n \"a103\", 0x2763,\n \"a104\", 0x2764,\n \"a106\", 0x2765,\n \"a107\", 0x2766,\n \"a108\", 0x2767,\n \"a112\", 0x2663,\n \"a111\", 0x2666,\n \"a110\", 0x2665,\n \"a109\", 0x2660,\n \"a120\", 0x2460,\n \"a121\", 0x2461,\n \"a122\", 0x2462,\n \"a123\", 0x2463,\n \"a124\", 0x2464,\n \"a125\", 0x2465,\n \"a126\", 0x2466,\n \"a127\", 0x2467,\n \"a128\", 0x2468,\n \"a129\", 0x2469,\n \"a130\", 0x2776,\n \"a131\", 0x2777,\n \"a132\", 0x2778,\n \"a133\", 0x2779,\n \"a134\", 0x277a,\n \"a135\", 0x277b,\n \"a136\", 0x277c,\n \"a137\", 0x277d,\n \"a138\", 0x277e,\n \"a139\", 0x277f,\n \"a140\", 0x2780,\n \"a141\", 0x2781,\n \"a142\", 0x2782,\n \"a143\", 0x2783,\n \"a144\", 0x2784,\n \"a145\", 0x2785,\n \"a146\", 0x2786,\n \"a147\", 0x2787,\n \"a148\", 0x2788,\n \"a149\", 0x2789,\n \"a150\", 0x278a,\n \"a151\", 0x278b,\n \"a152\", 0x278c,\n \"a153\", 0x278d,\n \"a154\", 0x278e,\n \"a155\", 0x278f,\n \"a156\", 0x2790,\n \"a157\", 0x2791,\n \"a158\", 0x2792,\n \"a159\", 0x2793,\n \"a160\", 0x2794,\n \"a161\", 0x2192,\n \"a163\", 0x2194,\n \"a164\", 0x2195,\n \"a196\", 0x2798,\n \"a165\", 0x2799,\n \"a192\", 0x279a,\n \"a166\", 0x279b,\n \"a167\", 0x279c,\n \"a168\", 0x279d,\n \"a169\", 0x279e,\n \"a170\", 0x279f,\n \"a171\", 0x27a0,\n \"a172\", 0x27a1,\n \"a173\", 0x27a2,\n \"a162\", 0x27a3,\n \"a174\", 0x27a4,\n \"a175\", 0x27a5,\n \"a176\", 0x27a6,\n \"a177\", 0x27a7,\n \"a178\", 0x27a8,\n \"a179\", 0x27a9,\n \"a193\", 0x27aa,\n \"a180\", 0x27ab,\n \"a199\", 0x27ac,\n \"a181\", 0x27ad,\n \"a200\", 0x27ae,\n \"a182\", 0x27af,\n \"a201\", 0x27b1,\n \"a183\", 0x27b2,\n \"a184\", 0x27b3,\n \"a197\", 0x27b4,\n \"a185\", 0x27b5,\n \"a194\", 0x27b6,\n \"a198\", 0x27b7,\n \"a186\", 0x27b8,\n \"a195\", 0x27b9,\n \"a187\", 0x27ba,\n \"a188\", 0x27bb,\n \"a189\", 0x27bc,\n \"a190\", 0x27bd,\n \"a191\", 0x27be,\n \"a89\", 0x2768, // 0xF8D7\n \"a90\", 0x2769, // 0xF8D8\n \"a93\", 0x276a, // 0xF8D9\n \"a94\", 0x276b, // 0xF8DA\n \"a91\", 0x276c, // 0xF8DB\n \"a92\", 0x276d, // 0xF8DC\n \"a205\", 0x276e, // 0xF8DD\n \"a85\", 0x276f, // 0xF8DE\n \"a206\", 0x2770, // 0xF8DF\n \"a86\", 0x2771, // 0xF8E0\n \"a87\", 0x2772, // 0xF8E1\n \"a88\", 0x2773, // 0xF8E2\n \"a95\", 0x2774, // 0xF8E3\n \"a96\", 0x2775, // 0xF8E4\n \".notdef\", 0x0000,\n ];\n});\n\nexport { getDingbatsGlyphsUnicode, getGlyphsUnicode };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport {\n getArrayLookupTableFactory,\n getLookupTableFactory,\n} from \"./core_utils.js\";\n\n// Some characters, e.g. copyrightserif, are mapped to the private use area\n// and might not be displayed using standard fonts. Mapping/hacking well-known\n// chars to the similar equivalents in the normal characters range.\nconst getSpecialPUASymbols = getLookupTableFactory(function (t) {\n t[63721] = 0x00a9; // copyrightsans (0xF8E9) => copyright\n t[63193] = 0x00a9; // copyrightserif (0xF6D9) => copyright\n t[63720] = 0x00ae; // registersans (0xF8E8) => registered\n t[63194] = 0x00ae; // registerserif (0xF6DA) => registered\n t[63722] = 0x2122; // trademarksans (0xF8EA) => trademark\n t[63195] = 0x2122; // trademarkserif (0xF6DB) => trademark\n t[63729] = 0x23a7; // bracelefttp (0xF8F1)\n t[63730] = 0x23a8; // braceleftmid (0xF8F2)\n t[63731] = 0x23a9; // braceleftbt (0xF8F3)\n t[63740] = 0x23ab; // bracerighttp (0xF8FC)\n t[63741] = 0x23ac; // bracerightmid (0xF8FD)\n t[63742] = 0x23ad; // bracerightbt (0xF8FE)\n t[63726] = 0x23a1; // bracketlefttp (0xF8EE)\n t[63727] = 0x23a2; // bracketleftex (0xF8EF)\n t[63728] = 0x23a3; // bracketleftbt (0xF8F0)\n t[63737] = 0x23a4; // bracketrighttp (0xF8F9)\n t[63738] = 0x23a5; // bracketrightex (0xF8FA)\n t[63739] = 0x23a6; // bracketrightbt (0xF8FB)\n t[63723] = 0x239b; // parenlefttp (0xF8EB)\n t[63724] = 0x239c; // parenleftex (0xF8EC)\n t[63725] = 0x239d; // parenleftbt (0xF8ED)\n t[63734] = 0x239e; // parenrighttp (0xF8F6)\n t[63735] = 0x239f; // parenrightex (0xF8F7)\n t[63736] = 0x23a0; // parenrightbt (0xF8F8)\n});\n\nfunction mapSpecialUnicodeValues(code) {\n if (code >= 0xfff0 && code <= 0xffff) {\n // Specials unicode block.\n return 0;\n } else if (code >= 0xf600 && code <= 0xf8ff) {\n return getSpecialPUASymbols()[code] || code;\n } else if (code === /* softhyphen = */ 0x00ad) {\n return 0x002d; // hyphen\n }\n return code;\n}\n\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n let unicode = glyphsUnicodeMap[name];\n if (unicode !== undefined) {\n return unicode;\n }\n if (!name) {\n return -1;\n }\n // Try to recover valid Unicode values from 'uniXXXX'/'uXXXX{XX}' glyphs.\n if (name[0] === \"u\") {\n const nameLen = name.length;\n let hexStr;\n\n if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n // 'uniXXXX'\n hexStr = name.substring(3);\n } else if (nameLen >= 5 && nameLen <= 7) {\n // 'uXXXX{XX}'\n hexStr = name.substring(1);\n } else {\n return -1;\n }\n // Check for upper-case hexadecimal characters, to avoid false positives.\n if (hexStr === hexStr.toUpperCase()) {\n unicode = parseInt(hexStr, 16);\n if (unicode >= 0) {\n return unicode;\n }\n }\n }\n return -1;\n}\n\nconst UnicodeRanges = [\n { begin: 0x0000, end: 0x007f }, // Basic Latin\n { begin: 0x0080, end: 0x00ff }, // Latin-1 Supplement\n { begin: 0x0100, end: 0x017f }, // Latin Extended-A\n { begin: 0x0180, end: 0x024f }, // Latin Extended-B\n { begin: 0x0250, end: 0x02af }, // IPA Extensions\n { begin: 0x02b0, end: 0x02ff }, // Spacing Modifier Letters\n { begin: 0x0300, end: 0x036f }, // Combining Diacritical Marks\n { begin: 0x0370, end: 0x03ff }, // Greek and Coptic\n { begin: 0x2c80, end: 0x2cff }, // Coptic\n { begin: 0x0400, end: 0x04ff }, // Cyrillic\n { begin: 0x0530, end: 0x058f }, // Armenian\n { begin: 0x0590, end: 0x05ff }, // Hebrew\n { begin: 0xa500, end: 0xa63f }, // Vai\n { begin: 0x0600, end: 0x06ff }, // Arabic\n { begin: 0x07c0, end: 0x07ff }, // NKo\n { begin: 0x0900, end: 0x097f }, // Devanagari\n { begin: 0x0980, end: 0x09ff }, // Bengali\n { begin: 0x0a00, end: 0x0a7f }, // Gurmukhi\n { begin: 0x0a80, end: 0x0aff }, // Gujarati\n { begin: 0x0b00, end: 0x0b7f }, // Oriya\n { begin: 0x0b80, end: 0x0bff }, // Tamil\n { begin: 0x0c00, end: 0x0c7f }, // Telugu\n { begin: 0x0c80, end: 0x0cff }, // Kannada\n { begin: 0x0d00, end: 0x0d7f }, // Malayalam\n { begin: 0x0e00, end: 0x0e7f }, // Thai\n { begin: 0x0e80, end: 0x0eff }, // Lao\n { begin: 0x10a0, end: 0x10ff }, // Georgian\n { begin: 0x1b00, end: 0x1b7f }, // Balinese\n { begin: 0x1100, end: 0x11ff }, // Hangul Jamo\n { begin: 0x1e00, end: 0x1eff }, // Latin Extended Additional\n { begin: 0x1f00, end: 0x1fff }, // Greek Extended\n { begin: 0x2000, end: 0x206f }, // General Punctuation\n { begin: 0x2070, end: 0x209f }, // Superscripts And Subscripts\n { begin: 0x20a0, end: 0x20cf }, // Currency Symbol\n { begin: 0x20d0, end: 0x20ff }, // Combining Diacritical Marks\n { begin: 0x2100, end: 0x214f }, // Letterlike Symbols\n { begin: 0x2150, end: 0x218f }, // Number Forms\n { begin: 0x2190, end: 0x21ff }, // Arrows\n { begin: 0x2200, end: 0x22ff }, // Mathematical Operators\n { begin: 0x2300, end: 0x23ff }, // Miscellaneous Technical\n { begin: 0x2400, end: 0x243f }, // Control Pictures\n { begin: 0x2440, end: 0x245f }, // Optical Character Recognition\n { begin: 0x2460, end: 0x24ff }, // Enclosed Alphanumerics\n { begin: 0x2500, end: 0x257f }, // Box Drawing\n { begin: 0x2580, end: 0x259f }, // Block Elements\n { begin: 0x25a0, end: 0x25ff }, // Geometric Shapes\n { begin: 0x2600, end: 0x26ff }, // Miscellaneous Symbols\n { begin: 0x2700, end: 0x27bf }, // Dingbats\n { begin: 0x3000, end: 0x303f }, // CJK Symbols And Punctuation\n { begin: 0x3040, end: 0x309f }, // Hiragana\n { begin: 0x30a0, end: 0x30ff }, // Katakana\n { begin: 0x3100, end: 0x312f }, // Bopomofo\n { begin: 0x3130, end: 0x318f }, // Hangul Compatibility Jamo\n { begin: 0xa840, end: 0xa87f }, // Phags-pa\n { begin: 0x3200, end: 0x32ff }, // Enclosed CJK Letters And Months\n { begin: 0x3300, end: 0x33ff }, // CJK Compatibility\n { begin: 0xac00, end: 0xd7af }, // Hangul Syllables\n { begin: 0xd800, end: 0xdfff }, // Non-Plane 0 *\n { begin: 0x10900, end: 0x1091f }, // Phoenicia\n { begin: 0x4e00, end: 0x9fff }, // CJK Unified Ideographs\n { begin: 0xe000, end: 0xf8ff }, // Private Use Area (plane 0)\n { begin: 0x31c0, end: 0x31ef }, // CJK Strokes\n { begin: 0xfb00, end: 0xfb4f }, // Alphabetic Presentation Forms\n { begin: 0xfb50, end: 0xfdff }, // Arabic Presentation Forms-A\n { begin: 0xfe20, end: 0xfe2f }, // Combining Half Marks\n { begin: 0xfe10, end: 0xfe1f }, // Vertical Forms\n { begin: 0xfe50, end: 0xfe6f }, // Small Form Variants\n { begin: 0xfe70, end: 0xfeff }, // Arabic Presentation Forms-B\n { begin: 0xff00, end: 0xffef }, // Halfwidth And Fullwidth Forms\n { begin: 0xfff0, end: 0xffff }, // Specials\n { begin: 0x0f00, end: 0x0fff }, // Tibetan\n { begin: 0x0700, end: 0x074f }, // Syriac\n { begin: 0x0780, end: 0x07bf }, // Thaana\n { begin: 0x0d80, end: 0x0dff }, // Sinhala\n { begin: 0x1000, end: 0x109f }, // Myanmar\n { begin: 0x1200, end: 0x137f }, // Ethiopic\n { begin: 0x13a0, end: 0x13ff }, // Cherokee\n { begin: 0x1400, end: 0x167f }, // Unified Canadian Aboriginal Syllabics\n { begin: 0x1680, end: 0x169f }, // Ogham\n { begin: 0x16a0, end: 0x16ff }, // Runic\n { begin: 0x1780, end: 0x17ff }, // Khmer\n { begin: 0x1800, end: 0x18af }, // Mongolian\n { begin: 0x2800, end: 0x28ff }, // Braille Patterns\n { begin: 0xa000, end: 0xa48f }, // Yi Syllables\n { begin: 0x1700, end: 0x171f }, // Tagalog\n { begin: 0x10300, end: 0x1032f }, // Old Italic\n { begin: 0x10330, end: 0x1034f }, // Gothic\n { begin: 0x10400, end: 0x1044f }, // Deseret\n { begin: 0x1d000, end: 0x1d0ff }, // Byzantine Musical Symbols\n { begin: 0x1d400, end: 0x1d7ff }, // Mathematical Alphanumeric Symbols\n { begin: 0xff000, end: 0xffffd }, // Private Use (plane 15)\n { begin: 0xfe00, end: 0xfe0f }, // Variation Selectors\n { begin: 0xe0000, end: 0xe007f }, // Tags\n { begin: 0x1900, end: 0x194f }, // Limbu\n { begin: 0x1950, end: 0x197f }, // Tai Le\n { begin: 0x1980, end: 0x19df }, // New Tai Lue\n { begin: 0x1a00, end: 0x1a1f }, // Buginese\n { begin: 0x2c00, end: 0x2c5f }, // Glagolitic\n { begin: 0x2d30, end: 0x2d7f }, // Tifinagh\n { begin: 0x4dc0, end: 0x4dff }, // Yijing Hexagram Symbols\n { begin: 0xa800, end: 0xa82f }, // Syloti Nagri\n { begin: 0x10000, end: 0x1007f }, // Linear B Syllabary\n { begin: 0x10140, end: 0x1018f }, // Ancient Greek Numbers\n { begin: 0x10380, end: 0x1039f }, // Ugaritic\n { begin: 0x103a0, end: 0x103df }, // Old Persian\n { begin: 0x10450, end: 0x1047f }, // Shavian\n { begin: 0x10480, end: 0x104af }, // Osmanya\n { begin: 0x10800, end: 0x1083f }, // Cypriot Syllabary\n { begin: 0x10a00, end: 0x10a5f }, // Kharoshthi\n { begin: 0x1d300, end: 0x1d35f }, // Tai Xuan Jing Symbols\n { begin: 0x12000, end: 0x123ff }, // Cuneiform\n { begin: 0x1d360, end: 0x1d37f }, // Counting Rod Numerals\n { begin: 0x1b80, end: 0x1bbf }, // Sundanese\n { begin: 0x1c00, end: 0x1c4f }, // Lepcha\n { begin: 0x1c50, end: 0x1c7f }, // Ol Chiki\n { begin: 0xa880, end: 0xa8df }, // Saurashtra\n { begin: 0xa900, end: 0xa92f }, // Kayah Li\n { begin: 0xa930, end: 0xa95f }, // Rejang\n { begin: 0xaa00, end: 0xaa5f }, // Cham\n { begin: 0x10190, end: 0x101cf }, // Ancient Symbols\n { begin: 0x101d0, end: 0x101ff }, // Phaistos Disc\n { begin: 0x102a0, end: 0x102df }, // Carian\n { begin: 0x1f030, end: 0x1f09f }, // Domino Tiles\n];\n\nfunction getUnicodeRangeFor(value) {\n for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n const range = UnicodeRanges[i];\n if (value >= range.begin && value < range.end) {\n return i;\n }\n }\n return -1;\n}\n\nfunction isRTLRangeFor(value) {\n let range = UnicodeRanges[13];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n range = UnicodeRanges[11];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n return false;\n}\n\n// The normalization table is obtained by filtering the Unicode characters\n// database with <compat> entries.\nconst getNormalizedUnicodes = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"\\u00A8\", \"\\u0020\\u0308\",\n \"\\u00AF\", \"\\u0020\\u0304\",\n \"\\u00B4\", \"\\u0020\\u0301\",\n \"\\u00B5\", \"\\u03BC\",\n \"\\u00B8\", \"\\u0020\\u0327\",\n \"\\u0132\", \"\\u0049\\u004A\",\n \"\\u0133\", \"\\u0069\\u006A\",\n \"\\u013F\", \"\\u004C\\u00B7\",\n \"\\u0140\", \"\\u006C\\u00B7\",\n \"\\u0149\", \"\\u02BC\\u006E\",\n \"\\u017F\", \"\\u0073\",\n \"\\u01C4\", \"\\u0044\\u017D\",\n \"\\u01C5\", \"\\u0044\\u017E\",\n \"\\u01C6\", \"\\u0064\\u017E\",\n \"\\u01C7\", \"\\u004C\\u004A\",\n \"\\u01C8\", \"\\u004C\\u006A\",\n \"\\u01C9\", \"\\u006C\\u006A\",\n \"\\u01CA\", \"\\u004E\\u004A\",\n \"\\u01CB\", \"\\u004E\\u006A\",\n \"\\u01CC\", \"\\u006E\\u006A\",\n \"\\u01F1\", \"\\u0044\\u005A\",\n \"\\u01F2\", \"\\u0044\\u007A\",\n \"\\u01F3\", \"\\u0064\\u007A\",\n \"\\u02D8\", \"\\u0020\\u0306\",\n \"\\u02D9\", \"\\u0020\\u0307\",\n \"\\u02DA\", \"\\u0020\\u030A\",\n \"\\u02DB\", \"\\u0020\\u0328\",\n \"\\u02DC\", \"\\u0020\\u0303\",\n \"\\u02DD\", \"\\u0020\\u030B\",\n \"\\u037A\", \"\\u0020\\u0345\",\n \"\\u0384\", \"\\u0020\\u0301\",\n \"\\u03D0\", \"\\u03B2\",\n \"\\u03D1\", \"\\u03B8\",\n \"\\u03D2\", \"\\u03A5\",\n \"\\u03D5\", \"\\u03C6\",\n \"\\u03D6\", \"\\u03C0\",\n \"\\u03F0\", \"\\u03BA\",\n \"\\u03F1\", \"\\u03C1\",\n \"\\u03F2\", \"\\u03C2\",\n \"\\u03F4\", \"\\u0398\",\n \"\\u03F5\", \"\\u03B5\",\n \"\\u03F9\", \"\\u03A3\",\n \"\\u0587\", \"\\u0565\\u0582\",\n \"\\u0675\", \"\\u0627\\u0674\",\n \"\\u0676\", \"\\u0648\\u0674\",\n \"\\u0677\", \"\\u06C7\\u0674\",\n \"\\u0678\", \"\\u064A\\u0674\",\n \"\\u0E33\", \"\\u0E4D\\u0E32\",\n \"\\u0EB3\", \"\\u0ECD\\u0EB2\",\n \"\\u0EDC\", \"\\u0EAB\\u0E99\",\n \"\\u0EDD\", \"\\u0EAB\\u0EA1\",\n \"\\u0F77\", \"\\u0FB2\\u0F81\",\n \"\\u0F79\", \"\\u0FB3\\u0F81\",\n \"\\u1E9A\", \"\\u0061\\u02BE\",\n \"\\u1FBD\", \"\\u0020\\u0313\",\n \"\\u1FBF\", \"\\u0020\\u0313\",\n \"\\u1FC0\", \"\\u0020\\u0342\",\n \"\\u1FFE\", \"\\u0020\\u0314\",\n \"\\u2002\", \"\\u0020\",\n \"\\u2003\", \"\\u0020\",\n \"\\u2004\", \"\\u0020\",\n \"\\u2005\", \"\\u0020\",\n \"\\u2006\", \"\\u0020\",\n \"\\u2008\", \"\\u0020\",\n \"\\u2009\", \"\\u0020\",\n \"\\u200A\", \"\\u0020\",\n \"\\u2017\", \"\\u0020\\u0333\",\n \"\\u2024\", \"\\u002E\",\n \"\\u2025\", \"\\u002E\\u002E\",\n \"\\u2026\", \"\\u002E\\u002E\\u002E\",\n \"\\u2033\", \"\\u2032\\u2032\",\n \"\\u2034\", \"\\u2032\\u2032\\u2032\",\n \"\\u2036\", \"\\u2035\\u2035\",\n \"\\u2037\", \"\\u2035\\u2035\\u2035\",\n \"\\u203C\", \"\\u0021\\u0021\",\n \"\\u203E\", \"\\u0020\\u0305\",\n \"\\u2047\", \"\\u003F\\u003F\",\n \"\\u2048\", \"\\u003F\\u0021\",\n \"\\u2049\", \"\\u0021\\u003F\",\n \"\\u2057\", \"\\u2032\\u2032\\u2032\\u2032\",\n \"\\u205F\", \"\\u0020\",\n \"\\u20A8\", \"\\u0052\\u0073\",\n \"\\u2100\", \"\\u0061\\u002F\\u0063\",\n \"\\u2101\", \"\\u0061\\u002F\\u0073\",\n \"\\u2103\", \"\\u00B0\\u0043\",\n \"\\u2105\", \"\\u0063\\u002F\\u006F\",\n \"\\u2106\", \"\\u0063\\u002F\\u0075\",\n \"\\u2107\", \"\\u0190\",\n \"\\u2109\", \"\\u00B0\\u0046\",\n \"\\u2116\", \"\\u004E\\u006F\",\n \"\\u2121\", \"\\u0054\\u0045\\u004C\",\n \"\\u2135\", \"\\u05D0\",\n \"\\u2136\", \"\\u05D1\",\n \"\\u2137\", \"\\u05D2\",\n \"\\u2138\", \"\\u05D3\",\n \"\\u213B\", \"\\u0046\\u0041\\u0058\",\n \"\\u2160\", \"\\u0049\",\n \"\\u2161\", \"\\u0049\\u0049\",\n \"\\u2162\", \"\\u0049\\u0049\\u0049\",\n \"\\u2163\", \"\\u0049\\u0056\",\n \"\\u2164\", \"\\u0056\",\n \"\\u2165\", \"\\u0056\\u0049\",\n \"\\u2166\", \"\\u0056\\u0049\\u0049\",\n \"\\u2167\", \"\\u0056\\u0049\\u0049\\u0049\",\n \"\\u2168\", \"\\u0049\\u0058\",\n \"\\u2169\", \"\\u0058\",\n \"\\u216A\", \"\\u0058\\u0049\",\n \"\\u216B\", \"\\u0058\\u0049\\u0049\",\n \"\\u216C\", \"\\u004C\",\n \"\\u216D\", \"\\u0043\",\n \"\\u216E\", \"\\u0044\",\n \"\\u216F\", \"\\u004D\",\n \"\\u2170\", \"\\u0069\",\n \"\\u2171\", \"\\u0069\\u0069\",\n \"\\u2172\", \"\\u0069\\u0069\\u0069\",\n \"\\u2173\", \"\\u0069\\u0076\",\n \"\\u2174\", \"\\u0076\",\n \"\\u2175\", \"\\u0076\\u0069\",\n \"\\u2176\", \"\\u0076\\u0069\\u0069\",\n \"\\u2177\", \"\\u0076\\u0069\\u0069\\u0069\",\n \"\\u2178\", \"\\u0069\\u0078\",\n \"\\u2179\", \"\\u0078\",\n \"\\u217A\", \"\\u0078\\u0069\",\n \"\\u217B\", \"\\u0078\\u0069\\u0069\",\n \"\\u217C\", \"\\u006C\",\n \"\\u217D\", \"\\u0063\",\n \"\\u217E\", \"\\u0064\",\n \"\\u217F\", \"\\u006D\",\n \"\\u222C\", \"\\u222B\\u222B\",\n \"\\u222D\", \"\\u222B\\u222B\\u222B\",\n \"\\u222F\", \"\\u222E\\u222E\",\n \"\\u2230\", \"\\u222E\\u222E\\u222E\",\n \"\\u2474\", \"\\u0028\\u0031\\u0029\",\n \"\\u2475\", \"\\u0028\\u0032\\u0029\",\n \"\\u2476\", \"\\u0028\\u0033\\u0029\",\n \"\\u2477\", \"\\u0028\\u0034\\u0029\",\n \"\\u2478\", \"\\u0028\\u0035\\u0029\",\n \"\\u2479\", \"\\u0028\\u0036\\u0029\",\n \"\\u247A\", \"\\u0028\\u0037\\u0029\",\n \"\\u247B\", \"\\u0028\\u0038\\u0029\",\n \"\\u247C\", \"\\u0028\\u0039\\u0029\",\n \"\\u247D\", \"\\u0028\\u0031\\u0030\\u0029\",\n \"\\u247E\", \"\\u0028\\u0031\\u0031\\u0029\",\n \"\\u247F\", \"\\u0028\\u0031\\u0032\\u0029\",\n \"\\u2480\", \"\\u0028\\u0031\\u0033\\u0029\",\n \"\\u2481\", \"\\u0028\\u0031\\u0034\\u0029\",\n \"\\u2482\", \"\\u0028\\u0031\\u0035\\u0029\",\n \"\\u2483\", \"\\u0028\\u0031\\u0036\\u0029\",\n \"\\u2484\", \"\\u0028\\u0031\\u0037\\u0029\",\n \"\\u2485\", \"\\u0028\\u0031\\u0038\\u0029\",\n \"\\u2486\", \"\\u0028\\u0031\\u0039\\u0029\",\n \"\\u2487\", \"\\u0028\\u0032\\u0030\\u0029\",\n \"\\u2488\", \"\\u0031\\u002E\",\n \"\\u2489\", \"\\u0032\\u002E\",\n \"\\u248A\", \"\\u0033\\u002E\",\n \"\\u248B\", \"\\u0034\\u002E\",\n \"\\u248C\", \"\\u0035\\u002E\",\n \"\\u248D\", \"\\u0036\\u002E\",\n \"\\u248E\", \"\\u0037\\u002E\",\n \"\\u248F\", \"\\u0038\\u002E\",\n \"\\u2490\", \"\\u0039\\u002E\",\n \"\\u2491\", \"\\u0031\\u0030\\u002E\",\n \"\\u2492\", \"\\u0031\\u0031\\u002E\",\n \"\\u2493\", \"\\u0031\\u0032\\u002E\",\n \"\\u2494\", \"\\u0031\\u0033\\u002E\",\n \"\\u2495\", \"\\u0031\\u0034\\u002E\",\n \"\\u2496\", \"\\u0031\\u0035\\u002E\",\n \"\\u2497\", \"\\u0031\\u0036\\u002E\",\n \"\\u2498\", \"\\u0031\\u0037\\u002E\",\n \"\\u2499\", \"\\u0031\\u0038\\u002E\",\n \"\\u249A\", \"\\u0031\\u0039\\u002E\",\n \"\\u249B\", \"\\u0032\\u0030\\u002E\",\n \"\\u249C\", \"\\u0028\\u0061\\u0029\",\n \"\\u249D\", \"\\u0028\\u0062\\u0029\",\n \"\\u249E\", \"\\u0028\\u0063\\u0029\",\n \"\\u249F\", \"\\u0028\\u0064\\u0029\",\n \"\\u24A0\", \"\\u0028\\u0065\\u0029\",\n \"\\u24A1\", \"\\u0028\\u0066\\u0029\",\n \"\\u24A2\", \"\\u0028\\u0067\\u0029\",\n \"\\u24A3\", \"\\u0028\\u0068\\u0029\",\n \"\\u24A4\", \"\\u0028\\u0069\\u0029\",\n \"\\u24A5\", \"\\u0028\\u006A\\u0029\",\n \"\\u24A6\", \"\\u0028\\u006B\\u0029\",\n \"\\u24A7\", \"\\u0028\\u006C\\u0029\",\n \"\\u24A8\", \"\\u0028\\u006D\\u0029\",\n \"\\u24A9\", \"\\u0028\\u006E\\u0029\",\n \"\\u24AA\", \"\\u0028\\u006F\\u0029\",\n \"\\u24AB\", \"\\u0028\\u0070\\u0029\",\n \"\\u24AC\", \"\\u0028\\u0071\\u0029\",\n \"\\u24AD\", \"\\u0028\\u0072\\u0029\",\n \"\\u24AE\", \"\\u0028\\u0073\\u0029\",\n \"\\u24AF\", \"\\u0028\\u0074\\u0029\",\n \"\\u24B0\", \"\\u0028\\u0075\\u0029\",\n \"\\u24B1\", \"\\u0028\\u0076\\u0029\",\n \"\\u24B2\", \"\\u0028\\u0077\\u0029\",\n \"\\u24B3\", \"\\u0028\\u0078\\u0029\",\n \"\\u24B4\", \"\\u0028\\u0079\\u0029\",\n \"\\u24B5\", \"\\u0028\\u007A\\u0029\",\n \"\\u2A0C\", \"\\u222B\\u222B\\u222B\\u222B\",\n \"\\u2A74\", \"\\u003A\\u003A\\u003D\",\n \"\\u2A75\", \"\\u003D\\u003D\",\n \"\\u2A76\", \"\\u003D\\u003D\\u003D\",\n \"\\u2E9F\", \"\\u6BCD\",\n \"\\u2EF3\", \"\\u9F9F\",\n \"\\u2F00\", \"\\u4E00\",\n \"\\u2F01\", \"\\u4E28\",\n \"\\u2F02\", \"\\u4E36\",\n \"\\u2F03\", \"\\u4E3F\",\n \"\\u2F04\", \"\\u4E59\",\n \"\\u2F05\", \"\\u4E85\",\n \"\\u2F06\", \"\\u4E8C\",\n \"\\u2F07\", \"\\u4EA0\",\n \"\\u2F08\", \"\\u4EBA\",\n \"\\u2F09\", \"\\u513F\",\n \"\\u2F0A\", \"\\u5165\",\n \"\\u2F0B\", \"\\u516B\",\n \"\\u2F0C\", \"\\u5182\",\n \"\\u2F0D\", \"\\u5196\",\n \"\\u2F0E\", \"\\u51AB\",\n \"\\u2F0F\", \"\\u51E0\",\n \"\\u2F10\", \"\\u51F5\",\n \"\\u2F11\", \"\\u5200\",\n \"\\u2F12\", \"\\u529B\",\n \"\\u2F13\", \"\\u52F9\",\n \"\\u2F14\", \"\\u5315\",\n \"\\u2F15\", \"\\u531A\",\n \"\\u2F16\", \"\\u5338\",\n \"\\u2F17\", \"\\u5341\",\n \"\\u2F18\", \"\\u535C\",\n \"\\u2F19\", \"\\u5369\",\n \"\\u2F1A\", \"\\u5382\",\n \"\\u2F1B\", \"\\u53B6\",\n \"\\u2F1C\", \"\\u53C8\",\n \"\\u2F1D\", \"\\u53E3\",\n \"\\u2F1E\", \"\\u56D7\",\n \"\\u2F1F\", \"\\u571F\",\n \"\\u2F20\", \"\\u58EB\",\n \"\\u2F21\", \"\\u5902\",\n \"\\u2F22\", \"\\u590A\",\n \"\\u2F23\", \"\\u5915\",\n \"\\u2F24\", \"\\u5927\",\n \"\\u2F25\", \"\\u5973\",\n \"\\u2F26\", \"\\u5B50\",\n \"\\u2F27\", \"\\u5B80\",\n \"\\u2F28\", \"\\u5BF8\",\n \"\\u2F29\", \"\\u5C0F\",\n \"\\u2F2A\", \"\\u5C22\",\n \"\\u2F2B\", \"\\u5C38\",\n \"\\u2F2C\", \"\\u5C6E\",\n \"\\u2F2D\", \"\\u5C71\",\n \"\\u2F2E\", \"\\u5DDB\",\n \"\\u2F2F\", \"\\u5DE5\",\n \"\\u2F30\", \"\\u5DF1\",\n \"\\u2F31\", \"\\u5DFE\",\n \"\\u2F32\", \"\\u5E72\",\n \"\\u2F33\", \"\\u5E7A\",\n \"\\u2F34\", \"\\u5E7F\",\n \"\\u2F35\", \"\\u5EF4\",\n \"\\u2F36\", \"\\u5EFE\",\n \"\\u2F37\", \"\\u5F0B\",\n \"\\u2F38\", \"\\u5F13\",\n \"\\u2F39\", \"\\u5F50\",\n \"\\u2F3A\", \"\\u5F61\",\n \"\\u2F3B\", \"\\u5F73\",\n \"\\u2F3C\", \"\\u5FC3\",\n \"\\u2F3D\", \"\\u6208\",\n \"\\u2F3E\", \"\\u6236\",\n \"\\u2F3F\", \"\\u624B\",\n \"\\u2F40\", \"\\u652F\",\n \"\\u2F41\", \"\\u6534\",\n \"\\u2F42\", \"\\u6587\",\n \"\\u2F43\", \"\\u6597\",\n \"\\u2F44\", \"\\u65A4\",\n \"\\u2F45\", \"\\u65B9\",\n \"\\u2F46\", \"\\u65E0\",\n \"\\u2F47\", \"\\u65E5\",\n \"\\u2F48\", \"\\u66F0\",\n \"\\u2F49\", \"\\u6708\",\n \"\\u2F4A\", \"\\u6728\",\n \"\\u2F4B\", \"\\u6B20\",\n \"\\u2F4C\", \"\\u6B62\",\n \"\\u2F4D\", \"\\u6B79\",\n \"\\u2F4E\", \"\\u6BB3\",\n \"\\u2F4F\", \"\\u6BCB\",\n \"\\u2F50\", \"\\u6BD4\",\n \"\\u2F51\", \"\\u6BDB\",\n \"\\u2F52\", \"\\u6C0F\",\n \"\\u2F53\", \"\\u6C14\",\n \"\\u2F54\", \"\\u6C34\",\n \"\\u2F55\", \"\\u706B\",\n \"\\u2F56\", \"\\u722A\",\n \"\\u2F57\", \"\\u7236\",\n \"\\u2F58\", \"\\u723B\",\n \"\\u2F59\", \"\\u723F\",\n \"\\u2F5A\", \"\\u7247\",\n \"\\u2F5B\", \"\\u7259\",\n \"\\u2F5C\", \"\\u725B\",\n \"\\u2F5D\", \"\\u72AC\",\n \"\\u2F5E\", \"\\u7384\",\n \"\\u2F5F\", \"\\u7389\",\n \"\\u2F60\", \"\\u74DC\",\n \"\\u2F61\", \"\\u74E6\",\n \"\\u2F62\", \"\\u7518\",\n \"\\u2F63\", \"\\u751F\",\n \"\\u2F64\", \"\\u7528\",\n \"\\u2F65\", \"\\u7530\",\n \"\\u2F66\", \"\\u758B\",\n \"\\u2F67\", \"\\u7592\",\n \"\\u2F68\", \"\\u7676\",\n \"\\u2F69\", \"\\u767D\",\n \"\\u2F6A\", \"\\u76AE\",\n \"\\u2F6B\", \"\\u76BF\",\n \"\\u2F6C\", \"\\u76EE\",\n \"\\u2F6D\", \"\\u77DB\",\n \"\\u2F6E\", \"\\u77E2\",\n \"\\u2F6F\", \"\\u77F3\",\n \"\\u2F70\", \"\\u793A\",\n \"\\u2F71\", \"\\u79B8\",\n \"\\u2F72\", \"\\u79BE\",\n \"\\u2F73\", \"\\u7A74\",\n \"\\u2F74\", \"\\u7ACB\",\n \"\\u2F75\", \"\\u7AF9\",\n \"\\u2F76\", \"\\u7C73\",\n \"\\u2F77\", \"\\u7CF8\",\n \"\\u2F78\", \"\\u7F36\",\n \"\\u2F79\", \"\\u7F51\",\n \"\\u2F7A\", \"\\u7F8A\",\n \"\\u2F7B\", \"\\u7FBD\",\n \"\\u2F7C\", \"\\u8001\",\n \"\\u2F7D\", \"\\u800C\",\n \"\\u2F7E\", \"\\u8012\",\n \"\\u2F7F\", \"\\u8033\",\n \"\\u2F80\", \"\\u807F\",\n \"\\u2F81\", \"\\u8089\",\n \"\\u2F82\", \"\\u81E3\",\n \"\\u2F83\", \"\\u81EA\",\n \"\\u2F84\", \"\\u81F3\",\n \"\\u2F85\", \"\\u81FC\",\n \"\\u2F86\", \"\\u820C\",\n \"\\u2F87\", \"\\u821B\",\n \"\\u2F88\", \"\\u821F\",\n \"\\u2F89\", \"\\u826E\",\n \"\\u2F8A\", \"\\u8272\",\n \"\\u2F8B\", \"\\u8278\",\n \"\\u2F8C\", \"\\u864D\",\n \"\\u2F8D\", \"\\u866B\",\n \"\\u2F8E\", \"\\u8840\",\n \"\\u2F8F\", \"\\u884C\",\n \"\\u2F90\", \"\\u8863\",\n \"\\u2F91\", \"\\u897E\",\n \"\\u2F92\", \"\\u898B\",\n \"\\u2F93\", \"\\u89D2\",\n \"\\u2F94\", \"\\u8A00\",\n \"\\u2F95\", \"\\u8C37\",\n \"\\u2F96\", \"\\u8C46\",\n \"\\u2F97\", \"\\u8C55\",\n \"\\u2F98\", \"\\u8C78\",\n \"\\u2F99\", \"\\u8C9D\",\n \"\\u2F9A\", \"\\u8D64\",\n \"\\u2F9B\", \"\\u8D70\",\n \"\\u2F9C\", \"\\u8DB3\",\n \"\\u2F9D\", \"\\u8EAB\",\n \"\\u2F9E\", \"\\u8ECA\",\n \"\\u2F9F\", \"\\u8F9B\",\n \"\\u2FA0\", \"\\u8FB0\",\n \"\\u2FA1\", \"\\u8FB5\",\n \"\\u2FA2\", \"\\u9091\",\n \"\\u2FA3\", \"\\u9149\",\n \"\\u2FA4\", \"\\u91C6\",\n \"\\u2FA5\", \"\\u91CC\",\n \"\\u2FA6\", \"\\u91D1\",\n \"\\u2FA7\", \"\\u9577\",\n \"\\u2FA8\", \"\\u9580\",\n \"\\u2FA9\", \"\\u961C\",\n \"\\u2FAA\", \"\\u96B6\",\n \"\\u2FAB\", \"\\u96B9\",\n \"\\u2FAC\", \"\\u96E8\",\n \"\\u2FAD\", \"\\u9751\",\n \"\\u2FAE\", \"\\u975E\",\n \"\\u2FAF\", \"\\u9762\",\n \"\\u2FB0\", \"\\u9769\",\n \"\\u2FB1\", \"\\u97CB\",\n \"\\u2FB2\", \"\\u97ED\",\n \"\\u2FB3\", \"\\u97F3\",\n \"\\u2FB4\", \"\\u9801\",\n \"\\u2FB5\", \"\\u98A8\",\n \"\\u2FB6\", \"\\u98DB\",\n \"\\u2FB7\", \"\\u98DF\",\n \"\\u2FB8\", \"\\u9996\",\n \"\\u2FB9\", \"\\u9999\",\n \"\\u2FBA\", \"\\u99AC\",\n \"\\u2FBB\", \"\\u9AA8\",\n \"\\u2FBC\", \"\\u9AD8\",\n \"\\u2FBD\", \"\\u9ADF\",\n \"\\u2FBE\", \"\\u9B25\",\n \"\\u2FBF\", \"\\u9B2F\",\n \"\\u2FC0\", \"\\u9B32\",\n \"\\u2FC1\", \"\\u9B3C\",\n \"\\u2FC2\", \"\\u9B5A\",\n \"\\u2FC3\", \"\\u9CE5\",\n \"\\u2FC4\", \"\\u9E75\",\n \"\\u2FC5\", \"\\u9E7F\",\n \"\\u2FC6\", \"\\u9EA5\",\n \"\\u2FC7\", \"\\u9EBB\",\n \"\\u2FC8\", \"\\u9EC3\",\n \"\\u2FC9\", \"\\u9ECD\",\n \"\\u2FCA\", \"\\u9ED1\",\n \"\\u2FCB\", \"\\u9EF9\",\n \"\\u2FCC\", \"\\u9EFD\",\n \"\\u2FCD\", \"\\u9F0E\",\n \"\\u2FCE\", \"\\u9F13\",\n \"\\u2FCF\", \"\\u9F20\",\n \"\\u2FD0\", \"\\u9F3B\",\n \"\\u2FD1\", \"\\u9F4A\",\n \"\\u2FD2\", \"\\u9F52\",\n \"\\u2FD3\", \"\\u9F8D\",\n \"\\u2FD4\", \"\\u9F9C\",\n \"\\u2FD5\", \"\\u9FA0\",\n \"\\u3036\", \"\\u3012\",\n \"\\u3038\", \"\\u5341\",\n \"\\u3039\", \"\\u5344\",\n \"\\u303A\", \"\\u5345\",\n \"\\u309B\", \"\\u0020\\u3099\",\n \"\\u309C\", \"\\u0020\\u309A\",\n \"\\u3131\", \"\\u1100\",\n \"\\u3132\", \"\\u1101\",\n \"\\u3133\", \"\\u11AA\",\n \"\\u3134\", \"\\u1102\",\n \"\\u3135\", \"\\u11AC\",\n \"\\u3136\", \"\\u11AD\",\n \"\\u3137\", \"\\u1103\",\n \"\\u3138\", \"\\u1104\",\n \"\\u3139\", \"\\u1105\",\n \"\\u313A\", \"\\u11B0\",\n \"\\u313B\", \"\\u11B1\",\n \"\\u313C\", \"\\u11B2\",\n \"\\u313D\", \"\\u11B3\",\n \"\\u313E\", \"\\u11B4\",\n \"\\u313F\", \"\\u11B5\",\n \"\\u3140\", \"\\u111A\",\n \"\\u3141\", \"\\u1106\",\n \"\\u3142\", \"\\u1107\",\n \"\\u3143\", \"\\u1108\",\n \"\\u3144\", \"\\u1121\",\n \"\\u3145\", \"\\u1109\",\n \"\\u3146\", \"\\u110A\",\n \"\\u3147\", \"\\u110B\",\n \"\\u3148\", \"\\u110C\",\n \"\\u3149\", \"\\u110D\",\n \"\\u314A\", \"\\u110E\",\n \"\\u314B\", \"\\u110F\",\n \"\\u314C\", \"\\u1110\",\n \"\\u314D\", \"\\u1111\",\n \"\\u314E\", \"\\u1112\",\n \"\\u314F\", \"\\u1161\",\n \"\\u3150\", \"\\u1162\",\n \"\\u3151\", \"\\u1163\",\n \"\\u3152\", \"\\u1164\",\n \"\\u3153\", \"\\u1165\",\n \"\\u3154\", \"\\u1166\",\n \"\\u3155\", \"\\u1167\",\n \"\\u3156\", \"\\u1168\",\n \"\\u3157\", \"\\u1169\",\n \"\\u3158\", \"\\u116A\",\n \"\\u3159\", \"\\u116B\",\n \"\\u315A\", \"\\u116C\",\n \"\\u315B\", \"\\u116D\",\n \"\\u315C\", \"\\u116E\",\n \"\\u315D\", \"\\u116F\",\n \"\\u315E\", \"\\u1170\",\n \"\\u315F\", \"\\u1171\",\n \"\\u3160\", \"\\u1172\",\n \"\\u3161\", \"\\u1173\",\n \"\\u3162\", \"\\u1174\",\n \"\\u3163\", \"\\u1175\",\n \"\\u3164\", \"\\u1160\",\n \"\\u3165\", \"\\u1114\",\n \"\\u3166\", \"\\u1115\",\n \"\\u3167\", \"\\u11C7\",\n \"\\u3168\", \"\\u11C8\",\n \"\\u3169\", \"\\u11CC\",\n \"\\u316A\", \"\\u11CE\",\n \"\\u316B\", \"\\u11D3\",\n \"\\u316C\", \"\\u11D7\",\n \"\\u316D\", \"\\u11D9\",\n \"\\u316E\", \"\\u111C\",\n \"\\u316F\", \"\\u11DD\",\n \"\\u3170\", \"\\u11DF\",\n \"\\u3171\", \"\\u111D\",\n \"\\u3172\", \"\\u111E\",\n \"\\u3173\", \"\\u1120\",\n \"\\u3174\", \"\\u1122\",\n \"\\u3175\", \"\\u1123\",\n \"\\u3176\", \"\\u1127\",\n \"\\u3177\", \"\\u1129\",\n \"\\u3178\", \"\\u112B\",\n \"\\u3179\", \"\\u112C\",\n \"\\u317A\", \"\\u112D\",\n \"\\u317B\", \"\\u112E\",\n \"\\u317C\", \"\\u112F\",\n \"\\u317D\", \"\\u1132\",\n \"\\u317E\", \"\\u1136\",\n \"\\u317F\", \"\\u1140\",\n \"\\u3180\", \"\\u1147\",\n \"\\u3181\", \"\\u114C\",\n \"\\u3182\", \"\\u11F1\",\n \"\\u3183\", \"\\u11F2\",\n \"\\u3184\", \"\\u1157\",\n \"\\u3185\", \"\\u1158\",\n \"\\u3186\", \"\\u1159\",\n \"\\u3187\", \"\\u1184\",\n \"\\u3188\", \"\\u1185\",\n \"\\u3189\", \"\\u1188\",\n \"\\u318A\", \"\\u1191\",\n \"\\u318B\", \"\\u1192\",\n \"\\u318C\", \"\\u1194\",\n \"\\u318D\", \"\\u119E\",\n \"\\u318E\", \"\\u11A1\",\n \"\\u3200\", \"\\u0028\\u1100\\u0029\",\n \"\\u3201\", \"\\u0028\\u1102\\u0029\",\n \"\\u3202\", \"\\u0028\\u1103\\u0029\",\n \"\\u3203\", \"\\u0028\\u1105\\u0029\",\n \"\\u3204\", \"\\u0028\\u1106\\u0029\",\n \"\\u3205\", \"\\u0028\\u1107\\u0029\",\n \"\\u3206\", \"\\u0028\\u1109\\u0029\",\n \"\\u3207\", \"\\u0028\\u110B\\u0029\",\n \"\\u3208\", \"\\u0028\\u110C\\u0029\",\n \"\\u3209\", \"\\u0028\\u110E\\u0029\",\n \"\\u320A\", \"\\u0028\\u110F\\u0029\",\n \"\\u320B\", \"\\u0028\\u1110\\u0029\",\n \"\\u320C\", \"\\u0028\\u1111\\u0029\",\n \"\\u320D\", \"\\u0028\\u1112\\u0029\",\n \"\\u320E\", \"\\u0028\\u1100\\u1161\\u0029\",\n \"\\u320F\", \"\\u0028\\u1102\\u1161\\u0029\",\n \"\\u3210\", \"\\u0028\\u1103\\u1161\\u0029\",\n \"\\u3211\", \"\\u0028\\u1105\\u1161\\u0029\",\n \"\\u3212\", \"\\u0028\\u1106\\u1161\\u0029\",\n \"\\u3213\", \"\\u0028\\u1107\\u1161\\u0029\",\n \"\\u3214\", \"\\u0028\\u1109\\u1161\\u0029\",\n \"\\u3215\", \"\\u0028\\u110B\\u1161\\u0029\",\n \"\\u3216\", \"\\u0028\\u110C\\u1161\\u0029\",\n \"\\u3217\", \"\\u0028\\u110E\\u1161\\u0029\",\n \"\\u3218\", \"\\u0028\\u110F\\u1161\\u0029\",\n \"\\u3219\", \"\\u0028\\u1110\\u1161\\u0029\",\n \"\\u321A\", \"\\u0028\\u1111\\u1161\\u0029\",\n \"\\u321B\", \"\\u0028\\u1112\\u1161\\u0029\",\n \"\\u321C\", \"\\u0028\\u110C\\u116E\\u0029\",\n \"\\u321D\", \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\",\n \"\\u321E\", \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\",\n \"\\u3220\", \"\\u0028\\u4E00\\u0029\",\n \"\\u3221\", \"\\u0028\\u4E8C\\u0029\",\n \"\\u3222\", \"\\u0028\\u4E09\\u0029\",\n \"\\u3223\", \"\\u0028\\u56DB\\u0029\",\n \"\\u3224\", \"\\u0028\\u4E94\\u0029\",\n \"\\u3225\", \"\\u0028\\u516D\\u0029\",\n \"\\u3226\", \"\\u0028\\u4E03\\u0029\",\n \"\\u3227\", \"\\u0028\\u516B\\u0029\",\n \"\\u3228\", \"\\u0028\\u4E5D\\u0029\",\n \"\\u3229\", \"\\u0028\\u5341\\u0029\",\n \"\\u322A\", \"\\u0028\\u6708\\u0029\",\n \"\\u322B\", \"\\u0028\\u706B\\u0029\",\n \"\\u322C\", \"\\u0028\\u6C34\\u0029\",\n \"\\u322D\", \"\\u0028\\u6728\\u0029\",\n \"\\u322E\", \"\\u0028\\u91D1\\u0029\",\n \"\\u322F\", \"\\u0028\\u571F\\u0029\",\n \"\\u3230\", \"\\u0028\\u65E5\\u0029\",\n \"\\u3231\", \"\\u0028\\u682A\\u0029\",\n \"\\u3232\", \"\\u0028\\u6709\\u0029\",\n \"\\u3233\", \"\\u0028\\u793E\\u0029\",\n \"\\u3234\", \"\\u0028\\u540D\\u0029\",\n \"\\u3235\", \"\\u0028\\u7279\\u0029\",\n \"\\u3236\", \"\\u0028\\u8CA1\\u0029\",\n \"\\u3237\", \"\\u0028\\u795D\\u0029\",\n \"\\u3238\", \"\\u0028\\u52B4\\u0029\",\n \"\\u3239\", \"\\u0028\\u4EE3\\u0029\",\n \"\\u323A\", \"\\u0028\\u547C\\u0029\",\n \"\\u323B\", \"\\u0028\\u5B66\\u0029\",\n \"\\u323C\", \"\\u0028\\u76E3\\u0029\",\n \"\\u323D\", \"\\u0028\\u4F01\\u0029\",\n \"\\u323E\", \"\\u0028\\u8CC7\\u0029\",\n \"\\u323F\", \"\\u0028\\u5354\\u0029\",\n \"\\u3240\", \"\\u0028\\u796D\\u0029\",\n \"\\u3241\", \"\\u0028\\u4F11\\u0029\",\n \"\\u3242\", \"\\u0028\\u81EA\\u0029\",\n \"\\u3243\", \"\\u0028\\u81F3\\u0029\",\n \"\\u32C0\", \"\\u0031\\u6708\",\n \"\\u32C1\", \"\\u0032\\u6708\",\n \"\\u32C2\", \"\\u0033\\u6708\",\n \"\\u32C3\", \"\\u0034\\u6708\",\n \"\\u32C4\", \"\\u0035\\u6708\",\n \"\\u32C5\", \"\\u0036\\u6708\",\n \"\\u32C6\", \"\\u0037\\u6708\",\n \"\\u32C7\", \"\\u0038\\u6708\",\n \"\\u32C8\", \"\\u0039\\u6708\",\n \"\\u32C9\", \"\\u0031\\u0030\\u6708\",\n \"\\u32CA\", \"\\u0031\\u0031\\u6708\",\n \"\\u32CB\", \"\\u0031\\u0032\\u6708\",\n \"\\u3358\", \"\\u0030\\u70B9\",\n \"\\u3359\", \"\\u0031\\u70B9\",\n \"\\u335A\", \"\\u0032\\u70B9\",\n \"\\u335B\", \"\\u0033\\u70B9\",\n \"\\u335C\", \"\\u0034\\u70B9\",\n \"\\u335D\", \"\\u0035\\u70B9\",\n \"\\u335E\", \"\\u0036\\u70B9\",\n \"\\u335F\", \"\\u0037\\u70B9\",\n \"\\u3360\", \"\\u0038\\u70B9\",\n \"\\u3361\", \"\\u0039\\u70B9\",\n \"\\u3362\", \"\\u0031\\u0030\\u70B9\",\n \"\\u3363\", \"\\u0031\\u0031\\u70B9\",\n \"\\u3364\", \"\\u0031\\u0032\\u70B9\",\n \"\\u3365\", \"\\u0031\\u0033\\u70B9\",\n \"\\u3366\", \"\\u0031\\u0034\\u70B9\",\n \"\\u3367\", \"\\u0031\\u0035\\u70B9\",\n \"\\u3368\", \"\\u0031\\u0036\\u70B9\",\n \"\\u3369\", \"\\u0031\\u0037\\u70B9\",\n \"\\u336A\", \"\\u0031\\u0038\\u70B9\",\n \"\\u336B\", \"\\u0031\\u0039\\u70B9\",\n \"\\u336C\", \"\\u0032\\u0030\\u70B9\",\n \"\\u336D\", \"\\u0032\\u0031\\u70B9\",\n \"\\u336E\", \"\\u0032\\u0032\\u70B9\",\n \"\\u336F\", \"\\u0032\\u0033\\u70B9\",\n \"\\u3370\", \"\\u0032\\u0034\\u70B9\",\n \"\\u33E0\", \"\\u0031\\u65E5\",\n \"\\u33E1\", \"\\u0032\\u65E5\",\n \"\\u33E2\", \"\\u0033\\u65E5\",\n \"\\u33E3\", \"\\u0034\\u65E5\",\n \"\\u33E4\", \"\\u0035\\u65E5\",\n \"\\u33E5\", \"\\u0036\\u65E5\",\n \"\\u33E6\", \"\\u0037\\u65E5\",\n \"\\u33E7\", \"\\u0038\\u65E5\",\n \"\\u33E8\", \"\\u0039\\u65E5\",\n \"\\u33E9\", \"\\u0031\\u0030\\u65E5\",\n \"\\u33EA\", \"\\u0031\\u0031\\u65E5\",\n \"\\u33EB\", \"\\u0031\\u0032\\u65E5\",\n \"\\u33EC\", \"\\u0031\\u0033\\u65E5\",\n \"\\u33ED\", \"\\u0031\\u0034\\u65E5\",\n \"\\u33EE\", \"\\u0031\\u0035\\u65E5\",\n \"\\u33EF\", \"\\u0031\\u0036\\u65E5\",\n \"\\u33F0\", \"\\u0031\\u0037\\u65E5\",\n \"\\u33F1\", \"\\u0031\\u0038\\u65E5\",\n \"\\u33F2\", \"\\u0031\\u0039\\u65E5\",\n \"\\u33F3\", \"\\u0032\\u0030\\u65E5\",\n \"\\u33F4\", \"\\u0032\\u0031\\u65E5\",\n \"\\u33F5\", \"\\u0032\\u0032\\u65E5\",\n \"\\u33F6\", \"\\u0032\\u0033\\u65E5\",\n \"\\u33F7\", \"\\u0032\\u0034\\u65E5\",\n \"\\u33F8\", \"\\u0032\\u0035\\u65E5\",\n \"\\u33F9\", \"\\u0032\\u0036\\u65E5\",\n \"\\u33FA\", \"\\u0032\\u0037\\u65E5\",\n \"\\u33FB\", \"\\u0032\\u0038\\u65E5\",\n \"\\u33FC\", \"\\u0032\\u0039\\u65E5\",\n \"\\u33FD\", \"\\u0033\\u0030\\u65E5\",\n \"\\u33FE\", \"\\u0033\\u0031\\u65E5\",\n \"\\uFB00\", \"\\u0066\\u0066\",\n \"\\uFB01\", \"\\u0066\\u0069\",\n \"\\uFB02\", \"\\u0066\\u006C\",\n \"\\uFB03\", \"\\u0066\\u0066\\u0069\",\n \"\\uFB04\", \"\\u0066\\u0066\\u006C\",\n \"\\uFB05\", \"\\u017F\\u0074\",\n \"\\uFB06\", \"\\u0073\\u0074\",\n \"\\uFB13\", \"\\u0574\\u0576\",\n \"\\uFB14\", \"\\u0574\\u0565\",\n \"\\uFB15\", \"\\u0574\\u056B\",\n \"\\uFB16\", \"\\u057E\\u0576\",\n \"\\uFB17\", \"\\u0574\\u056D\",\n \"\\uFB4F\", \"\\u05D0\\u05DC\",\n \"\\uFB50\", \"\\u0671\",\n \"\\uFB51\", \"\\u0671\",\n \"\\uFB52\", \"\\u067B\",\n \"\\uFB53\", \"\\u067B\",\n \"\\uFB54\", \"\\u067B\",\n \"\\uFB55\", \"\\u067B\",\n \"\\uFB56\", \"\\u067E\",\n \"\\uFB57\", \"\\u067E\",\n \"\\uFB58\", \"\\u067E\",\n \"\\uFB59\", \"\\u067E\",\n \"\\uFB5A\", \"\\u0680\",\n \"\\uFB5B\", \"\\u0680\",\n \"\\uFB5C\", \"\\u0680\",\n \"\\uFB5D\", \"\\u0680\",\n \"\\uFB5E\", \"\\u067A\",\n \"\\uFB5F\", \"\\u067A\",\n \"\\uFB60\", \"\\u067A\",\n \"\\uFB61\", \"\\u067A\",\n \"\\uFB62\", \"\\u067F\",\n \"\\uFB63\", \"\\u067F\",\n \"\\uFB64\", \"\\u067F\",\n \"\\uFB65\", \"\\u067F\",\n \"\\uFB66\", \"\\u0679\",\n \"\\uFB67\", \"\\u0679\",\n \"\\uFB68\", \"\\u0679\",\n \"\\uFB69\", \"\\u0679\",\n \"\\uFB6A\", \"\\u06A4\",\n \"\\uFB6B\", \"\\u06A4\",\n \"\\uFB6C\", \"\\u06A4\",\n \"\\uFB6D\", \"\\u06A4\",\n \"\\uFB6E\", \"\\u06A6\",\n \"\\uFB6F\", \"\\u06A6\",\n \"\\uFB70\", \"\\u06A6\",\n \"\\uFB71\", \"\\u06A6\",\n \"\\uFB72\", \"\\u0684\",\n \"\\uFB73\", \"\\u0684\",\n \"\\uFB74\", \"\\u0684\",\n \"\\uFB75\", \"\\u0684\",\n \"\\uFB76\", \"\\u0683\",\n \"\\uFB77\", \"\\u0683\",\n \"\\uFB78\", \"\\u0683\",\n \"\\uFB79\", \"\\u0683\",\n \"\\uFB7A\", \"\\u0686\",\n \"\\uFB7B\", \"\\u0686\",\n \"\\uFB7C\", \"\\u0686\",\n \"\\uFB7D\", \"\\u0686\",\n \"\\uFB7E\", \"\\u0687\",\n \"\\uFB7F\", \"\\u0687\",\n \"\\uFB80\", \"\\u0687\",\n \"\\uFB81\", \"\\u0687\",\n \"\\uFB82\", \"\\u068D\",\n \"\\uFB83\", \"\\u068D\",\n \"\\uFB84\", \"\\u068C\",\n \"\\uFB85\", \"\\u068C\",\n \"\\uFB86\", \"\\u068E\",\n \"\\uFB87\", \"\\u068E\",\n \"\\uFB88\", \"\\u0688\",\n \"\\uFB89\", \"\\u0688\",\n \"\\uFB8A\", \"\\u0698\",\n \"\\uFB8B\", \"\\u0698\",\n \"\\uFB8C\", \"\\u0691\",\n \"\\uFB8D\", \"\\u0691\",\n \"\\uFB8E\", \"\\u06A9\",\n \"\\uFB8F\", \"\\u06A9\",\n \"\\uFB90\", \"\\u06A9\",\n \"\\uFB91\", \"\\u06A9\",\n \"\\uFB92\", \"\\u06AF\",\n \"\\uFB93\", \"\\u06AF\",\n \"\\uFB94\", \"\\u06AF\",\n \"\\uFB95\", \"\\u06AF\",\n \"\\uFB96\", \"\\u06B3\",\n \"\\uFB97\", \"\\u06B3\",\n \"\\uFB98\", \"\\u06B3\",\n \"\\uFB99\", \"\\u06B3\",\n \"\\uFB9A\", \"\\u06B1\",\n \"\\uFB9B\", \"\\u06B1\",\n \"\\uFB9C\", \"\\u06B1\",\n \"\\uFB9D\", \"\\u06B1\",\n \"\\uFB9E\", \"\\u06BA\",\n \"\\uFB9F\", \"\\u06BA\",\n \"\\uFBA0\", \"\\u06BB\",\n \"\\uFBA1\", \"\\u06BB\",\n \"\\uFBA2\", \"\\u06BB\",\n \"\\uFBA3\", \"\\u06BB\",\n \"\\uFBA4\", \"\\u06C0\",\n \"\\uFBA5\", \"\\u06C0\",\n \"\\uFBA6\", \"\\u06C1\",\n \"\\uFBA7\", \"\\u06C1\",\n \"\\uFBA8\", \"\\u06C1\",\n \"\\uFBA9\", \"\\u06C1\",\n \"\\uFBAA\", \"\\u06BE\",\n \"\\uFBAB\", \"\\u06BE\",\n \"\\uFBAC\", \"\\u06BE\",\n \"\\uFBAD\", \"\\u06BE\",\n \"\\uFBAE\", \"\\u06D2\",\n \"\\uFBAF\", \"\\u06D2\",\n \"\\uFBB0\", \"\\u06D3\",\n \"\\uFBB1\", \"\\u06D3\",\n \"\\uFBD3\", \"\\u06AD\",\n \"\\uFBD4\", \"\\u06AD\",\n \"\\uFBD5\", \"\\u06AD\",\n \"\\uFBD6\", \"\\u06AD\",\n \"\\uFBD7\", \"\\u06C7\",\n \"\\uFBD8\", \"\\u06C7\",\n \"\\uFBD9\", \"\\u06C6\",\n \"\\uFBDA\", \"\\u06C6\",\n \"\\uFBDB\", \"\\u06C8\",\n \"\\uFBDC\", \"\\u06C8\",\n \"\\uFBDD\", \"\\u0677\",\n \"\\uFBDE\", \"\\u06CB\",\n \"\\uFBDF\", \"\\u06CB\",\n \"\\uFBE0\", \"\\u06C5\",\n \"\\uFBE1\", \"\\u06C5\",\n \"\\uFBE2\", \"\\u06C9\",\n \"\\uFBE3\", \"\\u06C9\",\n \"\\uFBE4\", \"\\u06D0\",\n \"\\uFBE5\", \"\\u06D0\",\n \"\\uFBE6\", \"\\u06D0\",\n \"\\uFBE7\", \"\\u06D0\",\n \"\\uFBE8\", \"\\u0649\",\n \"\\uFBE9\", \"\\u0649\",\n \"\\uFBEA\", \"\\u0626\\u0627\",\n \"\\uFBEB\", \"\\u0626\\u0627\",\n \"\\uFBEC\", \"\\u0626\\u06D5\",\n \"\\uFBED\", \"\\u0626\\u06D5\",\n \"\\uFBEE\", \"\\u0626\\u0648\",\n \"\\uFBEF\", \"\\u0626\\u0648\",\n \"\\uFBF0\", \"\\u0626\\u06C7\",\n \"\\uFBF1\", \"\\u0626\\u06C7\",\n \"\\uFBF2\", \"\\u0626\\u06C6\",\n \"\\uFBF3\", \"\\u0626\\u06C6\",\n \"\\uFBF4\", \"\\u0626\\u06C8\",\n \"\\uFBF5\", \"\\u0626\\u06C8\",\n \"\\uFBF6\", \"\\u0626\\u06D0\",\n \"\\uFBF7\", \"\\u0626\\u06D0\",\n \"\\uFBF8\", \"\\u0626\\u06D0\",\n \"\\uFBF9\", \"\\u0626\\u0649\",\n \"\\uFBFA\", \"\\u0626\\u0649\",\n \"\\uFBFB\", \"\\u0626\\u0649\",\n \"\\uFBFC\", \"\\u06CC\",\n \"\\uFBFD\", \"\\u06CC\",\n \"\\uFBFE\", \"\\u06CC\",\n \"\\uFBFF\", \"\\u06CC\",\n \"\\uFC00\", \"\\u0626\\u062C\",\n \"\\uFC01\", \"\\u0626\\u062D\",\n \"\\uFC02\", \"\\u0626\\u0645\",\n \"\\uFC03\", \"\\u0626\\u0649\",\n \"\\uFC04\", \"\\u0626\\u064A\",\n \"\\uFC05\", \"\\u0628\\u062C\",\n \"\\uFC06\", \"\\u0628\\u062D\",\n \"\\uFC07\", \"\\u0628\\u062E\",\n \"\\uFC08\", \"\\u0628\\u0645\",\n \"\\uFC09\", \"\\u0628\\u0649\",\n \"\\uFC0A\", \"\\u0628\\u064A\",\n \"\\uFC0B\", \"\\u062A\\u062C\",\n \"\\uFC0C\", \"\\u062A\\u062D\",\n \"\\uFC0D\", \"\\u062A\\u062E\",\n \"\\uFC0E\", \"\\u062A\\u0645\",\n \"\\uFC0F\", \"\\u062A\\u0649\",\n \"\\uFC10\", \"\\u062A\\u064A\",\n \"\\uFC11\", \"\\u062B\\u062C\",\n \"\\uFC12\", \"\\u062B\\u0645\",\n \"\\uFC13\", \"\\u062B\\u0649\",\n \"\\uFC14\", \"\\u062B\\u064A\",\n \"\\uFC15\", \"\\u062C\\u062D\",\n \"\\uFC16\", \"\\u062C\\u0645\",\n \"\\uFC17\", \"\\u062D\\u062C\",\n \"\\uFC18\", \"\\u062D\\u0645\",\n \"\\uFC19\", \"\\u062E\\u062C\",\n \"\\uFC1A\", \"\\u062E\\u062D\",\n \"\\uFC1B\", \"\\u062E\\u0645\",\n \"\\uFC1C\", \"\\u0633\\u062C\",\n \"\\uFC1D\", \"\\u0633\\u062D\",\n \"\\uFC1E\", \"\\u0633\\u062E\",\n \"\\uFC1F\", \"\\u0633\\u0645\",\n \"\\uFC20\", \"\\u0635\\u062D\",\n \"\\uFC21\", \"\\u0635\\u0645\",\n \"\\uFC22\", \"\\u0636\\u062C\",\n \"\\uFC23\", \"\\u0636\\u062D\",\n \"\\uFC24\", \"\\u0636\\u062E\",\n \"\\uFC25\", \"\\u0636\\u0645\",\n \"\\uFC26\", \"\\u0637\\u062D\",\n \"\\uFC27\", \"\\u0637\\u0645\",\n \"\\uFC28\", \"\\u0638\\u0645\",\n \"\\uFC29\", \"\\u0639\\u062C\",\n \"\\uFC2A\", \"\\u0639\\u0645\",\n \"\\uFC2B\", \"\\u063A\\u062C\",\n \"\\uFC2C\", \"\\u063A\\u0645\",\n \"\\uFC2D\", \"\\u0641\\u062C\",\n \"\\uFC2E\", \"\\u0641\\u062D\",\n \"\\uFC2F\", \"\\u0641\\u062E\",\n \"\\uFC30\", \"\\u0641\\u0645\",\n \"\\uFC31\", \"\\u0641\\u0649\",\n \"\\uFC32\", \"\\u0641\\u064A\",\n \"\\uFC33\", \"\\u0642\\u062D\",\n \"\\uFC34\", \"\\u0642\\u0645\",\n \"\\uFC35\", \"\\u0642\\u0649\",\n \"\\uFC36\", \"\\u0642\\u064A\",\n \"\\uFC37\", \"\\u0643\\u0627\",\n \"\\uFC38\", \"\\u0643\\u062C\",\n \"\\uFC39\", \"\\u0643\\u062D\",\n \"\\uFC3A\", \"\\u0643\\u062E\",\n \"\\uFC3B\", \"\\u0643\\u0644\",\n \"\\uFC3C\", \"\\u0643\\u0645\",\n \"\\uFC3D\", \"\\u0643\\u0649\",\n \"\\uFC3E\", \"\\u0643\\u064A\",\n \"\\uFC3F\", \"\\u0644\\u062C\",\n \"\\uFC40\", \"\\u0644\\u062D\",\n \"\\uFC41\", \"\\u0644\\u062E\",\n \"\\uFC42\", \"\\u0644\\u0645\",\n \"\\uFC43\", \"\\u0644\\u0649\",\n \"\\uFC44\", \"\\u0644\\u064A\",\n \"\\uFC45\", \"\\u0645\\u062C\",\n \"\\uFC46\", \"\\u0645\\u062D\",\n \"\\uFC47\", \"\\u0645\\u062E\",\n \"\\uFC48\", \"\\u0645\\u0645\",\n \"\\uFC49\", \"\\u0645\\u0649\",\n \"\\uFC4A\", \"\\u0645\\u064A\",\n \"\\uFC4B\", \"\\u0646\\u062C\",\n \"\\uFC4C\", \"\\u0646\\u062D\",\n \"\\uFC4D\", \"\\u0646\\u062E\",\n \"\\uFC4E\", \"\\u0646\\u0645\",\n \"\\uFC4F\", \"\\u0646\\u0649\",\n \"\\uFC50\", \"\\u0646\\u064A\",\n \"\\uFC51\", \"\\u0647\\u062C\",\n \"\\uFC52\", \"\\u0647\\u0645\",\n \"\\uFC53\", \"\\u0647\\u0649\",\n \"\\uFC54\", \"\\u0647\\u064A\",\n \"\\uFC55\", \"\\u064A\\u062C\",\n \"\\uFC56\", \"\\u064A\\u062D\",\n \"\\uFC57\", \"\\u064A\\u062E\",\n \"\\uFC58\", \"\\u064A\\u0645\",\n \"\\uFC59\", \"\\u064A\\u0649\",\n \"\\uFC5A\", \"\\u064A\\u064A\",\n \"\\uFC5B\", \"\\u0630\\u0670\",\n \"\\uFC5C\", \"\\u0631\\u0670\",\n \"\\uFC5D\", \"\\u0649\\u0670\",\n \"\\uFC5E\", \"\\u0020\\u064C\\u0651\",\n \"\\uFC5F\", \"\\u0020\\u064D\\u0651\",\n \"\\uFC60\", \"\\u0020\\u064E\\u0651\",\n \"\\uFC61\", \"\\u0020\\u064F\\u0651\",\n \"\\uFC62\", \"\\u0020\\u0650\\u0651\",\n \"\\uFC63\", \"\\u0020\\u0651\\u0670\",\n \"\\uFC64\", \"\\u0626\\u0631\",\n \"\\uFC65\", \"\\u0626\\u0632\",\n \"\\uFC66\", \"\\u0626\\u0645\",\n \"\\uFC67\", \"\\u0626\\u0646\",\n \"\\uFC68\", \"\\u0626\\u0649\",\n \"\\uFC69\", \"\\u0626\\u064A\",\n \"\\uFC6A\", \"\\u0628\\u0631\",\n \"\\uFC6B\", \"\\u0628\\u0632\",\n \"\\uFC6C\", \"\\u0628\\u0645\",\n \"\\uFC6D\", \"\\u0628\\u0646\",\n \"\\uFC6E\", \"\\u0628\\u0649\",\n \"\\uFC6F\", \"\\u0628\\u064A\",\n \"\\uFC70\", \"\\u062A\\u0631\",\n \"\\uFC71\", \"\\u062A\\u0632\",\n \"\\uFC72\", \"\\u062A\\u0645\",\n \"\\uFC73\", \"\\u062A\\u0646\",\n \"\\uFC74\", \"\\u062A\\u0649\",\n \"\\uFC75\", \"\\u062A\\u064A\",\n \"\\uFC76\", \"\\u062B\\u0631\",\n \"\\uFC77\", \"\\u062B\\u0632\",\n \"\\uFC78\", \"\\u062B\\u0645\",\n \"\\uFC79\", \"\\u062B\\u0646\",\n \"\\uFC7A\", \"\\u062B\\u0649\",\n \"\\uFC7B\", \"\\u062B\\u064A\",\n \"\\uFC7C\", \"\\u0641\\u0649\",\n \"\\uFC7D\", \"\\u0641\\u064A\",\n \"\\uFC7E\", \"\\u0642\\u0649\",\n \"\\uFC7F\", \"\\u0642\\u064A\",\n \"\\uFC80\", \"\\u0643\\u0627\",\n \"\\uFC81\", \"\\u0643\\u0644\",\n \"\\uFC82\", \"\\u0643\\u0645\",\n \"\\uFC83\", \"\\u0643\\u0649\",\n \"\\uFC84\", \"\\u0643\\u064A\",\n \"\\uFC85\", \"\\u0644\\u0645\",\n \"\\uFC86\", \"\\u0644\\u0649\",\n \"\\uFC87\", \"\\u0644\\u064A\",\n \"\\uFC88\", \"\\u0645\\u0627\",\n \"\\uFC89\", \"\\u0645\\u0645\",\n \"\\uFC8A\", \"\\u0646\\u0631\",\n \"\\uFC8B\", \"\\u0646\\u0632\",\n \"\\uFC8C\", \"\\u0646\\u0645\",\n \"\\uFC8D\", \"\\u0646\\u0646\",\n \"\\uFC8E\", \"\\u0646\\u0649\",\n \"\\uFC8F\", \"\\u0646\\u064A\",\n \"\\uFC90\", \"\\u0649\\u0670\",\n \"\\uFC91\", \"\\u064A\\u0631\",\n \"\\uFC92\", \"\\u064A\\u0632\",\n \"\\uFC93\", \"\\u064A\\u0645\",\n \"\\uFC94\", \"\\u064A\\u0646\",\n \"\\uFC95\", \"\\u064A\\u0649\",\n \"\\uFC96\", \"\\u064A\\u064A\",\n \"\\uFC97\", \"\\u0626\\u062C\",\n \"\\uFC98\", \"\\u0626\\u062D\",\n \"\\uFC99\", \"\\u0626\\u062E\",\n \"\\uFC9A\", \"\\u0626\\u0645\",\n \"\\uFC9B\", \"\\u0626\\u0647\",\n \"\\uFC9C\", \"\\u0628\\u062C\",\n \"\\uFC9D\", \"\\u0628\\u062D\",\n \"\\uFC9E\", \"\\u0628\\u062E\",\n \"\\uFC9F\", \"\\u0628\\u0645\",\n \"\\uFCA0\", \"\\u0628\\u0647\",\n \"\\uFCA1\", \"\\u062A\\u062C\",\n \"\\uFCA2\", \"\\u062A\\u062D\",\n \"\\uFCA3\", \"\\u062A\\u062E\",\n \"\\uFCA4\", \"\\u062A\\u0645\",\n \"\\uFCA5\", \"\\u062A\\u0647\",\n \"\\uFCA6\", \"\\u062B\\u0645\",\n \"\\uFCA7\", \"\\u062C\\u062D\",\n \"\\uFCA8\", \"\\u062C\\u0645\",\n \"\\uFCA9\", \"\\u062D\\u062C\",\n \"\\uFCAA\", \"\\u062D\\u0645\",\n \"\\uFCAB\", \"\\u062E\\u062C\",\n \"\\uFCAC\", \"\\u062E\\u0645\",\n \"\\uFCAD\", \"\\u0633\\u062C\",\n \"\\uFCAE\", \"\\u0633\\u062D\",\n \"\\uFCAF\", \"\\u0633\\u062E\",\n \"\\uFCB0\", \"\\u0633\\u0645\",\n \"\\uFCB1\", \"\\u0635\\u062D\",\n \"\\uFCB2\", \"\\u0635\\u062E\",\n \"\\uFCB3\", \"\\u0635\\u0645\",\n \"\\uFCB4\", \"\\u0636\\u062C\",\n \"\\uFCB5\", \"\\u0636\\u062D\",\n \"\\uFCB6\", \"\\u0636\\u062E\",\n \"\\uFCB7\", \"\\u0636\\u0645\",\n \"\\uFCB8\", \"\\u0637\\u062D\",\n \"\\uFCB9\", \"\\u0638\\u0645\",\n \"\\uFCBA\", \"\\u0639\\u062C\",\n \"\\uFCBB\", \"\\u0639\\u0645\",\n \"\\uFCBC\", \"\\u063A\\u062C\",\n \"\\uFCBD\", \"\\u063A\\u0645\",\n \"\\uFCBE\", \"\\u0641\\u062C\",\n \"\\uFCBF\", \"\\u0641\\u062D\",\n \"\\uFCC0\", \"\\u0641\\u062E\",\n \"\\uFCC1\", \"\\u0641\\u0645\",\n \"\\uFCC2\", \"\\u0642\\u062D\",\n \"\\uFCC3\", \"\\u0642\\u0645\",\n \"\\uFCC4\", \"\\u0643\\u062C\",\n \"\\uFCC5\", \"\\u0643\\u062D\",\n \"\\uFCC6\", \"\\u0643\\u062E\",\n \"\\uFCC7\", \"\\u0643\\u0644\",\n \"\\uFCC8\", \"\\u0643\\u0645\",\n \"\\uFCC9\", \"\\u0644\\u062C\",\n \"\\uFCCA\", \"\\u0644\\u062D\",\n \"\\uFCCB\", \"\\u0644\\u062E\",\n \"\\uFCCC\", \"\\u0644\\u0645\",\n \"\\uFCCD\", \"\\u0644\\u0647\",\n \"\\uFCCE\", \"\\u0645\\u062C\",\n \"\\uFCCF\", \"\\u0645\\u062D\",\n \"\\uFCD0\", \"\\u0645\\u062E\",\n \"\\uFCD1\", \"\\u0645\\u0645\",\n \"\\uFCD2\", \"\\u0646\\u062C\",\n \"\\uFCD3\", \"\\u0646\\u062D\",\n \"\\uFCD4\", \"\\u0646\\u062E\",\n \"\\uFCD5\", \"\\u0646\\u0645\",\n \"\\uFCD6\", \"\\u0646\\u0647\",\n \"\\uFCD7\", \"\\u0647\\u062C\",\n \"\\uFCD8\", \"\\u0647\\u0645\",\n \"\\uFCD9\", \"\\u0647\\u0670\",\n \"\\uFCDA\", \"\\u064A\\u062C\",\n \"\\uFCDB\", \"\\u064A\\u062D\",\n \"\\uFCDC\", \"\\u064A\\u062E\",\n \"\\uFCDD\", \"\\u064A\\u0645\",\n \"\\uFCDE\", \"\\u064A\\u0647\",\n \"\\uFCDF\", \"\\u0626\\u0645\",\n \"\\uFCE0\", \"\\u0626\\u0647\",\n \"\\uFCE1\", \"\\u0628\\u0645\",\n \"\\uFCE2\", \"\\u0628\\u0647\",\n \"\\uFCE3\", \"\\u062A\\u0645\",\n \"\\uFCE4\", \"\\u062A\\u0647\",\n \"\\uFCE5\", \"\\u062B\\u0645\",\n \"\\uFCE6\", \"\\u062B\\u0647\",\n \"\\uFCE7\", \"\\u0633\\u0645\",\n \"\\uFCE8\", \"\\u0633\\u0647\",\n \"\\uFCE9\", \"\\u0634\\u0645\",\n \"\\uFCEA\", \"\\u0634\\u0647\",\n \"\\uFCEB\", \"\\u0643\\u0644\",\n \"\\uFCEC\", \"\\u0643\\u0645\",\n \"\\uFCED\", \"\\u0644\\u0645\",\n \"\\uFCEE\", \"\\u0646\\u0645\",\n \"\\uFCEF\", \"\\u0646\\u0647\",\n \"\\uFCF0\", \"\\u064A\\u0645\",\n \"\\uFCF1\", \"\\u064A\\u0647\",\n \"\\uFCF2\", \"\\u0640\\u064E\\u0651\",\n \"\\uFCF3\", \"\\u0640\\u064F\\u0651\",\n \"\\uFCF4\", \"\\u0640\\u0650\\u0651\",\n \"\\uFCF5\", \"\\u0637\\u0649\",\n \"\\uFCF6\", \"\\u0637\\u064A\",\n \"\\uFCF7\", \"\\u0639\\u0649\",\n \"\\uFCF8\", \"\\u0639\\u064A\",\n \"\\uFCF9\", \"\\u063A\\u0649\",\n \"\\uFCFA\", \"\\u063A\\u064A\",\n \"\\uFCFB\", \"\\u0633\\u0649\",\n \"\\uFCFC\", \"\\u0633\\u064A\",\n \"\\uFCFD\", \"\\u0634\\u0649\",\n \"\\uFCFE\", \"\\u0634\\u064A\",\n \"\\uFCFF\", \"\\u062D\\u0649\",\n \"\\uFD00\", \"\\u062D\\u064A\",\n \"\\uFD01\", \"\\u062C\\u0649\",\n \"\\uFD02\", \"\\u062C\\u064A\",\n \"\\uFD03\", \"\\u062E\\u0649\",\n \"\\uFD04\", \"\\u062E\\u064A\",\n \"\\uFD05\", \"\\u0635\\u0649\",\n \"\\uFD06\", \"\\u0635\\u064A\",\n \"\\uFD07\", \"\\u0636\\u0649\",\n \"\\uFD08\", \"\\u0636\\u064A\",\n \"\\uFD09\", \"\\u0634\\u062C\",\n \"\\uFD0A\", \"\\u0634\\u062D\",\n \"\\uFD0B\", \"\\u0634\\u062E\",\n \"\\uFD0C\", \"\\u0634\\u0645\",\n \"\\uFD0D\", \"\\u0634\\u0631\",\n \"\\uFD0E\", \"\\u0633\\u0631\",\n \"\\uFD0F\", \"\\u0635\\u0631\",\n \"\\uFD10\", \"\\u0636\\u0631\",\n \"\\uFD11\", \"\\u0637\\u0649\",\n \"\\uFD12\", \"\\u0637\\u064A\",\n \"\\uFD13\", \"\\u0639\\u0649\",\n \"\\uFD14\", \"\\u0639\\u064A\",\n \"\\uFD15\", \"\\u063A\\u0649\",\n \"\\uFD16\", \"\\u063A\\u064A\",\n \"\\uFD17\", \"\\u0633\\u0649\",\n \"\\uFD18\", \"\\u0633\\u064A\",\n \"\\uFD19\", \"\\u0634\\u0649\",\n \"\\uFD1A\", \"\\u0634\\u064A\",\n \"\\uFD1B\", \"\\u062D\\u0649\",\n \"\\uFD1C\", \"\\u062D\\u064A\",\n \"\\uFD1D\", \"\\u062C\\u0649\",\n \"\\uFD1E\", \"\\u062C\\u064A\",\n \"\\uFD1F\", \"\\u062E\\u0649\",\n \"\\uFD20\", \"\\u062E\\u064A\",\n \"\\uFD21\", \"\\u0635\\u0649\",\n \"\\uFD22\", \"\\u0635\\u064A\",\n \"\\uFD23\", \"\\u0636\\u0649\",\n \"\\uFD24\", \"\\u0636\\u064A\",\n \"\\uFD25\", \"\\u0634\\u062C\",\n \"\\uFD26\", \"\\u0634\\u062D\",\n \"\\uFD27\", \"\\u0634\\u062E\",\n \"\\uFD28\", \"\\u0634\\u0645\",\n \"\\uFD29\", \"\\u0634\\u0631\",\n \"\\uFD2A\", \"\\u0633\\u0631\",\n \"\\uFD2B\", \"\\u0635\\u0631\",\n \"\\uFD2C\", \"\\u0636\\u0631\",\n \"\\uFD2D\", \"\\u0634\\u062C\",\n \"\\uFD2E\", \"\\u0634\\u062D\",\n \"\\uFD2F\", \"\\u0634\\u062E\",\n \"\\uFD30\", \"\\u0634\\u0645\",\n \"\\uFD31\", \"\\u0633\\u0647\",\n \"\\uFD32\", \"\\u0634\\u0647\",\n \"\\uFD33\", \"\\u0637\\u0645\",\n \"\\uFD34\", \"\\u0633\\u062C\",\n \"\\uFD35\", \"\\u0633\\u062D\",\n \"\\uFD36\", \"\\u0633\\u062E\",\n \"\\uFD37\", \"\\u0634\\u062C\",\n \"\\uFD38\", \"\\u0634\\u062D\",\n \"\\uFD39\", \"\\u0634\\u062E\",\n \"\\uFD3A\", \"\\u0637\\u0645\",\n \"\\uFD3B\", \"\\u0638\\u0645\",\n \"\\uFD3C\", \"\\u0627\\u064B\",\n \"\\uFD3D\", \"\\u0627\\u064B\",\n \"\\uFD50\", \"\\u062A\\u062C\\u0645\",\n \"\\uFD51\", \"\\u062A\\u062D\\u062C\",\n \"\\uFD52\", \"\\u062A\\u062D\\u062C\",\n \"\\uFD53\", \"\\u062A\\u062D\\u0645\",\n \"\\uFD54\", \"\\u062A\\u062E\\u0645\",\n \"\\uFD55\", \"\\u062A\\u0645\\u062C\",\n \"\\uFD56\", \"\\u062A\\u0645\\u062D\",\n \"\\uFD57\", \"\\u062A\\u0645\\u062E\",\n \"\\uFD58\", \"\\u062C\\u0645\\u062D\",\n \"\\uFD59\", \"\\u062C\\u0645\\u062D\",\n \"\\uFD5A\", \"\\u062D\\u0645\\u064A\",\n \"\\uFD5B\", \"\\u062D\\u0645\\u0649\",\n \"\\uFD5C\", \"\\u0633\\u062D\\u062C\",\n \"\\uFD5D\", \"\\u0633\\u062C\\u062D\",\n \"\\uFD5E\", \"\\u0633\\u062C\\u0649\",\n \"\\uFD5F\", \"\\u0633\\u0645\\u062D\",\n \"\\uFD60\", \"\\u0633\\u0645\\u062D\",\n \"\\uFD61\", \"\\u0633\\u0645\\u062C\",\n \"\\uFD62\", \"\\u0633\\u0645\\u0645\",\n \"\\uFD63\", \"\\u0633\\u0645\\u0645\",\n \"\\uFD64\", \"\\u0635\\u062D\\u062D\",\n \"\\uFD65\", \"\\u0635\\u062D\\u062D\",\n \"\\uFD66\", \"\\u0635\\u0645\\u0645\",\n \"\\uFD67\", \"\\u0634\\u062D\\u0645\",\n \"\\uFD68\", \"\\u0634\\u062D\\u0645\",\n \"\\uFD69\", \"\\u0634\\u062C\\u064A\",\n \"\\uFD6A\", \"\\u0634\\u0645\\u062E\",\n \"\\uFD6B\", \"\\u0634\\u0645\\u062E\",\n \"\\uFD6C\", \"\\u0634\\u0645\\u0645\",\n \"\\uFD6D\", \"\\u0634\\u0645\\u0645\",\n \"\\uFD6E\", \"\\u0636\\u062D\\u0649\",\n \"\\uFD6F\", \"\\u0636\\u062E\\u0645\",\n \"\\uFD70\", \"\\u0636\\u062E\\u0645\",\n \"\\uFD71\", \"\\u0637\\u0645\\u062D\",\n \"\\uFD72\", \"\\u0637\\u0645\\u062D\",\n \"\\uFD73\", \"\\u0637\\u0645\\u0645\",\n \"\\uFD74\", \"\\u0637\\u0645\\u064A\",\n \"\\uFD75\", \"\\u0639\\u062C\\u0645\",\n \"\\uFD76\", \"\\u0639\\u0645\\u0645\",\n \"\\uFD77\", \"\\u0639\\u0645\\u0645\",\n \"\\uFD78\", \"\\u0639\\u0645\\u0649\",\n \"\\uFD79\", \"\\u063A\\u0645\\u0645\",\n \"\\uFD7A\", \"\\u063A\\u0645\\u064A\",\n \"\\uFD7B\", \"\\u063A\\u0645\\u0649\",\n \"\\uFD7C\", \"\\u0641\\u062E\\u0645\",\n \"\\uFD7D\", \"\\u0641\\u062E\\u0645\",\n \"\\uFD7E\", \"\\u0642\\u0645\\u062D\",\n \"\\uFD7F\", \"\\u0642\\u0645\\u0645\",\n \"\\uFD80\", \"\\u0644\\u062D\\u0645\",\n \"\\uFD81\", \"\\u0644\\u062D\\u064A\",\n \"\\uFD82\", \"\\u0644\\u062D\\u0649\",\n \"\\uFD83\", \"\\u0644\\u062C\\u062C\",\n \"\\uFD84\", \"\\u0644\\u062C\\u062C\",\n \"\\uFD85\", \"\\u0644\\u062E\\u0645\",\n \"\\uFD86\", \"\\u0644\\u062E\\u0645\",\n \"\\uFD87\", \"\\u0644\\u0645\\u062D\",\n \"\\uFD88\", \"\\u0644\\u0645\\u062D\",\n \"\\uFD89\", \"\\u0645\\u062D\\u062C\",\n \"\\uFD8A\", \"\\u0645\\u062D\\u0645\",\n \"\\uFD8B\", \"\\u0645\\u062D\\u064A\",\n \"\\uFD8C\", \"\\u0645\\u062C\\u062D\",\n \"\\uFD8D\", \"\\u0645\\u062C\\u0645\",\n \"\\uFD8E\", \"\\u0645\\u062E\\u062C\",\n \"\\uFD8F\", \"\\u0645\\u062E\\u0645\",\n \"\\uFD92\", \"\\u0645\\u062C\\u062E\",\n \"\\uFD93\", \"\\u0647\\u0645\\u062C\",\n \"\\uFD94\", \"\\u0647\\u0645\\u0645\",\n \"\\uFD95\", \"\\u0646\\u062D\\u0645\",\n \"\\uFD96\", \"\\u0646\\u062D\\u0649\",\n \"\\uFD97\", \"\\u0646\\u062C\\u0645\",\n \"\\uFD98\", \"\\u0646\\u062C\\u0645\",\n \"\\uFD99\", \"\\u0646\\u062C\\u0649\",\n \"\\uFD9A\", \"\\u0646\\u0645\\u064A\",\n \"\\uFD9B\", \"\\u0646\\u0645\\u0649\",\n \"\\uFD9C\", \"\\u064A\\u0645\\u0645\",\n \"\\uFD9D\", \"\\u064A\\u0645\\u0645\",\n \"\\uFD9E\", \"\\u0628\\u062E\\u064A\",\n \"\\uFD9F\", \"\\u062A\\u062C\\u064A\",\n \"\\uFDA0\", \"\\u062A\\u062C\\u0649\",\n \"\\uFDA1\", \"\\u062A\\u062E\\u064A\",\n \"\\uFDA2\", \"\\u062A\\u062E\\u0649\",\n \"\\uFDA3\", \"\\u062A\\u0645\\u064A\",\n \"\\uFDA4\", \"\\u062A\\u0645\\u0649\",\n \"\\uFDA5\", \"\\u062C\\u0645\\u064A\",\n \"\\uFDA6\", \"\\u062C\\u062D\\u0649\",\n \"\\uFDA7\", \"\\u062C\\u0645\\u0649\",\n \"\\uFDA8\", \"\\u0633\\u062E\\u0649\",\n \"\\uFDA9\", \"\\u0635\\u062D\\u064A\",\n \"\\uFDAA\", \"\\u0634\\u062D\\u064A\",\n \"\\uFDAB\", \"\\u0636\\u062D\\u064A\",\n \"\\uFDAC\", \"\\u0644\\u062C\\u064A\",\n \"\\uFDAD\", \"\\u0644\\u0645\\u064A\",\n \"\\uFDAE\", \"\\u064A\\u062D\\u064A\",\n \"\\uFDAF\", \"\\u064A\\u062C\\u064A\",\n \"\\uFDB0\", \"\\u064A\\u0645\\u064A\",\n \"\\uFDB1\", \"\\u0645\\u0645\\u064A\",\n \"\\uFDB2\", \"\\u0642\\u0645\\u064A\",\n \"\\uFDB3\", \"\\u0646\\u062D\\u064A\",\n \"\\uFDB4\", \"\\u0642\\u0645\\u062D\",\n \"\\uFDB5\", \"\\u0644\\u062D\\u0645\",\n \"\\uFDB6\", \"\\u0639\\u0645\\u064A\",\n \"\\uFDB7\", \"\\u0643\\u0645\\u064A\",\n \"\\uFDB8\", \"\\u0646\\u062C\\u062D\",\n \"\\uFDB9\", \"\\u0645\\u062E\\u064A\",\n \"\\uFDBA\", \"\\u0644\\u062C\\u0645\",\n \"\\uFDBB\", \"\\u0643\\u0645\\u0645\",\n \"\\uFDBC\", \"\\u0644\\u062C\\u0645\",\n \"\\uFDBD\", \"\\u0646\\u062C\\u062D\",\n \"\\uFDBE\", \"\\u062C\\u062D\\u064A\",\n \"\\uFDBF\", \"\\u062D\\u062C\\u064A\",\n \"\\uFDC0\", \"\\u0645\\u062C\\u064A\",\n \"\\uFDC1\", \"\\u0641\\u0645\\u064A\",\n \"\\uFDC2\", \"\\u0628\\u062D\\u064A\",\n \"\\uFDC3\", \"\\u0643\\u0645\\u0645\",\n \"\\uFDC4\", \"\\u0639\\u062C\\u0645\",\n \"\\uFDC5\", \"\\u0635\\u0645\\u0645\",\n \"\\uFDC6\", \"\\u0633\\u062E\\u064A\",\n \"\\uFDC7\", \"\\u0646\\u062C\\u064A\",\n \"\\uFE49\", \"\\u203E\",\n \"\\uFE4A\", \"\\u203E\",\n \"\\uFE4B\", \"\\u203E\",\n \"\\uFE4C\", \"\\u203E\",\n \"\\uFE4D\", \"\\u005F\",\n \"\\uFE4E\", \"\\u005F\",\n \"\\uFE4F\", \"\\u005F\",\n \"\\uFE80\", \"\\u0621\",\n \"\\uFE81\", \"\\u0622\",\n \"\\uFE82\", \"\\u0622\",\n \"\\uFE83\", \"\\u0623\",\n \"\\uFE84\", \"\\u0623\",\n \"\\uFE85\", \"\\u0624\",\n \"\\uFE86\", \"\\u0624\",\n \"\\uFE87\", \"\\u0625\",\n \"\\uFE88\", \"\\u0625\",\n \"\\uFE89\", \"\\u0626\",\n \"\\uFE8A\", \"\\u0626\",\n \"\\uFE8B\", \"\\u0626\",\n \"\\uFE8C\", \"\\u0626\",\n \"\\uFE8D\", \"\\u0627\",\n \"\\uFE8E\", \"\\u0627\",\n \"\\uFE8F\", \"\\u0628\",\n \"\\uFE90\", \"\\u0628\",\n \"\\uFE91\", \"\\u0628\",\n \"\\uFE92\", \"\\u0628\",\n \"\\uFE93\", \"\\u0629\",\n \"\\uFE94\", \"\\u0629\",\n \"\\uFE95\", \"\\u062A\",\n \"\\uFE96\", \"\\u062A\",\n \"\\uFE97\", \"\\u062A\",\n \"\\uFE98\", \"\\u062A\",\n \"\\uFE99\", \"\\u062B\",\n \"\\uFE9A\", \"\\u062B\",\n \"\\uFE9B\", \"\\u062B\",\n \"\\uFE9C\", \"\\u062B\",\n \"\\uFE9D\", \"\\u062C\",\n \"\\uFE9E\", \"\\u062C\",\n \"\\uFE9F\", \"\\u062C\",\n \"\\uFEA0\", \"\\u062C\",\n \"\\uFEA1\", \"\\u062D\",\n \"\\uFEA2\", \"\\u062D\",\n \"\\uFEA3\", \"\\u062D\",\n \"\\uFEA4\", \"\\u062D\",\n \"\\uFEA5\", \"\\u062E\",\n \"\\uFEA6\", \"\\u062E\",\n \"\\uFEA7\", \"\\u062E\",\n \"\\uFEA8\", \"\\u062E\",\n \"\\uFEA9\", \"\\u062F\",\n \"\\uFEAA\", \"\\u062F\",\n \"\\uFEAB\", \"\\u0630\",\n \"\\uFEAC\", \"\\u0630\",\n \"\\uFEAD\", \"\\u0631\",\n \"\\uFEAE\", \"\\u0631\",\n \"\\uFEAF\", \"\\u0632\",\n \"\\uFEB0\", \"\\u0632\",\n \"\\uFEB1\", \"\\u0633\",\n \"\\uFEB2\", \"\\u0633\",\n \"\\uFEB3\", \"\\u0633\",\n \"\\uFEB4\", \"\\u0633\",\n \"\\uFEB5\", \"\\u0634\",\n \"\\uFEB6\", \"\\u0634\",\n \"\\uFEB7\", \"\\u0634\",\n \"\\uFEB8\", \"\\u0634\",\n \"\\uFEB9\", \"\\u0635\",\n \"\\uFEBA\", \"\\u0635\",\n \"\\uFEBB\", \"\\u0635\",\n \"\\uFEBC\", \"\\u0635\",\n \"\\uFEBD\", \"\\u0636\",\n \"\\uFEBE\", \"\\u0636\",\n \"\\uFEBF\", \"\\u0636\",\n \"\\uFEC0\", \"\\u0636\",\n \"\\uFEC1\", \"\\u0637\",\n \"\\uFEC2\", \"\\u0637\",\n \"\\uFEC3\", \"\\u0637\",\n \"\\uFEC4\", \"\\u0637\",\n \"\\uFEC5\", \"\\u0638\",\n \"\\uFEC6\", \"\\u0638\",\n \"\\uFEC7\", \"\\u0638\",\n \"\\uFEC8\", \"\\u0638\",\n \"\\uFEC9\", \"\\u0639\",\n \"\\uFECA\", \"\\u0639\",\n \"\\uFECB\", \"\\u0639\",\n \"\\uFECC\", \"\\u0639\",\n \"\\uFECD\", \"\\u063A\",\n \"\\uFECE\", \"\\u063A\",\n \"\\uFECF\", \"\\u063A\",\n \"\\uFED0\", \"\\u063A\",\n \"\\uFED1\", \"\\u0641\",\n \"\\uFED2\", \"\\u0641\",\n \"\\uFED3\", \"\\u0641\",\n \"\\uFED4\", \"\\u0641\",\n \"\\uFED5\", \"\\u0642\",\n \"\\uFED6\", \"\\u0642\",\n \"\\uFED7\", \"\\u0642\",\n \"\\uFED8\", \"\\u0642\",\n \"\\uFED9\", \"\\u0643\",\n \"\\uFEDA\", \"\\u0643\",\n \"\\uFEDB\", \"\\u0643\",\n \"\\uFEDC\", \"\\u0643\",\n \"\\uFEDD\", \"\\u0644\",\n \"\\uFEDE\", \"\\u0644\",\n \"\\uFEDF\", \"\\u0644\",\n \"\\uFEE0\", \"\\u0644\",\n \"\\uFEE1\", \"\\u0645\",\n \"\\uFEE2\", \"\\u0645\",\n \"\\uFEE3\", \"\\u0645\",\n \"\\uFEE4\", \"\\u0645\",\n \"\\uFEE5\", \"\\u0646\",\n \"\\uFEE6\", \"\\u0646\",\n \"\\uFEE7\", \"\\u0646\",\n \"\\uFEE8\", \"\\u0646\",\n \"\\uFEE9\", \"\\u0647\",\n \"\\uFEEA\", \"\\u0647\",\n \"\\uFEEB\", \"\\u0647\",\n \"\\uFEEC\", \"\\u0647\",\n \"\\uFEED\", \"\\u0648\",\n \"\\uFEEE\", \"\\u0648\",\n \"\\uFEEF\", \"\\u0649\",\n \"\\uFEF0\", \"\\u0649\",\n \"\\uFEF1\", \"\\u064A\",\n \"\\uFEF2\", \"\\u064A\",\n \"\\uFEF3\", \"\\u064A\",\n \"\\uFEF4\", \"\\u064A\",\n \"\\uFEF5\", \"\\u0644\\u0622\",\n \"\\uFEF6\", \"\\u0644\\u0622\",\n \"\\uFEF7\", \"\\u0644\\u0623\",\n \"\\uFEF8\", \"\\u0644\\u0623\",\n \"\\uFEF9\", \"\\u0644\\u0625\",\n \"\\uFEFA\", \"\\u0644\\u0625\",\n \"\\uFEFB\", \"\\u0644\\u0627\",\n \"\\uFEFC\", \"\\u0644\\u0627\",\n ];\n});\n\nfunction reverseIfRtl(chars) {\n const charsLength = chars.length;\n // Reverse an arabic ligature.\n if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n return chars;\n }\n const buf = [];\n for (let ii = charsLength - 1; ii >= 0; ii--) {\n buf.push(chars[ii]);\n }\n return buf.join(\"\");\n}\n\nconst SpecialCharRegExp = new RegExp(\"^(\\\\s)|(\\\\p{Mn})|(\\\\p{Cf})$\", \"u\");\nconst CategoryCache = new Map();\n\nfunction getCharUnicodeCategory(char) {\n const cachedCategory = CategoryCache.get(char);\n if (cachedCategory) {\n return cachedCategory;\n }\n const groups = char.match(SpecialCharRegExp);\n const category = {\n isWhitespace: !!(groups && groups[1]),\n isZeroWidthDiacritic: !!(groups && groups[2]),\n isInvisibleFormatMark: !!(groups && groups[3]),\n };\n CategoryCache.set(char, category);\n return category;\n}\n\nfunction clearUnicodeCaches() {\n CategoryCache.clear();\n}\n\nexport {\n clearUnicodeCaches,\n getCharUnicodeCategory,\n getNormalizedUnicodes,\n getUnicodeForGlyph,\n getUnicodeRangeFor,\n mapSpecialUnicodeValues,\n reverseIfRtl,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationReplyType,\n AnnotationType,\n assert,\n escapeString,\n getModificationDate,\n isAscii,\n OPS,\n RenderingIntentFlag,\n shadow,\n stringToPDFString,\n stringToUTF16BEString,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { collectActions, getInheritableProperty } from \"./core_utils.js\";\nimport {\n createDefaultAppearance,\n parseDefaultAppearance,\n} from \"./default_appearance.js\";\nimport { Dict, isName, Name, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { StringStream } from \"./stream.js\";\nimport { writeDict } from \"./writer.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\n\nclass AnnotationFactory {\n /**\n * Create an `Annotation` object of the correct type for the given reference\n * to an annotation dictionary. This yields a promise that is resolved when\n * the `Annotation` object is constructed.\n *\n * @param {XRef} xref\n * @param {Object} ref\n * @param {PDFManager} pdfManager\n * @param {Object} idFactory\n * @param {boolean} collectFields\n * @returns {Promise} A promise that is resolved with an {Annotation}\n * instance.\n */\n static create(xref, ref, pdfManager, idFactory, collectFields) {\n return Promise.all([\n pdfManager.ensureCatalog(\"acroForm\"),\n collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1,\n ]).then(([acroForm, pageIndex]) =>\n pdfManager.ensure(this, \"_create\", [\n xref,\n ref,\n pdfManager,\n idFactory,\n acroForm,\n collectFields,\n pageIndex,\n ])\n );\n }\n\n /**\n * @private\n */\n static _create(\n xref,\n ref,\n pdfManager,\n idFactory,\n acroForm,\n collectFields,\n pageIndex = -1\n ) {\n const dict = xref.fetchIfRef(ref);\n if (!(dict instanceof Dict)) {\n return undefined;\n }\n\n const id =\n ref instanceof Ref ? ref.toString() : `annot_${idFactory.createObjId()}`;\n\n // Determine the annotation's subtype.\n let subtype = dict.get(\"Subtype\");\n subtype = subtype instanceof Name ? subtype.name : null;\n\n // Return the right annotation object based on the subtype and field type.\n const parameters = {\n xref,\n ref,\n dict,\n subtype,\n id,\n pdfManager,\n acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n collectFields,\n pageIndex,\n };\n\n switch (subtype) {\n case \"Link\":\n return new LinkAnnotation(parameters);\n\n case \"Text\":\n return new TextAnnotation(parameters);\n\n case \"Widget\":\n let fieldType = getInheritableProperty({ dict, key: \"FT\" });\n fieldType = fieldType instanceof Name ? fieldType.name : null;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotation(parameters);\n case \"Btn\":\n return new ButtonWidgetAnnotation(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotation(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotation(parameters);\n }\n warn(\n `Unimplemented widget field type \"${fieldType}\", ` +\n \"falling back to base field type.\"\n );\n return new WidgetAnnotation(parameters);\n\n case \"Popup\":\n return new PopupAnnotation(parameters);\n\n case \"FreeText\":\n return new FreeTextAnnotation(parameters);\n\n case \"Line\":\n return new LineAnnotation(parameters);\n\n case \"Square\":\n return new SquareAnnotation(parameters);\n\n case \"Circle\":\n return new CircleAnnotation(parameters);\n\n case \"PolyLine\":\n return new PolylineAnnotation(parameters);\n\n case \"Polygon\":\n return new PolygonAnnotation(parameters);\n\n case \"Caret\":\n return new CaretAnnotation(parameters);\n\n case \"Ink\":\n return new InkAnnotation(parameters);\n\n case \"Highlight\":\n return new HighlightAnnotation(parameters);\n\n case \"Underline\":\n return new UnderlineAnnotation(parameters);\n\n case \"Squiggly\":\n return new SquigglyAnnotation(parameters);\n\n case \"StrikeOut\":\n return new StrikeOutAnnotation(parameters);\n\n case \"Stamp\":\n return new StampAnnotation(parameters);\n\n case \"FileAttachment\":\n return new FileAttachmentAnnotation(parameters);\n\n default:\n if (!collectFields) {\n if (!subtype) {\n warn(\"Annotation is missing the required /Subtype.\");\n } else {\n warn(\n `Unimplemented annotation type \"${subtype}\", ` +\n \"falling back to base annotation.\"\n );\n }\n }\n return new Annotation(parameters);\n }\n }\n\n static async _getPageIndex(xref, ref, pdfManager) {\n try {\n const annotDict = await xref.fetchIfRefAsync(ref);\n if (!(annotDict instanceof Dict)) {\n return -1;\n }\n const pageRef = annotDict.getRaw(\"P\");\n if (!(pageRef instanceof Ref)) {\n return -1;\n }\n const pageIndex = await pdfManager.ensureCatalog(\"getPageIndex\", [\n pageRef,\n ]);\n return pageIndex;\n } catch (ex) {\n warn(`_getPageIndex: \"${ex}\".`);\n return -1;\n }\n }\n}\n\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n\n const rgbColor = defaultColor || new Uint8ClampedArray(3);\n switch (color.length) {\n case 0: // Transparent, which we indicate with a null value\n return null;\n\n case 1: // Convert grayscale to RGB\n ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n case 3: // Convert RGB percentages to RGB\n ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n case 4: // Convert CMYK to RGB\n ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n default:\n return defaultColor;\n }\n}\n\nfunction getQuadPoints(dict, rect) {\n if (!dict.has(\"QuadPoints\")) {\n return null;\n }\n\n // The region is described as a number of quadrilaterals.\n // Each quadrilateral must consist of eight coordinates.\n const quadPoints = dict.getArray(\"QuadPoints\");\n if (\n !Array.isArray(quadPoints) ||\n quadPoints.length === 0 ||\n quadPoints.length % 8 > 0\n ) {\n return null;\n }\n\n const quadPointsLists = [];\n for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n // Each series of eight numbers represents the coordinates for one\n // quadrilateral in the order [x1, y1, x2, y2, x3, y3, x4, y4].\n // Convert this to an array of objects with x and y coordinates.\n quadPointsLists.push([]);\n for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n const x = quadPoints[j];\n const y = quadPoints[j + 1];\n\n // The quadpoints should be ignored if any coordinate in the array\n // lies outside the region specified by the rectangle. The rectangle\n // can be `null` for markup annotations since their rectangle may be\n // incorrect (fixes bug 1538111).\n if (\n rect !== null &&\n (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])\n ) {\n return null;\n }\n quadPointsLists[i].push({ x, y });\n }\n }\n\n // The PDF specification states in section 12.5.6.10 (figure 64) that the\n // order of the quadpoints should be bottom left, bottom right, top right\n // and top left. However, in practice PDF files use a different order,\n // namely bottom left, bottom right, top left and top right (this is also\n // mentioned on https://github.com/highkite/pdfAnnotate#QuadPoints), so\n // this is the actual order we should work with. However, the situation is\n // even worse since Adobe's own applications and other applications violate\n // the specification and create annotations with other orders, namely top\n // left, top right, bottom left and bottom right or even top left, top right,\n // bottom right and bottom left. To avoid inconsistency and broken rendering,\n // we normalize all lists to put the quadpoints in the same standard order\n // (see https://stackoverflow.com/a/10729881).\n return quadPointsLists.map(quadPointsList => {\n const [minX, maxX, minY, maxY] = quadPointsList.reduce(\n ([mX, MX, mY, MY], quadPoint) => [\n Math.min(mX, quadPoint.x),\n Math.max(MX, quadPoint.x),\n Math.min(mY, quadPoint.y),\n Math.max(MY, quadPoint.y),\n ],\n [Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]\n );\n return [\n { x: minX, y: maxY },\n { x: maxX, y: maxY },\n { x: minX, y: minY },\n { x: maxX, y: minY },\n ];\n });\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n // 12.5.5: Algorithm: Appearance streams\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n bbox,\n matrix\n );\n if (minX === maxX || minY === maxY) {\n // From real-life file, bbox was [0, 0, 0, 0]. In this case,\n // just apply the transform for rect\n return [1, 0, 0, 1, rect[0], rect[1]];\n }\n\n const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n return [\n xRatio,\n 0,\n 0,\n yRatio,\n rect[0] - minX * xRatio,\n rect[1] - minY * yRatio,\n ];\n}\n\nclass Annotation {\n constructor(params) {\n const dict = params.dict;\n\n this.setTitle(dict.get(\"T\"));\n this.setContents(dict.get(\"Contents\"));\n this.setModificationDate(dict.get(\"M\"));\n this.setFlags(dict.get(\"F\"));\n this.setRectangle(dict.getArray(\"Rect\"));\n this.setColor(dict.getArray(\"C\"));\n this.setBorderStyle(dict);\n this.setAppearance(dict);\n this.setBorderAndBackgroundColors(dict.get(\"MK\"));\n\n this._streams = [];\n if (this.appearance) {\n this._streams.push(this.appearance);\n }\n\n // Expose public properties using a data object.\n this.data = {\n annotationFlags: this.flags,\n borderStyle: this.borderStyle,\n color: this.color,\n backgroundColor: this.backgroundColor,\n borderColor: this.borderColor,\n contentsObj: this._contents,\n hasAppearance: !!this.appearance,\n id: params.id,\n modificationDate: this.modificationDate,\n rect: this.rectangle,\n subtype: params.subtype,\n hasOwnCanvas: false,\n };\n\n if (params.collectFields) {\n // Fields can act as container for other fields and have\n // some actions even if no Annotation inherit from them.\n // Those fields can be referenced by CO (calculation order).\n const kids = dict.get(\"Kids\");\n if (Array.isArray(kids)) {\n const kidIds = [];\n for (const kid of kids) {\n if (kid instanceof Ref) {\n kidIds.push(kid.toString());\n }\n }\n if (kidIds.length !== 0) {\n this.data.kidIds = kidIds;\n }\n }\n\n this.data.actions = collectActions(\n params.xref,\n dict,\n AnnotationActionEventType\n );\n this.data.fieldName = this._constructFieldName(dict);\n this.data.pageIndex = params.pageIndex;\n }\n\n this._fallbackFontDict = null;\n }\n\n /**\n * @private\n */\n _hasFlag(flags, flag) {\n return !!(flags & flag);\n }\n\n /**\n * @private\n */\n _isViewable(flags) {\n return (\n !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n !this._hasFlag(flags, AnnotationFlag.NOVIEW)\n );\n }\n\n /**\n * @private\n */\n _isPrintable(flags) {\n return (\n this._hasFlag(flags, AnnotationFlag.PRINT) &&\n !this._hasFlag(flags, AnnotationFlag.INVISIBLE)\n );\n }\n\n /**\n * Check if the annotation must be displayed by taking into account\n * the value found in the annotationStorage which may have been set\n * through JS.\n *\n * @public\n * @memberof Annotation\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n */\n mustBeViewed(annotationStorage) {\n const storageEntry =\n annotationStorage && annotationStorage.get(this.data.id);\n if (storageEntry && storageEntry.hidden !== undefined) {\n return !storageEntry.hidden;\n }\n return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\n }\n\n /**\n * Check if the annotation must be printed by taking into account\n * the value found in the annotationStorage which may have been set\n * through JS.\n *\n * @public\n * @memberof Annotation\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n */\n mustBePrinted(annotationStorage) {\n const storageEntry =\n annotationStorage && annotationStorage.get(this.data.id);\n if (storageEntry && storageEntry.print !== undefined) {\n return storageEntry.print;\n }\n return this.printable;\n }\n\n /**\n * @type {boolean}\n */\n get viewable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return true;\n }\n return this._isViewable(this.flags);\n }\n\n /**\n * @type {boolean}\n */\n get printable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return false;\n }\n return this._isPrintable(this.flags);\n }\n\n /**\n * @private\n */\n _parseStringHelper(data) {\n const str = typeof data === \"string\" ? stringToPDFString(data) : \"\";\n const dir = str && bidi(str).dir === \"rtl\" ? \"rtl\" : \"ltr\";\n\n return { str, dir };\n }\n\n /**\n * Set the title.\n *\n * @param {string} title - The title of the annotation, used e.g. with\n * PopupAnnotations.\n */\n setTitle(title) {\n this._title = this._parseStringHelper(title);\n }\n\n /**\n * Set the contents.\n *\n * @param {string} contents - Text to display for the annotation or, if the\n * type of annotation does not display text, a\n * description of the annotation's contents\n */\n setContents(contents) {\n this._contents = this._parseStringHelper(contents);\n }\n\n /**\n * Set the modification date.\n *\n * @public\n * @memberof Annotation\n * @param {string} modificationDate - PDF date string that indicates when the\n * annotation was last modified\n */\n setModificationDate(modificationDate) {\n this.modificationDate =\n typeof modificationDate === \"string\" ? modificationDate : null;\n }\n\n /**\n * Set the flags.\n *\n * @public\n * @memberof Annotation\n * @param {number} flags - Unsigned 32-bit integer specifying annotation\n * characteristics\n * @see {@link shared/util.js}\n */\n setFlags(flags) {\n this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n }\n\n /**\n * Check if a provided flag is set.\n *\n * @public\n * @memberof Annotation\n * @param {number} flag - Hexadecimal representation for an annotation\n * characteristic\n * @returns {boolean}\n * @see {@link shared/util.js}\n */\n hasFlag(flag) {\n return this._hasFlag(this.flags, flag);\n }\n\n /**\n * Set the rectangle.\n *\n * @public\n * @memberof Annotation\n * @param {Array} rectangle - The rectangle array with exactly four entries\n */\n setRectangle(rectangle) {\n if (Array.isArray(rectangle) && rectangle.length === 4) {\n this.rectangle = Util.normalizeRect(rectangle);\n } else {\n this.rectangle = [0, 0, 0, 0];\n }\n }\n\n /**\n * Set the color and take care of color space conversion.\n * The default value is black, in RGB color space.\n *\n * @public\n * @memberof Annotation\n * @param {Array} color - The color array containing either 0\n * (transparent), 1 (grayscale), 3 (RGB) or\n * 4 (CMYK) elements\n */\n setColor(color) {\n this.color = getRgbColor(color);\n }\n\n /**\n * Set the color for background and border if any.\n * The default values are transparent.\n *\n * @public\n * @memberof Annotation\n * @param {Dict} mk - The MK dictionary\n */\n setBorderAndBackgroundColors(mk) {\n if (mk instanceof Dict) {\n this.borderColor = getRgbColor(mk.getArray(\"BC\"), null);\n this.backgroundColor = getRgbColor(mk.getArray(\"BG\"), null);\n } else {\n this.borderColor = this.backgroundColor = null;\n }\n }\n\n /**\n * Set the border style (as AnnotationBorderStyle object).\n *\n * @public\n * @memberof Annotation\n * @param {Dict} borderStyle - The border style dictionary\n */\n setBorderStyle(borderStyle) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(this.rectangle, \"setRectangle must have been called previously.\");\n }\n\n this.borderStyle = new AnnotationBorderStyle();\n if (!(borderStyle instanceof Dict)) {\n return;\n }\n if (borderStyle.has(\"BS\")) {\n const dict = borderStyle.get(\"BS\");\n const dictType = dict.get(\"Type\");\n\n if (!dictType || isName(dictType, \"Border\")) {\n this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n this.borderStyle.setStyle(dict.get(\"S\"));\n this.borderStyle.setDashArray(dict.getArray(\"D\"));\n }\n } else if (borderStyle.has(\"Border\")) {\n const array = borderStyle.getArray(\"Border\");\n if (Array.isArray(array) && array.length >= 3) {\n this.borderStyle.setHorizontalCornerRadius(array[0]);\n this.borderStyle.setVerticalCornerRadius(array[1]);\n this.borderStyle.setWidth(array[2], this.rectangle);\n\n if (array.length === 4) {\n // Dash array available\n this.borderStyle.setDashArray(array[3], /* forceStyle = */ true);\n }\n }\n } else {\n // There are no border entries in the dictionary. According to the\n // specification, we should draw a solid border of width 1 in that\n // case, but Adobe Reader did not implement that part of the\n // specification and instead draws no border at all, so we do the same.\n // See also https://github.com/mozilla/pdf.js/issues/6179.\n this.borderStyle.setWidth(0);\n }\n }\n\n /**\n * Set the (normal) appearance.\n *\n * @public\n * @memberof Annotation\n * @param {Dict} dict - The annotation's data dictionary\n */\n setAppearance(dict) {\n this.appearance = null;\n\n const appearanceStates = dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\n\n // In case the normal appearance is a stream, then it is used directly.\n const normalAppearanceState = appearanceStates.get(\"N\");\n if (normalAppearanceState instanceof BaseStream) {\n this.appearance = normalAppearanceState;\n return;\n }\n if (!(normalAppearanceState instanceof Dict)) {\n return;\n }\n\n // In case the normal appearance is a dictionary, the `AS` entry provides\n // the key of the stream in this dictionary.\n const as = dict.get(\"AS\");\n if (!(as instanceof Name) || !normalAppearanceState.has(as.name)) {\n return;\n }\n this.appearance = normalAppearanceState.get(as.name);\n }\n\n loadResources(keys, appearance) {\n return appearance.dict.getAsync(\"Resources\").then(resources => {\n if (!resources) {\n return undefined;\n }\n\n const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n return objectLoader.load().then(function () {\n return resources;\n });\n });\n }\n\n getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n const data = this.data;\n let appearance = this.appearance;\n const isUsingOwnCanvas =\n data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY;\n if (!appearance) {\n if (!isUsingOwnCanvas) {\n return Promise.resolve(new OperatorList());\n }\n appearance = new StringStream(\"\");\n appearance.dict = new Dict();\n }\n\n const appearanceDict = appearance.dict;\n const resourcesPromise = this.loadResources(\n [\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"],\n appearance\n );\n const bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n const matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n const transform = getTransformMatrix(data.rect, bbox, matrix);\n\n return resourcesPromise.then(resources => {\n const opList = new OperatorList();\n opList.addOp(OPS.beginAnnotation, [\n data.id,\n data.rect,\n transform,\n matrix,\n isUsingOwnCanvas,\n ]);\n\n return evaluator\n .getOperatorList({\n stream: appearance,\n task,\n resources,\n operatorList: opList,\n fallbackFontDict: this._fallbackFontDict,\n })\n .then(() => {\n opList.addOp(OPS.endAnnotation, []);\n this.reset();\n return opList;\n });\n });\n }\n\n async save(evaluator, task, annotationStorage) {\n return null;\n }\n\n /**\n * Get field data for usage in JS sandbox.\n *\n * Field object is defined here:\n * https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf#page=16\n *\n * @public\n * @memberof Annotation\n * @returns {Object | null}\n */\n getFieldObject() {\n if (this.data.kidIds) {\n return {\n id: this.data.id,\n actions: this.data.actions,\n name: this.data.fieldName,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"\",\n kidIds: this.data.kidIds,\n page: this.data.pageIndex,\n };\n }\n return null;\n }\n\n /**\n * Reset the annotation.\n *\n * This involves resetting the various streams that are either cached on the\n * annotation instance or created during its construction.\n *\n * @public\n * @memberof Annotation\n */\n reset() {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n this.appearance &&\n !this._streams.includes(this.appearance)\n ) {\n unreachable(\"The appearance stream should always be reset.\");\n }\n\n for (const stream of this._streams) {\n stream.reset();\n }\n }\n\n /**\n * Construct the (fully qualified) field name from the (partial) field\n * names of the field and its ancestors.\n *\n * @private\n * @memberof Annotation\n * @param {Dict} dict - Complete widget annotation dictionary\n * @returns {string}\n */\n _constructFieldName(dict) {\n // Both the `Parent` and `T` fields are optional. While at least one of\n // them should be provided, bad PDF generators may fail to do so.\n if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n warn(\"Unknown field name, falling back to empty field name.\");\n return \"\";\n }\n\n // If no parent exists, the partial and fully qualified names are equal.\n if (!dict.has(\"Parent\")) {\n return stringToPDFString(dict.get(\"T\"));\n }\n\n // Form the fully qualified field name by appending the partial name to\n // the parent's fully qualified name, separated by a period.\n const fieldName = [];\n if (dict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n }\n\n let loopDict = dict;\n const visited = new RefSet();\n if (dict.objId) {\n visited.put(dict.objId);\n }\n while (loopDict.has(\"Parent\")) {\n loopDict = loopDict.get(\"Parent\");\n if (\n !(loopDict instanceof Dict) ||\n (loopDict.objId && visited.has(loopDict.objId))\n ) {\n // Even though it is not allowed according to the PDF specification,\n // bad PDF generators may provide a `Parent` entry that is not a\n // dictionary, but `null` for example (issue 8143).\n //\n // If parent has been already visited, it means that we're\n // in an infinite loop.\n break;\n }\n if (loopDict.objId) {\n visited.put(loopDict.objId);\n }\n\n if (loopDict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n }\n }\n return fieldName.join(\".\");\n }\n}\n\n/**\n * Contains all data regarding an annotation's border style.\n */\nclass AnnotationBorderStyle {\n constructor() {\n this.width = 1;\n this.style = AnnotationBorderStyleType.SOLID;\n this.dashArray = [3];\n this.horizontalCornerRadius = 0;\n this.verticalCornerRadius = 0;\n }\n\n /**\n * Set the width.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} width - The width.\n * @param {Array} rect - The annotation `Rect` entry.\n */\n setWidth(width, rect = [0, 0, 0, 0]) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Array.isArray(rect) && rect.length === 4,\n \"A valid `rect` parameter must be provided.\"\n );\n }\n\n // Some corrupt PDF generators may provide the width as a `Name`,\n // rather than as a number (fixes issue 10385).\n if (width instanceof Name) {\n this.width = 0; // This is consistent with the behaviour in Adobe Reader.\n return;\n }\n if (typeof width === \"number\") {\n if (width > 0) {\n const maxWidth = (rect[2] - rect[0]) / 2;\n const maxHeight = (rect[3] - rect[1]) / 2;\n\n // Ignore large `width`s, since they lead to the Annotation overflowing\n // the size set by the `Rect` entry thus causing the `annotationLayer`\n // to render it over the surrounding document (fixes bug1552113.pdf).\n if (\n maxWidth > 0 &&\n maxHeight > 0 &&\n (width > maxWidth || width > maxHeight)\n ) {\n warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n width = 1;\n }\n }\n this.width = width;\n }\n }\n\n /**\n * Set the style.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {Name} style - The annotation style.\n * @see {@link shared/util.js}\n */\n setStyle(style) {\n if (!(style instanceof Name)) {\n return;\n }\n switch (style.name) {\n case \"S\":\n this.style = AnnotationBorderStyleType.SOLID;\n break;\n\n case \"D\":\n this.style = AnnotationBorderStyleType.DASHED;\n break;\n\n case \"B\":\n this.style = AnnotationBorderStyleType.BEVELED;\n break;\n\n case \"I\":\n this.style = AnnotationBorderStyleType.INSET;\n break;\n\n case \"U\":\n this.style = AnnotationBorderStyleType.UNDERLINE;\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Set the dash array.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {Array} dashArray - The dash array with at least one element\n * @param {boolean} [forceStyle]\n */\n setDashArray(dashArray, forceStyle = false) {\n // We validate the dash array, but we do not use it because CSS does not\n // allow us to change spacing of dashes. For more information, visit\n // http://www.w3.org/TR/css3-background/#the-border-style.\n if (Array.isArray(dashArray) && dashArray.length > 0) {\n // According to the PDF specification: the elements in `dashArray`\n // shall be numbers that are nonnegative and not all equal to zero.\n let isValid = true;\n let allZeros = true;\n for (const element of dashArray) {\n const validNumber = +element >= 0;\n if (!validNumber) {\n isValid = false;\n break;\n } else if (element > 0) {\n allZeros = false;\n }\n }\n if (isValid && !allZeros) {\n this.dashArray = dashArray;\n\n if (forceStyle) {\n // Even though we cannot use the dash array in the display layer,\n // at least ensure that we use the correct border-style.\n this.setStyle(Name.get(\"D\"));\n }\n } else {\n this.width = 0; // Adobe behavior when the array is invalid.\n }\n } else if (dashArray) {\n this.width = 0; // Adobe behavior when the array is invalid.\n }\n }\n\n /**\n * Set the horizontal corner radius (from a Border dictionary).\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} radius - The horizontal corner radius.\n */\n setHorizontalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.horizontalCornerRadius = radius;\n }\n }\n\n /**\n * Set the vertical corner radius (from a Border dictionary).\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} radius - The vertical corner radius.\n */\n setVerticalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.verticalCornerRadius = radius;\n }\n }\n}\n\nclass MarkupAnnotation extends Annotation {\n constructor(parameters) {\n super(parameters);\n\n const dict = parameters.dict;\n\n if (dict.has(\"IRT\")) {\n const rawIRT = dict.getRaw(\"IRT\");\n this.data.inReplyTo = rawIRT instanceof Ref ? rawIRT.toString() : null;\n\n const rt = dict.get(\"RT\");\n this.data.replyType =\n rt instanceof Name ? rt.name : AnnotationReplyType.REPLY;\n }\n\n if (this.data.replyType === AnnotationReplyType.GROUP) {\n // Subordinate annotations in a group should inherit\n // the group attributes from the primary annotation.\n const parent = dict.get(\"IRT\");\n\n this.setTitle(parent.get(\"T\"));\n this.data.titleObj = this._title;\n\n this.setContents(parent.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n\n if (!parent.has(\"CreationDate\")) {\n this.data.creationDate = null;\n } else {\n this.setCreationDate(parent.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n }\n\n if (!parent.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parent.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n\n this.data.hasPopup = parent.has(\"Popup\");\n\n if (!parent.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n } else {\n this.setColor(parent.getArray(\"C\"));\n this.data.color = this.color;\n }\n } else {\n this.data.titleObj = this._title;\n\n this.setCreationDate(dict.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n\n this.data.hasPopup = dict.has(\"Popup\");\n\n if (!dict.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n }\n }\n\n if (dict.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\"RC\"));\n }\n }\n\n /**\n * Set the creation date.\n *\n * @public\n * @memberof MarkupAnnotation\n * @param {string} creationDate - PDF date string that indicates when the\n * annotation was originally created\n */\n setCreationDate(creationDate) {\n this.creationDate = typeof creationDate === \"string\" ? creationDate : null;\n }\n\n _setDefaultAppearance({\n xref,\n extra,\n strokeColor,\n fillColor,\n blendMode,\n strokeAlpha,\n fillAlpha,\n pointsCallback,\n }) {\n let minX = Number.MAX_VALUE;\n let minY = Number.MAX_VALUE;\n let maxX = Number.MIN_VALUE;\n let maxY = Number.MIN_VALUE;\n\n const buffer = [\"q\"];\n if (extra) {\n buffer.push(extra);\n }\n if (strokeColor) {\n buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\n }\n if (fillColor) {\n buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\n }\n\n let pointsArray = this.data.quadPoints;\n if (!pointsArray) {\n // If there are no quadpoints, the rectangle should be used instead.\n // Convert the rectangle definition to a points array similar to how the\n // quadpoints are defined.\n pointsArray = [\n [\n { x: this.rectangle[0], y: this.rectangle[3] },\n { x: this.rectangle[2], y: this.rectangle[3] },\n { x: this.rectangle[0], y: this.rectangle[1] },\n { x: this.rectangle[2], y: this.rectangle[1] },\n ],\n ];\n }\n\n for (const points of pointsArray) {\n const [mX, MX, mY, MY] = pointsCallback(buffer, points);\n minX = Math.min(minX, mX);\n maxX = Math.max(maxX, MX);\n minY = Math.min(minY, mY);\n maxY = Math.max(maxY, MY);\n }\n buffer.push(\"Q\");\n\n const formDict = new Dict(xref);\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n\n const appearanceStream = new StringStream(buffer.join(\" \"));\n appearanceStream.dict = appearanceStreamDict;\n formDict.set(\"Fm0\", appearanceStream);\n\n const gsDict = new Dict(xref);\n if (blendMode) {\n gsDict.set(\"BM\", Name.get(blendMode));\n }\n if (typeof strokeAlpha === \"number\") {\n gsDict.set(\"CA\", strokeAlpha);\n }\n if (typeof fillAlpha === \"number\") {\n gsDict.set(\"ca\", fillAlpha);\n }\n\n const stateDict = new Dict(xref);\n stateDict.set(\"GS0\", gsDict);\n\n const resources = new Dict(xref);\n resources.set(\"ExtGState\", stateDict);\n resources.set(\"XObject\", formDict);\n\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Resources\", resources);\n const bbox = (this.data.rect = [minX, minY, maxX, maxY]);\n appearanceDict.set(\"BBox\", bbox);\n\n this.appearance = new StringStream(\"/GS0 gs /Fm0 Do\");\n this.appearance.dict = appearanceDict;\n\n // This method is only called if there is no appearance for the annotation,\n // so `this.appearance` is not pushed yet in the `Annotation` constructor.\n this._streams.push(this.appearance, appearanceStream);\n }\n}\n\nclass WidgetAnnotation extends Annotation {\n constructor(params) {\n super(params);\n\n const dict = params.dict;\n const data = this.data;\n this.ref = params.ref;\n\n data.annotationType = AnnotationType.WIDGET;\n if (data.fieldName === undefined) {\n data.fieldName = this._constructFieldName(dict);\n }\n if (data.actions === undefined) {\n data.actions = collectActions(\n params.xref,\n dict,\n AnnotationActionEventType\n );\n }\n\n const fieldValue = getInheritableProperty({\n dict,\n key: \"V\",\n getArray: true,\n });\n data.fieldValue = this._decodeFormValue(fieldValue);\n\n const defaultFieldValue = getInheritableProperty({\n dict,\n key: \"DV\",\n getArray: true,\n });\n data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\n\n // When no \"V\" entry exists, let the fieldValue fallback to the \"DV\" entry\n // (fixes issue13823.pdf).\n if (fieldValue === undefined && data.defaultFieldValue !== null) {\n data.fieldValue = data.defaultFieldValue;\n }\n\n data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n\n const defaultAppearance =\n getInheritableProperty({ dict, key: \"DA\" }) || params.acroForm.get(\"DA\");\n this._defaultAppearance =\n typeof defaultAppearance === \"string\" ? defaultAppearance : \"\";\n data.defaultAppearanceData = parseDefaultAppearance(\n this._defaultAppearance\n );\n\n const fieldType = getInheritableProperty({ dict, key: \"FT\" });\n data.fieldType = fieldType instanceof Name ? fieldType.name : null;\n\n const localResources = getInheritableProperty({ dict, key: \"DR\" });\n const acroFormResources = params.acroForm.get(\"DR\");\n const appearanceResources =\n this.appearance && this.appearance.dict.get(\"Resources\");\n\n this._fieldResources = {\n localResources,\n acroFormResources,\n appearanceResources,\n mergedResources: Dict.merge({\n xref: params.xref,\n dictArray: [localResources, appearanceResources, acroFormResources],\n mergeSubDicts: true,\n }),\n };\n\n data.fieldFlags = getInheritableProperty({ dict, key: \"Ff\" });\n if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n data.fieldFlags = 0;\n }\n\n data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN);\n }\n\n /**\n * Decode the given form value.\n *\n * @private\n * @memberof WidgetAnnotation\n * @param {Array<string>|Name|string} formValue - The (possibly encoded)\n * form value.\n * @returns {Array<string>|string|null}\n */\n _decodeFormValue(formValue) {\n if (Array.isArray(formValue)) {\n return formValue\n .filter(item => typeof item === \"string\")\n .map(item => stringToPDFString(item));\n } else if (formValue instanceof Name) {\n return stringToPDFString(formValue.name);\n } else if (typeof formValue === \"string\") {\n return stringToPDFString(formValue);\n }\n return null;\n }\n\n /**\n * Check if a provided field flag is set.\n *\n * @public\n * @memberof WidgetAnnotation\n * @param {number} flag - Hexadecimal representation for an annotation\n * field characteristic\n * @returns {boolean}\n * @see {@link shared/util.js}\n */\n hasFieldFlag(flag) {\n return !!(this.data.fieldFlags & flag);\n }\n\n getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n // Do not render form elements on the canvas when interactive forms are\n // enabled. The display layer is responsible for rendering them instead.\n if (renderForms && !(this instanceof SignatureWidgetAnnotation)) {\n return Promise.resolve(new OperatorList());\n }\n\n if (!this._hasText) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n return this._getAppearance(evaluator, task, annotationStorage).then(\n content => {\n if (this.appearance && content === null) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n const operatorList = new OperatorList();\n\n // Even if there is an appearance stream, ignore it. This is the\n // behaviour used by Adobe Reader.\n if (!this._defaultAppearance || content === null) {\n return operatorList;\n }\n\n const matrix = [1, 0, 0, 1, 0, 0];\n const bbox = [\n 0,\n 0,\n this.data.rect[2] - this.data.rect[0],\n this.data.rect[3] - this.data.rect[1],\n ];\n\n const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n operatorList.addOp(OPS.beginAnnotation, [\n this.data.id,\n this.data.rect,\n transform,\n matrix,\n ]);\n\n const stream = new StringStream(content);\n return evaluator\n .getOperatorList({\n stream,\n task,\n resources: this._fieldResources.mergedResources,\n operatorList,\n })\n .then(function () {\n operatorList.addOp(OPS.endAnnotation, []);\n return operatorList;\n });\n }\n );\n }\n\n async save(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === this.data.fieldValue || value === undefined) {\n return null;\n }\n\n let appearance = await this._getAppearance(\n evaluator,\n task,\n annotationStorage\n );\n if (appearance === null) {\n return null;\n }\n const { xref } = evaluator;\n\n const dict = xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return null;\n }\n\n const bbox = [\n 0,\n 0,\n this.data.rect[2] - this.data.rect[0],\n this.data.rect[3] - this.data.rect[1],\n ];\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value,\n };\n\n const newRef = xref.getNewRef();\n const AP = new Dict(xref);\n AP.set(\"N\", newRef);\n\n const encrypt = xref.encrypt;\n let originalTransform = null;\n let newTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);\n appearance = newTransform.encryptString(appearance);\n }\n\n dict.set(\"V\", isAscii(value) ? value : stringToUTF16BEString(value));\n dict.set(\"AP\", AP);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Length\", appearance.length);\n appearanceDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceDict.set(\"Resources\", this._getSaveFieldResources(xref));\n appearanceDict.set(\"BBox\", bbox);\n\n const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, bufferOriginal, originalTransform);\n bufferOriginal.push(\"\\nendobj\\n\");\n\n const bufferNew = [`${newRef.num} ${newRef.gen} obj\\n`];\n writeDict(appearanceDict, bufferNew, newTransform);\n bufferNew.push(\" stream\\n\", appearance, \"\\nendstream\\nendobj\\n\");\n\n return [\n // data for the original object\n // V field changed + reference for new AP\n { ref: this.ref, data: bufferOriginal.join(\"\"), xfa },\n // data for the new AP\n { ref: newRef, data: bufferNew.join(\"\"), xfa: null },\n ];\n }\n\n async _getAppearance(evaluator, task, annotationStorage) {\n const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n if (!annotationStorage || isPassword) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n let value = storageEntry && storageEntry.value;\n if (value === undefined) {\n // The annotation hasn't been rendered so use the appearance\n return null;\n }\n\n value = value.trim();\n\n if (value === \"\") {\n // the field is empty: nothing to render\n return \"\";\n }\n\n let lineCount = -1;\n if (this.data.multiLine) {\n lineCount = value.split(/\\r\\n|\\r|\\n/).length;\n }\n\n const defaultPadding = 2;\n const hPadding = defaultPadding;\n const totalHeight = this.data.rect[3] - this.data.rect[1];\n const totalWidth = this.data.rect[2] - this.data.rect[0];\n\n if (!this._defaultAppearance) {\n // The DA is required and must be a string.\n // If there is no font named Helvetica in the resource dictionary,\n // the evaluator will fall back to a default font.\n // Doing so prevents exceptions and allows saving/printing\n // the file as expected.\n this.data.defaultAppearanceData = parseDefaultAppearance(\n (this._defaultAppearance = \"/Helvetica 0 Tf 0 g\")\n );\n }\n\n const font = await this._getFontData(evaluator, task);\n const [defaultAppearance, fontSize] = this._computeFontSize(\n totalHeight - defaultPadding,\n totalWidth - 2 * hPadding,\n value,\n font,\n lineCount\n );\n\n let descent = font.descent;\n if (isNaN(descent)) {\n descent = 0;\n }\n\n const vPadding = defaultPadding + Math.abs(descent) * fontSize;\n const alignment = this.data.textAlignment;\n\n if (this.data.multiLine) {\n return this._getMultilineAppearance(\n defaultAppearance,\n value,\n font,\n fontSize,\n totalWidth,\n totalHeight,\n alignment,\n hPadding,\n vPadding\n );\n }\n\n // TODO: need to handle chars which are not in the font.\n const encodedString = font.encodeString(value).join(\"\");\n\n if (this.data.comb) {\n return this._getCombAppearance(\n defaultAppearance,\n font,\n encodedString,\n totalWidth,\n hPadding,\n vPadding\n );\n }\n\n if (alignment === 0 || alignment > 2) {\n // Left alignment: nothing to do\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${escapeString(\n encodedString\n )}) Tj` +\n \" ET Q EMC\"\n );\n }\n\n const renderedText = this._renderText(\n encodedString,\n font,\n fontSize,\n totalWidth,\n alignment,\n hPadding,\n vPadding\n );\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 0 0 Tm ${renderedText}` +\n \" ET Q EMC\"\n );\n }\n\n async _getFontData(evaluator, task) {\n const operatorList = new OperatorList();\n const initialState = {\n font: null,\n clone() {\n return this;\n },\n };\n\n const { fontName, fontSize } = this.data.defaultAppearanceData;\n await evaluator.handleSetFont(\n this._fieldResources.mergedResources,\n [fontName && Name.get(fontName), fontSize],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ null\n );\n\n return initialState.font;\n }\n\n _getTextWidth(text, font) {\n return (\n font\n .charsToGlyphs(text)\n .reduce((width, glyph) => width + glyph.width, 0) / 1000\n );\n }\n\n _computeFontSize(height, width, text, font, lineCount) {\n let { fontSize } = this.data.defaultAppearanceData;\n if (!fontSize) {\n // A zero value for size means that the font shall be auto-sized:\n // its size shall be computed as a function of the height of the\n // annotation rectangle (see 12.7.3.3).\n\n const roundWithTwoDigits = x => Math.floor(x * 100) / 100;\n\n // Represent the percentage of the height of a single-line field over\n // the font size.\n // Acrobat seems to use this value.\n const LINE_FACTOR = 1.35;\n\n if (lineCount === -1) {\n const textWidth = this._getTextWidth(text, font);\n fontSize = roundWithTwoDigits(\n Math.min(height / LINE_FACTOR, width / textWidth)\n );\n } else {\n const lines = text.split(/\\r\\n?|\\n/);\n const cachedLines = [];\n for (const line of lines) {\n const encoded = font.encodeString(line).join(\"\");\n const glyphs = font.charsToGlyphs(encoded);\n const positions = font.getCharPositions(encoded);\n cachedLines.push({\n line: encoded,\n glyphs,\n positions,\n });\n }\n\n const isTooBig = fsize => {\n // Return true when the text doesn't fit the given height.\n let totalHeight = 0;\n for (const cache of cachedLines) {\n const chunks = this._splitLine(null, font, fsize, width, cache);\n totalHeight += chunks.length * fsize;\n if (totalHeight > height) {\n return true;\n }\n }\n return false;\n };\n\n // Hard to guess how many lines there are.\n // The field may have been sized to have 10 lines\n // and the user entered only 1 so if we get font size from\n // height and number of lines then we'll get something too big.\n // So we compute a fake number of lines based on height and\n // a font size equal to 12 (this is the default font size in\n // Acrobat).\n // Then we'll adjust font size to what we have really.\n fontSize = 12;\n let lineHeight = fontSize * LINE_FACTOR;\n let numberOfLines = Math.round(height / lineHeight);\n numberOfLines = Math.max(numberOfLines, lineCount);\n\n while (true) {\n lineHeight = height / numberOfLines;\n fontSize = roundWithTwoDigits(lineHeight / LINE_FACTOR);\n\n if (isTooBig(fontSize)) {\n numberOfLines++;\n continue;\n }\n\n break;\n }\n }\n\n const { fontName, fontColor } = this.data.defaultAppearanceData;\n this._defaultAppearance = createDefaultAppearance({\n fontSize,\n fontName,\n fontColor,\n });\n }\n return [this._defaultAppearance, fontSize];\n }\n\n _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {\n // We need to get the width of the text in order to align it correctly\n const width = this._getTextWidth(text, font) * fontSize;\n let shift;\n if (alignment === 1) {\n // Center\n shift = (totalWidth - width) / 2;\n } else if (alignment === 2) {\n // Right\n shift = totalWidth - width - hPadding;\n } else {\n shift = hPadding;\n }\n shift = shift.toFixed(2);\n vPadding = vPadding.toFixed(2);\n\n return `${shift} ${vPadding} Td (${escapeString(text)}) Tj`;\n }\n\n /**\n * @private\n */\n _getSaveFieldResources(xref) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n this.data.defaultAppearanceData,\n \"Expected `_defaultAppearanceData` to have been set.\"\n );\n }\n const { localResources, appearanceResources, acroFormResources } =\n this._fieldResources;\n\n const fontName =\n this.data.defaultAppearanceData &&\n this.data.defaultAppearanceData.fontName;\n if (!fontName) {\n return localResources || Dict.empty;\n }\n\n for (const resources of [localResources, appearanceResources]) {\n if (resources instanceof Dict) {\n const localFont = resources.get(\"Font\");\n if (localFont instanceof Dict && localFont.has(fontName)) {\n return resources;\n }\n }\n }\n if (acroFormResources instanceof Dict) {\n const acroFormFont = acroFormResources.get(\"Font\");\n if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) {\n const subFontDict = new Dict(xref);\n subFontDict.set(fontName, acroFormFont.getRaw(fontName));\n\n const subResourcesDict = new Dict(xref);\n subResourcesDict.set(\"Font\", subFontDict);\n\n return Dict.merge({\n xref,\n dictArray: [subResourcesDict, localResources],\n mergeSubDicts: true,\n });\n }\n }\n return localResources || Dict.empty;\n }\n\n getFieldObject() {\n return null;\n }\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n this._hasText = true;\n\n const dict = params.dict;\n\n // The field value is always a string.\n if (typeof this.data.fieldValue !== \"string\") {\n this.data.fieldValue = \"\";\n }\n\n // Determine the alignment of text in the field.\n let alignment = getInheritableProperty({ dict, key: \"Q\" });\n if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n alignment = null;\n }\n this.data.textAlignment = alignment;\n\n // Determine the maximum length of text in the field.\n let maximumLength = getInheritableProperty({ dict, key: \"MaxLen\" });\n if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n maximumLength = null;\n }\n this.data.maxLen = maximumLength;\n\n // Process field flags for the display layer.\n this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n this.data.comb =\n this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\n !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\n !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\n this.data.maxLen !== null;\n }\n\n _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding) {\n const combWidth = (width / this.data.maxLen).toFixed(2);\n const buf = [];\n const positions = font.getCharPositions(text);\n for (const [start, end] of positions) {\n buf.push(`(${escapeString(text.substring(start, end))}) Tj`);\n }\n\n const renderedComb = buf.join(` ${combWidth} 0 Td `);\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` +\n \" ET Q EMC\"\n );\n }\n\n _getMultilineAppearance(\n defaultAppearance,\n text,\n font,\n fontSize,\n width,\n height,\n alignment,\n hPadding,\n vPadding\n ) {\n const lines = text.split(/\\r\\n?|\\n/);\n const buf = [];\n const totalWidth = width - 2 * hPadding;\n for (const line of lines) {\n const chunks = this._splitLine(line, font, fontSize, totalWidth);\n for (const chunk of chunks) {\n const padding = buf.length === 0 ? hPadding : 0;\n buf.push(\n this._renderText(\n chunk,\n font,\n fontSize,\n width,\n alignment,\n padding,\n -fontSize // <0 because a line is below the previous one\n )\n );\n }\n }\n\n const renderedText = buf.join(\"\\n\");\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 0 ${height} Tm ${renderedText}` +\n \" ET Q EMC\"\n );\n }\n\n _splitLine(line, font, fontSize, width, cache = {}) {\n // TODO: need to handle chars which are not in the font.\n line = cache.line || font.encodeString(line).join(\"\");\n\n const glyphs = cache.glyphs || font.charsToGlyphs(line);\n\n if (glyphs.length <= 1) {\n // Nothing to split\n return [line];\n }\n\n const positions = cache.positions || font.getCharPositions(line);\n const scale = fontSize / 1000;\n const chunks = [];\n\n let lastSpacePosInStringStart = -1,\n lastSpacePosInStringEnd = -1,\n lastSpacePos = -1,\n startChunk = 0,\n currentWidth = 0;\n\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const [start, end] = positions[i];\n const glyph = glyphs[i];\n const glyphWidth = glyph.width * scale;\n if (glyph.unicode === \" \") {\n if (currentWidth + glyphWidth > width) {\n // We can break here\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n lastSpacePosInStringStart = -1;\n lastSpacePos = -1;\n } else {\n currentWidth += glyphWidth;\n lastSpacePosInStringStart = start;\n lastSpacePosInStringEnd = end;\n lastSpacePos = i;\n }\n } else {\n if (currentWidth + glyphWidth > width) {\n // We must break to the last white position (if available)\n if (lastSpacePosInStringStart !== -1) {\n chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\n startChunk = lastSpacePosInStringEnd;\n i = lastSpacePos + 1;\n lastSpacePosInStringStart = -1;\n currentWidth = 0;\n } else {\n // Just break in the middle of the word\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n }\n } else {\n currentWidth += glyphWidth;\n }\n }\n }\n\n if (startChunk < line.length) {\n chunks.push(line.substring(startChunk, line.length));\n }\n\n return chunks;\n }\n\n getFieldObject() {\n return {\n id: this.data.id,\n value: this.data.fieldValue,\n defaultValue: this.data.defaultFieldValue,\n multiline: this.data.multiLine,\n password: this.hasFieldFlag(AnnotationFieldFlag.PASSWORD),\n charLimit: this.data.maxLen,\n comb: this.data.comb,\n editable: !this.data.readOnly,\n hidden: this.data.hidden,\n name: this.data.fieldName,\n rect: this.data.rect,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"text\",\n };\n }\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n this.checkedAppearance = null;\n this.uncheckedAppearance = null;\n\n this.data.checkBox =\n !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.radioButton =\n this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.isTooltipOnly = false;\n\n if (this.data.checkBox) {\n this._processCheckBox(params);\n } else if (this.data.radioButton) {\n this._processRadioButton(params);\n } else if (this.data.pushButton) {\n this.data.hasOwnCanvas = true;\n this._processPushButton(params);\n } else {\n warn(\"Invalid field flags for button widget annotation\");\n }\n }\n\n async getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n ) {\n if (this.data.pushButton) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n false, // we use normalAppearance to render the button\n annotationStorage\n );\n }\n\n let value = null;\n if (annotationStorage) {\n const storageEntry = annotationStorage.get(this.data.id);\n value = storageEntry ? storageEntry.value : null;\n }\n\n if (value === null) {\n // Nothing in the annotationStorage.\n if (this.appearance) {\n // But we've a default appearance so use it.\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n // There is no default appearance so use the one derived\n // from the field value.\n if (this.data.checkBox) {\n value = this.data.fieldValue === this.data.exportValue;\n } else {\n value = this.data.fieldValue === this.data.buttonValue;\n }\n }\n\n const appearance = value\n ? this.checkedAppearance\n : this.uncheckedAppearance;\n if (appearance) {\n const savedAppearance = this.appearance;\n this.appearance = appearance;\n const operatorList = super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n this.appearance = savedAppearance;\n return operatorList;\n }\n\n // No appearance\n return new OperatorList();\n }\n\n async save(evaluator, task, annotationStorage) {\n if (this.data.checkBox) {\n return this._saveCheckbox(evaluator, task, annotationStorage);\n }\n\n if (this.data.radioButton) {\n return this._saveRadioButton(evaluator, task, annotationStorage);\n }\n\n // Nothing to save\n return null;\n }\n\n async _saveCheckbox(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === undefined) {\n return null;\n }\n\n const defaultValue = this.data.fieldValue === this.data.exportValue;\n if (defaultValue === value) {\n return null;\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return null;\n }\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value: value ? this.data.exportValue : \"\",\n };\n\n const name = Name.get(value ? this.data.exportValue : \"Off\");\n dict.set(\"V\", name);\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n const encrypt = evaluator.xref.encrypt;\n let originalTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n }\n\n const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, buffer, originalTransform);\n buffer.push(\"\\nendobj\\n\");\n\n return [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n }\n\n async _saveRadioButton(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === undefined) {\n return null;\n }\n\n const defaultValue = this.data.fieldValue === this.data.buttonValue;\n if (defaultValue === value) {\n return null;\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return null;\n }\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value: value ? this.data.buttonValue : \"\",\n };\n\n const name = Name.get(value ? this.data.buttonValue : \"Off\");\n let parentBuffer = null;\n const encrypt = evaluator.xref.encrypt;\n\n if (value) {\n if (this.parent instanceof Ref) {\n const parent = evaluator.xref.fetch(this.parent);\n let parentTransform = null;\n if (encrypt) {\n parentTransform = encrypt.createCipherTransform(\n this.parent.num,\n this.parent.gen\n );\n }\n parent.set(\"V\", name);\n parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\\n`];\n writeDict(parent, parentBuffer, parentTransform);\n parentBuffer.push(\"\\nendobj\\n\");\n } else if (this.parent instanceof Dict) {\n this.parent.set(\"V\", name);\n }\n }\n\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n let originalTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n }\n\n const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, buffer, originalTransform);\n buffer.push(\"\\nendobj\\n\");\n\n const newRefs = [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n if (parentBuffer !== null) {\n newRefs.push({\n ref: this.parent,\n data: parentBuffer.join(\"\"),\n xfa: null,\n });\n }\n\n return newRefs;\n }\n\n _getDefaultCheckedAppearance(params, type) {\n const width = this.data.rect[2] - this.data.rect[0];\n const height = this.data.rect[3] - this.data.rect[1];\n const bbox = [0, 0, width, height];\n\n // Ratio used to have a mark slightly smaller than the bbox.\n const FONT_RATIO = 0.8;\n const fontSize = Math.min(width, height) * FONT_RATIO;\n\n // Char Metrics\n // Widths came from widths for ZapfDingbats.\n // Heights are guessed with Fontforge and FoxitDingbats.pfb.\n let metrics, char;\n if (type === \"check\") {\n // Char 33 (2713 in unicode)\n metrics = {\n width: 0.755 * fontSize,\n height: 0.705 * fontSize,\n };\n char = \"\\x33\";\n } else if (type === \"disc\") {\n // Char 6C (25CF in unicode)\n metrics = {\n width: 0.791 * fontSize,\n height: 0.705 * fontSize,\n };\n char = \"\\x6C\";\n } else {\n unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\n }\n\n // Values to center the glyph in the bbox.\n const xShift = (width - metrics.width) / 2;\n const yShift = (height - metrics.height) / 2;\n\n const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\n\n const appearanceStreamDict = new Dict(params.xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", bbox);\n appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, 0, 0]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n\n const resources = new Dict(params.xref);\n const font = new Dict(params.xref);\n font.set(\"PdfJsZaDb\", this.fallbackFontDict);\n resources.set(\"Font\", font);\n\n appearanceStreamDict.set(\"Resources\", resources);\n\n this.checkedAppearance = new StringStream(appearance);\n this.checkedAppearance.dict = appearanceStreamDict;\n\n this._streams.push(this.checkedAppearance);\n }\n\n _processCheckBox(params) {\n const customAppearance = params.dict.get(\"AP\");\n if (!(customAppearance instanceof Dict)) {\n return;\n }\n\n const normalAppearance = customAppearance.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return;\n }\n\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=1722036.\n // If we've an AS and a V then take AS.\n const asValue = this._decodeFormValue(params.dict.get(\"AS\"));\n if (typeof asValue === \"string\") {\n this.data.fieldValue = asValue;\n }\n\n const yes =\n this.data.fieldValue !== null && this.data.fieldValue !== \"Off\"\n ? this.data.fieldValue\n : \"Yes\";\n\n const exportValues = normalAppearance.getKeys();\n if (exportValues.length === 0) {\n exportValues.push(\"Off\", yes);\n } else if (exportValues.length === 1) {\n if (exportValues[0] === \"Off\") {\n exportValues.push(yes);\n } else {\n exportValues.unshift(\"Off\");\n }\n } else if (exportValues.includes(yes)) {\n exportValues.length = 0;\n exportValues.push(\"Off\", yes);\n } else {\n const otherYes = exportValues.find(v => v !== \"Off\");\n exportValues.length = 0;\n exportValues.push(\"Off\", otherYes);\n }\n\n // Don't use a \"V\" entry pointing to a non-existent appearance state,\n // see e.g. bug1720411.pdf where it's an *empty* Name-instance.\n if (!exportValues.includes(this.data.fieldValue)) {\n this.data.fieldValue = \"Off\";\n }\n\n this.data.exportValue = exportValues[1];\n\n this.checkedAppearance =\n normalAppearance.get(this.data.exportValue) || null;\n this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"check\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n }\n\n _processRadioButton(params) {\n this.data.fieldValue = this.data.buttonValue = null;\n\n // The parent field's `V` entry holds a `Name` object with the appearance\n // state of whichever child field is currently in the \"on\" state.\n const fieldParent = params.dict.get(\"Parent\");\n if (fieldParent instanceof Dict) {\n this.parent = params.dict.getRaw(\"Parent\");\n const fieldParentValue = fieldParent.get(\"V\");\n if (fieldParentValue instanceof Name) {\n this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n }\n }\n\n // The button's value corresponds to its appearance state.\n const appearanceStates = params.dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\n const normalAppearance = appearanceStates.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return;\n }\n for (const key of normalAppearance.getKeys()) {\n if (key !== \"Off\") {\n this.data.buttonValue = this._decodeFormValue(key);\n break;\n }\n }\n\n this.checkedAppearance =\n normalAppearance.get(this.data.buttonValue) || null;\n this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"disc\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n }\n\n _processPushButton(params) {\n if (\n !params.dict.has(\"A\") &&\n !params.dict.has(\"AA\") &&\n !this.data.alternativeText\n ) {\n warn(\"Push buttons without action dictionaries are not supported\");\n return;\n }\n\n this.data.isTooltipOnly = !params.dict.has(\"A\") && !params.dict.has(\"AA\");\n\n Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl,\n });\n }\n\n getFieldObject() {\n let type = \"button\";\n let exportValues;\n if (this.data.checkBox) {\n type = \"checkbox\";\n exportValues = this.data.exportValue;\n } else if (this.data.radioButton) {\n type = \"radiobutton\";\n exportValues = this.data.buttonValue;\n }\n return {\n id: this.data.id,\n value: this.data.fieldValue || \"Off\",\n defaultValue: this.data.defaultFieldValue,\n exportValues,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type,\n };\n }\n\n get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"ZapfDingbats\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"ZapfDingbatsEncoding\"));\n\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n // Determine the options. The options array may consist of strings or\n // arrays. If the array consists of arrays, then the first element of\n // each array is the export value and the second element of each array is\n // the display value. If the array consists of strings, then these\n // represent both the export and display value. In this case, we convert\n // it to an array of arrays as well for convenience in the display layer.\n // Note that the specification does not state that the `Opt` field is\n // inheritable, but in practice PDF generators do make annotations\n // inherit the options from a parent annotation (issue 8094).\n this.data.options = [];\n\n const options = getInheritableProperty({ dict: params.dict, key: \"Opt\" });\n if (Array.isArray(options)) {\n const xref = params.xref;\n for (let i = 0, ii = options.length; i < ii; i++) {\n const option = xref.fetchIfRef(options[i]);\n const isOptionArray = Array.isArray(option);\n\n this.data.options[i] = {\n exportValue: this._decodeFormValue(\n isOptionArray ? xref.fetchIfRef(option[0]) : option\n ),\n displayValue: this._decodeFormValue(\n isOptionArray ? xref.fetchIfRef(option[1]) : option\n ),\n };\n }\n }\n\n // The field value can be `null` if no item is selected, a string if one\n // item is selected or an array of strings if multiple items are selected.\n // For consistency in the API and convenience in the display layer, we\n // always make the field value an array with zero, one or multiple items.\n if (typeof this.data.fieldValue === \"string\") {\n this.data.fieldValue = [this.data.fieldValue];\n } else if (!this.data.fieldValue) {\n this.data.fieldValue = [];\n }\n\n // Process field flags for the display layer.\n this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n this._hasText = true;\n }\n\n getFieldObject() {\n const type = this.data.combo ? \"combobox\" : \"listbox\";\n const value =\n this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\n return {\n id: this.data.id,\n value,\n defaultValue: this.data.defaultFieldValue,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n numItems: this.data.fieldValue.length,\n multipleSelection: this.data.multiSelect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n items: this.data.options,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type,\n };\n }\n}\n\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n // Unset the fieldValue since it's (most likely) a `Dict` which is\n // non-serializable and will thus cause errors when sending annotations\n // to the main-thread (issue 10347).\n this.data.fieldValue = null;\n }\n\n getFieldObject() {\n return {\n id: this.data.id,\n value: null,\n page: this.data.pageIndex,\n type: \"signature\",\n };\n }\n}\n\nclass TextAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n const DEFAULT_ICON_SIZE = 22; // px\n\n super(parameters);\n\n const dict = parameters.dict;\n this.data.annotationType = AnnotationType.TEXT;\n\n if (this.data.hasAppearance) {\n this.data.name = \"NoIcon\";\n } else {\n this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n }\n\n if (dict.has(\"State\")) {\n this.data.state = dict.get(\"State\") || null;\n this.data.stateModel = dict.get(\"StateModel\") || null;\n } else {\n this.data.state = null;\n this.data.stateModel = null;\n }\n }\n}\n\nclass LinkAnnotation extends Annotation {\n constructor(params) {\n super(params);\n\n this.data.annotationType = AnnotationType.LINK;\n\n const quadPoints = getQuadPoints(params.dict, this.rectangle);\n if (quadPoints) {\n this.data.quadPoints = quadPoints;\n }\n\n Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl,\n });\n }\n}\n\nclass PopupAnnotation extends Annotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.POPUP;\n\n let parentItem = parameters.dict.get(\"Parent\");\n if (!parentItem) {\n warn(\"Popup annotation has a missing or invalid parent annotation.\");\n return;\n }\n\n const parentSubtype = parentItem.get(\"Subtype\");\n this.data.parentType =\n parentSubtype instanceof Name ? parentSubtype.name : null;\n const rawParent = parameters.dict.getRaw(\"Parent\");\n this.data.parentId = rawParent instanceof Ref ? rawParent.toString() : null;\n\n const parentRect = parentItem.getArray(\"Rect\");\n if (Array.isArray(parentRect) && parentRect.length === 4) {\n this.data.parentRect = Util.normalizeRect(parentRect);\n } else {\n this.data.parentRect = [0, 0, 0, 0];\n }\n\n const rt = parentItem.get(\"RT\");\n if (isName(rt, AnnotationReplyType.GROUP)) {\n // Subordinate annotations in a group should inherit\n // the group attributes from the primary annotation.\n parentItem = parentItem.get(\"IRT\");\n }\n\n if (!parentItem.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parentItem.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n\n if (!parentItem.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n } else {\n this.setColor(parentItem.getArray(\"C\"));\n this.data.color = this.color;\n }\n\n // If the Popup annotation is not viewable, but the parent annotation is,\n // that is most likely a bug. Fallback to inherit the flags from the parent\n // annotation (this is consistent with the behaviour in Adobe Reader).\n if (!this.viewable) {\n const parentFlags = parentItem.get(\"F\");\n if (this._isViewable(parentFlags)) {\n this.setFlags(parentFlags);\n }\n }\n\n this.setTitle(parentItem.get(\"T\"));\n this.data.titleObj = this._title;\n\n this.setContents(parentItem.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n\n if (parentItem.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\"RC\"));\n }\n }\n}\n\nclass FreeTextAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.FREETEXT;\n }\n}\n\nclass LineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.LINE;\n\n const lineCoordinates = parameters.dict.getArray(\"L\");\n this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent. Setting the fill colour is\n // necessary if/when we want to add support for non-default line endings.\n let fillColor = null,\n interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [\n this.data.lineCoordinates[0] - borderAdjust,\n this.data.lineCoordinates[1] - borderAdjust,\n this.data.lineCoordinates[2] + borderAdjust,\n this.data.lineCoordinates[3] + borderAdjust,\n ];\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${lineCoordinates[0]} ${lineCoordinates[1]} m`,\n `${lineCoordinates[2]} ${lineCoordinates[3]} l`,\n \"S\"\n );\n return [\n points[0].x - borderWidth,\n points[1].x + borderWidth,\n points[3].y - borderWidth,\n points[1].y + borderWidth,\n ];\n },\n });\n }\n }\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.SQUARE;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent.\n let fillColor = null,\n interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n if (this.borderStyle.width === 0 && !fillColor) {\n // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n return;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x = points[2].x + this.borderStyle.width / 2;\n const y = points[2].y + this.borderStyle.width / 2;\n const width = points[3].x - points[2].x - this.borderStyle.width;\n const height = points[1].y - points[3].y - this.borderStyle.width;\n buffer.push(`${x} ${y} ${width} ${height} re`);\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.CIRCLE;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent.\n let fillColor = null;\n let interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n if (this.borderStyle.width === 0 && !fillColor) {\n // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n return;\n }\n\n // Circles are approximated by Bézier curves with four segments since\n // there is no circle primitive in the PDF specification. For the control\n // points distance, see https://stackoverflow.com/a/27863181.\n const controlPointsDistance = (4 / 3) * Math.tan(Math.PI / (2 * 4));\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x0 = points[0].x + this.borderStyle.width / 2;\n const y0 = points[0].y - this.borderStyle.width / 2;\n const x1 = points[3].x - this.borderStyle.width / 2;\n const y1 = points[3].y + this.borderStyle.width / 2;\n const xMid = x0 + (x1 - x0) / 2;\n const yMid = y0 + (y1 - y0) / 2;\n const xOffset = ((x1 - x0) / 2) * controlPointsDistance;\n const yOffset = ((y1 - y0) / 2) * controlPointsDistance;\n\n buffer.push(\n `${xMid} ${y1} m`,\n `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`,\n `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`,\n `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`,\n `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`,\n \"h\"\n );\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.POLYLINE;\n this.data.vertices = [];\n\n // The vertices array is an array of numbers representing the alternating\n // horizontal and vertical coordinates, respectively, of each vertex.\n // Convert this to an array of objects with x and y coordinates.\n const rawVertices = parameters.dict.getArray(\"Vertices\");\n if (!Array.isArray(rawVertices)) {\n return;\n }\n for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n this.data.vertices.push({\n x: rawVertices[i],\n y: rawVertices[i + 1],\n });\n }\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const vertex of this.data.vertices) {\n bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const vertices = this.data.vertices;\n for (let i = 0, ii = vertices.length; i < ii; i++) {\n buffer.push(\n `${vertices[i].x} ${vertices[i].y} ${i === 0 ? \"m\" : \"l\"}`\n );\n }\n buffer.push(\"S\");\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.data.annotationType = AnnotationType.POLYGON;\n }\n}\n\nclass CaretAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.CARET;\n }\n}\n\nclass InkAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.INK;\n this.data.inkLists = [];\n\n const rawInkLists = parameters.dict.getArray(\"InkList\");\n if (!Array.isArray(rawInkLists)) {\n return;\n }\n const xref = parameters.xref;\n for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {\n // The raw ink lists array contains arrays of numbers representing\n // the alternating horizontal and vertical coordinates, respectively,\n // of each vertex. Convert this to an array of objects with x and y\n // coordinates.\n this.data.inkLists.push([]);\n for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {\n this.data.inkLists[i].push({\n x: xref.fetchIfRef(rawInkLists[i][j]),\n y: xref.fetchIfRef(rawInkLists[i][j + 1]),\n });\n }\n }\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const inkLists of this.data.inkLists) {\n for (const vertex of inkLists) {\n bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n }\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n // According to the specification, see \"12.5.6.13 Ink Annotations\":\n // When drawn, the points shall be connected by straight lines or\n // curves in an implementation-dependent way.\n // In order to simplify things, we utilize straight lines for now.\n for (const inkList of this.data.inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i++) {\n buffer.push(\n `${inkList[i].x} ${inkList[i].y} ${i === 0 ? \"m\" : \"l\"}`\n );\n }\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.HIGHLIGHT;\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n const resources =\n this.appearance && this.appearance.dict.get(\"Resources\");\n\n if (!this.appearance || !(resources && resources.has(\"ExtGState\"))) {\n if (this.appearance) {\n // Workaround for cases where there's no /ExtGState-entry directly\n // available, e.g. when the appearance stream contains a /XObject of\n // the /Form-type, since that causes the highlighting to completely\n // obsure the PDF content below it (fixes issue13242.pdf).\n warn(\"HighlightAnnotation - ignoring built-in appearance stream.\");\n }\n // Default color is yellow in Acrobat Reader\n const fillColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [1, 1, 0];\n const fillAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n fillColor,\n blendMode: \"Multiply\",\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${points[0].x} ${points[0].y} m`,\n `${points[1].x} ${points[1].y} l`,\n `${points[3].x} ${points[3].y} l`,\n `${points[2].x} ${points[2].y} l`,\n \"f\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.UNDERLINE;\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${points[2].x} ${points[2].y} m`,\n `${points[3].x} ${points[3].y} l`,\n \"S\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass SquigglyAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.SQUIGGLY;\n\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const dy = (points[0].y - points[2].y) / 6;\n let shift = dy;\n let x = points[2].x;\n const y = points[2].y;\n const xEnd = points[3].x;\n buffer.push(`${x} ${y + shift} m`);\n do {\n x += 2;\n shift = shift === 0 ? dy : 0;\n buffer.push(`${x} ${y + shift} l`);\n } while (x < xEnd);\n buffer.push(\"S\");\n return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass StrikeOutAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.STRIKEOUT;\n\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${(points[0].x + points[2].x) / 2} ` +\n `${(points[0].y + points[2].y) / 2} m`,\n `${(points[1].x + points[3].x) / 2} ` +\n `${(points[1].y + points[3].y) / 2} l`,\n \"S\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass StampAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.STAMP;\n }\n}\n\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n const file = new FileSpec(parameters.dict.get(\"FS\"), parameters.xref);\n\n this.data.annotationType = AnnotationType.FILEATTACHMENT;\n this.data.file = file.serializable;\n }\n}\n\nexport {\n Annotation,\n AnnotationBorderStyle,\n AnnotationFactory,\n getQuadPoints,\n MarkupAnnotation,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OPS, warn } from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { escapePDFName } from \"./core_utils.js\";\nimport { EvaluatorPreprocessor } from \"./evaluator.js\";\nimport { Name } from \"./primitives.js\";\nimport { StringStream } from \"./stream.js\";\n\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\n constructor(str) {\n super(new StringStream(str));\n }\n\n parse() {\n const operation = {\n fn: 0,\n args: [],\n };\n const result = {\n fontSize: 0,\n fontName: \"\",\n fontColor: /* black = */ new Uint8ClampedArray(3),\n };\n\n try {\n while (true) {\n operation.args.length = 0; // Ensure that `args` it's always reset.\n\n if (!this.read(operation)) {\n break;\n }\n if (this.savedStatesDepth !== 0) {\n continue; // Don't get info in save/restore sections.\n }\n const { fn, args } = operation;\n\n switch (fn | 0) {\n case OPS.setFont:\n const [fontName, fontSize] = args;\n if (fontName instanceof Name) {\n result.fontName = fontName.name;\n }\n if (typeof fontSize === \"number\" && fontSize > 0) {\n result.fontSize = fontSize;\n }\n break;\n case OPS.setFillRGBColor:\n ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillGray:\n ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillColorSpace:\n ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n break;\n }\n }\n } catch (reason) {\n warn(`parseDefaultAppearance - ignoring errors: \"${reason}\".`);\n }\n\n return result;\n }\n}\n\n// Parse DA to extract font and color information.\nfunction parseDefaultAppearance(str) {\n return new DefaultAppearanceEvaluator(str).parse();\n}\n\n// Create default appearance string from some information.\nfunction createDefaultAppearance({ fontSize, fontName, fontColor }) {\n let colorCmd;\n if (fontColor.every(c => c === 0)) {\n colorCmd = \"0 g\";\n } else {\n colorCmd =\n Array.from(fontColor)\n .map(c => (c / 255).toFixed(2))\n .join(\" \") + \" rg\";\n }\n return `/${escapePDFName(fontName)} ${fontSize} Tf ${colorCmd}`;\n}\n\nexport { createDefaultAppearance, parseDefaultAppearance };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n shadow,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, Name, Ref } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @param {number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n const COMPONENTS = 3;\n alpha01 = alpha01 !== 1 ? 0 : alpha01;\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1 * COMPONENTS;\n\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n for (let i = 0; i < h2; i++) {\n const py = Math.floor(i * yRatio) * w1Scanline;\n for (let j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n newIndex += alpha01;\n }\n }\n}\n\nclass ColorSpace {\n constructor(name, numComps) {\n if (this.constructor === ColorSpace) {\n unreachable(\"Cannot initialize ColorSpace.\");\n }\n this.name = name;\n this.numComps = numComps;\n }\n\n /**\n * Converts the color value to the RGB color. The color components are\n * located in the src array starting from the srcOffset. Returns the array\n * of the rgb components, each value ranging from [0,255].\n */\n getRgb(src, srcOffset) {\n const rgb = new Uint8ClampedArray(3);\n this.getRgbItem(src, srcOffset, rgb, 0);\n return rgb;\n }\n\n /**\n * Converts the color value to the RGB color, similar to the getRgb method.\n * The result placed into the dest array starting from the destOffset.\n */\n getRgbItem(src, srcOffset, dest, destOffset) {\n unreachable(\"Should not call ColorSpace.getRgbItem\");\n }\n\n /**\n * Converts the specified number of the color values to the RGB colors.\n * The colors are located in the src array starting from the srcOffset.\n * The result is placed into the dest array starting from the destOffset.\n * The src array items shall be in [0,2^bits) range, the dest array items\n * will be in [0,255] range. alpha01 indicates how many alpha components\n * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n * array).\n */\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n }\n\n /**\n * Determines the number of bytes required to store the result of the\n * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n */\n getOutputLength(inputLength, alpha01) {\n unreachable(\"Should not call ColorSpace.getOutputLength\");\n }\n\n /**\n * Returns true if source data will be equal the result/output data.\n */\n isPassthrough(bits) {\n return false;\n }\n\n /**\n * Refer to the static `ColorSpace.isDefaultDecode` method below.\n */\n isDefaultDecode(decodeMap, bpc) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n }\n\n /**\n * Fills in the RGB colors in the destination buffer. alpha01 indicates\n * how many alpha components there are in the dest array; it will be either\n * 0 (RGB array) or 1 (RGBA array).\n */\n fillRgb(\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n actualHeight,\n bpc,\n comps,\n alpha01\n ) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'ColorSpace.fillRgb: Unsupported \"dest\" type.'\n );\n }\n const count = originalWidth * originalHeight;\n let rgbBuf = null;\n const numComponentColors = 1 << bpc;\n const needsResizing = originalHeight !== height || originalWidth !== width;\n\n if (this.isPassthrough(bpc)) {\n rgbBuf = comps;\n } else if (\n this.numComps === 1 &&\n count > numComponentColors &&\n this.name !== \"DeviceGray\" &&\n this.name !== \"DeviceRGB\"\n ) {\n // Optimization: create a color map when there is just one component and\n // we are converting more colors than the size of the color map. We\n // don't build the map if the colorspace is gray or rgb since those\n // methods are faster than building a map. This mainly offers big speed\n // ups for indexed and alternate colorspaces.\n //\n // TODO it may be worth while to cache the color map. While running\n // testing I never hit a cache so I will leave that out for now (perhaps\n // we are reparsing colorspaces too much?).\n const allColors =\n bpc <= 8\n ? new Uint8Array(numComponentColors)\n : new Uint16Array(numComponentColors);\n for (let i = 0; i < numComponentColors; i++) {\n allColors[i] = i;\n }\n const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n this.getRgbBuffer(\n allColors,\n 0,\n numComponentColors,\n colorMap,\n 0,\n bpc,\n /* alpha01 = */ 0\n );\n\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n let destPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n dest[destPos++] = colorMap[key];\n dest[destPos++] = colorMap[key + 1];\n dest[destPos++] = colorMap[key + 2];\n destPos += alpha01;\n }\n } else {\n rgbBuf = new Uint8Array(count * 3);\n let rgbPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n rgbBuf[rgbPos++] = colorMap[key];\n rgbBuf[rgbPos++] = colorMap[key + 1];\n rgbBuf[rgbPos++] = colorMap[key + 2];\n }\n }\n } else {\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n this.getRgbBuffer(\n comps,\n 0,\n width * actualHeight,\n dest,\n 0,\n bpc,\n alpha01\n );\n } else {\n rgbBuf = new Uint8ClampedArray(count * 3);\n this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n }\n }\n\n if (rgbBuf) {\n if (needsResizing) {\n resizeRgbImage(\n rgbBuf,\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n alpha01\n );\n } else {\n let destPos = 0,\n rgbPos = 0;\n for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n destPos += alpha01;\n }\n }\n }\n }\n\n /**\n * True if the colorspace has components in the default range of [0, 1].\n * This should be true for all colorspaces except for lab color spaces\n * which are [0,100], [-128, 127], [-128, 127].\n */\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", true);\n }\n\n /**\n * @private\n */\n static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n if (!localColorSpaceCache) {\n throw new Error(\n 'ColorSpace._cache - expected \"localColorSpaceCache\" argument.'\n );\n }\n if (!parsedColorSpace) {\n throw new Error(\n 'ColorSpace._cache - expected \"parsedColorSpace\" argument.'\n );\n }\n let csName, csRef;\n if (cacheKey instanceof Ref) {\n csRef = cacheKey;\n\n // If parsing succeeded, we know that this call cannot throw.\n cacheKey = xref.fetch(cacheKey);\n }\n if (cacheKey instanceof Name) {\n csName = cacheKey.name;\n }\n if (csName || csRef) {\n localColorSpaceCache.set(csName, csRef, parsedColorSpace);\n }\n }\n\n static getCached(cacheKey, xref, localColorSpaceCache) {\n if (!localColorSpaceCache) {\n throw new Error(\n 'ColorSpace.getCached - expected \"localColorSpaceCache\" argument.'\n );\n }\n if (cacheKey instanceof Ref) {\n const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n if (localColorSpace) {\n return localColorSpace;\n }\n\n try {\n cacheKey = xref.fetch(cacheKey);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n // Any errors should be handled during parsing, rather than here.\n }\n }\n if (cacheKey instanceof Name) {\n const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\n if (localColorSpace) {\n return localColorSpace;\n }\n }\n return null;\n }\n\n static async parseAsync({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n !this.getCached(cs, xref, localColorSpaceCache),\n \"Expected `ColorSpace.getCached` to have been manually checked \" +\n \"before calling `ColorSpace.parseAsync`.\"\n );\n }\n const parsedColorSpace = this._parse(\n cs,\n xref,\n resources,\n pdfFunctionFactory\n );\n\n // Attempt to cache the parsed ColorSpace, by name and/or reference.\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n return parsedColorSpace;\n }\n\n static parse({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\n if (cachedColorSpace) {\n return cachedColorSpace;\n }\n const parsedColorSpace = this._parse(\n cs,\n xref,\n resources,\n pdfFunctionFactory\n );\n\n // Attempt to cache the parsed ColorSpace, by name and/or reference.\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n return parsedColorSpace;\n }\n\n /**\n * @private\n */\n static _parse(cs, xref, resources = null, pdfFunctionFactory) {\n cs = xref.fetchIfRef(cs);\n if (cs instanceof Name) {\n switch (cs.name) {\n case \"G\":\n case \"DeviceGray\":\n return this.singletons.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.singletons.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.singletons.cmyk;\n case \"Pattern\":\n return new PatternCS(/* baseCS = */ null);\n default:\n if (resources instanceof Dict) {\n const colorSpaces = resources.get(\"ColorSpace\");\n if (colorSpaces instanceof Dict) {\n const resourcesCS = colorSpaces.get(cs.name);\n if (resourcesCS) {\n if (resourcesCS instanceof Name) {\n return this._parse(\n resourcesCS,\n xref,\n resources,\n pdfFunctionFactory\n );\n }\n cs = resourcesCS;\n break;\n }\n }\n }\n throw new FormatError(`Unrecognized ColorSpace: ${cs.name}`);\n }\n }\n if (Array.isArray(cs)) {\n const mode = xref.fetchIfRef(cs[0]).name;\n let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n\n switch (mode) {\n case \"G\":\n case \"DeviceGray\":\n return this.singletons.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.singletons.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.singletons.cmyk;\n case \"CalGray\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.get(\"Gamma\");\n return new CalGrayCS(whitePoint, blackPoint, gamma);\n case \"CalRGB\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.getArray(\"Gamma\");\n const matrix = params.getArray(\"Matrix\");\n return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n case \"ICCBased\":\n const stream = xref.fetchIfRef(cs[1]);\n const dict = stream.dict;\n numComps = dict.get(\"N\");\n const alt = dict.get(\"Alternate\");\n if (alt) {\n const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\n // Ensure that the number of components are correct,\n // and also (indirectly) that it is not a PatternCS.\n if (altCS.numComps === numComps) {\n return altCS;\n }\n warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n }\n if (numComps === 1) {\n return this.singletons.gray;\n } else if (numComps === 3) {\n return this.singletons.rgb;\n } else if (numComps === 4) {\n return this.singletons.cmyk;\n }\n break;\n case \"Pattern\":\n baseCS = cs[1] || null;\n if (baseCS) {\n baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\n }\n return new PatternCS(baseCS);\n case \"I\":\n case \"Indexed\":\n baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\n const hiVal = xref.fetchIfRef(cs[2]) + 1;\n const lookup = xref.fetchIfRef(cs[3]);\n return new IndexedCS(baseCS, hiVal, lookup);\n case \"Separation\":\n case \"DeviceN\":\n const name = xref.fetchIfRef(cs[1]);\n numComps = Array.isArray(name) ? name.length : 1;\n baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\n const tintFn = pdfFunctionFactory.create(cs[3]);\n return new AlternateCS(numComps, baseCS, tintFn);\n case \"Lab\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n const range = params.getArray(\"Range\");\n return new LabCS(whitePoint, blackPoint, range);\n default:\n throw new FormatError(`Unimplemented ColorSpace object: ${mode}`);\n }\n }\n throw new FormatError(`Unrecognized ColorSpace object: ${cs}`);\n }\n\n /**\n * Checks if a decode map matches the default decode map for a color space.\n * This handles the general decode maps where there are two values per\n * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n * This does not handle Lab, Indexed, or Pattern decode maps since they are\n * slightly different.\n * @param {Array} decode - Decode map (usually from an image).\n * @param {number} numComps - Number of components the color space has.\n */\n static isDefaultDecode(decode, numComps) {\n if (!Array.isArray(decode)) {\n return true;\n }\n if (numComps * 2 !== decode.length) {\n warn(\"The decode map is not the correct length\");\n return true;\n }\n for (let i = 0, ii = decode.length; i < ii; i += 2) {\n if (decode[i] !== 0 || decode[i + 1] !== 1) {\n return false;\n }\n }\n return true;\n }\n\n static get singletons() {\n return shadow(this, \"singletons\", {\n get gray() {\n return shadow(this, \"gray\", new DeviceGrayCS());\n },\n get rgb() {\n return shadow(this, \"rgb\", new DeviceRgbCS());\n },\n get cmyk() {\n return shadow(this, \"cmyk\", new DeviceCmykCS());\n },\n });\n }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces. A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n constructor(numComps, base, tintFn) {\n super(\"Alternate\", numComps);\n this.base = base;\n this.tintFn = tintFn;\n this.tmpBuf = new Float32Array(base.numComps);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'AlternateCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const tmpBuf = this.tmpBuf;\n this.tintFn(src, srcOffset, tmpBuf, 0);\n this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const tintFn = this.tintFn;\n const base = this.base;\n const scale = 1 / ((1 << bits) - 1);\n const baseNumComps = base.numComps;\n const usesZeroToOneRange = base.usesZeroToOneRange;\n const isPassthrough =\n (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n let pos = isPassthrough ? destOffset : 0;\n const baseBuf = isPassthrough\n ? dest\n : new Uint8ClampedArray(baseNumComps * count);\n const numComps = this.numComps;\n\n const scaled = new Float32Array(numComps);\n const tinted = new Float32Array(baseNumComps);\n let i, j;\n\n for (i = 0; i < count; i++) {\n for (j = 0; j < numComps; j++) {\n scaled[j] = src[srcOffset++] * scale;\n }\n tintFn(scaled, 0, tinted, 0);\n if (usesZeroToOneRange) {\n for (j = 0; j < baseNumComps; j++) {\n baseBuf[pos++] = tinted[j] * 255;\n }\n } else {\n base.getRgbItem(tinted, 0, baseBuf, pos);\n pos += baseNumComps;\n }\n }\n\n if (!isPassthrough) {\n base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(\n (inputLength * this.base.numComps) / this.numComps,\n alpha01\n );\n }\n}\n\nclass PatternCS extends ColorSpace {\n constructor(baseCS) {\n super(\"Pattern\", null);\n this.base = baseCS;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n unreachable(\"Should not call PatternCS.isDefaultDecode\");\n }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n constructor(base, highVal, lookup) {\n super(\"Indexed\", 1);\n this.base = base;\n this.highVal = highVal;\n\n const length = base.numComps * highVal;\n this.lookup = new Uint8Array(length);\n\n if (lookup instanceof BaseStream) {\n const bytes = lookup.getBytes(length);\n this.lookup.set(bytes);\n } else if (typeof lookup === \"string\") {\n for (let i = 0; i < length; ++i) {\n this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n }\n } else {\n throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'IndexedCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const numComps = this.base.numComps;\n const start = src[srcOffset] * numComps;\n this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const base = this.base;\n const numComps = base.numComps;\n const outputDelta = base.getOutputLength(numComps, alpha01);\n const lookup = this.lookup;\n\n for (let i = 0; i < count; ++i) {\n const lookupPos = src[srcOffset++] * numComps;\n base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n destOffset += outputDelta;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n }\n\n isDefaultDecode(decodeMap, bpc) {\n if (!Array.isArray(decodeMap)) {\n return true;\n }\n if (decodeMap.length !== 2) {\n warn(\"Decode map length is not correct\");\n return true;\n }\n if (!Number.isInteger(bpc) || bpc < 1) {\n warn(\"Bits per component is not correct\");\n return true;\n }\n return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n constructor() {\n super(\"DeviceGray\", 1);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const c = src[srcOffset] * 255;\n dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n const c = scale * src[j++];\n dest[q++] = c;\n dest[q++] = c;\n dest[q++] = c;\n q += alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGB\", 3);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n dest[destOffset] = src[srcOffset] * 255;\n dest[destOffset + 1] = src[srcOffset + 1] * 255;\n dest[destOffset + 2] = src[srcOffset + 2] * 255;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n if (bits === 8 && alpha01 === 0) {\n dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n return;\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n q += alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n\n isPassthrough(bits) {\n return bits === 8;\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nconst DeviceCmykCS = (function DeviceCmykCSClosure() {\n // The coefficients below was found using numerical analysis: the method of\n // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n // where color_value is the tabular value from the table of sampled RGB colors\n // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n // CMYK color conversion using the estimation below:\n // f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n const c = src[srcOffset] * srcScale;\n const m = src[srcOffset + 1] * srcScale;\n const y = src[srcOffset + 2] * srcScale;\n const k = src[srcOffset + 3] * srcScale;\n\n dest[destOffset] =\n 255 +\n c *\n (-4.387332384609988 * c +\n 54.48615194189176 * m +\n 18.82290502165302 * y +\n 212.25662451639585 * k +\n -285.2331026137004) +\n m *\n (1.7149763477362134 * m -\n 5.6096736904047315 * y +\n -17.873870861415444 * k -\n 5.497006427196366) +\n y *\n (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\n k * (-21.86122147463605 * k - 189.48180835922747);\n\n dest[destOffset + 1] =\n 255 +\n c *\n (8.841041422036149 * c +\n 60.118027045597366 * m +\n 6.871425592049007 * y +\n 31.159100130055922 * k +\n -79.2970844816548) +\n m *\n (-15.310361306967817 * m +\n 17.575251261109482 * y +\n 131.35250912493976 * k -\n 190.9453302588951) +\n y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n k * (-20.737325471181034 * k - 187.80453709719578);\n\n dest[destOffset + 2] =\n 255 +\n c *\n (0.8842522430003296 * c +\n 8.078677503112928 * m +\n 30.89978309703729 * y -\n 0.23883238689178934 * k +\n -14.183576799673286) +\n m *\n (10.49593273432072 * m +\n 63.02378494754052 * y +\n 50.606957656360734 * k -\n 112.23884253719248) +\n y *\n (0.03296041114873217 * y +\n 115.60384449646641 * k +\n -193.58209356861505) +\n k * (-22.33816807309886 * k - 180.12613974708367);\n }\n\n // eslint-disable-next-line no-shadow\n class DeviceCmykCS extends ColorSpace {\n constructor() {\n super(\"DeviceCMYK\", 4);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(src, srcOffset, 1, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; i++) {\n convertToRgb(src, srcOffset, scale, dest, destOffset);\n srcOffset += 4;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength / 4) * (3 + alpha01)) | 0;\n }\n }\n return DeviceCmykCS;\n})();\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nconst CalGrayCS = (function CalGrayCSClosure() {\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n // A represents a gray component of a calibrated gray space.\n // A <---> AG in the spec\n const A = src[srcOffset] * scale;\n const AG = A ** cs.G;\n\n // Computes L as per spec. ( = cs.YW * AG )\n // Except if other than default BlackPoint values are used.\n const L = cs.YW * AG;\n // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n // Convert values to rgb range [0, 255].\n const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n dest[destOffset] = val;\n dest[destOffset + 1] = val;\n dest[destOffset + 2] = val;\n }\n\n // eslint-disable-next-line no-shadow\n class CalGrayCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma) {\n super(\"CalGray\", 1);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space CalGray\"\n );\n }\n blackPoint = blackPoint || [0, 0, 0];\n gamma = gamma || 1;\n\n // Translate arguments to spec variables.\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n this.G = gamma;\n\n // Validate variables as per spec.\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n `Invalid WhitePoint components for ${this.name}` +\n \", no fallback available\"\n );\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n warn(\n `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n `ZB: ${this.ZB}, only default values are supported.`\n );\n }\n\n if (this.G < 1) {\n info(\n `Invalid Gamma: ${this.G} for ${this.name}, ` +\n \"falling back to default.\"\n );\n this.G = 1;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalGrayCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 1;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n }\n return CalGrayCS;\n})();\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst CalRGBCS = (function CalRGBCSClosure() {\n // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n // matrices.\n // prettier-ignore\n const BRADFORD_SCALE_MATRIX = new Float32Array([\n 0.8951, 0.2664, -0.1614,\n -0.7502, 1.7135, 0.0367,\n 0.0389, -0.0685, 1.0296]);\n\n // prettier-ignore\n const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n 0.9869929, -0.1470543, 0.1599627,\n 0.4323053, 0.5183603, 0.0492912,\n -0.0085287, 0.0400428, 0.9684867]);\n\n // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n // prettier-ignore\n const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n 3.2404542, -1.5371385, -0.4985314,\n -0.9692660, 1.8760108, 0.0415560,\n 0.0556434, -0.2040259, 1.0572252]);\n\n const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n const tempNormalizeMatrix = new Float32Array(3);\n const tempConvertMatrix1 = new Float32Array(3);\n const tempConvertMatrix2 = new Float32Array(3);\n\n const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n function matrixProduct(a, b, result) {\n result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n }\n\n function convertToFlat(sourceWhitePoint, LMS, result) {\n result[0] = (LMS[0] * 1) / sourceWhitePoint[0];\n result[1] = (LMS[1] * 1) / sourceWhitePoint[1];\n result[2] = (LMS[2] * 1) / sourceWhitePoint[2];\n }\n\n function convertToD65(sourceWhitePoint, LMS, result) {\n const D65X = 0.95047;\n const D65Y = 1;\n const D65Z = 1.08883;\n\n result[0] = (LMS[0] * D65X) / sourceWhitePoint[0];\n result[1] = (LMS[1] * D65Y) / sourceWhitePoint[1];\n result[2] = (LMS[2] * D65Z) / sourceWhitePoint[2];\n }\n\n function sRGBTransferFunction(color) {\n // See http://en.wikipedia.org/wiki/SRGB.\n if (color <= 0.0031308) {\n return adjustToRange(0, 1, 12.92 * color);\n }\n // Optimization:\n // If color is close enough to 1, skip calling the following transform\n // since calling Math.pow is expensive. If color is larger than\n // the threshold, the final result is larger than 254.5 since\n // ((1 + 0.055) * 0.99554525 ** (1 / 2.4) - 0.055) * 255 ===\n // 254.50000003134699\n if (color >= 0.99554525) {\n return 1;\n }\n return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n }\n\n function adjustToRange(min, max, value) {\n return Math.max(min, Math.min(max, value));\n }\n\n function decodeL(L) {\n if (L < 0) {\n return -decodeL(-L);\n }\n if (L > 8.0) {\n return ((L + 16) / 116) ** 3;\n }\n return L * DECODE_L_CONSTANT;\n }\n\n function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n // In case the blackPoint is already the default blackPoint then there is\n // no need to do compensation.\n if (\n sourceBlackPoint[0] === 0 &&\n sourceBlackPoint[1] === 0 &&\n sourceBlackPoint[2] === 0\n ) {\n result[0] = XYZ_Flat[0];\n result[1] = XYZ_Flat[1];\n result[2] = XYZ_Flat[2];\n return;\n }\n\n // For the blackPoint calculation details, please see\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n // The destination blackPoint is the default blackPoint [0, 0, 0].\n const zeroDecodeL = decodeL(0);\n\n const X_DST = zeroDecodeL;\n const X_SRC = decodeL(sourceBlackPoint[0]);\n\n const Y_DST = zeroDecodeL;\n const Y_SRC = decodeL(sourceBlackPoint[1]);\n\n const Z_DST = zeroDecodeL;\n const Z_SRC = decodeL(sourceBlackPoint[2]);\n\n const X_Scale = (1 - X_DST) / (1 - X_SRC);\n const X_Offset = 1 - X_Scale;\n\n const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n const Y_Offset = 1 - Y_Scale;\n\n const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n const Z_Offset = 1 - Z_Scale;\n\n result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n }\n\n function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n // In case the whitePoint is already flat then there is no need to do\n // normalization.\n if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n result[0] = XYZ_In[0];\n result[1] = XYZ_In[1];\n result[2] = XYZ_In[2];\n return;\n }\n\n const LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n const LMS_Flat = tempNormalizeMatrix;\n convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n }\n\n function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n const LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n const LMS_D65 = tempNormalizeMatrix;\n convertToD65(sourceWhitePoint, LMS, LMS_D65);\n\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n }\n\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n // A, B and C represent a red, green and blue components of a calibrated\n // rgb space.\n const A = adjustToRange(0, 1, src[srcOffset] * scale);\n const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n\n // A <---> AGR in the spec\n // B <---> BGG in the spec\n // C <---> CGB in the spec\n const AGR = A === 1 ? 1 : A ** cs.GR;\n const BGG = B === 1 ? 1 : B ** cs.GG;\n const CGB = C === 1 ? 1 : C ** cs.GB;\n\n // Computes intermediate variables L, M, N as per spec.\n // To decode X, Y, Z values map L, M, N directly to them.\n const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n\n // The following calculations are based on this document:\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n const XYZ = tempConvertMatrix1;\n XYZ[0] = X;\n XYZ[1] = Y;\n XYZ[2] = Z;\n const XYZ_Flat = tempConvertMatrix2;\n\n normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n\n const XYZ_Black = tempConvertMatrix1;\n compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n\n const XYZ_D65 = tempConvertMatrix2;\n normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n\n const SRGB = tempConvertMatrix1;\n matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n // Convert the values to rgb range [0, 255].\n dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n }\n\n // eslint-disable-next-line no-shadow\n class CalRGBCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma, matrix) {\n super(\"CalRGB\", 3);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space CalRGB\"\n );\n }\n blackPoint = blackPoint || new Float32Array(3);\n gamma = gamma || new Float32Array([1, 1, 1]);\n matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n // Translate arguments to spec variables.\n const XW = whitePoint[0];\n const YW = whitePoint[1];\n const ZW = whitePoint[2];\n this.whitePoint = whitePoint;\n\n const XB = blackPoint[0];\n const YB = blackPoint[1];\n const ZB = blackPoint[2];\n this.blackPoint = blackPoint;\n\n this.GR = gamma[0];\n this.GG = gamma[1];\n this.GB = gamma[2];\n\n this.MXA = matrix[0];\n this.MYA = matrix[1];\n this.MZA = matrix[2];\n this.MXB = matrix[3];\n this.MYB = matrix[4];\n this.MZB = matrix[5];\n this.MXC = matrix[6];\n this.MYC = matrix[7];\n this.MZC = matrix[8];\n\n // Validate variables as per spec.\n if (XW < 0 || ZW < 0 || YW !== 1) {\n throw new FormatError(\n `Invalid WhitePoint components for ${this.name}` +\n \", no fallback available\"\n );\n }\n\n if (XB < 0 || YB < 0 || ZB < 0) {\n info(\n `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n \"falling back to default.\"\n );\n this.blackPoint = new Float32Array(3);\n }\n\n if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n info(\n `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n `${this.name}, falling back to default.`\n );\n this.GR = this.GG = this.GB = 1;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalRGBCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n }\n return CalRGBCS;\n})();\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst LabCS = (function LabCSClosure() {\n // Function g(x) from spec\n function fn_g(x) {\n let result;\n if (x >= 6 / 29) {\n result = x ** 3;\n } else {\n result = (108 / 841) * (x - 4 / 29);\n }\n return result;\n }\n\n function decode(value, high1, low2, high2) {\n return low2 + (value * (high2 - low2)) / high1;\n }\n\n // If decoding is needed maxVal should be 2^bits per component - 1.\n function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n // not the usual [0, 1]. If a command like setFillColor is used the src\n // values will already be within the correct range. However, if we are\n // converting an image we have to map the values to the correct range given\n // above.\n // Ls,as,bs <---> L*,a*,b* in the spec\n let Ls = src[srcOffset];\n let as = src[srcOffset + 1];\n let bs = src[srcOffset + 2];\n if (maxVal !== false) {\n Ls = decode(Ls, maxVal, 0, 100);\n as = decode(as, maxVal, cs.amin, cs.amax);\n bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n }\n\n // Adjust limits of 'as' and 'bs'\n if (as > cs.amax) {\n as = cs.amax;\n } else if (as < cs.amin) {\n as = cs.amin;\n }\n if (bs > cs.bmax) {\n bs = cs.bmax;\n } else if (bs < cs.bmin) {\n bs = cs.bmin;\n }\n\n // Computes intermediate variables X,Y,Z as per spec\n const M = (Ls + 16) / 116;\n const L = M + as / 500;\n const N = M - bs / 200;\n\n const X = cs.XW * fn_g(L);\n const Y = cs.YW * fn_g(M);\n const Z = cs.ZW * fn_g(N);\n\n let r, g, b;\n // Using different conversions for D50 and D65 white points,\n // per http://www.color.org/srgb.pdf\n if (cs.ZW < 1) {\n // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n } else {\n // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n }\n // Convert the color values to the [0,255] range (clamping is automatic).\n dest[destOffset] = Math.sqrt(r) * 255;\n dest[destOffset + 1] = Math.sqrt(g) * 255;\n dest[destOffset + 2] = Math.sqrt(b) * 255;\n }\n\n // eslint-disable-next-line no-shadow\n class LabCS extends ColorSpace {\n constructor(whitePoint, blackPoint, range) {\n super(\"Lab\", 3);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space Lab\"\n );\n }\n blackPoint = blackPoint || [0, 0, 0];\n range = range || [-100, 100, -100, 100];\n\n // Translate args to spec variables\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n this.amin = range[0];\n this.amax = range[1];\n this.bmin = range[2];\n this.bmax = range[3];\n\n // These are here just for completeness - the spec doesn't offer any\n // formulas that use BlackPoint in Lab\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n // Validate vars as per spec\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n \"Invalid WhitePoint components, no fallback available\"\n );\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(\"Invalid BlackPoint, falling back to default\");\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.amin > this.amax || this.bmin > this.bmax) {\n info(\"Invalid Range, falling back to defaults\");\n this.amin = -100;\n this.amax = 100;\n this.bmin = -100;\n this.bmax = 100;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'LabCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, false, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'LabCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const maxVal = (1 << bits) - 1;\n for (let i = 0; i < count; i++) {\n convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n // XXX: Decoding is handled with the lab conversion because of the strange\n // ranges that are used.\n return true;\n }\n\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", false);\n }\n }\n return LabCS;\n})();\n\nexport { ColorSpace };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-var */\n\nimport {\n AbortException,\n assert,\n CMapCompressionType,\n createPromiseCapability,\n FONT_IDENTITY_MATRIX,\n FormatError,\n IDENTITY_MATRIX,\n info,\n isArrayEqual,\n OPS,\n shadow,\n stringToPDFString,\n TextRenderingMode,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { CMapFactory, IdentityCMap } from \"./cmap.js\";\nimport { Cmd, Dict, EOF, isName, Name, Ref, RefSet } from \"./primitives.js\";\nimport { ErrorFont, Font } from \"./fonts.js\";\nimport { FontFlags, getFontType } from \"./fonts_utils.js\";\nimport {\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n getFontNameToFileMap,\n getSerifFonts,\n getStandardFontName,\n getStdFontMap,\n getSymbolsFonts,\n} from \"./standard_fonts.js\";\nimport {\n getNormalizedUnicodes,\n getUnicodeForGlyph,\n reverseIfRtl,\n} from \"./unicode.js\";\nimport { getTilingPatternIR, Pattern } from \"./pattern.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { isPDFFunction, PDFFunctionFactory } from \"./function.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n LocalColorSpaceCache,\n LocalGStateCache,\n LocalImageCache,\n LocalTilingPatternCache,\n} from \"./image_utils.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { getMetrics } from \"./metrics.js\";\nimport { MurmurHash3_64 } from \"./murmurhash3.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PDFImage } from \"./image.js\";\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n maxImageSize: -1,\n disableFontFace: false,\n ignoreErrors: false,\n isEvalSupported: true,\n fontExtraProperties: false,\n useSystemFonts: true,\n cMapUrl: null,\n standardFontDataUrl: null,\n});\n\nconst PatternType = {\n TILING: 1,\n SHADING: 2,\n};\n\n// Optionally avoid sending individual, or very few, text chunks to reduce\n// `postMessage` overhead with ReadableStream (see issue 13962).\n//\n// PLEASE NOTE: This value should *not* be too large (it's used as a lower limit\n// in `enqueueChunk`), since that would cause streaming of textContent to become\n// essentially useless in practice by sending all (or most) chunks at once.\n// Also, a too large value would (indirectly) affect the main-thread `textLayer`\n// building negatively by forcing all textContent to be handled at once, which\n// could easily end up hurting *overall* performance (e.g. rendering as well).\nconst TEXT_CHUNK_BATCH_SIZE = 10;\n\nconst deferred = Promise.resolve();\n\n// Convert PDF blend mode names to HTML5 blend mode names.\nfunction normalizeBlendMode(value, parsingArray = false) {\n if (Array.isArray(value)) {\n // Use the first *supported* BM value in the Array (fixes issue11279.pdf).\n for (let i = 0, ii = value.length; i < ii; i++) {\n const maybeBM = normalizeBlendMode(value[i], /* parsingArray = */ true);\n if (maybeBM) {\n return maybeBM;\n }\n }\n warn(`Unsupported blend mode Array: ${value}`);\n return \"source-over\";\n }\n\n if (!(value instanceof Name)) {\n if (parsingArray) {\n return null;\n }\n return \"source-over\";\n }\n switch (value.name) {\n case \"Normal\":\n case \"Compatible\":\n return \"source-over\";\n case \"Multiply\":\n return \"multiply\";\n case \"Screen\":\n return \"screen\";\n case \"Overlay\":\n return \"overlay\";\n case \"Darken\":\n return \"darken\";\n case \"Lighten\":\n return \"lighten\";\n case \"ColorDodge\":\n return \"color-dodge\";\n case \"ColorBurn\":\n return \"color-burn\";\n case \"HardLight\":\n return \"hard-light\";\n case \"SoftLight\":\n return \"soft-light\";\n case \"Difference\":\n return \"difference\";\n case \"Exclusion\":\n return \"exclusion\";\n case \"Hue\":\n return \"hue\";\n case \"Saturation\":\n return \"saturation\";\n case \"Color\":\n return \"color\";\n case \"Luminosity\":\n return \"luminosity\";\n }\n if (parsingArray) {\n return null;\n }\n warn(`Unsupported blend mode: ${value.name}`);\n return \"source-over\";\n}\n\n// Trying to minimize Date.now() usage and check every 100 time.\nclass TimeSlotManager {\n static get TIME_SLOT_DURATION_MS() {\n return shadow(this, \"TIME_SLOT_DURATION_MS\", 20);\n }\n\n static get CHECK_TIME_EVERY() {\n return shadow(this, \"CHECK_TIME_EVERY\", 100);\n }\n\n constructor() {\n this.reset();\n }\n\n check() {\n if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n return false;\n }\n this.checked = 0;\n return this.endTime <= Date.now();\n }\n\n reset() {\n this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n this.checked = 0;\n }\n}\n\nclass PartialEvaluator {\n constructor({\n xref,\n handler,\n pageIndex,\n idFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalImageCache,\n options = null,\n }) {\n this.xref = xref;\n this.handler = handler;\n this.pageIndex = pageIndex;\n this.idFactory = idFactory;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalImageCache = globalImageCache;\n this.options = options || DefaultPartialEvaluatorOptions;\n this.parsingType3Font = false;\n\n this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n }\n\n /**\n * Since Functions are only cached (locally) by reference, we can share one\n * `PDFFunctionFactory` instance within this `PartialEvaluator` instance.\n */\n get _pdfFunctionFactory() {\n const pdfFunctionFactory = new PDFFunctionFactory({\n xref: this.xref,\n isEvalSupported: this.options.isEvalSupported,\n });\n return shadow(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n }\n\n clone(newOptions = null) {\n const newEvaluator = Object.create(this);\n newEvaluator.options = Object.assign(\n Object.create(null),\n this.options,\n newOptions\n );\n return newEvaluator;\n }\n\n hasBlendModes(resources, nonBlendModesSet) {\n if (!(resources instanceof Dict)) {\n return false;\n }\n if (resources.objId && nonBlendModesSet.has(resources.objId)) {\n return false;\n }\n\n const processed = new RefSet(nonBlendModesSet);\n if (resources.objId) {\n processed.put(resources.objId);\n }\n\n const nodes = [resources],\n xref = this.xref;\n while (nodes.length) {\n const node = nodes.shift();\n // First check the current resources for blend modes.\n const graphicStates = node.get(\"ExtGState\");\n if (graphicStates instanceof Dict) {\n for (let graphicState of graphicStates.getRawValues()) {\n if (graphicState instanceof Ref) {\n if (processed.has(graphicState)) {\n continue; // The ExtGState has already been processed.\n }\n try {\n graphicState = xref.fetch(graphicState);\n } catch (ex) {\n // Avoid parsing a corrupt ExtGState more than once.\n processed.put(graphicState);\n\n info(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n continue;\n }\n }\n if (!(graphicState instanceof Dict)) {\n continue;\n }\n if (graphicState.objId) {\n processed.put(graphicState.objId);\n }\n\n const bm = graphicState.get(\"BM\");\n if (bm instanceof Name) {\n if (bm.name !== \"Normal\") {\n return true;\n }\n continue;\n }\n if (bm !== undefined && Array.isArray(bm)) {\n for (const element of bm) {\n if (element instanceof Name && element.name !== \"Normal\") {\n return true;\n }\n }\n }\n }\n }\n // Descend into the XObjects to look for more resources and blend modes.\n const xObjects = node.get(\"XObject\");\n if (!(xObjects instanceof Dict)) {\n continue;\n }\n for (let xObject of xObjects.getRawValues()) {\n if (xObject instanceof Ref) {\n if (processed.has(xObject)) {\n // The XObject has already been processed, and by avoiding a\n // redundant `xref.fetch` we can *significantly* reduce the load\n // time for badly generated PDF files (fixes issue6961.pdf).\n continue;\n }\n try {\n xObject = xref.fetch(xObject);\n } catch (ex) {\n // Avoid parsing a corrupt XObject more than once.\n processed.put(xObject);\n\n info(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n continue;\n }\n }\n if (!(xObject instanceof BaseStream)) {\n continue;\n }\n if (xObject.dict.objId) {\n processed.put(xObject.dict.objId);\n }\n const xResources = xObject.dict.get(\"Resources\");\n if (!(xResources instanceof Dict)) {\n continue;\n }\n // Checking objId to detect an infinite loop.\n if (xResources.objId && processed.has(xResources.objId)) {\n continue;\n }\n\n nodes.push(xResources);\n if (xResources.objId) {\n processed.put(xResources.objId);\n }\n }\n }\n\n // When no blend modes exist, there's no need re-fetch/re-parse any of the\n // processed `Ref`s again for subsequent pages. This helps reduce redundant\n // `XRef.fetch` calls for some documents (e.g. issue6961.pdf).\n processed.forEach(ref => {\n nonBlendModesSet.put(ref);\n });\n return false;\n }\n\n async fetchBuiltInCMap(name) {\n const cachedData = this.builtInCMapCache.get(name);\n if (cachedData) {\n return cachedData;\n }\n let data;\n\n if (this.options.cMapUrl !== null) {\n // Only compressed CMaps are (currently) supported here.\n const url = `${this.options.cMapUrl}${name}.bcmap`;\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `fetchBuiltInCMap: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n }\n data = {\n cMapData: new Uint8Array(await response.arrayBuffer()),\n compressionType: CMapCompressionType.BINARY,\n };\n } else {\n // Get the data on the main-thread instead.\n data = await this.handler.sendWithPromise(\"FetchBuiltInCMap\", { name });\n }\n\n if (data.compressionType !== CMapCompressionType.NONE) {\n // Given the size of uncompressed CMaps, only cache compressed ones.\n this.builtInCMapCache.set(name, data);\n }\n return data;\n }\n\n async fetchStandardFontData(name) {\n const cachedData = this.standardFontDataCache.get(name);\n if (cachedData) {\n return new Stream(cachedData);\n }\n\n // The symbol fonts are not consistent across platforms, always load the\n // standard font data for them.\n if (\n this.options.useSystemFonts &&\n name !== \"Symbol\" &&\n name !== \"ZapfDingbats\"\n ) {\n return null;\n }\n\n const standardFontNameToFileName = getFontNameToFileMap(),\n filename = standardFontNameToFileName[name];\n let data;\n\n if (this.options.standardFontDataUrl !== null) {\n const url = `${this.options.standardFontDataUrl}${filename}`;\n const response = await fetch(url);\n if (!response.ok) {\n warn(\n `fetchStandardFontData: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n } else {\n data = await response.arrayBuffer();\n }\n } else {\n // Get the data on the main-thread instead.\n try {\n data = await this.handler.sendWithPromise(\"FetchStandardFontData\", {\n filename,\n });\n } catch (e) {\n warn(\n `fetchStandardFontData: failed to fetch file \"${filename}\" with \"${e}\".`\n );\n }\n }\n\n if (!data) {\n return null;\n }\n // Cache the \"raw\" standard font data, to avoid fetching it repeateadly\n // (see e.g. issue 11399).\n this.standardFontDataCache.set(name, data);\n\n return new Stream(data);\n }\n\n async buildFormXObject(\n resources,\n xobj,\n smask,\n operatorList,\n task,\n initialState,\n localColorSpaceCache\n ) {\n const dict = xobj.dict;\n const matrix = dict.getArray(\"Matrix\");\n let bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n bbox = Util.normalizeRect(bbox);\n } else {\n bbox = null;\n }\n\n let optionalContent, groupOptions;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(\n dict.get(\"OC\"),\n resources\n );\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n const group = dict.get(\"Group\");\n if (group) {\n groupOptions = {\n matrix,\n bbox,\n smask,\n isolated: false,\n knockout: false,\n };\n\n const groupSubtype = group.get(\"S\");\n let colorSpace = null;\n if (isName(groupSubtype, \"Transparency\")) {\n groupOptions.isolated = group.get(\"I\") || false;\n groupOptions.knockout = group.get(\"K\") || false;\n if (group.has(\"CS\")) {\n const cs = group.getRaw(\"CS\");\n\n const cachedColorSpace = ColorSpace.getCached(\n cs,\n this.xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n colorSpace = cachedColorSpace;\n } else {\n colorSpace = await this.parseColorSpace({\n cs,\n resources,\n localColorSpaceCache,\n });\n }\n }\n }\n\n if (smask && smask.backdrop) {\n colorSpace = colorSpace || ColorSpace.singletons.rgb;\n smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n }\n\n operatorList.addOp(OPS.beginGroup, [groupOptions]);\n }\n\n // If it's a group, a new canvas will be created that is the size of the\n // bounding box and translated to the correct position so we don't need to\n // apply the bounding box to it.\n const args = group ? [matrix, null] : [matrix, bbox];\n operatorList.addOp(OPS.paintFormXObjectBegin, args);\n\n return this.getOperatorList({\n stream: xobj,\n task,\n resources: dict.get(\"Resources\") || resources,\n operatorList,\n initialState,\n }).then(function () {\n operatorList.addOp(OPS.paintFormXObjectEnd, []);\n\n if (group) {\n operatorList.addOp(OPS.endGroup, [groupOptions]);\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n });\n }\n\n _sendImgData(objId, imgData, cacheGlobally = false) {\n const transfers = imgData ? [imgData.data.buffer] : null;\n\n if (this.parsingType3Font || cacheGlobally) {\n return this.handler.send(\n \"commonobj\",\n [objId, \"Image\", imgData],\n transfers\n );\n }\n return this.handler.send(\n \"obj\",\n [objId, this.pageIndex, \"Image\", imgData],\n transfers\n );\n }\n\n async buildPaintImageXObject({\n resources,\n image,\n isInline = false,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache,\n }) {\n const dict = image.dict;\n const imageRef = dict.objId;\n const w = dict.get(\"W\", \"Width\");\n const h = dict.get(\"H\", \"Height\");\n\n if (!(w && typeof w === \"number\") || !(h && typeof h === \"number\")) {\n warn(\"Image dimensions are missing, or not numbers.\");\n return;\n }\n const maxImageSize = this.options.maxImageSize;\n if (maxImageSize !== -1 && w * h > maxImageSize) {\n warn(\"Image exceeded maximum allowed size and was removed.\");\n return;\n }\n\n let optionalContent;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(\n dict.get(\"OC\"),\n resources\n );\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n\n const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n const interpolate = dict.get(\"I\", \"Interpolate\");\n let imgData, args;\n if (imageMask) {\n // This depends on a tmpCanvas being filled with the\n // current fillStyle, such that processing the pixel\n // data can't be done here. Instead of creating a\n // complete PDFImage, only read the information needed\n // for later.\n const bitStrideLength = (w + 7) >> 3;\n const imgArray = image.getBytes(\n bitStrideLength * h,\n /* forceClamped = */ true\n );\n const decode = dict.getArray(\"D\", \"Decode\");\n\n imgData = PDFImage.createMask({\n imgArray,\n width: w,\n height: h,\n imageIsFromDecodeStream: image instanceof DecodeStream,\n inverseDecode: !!decode && decode[0] > 0,\n interpolate,\n });\n imgData.cached = !!cacheKey;\n args = [imgData];\n\n operatorList.addOp(OPS.paintImageMaskXObject, args);\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintImageMaskXObject,\n args,\n });\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n return;\n }\n\n const softMask = dict.get(\"SM\", \"SMask\") || false;\n const mask = dict.get(\"Mask\") || false;\n\n const SMALL_IMAGE_DIMENSIONS = 200;\n // Inlining small images into the queue as RGB data\n if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {\n const imageObj = new PDFImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n });\n // We force the use of RGBA_32BPP images here, because we can't handle\n // any other kind.\n imgData = imageObj.createImageData(/* forceRGBA = */ true);\n operatorList.addOp(OPS.paintInlineImageXObject, [imgData]);\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n return;\n }\n\n // If there is no imageMask, create the PDFImage and a lot\n // of image processing can be done here.\n let objId = `img_${this.idFactory.createObjId()}`,\n cacheGlobally = false;\n\n if (this.parsingType3Font) {\n objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n } else if (imageRef) {\n cacheGlobally = this.globalImageCache.shouldCache(\n imageRef,\n this.pageIndex\n );\n\n if (cacheGlobally) {\n objId = `${this.idFactory.getDocId()}_${objId}`;\n }\n }\n\n // Ensure that the dependency is added before the image is decoded.\n operatorList.addDependency(objId);\n args = [objId, w, h];\n\n PDFImage.buildImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n })\n .then(imageObj => {\n imgData = imageObj.createImageData(/* forceRGBA = */ false);\n\n if (cacheKey && imageRef && cacheGlobally) {\n this.globalImageCache.addByteSize(imageRef, imgData.data.length);\n }\n return this._sendImgData(objId, imgData, cacheGlobally);\n })\n .catch(reason => {\n warn(`Unable to decode image \"${objId}\": \"${reason}\".`);\n\n return this._sendImgData(objId, /* imgData = */ null, cacheGlobally);\n });\n\n operatorList.addOp(OPS.paintImageXObject, args);\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintImageXObject,\n args,\n });\n\n if (imageRef) {\n assert(!isInline, \"Cannot cache an inline image globally.\");\n this.globalImageCache.addPageIndex(imageRef, this.pageIndex);\n\n if (cacheGlobally) {\n this.globalImageCache.setData(imageRef, {\n objId,\n fn: OPS.paintImageXObject,\n args,\n byteSize: 0, // Temporary entry, note `addByteSize` above.\n });\n }\n }\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n }\n\n handleSMask(\n smask,\n resources,\n operatorList,\n task,\n stateManager,\n localColorSpaceCache\n ) {\n const smaskContent = smask.get(\"G\");\n const smaskOptions = {\n subtype: smask.get(\"S\").name,\n backdrop: smask.get(\"BC\"),\n };\n\n // The SMask might have a alpha/luminosity value transfer function --\n // we will build a map of integer values in range 0..255 to be fast.\n const transferObj = smask.get(\"TR\");\n if (isPDFFunction(transferObj)) {\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n const transferMap = new Uint8Array(256);\n const tmp = new Float32Array(1);\n for (let i = 0; i < 256; i++) {\n tmp[0] = i / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[i] = (tmp[0] * 255) | 0;\n }\n smaskOptions.transferMap = transferMap;\n }\n\n return this.buildFormXObject(\n resources,\n smaskContent,\n smaskOptions,\n operatorList,\n task,\n stateManager.state.clone(),\n localColorSpaceCache\n );\n }\n\n handleTransferFunction(tr) {\n let transferArray;\n if (Array.isArray(tr)) {\n transferArray = tr;\n } else if (isPDFFunction(tr)) {\n transferArray = [tr];\n } else {\n return null; // Not a valid transfer function entry.\n }\n\n const transferMaps = [];\n let numFns = 0,\n numEffectfulFns = 0;\n for (const entry of transferArray) {\n const transferObj = this.xref.fetchIfRef(entry);\n numFns++;\n\n if (isName(transferObj, \"Identity\")) {\n transferMaps.push(null);\n continue;\n } else if (!isPDFFunction(transferObj)) {\n return null; // Not a valid transfer function object.\n }\n\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n const transferMap = new Uint8Array(256),\n tmp = new Float32Array(1);\n for (let j = 0; j < 256; j++) {\n tmp[0] = j / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[j] = (tmp[0] * 255) | 0;\n }\n transferMaps.push(transferMap);\n numEffectfulFns++;\n }\n\n if (!(numFns === 1 || numFns === 4)) {\n return null; // Only 1 or 4 functions are supported, by the specification.\n }\n if (numEffectfulFns === 0) {\n return null; // Only /Identity transfer functions found, which are no-ops.\n }\n return transferMaps;\n }\n\n handleTilingType(\n fn,\n color,\n resources,\n pattern,\n patternDict,\n operatorList,\n task,\n localTilingPatternCache\n ) {\n // Create an IR of the pattern code.\n const tilingOpList = new OperatorList();\n // Merge the available resources, to prevent issues when the patternDict\n // is missing some /Resources entries (fixes issue6541.pdf).\n const patternResources = Dict.merge({\n xref: this.xref,\n dictArray: [patternDict.get(\"Resources\"), resources],\n });\n\n return this.getOperatorList({\n stream: pattern,\n task,\n resources: patternResources,\n operatorList: tilingOpList,\n })\n .then(function () {\n const operatorListIR = tilingOpList.getIR();\n const tilingPatternIR = getTilingPatternIR(\n operatorListIR,\n patternDict,\n color\n );\n // Add the dependencies to the parent operator list so they are\n // resolved before the sub operator list is executed synchronously.\n operatorList.addDependencies(tilingOpList.dependencies);\n operatorList.addOp(fn, tilingPatternIR);\n\n if (patternDict.objId) {\n localTilingPatternCache.set(/* name = */ null, patternDict.objId, {\n operatorListIR,\n dict: patternDict,\n });\n }\n })\n .catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the TilingPattern -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorTilingPattern,\n });\n warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n return;\n }\n throw reason;\n });\n }\n\n handleSetFont(\n resources,\n fontArgs,\n fontRef,\n operatorList,\n task,\n state,\n fallbackFontDict = null,\n cssFontInfo = null\n ) {\n const fontName =\n fontArgs && fontArgs[0] instanceof Name ? fontArgs[0].name : null;\n\n return this.loadFont(\n fontName,\n fontRef,\n resources,\n fallbackFontDict,\n cssFontInfo\n )\n .then(translated => {\n if (!translated.font.isType3Font) {\n return translated;\n }\n return translated\n .loadType3Data(this, resources, task)\n .then(function () {\n // Add the dependencies to the parent operatorList so they are\n // resolved before Type3 operatorLists are executed synchronously.\n operatorList.addDependencies(translated.type3Dependencies);\n\n return translated;\n })\n .catch(reason => {\n // Error in the font data -- sending unsupported feature\n // notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontLoadType3,\n });\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Type3 font load error: ${reason}`),\n dict: translated.font,\n evaluatorOptions: this.options,\n });\n });\n })\n .then(translated => {\n state.font = translated.font;\n translated.send(this.handler);\n return translated.loadedName;\n });\n }\n\n handleText(chars, state) {\n const font = state.font;\n const glyphs = font.charsToGlyphs(chars);\n\n if (font.data) {\n const isAddToPathSet = !!(\n state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n if (\n isAddToPathSet ||\n state.fillColorSpace.name === \"Pattern\" ||\n font.disableFontFace ||\n this.options.disableFontFace\n ) {\n PartialEvaluator.buildFontPaths(\n font,\n glyphs,\n this.handler,\n this.options\n );\n }\n }\n return glyphs;\n }\n\n ensureStateFont(state) {\n if (state.font) {\n return;\n }\n const reason = new FormatError(\n \"Missing setFont (Tf) operator before text rendering operator.\"\n );\n\n if (this.options.ignoreErrors) {\n // Missing setFont operator before text rendering operator -- sending\n // unsupported feature notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontState,\n });\n warn(`ensureStateFont: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n\n async setGState({\n resources,\n gState,\n operatorList,\n cacheKey,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n }) {\n const gStateRef = gState.objId;\n let isSimpleGState = true;\n // This array holds the converted/processed state data.\n const gStateObj = [];\n const gStateKeys = gState.getKeys();\n let promise = Promise.resolve();\n for (let i = 0, ii = gStateKeys.length; i < ii; i++) {\n const key = gStateKeys[i];\n const value = gState.get(key);\n switch (key) {\n case \"Type\":\n break;\n case \"LW\":\n case \"LC\":\n case \"LJ\":\n case \"ML\":\n case \"D\":\n case \"RI\":\n case \"FL\":\n case \"CA\":\n case \"ca\":\n gStateObj.push([key, value]);\n break;\n case \"Font\":\n isSimpleGState = false;\n\n promise = promise.then(() => {\n return this.handleSetFont(\n resources,\n null,\n value[0],\n operatorList,\n task,\n stateManager.state\n ).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n gStateObj.push([key, [loadedName, value[1]]]);\n });\n });\n break;\n case \"BM\":\n gStateObj.push([key, normalizeBlendMode(value)]);\n break;\n case \"SMask\":\n if (isName(value, \"None\")) {\n gStateObj.push([key, false]);\n break;\n }\n if (value instanceof Dict) {\n isSimpleGState = false;\n\n promise = promise.then(() => {\n return this.handleSMask(\n value,\n resources,\n operatorList,\n task,\n stateManager,\n localColorSpaceCache\n );\n });\n gStateObj.push([key, true]);\n } else {\n warn(\"Unsupported SMask type\");\n }\n break;\n case \"TR\":\n const transferMaps = this.handleTransferFunction(value);\n gStateObj.push([key, transferMaps]);\n break;\n // Only generate info log messages for the following since\n // they are unlikely to have a big impact on the rendering.\n case \"OP\":\n case \"op\":\n case \"OPM\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n case \"TR2\":\n case \"HT\":\n case \"SM\":\n case \"SA\":\n case \"AIS\":\n case \"TK\":\n // TODO implement these operators.\n info(\"graphic state operator \" + key);\n break;\n default:\n info(\"Unknown graphic state operator \" + key);\n break;\n }\n }\n return promise.then(function () {\n if (gStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [gStateObj]);\n }\n\n if (isSimpleGState) {\n localGStateCache.set(cacheKey, gStateRef, gStateObj);\n }\n });\n }\n\n loadFont(\n fontName,\n font,\n resources,\n fallbackFontDict = null,\n cssFontInfo = null\n ) {\n const errorFont = async () => {\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n dict: font,\n evaluatorOptions: this.options,\n });\n };\n\n const xref = this.xref;\n let fontRef;\n if (font) {\n // Loading by ref.\n if (!(font instanceof Ref)) {\n throw new FormatError('The \"font\" object should be a reference.');\n }\n fontRef = font;\n } else {\n // Loading by name.\n const fontRes = resources.get(\"Font\");\n if (fontRes) {\n fontRef = fontRes.getRaw(fontName);\n }\n }\n if (!fontRef) {\n const partialMsg = `Font \"${\n fontName || (font && font.toString())\n }\" is not available`;\n\n if (!this.options.ignoreErrors && !this.parsingType3Font) {\n warn(`${partialMsg}.`);\n return errorFont();\n }\n // Font not found -- sending unsupported feature notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontMissing,\n });\n warn(`${partialMsg} -- attempting to fallback to a default font.`);\n\n // Falling back to a default font to avoid completely broken rendering,\n // but note that there're no guarantees that things will look \"correct\".\n if (fallbackFontDict) {\n fontRef = fallbackFontDict;\n } else {\n fontRef = PartialEvaluator.fallbackFontDict;\n }\n }\n\n if (this.parsingType3Font && this.type3FontRefs.has(fontRef)) {\n return errorFont();\n }\n\n if (this.fontCache.has(fontRef)) {\n return this.fontCache.get(fontRef);\n }\n\n font = xref.fetchIfRef(fontRef);\n if (!(font instanceof Dict)) {\n return errorFont();\n }\n\n // We are holding `font.cacheKey` references only for `fontRef`s that\n // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\n return this.fontCache.get(font.cacheKey);\n }\n\n const fontCapability = createPromiseCapability();\n\n let preEvaluatedFont;\n try {\n preEvaluatedFont = this.preEvaluateFont(font);\n preEvaluatedFont.cssFontInfo = cssFontInfo;\n } catch (reason) {\n warn(`loadFont - preEvaluateFont failed: \"${reason}\".`);\n return errorFont();\n }\n const { descriptor, hash } = preEvaluatedFont;\n\n const fontRefIsRef = fontRef instanceof Ref;\n let fontID;\n if (fontRefIsRef) {\n fontID = `f${fontRef.toString()}`;\n }\n\n if (hash && descriptor instanceof Dict) {\n if (!descriptor.fontAliases) {\n descriptor.fontAliases = Object.create(null);\n }\n const fontAliases = descriptor.fontAliases;\n\n if (fontAliases[hash]) {\n const aliasFontRef = fontAliases[hash].aliasRef;\n if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n this.fontCache.putAlias(fontRef, aliasFontRef);\n return this.fontCache.get(fontRef);\n }\n } else {\n fontAliases[hash] = {\n fontID: this.idFactory.createFontId(),\n };\n }\n\n if (fontRefIsRef) {\n fontAliases[hash].aliasRef = fontRef;\n }\n fontID = fontAliases[hash].fontID;\n }\n\n // Workaround for bad PDF generators that reference fonts incorrectly,\n // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\n // In this case we cannot put the font into `this.fontCache` (which is\n // a `RefSetCache`), since it's not possible to use a `Dict` as a key.\n //\n // However, if we don't cache the font it's not possible to remove it\n // when `cleanup` is triggered from the API, which causes issues on\n // subsequent rendering operations (see issue7403.pdf) and would force us\n // to unnecessarily load the same fonts over and over.\n //\n // Instead, we cheat a bit by using a modified `fontID` as a key in\n // `this.fontCache`, to allow the font to be cached.\n // NOTE: This works because `RefSetCache` calls `toString()` on provided\n // keys. Also, since `fontRef` is used when getting cached fonts,\n // we'll not accidentally match fonts cached with the `fontID`.\n if (fontRefIsRef) {\n this.fontCache.put(fontRef, fontCapability.promise);\n } else {\n if (!fontID) {\n fontID = this.idFactory.createFontId();\n }\n font.cacheKey = `cacheKey_${fontID}`;\n this.fontCache.put(font.cacheKey, fontCapability.promise);\n }\n assert(\n fontID && fontID.startsWith(\"f\"),\n 'The \"fontID\" must be (correctly) defined.'\n );\n\n // Keep track of each font we translated so the caller can\n // load them asynchronously before calling display on a page.\n font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n\n this.translateFont(preEvaluatedFont)\n .then(translatedFont => {\n if (translatedFont.fontType !== undefined) {\n xref.stats.addFontType(translatedFont.fontType);\n }\n\n fontCapability.resolve(\n new TranslatedFont({\n loadedName: font.loadedName,\n font: translatedFont,\n dict: font,\n evaluatorOptions: this.options,\n })\n );\n })\n .catch(reason => {\n // TODO fontCapability.reject?\n // Error in the font data -- sending unsupported feature notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontTranslate,\n });\n warn(`loadFont - translateFont failed: \"${reason}\".`);\n\n try {\n // error, but it's still nice to have font type reported\n const fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n const subtype = fontFile3 && fontFile3.get(\"Subtype\");\n const fontType = getFontType(\n preEvaluatedFont.type,\n subtype && subtype.name\n );\n if (fontType !== undefined) {\n xref.stats.addFontType(fontType);\n }\n } catch (ex) {}\n\n fontCapability.resolve(\n new TranslatedFont({\n loadedName: font.loadedName,\n font: new ErrorFont(\n reason instanceof Error ? reason.message : reason\n ),\n dict: font,\n evaluatorOptions: this.options,\n })\n );\n });\n return fontCapability.promise;\n }\n\n buildPath(operatorList, fn, args, parsingText = false) {\n const lastIndex = operatorList.length - 1;\n if (!args) {\n args = [];\n }\n if (\n lastIndex < 0 ||\n operatorList.fnArray[lastIndex] !== OPS.constructPath\n ) {\n // Handle corrupt PDF documents that contains path operators inside of\n // text objects, which may shift subsequent text, by enclosing the path\n // operator in save/restore operators (fixes issue10542_reduced.pdf).\n //\n // Note that this will effectively disable the optimization in the\n // `else` branch below, but given that this type of corruption is\n // *extremely* rare that shouldn't really matter much in practice.\n if (parsingText) {\n warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n operatorList.addOp(OPS.save, null);\n }\n\n operatorList.addOp(OPS.constructPath, [[fn], args]);\n\n if (parsingText) {\n operatorList.addOp(OPS.restore, null);\n }\n } else {\n const opArgs = operatorList.argsArray[lastIndex];\n opArgs[0].push(fn);\n Array.prototype.push.apply(opArgs[1], args);\n }\n }\n\n parseColorSpace({ cs, resources, localColorSpaceCache }) {\n return ColorSpace.parseAsync({\n cs,\n xref: this.xref,\n resources,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the ColorSpace -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorColorSpace,\n });\n warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n return null;\n }\n throw reason;\n });\n }\n\n parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n }) {\n // Shadings and patterns may be referenced by the same name but the resource\n // dictionary could be different so we can't use the name for the cache key.\n let id = localShadingPatternCache.get(shading);\n if (!id) {\n var shadingFill = Pattern.parseShading(\n shading,\n this.xref,\n resources,\n this.handler,\n this._pdfFunctionFactory,\n localColorSpaceCache\n );\n const patternIR = shadingFill.getIR();\n id = `pattern_${this.idFactory.createObjId()}`;\n localShadingPatternCache.set(shading, id);\n this.handler.send(\"obj\", [id, this.pageIndex, \"Pattern\", patternIR]);\n }\n return id;\n }\n\n handleColorN(\n operatorList,\n fn,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n ) {\n // compile tiling patterns\n const patternName = args.pop();\n // SCN/scn applies patterns along with normal colors\n if (patternName instanceof Name) {\n const rawPattern = patterns.getRaw(patternName.name);\n\n const localTilingPattern =\n rawPattern instanceof Ref &&\n localTilingPatternCache.getByRef(rawPattern);\n if (localTilingPattern) {\n try {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n const tilingPatternIR = getTilingPatternIR(\n localTilingPattern.operatorListIR,\n localTilingPattern.dict,\n color\n );\n operatorList.addOp(fn, tilingPatternIR);\n return undefined;\n } catch (ex) {\n // Handle any errors during normal TilingPattern parsing.\n }\n }\n\n const pattern = this.xref.fetchIfRef(rawPattern);\n if (pattern) {\n const dict = pattern instanceof BaseStream ? pattern.dict : pattern;\n const typeNum = dict.get(\"PatternType\");\n\n if (typeNum === PatternType.TILING) {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n return this.handleTilingType(\n fn,\n color,\n resources,\n pattern,\n dict,\n operatorList,\n task,\n localTilingPatternCache\n );\n } else if (typeNum === PatternType.SHADING) {\n const shading = dict.get(\"Shading\");\n const matrix = dict.getArray(\"Matrix\");\n const objId = this.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n });\n operatorList.addOp(fn, [\"Shading\", objId, matrix]);\n return undefined;\n }\n throw new FormatError(`Unknown PatternType: ${typeNum}`);\n }\n }\n throw new FormatError(`Unknown PatternName: ${patternName}`);\n }\n\n _parseVisibilityExpression(array, nestingCounter, currentResult) {\n const MAX_NESTING = 10;\n if (++nestingCounter > MAX_NESTING) {\n warn(\"Visibility expression is too deeply nested\");\n return;\n }\n const length = array.length;\n const operator = this.xref.fetchIfRef(array[0]);\n if (length < 2 || !(operator instanceof Name)) {\n warn(\"Invalid visibility expression\");\n return;\n }\n switch (operator.name) {\n case \"And\":\n case \"Or\":\n case \"Not\":\n currentResult.push(operator.name);\n break;\n default:\n warn(`Invalid operator ${operator.name} in visibility expression`);\n return;\n }\n for (let i = 1; i < length; i++) {\n const raw = array[i];\n const object = this.xref.fetchIfRef(raw);\n if (Array.isArray(object)) {\n const nestedResult = [];\n currentResult.push(nestedResult);\n // Recursively parse a subarray.\n this._parseVisibilityExpression(object, nestingCounter, nestedResult);\n } else if (raw instanceof Ref) {\n // Reference to an OCG dictionary.\n currentResult.push(raw.toString());\n }\n }\n }\n\n async parseMarkedContentProps(contentProperties, resources) {\n let optionalContent;\n if (contentProperties instanceof Name) {\n const properties = resources.get(\"Properties\");\n optionalContent = properties.get(contentProperties.name);\n } else if (contentProperties instanceof Dict) {\n optionalContent = contentProperties;\n } else {\n throw new FormatError(\"Optional content properties malformed.\");\n }\n\n const optionalContentType = optionalContent.get(\"Type\").name;\n if (optionalContentType === \"OCG\") {\n return {\n type: optionalContentType,\n id: optionalContent.objId,\n };\n } else if (optionalContentType === \"OCMD\") {\n const expression = optionalContent.get(\"VE\");\n if (Array.isArray(expression)) {\n const result = [];\n this._parseVisibilityExpression(expression, 0, result);\n if (result.length > 0) {\n return {\n type: \"OCMD\",\n expression: result,\n };\n }\n }\n\n const optionalContentGroups = optionalContent.get(\"OCGs\");\n if (\n Array.isArray(optionalContentGroups) ||\n optionalContentGroups instanceof Dict\n ) {\n const groupIds = [];\n if (Array.isArray(optionalContentGroups)) {\n for (const ocg of optionalContentGroups) {\n groupIds.push(ocg.toString());\n }\n } else {\n // Dictionary, just use the obj id.\n groupIds.push(optionalContentGroups.objId);\n }\n\n return {\n type: optionalContentType,\n ids: groupIds,\n policy:\n optionalContent.get(\"P\") instanceof Name\n ? optionalContent.get(\"P\").name\n : null,\n expression: null,\n };\n } else if (optionalContentGroups instanceof Ref) {\n return {\n type: optionalContentType,\n id: optionalContentGroups.toString(),\n };\n }\n }\n return null;\n }\n\n getOperatorList({\n stream,\n task,\n resources,\n operatorList,\n initialState = null,\n fallbackFontDict = null,\n }) {\n // Ensure that `resources`/`initialState` is correctly initialized,\n // even if the provided parameter is e.g. `null`.\n resources = resources || Dict.empty;\n initialState = initialState || new EvalState();\n\n if (!operatorList) {\n throw new Error('getOperatorList: missing \"operatorList\" parameter');\n }\n\n const self = this;\n const xref = this.xref;\n let parsingText = false;\n const localImageCache = new LocalImageCache();\n const localColorSpaceCache = new LocalColorSpaceCache();\n const localGStateCache = new LocalGStateCache();\n const localTilingPatternCache = new LocalTilingPatternCache();\n const localShadingPatternCache = new Map();\n\n const xobjs = resources.get(\"XObject\") || Dict.empty;\n const patterns = resources.get(\"Pattern\") || Dict.empty;\n const stateManager = new StateManager(initialState);\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n const timeSlotManager = new TimeSlotManager();\n\n function closePendingRestoreOPS(argument) {\n for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n operatorList.addOp(OPS.restore, []);\n }\n }\n\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n Promise.all([promise, operatorList.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n\n const operation = {};\n let stop, i, ii, cs, name, isValidName;\n while (!(stop = timeSlotManager.check())) {\n // The arguments parsed by read() are used beyond this loop, so we\n // cannot reuse the same array on each iteration. Therefore we pass\n // in |null| as the initial value (see the comment on\n // EvaluatorPreprocessor_read() for why).\n operation.args = null;\n if (!preprocessor.read(operation)) {\n break;\n }\n let args = operation.args;\n let fn = operation.fn;\n\n switch (fn | 0) {\n case OPS.paintXObject:\n // eagerly compile XForm objects\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName) {\n const localImage = localImageCache.getByName(name);\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n args = null;\n continue;\n }\n }\n\n next(\n new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n const localImage = localImageCache.getByRef(xobj);\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n\n resolveXObject();\n return;\n }\n\n const globalImage = self.globalImageCache.getData(\n xobj,\n self.pageIndex\n );\n if (globalImage) {\n operatorList.addDependency(globalImage.objId);\n operatorList.addOp(globalImage.fn, globalImage.args);\n\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n\n const type = xobj.dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name === \"Form\") {\n stateManager.save();\n self\n .buildFormXObject(\n resources,\n xobj,\n null,\n operatorList,\n task,\n stateManager.state.clone(),\n localColorSpaceCache\n )\n .then(function () {\n stateManager.restore();\n resolveXObject();\n }, rejectXObject);\n return;\n } else if (type.name === \"Image\") {\n self\n .buildPaintImageXObject({\n resources,\n image: xobj,\n operatorList,\n cacheKey: name,\n localImageCache,\n localColorSpaceCache,\n })\n .then(resolveXObject, rejectXObject);\n return;\n } else if (type.name === \"PS\") {\n // PostScript XObjects are unused when viewing documents.\n // See section 4.7.1 of Adobe's PDF reference.\n info(\"Ignored XObject subtype PS\");\n } else {\n throw new FormatError(\n `Unhandled XObject subtype ${type.name}`\n );\n }\n resolveXObject();\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the XObject -- sending unsupported feature\n // notification and allow rendering to continue.\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorXObject,\n });\n warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.setFont:\n var fontSize = args[1];\n // eagerly collect all fonts\n next(\n self\n .handleSetFont(\n resources,\n args,\n null,\n operatorList,\n task,\n stateManager.state,\n fallbackFontDict\n )\n .then(function (loadedName) {\n operatorList.addDependency(loadedName);\n operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n })\n );\n return;\n case OPS.beginText:\n parsingText = true;\n break;\n case OPS.endText:\n parsingText = false;\n break;\n case OPS.endInlineImage:\n var cacheKey = args[0].cacheKey;\n if (cacheKey) {\n const localImage = localImageCache.getByName(cacheKey);\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n args = null;\n continue;\n }\n }\n next(\n self.buildPaintImageXObject({\n resources,\n image: args[0],\n isInline: true,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache,\n })\n );\n return;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n args[0] = self.handleText(args[0], stateManager.state);\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n var arr = args[0];\n var combinedGlyphs = [];\n var arrLength = arr.length;\n var state = stateManager.state;\n for (i = 0; i < arrLength; ++i) {\n const arrItem = arr[i];\n if (typeof arrItem === \"string\") {\n Array.prototype.push.apply(\n combinedGlyphs,\n self.handleText(arrItem, state)\n );\n } else if (typeof arrItem === \"number\") {\n combinedGlyphs.push(arrItem);\n }\n }\n args[0] = combinedGlyphs;\n fn = OPS.showText;\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.setTextRenderingMode:\n stateManager.state.textRenderingMode = args[0];\n break;\n\n case OPS.setFillColorSpace: {\n const cachedColorSpace = ColorSpace.getCached(\n args[0],\n xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n stateManager.state.fillColorSpace = cachedColorSpace;\n continue;\n }\n\n next(\n self\n .parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache,\n })\n .then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.fillColorSpace = colorSpace;\n }\n })\n );\n return;\n }\n case OPS.setStrokeColorSpace: {\n const cachedColorSpace = ColorSpace.getCached(\n args[0],\n xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n stateManager.state.strokeColorSpace = cachedColorSpace;\n continue;\n }\n\n next(\n self\n .parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache,\n })\n .then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.strokeColorSpace = colorSpace;\n }\n })\n );\n return;\n }\n case OPS.setFillColor:\n cs = stateManager.state.fillColorSpace;\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColor:\n cs = stateManager.state.strokeColorSpace;\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillGray:\n stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeGray:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillCMYKColor:\n stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeCMYKColor:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillRGBColor:\n stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n args = ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n case OPS.setStrokeRGBColor:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n args = ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n case OPS.setFillColorN:\n cs = stateManager.state.fillColorSpace;\n if (cs.name === \"Pattern\") {\n next(\n self.handleColorN(\n operatorList,\n OPS.setFillColorN,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n )\n );\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColorN:\n cs = stateManager.state.strokeColorSpace;\n if (cs.name === \"Pattern\") {\n next(\n self.handleColorN(\n operatorList,\n OPS.setStrokeColorN,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n )\n );\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n\n case OPS.shadingFill:\n var shadingRes = resources.get(\"Shading\");\n if (!shadingRes) {\n throw new FormatError(\"No shading resource found\");\n }\n\n var shading = shadingRes.get(args[0].name);\n if (!shading) {\n throw new FormatError(\"No shading object found\");\n }\n const patternId = self.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n });\n args = [patternId];\n fn = OPS.shadingFill;\n break;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName) {\n const localGStateObj = localGStateCache.getByName(name);\n if (localGStateObj) {\n if (localGStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [localGStateObj]);\n }\n args = null;\n continue;\n }\n }\n\n next(\n new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n\n const gState = extGState.get(name);\n // TODO: Attempt to lookup cached GStates by reference as well,\n // if and only if there are PDF documents where doing so\n // would significantly improve performance.\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n\n self\n .setGState({\n resources,\n gState,\n operatorList,\n cacheKey: name,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n })\n .then(resolveGState, rejectGState);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the ExtGState -- sending unsupported feature\n // notification and allow parsing/rendering to continue.\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorExtGState,\n });\n warn(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.moveTo:\n case OPS.lineTo:\n case OPS.curveTo:\n case OPS.curveTo2:\n case OPS.curveTo3:\n case OPS.closePath:\n case OPS.rectangle:\n self.buildPath(operatorList, fn, args, parsingText);\n continue;\n case OPS.markPoint:\n case OPS.markPointProps:\n case OPS.beginCompat:\n case OPS.endCompat:\n // Ignore operators where the corresponding handlers are known to\n // be no-op in CanvasGraphics (display/canvas.js). This prevents\n // serialization errors and is also a bit more efficient.\n // We could also try to serialize all objects in a general way,\n // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266,\n // but doing so is meaningless without knowing the semantics.\n continue;\n case OPS.beginMarkedContentProps:\n if (!(args[0] instanceof Name)) {\n warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n continue;\n }\n if (args[0].name === \"OC\") {\n next(\n self\n .parseMarkedContentProps(args[1], resources)\n .then(data => {\n operatorList.addOp(OPS.beginMarkedContentProps, [\n \"OC\",\n data,\n ]);\n })\n .catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorMarkedContent,\n });\n warn(\n `getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`\n );\n return;\n }\n throw reason;\n })\n );\n return;\n }\n // Other marked content types aren't supported yet.\n args = [\n args[0].name,\n args[1] instanceof Dict ? args[1].get(\"MCID\") : null,\n ];\n\n break;\n case OPS.beginMarkedContent:\n case OPS.endMarkedContent:\n default:\n // Note: Ignore the operator if it has `Dict` arguments, since\n // those are non-serializable, otherwise postMessage will throw\n // \"An object could not be cloned.\".\n if (args !== null) {\n for (i = 0, ii = args.length; i < ii; i++) {\n if (args[i] instanceof Dict) {\n break;\n }\n }\n if (i < ii) {\n warn(\"getOperatorList - ignoring operator: \" + fn);\n continue;\n }\n }\n }\n operatorList.addOp(fn, args);\n }\n if (stop) {\n next(deferred);\n return;\n }\n // Some PDFs don't close all restores inside object/form.\n // Closing those for them.\n closePendingRestoreOPS();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the OperatorList -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n });\n warn(\n `getOperatorList - ignoring errors during \"${task.name}\" ` +\n `task: \"${reason}\".`\n );\n\n closePendingRestoreOPS();\n return;\n }\n throw reason;\n });\n }\n\n getTextContent({\n stream,\n task,\n resources,\n stateManager = null,\n combineTextItems = false,\n includeMarkedContent = false,\n sink,\n seenStyles = new Set(),\n viewBox,\n }) {\n // Ensure that `resources`/`stateManager` is correctly initialized,\n // even if the provided parameter is e.g. `null`.\n resources = resources || Dict.empty;\n stateManager = stateManager || new StateManager(new TextState());\n\n const NormalizedUnicodes = getNormalizedUnicodes();\n\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n const textContentItem = {\n initialized: false,\n str: [],\n totalWidth: 0,\n totalHeight: 0,\n width: 0,\n height: 0,\n vertical: false,\n prevTransform: null,\n textAdvanceScale: 0,\n spaceInFlowMin: 0,\n spaceInFlowMax: 0,\n trackingSpaceMin: Infinity,\n negativeSpaceMax: -Infinity,\n transform: null,\n fontName: null,\n hasEOL: false,\n };\n\n // Used in addFakeSpaces.\n\n // A white <= fontSize * TRACKING_SPACE_FACTOR is a tracking space\n // so it doesn't count as a space.\n const TRACKING_SPACE_FACTOR = 0.1;\n\n // A negative white < fontSize * NEGATIVE_SPACE_FACTOR induces\n // a break (a new chunk of text is created).\n // It doesn't change anything when the text is copied but\n // it improves potential mismatch between text layer and canvas.\n const NEGATIVE_SPACE_FACTOR = -0.2;\n\n // A white with a width in [fontSize * MIN_FACTOR; fontSize * MAX_FACTOR]\n // is a space which will be inserted in the current flow of words.\n // If the width is outside of this range then the flow is broken\n // (which means a new span in the text layer).\n // It's useful to adjust the best as possible the span in the layer\n // to what is displayed in the canvas.\n const SPACE_IN_FLOW_MIN_FACTOR = 0.1;\n const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\n\n const self = this;\n const xref = this.xref;\n const showSpacedTextBuffer = [];\n\n // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n let xobjs = null;\n const emptyXObjectCache = new LocalImageCache();\n const emptyGStateCache = new LocalGStateCache();\n\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n let textState;\n\n function getCurrentTextTransform() {\n // 9.4.4 Text Space Details\n const font = textState.font;\n const tsm = [\n textState.fontSize * textState.textHScale,\n 0,\n 0,\n textState.fontSize,\n 0,\n textState.textRise,\n ];\n\n if (\n font.isType3Font &&\n (textState.fontSize <= 1 || font.isCharBBox) &&\n !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)\n ) {\n const glyphHeight = font.bbox[3] - font.bbox[1];\n if (glyphHeight > 0) {\n tsm[3] *= glyphHeight * textState.fontMatrix[3];\n }\n }\n\n return Util.transform(\n textState.ctm,\n Util.transform(textState.textMatrix, tsm)\n );\n }\n\n function ensureTextContentItem() {\n if (textContentItem.initialized) {\n return textContentItem;\n }\n const font = textState.font,\n loadedName = font.loadedName;\n if (!seenStyles.has(loadedName)) {\n seenStyles.add(loadedName);\n\n textContent.styles[loadedName] = {\n fontFamily: font.fallbackName,\n ascent: font.ascent,\n descent: font.descent,\n vertical: font.vertical,\n };\n }\n textContentItem.fontName = loadedName;\n\n const trm = (textContentItem.transform = getCurrentTextTransform());\n if (!font.vertical) {\n textContentItem.width = textContentItem.totalWidth = 0;\n textContentItem.height = textContentItem.totalHeight = Math.hypot(\n trm[2],\n trm[3]\n );\n textContentItem.vertical = false;\n } else {\n textContentItem.width = textContentItem.totalWidth = Math.hypot(\n trm[0],\n trm[1]\n );\n textContentItem.height = textContentItem.totalHeight = 0;\n textContentItem.vertical = true;\n }\n\n const scaleLineX = Math.hypot(\n textState.textLineMatrix[0],\n textState.textLineMatrix[1]\n );\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n\n textContentItem.trackingSpaceMin =\n textState.fontSize * TRACKING_SPACE_FACTOR;\n textContentItem.negativeSpaceMax =\n textState.fontSize * NEGATIVE_SPACE_FACTOR;\n textContentItem.spaceInFlowMin =\n textState.fontSize * SPACE_IN_FLOW_MIN_FACTOR;\n textContentItem.spaceInFlowMax =\n textState.fontSize * SPACE_IN_FLOW_MAX_FACTOR;\n\n textContentItem.hasEOL = false;\n\n textContentItem.initialized = true;\n return textContentItem;\n }\n\n function updateAdvanceScale() {\n if (!textContentItem.initialized) {\n return;\n }\n\n const scaleLineX = Math.hypot(\n textState.textLineMatrix[0],\n textState.textLineMatrix[1]\n );\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n const scaleFactor = scaleCtmX * scaleLineX;\n if (scaleFactor === textContentItem.textAdvanceScale) {\n return;\n }\n\n if (!textContentItem.vertical) {\n textContentItem.totalWidth +=\n textContentItem.width * textContentItem.textAdvanceScale;\n textContentItem.width = 0;\n } else {\n textContentItem.totalHeight +=\n textContentItem.height * textContentItem.textAdvanceScale;\n textContentItem.height = 0;\n }\n\n textContentItem.textAdvanceScale = scaleFactor;\n }\n\n function runBidiTransform(textChunk) {\n const text = textChunk.str.join(\"\");\n const bidiResult = bidi(text, -1, textChunk.vertical);\n return {\n str: bidiResult.str,\n dir: bidiResult.dir,\n width: Math.abs(textChunk.totalWidth),\n height: Math.abs(textChunk.totalHeight),\n transform: textChunk.transform,\n fontName: textChunk.fontName,\n hasEOL: textChunk.hasEOL,\n };\n }\n\n function handleSetFont(fontName, fontRef) {\n return self\n .loadFont(fontName, fontRef, resources)\n .then(function (translated) {\n if (!translated.font.isType3Font) {\n return translated;\n }\n return translated\n .loadType3Data(self, resources, task)\n .catch(function () {\n // Ignore Type3-parsing errors, since we only use `loadType3Data`\n // here to ensure that we'll always obtain a useful /FontBBox.\n })\n .then(function () {\n return translated;\n });\n })\n .then(function (translated) {\n textState.font = translated.font;\n textState.fontMatrix =\n translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n });\n }\n\n function applyInverseRotation(x, y, matrix) {\n const scale = Math.hypot(matrix[0], matrix[1]);\n return [\n (matrix[0] * x + matrix[1] * y) / scale,\n (matrix[2] * x + matrix[3] * y) / scale,\n ];\n }\n\n function compareWithLastPosition() {\n const currentTransform = getCurrentTextTransform();\n let posX = currentTransform[4];\n let posY = currentTransform[5];\n\n const shiftedX = posX - viewBox[0];\n const shiftedY = posY - viewBox[1];\n\n if (\n shiftedX < 0 ||\n shiftedX > viewBox[2] ||\n shiftedY < 0 ||\n shiftedY > viewBox[3]\n ) {\n return false;\n }\n\n if (\n !combineTextItems ||\n !textState.font ||\n !textContentItem.prevTransform\n ) {\n return true;\n }\n\n let lastPosX = textContentItem.prevTransform[4];\n let lastPosY = textContentItem.prevTransform[5];\n\n if (lastPosX === posX && lastPosY === posY) {\n return true;\n }\n\n let rotate = -1;\n // Take into account the rotation is the current transform.\n if (\n currentTransform[0] &&\n currentTransform[1] === 0 &&\n currentTransform[2] === 0\n ) {\n rotate = currentTransform[0] > 0 ? 0 : 180;\n } else if (\n currentTransform[1] &&\n currentTransform[0] === 0 &&\n currentTransform[3] === 0\n ) {\n rotate = currentTransform[1] > 0 ? 90 : 270;\n }\n\n switch (rotate) {\n case 0:\n break;\n case 90:\n [posX, posY] = [posY, posX];\n [lastPosX, lastPosY] = [lastPosY, lastPosX];\n break;\n case 180:\n [posX, posY, lastPosX, lastPosY] = [\n -posX,\n -posY,\n -lastPosX,\n -lastPosY,\n ];\n break;\n case 270:\n [posX, posY] = [-posY, -posX];\n [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\n break;\n default:\n // This is not a 0, 90, 180, 270 rotation so:\n // - remove the scale factor from the matrix to get a rotation matrix\n // - apply the inverse (which is the transposed) to the positions\n // and we can then compare positions of the glyphes to detect\n // a whitespace.\n [posX, posY] = applyInverseRotation(posX, posY, currentTransform);\n [lastPosX, lastPosY] = applyInverseRotation(\n lastPosX,\n lastPosY,\n textContentItem.prevTransform\n );\n }\n\n if (textState.font.vertical) {\n const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;\n const advanceX = posX - lastPosX;\n\n // When the total height of the current chunk is negative\n // then we're writing from bottom to top.\n const textOrientation = Math.sign(textContentItem.height);\n if (advanceY < textOrientation * textContentItem.negativeSpaceMax) {\n if (\n Math.abs(advanceX) >\n 0.5 * textContentItem.width /* not the same column */\n ) {\n appendEOL();\n return true;\n }\n\n flushTextContentItem();\n return true;\n }\n\n if (Math.abs(advanceX) > textContentItem.width) {\n appendEOL();\n return true;\n }\n if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) {\n textContentItem.height += advanceY;\n } else if (\n !addFakeSpaces(\n advanceY,\n textContentItem.prevTransform,\n textOrientation\n )\n ) {\n if (textContentItem.str.length === 0) {\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width: 0,\n height: Math.abs(advanceY),\n transform: textContentItem.prevTransform,\n fontName: textContentItem.fontName,\n hasEOL: false,\n });\n } else {\n textContentItem.height += advanceY;\n }\n }\n\n return true;\n }\n\n const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;\n const advanceY = posY - lastPosY;\n\n // When the total width of the current chunk is negative\n // then we're writing from right to left.\n const textOrientation = Math.sign(textContentItem.width);\n if (advanceX < textOrientation * textContentItem.negativeSpaceMax) {\n if (\n Math.abs(advanceY) >\n 0.5 * textContentItem.height /* not the same line */\n ) {\n appendEOL();\n return true;\n }\n flushTextContentItem();\n return true;\n }\n\n if (Math.abs(advanceY) > textContentItem.height) {\n appendEOL();\n return true;\n }\n\n if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) {\n textContentItem.width += advanceX;\n } else if (\n !addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)\n ) {\n if (textContentItem.str.length === 0) {\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width: Math.abs(advanceX),\n height: 0,\n transform: textContentItem.prevTransform,\n fontName: textContentItem.fontName,\n hasEOL: false,\n });\n } else {\n textContentItem.width += advanceX;\n }\n }\n\n return true;\n }\n\n function buildTextContentItem({ chars, extraSpacing }) {\n const font = textState.font;\n if (!chars) {\n // Just move according to the space we have.\n const charSpacing = textState.charSpacing + extraSpacing;\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n\n return;\n }\n\n const glyphs = font.charsToGlyphs(chars);\n const scale = textState.fontMatrix[0] * textState.fontSize;\n\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const glyph = glyphs[i];\n if (glyph.isInvisibleFormatMark) {\n continue;\n }\n let charSpacing =\n textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);\n\n let glyphWidth = glyph.width;\n if (font.vertical) {\n glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\n }\n let scaledDim = glyphWidth * scale;\n\n if (\n glyph.isWhitespace &&\n (i === 0 ||\n i + 1 === ii ||\n glyphs[i - 1].isWhitespace ||\n glyphs[i + 1].isWhitespace ||\n extraSpacing)\n ) {\n // Don't push a \" \" in the textContentItem\n // (except when it's between two non-spaces chars),\n // it will be done (if required) in next call to\n // compareWithLastPosition.\n // This way we can merge real spaces and spaces due to cursor moves.\n if (!font.vertical) {\n charSpacing += scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n charSpacing += -scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(0, -charSpacing);\n }\n continue;\n }\n\n if (!compareWithLastPosition()) {\n // The glyph is not in page so just skip it.\n continue;\n }\n\n // Must be called after compareWithLastPosition because\n // the textContentItem could have been flushed.\n const textChunk = ensureTextContentItem();\n if (glyph.isZeroWidthDiacritic) {\n scaledDim = 0;\n }\n\n if (!font.vertical) {\n scaledDim *= textState.textHScale;\n textState.translateTextMatrix(scaledDim, 0);\n textChunk.width += scaledDim;\n } else {\n textState.translateTextMatrix(0, scaledDim);\n scaledDim = Math.abs(scaledDim);\n textChunk.height += scaledDim;\n }\n\n if (scaledDim) {\n // Save the position of the last visible character.\n textChunk.prevTransform = getCurrentTextTransform();\n }\n\n if (glyph.isWhitespace) {\n // Replaces all whitespaces with standard spaces (0x20), to avoid\n // alignment issues between the textLayer and the canvas if the text\n // contains e.g. tabs (fixes issue6612.pdf).\n textChunk.str.push(\" \");\n } else {\n let glyphUnicode = glyph.unicode;\n glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;\n glyphUnicode = reverseIfRtl(glyphUnicode);\n textChunk.str.push(glyphUnicode);\n }\n\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n }\n }\n\n function appendEOL() {\n if (textContentItem.initialized) {\n textContentItem.hasEOL = true;\n flushTextContentItem();\n } else {\n textContent.items.push({\n str: \"\",\n dir: \"ltr\",\n width: 0,\n height: 0,\n transform: getCurrentTextTransform(),\n fontName: textState.font.loadedName,\n hasEOL: true,\n });\n }\n }\n\n function addFakeSpaces(width, transf, textOrientation) {\n if (\n textOrientation * textContentItem.spaceInFlowMin <= width &&\n width <= textOrientation * textContentItem.spaceInFlowMax\n ) {\n if (textContentItem.initialized) {\n textContentItem.str.push(\" \");\n }\n return false;\n }\n\n const fontName = textContentItem.fontName;\n\n let height = 0;\n if (textContentItem.vertical) {\n height = width;\n width = 0;\n }\n\n flushTextContentItem();\n textContent.items.push({\n str: \" \",\n // TODO: check if using the orientation from last chunk is\n // better or not.\n dir: \"ltr\",\n width: Math.abs(width),\n height: Math.abs(height),\n transform: transf || getCurrentTextTransform(),\n fontName,\n hasEOL: false,\n });\n\n return true;\n }\n\n function flushTextContentItem() {\n if (!textContentItem.initialized || !textContentItem.str) {\n return;\n }\n\n // Do final text scaling.\n if (!textContentItem.vertical) {\n textContentItem.totalWidth +=\n textContentItem.width * textContentItem.textAdvanceScale;\n } else {\n textContentItem.totalHeight +=\n textContentItem.height * textContentItem.textAdvanceScale;\n }\n\n textContent.items.push(runBidiTransform(textContentItem));\n textContentItem.initialized = false;\n textContentItem.str.length = 0;\n }\n\n function enqueueChunk(batch = false) {\n const length = textContent.items.length;\n if (length === 0) {\n return;\n }\n if (batch && length < TEXT_CHUNK_BATCH_SIZE) {\n return;\n }\n sink.enqueue(textContent, length);\n textContent.items = [];\n textContent.styles = Object.create(null);\n }\n\n const timeSlotManager = new TimeSlotManager();\n\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n enqueueChunk(/* batch = */ true);\n Promise.all([promise, sink.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n\n const operation = {};\n let stop,\n args = [];\n while (!(stop = timeSlotManager.check())) {\n // The arguments parsed by read() are not used beyond this loop, so\n // we can reuse the same array on every iteration, thus avoiding\n // unnecessary allocations.\n args.length = 0;\n operation.args = args;\n if (!preprocessor.read(operation)) {\n break;\n }\n textState = stateManager.state;\n const fn = operation.fn;\n args = operation.args;\n\n switch (fn | 0) {\n case OPS.setFont:\n // Optimization to ignore multiple identical Tf commands.\n var fontNameArg = args[0].name,\n fontSizeArg = args[1];\n if (\n textState.font &&\n fontNameArg === textState.fontName &&\n fontSizeArg === textState.fontSize\n ) {\n break;\n }\n\n flushTextContentItem();\n textState.fontName = fontNameArg;\n textState.fontSize = fontSizeArg;\n next(handleSetFont(fontNameArg, null));\n return;\n case OPS.setTextRise:\n textState.textRise = args[0];\n break;\n case OPS.setHScale:\n textState.textHScale = args[0] / 100;\n break;\n case OPS.setLeading:\n textState.leading = args[0];\n break;\n case OPS.moveText:\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.setLeadingMoveText:\n textState.leading = -args[1];\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.nextLine:\n textState.carriageReturn();\n break;\n case OPS.setTextMatrix:\n textState.setTextMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n textState.setTextLineMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n updateAdvanceScale();\n break;\n case OPS.setCharSpacing:\n textState.charSpacing = args[0];\n break;\n case OPS.setWordSpacing:\n textState.wordSpacing = args[0];\n break;\n case OPS.beginText:\n textState.textMatrix = IDENTITY_MATRIX.slice();\n textState.textLineMatrix = IDENTITY_MATRIX.slice();\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n const spaceFactor =\n ((textState.font.vertical ? 1 : -1) * textState.fontSize) / 1000;\n const elements = args[0];\n for (let i = 0, ii = elements.length; i < ii - 1; i++) {\n const item = elements[i];\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n } else if (typeof item === \"number\" && item !== 0) {\n // PDF Specification 5.3.2 states:\n // The number is expressed in thousandths of a unit of text\n // space.\n // This amount is subtracted from the current horizontal or\n // vertical coordinate, depending on the writing mode.\n // In the default coordinate system, a positive adjustment\n // has the effect of moving the next glyph painted either to\n // the left or down by the given amount.\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: item * spaceFactor,\n });\n }\n }\n\n const item = elements[elements.length - 1];\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n }\n\n if (showSpacedTextBuffer.length > 0) {\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: 0,\n });\n }\n break;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0,\n });\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0,\n });\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.wordSpacing = args[0];\n textState.charSpacing = args[1];\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[2],\n extraSpacing: 0,\n });\n break;\n case OPS.paintXObject:\n flushTextContentItem();\n if (!xobjs) {\n xobjs = resources.get(\"XObject\") || Dict.empty;\n }\n\n var isValidName = args[0] instanceof Name;\n var name = args[0].name;\n\n if (isValidName && emptyXObjectCache.getByName(name)) {\n break;\n }\n\n next(\n new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n if (emptyXObjectCache.getByRef(xobj)) {\n resolveXObject();\n return;\n }\n\n const globalImage = self.globalImageCache.getData(\n xobj,\n self.pageIndex\n );\n if (globalImage) {\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n\n const type = xobj.dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name !== \"Form\") {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n\n resolveXObject();\n return;\n }\n\n // Use a new `StateManager` to prevent incorrect positioning\n // of textItems *after* the Form XObject, since errors in the\n // data can otherwise prevent `restore` operators from\n // executing.\n // NOTE: Only an issue when `options.ignoreErrors === true`.\n const currentState = stateManager.state.clone();\n const xObjStateManager = new StateManager(currentState);\n\n const matrix = xobj.dict.getArray(\"Matrix\");\n if (Array.isArray(matrix) && matrix.length === 6) {\n xObjStateManager.transform(matrix);\n }\n\n // Enqueue the `textContent` chunk before parsing the /Form\n // XObject.\n enqueueChunk();\n const sinkWrapper = {\n enqueueInvoked: false,\n\n enqueue(chunk, size) {\n this.enqueueInvoked = true;\n sink.enqueue(chunk, size);\n },\n\n get desiredSize() {\n return sink.desiredSize;\n },\n\n get ready() {\n return sink.ready;\n },\n };\n\n self\n .getTextContent({\n stream: xobj,\n task,\n resources: xobj.dict.get(\"Resources\") || resources,\n stateManager: xObjStateManager,\n combineTextItems,\n includeMarkedContent,\n sink: sinkWrapper,\n seenStyles,\n viewBox,\n })\n .then(function () {\n if (!sinkWrapper.enqueueInvoked) {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n }\n resolveXObject();\n }, rejectXObject);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the XObject -- allow text-extraction to\n // continue.\n warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName && emptyGStateCache.getByName(name)) {\n break;\n }\n\n next(\n new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n\n const gState = extGState.get(name);\n // TODO: Attempt to lookup cached GStates by reference as well,\n // if and only if there are PDF documents where doing so\n // would significantly improve performance.\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n\n const gStateFont = gState.get(\"Font\");\n if (!gStateFont) {\n emptyGStateCache.set(name, gState.objId, true);\n\n resolveGState();\n return;\n }\n flushTextContentItem();\n\n textState.fontName = null;\n textState.fontSize = gStateFont[1];\n handleSetFont(null, gStateFont[0]).then(\n resolveGState,\n rejectGState\n );\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the ExtGState -- allow text-extraction to\n // continue.\n warn(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.beginMarkedContent:\n if (includeMarkedContent) {\n textContent.items.push({\n type: \"beginMarkedContent\",\n tag: args[0] instanceof Name ? args[0].name : null,\n });\n }\n break;\n case OPS.beginMarkedContentProps:\n if (includeMarkedContent) {\n flushTextContentItem();\n let mcid = null;\n if (args[1] instanceof Dict) {\n mcid = args[1].get(\"MCID\");\n }\n textContent.items.push({\n type: \"beginMarkedContentProps\",\n id: Number.isInteger(mcid)\n ? `${self.idFactory.getPageObjId()}_mcid${mcid}`\n : null,\n tag: args[0] instanceof Name ? args[0].name : null,\n });\n }\n break;\n case OPS.endMarkedContent:\n if (includeMarkedContent) {\n flushTextContentItem();\n textContent.items.push({\n type: \"endMarkedContent\",\n });\n }\n break;\n } // switch\n if (textContent.items.length >= sink.desiredSize) {\n // Wait for ready, if we reach highWaterMark.\n stop = true;\n break;\n }\n } // while\n if (stop) {\n next(deferred);\n return;\n }\n flushTextContentItem();\n enqueueChunk();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the TextContent -- allow text-extraction to continue.\n warn(\n `getTextContent - ignoring errors during \"${task.name}\" ` +\n `task: \"${reason}\".`\n );\n\n flushTextContentItem();\n enqueueChunk();\n return;\n }\n throw reason;\n });\n }\n\n extractDataStructures(dict, baseDict, properties) {\n const xref = this.xref;\n let cidToGidBytes;\n // 9.10.2\n const toUnicodePromise = this.readToUnicode(\n properties.toUnicode || dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\")\n );\n\n if (properties.composite) {\n // CIDSystemInfo helps to match CID to glyphs\n const cidSystemInfo = dict.get(\"CIDSystemInfo\");\n if (cidSystemInfo instanceof Dict) {\n properties.cidSystemInfo = {\n registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n supplement: cidSystemInfo.get(\"Supplement\"),\n };\n }\n\n const cidToGidMap = dict.get(\"CIDToGIDMap\");\n if (cidToGidMap instanceof BaseStream) {\n cidToGidBytes = cidToGidMap.getBytes();\n }\n }\n\n // Based on 9.6.6 of the spec the encoding can come from multiple places\n // and depends on the font type. The base encoding and differences are\n // read here, but the encoding that is actually used is chosen during\n // glyph mapping in the font.\n // TODO: Loading the built in encoding in the font would allow the\n // differences to be merged in here not require us to hold on to it.\n const differences = [];\n let baseEncodingName = null;\n let encoding;\n if (dict.has(\"Encoding\")) {\n encoding = dict.get(\"Encoding\");\n if (encoding instanceof Dict) {\n baseEncodingName = encoding.get(\"BaseEncoding\");\n baseEncodingName =\n baseEncodingName instanceof Name ? baseEncodingName.name : null;\n // Load the differences between the base and original\n if (encoding.has(\"Differences\")) {\n const diffEncoding = encoding.get(\"Differences\");\n let index = 0;\n for (let j = 0, jj = diffEncoding.length; j < jj; j++) {\n const data = xref.fetchIfRef(diffEncoding[j]);\n if (typeof data === \"number\") {\n index = data;\n } else if (data instanceof Name) {\n differences[index++] = data.name;\n } else {\n throw new FormatError(\n `Invalid entry in 'Differences' array: ${data}`\n );\n }\n }\n }\n } else if (encoding instanceof Name) {\n baseEncodingName = encoding.name;\n } else {\n throw new FormatError(\"Encoding is not a Name nor a Dict\");\n }\n // According to table 114 if the encoding is a named encoding it must be\n // one of these predefined encodings.\n if (\n baseEncodingName !== \"MacRomanEncoding\" &&\n baseEncodingName !== \"MacExpertEncoding\" &&\n baseEncodingName !== \"WinAnsiEncoding\"\n ) {\n baseEncodingName = null;\n }\n }\n\n if (baseEncodingName) {\n properties.defaultEncoding = getEncoding(baseEncodingName);\n } else {\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n // According to \"Table 114\" in section \"9.6.6.1 General\" (under\n // \"9.6.6 Character Encoding\") of the PDF specification, a Nonsymbolic\n // font should use the `StandardEncoding` if no encoding is specified.\n encoding = StandardEncoding;\n if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n encoding = WinAnsiEncoding;\n }\n // The Symbolic attribute can be misused for regular fonts\n // Heuristic: we have to check if the font is a standard one also\n if (isSymbolicFont) {\n encoding = MacRomanEncoding;\n if (!properties.file || properties.isInternalFont) {\n if (/Symbol/i.test(properties.name)) {\n encoding = SymbolSetEncoding;\n } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n encoding = ZapfDingbatsEncoding;\n }\n }\n }\n properties.defaultEncoding = encoding;\n }\n\n properties.differences = differences;\n properties.baseEncodingName = baseEncodingName;\n properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n properties.dict = dict;\n return toUnicodePromise\n .then(readToUnicode => {\n properties.toUnicode = readToUnicode;\n return this.buildToUnicode(properties);\n })\n .then(builtToUnicode => {\n properties.toUnicode = builtToUnicode;\n if (cidToGidBytes) {\n properties.cidToGidMap = this.readCidToGidMap(\n cidToGidBytes,\n builtToUnicode\n );\n }\n return properties;\n });\n }\n\n /**\n * @returns {Array}\n * @private\n */\n _simpleFontToUnicode(properties, forceGlyphs = false) {\n assert(!properties.composite, \"Must be a simple font.\");\n\n const toUnicode = [];\n const encoding = properties.defaultEncoding.slice();\n const baseEncodingName = properties.baseEncodingName;\n // Merge in the differences array.\n const differences = properties.differences;\n for (const charcode in differences) {\n const glyphName = differences[charcode];\n if (glyphName === \".notdef\") {\n // Skip .notdef to prevent rendering errors, e.g. boxes appearing\n // where there should be spaces (fixes issue5256.pdf).\n continue;\n }\n encoding[charcode] = glyphName;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (const charcode in encoding) {\n // a) Map the character code to a character name.\n let glyphName = encoding[charcode];\n // b) Look up the character name in the Adobe Glyph List (see the\n // Bibliography) to obtain the corresponding Unicode value.\n if (glyphName === \"\") {\n continue;\n } else if (glyphsUnicodeMap[glyphName] === undefined) {\n // (undocumented) c) Few heuristics to recognize unknown glyphs\n // NOTE: Adobe Reader does not do this step, but OSX Preview does\n let code = 0;\n switch (glyphName[0]) {\n case \"G\": // Gxx glyph\n if (glyphName.length === 3) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"g\": // g00xx glyph\n if (glyphName.length === 5) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"C\": // Cdd{d} glyph\n case \"c\": // cdd{d} glyph\n if (glyphName.length >= 3 && glyphName.length <= 4) {\n const codeStr = glyphName.substring(1);\n\n if (forceGlyphs) {\n code = parseInt(codeStr, 16);\n break;\n }\n // Normally the Cdd{d}/cdd{d} glyphName format will contain\n // regular, i.e. base 10, charCodes (see issue4550.pdf)...\n code = +codeStr;\n\n // ... however some PDF generators violate that assumption by\n // containing glyph, i.e. base 16, codes instead.\n // In that case we need to re-parse the *entire* encoding to\n // prevent broken text-selection (fixes issue9655_reduced.pdf).\n if (\n Number.isNaN(code) &&\n Number.isInteger(parseInt(codeStr, 16))\n ) {\n return this._simpleFontToUnicode(\n properties,\n /* forceGlyphs */ true\n );\n }\n }\n break;\n default:\n // 'uniXXXX'/'uXXXX{XX}' glyphs\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n code = unicode;\n }\n }\n if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n // If `baseEncodingName` is one the predefined encodings, and `code`\n // equals `charcode`, using the glyph defined in the baseEncoding\n // seems to yield a better `toUnicode` mapping (fixes issue 5070).\n if (baseEncodingName && code === +charcode) {\n const baseEncoding = getEncoding(baseEncodingName);\n if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n toUnicode[charcode] = String.fromCharCode(\n glyphsUnicodeMap[glyphName]\n );\n continue;\n }\n }\n toUnicode[charcode] = String.fromCodePoint(code);\n }\n continue;\n }\n toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n }\n return toUnicode;\n }\n\n /**\n * Builds a char code to unicode map based on section 9.10 of the spec.\n * @param {Object} properties Font properties object.\n * @returns {Promise} A Promise that is resolved with a\n * {ToUnicodeMap|IdentityToUnicodeMap} object.\n */\n async buildToUnicode(properties) {\n properties.hasIncludedToUnicodeMap =\n !!properties.toUnicode && properties.toUnicode.length > 0;\n\n // Section 9.10.2 Mapping Character Codes to Unicode Values\n if (properties.hasIncludedToUnicodeMap) {\n // Some fonts contain incomplete ToUnicode data, causing issues with\n // text-extraction. For simple fonts, containing encoding information,\n // use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\n if (!properties.composite && properties.hasEncoding) {\n properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\n }\n return properties.toUnicode;\n }\n\n // According to the spec if the font is a simple font we should only map\n // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\n // the differences array only contains adobe standard or symbol set names,\n // in pratice it seems better to always try to create a toUnicode map\n // based of the default encoding.\n if (!properties.composite /* is simple font */) {\n return new ToUnicodeMap(this._simpleFontToUnicode(properties));\n }\n\n // If the font is a composite font that uses one of the predefined CMaps\n // listed in Table 118 (except Identity–H and Identity–V) or whose\n // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\n // Adobe-Korea1 character collection:\n if (\n properties.composite &&\n ((properties.cMap.builtInCMap &&\n !(properties.cMap instanceof IdentityCMap)) ||\n (properties.cidSystemInfo.registry === \"Adobe\" &&\n (properties.cidSystemInfo.ordering === \"GB1\" ||\n properties.cidSystemInfo.ordering === \"CNS1\" ||\n properties.cidSystemInfo.ordering === \"Japan1\" ||\n properties.cidSystemInfo.ordering === \"Korea1\")))\n ) {\n // Then:\n // a) Map the character code to a character identifier (CID) according\n // to the font’s CMap.\n // b) Obtain the registry and ordering of the character collection used\n // by the font’s CMap (for example, Adobe and Japan1) from its\n // CIDSystemInfo dictionary.\n const { registry, ordering } = properties.cidSystemInfo;\n // c) Construct a second CMap name by concatenating the registry and\n // ordering obtained in step (b) in the format registry–ordering–UCS2\n // (for example, Adobe–Japan1–UCS2).\n const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`);\n // d) Obtain the CMap with the name constructed in step (c) (available\n // from the ASN Web site; see the Bibliography).\n const ucs2CMap = await CMapFactory.create({\n encoding: ucs2CMapName,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n });\n const toUnicode = [];\n properties.cMap.forEach(function (charcode, cid) {\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n // e) Map the CID obtained in step (a) according to the CMap\n // obtained in step (d), producing a Unicode value.\n const ucs2 = ucs2CMap.lookup(cid);\n if (ucs2) {\n toUnicode[charcode] = String.fromCharCode(\n (ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)\n );\n }\n });\n return new ToUnicodeMap(toUnicode);\n }\n\n // The viewer's choice, just use an identity map.\n return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\n }\n\n readToUnicode(cmapObj) {\n if (!cmapObj) {\n return Promise.resolve(null);\n }\n if (cmapObj instanceof Name) {\n return CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n }).then(function (cmap) {\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n return new ToUnicodeMap(cmap.getMap());\n });\n } else if (cmapObj instanceof BaseStream) {\n return CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n }).then(\n function (cmap) {\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n const map = new Array(cmap.length);\n // Convert UTF-16BE\n // NOTE: cmap can be a sparse array, so use forEach instead of\n // `for(;;)` to iterate over all keys.\n cmap.forEach(function (charCode, token) {\n // Some cmaps contain *only* CID characters (fixes issue9367.pdf).\n if (typeof token === \"number\") {\n map[charCode] = String.fromCodePoint(token);\n return;\n }\n const str = [];\n for (let k = 0; k < token.length; k += 2) {\n const w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n if ((w1 & 0xf800) !== 0xd800) {\n // w1 < 0xD800 || w1 > 0xDFFF\n str.push(w1);\n continue;\n }\n k += 2;\n const w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n }\n map[charCode] = String.fromCodePoint.apply(String, str);\n });\n return new ToUnicodeMap(map);\n },\n reason => {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n // Error in the ToUnicode data -- sending unsupported feature\n // notification and allow font parsing to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontToUnicode,\n });\n warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n return null;\n }\n throw reason;\n }\n );\n }\n return Promise.resolve(null);\n }\n\n readCidToGidMap(glyphsData, toUnicode) {\n // Extract the encoding from the CIDToGIDMap\n\n // Set encoding 0 to later verify the font has an encoding\n const result = [];\n for (let j = 0, jj = glyphsData.length; j < jj; j++) {\n const glyphID = (glyphsData[j++] << 8) | glyphsData[j];\n const code = j >> 1;\n if (glyphID === 0 && !toUnicode.has(code)) {\n continue;\n }\n result[code] = glyphID;\n }\n return result;\n }\n\n extractWidths(dict, descriptor, properties) {\n const xref = this.xref;\n let glyphsWidths = [];\n let defaultWidth = 0;\n const glyphsVMetrics = [];\n let defaultVMetrics;\n let i, ii, j, jj, start, code, widths;\n if (properties.composite) {\n defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n\n widths = dict.get(\"W\");\n if (widths) {\n for (i = 0, ii = widths.length; i < ii; i++) {\n start = xref.fetchIfRef(widths[i++]);\n code = xref.fetchIfRef(widths[i]);\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n }\n } else {\n const width = xref.fetchIfRef(widths[++i]);\n for (j = start; j <= code; j++) {\n glyphsWidths[j] = width;\n }\n }\n }\n }\n\n if (properties.vertical) {\n let vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n vmetrics = dict.get(\"W2\");\n if (vmetrics) {\n for (i = 0, ii = vmetrics.length; i < ii; i++) {\n start = xref.fetchIfRef(vmetrics[i++]);\n code = xref.fetchIfRef(vmetrics[i]);\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsVMetrics[start++] = [\n xref.fetchIfRef(code[j++]),\n xref.fetchIfRef(code[j++]),\n xref.fetchIfRef(code[j]),\n ];\n }\n } else {\n const vmetric = [\n xref.fetchIfRef(vmetrics[++i]),\n xref.fetchIfRef(vmetrics[++i]),\n xref.fetchIfRef(vmetrics[++i]),\n ];\n for (j = start; j <= code; j++) {\n glyphsVMetrics[j] = vmetric;\n }\n }\n }\n }\n }\n } else {\n const firstChar = properties.firstChar;\n widths = dict.get(\"Widths\");\n if (widths) {\n j = firstChar;\n for (i = 0, ii = widths.length; i < ii; i++) {\n glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n }\n defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n } else {\n // Trying get the BaseFont metrics (see comment above).\n const baseFontName = dict.get(\"BaseFont\");\n if (baseFontName instanceof Name) {\n const metrics = this.getBaseFontMetrics(baseFontName.name);\n\n glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n defaultWidth = metrics.defaultWidth;\n }\n }\n }\n\n // Heuristic: detection of monospace font by checking all non-zero widths\n let isMonospace = true;\n let firstWidth = defaultWidth;\n for (const glyph in glyphsWidths) {\n const glyphWidth = glyphsWidths[glyph];\n if (!glyphWidth) {\n continue;\n }\n if (!firstWidth) {\n firstWidth = glyphWidth;\n continue;\n }\n if (firstWidth !== glyphWidth) {\n isMonospace = false;\n break;\n }\n }\n if (isMonospace) {\n properties.flags |= FontFlags.FixedPitch;\n }\n\n properties.defaultWidth = defaultWidth;\n properties.widths = glyphsWidths;\n properties.defaultVMetrics = defaultVMetrics;\n properties.vmetrics = glyphsVMetrics;\n }\n\n isSerifFont(baseFontName) {\n // Simulating descriptor flags attribute\n const fontNameWoStyle = baseFontName.split(\"-\")[0];\n return (\n fontNameWoStyle in getSerifFonts() ||\n fontNameWoStyle.search(/serif/gi) !== -1\n );\n }\n\n getBaseFontMetrics(name) {\n let defaultWidth = 0;\n let widths = Object.create(null);\n let monospace = false;\n const stdFontMap = getStdFontMap();\n let lookupName = stdFontMap[name] || name;\n const Metrics = getMetrics();\n\n if (!(lookupName in Metrics)) {\n // Use default fonts for looking up font metrics if the passed\n // font is not a base font\n if (this.isSerifFont(name)) {\n lookupName = \"Times-Roman\";\n } else {\n lookupName = \"Helvetica\";\n }\n }\n const glyphWidths = Metrics[lookupName];\n\n if (typeof glyphWidths === \"number\") {\n defaultWidth = glyphWidths;\n monospace = true;\n } else {\n widths = glyphWidths(); // expand lazy widths array\n }\n\n return {\n defaultWidth,\n monospace,\n widths,\n };\n }\n\n buildCharCodeToWidth(widthsByGlyphName, properties) {\n const widths = Object.create(null);\n const differences = properties.differences;\n const encoding = properties.defaultEncoding;\n for (let charCode = 0; charCode < 256; charCode++) {\n if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n widths[charCode] = widthsByGlyphName[differences[charCode]];\n continue;\n }\n if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n widths[charCode] = widthsByGlyphName[encoding[charCode]];\n continue;\n }\n }\n return widths;\n }\n\n preEvaluateFont(dict) {\n const baseDict = dict;\n let type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n\n let composite = false;\n let hash, toUnicode;\n if (type.name === \"Type0\") {\n // If font is a composite\n // - get the descendant font\n // - set the type according to the descendant font\n // - get the FontDescriptor from the descendant font\n const df = dict.get(\"DescendantFonts\");\n if (!df) {\n throw new FormatError(\"Descendant fonts are not specified\");\n }\n dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n\n if (!(dict instanceof Dict)) {\n throw new FormatError(\"Descendant font is not a dictionary.\");\n }\n type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n composite = true;\n }\n\n const firstChar = dict.get(\"FirstChar\") || 0,\n lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n const descriptor = dict.get(\"FontDescriptor\");\n if (descriptor) {\n hash = new MurmurHash3_64();\n\n const encoding = baseDict.getRaw(\"Encoding\");\n if (encoding instanceof Name) {\n hash.update(encoding.name);\n } else if (encoding instanceof Ref) {\n hash.update(encoding.toString());\n } else if (encoding instanceof Dict) {\n for (const entry of encoding.getRawValues()) {\n if (entry instanceof Name) {\n hash.update(entry.name);\n } else if (entry instanceof Ref) {\n hash.update(entry.toString());\n } else if (Array.isArray(entry)) {\n // 'Differences' array (fixes bug1157493.pdf).\n const diffLength = entry.length,\n diffBuf = new Array(diffLength);\n\n for (let j = 0; j < diffLength; j++) {\n const diffEntry = entry[j];\n if (diffEntry instanceof Name) {\n diffBuf[j] = diffEntry.name;\n } else if (\n typeof diffEntry === \"number\" ||\n diffEntry instanceof Ref\n ) {\n diffBuf[j] = diffEntry.toString();\n }\n }\n hash.update(diffBuf.join());\n }\n }\n }\n\n hash.update(`${firstChar}-${lastChar}`); // Fixes issue10665_reduced.pdf\n\n toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n if (toUnicode instanceof BaseStream) {\n const stream = toUnicode.str || toUnicode;\n const uint8array = stream.buffer\n ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength)\n : new Uint8Array(\n stream.bytes.buffer,\n stream.start,\n stream.end - stream.start\n );\n hash.update(uint8array);\n } else if (toUnicode instanceof Name) {\n hash.update(toUnicode.name);\n }\n\n const widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n if (Array.isArray(widths)) {\n const widthsBuf = [];\n for (const entry of widths) {\n if (typeof entry === \"number\" || entry instanceof Ref) {\n widthsBuf.push(entry.toString());\n }\n }\n hash.update(widthsBuf.join());\n }\n\n if (composite) {\n hash.update(\"compositeFont\");\n\n const compositeWidths = dict.get(\"W\") || baseDict.get(\"W\");\n if (Array.isArray(compositeWidths)) {\n const widthsBuf = [];\n for (const entry of compositeWidths) {\n if (typeof entry === \"number\" || entry instanceof Ref) {\n widthsBuf.push(entry.toString());\n } else if (Array.isArray(entry)) {\n const subWidthsBuf = [];\n for (const element of entry) {\n if (typeof element === \"number\" || element instanceof Ref) {\n subWidthsBuf.push(element.toString());\n }\n }\n widthsBuf.push(`[${subWidthsBuf.join()}]`);\n }\n }\n hash.update(widthsBuf.join());\n }\n\n const cidToGidMap =\n dict.getRaw(\"CIDToGIDMap\") || baseDict.getRaw(\"CIDToGIDMap\");\n if (cidToGidMap instanceof Name) {\n hash.update(cidToGidMap.name);\n } else if (cidToGidMap instanceof Ref) {\n hash.update(cidToGidMap.toString());\n } else if (cidToGidMap instanceof BaseStream) {\n hash.update(cidToGidMap.peekBytes());\n }\n }\n }\n\n return {\n descriptor,\n dict,\n baseDict,\n composite,\n type: type.name,\n firstChar,\n lastChar,\n toUnicode,\n hash: hash ? hash.hexdigest() : \"\",\n };\n }\n\n async translateFont({\n descriptor,\n dict,\n baseDict,\n composite,\n type,\n firstChar,\n lastChar,\n toUnicode,\n cssFontInfo,\n }) {\n const isType3Font = type === \"Type3\";\n let properties;\n\n if (!descriptor) {\n if (isType3Font) {\n // FontDescriptor is only required for Type3 fonts when the document\n // is a tagged pdf. Create a barbebones one to get by.\n descriptor = new Dict(null);\n descriptor.set(\"FontName\", Name.get(type));\n descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n } else {\n // Before PDF 1.5 if the font was one of the base 14 fonts, having a\n // FontDescriptor was not required.\n // This case is here for compatibility.\n let baseFontName = dict.get(\"BaseFont\");\n if (!(baseFontName instanceof Name)) {\n throw new FormatError(\"Base font is not specified\");\n }\n\n // Using base font name as a font name.\n baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n const metrics = this.getBaseFontMetrics(baseFontName);\n\n // Simulating descriptor flags attribute\n const fontNameWoStyle = baseFontName.split(\"-\")[0];\n const flags =\n (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\n (metrics.monospace ? FontFlags.FixedPitch : 0) |\n (getSymbolsFonts()[fontNameWoStyle]\n ? FontFlags.Symbolic\n : FontFlags.Nonsymbolic);\n\n properties = {\n type,\n name: baseFontName,\n loadedName: baseDict.loadedName,\n widths: metrics.widths,\n defaultWidth: metrics.defaultWidth,\n isSimulatedFlags: true,\n flags,\n firstChar,\n lastChar,\n toUnicode,\n xHeight: 0,\n capHeight: 0,\n italicAngle: 0,\n isType3Font,\n };\n const widths = dict.get(\"Widths\");\n\n const standardFontName = getStandardFontName(baseFontName);\n let file = null;\n if (standardFontName) {\n properties.isStandardFont = true;\n file = await this.fetchStandardFontData(standardFontName);\n properties.isInternalFont = !!file;\n }\n return this.extractDataStructures(dict, dict, properties).then(\n newProperties => {\n if (widths) {\n const glyphWidths = [];\n let j = firstChar;\n for (let i = 0, ii = widths.length; i < ii; i++) {\n glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);\n }\n newProperties.widths = glyphWidths;\n } else {\n newProperties.widths = this.buildCharCodeToWidth(\n metrics.widths,\n newProperties\n );\n }\n return new Font(baseFontName, file, newProperties);\n }\n );\n }\n }\n\n // According to the spec if 'FontDescriptor' is declared, 'FirstChar',\n // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\n // to ignore this rule when a variant of a standard font is used.\n // TODO Fill the width array depending on which of the base font this is\n // a variant.\n\n let fontName = descriptor.get(\"FontName\");\n let baseFont = dict.get(\"BaseFont\");\n // Some bad PDFs have a string as the font name.\n if (typeof fontName === \"string\") {\n fontName = Name.get(fontName);\n }\n if (typeof baseFont === \"string\") {\n baseFont = Name.get(baseFont);\n }\n\n if (!isType3Font) {\n const fontNameStr = fontName && fontName.name;\n const baseFontStr = baseFont && baseFont.name;\n if (fontNameStr !== baseFontStr) {\n info(\n `The FontDescriptor's FontName is \"${fontNameStr}\" but ` +\n `should be the same as the Font's BaseFont \"${baseFontStr}\".`\n );\n // Workaround for cases where e.g. fontNameStr = 'Arial' and\n // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\n if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {\n fontName = baseFont;\n }\n }\n }\n fontName = fontName || baseFont;\n\n if (!(fontName instanceof Name)) {\n throw new FormatError(\"invalid font name\");\n }\n\n let fontFile, subtype, length1, length2, length3;\n try {\n fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n } catch (ex) {\n if (!this.options.ignoreErrors) {\n throw ex;\n }\n warn(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n fontFile = new NullStream();\n }\n let isStandardFont = false;\n let isInternalFont = false;\n let glyphScaleFactors = null;\n if (fontFile) {\n if (fontFile.dict) {\n const subtypeEntry = fontFile.dict.get(\"Subtype\");\n if (subtypeEntry instanceof Name) {\n subtype = subtypeEntry.name;\n }\n length1 = fontFile.dict.get(\"Length1\");\n length2 = fontFile.dict.get(\"Length2\");\n length3 = fontFile.dict.get(\"Length3\");\n }\n } else if (cssFontInfo) {\n // We've a missing XFA font.\n const standardFontName = getXfaFontName(fontName.name);\n if (standardFontName) {\n cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\n cssFontInfo.metrics = standardFontName.metrics || null;\n glyphScaleFactors = standardFontName.factors || null;\n fontFile = await this.fetchStandardFontData(standardFontName.name);\n isInternalFont = !!fontFile;\n\n // We're using a substitution font but for example widths (if any)\n // are related to the glyph positions in the font.\n // So we overwrite everything here to be sure that widths are\n // correct.\n baseDict = dict = getXfaFontDict(fontName.name);\n composite = true;\n }\n } else if (!isType3Font) {\n const standardFontName = getStandardFontName(fontName.name);\n if (standardFontName) {\n isStandardFont = true;\n fontFile = await this.fetchStandardFontData(standardFontName);\n isInternalFont = !!fontFile;\n }\n }\n\n properties = {\n type,\n name: fontName.name,\n subtype,\n file: fontFile,\n length1,\n length2,\n length3,\n isStandardFont,\n isInternalFont,\n loadedName: baseDict.loadedName,\n composite,\n fixedPitch: false,\n fontMatrix: dict.getArray(\"FontMatrix\") || FONT_IDENTITY_MATRIX,\n firstChar,\n lastChar,\n toUnicode,\n bbox: descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"),\n ascent: descriptor.get(\"Ascent\"),\n descent: descriptor.get(\"Descent\"),\n xHeight: descriptor.get(\"XHeight\") || 0,\n capHeight: descriptor.get(\"CapHeight\") || 0,\n flags: descriptor.get(\"Flags\"),\n italicAngle: descriptor.get(\"ItalicAngle\") || 0,\n isType3Font,\n cssFontInfo,\n scaleFactors: glyphScaleFactors,\n };\n\n if (composite) {\n const cidEncoding = baseDict.get(\"Encoding\");\n if (cidEncoding instanceof Name) {\n properties.cidEncoding = cidEncoding.name;\n }\n const cMap = await CMapFactory.create({\n encoding: cidEncoding,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n });\n properties.cMap = cMap;\n properties.vertical = properties.cMap.vertical;\n }\n\n return this.extractDataStructures(dict, baseDict, properties).then(\n newProperties => {\n this.extractWidths(dict, descriptor, newProperties);\n\n return new Font(fontName.name, fontFile, newProperties);\n }\n );\n }\n\n static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\n function buildPath(fontChar) {\n const glyphName = `${font.loadedName}_path_${fontChar}`;\n try {\n if (font.renderer.hasBuiltPath(fontChar)) {\n return;\n }\n handler.send(\"commonobj\", [\n glyphName,\n \"FontPath\",\n font.renderer.getPathJs(fontChar),\n ]);\n } catch (reason) {\n if (evaluatorOptions.ignoreErrors) {\n // Error in the font data -- sending unsupported feature notification\n // and allow glyph path building to continue.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontBuildPath,\n });\n warn(`buildFontPaths - ignoring ${glyphName} glyph: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n }\n\n for (const glyph of glyphs) {\n buildPath(glyph.fontChar);\n\n // If the glyph has an accent we need to build a path for its\n // fontChar too, otherwise CanvasGraphics_paintChar will fail.\n const accent = glyph.accent;\n if (accent && accent.fontChar) {\n buildPath(accent.fontChar);\n }\n }\n }\n\n static get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"PDFJS-FallbackFont\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\n\nclass TranslatedFont {\n constructor({ loadedName, font, dict, evaluatorOptions }) {\n this.loadedName = loadedName;\n this.font = font;\n this.dict = dict;\n this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;\n this.type3Loaded = null;\n this.type3Dependencies = font.isType3Font ? new Set() : null;\n this.sent = false;\n }\n\n send(handler) {\n if (this.sent) {\n return;\n }\n this.sent = true;\n\n handler.send(\"commonobj\", [\n this.loadedName,\n \"Font\",\n this.font.exportData(this._evaluatorOptions.fontExtraProperties),\n ]);\n }\n\n fallback(handler) {\n if (!this.font.data) {\n return;\n }\n // When font loading failed, fall back to the built-in font renderer.\n this.font.disableFontFace = true;\n // An arbitrary number of text rendering operators could have been\n // encountered between the point in time when the 'Font' message was sent\n // to the main-thread, and the point in time when the 'FontFallback'\n // message was received on the worker-thread.\n // To ensure that all 'FontPath's are available on the main-thread, when\n // font loading failed, attempt to resend *all* previously parsed glyphs.\n PartialEvaluator.buildFontPaths(\n this.font,\n /* glyphs = */ this.font.glyphCacheValues,\n handler,\n this._evaluatorOptions\n );\n }\n\n loadType3Data(evaluator, resources, task) {\n if (this.type3Loaded) {\n return this.type3Loaded;\n }\n if (!this.font.isType3Font) {\n throw new Error(\"Must be a Type3 font.\");\n }\n // When parsing Type3 glyphs, always ignore them if there are errors.\n // Compared to the parsing of e.g. an entire page, it doesn't really\n // make sense to only be able to render a Type3 glyph partially.\n const type3Evaluator = evaluator.clone({ ignoreErrors: false });\n type3Evaluator.parsingType3Font = true;\n // Prevent circular references in Type3 fonts.\n const type3FontRefs = new RefSet(evaluator.type3FontRefs);\n if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) {\n type3FontRefs.put(this.dict.objId);\n }\n type3Evaluator.type3FontRefs = type3FontRefs;\n\n const translatedFont = this.font,\n type3Dependencies = this.type3Dependencies;\n let loadCharProcsPromise = Promise.resolve();\n const charProcs = this.dict.get(\"CharProcs\");\n const fontResources = this.dict.get(\"Resources\") || resources;\n const charProcOperatorList = Object.create(null);\n\n const isEmptyBBox =\n !translatedFont.bbox || isArrayEqual(translatedFont.bbox, [0, 0, 0, 0]);\n\n for (const key of charProcs.getKeys()) {\n loadCharProcsPromise = loadCharProcsPromise.then(() => {\n const glyphStream = charProcs.get(key);\n const operatorList = new OperatorList();\n return type3Evaluator\n .getOperatorList({\n stream: glyphStream,\n task,\n resources: fontResources,\n operatorList,\n })\n .then(() => {\n // According to the PDF specification, section \"9.6.5 Type 3 Fonts\"\n // and \"Table 113\":\n // \"A glyph description that begins with the d1 operator should\n // not execute any operators that set the colour (or other\n // colour-related parameters) in the graphics state;\n // any use of such operators shall be ignored.\"\n if (operatorList.fnArray[0] === OPS.setCharWidthAndBounds) {\n this._removeType3ColorOperators(operatorList, isEmptyBBox);\n }\n charProcOperatorList[key] = operatorList.getIR();\n\n for (const dependency of operatorList.dependencies) {\n type3Dependencies.add(dependency);\n }\n })\n .catch(function (reason) {\n warn(`Type3 font resource \"${key}\" is not available.`);\n const dummyOperatorList = new OperatorList();\n charProcOperatorList[key] = dummyOperatorList.getIR();\n });\n });\n }\n this.type3Loaded = loadCharProcsPromise.then(() => {\n translatedFont.charProcOperatorList = charProcOperatorList;\n if (this._bbox) {\n translatedFont.isCharBBox = true;\n translatedFont.bbox = this._bbox;\n }\n });\n return this.type3Loaded;\n }\n\n /**\n * @private\n */\n _removeType3ColorOperators(operatorList, isEmptyBBox = false) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n operatorList.fnArray[0] === OPS.setCharWidthAndBounds,\n \"Type3 glyph shall start with the d1 operator.\"\n );\n }\n if (isEmptyBBox) {\n if (!this._bbox) {\n this._bbox = [Infinity, Infinity, -Infinity, -Infinity];\n }\n const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2));\n\n this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);\n this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);\n this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);\n this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);\n }\n let i = 1,\n ii = operatorList.length;\n while (i < ii) {\n switch (operatorList.fnArray[i]) {\n case OPS.setStrokeColorSpace:\n case OPS.setFillColorSpace:\n case OPS.setStrokeColor:\n case OPS.setStrokeColorN:\n case OPS.setFillColor:\n case OPS.setFillColorN:\n case OPS.setStrokeGray:\n case OPS.setFillGray:\n case OPS.setStrokeRGBColor:\n case OPS.setFillRGBColor:\n case OPS.setStrokeCMYKColor:\n case OPS.setFillCMYKColor:\n case OPS.shadingFill:\n case OPS.setRenderingIntent:\n operatorList.fnArray.splice(i, 1);\n operatorList.argsArray.splice(i, 1);\n ii--;\n continue;\n\n case OPS.setGState:\n const [gStateObj] = operatorList.argsArray[i];\n let j = 0,\n jj = gStateObj.length;\n while (j < jj) {\n const [gStateKey] = gStateObj[j];\n switch (gStateKey) {\n case \"TR\":\n case \"TR2\":\n case \"HT\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n gStateObj.splice(j, 1);\n jj--;\n continue;\n }\n j++;\n }\n break;\n }\n i++;\n }\n }\n}\n\nclass StateManager {\n constructor(initialState = new EvalState()) {\n this.state = initialState;\n this.stateStack = [];\n }\n\n save() {\n const old = this.state;\n this.stateStack.push(this.state);\n this.state = old.clone();\n }\n\n restore() {\n const prev = this.stateStack.pop();\n if (prev) {\n this.state = prev;\n }\n }\n\n transform(args) {\n this.state.ctm = Util.transform(this.state.ctm, args);\n }\n}\n\nclass TextState {\n constructor() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.fontName = null;\n this.fontSize = 0;\n this.font = null;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.textMatrix = IDENTITY_MATRIX.slice();\n this.textLineMatrix = IDENTITY_MATRIX.slice();\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.leading = 0;\n this.textHScale = 1;\n this.textRise = 0;\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const m = this.textMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n\n setTextLineMatrix(a, b, c, d, e, f) {\n const m = this.textLineMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n\n translateTextMatrix(x, y) {\n const m = this.textMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n\n translateTextLineMatrix(x, y) {\n const m = this.textLineMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n\n carriageReturn() {\n this.translateTextLineMatrix(0, -this.leading);\n this.textMatrix = this.textLineMatrix.slice();\n }\n\n clone() {\n const clone = Object.create(this);\n clone.textMatrix = this.textMatrix.slice();\n clone.textLineMatrix = this.textLineMatrix.slice();\n clone.fontMatrix = this.fontMatrix.slice();\n return clone;\n }\n}\n\nclass EvalState {\n constructor() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.font = null;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.fillColorSpace = ColorSpace.singletons.gray;\n this.strokeColorSpace = ColorSpace.singletons.gray;\n }\n\n clone() {\n return Object.create(this);\n }\n}\n\nclass EvaluatorPreprocessor {\n static get opMap() {\n // Specifies properties for each command\n //\n // If variableArgs === true: [0, `numArgs`] expected\n // If variableArgs === false: exactly `numArgs` expected\n const getOPMap = getLookupTableFactory(function (t) {\n // Graphic state\n t.w = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false };\n t.J = { id: OPS.setLineCap, numArgs: 1, variableArgs: false };\n t.j = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false };\n t.M = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false };\n t.d = { id: OPS.setDash, numArgs: 2, variableArgs: false };\n t.ri = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false };\n t.i = { id: OPS.setFlatness, numArgs: 1, variableArgs: false };\n t.gs = { id: OPS.setGState, numArgs: 1, variableArgs: false };\n t.q = { id: OPS.save, numArgs: 0, variableArgs: false };\n t.Q = { id: OPS.restore, numArgs: 0, variableArgs: false };\n t.cm = { id: OPS.transform, numArgs: 6, variableArgs: false };\n\n // Path\n t.m = { id: OPS.moveTo, numArgs: 2, variableArgs: false };\n t.l = { id: OPS.lineTo, numArgs: 2, variableArgs: false };\n t.c = { id: OPS.curveTo, numArgs: 6, variableArgs: false };\n t.v = { id: OPS.curveTo2, numArgs: 4, variableArgs: false };\n t.y = { id: OPS.curveTo3, numArgs: 4, variableArgs: false };\n t.h = { id: OPS.closePath, numArgs: 0, variableArgs: false };\n t.re = { id: OPS.rectangle, numArgs: 4, variableArgs: false };\n t.S = { id: OPS.stroke, numArgs: 0, variableArgs: false };\n t.s = { id: OPS.closeStroke, numArgs: 0, variableArgs: false };\n t.f = { id: OPS.fill, numArgs: 0, variableArgs: false };\n t.F = { id: OPS.fill, numArgs: 0, variableArgs: false };\n t[\"f*\"] = { id: OPS.eoFill, numArgs: 0, variableArgs: false };\n t.B = { id: OPS.fillStroke, numArgs: 0, variableArgs: false };\n t[\"B*\"] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false };\n t.b = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false };\n t[\"b*\"] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false };\n t.n = { id: OPS.endPath, numArgs: 0, variableArgs: false };\n\n // Clipping\n t.W = { id: OPS.clip, numArgs: 0, variableArgs: false };\n t[\"W*\"] = { id: OPS.eoClip, numArgs: 0, variableArgs: false };\n\n // Text\n t.BT = { id: OPS.beginText, numArgs: 0, variableArgs: false };\n t.ET = { id: OPS.endText, numArgs: 0, variableArgs: false };\n t.Tc = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false };\n t.Tw = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false };\n t.Tz = { id: OPS.setHScale, numArgs: 1, variableArgs: false };\n t.TL = { id: OPS.setLeading, numArgs: 1, variableArgs: false };\n t.Tf = { id: OPS.setFont, numArgs: 2, variableArgs: false };\n t.Tr = { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false };\n t.Ts = { id: OPS.setTextRise, numArgs: 1, variableArgs: false };\n t.Td = { id: OPS.moveText, numArgs: 2, variableArgs: false };\n t.TD = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false };\n t.Tm = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false };\n t[\"T*\"] = { id: OPS.nextLine, numArgs: 0, variableArgs: false };\n t.Tj = { id: OPS.showText, numArgs: 1, variableArgs: false };\n t.TJ = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false };\n t[\"'\"] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false };\n t['\"'] = {\n id: OPS.nextLineSetSpacingShowText,\n numArgs: 3,\n variableArgs: false,\n };\n\n // Type3 fonts\n t.d0 = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false };\n t.d1 = {\n id: OPS.setCharWidthAndBounds,\n numArgs: 6,\n variableArgs: false,\n };\n\n // Color\n t.CS = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false };\n t.cs = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false };\n t.SC = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true };\n t.SCN = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true };\n t.sc = { id: OPS.setFillColor, numArgs: 4, variableArgs: true };\n t.scn = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true };\n t.G = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false };\n t.g = { id: OPS.setFillGray, numArgs: 1, variableArgs: false };\n t.RG = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false };\n t.rg = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false };\n t.K = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false };\n t.k = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false };\n\n // Shading\n t.sh = { id: OPS.shadingFill, numArgs: 1, variableArgs: false };\n\n // Images\n t.BI = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false };\n t.ID = { id: OPS.beginImageData, numArgs: 0, variableArgs: false };\n t.EI = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false };\n\n // XObjects\n t.Do = { id: OPS.paintXObject, numArgs: 1, variableArgs: false };\n t.MP = { id: OPS.markPoint, numArgs: 1, variableArgs: false };\n t.DP = { id: OPS.markPointProps, numArgs: 2, variableArgs: false };\n t.BMC = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false };\n t.BDC = {\n id: OPS.beginMarkedContentProps,\n numArgs: 2,\n variableArgs: false,\n };\n t.EMC = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false };\n\n // Compatibility\n t.BX = { id: OPS.beginCompat, numArgs: 0, variableArgs: false };\n t.EX = { id: OPS.endCompat, numArgs: 0, variableArgs: false };\n\n // (reserved partial commands for the lexer)\n t.BM = null;\n t.BD = null;\n t.true = null;\n t.fa = null;\n t.fal = null;\n t.fals = null;\n t.false = null;\n t.nu = null;\n t.nul = null;\n t.null = null;\n });\n\n return shadow(this, \"opMap\", getOPMap());\n }\n\n static get MAX_INVALID_PATH_OPS() {\n return shadow(this, \"MAX_INVALID_PATH_OPS\", 10);\n }\n\n constructor(stream, xref, stateManager = new StateManager()) {\n // TODO(mduan): pass array of knownCommands rather than this.opMap\n // dictionary\n this.parser = new Parser({\n lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\n xref,\n });\n this.stateManager = stateManager;\n this.nonProcessedArgs = [];\n this._numInvalidPathOPS = 0;\n }\n\n get savedStatesDepth() {\n return this.stateManager.stateStack.length;\n }\n\n // |operation| is an object with two fields:\n //\n // - |fn| is an out param.\n //\n // - |args| is an inout param. On entry, it should have one of two values.\n //\n // - An empty array. This indicates that the caller is providing the\n // array in which the args will be stored in. The caller should use\n // this value if it can reuse a single array for each call to read().\n //\n // - |null|. This indicates that the caller needs this function to create\n // the array in which any args are stored in. If there are zero args,\n // this function will leave |operation.args| as |null| (thus avoiding\n // allocations that would occur if we used an empty array to represent\n // zero arguments). Otherwise, it will replace |null| with a new array\n // containing the arguments. The caller should use this value if it\n // cannot reuse an array for each call to read().\n //\n // These two modes are present because this function is very hot and so\n // avoiding allocations where possible is worthwhile.\n //\n read(operation) {\n let args = operation.args;\n while (true) {\n const obj = this.parser.getObj();\n if (obj instanceof Cmd) {\n const cmd = obj.cmd;\n // Check that the command is valid\n const opSpec = EvaluatorPreprocessor.opMap[cmd];\n if (!opSpec) {\n warn(`Unknown command \"${cmd}\".`);\n continue;\n }\n\n const fn = opSpec.id;\n const numArgs = opSpec.numArgs;\n let argsLength = args !== null ? args.length : 0;\n\n if (!opSpec.variableArgs) {\n // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf\n if (argsLength !== numArgs) {\n const nonProcessedArgs = this.nonProcessedArgs;\n while (argsLength > numArgs) {\n nonProcessedArgs.push(args.shift());\n argsLength--;\n }\n while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n if (args === null) {\n args = [];\n }\n args.unshift(nonProcessedArgs.pop());\n argsLength++;\n }\n }\n\n if (argsLength < numArgs) {\n const partialMsg =\n `command ${cmd}: expected ${numArgs} args, ` +\n `but received ${argsLength} args.`;\n\n // Incomplete path operators, in particular, can result in fairly\n // chaotic rendering artifacts. Hence the following heuristics is\n // used to error, rather than just warn, once a number of invalid\n // path operators have been encountered (fixes bug1443140.pdf).\n if (\n fn >= OPS.moveTo &&\n fn <= OPS.endPath && // Path operator\n ++this._numInvalidPathOPS >\n EvaluatorPreprocessor.MAX_INVALID_PATH_OPS\n ) {\n throw new FormatError(`Invalid ${partialMsg}`);\n }\n // If we receive too few arguments, it's not possible to execute\n // the command, hence we skip the command.\n warn(`Skipping ${partialMsg}`);\n if (args !== null) {\n args.length = 0;\n }\n continue;\n }\n } else if (argsLength > numArgs) {\n info(\n `Command ${cmd}: expected [0, ${numArgs}] args, ` +\n `but received ${argsLength} args.`\n );\n }\n\n // TODO figure out how to type-check vararg functions\n this.preprocessCommand(fn, args);\n\n operation.fn = fn;\n operation.args = args;\n return true;\n }\n if (obj === EOF) {\n return false; // no more commands\n }\n // argument\n if (obj !== null) {\n if (args === null) {\n args = [];\n }\n args.push(obj);\n if (args.length > 33) {\n throw new FormatError(\"Too many arguments\");\n }\n }\n }\n }\n\n preprocessCommand(fn, args) {\n switch (fn | 0) {\n case OPS.save:\n this.stateManager.save();\n break;\n case OPS.restore:\n this.stateManager.restore();\n break;\n case OPS.transform:\n this.stateManager.transform(args);\n break;\n }\n }\n}\n\nexport { EvaluatorPreprocessor, PartialEvaluator };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CMapCompressionType,\n FormatError,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { Cmd, EOF, isCmd, Name } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { Lexer } from \"./parser.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nconst BUILT_IN_CMAPS = [\n // << Start unicode maps.\n \"Adobe-GB1-UCS2\",\n \"Adobe-CNS1-UCS2\",\n \"Adobe-Japan1-UCS2\",\n \"Adobe-Korea1-UCS2\",\n // >> End unicode maps.\n \"78-EUC-H\",\n \"78-EUC-V\",\n \"78-H\",\n \"78-RKSJ-H\",\n \"78-RKSJ-V\",\n \"78-V\",\n \"78ms-RKSJ-H\",\n \"78ms-RKSJ-V\",\n \"83pv-RKSJ-H\",\n \"90ms-RKSJ-H\",\n \"90ms-RKSJ-V\",\n \"90msp-RKSJ-H\",\n \"90msp-RKSJ-V\",\n \"90pv-RKSJ-H\",\n \"90pv-RKSJ-V\",\n \"Add-H\",\n \"Add-RKSJ-H\",\n \"Add-RKSJ-V\",\n \"Add-V\",\n \"Adobe-CNS1-0\",\n \"Adobe-CNS1-1\",\n \"Adobe-CNS1-2\",\n \"Adobe-CNS1-3\",\n \"Adobe-CNS1-4\",\n \"Adobe-CNS1-5\",\n \"Adobe-CNS1-6\",\n \"Adobe-GB1-0\",\n \"Adobe-GB1-1\",\n \"Adobe-GB1-2\",\n \"Adobe-GB1-3\",\n \"Adobe-GB1-4\",\n \"Adobe-GB1-5\",\n \"Adobe-Japan1-0\",\n \"Adobe-Japan1-1\",\n \"Adobe-Japan1-2\",\n \"Adobe-Japan1-3\",\n \"Adobe-Japan1-4\",\n \"Adobe-Japan1-5\",\n \"Adobe-Japan1-6\",\n \"Adobe-Korea1-0\",\n \"Adobe-Korea1-1\",\n \"Adobe-Korea1-2\",\n \"B5-H\",\n \"B5-V\",\n \"B5pc-H\",\n \"B5pc-V\",\n \"CNS-EUC-H\",\n \"CNS-EUC-V\",\n \"CNS1-H\",\n \"CNS1-V\",\n \"CNS2-H\",\n \"CNS2-V\",\n \"ETHK-B5-H\",\n \"ETHK-B5-V\",\n \"ETen-B5-H\",\n \"ETen-B5-V\",\n \"ETenms-B5-H\",\n \"ETenms-B5-V\",\n \"EUC-H\",\n \"EUC-V\",\n \"Ext-H\",\n \"Ext-RKSJ-H\",\n \"Ext-RKSJ-V\",\n \"Ext-V\",\n \"GB-EUC-H\",\n \"GB-EUC-V\",\n \"GB-H\",\n \"GB-V\",\n \"GBK-EUC-H\",\n \"GBK-EUC-V\",\n \"GBK2K-H\",\n \"GBK2K-V\",\n \"GBKp-EUC-H\",\n \"GBKp-EUC-V\",\n \"GBT-EUC-H\",\n \"GBT-EUC-V\",\n \"GBT-H\",\n \"GBT-V\",\n \"GBTpc-EUC-H\",\n \"GBTpc-EUC-V\",\n \"GBpc-EUC-H\",\n \"GBpc-EUC-V\",\n \"H\",\n \"HKdla-B5-H\",\n \"HKdla-B5-V\",\n \"HKdlb-B5-H\",\n \"HKdlb-B5-V\",\n \"HKgccs-B5-H\",\n \"HKgccs-B5-V\",\n \"HKm314-B5-H\",\n \"HKm314-B5-V\",\n \"HKm471-B5-H\",\n \"HKm471-B5-V\",\n \"HKscs-B5-H\",\n \"HKscs-B5-V\",\n \"Hankaku\",\n \"Hiragana\",\n \"KSC-EUC-H\",\n \"KSC-EUC-V\",\n \"KSC-H\",\n \"KSC-Johab-H\",\n \"KSC-Johab-V\",\n \"KSC-V\",\n \"KSCms-UHC-H\",\n \"KSCms-UHC-HW-H\",\n \"KSCms-UHC-HW-V\",\n \"KSCms-UHC-V\",\n \"KSCpc-EUC-H\",\n \"KSCpc-EUC-V\",\n \"Katakana\",\n \"NWP-H\",\n \"NWP-V\",\n \"RKSJ-H\",\n \"RKSJ-V\",\n \"Roman\",\n \"UniCNS-UCS2-H\",\n \"UniCNS-UCS2-V\",\n \"UniCNS-UTF16-H\",\n \"UniCNS-UTF16-V\",\n \"UniCNS-UTF32-H\",\n \"UniCNS-UTF32-V\",\n \"UniCNS-UTF8-H\",\n \"UniCNS-UTF8-V\",\n \"UniGB-UCS2-H\",\n \"UniGB-UCS2-V\",\n \"UniGB-UTF16-H\",\n \"UniGB-UTF16-V\",\n \"UniGB-UTF32-H\",\n \"UniGB-UTF32-V\",\n \"UniGB-UTF8-H\",\n \"UniGB-UTF8-V\",\n \"UniJIS-UCS2-H\",\n \"UniJIS-UCS2-HW-H\",\n \"UniJIS-UCS2-HW-V\",\n \"UniJIS-UCS2-V\",\n \"UniJIS-UTF16-H\",\n \"UniJIS-UTF16-V\",\n \"UniJIS-UTF32-H\",\n \"UniJIS-UTF32-V\",\n \"UniJIS-UTF8-H\",\n \"UniJIS-UTF8-V\",\n \"UniJIS2004-UTF16-H\",\n \"UniJIS2004-UTF16-V\",\n \"UniJIS2004-UTF32-H\",\n \"UniJIS2004-UTF32-V\",\n \"UniJIS2004-UTF8-H\",\n \"UniJIS2004-UTF8-V\",\n \"UniJISPro-UCS2-HW-V\",\n \"UniJISPro-UCS2-V\",\n \"UniJISPro-UTF8-V\",\n \"UniJISX0213-UTF32-H\",\n \"UniJISX0213-UTF32-V\",\n \"UniJISX02132004-UTF32-H\",\n \"UniJISX02132004-UTF32-V\",\n \"UniKS-UCS2-H\",\n \"UniKS-UCS2-V\",\n \"UniKS-UTF16-H\",\n \"UniKS-UTF16-V\",\n \"UniKS-UTF32-H\",\n \"UniKS-UTF32-V\",\n \"UniKS-UTF8-H\",\n \"UniKS-UTF8-V\",\n \"V\",\n \"WP-Symbol\",\n];\n\n// Heuristic to avoid hanging the worker-thread for CMap data with ridiculously\n// large ranges, such as e.g. 0xFFFFFFFF (fixes issue11922_reduced.pdf).\nconst MAX_MAP_RANGE = 2 ** 24 - 1; // = 0xFFFFFF\n\n// CMap, not to be confused with TrueType's cmap.\nclass CMap {\n constructor(builtInCMap = false) {\n // Codespace ranges are stored as follows:\n // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\n // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\n this.codespaceRanges = [[], [], [], []];\n this.numCodespaceRanges = 0;\n // Map entries have one of two forms.\n // - cid chars are 16-bit unsigned integers, stored as integers.\n // - bf chars are variable-length byte sequences, stored as strings, with\n // one byte per character.\n this._map = [];\n this.name = \"\";\n this.vertical = false;\n this.useCMap = null;\n this.builtInCMap = builtInCMap;\n }\n\n addCodespaceRange(n, low, high) {\n this.codespaceRanges[n - 1].push(low, high);\n this.numCodespaceRanges++;\n }\n\n mapCidRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n }\n while (low <= high) {\n this._map[low++] = dstLow++;\n }\n }\n\n mapBfRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n }\n const lastByte = dstLow.length - 1;\n while (low <= high) {\n this._map[low++] = dstLow;\n // Only the last byte has to be incremented (in the normal case).\n const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\n if (nextCharCode > 0xff) {\n dstLow =\n dstLow.substring(0, lastByte - 1) +\n String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) +\n \"\\x00\";\n continue;\n }\n dstLow =\n dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\n }\n }\n\n mapBfRangeToArray(low, high, array) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n }\n const ii = array.length;\n let i = 0;\n while (low <= high && i < ii) {\n this._map[low] = array[i++];\n ++low;\n }\n }\n\n // This is used for both bf and cid chars.\n mapOne(src, dst) {\n this._map[src] = dst;\n }\n\n lookup(code) {\n return this._map[code];\n }\n\n contains(code) {\n return this._map[code] !== undefined;\n }\n\n forEach(callback) {\n // Most maps have fewer than 65536 entries, and for those we use normal\n // array iteration. But really sparse tables are possible -- e.g. with\n // indices in the *billions*. For such tables we use for..in, which isn't\n // ideal because it stringifies the indices for all present elements, but\n // it does avoid iterating over every undefined entry.\n const map = this._map;\n const length = map.length;\n if (length <= 0x10000) {\n for (let i = 0; i < length; i++) {\n if (map[i] !== undefined) {\n callback(i, map[i]);\n }\n }\n } else {\n for (const i in map) {\n callback(i, map[i]);\n }\n }\n }\n\n charCodeOf(value) {\n // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n // are both very sparse and very large (see issue8372.pdf).\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n\n getMap() {\n return this._map;\n }\n\n readCharCode(str, offset, out) {\n let c = 0;\n const codespaceRanges = this.codespaceRanges;\n // 9.7.6.2 CMap Mapping\n // The code length is at most 4.\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;\n // Check each codespace range to see if it falls within.\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (c >= low && c <= high) {\n out.charcode = c;\n out.length = n + 1;\n return;\n }\n }\n }\n out.charcode = 0;\n out.length = 1;\n }\n\n getCharCodeLength(charCode) {\n const codespaceRanges = this.codespaceRanges;\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n // Check each codespace range to see if it falls within.\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (charCode >= low && charCode <= high) {\n return n + 1;\n }\n }\n }\n return 1;\n }\n\n get length() {\n return this._map.length;\n }\n\n get isIdentityCMap() {\n if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n return false;\n }\n if (this._map.length !== 0x10000) {\n return false;\n }\n for (let i = 0; i < 0x10000; i++) {\n if (this._map[i] !== i) {\n return false;\n }\n }\n return true;\n }\n}\n\n// A special case of CMap, where the _map array implicitly has a length of\n// 65536 and each element is equal to its index.\nclass IdentityCMap extends CMap {\n constructor(vertical, n) {\n super();\n\n this.vertical = vertical;\n this.addCodespaceRange(n, 0, 0xffff);\n }\n\n mapCidRange(low, high, dstLow) {\n unreachable(\"should not call mapCidRange\");\n }\n\n mapBfRange(low, high, dstLow) {\n unreachable(\"should not call mapBfRange\");\n }\n\n mapBfRangeToArray(low, high, array) {\n unreachable(\"should not call mapBfRangeToArray\");\n }\n\n mapOne(src, dst) {\n unreachable(\"should not call mapCidOne\");\n }\n\n lookup(code) {\n return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n }\n\n contains(code) {\n return Number.isInteger(code) && code <= 0xffff;\n }\n\n forEach(callback) {\n for (let i = 0; i <= 0xffff; i++) {\n callback(i, i);\n }\n }\n\n charCodeOf(value) {\n return Number.isInteger(value) && value <= 0xffff ? value : -1;\n }\n\n getMap() {\n // Sometimes identity maps must be instantiated, but it's rare.\n const map = new Array(0x10000);\n for (let i = 0; i <= 0xffff; i++) {\n map[i] = i;\n }\n return map;\n }\n\n get length() {\n return 0x10000;\n }\n\n // eslint-disable-next-line getter-return\n get isIdentityCMap() {\n unreachable(\"should not access .isIdentityCMap\");\n }\n}\n\nconst BinaryCMapReader = (function BinaryCMapReaderClosure() {\n function hexToInt(a, size) {\n let n = 0;\n for (let i = 0; i <= size; i++) {\n n = (n << 8) | a[i];\n }\n return n >>> 0;\n }\n\n function hexToStr(a, size) {\n // This code is hot. Special-case some common values to avoid creating an\n // object with subarray().\n if (size === 1) {\n return String.fromCharCode(a[0], a[1]);\n }\n if (size === 3) {\n return String.fromCharCode(a[0], a[1], a[2], a[3]);\n }\n return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n }\n\n function addHex(a, b, size) {\n let c = 0;\n for (let i = size; i >= 0; i--) {\n c += a[i] + b[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n function incHex(a, size) {\n let c = 1;\n for (let i = size; i >= 0 && c > 0; i--) {\n c += a[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n const MAX_NUM_SIZE = 16;\n const MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n class BinaryCMapStream {\n constructor(data) {\n this.buffer = data;\n this.pos = 0;\n this.end = data.length;\n this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n }\n\n readByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.buffer[this.pos++];\n }\n\n readNumber() {\n let n = 0;\n let last;\n do {\n const b = this.readByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n n = (n << 7) | (b & 0x7f);\n } while (!last);\n return n;\n }\n\n readSigned() {\n const n = this.readNumber();\n return n & 1 ? ~(n >>> 1) : n >>> 1;\n }\n\n readHex(num, size) {\n num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n this.pos += size + 1;\n }\n\n readHexNumber(num, size) {\n let last;\n const stack = this.tmpBuf;\n let sp = 0;\n do {\n const b = this.readByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n stack[sp++] = b & 0x7f;\n } while (!last);\n let i = size,\n buffer = 0,\n bufferSize = 0;\n while (i >= 0) {\n while (bufferSize < 8 && stack.length > 0) {\n buffer |= stack[--sp] << bufferSize;\n bufferSize += 7;\n }\n num[i] = buffer & 255;\n i--;\n buffer >>= 8;\n bufferSize -= 8;\n }\n }\n\n readHexSigned(num, size) {\n this.readHexNumber(num, size);\n const sign = num[size] & 1 ? 255 : 0;\n let c = 0;\n for (let i = 0; i <= size; i++) {\n c = ((c & 1) << 8) | num[i];\n num[i] = (c >> 1) ^ sign;\n }\n }\n\n readString() {\n const len = this.readNumber();\n let s = \"\";\n for (let i = 0; i < len; i++) {\n s += String.fromCharCode(this.readNumber());\n }\n return s;\n }\n }\n\n // eslint-disable-next-line no-shadow\n class BinaryCMapReader {\n async process(data, cMap, extend) {\n const stream = new BinaryCMapStream(data);\n const header = stream.readByte();\n cMap.vertical = !!(header & 1);\n\n let useCMap = null;\n const start = new Uint8Array(MAX_NUM_SIZE);\n const end = new Uint8Array(MAX_NUM_SIZE);\n const char = new Uint8Array(MAX_NUM_SIZE);\n const charCode = new Uint8Array(MAX_NUM_SIZE);\n const tmp = new Uint8Array(MAX_NUM_SIZE);\n let code;\n\n let b;\n while ((b = stream.readByte()) >= 0) {\n const type = b >> 5;\n if (type === 7) {\n // metadata, e.g. comment or usecmap\n switch (b & 0x1f) {\n case 0:\n stream.readString(); // skipping comment\n break;\n case 1:\n useCMap = stream.readString();\n break;\n }\n continue;\n }\n const sequence = !!(b & 0x10);\n const dataSize = b & 15;\n\n if (dataSize + 1 > MAX_NUM_SIZE) {\n throw new Error(\"BinaryCMapReader.process: Invalid dataSize.\");\n }\n\n const ucs2DataSize = 1;\n const subitemsCount = stream.readNumber();\n switch (type) {\n case 0: // codespacerange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(\n dataSize + 1,\n hexToInt(start, dataSize),\n hexToInt(end, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(\n dataSize + 1,\n hexToInt(start, dataSize),\n hexToInt(end, dataSize)\n );\n }\n break;\n case 1: // notdefrange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber(); // code\n // undefined range, skipping\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber(); // code\n // nop\n }\n break;\n case 2: // cidchar\n stream.readHex(char, dataSize);\n code = stream.readNumber();\n cMap.mapOne(hexToInt(char, dataSize), code);\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, dataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, dataSize);\n addHex(char, tmp, dataSize);\n }\n code = stream.readSigned() + (code + 1);\n cMap.mapOne(hexToInt(char, dataSize), code);\n }\n break;\n case 3: // cidrange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(\n hexToInt(start, dataSize),\n hexToInt(end, dataSize),\n code\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n if (!sequence) {\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(\n hexToInt(start, dataSize),\n hexToInt(end, dataSize),\n code\n );\n }\n break;\n case 4: // bfchar\n stream.readHex(char, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapOne(\n hexToInt(char, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, ucs2DataSize);\n addHex(char, tmp, ucs2DataSize);\n }\n incHex(charCode, dataSize);\n stream.readHexSigned(tmp, dataSize);\n addHex(charCode, tmp, dataSize);\n cMap.mapOne(\n hexToInt(char, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n }\n break;\n case 5: // bfrange\n stream.readHex(start, ucs2DataSize);\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(\n hexToInt(start, ucs2DataSize),\n hexToInt(end, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(start, ucs2DataSize);\n addHex(start, end, ucs2DataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(\n hexToInt(start, ucs2DataSize),\n hexToInt(end, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n }\n break;\n default:\n throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\n }\n }\n\n if (useCMap) {\n return extend(useCMap);\n }\n return cMap;\n }\n }\n\n return BinaryCMapReader;\n})();\n\nconst CMapFactory = (function CMapFactoryClosure() {\n function strToInt(str) {\n let a = 0;\n for (let i = 0; i < str.length; i++) {\n a = (a << 8) | str.charCodeAt(i);\n }\n return a >>> 0;\n }\n\n function expectString(obj) {\n if (typeof obj !== \"string\") {\n throw new FormatError(\"Malformed CMap: expected string.\");\n }\n }\n\n function expectInt(obj) {\n if (!Number.isInteger(obj)) {\n throw new FormatError(\"Malformed CMap: expected int.\");\n }\n }\n\n function parseBfChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n // TODO are /dstName used?\n expectString(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseBfRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n if (Number.isInteger(obj) || typeof obj === \"string\") {\n const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n cMap.mapBfRange(low, high, dstLow);\n } else if (isCmd(obj, \"[\")) {\n obj = lexer.getObj();\n const array = [];\n while (!isCmd(obj, \"]\") && obj !== EOF) {\n array.push(obj);\n obj = lexer.getObj();\n }\n cMap.mapBfRangeToArray(low, high, array);\n } else {\n break;\n }\n }\n throw new FormatError(\"Invalid bf range.\");\n }\n\n function parseCidChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseCidRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dstLow = obj;\n cMap.mapCidRange(low, high, dstLow);\n }\n }\n\n function parseCodespaceRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcodespacerange\")) {\n return;\n }\n if (typeof obj !== \"string\") {\n break;\n }\n const low = strToInt(obj);\n obj = lexer.getObj();\n if (typeof obj !== \"string\") {\n break;\n }\n const high = strToInt(obj);\n cMap.addCodespaceRange(obj.length, low, high);\n }\n throw new FormatError(\"Invalid codespace range.\");\n }\n\n function parseWMode(cMap, lexer) {\n const obj = lexer.getObj();\n if (Number.isInteger(obj)) {\n cMap.vertical = !!obj;\n }\n }\n\n function parseCMapName(cMap, lexer) {\n const obj = lexer.getObj();\n if (obj instanceof Name) {\n cMap.name = obj.name;\n }\n }\n\n async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n let previous, embeddedUseCMap;\n objLoop: while (true) {\n try {\n const obj = lexer.getObj();\n if (obj === EOF) {\n break;\n } else if (obj instanceof Name) {\n if (obj.name === \"WMode\") {\n parseWMode(cMap, lexer);\n } else if (obj.name === \"CMapName\") {\n parseCMapName(cMap, lexer);\n }\n previous = obj;\n } else if (obj instanceof Cmd) {\n switch (obj.cmd) {\n case \"endcmap\":\n break objLoop;\n case \"usecmap\":\n if (previous instanceof Name) {\n embeddedUseCMap = previous.name;\n }\n break;\n case \"begincodespacerange\":\n parseCodespaceRange(cMap, lexer);\n break;\n case \"beginbfchar\":\n parseBfChar(cMap, lexer);\n break;\n case \"begincidchar\":\n parseCidChar(cMap, lexer);\n break;\n case \"beginbfrange\":\n parseBfRange(cMap, lexer);\n break;\n case \"begincidrange\":\n parseCidRange(cMap, lexer);\n break;\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Invalid cMap data: \" + ex);\n continue;\n }\n }\n\n if (!useCMap && embeddedUseCMap) {\n // Load the useCMap definition from the file only if there wasn't one\n // specified.\n useCMap = embeddedUseCMap;\n }\n if (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n }\n return cMap;\n }\n\n async function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\n // If there aren't any code space ranges defined clone all the parent ones\n // into this cMap.\n if (cMap.numCodespaceRanges === 0) {\n const useCodespaceRanges = cMap.useCMap.codespaceRanges;\n for (let i = 0; i < useCodespaceRanges.length; i++) {\n cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n }\n cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n }\n // Merge the map into the current one, making sure not to override\n // any previously defined entries.\n cMap.useCMap.forEach(function (key, value) {\n if (!cMap.contains(key)) {\n cMap.mapOne(key, cMap.useCMap.lookup(key));\n }\n });\n\n return cMap;\n }\n\n async function createBuiltInCMap(name, fetchBuiltInCMap) {\n if (name === \"Identity-H\") {\n return new IdentityCMap(false, 2);\n } else if (name === \"Identity-V\") {\n return new IdentityCMap(true, 2);\n }\n if (!BUILT_IN_CMAPS.includes(name)) {\n throw new Error(\"Unknown CMap name: \" + name);\n }\n if (!fetchBuiltInCMap) {\n throw new Error(\"Built-in CMap parameters are not provided.\");\n }\n\n const { cMapData, compressionType } = await fetchBuiltInCMap(name);\n const cMap = new CMap(true);\n\n if (compressionType === CMapCompressionType.BINARY) {\n return new BinaryCMapReader().process(cMapData, cMap, useCMap => {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n });\n }\n if (compressionType === CMapCompressionType.NONE) {\n const lexer = new Lexer(new Stream(cMapData));\n return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n }\n throw new Error(\n \"TODO: Only BINARY/NONE CMap compression is currently supported.\"\n );\n }\n\n return {\n async create(params) {\n const encoding = params.encoding;\n const fetchBuiltInCMap = params.fetchBuiltInCMap;\n const useCMap = params.useCMap;\n\n if (encoding instanceof Name) {\n return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n } else if (encoding instanceof BaseStream) {\n const parsedCMap = await parseCMap(\n /* cMap = */ new CMap(),\n /* lexer = */ new Lexer(encoding),\n fetchBuiltInCMap,\n useCMap\n );\n\n if (parsedCMap.isIdentityCMap) {\n return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n }\n return parsedCMap;\n }\n throw new Error(\"Encoding required.\");\n },\n };\n})();\n\nexport { CMap, CMapFactory, IdentityCMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FormatError,\n info,\n StreamType,\n warn,\n} from \"../shared/util.js\";\nimport { Cmd, Dict, EOF, isCmd, Name, Ref } from \"./primitives.js\";\nimport {\n isWhiteSpace,\n MissingDataException,\n ParserEOFException,\n} from \"./core_utils.js\";\nimport { Ascii85Stream } from \"./ascii_85_stream.js\";\nimport { AsciiHexStream } from \"./ascii_hex_stream.js\";\nimport { CCITTFaxStream } from \"./ccitt_stream.js\";\nimport { FlateStream } from \"./flate_stream.js\";\nimport { Jbig2Stream } from \"./jbig2_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxStream } from \"./jpx_stream.js\";\nimport { LZWStream } from \"./lzw_stream.js\";\nimport { NullStream } from \"./stream.js\";\nimport { PredictorStream } from \"./predictor_stream.js\";\nimport { RunLengthStream } from \"./run_length_stream.js\";\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nconst MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n const bytesLength = bytes.length;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n bytesLength < MAX_ADLER32_LENGTH,\n 'computeAdler32: Unsupported \"bytes\" length.'\n );\n }\n let a = 1,\n b = 0;\n for (let i = 0; i < bytesLength; ++i) {\n // No modulo required in the loop if `bytesLength < 5552`.\n a += bytes[i] & 0xff;\n b += a;\n }\n return (b % 65521 << 16) | a % 65521;\n}\n\nclass Parser {\n constructor({ lexer, xref, allowStreams = false, recoveryMode = false }) {\n this.lexer = lexer;\n this.xref = xref;\n this.allowStreams = allowStreams;\n this.recoveryMode = recoveryMode;\n\n this.imageCache = Object.create(null);\n this.refill();\n }\n\n refill() {\n this.buf1 = this.lexer.getObj();\n this.buf2 = this.lexer.getObj();\n }\n\n shift() {\n if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n this.buf1 = this.buf2;\n this.buf2 = null;\n } else {\n this.buf1 = this.buf2;\n this.buf2 = this.lexer.getObj();\n }\n }\n\n tryShift() {\n try {\n this.shift();\n return true;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n // Upon failure, the caller should reset this.lexer.pos to a known good\n // state and call this.shift() twice to reset the buffers.\n return false;\n }\n }\n\n getObj(cipherTransform = null) {\n const buf1 = this.buf1;\n this.shift();\n\n if (buf1 instanceof Cmd) {\n switch (buf1.cmd) {\n case \"BI\": // inline image\n return this.makeInlineImage(cipherTransform);\n case \"[\": // array\n const array = [];\n while (!isCmd(this.buf1, \"]\") && this.buf1 !== EOF) {\n array.push(this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return array;\n }\n throw new ParserEOFException(\"End of file inside array.\");\n }\n this.shift();\n return array;\n case \"<<\": // dictionary or stream\n const dict = new Dict(this.xref);\n while (!isCmd(this.buf1, \">>\") && this.buf1 !== EOF) {\n if (!(this.buf1 instanceof Name)) {\n info(\"Malformed dictionary: key must be a name object\");\n this.shift();\n continue;\n }\n\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return dict;\n }\n throw new ParserEOFException(\"End of file inside dictionary.\");\n }\n\n // Stream objects are not allowed inside content streams or\n // object streams.\n if (isCmd(this.buf2, \"stream\")) {\n return this.allowStreams\n ? this.makeStream(dict, cipherTransform)\n : dict;\n }\n this.shift();\n return dict;\n default:\n // simple object\n return buf1;\n }\n }\n\n if (Number.isInteger(buf1)) {\n // indirect reference or integer\n if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n const ref = Ref.get(buf1, this.buf1);\n this.shift();\n this.shift();\n return ref;\n }\n return buf1;\n }\n\n if (typeof buf1 === \"string\") {\n if (cipherTransform) {\n return cipherTransform.decryptString(buf1);\n }\n return buf1;\n }\n\n // simple object\n return buf1;\n }\n\n /**\n * Find the end of the stream by searching for the /EI\\s/.\n * @returns {number} The inline stream length.\n */\n findDefaultInlineStreamEnd(stream) {\n const E = 0x45,\n I = 0x49,\n SPACE = 0x20,\n LF = 0xa,\n CR = 0xd,\n NUL = 0x0;\n const lexer = this.lexer,\n startPos = stream.pos,\n n = 10;\n let state = 0,\n ch,\n maybeEIPos;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else {\n assert(state === 2, \"findDefaultInlineStreamEnd - invalid state.\");\n if (ch === SPACE || ch === LF || ch === CR) {\n maybeEIPos = stream.pos;\n // Let's check that the next `n` bytes are ASCII... just to be sure.\n const followingBytes = stream.peekBytes(n);\n for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n ch = followingBytes[i];\n if (ch === NUL && followingBytes[i + 1] !== NUL) {\n // NUL bytes are not supposed to occur *outside* of inline\n // images, but some PDF generators violate that assumption,\n // thus breaking the EI detection heuristics used below.\n //\n // However, we can't unconditionally treat NUL bytes as \"ASCII\",\n // since that *could* result in inline images being truncated.\n //\n // To attempt to address this, we'll still treat any *sequence*\n // of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\n // continue checking the `followingBytes` (fixes issue8823.pdf).\n continue;\n }\n if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n // Not a LF, CR, SPACE or any visible ASCII character, i.e.\n // it's binary stuff. Resetting the state.\n state = 0;\n break;\n }\n }\n\n if (state !== 2) {\n continue;\n }\n // Check that the \"EI\" sequence isn't part of the image data, since\n // that would cause the image to be truncated (fixes issue11124.pdf).\n if (lexer.knownCommands) {\n const nextObj = lexer.peekObj();\n if (nextObj instanceof Cmd && !lexer.knownCommands[nextObj.cmd]) {\n // Not a valid command, i.e. the inline image data *itself*\n // contains an \"EI\" sequence. Resetting the state.\n state = 0;\n }\n } else {\n warn(\n \"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\"\n );\n }\n\n if (state === 2) {\n break; // Finished!\n }\n } else {\n state = 0;\n }\n }\n }\n\n if (ch === -1) {\n warn(\n \"findDefaultInlineStreamEnd: \" +\n \"Reached the end of the stream without finding a valid EI marker\"\n );\n if (maybeEIPos) {\n warn('... trying to recover by using the last \"EI\" occurrence.');\n stream.skip(-(stream.pos - maybeEIPos)); // Reset the stream position.\n }\n }\n\n let endOffset = 4;\n stream.skip(-endOffset); // Set the stream position to just before \"EI\".\n ch = stream.peekByte();\n stream.skip(endOffset); // ... and remember to reset the stream position.\n\n // Ensure that we don't accidentally truncate the inline image, when the\n // data is immediately followed by the \"EI\" marker (fixes issue10388.pdf).\n if (!isWhiteSpace(ch)) {\n endOffset--;\n }\n return stream.pos - endOffset - startPos;\n }\n\n /**\n * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\n * @returns {number} The inline stream length.\n */\n findDCTDecodeInlineStreamEnd(stream) {\n const startPos = stream.pos;\n let foundEOI = false,\n b,\n markerLength;\n while ((b = stream.getByte()) !== -1) {\n if (b !== 0xff) {\n // Not a valid marker.\n continue;\n }\n switch (stream.getByte()) {\n case 0x00: // Byte stuffing.\n // 0xFF00 appears to be a very common byte sequence in JPEG images.\n break;\n\n case 0xff: // Fill byte.\n // Avoid skipping a valid marker, resetting the stream position.\n stream.skip(-1);\n break;\n\n case 0xd9: // EOI\n foundEOI = true;\n break;\n\n case 0xc0: // SOF0\n case 0xc1: // SOF1\n case 0xc2: // SOF2\n case 0xc3: // SOF3\n /* falls through */\n case 0xc5: // SOF5\n case 0xc6: // SOF6\n case 0xc7: // SOF7\n /* falls through */\n case 0xc9: // SOF9\n case 0xca: // SOF10\n case 0xcb: // SOF11\n /* falls through */\n case 0xcd: // SOF13\n case 0xce: // SOF14\n case 0xcf: // SOF15\n /* falls through */\n case 0xc4: // DHT\n case 0xcc: // DAC\n /* falls through */\n case 0xda: // SOS\n case 0xdb: // DQT\n case 0xdc: // DNL\n case 0xdd: // DRI\n case 0xde: // DHP\n case 0xdf: // EXP\n /* falls through */\n case 0xe0: // APP0\n case 0xe1: // APP1\n case 0xe2: // APP2\n case 0xe3: // APP3\n case 0xe4: // APP4\n case 0xe5: // APP5\n case 0xe6: // APP6\n case 0xe7: // APP7\n case 0xe8: // APP8\n case 0xe9: // APP9\n case 0xea: // APP10\n case 0xeb: // APP11\n case 0xec: // APP12\n case 0xed: // APP13\n case 0xee: // APP14\n case 0xef: // APP15\n /* falls through */\n case 0xfe: // COM\n // The marker should be followed by the length of the segment.\n markerLength = stream.getUint16();\n if (markerLength > 2) {\n // |markerLength| contains the byte length of the marker segment,\n // including its own length (2 bytes) and excluding the marker.\n stream.skip(markerLength - 2); // Jump to the next marker.\n } else {\n // The marker length is invalid, resetting the stream position.\n stream.skip(-2);\n }\n break;\n }\n if (foundEOI) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (b === -1) {\n warn(\n \"Inline DCTDecode image stream: \" +\n \"EOI marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\n * @returns {number} The inline stream length.\n */\n findASCII85DecodeInlineStreamEnd(stream) {\n const TILDE = 0x7e,\n GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === TILDE) {\n const tildePos = stream.pos;\n\n ch = stream.peekByte();\n // Handle corrupt PDF documents which contains whitespace \"inside\" of\n // the EOD marker (fixes issue10614.pdf).\n while (isWhiteSpace(ch)) {\n stream.skip();\n ch = stream.peekByte();\n }\n if (ch === GT) {\n stream.skip();\n break;\n }\n // Handle corrupt PDF documents which contains truncated EOD markers,\n // where the '>' character is missing (fixes issue11385.pdf).\n if (stream.pos > tildePos) {\n const maybeEI = stream.peekBytes(2);\n if (maybeEI[0] === /* E = */ 0x45 && maybeEI[1] === /* I = */ 0x49) {\n break;\n }\n }\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\n \"Inline ASCII85Decode image stream: \" +\n \"EOD marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\n * @returns {number} The inline stream length.\n */\n findASCIIHexDecodeInlineStreamEnd(stream) {\n const GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === GT) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\n \"Inline ASCIIHexDecode image stream: \" +\n \"EOD marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Skip over the /EI/ for streams where we search for an EOD marker.\n */\n inlineStreamSkipEI(stream) {\n const E = 0x45,\n I = 0x49;\n let state = 0,\n ch;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else if (state === 2) {\n break;\n }\n }\n }\n\n makeInlineImage(cipherTransform) {\n const lexer = this.lexer;\n const stream = lexer.stream;\n\n // Parse dictionary.\n const dict = new Dict(this.xref);\n let dictLength;\n while (!isCmd(this.buf1, \"ID\") && this.buf1 !== EOF) {\n if (!(this.buf1 instanceof Name)) {\n throw new FormatError(\"Dictionary key must be a name object\");\n }\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (lexer.beginInlineImagePos !== -1) {\n dictLength = stream.pos - lexer.beginInlineImagePos;\n }\n\n // Extract the name of the first (i.e. the current) image filter.\n const filter = dict.get(\"F\", \"Filter\");\n let filterName;\n if (filter instanceof Name) {\n filterName = filter.name;\n } else if (Array.isArray(filter)) {\n const filterZero = this.xref.fetchIfRef(filter[0]);\n if (filterZero instanceof Name) {\n filterName = filterZero.name;\n }\n }\n\n // Parse image stream.\n const startPos = stream.pos;\n let length;\n switch (filterName) {\n case \"DCT\":\n case \"DCTDecode\":\n length = this.findDCTDecodeInlineStreamEnd(stream);\n break;\n case \"A85\":\n case \"ASCII85Decode\":\n length = this.findASCII85DecodeInlineStreamEnd(stream);\n break;\n case \"AHx\":\n case \"ASCIIHexDecode\":\n length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n break;\n default:\n length = this.findDefaultInlineStreamEnd(stream);\n }\n let imageStream = stream.makeSubStream(startPos, length, dict);\n\n // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\n // adler32 checksum.\n let cacheKey;\n if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n const imageBytes = imageStream.getBytes();\n imageStream.reset();\n\n const initialStreamPos = stream.pos;\n // Set the stream position to the beginning of the dictionary data...\n stream.pos = lexer.beginInlineImagePos;\n // ... and fetch the bytes of the *entire* dictionary.\n const dictBytes = stream.getBytes(dictLength);\n // Finally, don't forget to reset the stream position.\n stream.pos = initialStreamPos;\n\n cacheKey = computeAdler32(imageBytes) + \"_\" + computeAdler32(dictBytes);\n\n const cacheEntry = this.imageCache[cacheKey];\n if (cacheEntry !== undefined) {\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n\n cacheEntry.reset();\n return cacheEntry;\n }\n }\n\n if (cipherTransform) {\n imageStream = cipherTransform.createStream(imageStream, length);\n }\n\n imageStream = this.filter(imageStream, dict, length);\n imageStream.dict = dict;\n if (cacheKey !== undefined) {\n imageStream.cacheKey = `inline_${length}_${cacheKey}`;\n this.imageCache[cacheKey] = imageStream;\n }\n\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n\n return imageStream;\n }\n\n _findStreamLength(startPos, signature) {\n const { stream } = this.lexer;\n stream.pos = startPos;\n\n const SCAN_BLOCK_LENGTH = 2048;\n const signatureLength = signature.length;\n\n while (stream.pos < stream.end) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n const scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n break;\n }\n let pos = 0;\n while (pos < scanLength) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos;\n return stream.pos - startPos;\n }\n pos++;\n }\n stream.pos += scanLength;\n }\n return -1;\n }\n\n makeStream(dict, cipherTransform) {\n const lexer = this.lexer;\n let stream = lexer.stream;\n\n // Get the stream's start position.\n lexer.skipToNextLine();\n const startPos = stream.pos - 1;\n\n // Get the length.\n let length = dict.get(\"Length\");\n if (!Number.isInteger(length)) {\n info(`Bad length \"${length && length.toString()}\" in stream.`);\n length = 0;\n }\n\n // Skip over the stream data.\n stream.pos = startPos + length;\n lexer.nextChar();\n\n // Shift '>>' and check whether the new object marks the end of the stream.\n if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n this.shift(); // 'stream'\n } else {\n // Bad stream length, scanning for endstream command.\n const ENDSTREAM_SIGNATURE = new Uint8Array([\n 0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,\n ]);\n let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n if (actualLength < 0) {\n // Only allow limited truncation of the endstream signature,\n // to prevent false positives.\n const MAX_TRUNCATION = 1;\n // Check if the PDF generator included truncated endstream commands,\n // such as e.g. \"endstrea\" (fixes issue10004.pdf).\n for (let i = 1; i <= MAX_TRUNCATION; i++) {\n const end = ENDSTREAM_SIGNATURE.length - i;\n const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n const maybeLength = this._findStreamLength(\n startPos,\n TRUNCATED_SIGNATURE\n );\n if (maybeLength >= 0) {\n // Ensure that the byte immediately following the truncated\n // endstream command is a space, to prevent false positives.\n const lastByte = stream.peekBytes(end + 1)[end];\n if (!isWhiteSpace(lastByte)) {\n break;\n }\n info(\n `Found \"${bytesToString(TRUNCATED_SIGNATURE)}\" when ` +\n \"searching for endstream command.\"\n );\n actualLength = maybeLength;\n break;\n }\n }\n\n if (actualLength < 0) {\n throw new FormatError(\"Missing endstream command.\");\n }\n }\n length = actualLength;\n\n lexer.nextChar();\n this.shift();\n this.shift();\n }\n this.shift(); // 'endstream'\n\n stream = stream.makeSubStream(startPos, length, dict);\n if (cipherTransform) {\n stream = cipherTransform.createStream(stream, length);\n }\n stream = this.filter(stream, dict, length);\n stream.dict = dict;\n return stream;\n }\n\n filter(stream, dict, length) {\n let filter = dict.get(\"F\", \"Filter\");\n let params = dict.get(\"DP\", \"DecodeParms\");\n\n if (filter instanceof Name) {\n if (Array.isArray(params)) {\n warn(\"/DecodeParms should not be an Array, when /Filter is a Name.\");\n }\n return this.makeFilter(stream, filter.name, length, params);\n }\n\n let maybeLength = length;\n if (Array.isArray(filter)) {\n const filterArray = filter;\n const paramsArray = params;\n for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n filter = this.xref.fetchIfRef(filterArray[i]);\n if (!(filter instanceof Name)) {\n throw new FormatError(`Bad filter name \"${filter}\"`);\n }\n\n params = null;\n if (Array.isArray(paramsArray) && i in paramsArray) {\n params = this.xref.fetchIfRef(paramsArray[i]);\n }\n stream = this.makeFilter(stream, filter.name, maybeLength, params);\n // After the first stream the `length` variable is invalid.\n maybeLength = null;\n }\n }\n return stream;\n }\n\n makeFilter(stream, name, maybeLength, params) {\n // Since the 'Length' entry in the stream dictionary can be completely\n // wrong, e.g. zero for non-empty streams, only skip parsing the stream\n // when we can be absolutely certain that it actually is empty.\n if (maybeLength === 0) {\n warn(`Empty \"${name}\" stream.`);\n return new NullStream();\n }\n const xrefStats = this.xref.stats;\n\n try {\n switch (name) {\n case \"Fl\":\n case \"FlateDecode\":\n xrefStats.addStreamType(StreamType.FLATE);\n if (params) {\n return new PredictorStream(\n new FlateStream(stream, maybeLength),\n maybeLength,\n params\n );\n }\n return new FlateStream(stream, maybeLength);\n case \"LZW\":\n case \"LZWDecode\":\n xrefStats.addStreamType(StreamType.LZW);\n let earlyChange = 1;\n if (params) {\n if (params.has(\"EarlyChange\")) {\n earlyChange = params.get(\"EarlyChange\");\n }\n return new PredictorStream(\n new LZWStream(stream, maybeLength, earlyChange),\n maybeLength,\n params\n );\n }\n return new LZWStream(stream, maybeLength, earlyChange);\n case \"DCT\":\n case \"DCTDecode\":\n xrefStats.addStreamType(StreamType.DCT);\n return new JpegStream(stream, maybeLength, params);\n case \"JPX\":\n case \"JPXDecode\":\n xrefStats.addStreamType(StreamType.JPX);\n return new JpxStream(stream, maybeLength, params);\n case \"A85\":\n case \"ASCII85Decode\":\n xrefStats.addStreamType(StreamType.A85);\n return new Ascii85Stream(stream, maybeLength);\n case \"AHx\":\n case \"ASCIIHexDecode\":\n xrefStats.addStreamType(StreamType.AHX);\n return new AsciiHexStream(stream, maybeLength);\n case \"CCF\":\n case \"CCITTFaxDecode\":\n xrefStats.addStreamType(StreamType.CCF);\n return new CCITTFaxStream(stream, maybeLength, params);\n case \"RL\":\n case \"RunLengthDecode\":\n xrefStats.addStreamType(StreamType.RLX);\n return new RunLengthStream(stream, maybeLength);\n case \"JBIG2Decode\":\n xrefStats.addStreamType(StreamType.JBIG);\n return new Jbig2Stream(stream, maybeLength, params);\n }\n warn(`Filter \"${name}\" is not supported.`);\n return stream;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Invalid stream: \"${ex}\"`);\n return new NullStream();\n }\n }\n}\n\n// A '1' in this array means the character is white space. A '1' or\n// '2' means the character ends a name or command.\n// prettier-ignore\nconst specialChars = [\n 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x\n 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // fx\n];\n\nfunction toHexDigit(ch) {\n if (ch >= /* '0' = */ 0x30 && ch /* '9' = */ <= 0x39) {\n return ch & 0x0f;\n }\n if (\n (ch >= /* 'A' = */ 0x41 && ch <= /* 'F' = */ 0x46) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'f' = */ 0x66)\n ) {\n return (ch & 0x0f) + 9;\n }\n return -1;\n}\n\nclass Lexer {\n constructor(stream, knownCommands = null) {\n this.stream = stream;\n this.nextChar();\n\n // While lexing, we build up many strings one char at a time. Using += for\n // this can result in lots of garbage strings. It's better to build an\n // array of single-char strings and then join() them together at the end.\n // And reusing a single array (i.e. |this.strBuf|) over and over for this\n // purpose uses less memory than using a new array for each string.\n this.strBuf = [];\n\n // The PDFs might have \"glued\" commands with other commands, operands or\n // literals, e.g. \"q1\". The knownCommands is a dictionary of the valid\n // commands and their prefixes. The prefixes are built the following way:\n // if there a command that is a prefix of the other valid command or\n // literal (e.g. 'f' and 'false') the following prefixes must be included,\n // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\n // other commands or literals as a prefix. The knowCommands is optional.\n this.knownCommands = knownCommands;\n\n this._hexStringNumWarn = 0;\n this.beginInlineImagePos = -1;\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n peekChar() {\n return this.stream.peekByte();\n }\n\n getNumber() {\n let ch = this.currentChar;\n let eNotation = false;\n let divideBy = 0; // Different from 0 if it's a floating point value.\n let sign = 0;\n\n if (ch === /* '-' = */ 0x2d) {\n sign = -1;\n ch = this.nextChar();\n\n if (ch === /* '-' = */ 0x2d) {\n // Ignore double negative (this is consistent with Adobe Reader).\n ch = this.nextChar();\n }\n } else if (ch === /* '+' = */ 0x2b) {\n sign = 1;\n ch = this.nextChar();\n }\n if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n // Ignore line-breaks (this is consistent with Adobe Reader).\n do {\n ch = this.nextChar();\n } while (ch === 0x0a || ch === 0x0d);\n }\n if (ch === /* '.' = */ 0x2e) {\n divideBy = 10;\n ch = this.nextChar();\n }\n if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n if (isWhiteSpace(ch) || ch === /* EOF = */ -1) {\n // This is consistent with Adobe Reader (fixes issue9252.pdf).\n if (divideBy === 10 && sign === 0) {\n warn(\"Lexer.getNumber - treating a single decimal point as zero.\");\n return 0;\n }\n // This is consistent with Adobe Reader (fixes bug1753983.pdf).\n if (divideBy === 0 && sign === -1) {\n warn(\"Lexer.getNumber - treating a single minus sign as zero.\");\n return 0;\n }\n }\n throw new FormatError(\n `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`\n );\n }\n\n sign = sign || 1;\n let baseValue = ch - 0x30; // '0'\n let powerValue = 0;\n let powerValueSign = 1;\n\n while ((ch = this.nextChar()) >= 0) {\n if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n const currentDigit = ch - 0x30; // '0'\n if (eNotation) {\n // We are after an 'e' or 'E'.\n powerValue = powerValue * 10 + currentDigit;\n } else {\n if (divideBy !== 0) {\n // We are after a point.\n divideBy *= 10;\n }\n baseValue = baseValue * 10 + currentDigit;\n }\n } else if (ch === /* '.' = */ 0x2e) {\n if (divideBy === 0) {\n divideBy = 1;\n } else {\n // A number can have only one dot.\n break;\n }\n } else if (ch === /* '-' = */ 0x2d) {\n // Ignore minus signs in the middle of numbers to match\n // Adobe's behavior.\n warn(\"Badly formatted number: minus sign in the middle\");\n } else if (ch === /* 'E' = */ 0x45 || ch === /* 'e' = */ 0x65) {\n // 'E' can be either a scientific notation or the beginning of a new\n // operator.\n ch = this.peekChar();\n if (ch === /* '+' = */ 0x2b || ch === /* '-' = */ 0x2d) {\n powerValueSign = ch === 0x2d ? -1 : 1;\n this.nextChar(); // Consume the sign character.\n } else if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n // The 'E' must be the beginning of a new operator.\n break;\n }\n eNotation = true;\n } else {\n // The last character doesn't belong to us.\n break;\n }\n }\n\n if (divideBy !== 0) {\n baseValue /= divideBy;\n }\n if (eNotation) {\n baseValue *= 10 ** (powerValueSign * powerValue);\n }\n return sign * baseValue;\n }\n\n getString() {\n let numParen = 1;\n let done = false;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n\n let ch = this.nextChar();\n while (true) {\n let charBuffered = false;\n switch (ch | 0) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x28: // '('\n ++numParen;\n strBuf.push(\"(\");\n break;\n case 0x29: // ')'\n if (--numParen === 0) {\n this.nextChar(); // consume strings ')'\n done = true;\n } else {\n strBuf.push(\")\");\n }\n break;\n case 0x5c: // '\\\\'\n ch = this.nextChar();\n switch (ch) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x6e: // 'n'\n strBuf.push(\"\\n\");\n break;\n case 0x72: // 'r'\n strBuf.push(\"\\r\");\n break;\n case 0x74: // 't'\n strBuf.push(\"\\t\");\n break;\n case 0x62: // 'b'\n strBuf.push(\"\\b\");\n break;\n case 0x66: // 'f'\n strBuf.push(\"\\f\");\n break;\n case 0x5c: // '\\'\n case 0x28: // '('\n case 0x29: // ')'\n strBuf.push(String.fromCharCode(ch));\n break;\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n let x = ch & 0x0f;\n ch = this.nextChar();\n charBuffered = true;\n if (ch >= /* '0' = */ 0x30 && ch <= /* '7' = */ 0x37) {\n x = (x << 3) + (ch & 0x0f);\n ch = this.nextChar();\n if (ch >= /* '0' = */ 0x30 && ch /* '7' = */ <= 0x37) {\n charBuffered = false;\n x = (x << 3) + (ch & 0x0f);\n }\n }\n strBuf.push(String.fromCharCode(x));\n break;\n case 0x0d: // CR\n if (this.peekChar() === /* LF = */ 0x0a) {\n this.nextChar();\n }\n break;\n case 0x0a: // LF\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n if (done) {\n break;\n }\n if (!charBuffered) {\n ch = this.nextChar();\n }\n }\n return strBuf.join(\"\");\n }\n\n getName() {\n let ch, previousCh;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n if (ch === /* '#' = */ 0x23) {\n ch = this.nextChar();\n if (specialChars[ch]) {\n warn(\n \"Lexer_getName: \" +\n \"NUMBER SIGN (#) should be followed by a hexadecimal number.\"\n );\n strBuf.push(\"#\");\n break;\n }\n const x = toHexDigit(ch);\n if (x !== -1) {\n previousCh = ch;\n ch = this.nextChar();\n const x2 = toHexDigit(ch);\n if (x2 === -1) {\n warn(\n `Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` +\n \"in hexadecimal number.\"\n );\n strBuf.push(\"#\", String.fromCharCode(previousCh));\n if (specialChars[ch]) {\n break;\n }\n strBuf.push(String.fromCharCode(ch));\n continue;\n }\n strBuf.push(String.fromCharCode((x << 4) | x2));\n } else {\n strBuf.push(\"#\", String.fromCharCode(ch));\n }\n } else {\n strBuf.push(String.fromCharCode(ch));\n }\n }\n if (strBuf.length > 127) {\n warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n }\n return Name.get(strBuf.join(\"\"));\n }\n\n /**\n * @private\n */\n _hexStringWarn(ch) {\n const MAX_HEX_STRING_NUM_WARN = 5;\n\n if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n warn(\"getHexString - ignoring additional invalid characters.\");\n return;\n }\n if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n // Limit the number of warning messages printed for a `this.getHexString`\n // invocation, since corrupt PDF documents may otherwise spam the console\n // enough to affect general performance negatively.\n return;\n }\n warn(`getHexString - ignoring invalid character: ${ch}`);\n }\n\n getHexString() {\n const strBuf = this.strBuf;\n strBuf.length = 0;\n let ch = this.currentChar;\n let isFirstHex = true;\n let firstDigit, secondDigit;\n this._hexStringNumWarn = 0;\n\n while (true) {\n if (ch < 0) {\n warn(\"Unterminated hex string\");\n break;\n } else if (ch === /* '>' = */ 0x3e) {\n this.nextChar();\n break;\n } else if (specialChars[ch] === 1) {\n ch = this.nextChar();\n continue;\n } else {\n if (isFirstHex) {\n firstDigit = toHexDigit(ch);\n if (firstDigit === -1) {\n this._hexStringWarn(ch);\n ch = this.nextChar();\n continue;\n }\n } else {\n secondDigit = toHexDigit(ch);\n if (secondDigit === -1) {\n this._hexStringWarn(ch);\n ch = this.nextChar();\n continue;\n }\n strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n }\n isFirstHex = !isFirstHex;\n ch = this.nextChar();\n }\n }\n return strBuf.join(\"\");\n }\n\n getObj() {\n // Skip whitespace and comments.\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n if (comment) {\n if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (specialChars[ch] !== 1) {\n break;\n }\n ch = this.nextChar();\n }\n\n // Start reading a token.\n switch (ch | 0) {\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n case 0x38: // '8'\n case 0x39: // '9'\n case 0x2b: // '+'\n case 0x2d: // '-'\n case 0x2e: // '.'\n return this.getNumber();\n case 0x28: // '('\n return this.getString();\n case 0x2f: // '/'\n return this.getName();\n // array punctuation\n case 0x5b: // '['\n this.nextChar();\n return Cmd.get(\"[\");\n case 0x5d: // ']'\n this.nextChar();\n return Cmd.get(\"]\");\n // hex string or dict punctuation\n case 0x3c: // '<'\n ch = this.nextChar();\n if (ch === 0x3c) {\n // dict punctuation\n this.nextChar();\n return Cmd.get(\"<<\");\n }\n return this.getHexString();\n // dict punctuation\n case 0x3e: // '>'\n ch = this.nextChar();\n if (ch === 0x3e) {\n this.nextChar();\n return Cmd.get(\">>\");\n }\n return Cmd.get(\">\");\n case 0x7b: // '{'\n this.nextChar();\n return Cmd.get(\"{\");\n case 0x7d: // '}'\n this.nextChar();\n return Cmd.get(\"}\");\n case 0x29: // ')'\n // Consume the current character in order to avoid permanently hanging\n // the worker thread if `Lexer.getObj` is called from within a loop\n // containing try-catch statements, since we would otherwise attempt\n // to parse the *same* character over and over (fixes issue8061.pdf).\n this.nextChar();\n throw new FormatError(`Illegal character: ${ch}`);\n }\n\n // Start reading a command.\n let str = String.fromCharCode(ch);\n // A valid command cannot start with a non-visible ASCII character,\n // and the next character may be (the start of) a valid command.\n if (ch < 0x20 || ch > 0x7f) {\n const nextCh = this.peekChar();\n if (nextCh >= 0x20 && nextCh <= 0x7f) {\n this.nextChar();\n return Cmd.get(str);\n }\n }\n const knownCommands = this.knownCommands;\n let knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n // Stop if a known command is found and next character does not make\n // the string a command.\n const possibleCommand = str + String.fromCharCode(ch);\n if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n break;\n }\n if (str.length === 128) {\n throw new FormatError(`Command token too long: ${str.length}`);\n }\n str = possibleCommand;\n knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n }\n if (str === \"true\") {\n return true;\n }\n if (str === \"false\") {\n return false;\n }\n if (str === \"null\") {\n return null;\n }\n\n if (str === \"BI\") {\n // Keep track of the current stream position, since it's needed in order\n // to correctly cache inline images; see `Parser.makeInlineImage`.\n this.beginInlineImagePos = this.stream.pos;\n }\n\n return Cmd.get(str);\n }\n\n peekObj() {\n const streamPos = this.stream.pos,\n currentChar = this.currentChar,\n beginInlineImagePos = this.beginInlineImagePos;\n\n let nextObj;\n try {\n nextObj = this.getObj();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`peekObj: ${ex}`);\n }\n // Ensure that we reset *all* relevant `Lexer`-instance state.\n this.stream.pos = streamPos;\n this.currentChar = currentChar;\n this.beginInlineImagePos = beginInlineImagePos;\n\n return nextObj;\n }\n\n skipToNextLine() {\n let ch = this.currentChar;\n while (ch >= 0) {\n if (ch === /* CR = */ 0x0d) {\n ch = this.nextChar();\n if (ch === /* LF = */ 0x0a) {\n this.nextChar();\n }\n break;\n } else if (ch === /* LF = */ 0x0a) {\n this.nextChar();\n break;\n }\n ch = this.nextChar();\n }\n }\n}\n\nclass Linearization {\n static create(stream) {\n function getInt(linDict, name, allowZeroValue = false) {\n const obj = linDict.get(name);\n if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n return obj;\n }\n throw new Error(\n `The \"${name}\" parameter in the linearization ` +\n \"dictionary is invalid.\"\n );\n }\n\n function getHints(linDict) {\n const hints = linDict.get(\"H\");\n let hintsLength;\n\n if (\n Array.isArray(hints) &&\n ((hintsLength = hints.length) === 2 || hintsLength === 4)\n ) {\n for (let index = 0; index < hintsLength; index++) {\n const hint = hints[index];\n if (!(Number.isInteger(hint) && hint > 0)) {\n throw new Error(\n `Hint (${index}) in the linearization dictionary is invalid.`\n );\n }\n }\n return hints;\n }\n throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n }\n\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: null,\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n const linDict = parser.getObj();\n let obj, length;\n if (\n !(\n Number.isInteger(obj1) &&\n Number.isInteger(obj2) &&\n isCmd(obj3, \"obj\") &&\n linDict instanceof Dict &&\n typeof (obj = linDict.get(\"Linearized\")) === \"number\" &&\n obj > 0\n )\n ) {\n return null; // No valid linearization dictionary found.\n } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n throw new Error(\n 'The \"L\" parameter in the linearization dictionary ' +\n \"does not equal the stream length.\"\n );\n }\n return {\n length,\n hints: getHints(linDict),\n objectNumberFirst: getInt(linDict, \"O\"),\n endFirst: getInt(linDict, \"E\"),\n numPages: getInt(linDict, \"N\"),\n mainXRefEntriesOffset: getInt(linDict, \"T\"),\n pageFirst: linDict.has(\"P\")\n ? getInt(linDict, \"P\", /* allowZeroValue = */ true)\n : 0,\n };\n }\n}\n\nexport { Lexer, Linearization, Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass Ascii85Stream extends DecodeStream {\n constructor(str, maybeLength) {\n // Most streams increase in size when decoded, but Ascii85 streams\n // typically shrink by ~20%.\n if (maybeLength) {\n maybeLength *= 0.8;\n }\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.input = new Uint8Array(5);\n }\n\n readBlock() {\n const TILDA_CHAR = 0x7e; // '~'\n const Z_LOWER_CHAR = 0x7a; // 'z'\n const EOF = -1;\n\n const str = this.str;\n\n let c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n\n if (c === EOF || c === TILDA_CHAR) {\n this.eof = true;\n return;\n }\n\n const bufferLength = this.bufferLength;\n let buffer, i;\n\n // special code for z\n if (c === Z_LOWER_CHAR) {\n buffer = this.ensureBuffer(bufferLength + 4);\n for (i = 0; i < 4; ++i) {\n buffer[bufferLength + i] = 0;\n }\n this.bufferLength += 4;\n } else {\n const input = this.input;\n input[0] = c;\n for (i = 1; i < 5; ++i) {\n c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n\n input[i] = c;\n\n if (c === EOF || c === TILDA_CHAR) {\n break;\n }\n }\n buffer = this.ensureBuffer(bufferLength + i - 1);\n this.bufferLength += i - 1;\n\n // partial ending;\n if (i < 5) {\n for (; i < 5; ++i) {\n input[i] = 0x21 + 84;\n }\n this.eof = true;\n }\n let t = 0;\n for (i = 0; i < 5; ++i) {\n t = t * 85 + (input[i] - 0x21);\n }\n\n for (i = 3; i >= 0; --i) {\n buffer[bufferLength + i] = t & 0xff;\n t >>= 8;\n }\n }\n }\n}\n\nexport { Ascii85Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { Stream } from \"./stream.js\";\n\n// Lots of DecodeStreams are created whose buffers are never used. For these\n// we share a single empty buffer. This is (a) space-efficient and (b) avoids\n// having special cases that would be required if we used |null| for an empty\n// buffer.\nconst emptyBuffer = new Uint8Array(0);\n\n// Super class for the decoding streams.\nclass DecodeStream extends BaseStream {\n constructor(maybeMinBufferLength) {\n super();\n this._rawMinBufferLength = maybeMinBufferLength || 0;\n\n this.pos = 0;\n this.bufferLength = 0;\n this.eof = false;\n this.buffer = emptyBuffer;\n this.minBufferLength = 512;\n if (maybeMinBufferLength) {\n // Compute the first power of two that is as big as maybeMinBufferLength.\n while (this.minBufferLength < maybeMinBufferLength) {\n this.minBufferLength *= 2;\n }\n }\n }\n\n get isEmpty() {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n return this.bufferLength === 0;\n }\n\n ensureBuffer(requested) {\n const buffer = this.buffer;\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n let size = this.minBufferLength;\n while (size < requested) {\n size *= 2;\n }\n const buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n return (this.buffer = buffer2);\n }\n\n getByte() {\n const pos = this.pos;\n while (this.bufferLength <= pos) {\n if (this.eof) {\n return -1;\n }\n this.readBlock();\n }\n return this.buffer[this.pos++];\n }\n\n getBytes(length, forceClamped = false) {\n const pos = this.pos;\n let end;\n\n if (length) {\n this.ensureBuffer(pos + length);\n end = pos + length;\n\n while (!this.eof && this.bufferLength < end) {\n this.readBlock();\n }\n const bufEnd = this.bufferLength;\n if (end > bufEnd) {\n end = bufEnd;\n }\n } else {\n while (!this.eof) {\n this.readBlock();\n }\n end = this.bufferLength;\n }\n\n this.pos = end;\n const subarray = this.buffer.subarray(pos, end);\n // `this.buffer` is either a `Uint8Array` or `Uint8ClampedArray` here.\n return forceClamped && !(subarray instanceof Uint8ClampedArray)\n ? new Uint8ClampedArray(subarray)\n : subarray;\n }\n\n reset() {\n this.pos = 0;\n }\n\n makeSubStream(start, length, dict = null) {\n if (length === undefined) {\n while (!this.eof) {\n this.readBlock();\n }\n } else {\n const end = start + length;\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n }\n return new Stream(this.buffer, start, length, dict);\n }\n\n getBaseStreams() {\n return this.str ? this.str.getBaseStreams() : null;\n }\n}\n\nclass StreamsSequenceStream extends DecodeStream {\n constructor(streams, onError = null) {\n let maybeLength = 0;\n for (const stream of streams) {\n maybeLength +=\n stream instanceof DecodeStream\n ? stream._rawMinBufferLength\n : stream.length;\n }\n super(maybeLength);\n\n this.streams = streams;\n this._onError = onError;\n }\n\n readBlock() {\n const streams = this.streams;\n if (streams.length === 0) {\n this.eof = true;\n return;\n }\n const stream = streams.shift();\n let chunk;\n try {\n chunk = stream.getBytes();\n } catch (reason) {\n if (this._onError) {\n this._onError(reason, stream.dict && stream.dict.objId);\n return;\n }\n throw reason;\n }\n const bufferLength = this.bufferLength;\n const newLength = bufferLength + chunk.length;\n const buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n }\n\n getBaseStreams() {\n const baseStreamsBuf = [];\n for (const stream of this.streams) {\n const baseStreams = stream.getBaseStreams();\n if (baseStreams) {\n baseStreamsBuf.push(...baseStreams);\n }\n }\n return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n }\n}\n\nexport { DecodeStream, StreamsSequenceStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass AsciiHexStream extends DecodeStream {\n constructor(str, maybeLength) {\n // Most streams increase in size when decoded, but AsciiHex streams shrink\n // by 50%.\n if (maybeLength) {\n maybeLength *= 0.5;\n }\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n this.firstDigit = -1;\n }\n\n readBlock() {\n const UPSTREAM_BLOCK_SIZE = 8000;\n const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n if (!bytes.length) {\n this.eof = true;\n return;\n }\n\n const maxDecodeLength = (bytes.length + 1) >> 1;\n const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n let bufferLength = this.bufferLength;\n\n let firstDigit = this.firstDigit;\n for (const ch of bytes) {\n let digit;\n if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n digit = ch & 0x0f;\n } else if (\n (ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x46) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x66)\n ) {\n digit = (ch & 0x0f) + 9;\n } else if (ch === /* '>' = */ 0x3e) {\n this.eof = true;\n break;\n } else {\n // Probably whitespace, ignoring.\n continue;\n }\n if (firstDigit < 0) {\n firstDigit = digit;\n } else {\n buffer[bufferLength++] = (firstDigit << 4) | digit;\n firstDigit = -1;\n }\n }\n if (firstDigit >= 0 && this.eof) {\n // incomplete byte\n buffer[bufferLength++] = firstDigit << 4;\n firstDigit = -1;\n }\n this.firstDigit = firstDigit;\n this.bufferLength = bufferLength;\n }\n}\n\nexport { AsciiHexStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\n\nclass CCITTFaxStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n if (!(params instanceof Dict)) {\n params = Dict.empty;\n }\n\n const source = {\n next() {\n return str.getByte();\n },\n };\n this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\n K: params.get(\"K\"),\n EndOfLine: params.get(\"EndOfLine\"),\n EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n Columns: params.get(\"Columns\"),\n Rows: params.get(\"Rows\"),\n EndOfBlock: params.get(\"EndOfBlock\"),\n BlackIs1: params.get(\"BlackIs1\"),\n });\n }\n\n readBlock() {\n while (!this.eof) {\n const c = this.ccittFaxDecoder.readNextChar();\n if (c === -1) {\n this.eof = true;\n return;\n }\n this.ensureBuffer(this.bufferLength + 1);\n this.buffer[this.bufferLength++] = c;\n }\n }\n}\n\nexport { CCITTFaxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, info } from \"../shared/util.js\";\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n * or -1 when EOF is reached.\n */\n\nconst ccittEOL = -2;\nconst ccittEOF = -1;\nconst twoDimPass = 0;\nconst twoDimHoriz = 1;\nconst twoDimVert0 = 2;\nconst twoDimVertR1 = 3;\nconst twoDimVertL1 = 4;\nconst twoDimVertR2 = 5;\nconst twoDimVertL2 = 6;\nconst twoDimVertR3 = 7;\nconst twoDimVertL3 = 8;\n\n// prettier-ignore\nconst twoDimTable = [\n [-1, -1], [-1, -1], // 000000x\n [7, twoDimVertL3], // 0000010\n [7, twoDimVertR3], // 0000011\n [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n [4, twoDimPass], [4, twoDimPass], // 0001xxx\n [4, twoDimPass], [4, twoDimPass],\n [4, twoDimPass], [4, twoDimPass],\n [4, twoDimPass], [4, twoDimPass],\n [3, twoDimHoriz], [3, twoDimHoriz], // 001xxxx\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [1, twoDimVert0], [1, twoDimVert0], // 1xxxxxx\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0]\n];\n\n// prettier-ignore\nconst whiteTable1 = [\n [-1, -1], // 00000\n [12, ccittEOL], // 00001\n [-1, -1], [-1, -1], // 0001x\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n [11, 1792], [11, 1792], // 1000x\n [12, 1984], // 10010\n [12, 2048], // 10011\n [12, 2112], // 10100\n [12, 2176], // 10101\n [12, 2240], // 10110\n [12, 2304], // 10111\n [11, 1856], [11, 1856], // 1100x\n [11, 1920], [11, 1920], // 1101x\n [12, 2368], // 11100\n [12, 2432], // 11101\n [12, 2496], // 11110\n [12, 2560] // 11111\n];\n\n// prettier-ignore\nconst whiteTable2 = [\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000000xx\n [8, 29], [8, 29], // 00000010x\n [8, 30], [8, 30], // 00000011x\n [8, 45], [8, 45], // 00000100x\n [8, 46], [8, 46], // 00000101x\n [7, 22], [7, 22], [7, 22], [7, 22], // 0000011xx\n [7, 23], [7, 23], [7, 23], [7, 23], // 0000100xx\n [8, 47], [8, 47], // 00001010x\n [8, 48], [8, 48], // 00001011x\n [6, 13], [6, 13], [6, 13], [6, 13], // 000011xxx\n [6, 13], [6, 13], [6, 13], [6, 13],\n [7, 20], [7, 20], [7, 20], [7, 20], // 0001000xx\n [8, 33], [8, 33], // 00010010x\n [8, 34], [8, 34], // 00010011x\n [8, 35], [8, 35], // 00010100x\n [8, 36], [8, 36], // 00010101x\n [8, 37], [8, 37], // 00010110x\n [8, 38], [8, 38], // 00010111x\n [7, 19], [7, 19], [7, 19], [7, 19], // 0001100xx\n [8, 31], [8, 31], // 00011010x\n [8, 32], [8, 32], // 00011011x\n [6, 1], [6, 1], [6, 1], [6, 1], // 000111xxx\n [6, 1], [6, 1], [6, 1], [6, 1],\n [6, 12], [6, 12], [6, 12], [6, 12], // 001000xxx\n [6, 12], [6, 12], [6, 12], [6, 12],\n [8, 53], [8, 53], // 00100100x\n [8, 54], [8, 54], // 00100101x\n [7, 26], [7, 26], [7, 26], [7, 26], // 0010011xx\n [8, 39], [8, 39], // 00101000x\n [8, 40], [8, 40], // 00101001x\n [8, 41], [8, 41], // 00101010x\n [8, 42], [8, 42], // 00101011x\n [8, 43], [8, 43], // 00101100x\n [8, 44], [8, 44], // 00101101x\n [7, 21], [7, 21], [7, 21], [7, 21], // 0010111xx\n [7, 28], [7, 28], [7, 28], [7, 28], // 0011000xx\n [8, 61], [8, 61], // 00110010x\n [8, 62], [8, 62], // 00110011x\n [8, 63], [8, 63], // 00110100x\n [8, 0], [8, 0], // 00110101x\n [8, 320], [8, 320], // 00110110x\n [8, 384], [8, 384], // 00110111x\n [5, 10], [5, 10], [5, 10], [5, 10], // 00111xxxx\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 11], [5, 11], [5, 11], [5, 11], // 01000xxxx\n [5, 11], [5, 11], [5, 11], [5, 11],\n [5, 11], [5, 11], [5, 11], [5, 11],\n [5, 11], [5, 11], [5, 11], [5, 11],\n [7, 27], [7, 27], [7, 27], [7, 27], // 0100100xx\n [8, 59], [8, 59], // 01001010x\n [8, 60], [8, 60], // 01001011x\n [9, 1472], // 010011000\n [9, 1536], // 010011001\n [9, 1600], // 010011010\n [9, 1728], // 010011011\n [7, 18], [7, 18], [7, 18], [7, 18], // 0100111xx\n [7, 24], [7, 24], [7, 24], [7, 24], // 0101000xx\n [8, 49], [8, 49], // 01010010x\n [8, 50], [8, 50], // 01010011x\n [8, 51], [8, 51], // 01010100x\n [8, 52], [8, 52], // 01010101x\n [7, 25], [7, 25], [7, 25], [7, 25], // 0101011xx\n [8, 55], [8, 55], // 01011000x\n [8, 56], [8, 56], // 01011001x\n [8, 57], [8, 57], // 01011010x\n [8, 58], [8, 58], // 01011011x\n [6, 192], [6, 192], [6, 192], [6, 192], // 010111xxx\n [6, 192], [6, 192], [6, 192], [6, 192],\n [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n [8, 448], [8, 448], // 01100100x\n [8, 512], [8, 512], // 01100101x\n [9, 704], // 011001100\n [9, 768], // 011001101\n [8, 640], [8, 640], // 01100111x\n [8, 576], [8, 576], // 01101000x\n [9, 832], // 011010010\n [9, 896], // 011010011\n [9, 960], // 011010100\n [9, 1024], // 011010101\n [9, 1088], // 011010110\n [9, 1152], // 011010111\n [9, 1216], // 011011000\n [9, 1280], // 011011001\n [9, 1344], // 011011010\n [9, 1408], // 011011011\n [7, 256], [7, 256], [7, 256], [7, 256], // 0110111xx\n [4, 2], [4, 2], [4, 2], [4, 2], // 0111xxxxx\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 3], [4, 3], [4, 3], [4, 3], // 1000xxxxx\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [5, 128], [5, 128], [5, 128], [5, 128], // 10010xxxx\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 8], [5, 8], [5, 8], [5, 8], // 10011xxxx\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 9], [5, 9], [5, 9], [5, 9], // 10100xxxx\n [5, 9], [5, 9], [5, 9], [5, 9],\n [5, 9], [5, 9], [5, 9], [5, 9],\n [5, 9], [5, 9], [5, 9], [5, 9],\n [6, 16], [6, 16], [6, 16], [6, 16], // 101010xxx\n [6, 16], [6, 16], [6, 16], [6, 16],\n [6, 17], [6, 17], [6, 17], [6, 17], // 101011xxx\n [6, 17], [6, 17], [6, 17], [6, 17],\n [4, 4], [4, 4], [4, 4], [4, 4], // 1011xxxxx\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 5], [4, 5], [4, 5], [4, 5], // 1100xxxxx\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [6, 14], [6, 14], [6, 14], [6, 14], // 110100xxx\n [6, 14], [6, 14], [6, 14], [6, 14],\n [6, 15], [6, 15], [6, 15], [6, 15], // 110101xxx\n [6, 15], [6, 15], [6, 15], [6, 15],\n [5, 64], [5, 64], [5, 64], [5, 64], // 11011xxxx\n [5, 64], [5, 64], [5, 64], [5, 64],\n [5, 64], [5, 64], [5, 64], [5, 64],\n [5, 64], [5, 64], [5, 64], [5, 64],\n [4, 6], [4, 6], [4, 6], [4, 6], // 1110xxxxx\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 7], [4, 7], [4, 7], [4, 7], // 1111xxxxx\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7]\n];\n\n// prettier-ignore\nconst blackTable1 = [\n [-1, -1], [-1, -1], // 000000000000x\n [12, ccittEOL], [12, ccittEOL], // 000000000001x\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000001xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000010xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000011xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000100xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000101xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000110xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000111xx\n [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n [12, 1984], [12, 1984], // 000000010010x\n [12, 2048], [12, 2048], // 000000010011x\n [12, 2112], [12, 2112], // 000000010100x\n [12, 2176], [12, 2176], // 000000010101x\n [12, 2240], [12, 2240], // 000000010110x\n [12, 2304], [12, 2304], // 000000010111x\n [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n [12, 2368], [12, 2368], // 000000011100x\n [12, 2432], [12, 2432], // 000000011101x\n [12, 2496], [12, 2496], // 000000011110x\n [12, 2560], [12, 2560], // 000000011111x\n [10, 18], [10, 18], [10, 18], [10, 18], // 0000001000xxx\n [10, 18], [10, 18], [10, 18], [10, 18],\n [12, 52], [12, 52], // 000000100100x\n [13, 640], // 0000001001010\n [13, 704], // 0000001001011\n [13, 768], // 0000001001100\n [13, 832], // 0000001001101\n [12, 55], [12, 55], // 000000100111x\n [12, 56], [12, 56], // 000000101000x\n [13, 1280], // 0000001010010\n [13, 1344], // 0000001010011\n [13, 1408], // 0000001010100\n [13, 1472], // 0000001010101\n [12, 59], [12, 59], // 000000101011x\n [12, 60], [12, 60], // 000000101100x\n [13, 1536], // 0000001011010\n [13, 1600], // 0000001011011\n [11, 24], [11, 24], [11, 24], [11, 24], // 00000010111xx\n [11, 25], [11, 25], [11, 25], [11, 25], // 00000011000xx\n [13, 1664], // 0000001100100\n [13, 1728], // 0000001100101\n [12, 320], [12, 320], // 000000110011x\n [12, 384], [12, 384], // 000000110100x\n [12, 448], [12, 448], // 000000110101x\n [13, 512], // 0000001101100\n [13, 576], // 0000001101101\n [12, 53], [12, 53], // 000000110111x\n [12, 54], [12, 54], // 000000111000x\n [13, 896], // 0000001110010\n [13, 960], // 0000001110011\n [13, 1024], // 0000001110100\n [13, 1088], // 0000001110101\n [13, 1152], // 0000001110110\n [13, 1216], // 0000001110111\n [10, 64], [10, 64], [10, 64], [10, 64], // 0000001111xxx\n [10, 64], [10, 64], [10, 64], [10, 64]\n];\n\n// prettier-ignore\nconst blackTable2 = [\n [8, 13], [8, 13], [8, 13], [8, 13], // 00000100xxxx\n [8, 13], [8, 13], [8, 13], [8, 13],\n [8, 13], [8, 13], [8, 13], [8, 13],\n [8, 13], [8, 13], [8, 13], [8, 13],\n [11, 23], [11, 23], // 00000101000x\n [12, 50], // 000001010010\n [12, 51], // 000001010011\n [12, 44], // 000001010100\n [12, 45], // 000001010101\n [12, 46], // 000001010110\n [12, 47], // 000001010111\n [12, 57], // 000001011000\n [12, 58], // 000001011001\n [12, 61], // 000001011010\n [12, 256], // 000001011011\n [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n [12, 48], // 000001100100\n [12, 49], // 000001100101\n [12, 62], // 000001100110\n [12, 63], // 000001100111\n [12, 30], // 000001101000\n [12, 31], // 000001101001\n [12, 32], // 000001101010\n [12, 33], // 000001101011\n [12, 40], // 000001101100\n [12, 41], // 000001101101\n [11, 22], [11, 22], // 00000110111x\n [8, 14], [8, 14], [8, 14], [8, 14], // 00000111xxxx\n [8, 14], [8, 14], [8, 14], [8, 14],\n [8, 14], [8, 14], [8, 14], [8, 14],\n [8, 14], [8, 14], [8, 14], [8, 14],\n [7, 10], [7, 10], [7, 10], [7, 10], // 0000100xxxxx\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 11], [7, 11], [7, 11], [7, 11], // 0000101xxxxx\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [9, 15], [9, 15], [9, 15], [9, 15], // 000011000xxx\n [9, 15], [9, 15], [9, 15], [9, 15],\n [12, 128], // 000011001000\n [12, 192], // 000011001001\n [12, 26], // 000011001010\n [12, 27], // 000011001011\n [12, 28], // 000011001100\n [12, 29], // 000011001101\n [11, 19], [11, 19], // 00001100111x\n [11, 20], [11, 20], // 00001101000x\n [12, 34], // 000011010010\n [12, 35], // 000011010011\n [12, 36], // 000011010100\n [12, 37], // 000011010101\n [12, 38], // 000011010110\n [12, 39], // 000011010111\n [11, 21], [11, 21], // 00001101100x\n [12, 42], // 000011011010\n [12, 43], // 000011011011\n [10, 0], [10, 0], [10, 0], [10, 0], // 0000110111xx\n [7, 12], [7, 12], [7, 12], [7, 12], // 0000111xxxxx\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12]\n];\n\n// prettier-ignore\nconst blackTable3 = [\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n [6, 9], // 000100\n [6, 8], // 000101\n [5, 7], [5, 7], // 00011x\n [4, 6], [4, 6], [4, 6], [4, 6], // 0010xx\n [4, 5], [4, 5], [4, 5], [4, 5], // 0011xx\n [3, 1], [3, 1], [3, 1], [3, 1], // 010xxx\n [3, 1], [3, 1], [3, 1], [3, 1],\n [3, 4], [3, 4], [3, 4], [3, 4], // 011xxx\n [3, 4], [3, 4], [3, 4], [3, 4],\n [2, 3], [2, 3], [2, 3], [2, 3], // 10xxxx\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 2], [2, 2], [2, 2], [2, 2], // 11xxxx\n [2, 2], [2, 2], [2, 2], [2, 2],\n [2, 2], [2, 2], [2, 2], [2, 2],\n [2, 2], [2, 2], [2, 2], [2, 2]\n];\n\n/**\n * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n * @param {Object} [options] - Decoding options.\n */\nclass CCITTFaxDecoder {\n constructor(source, options = {}) {\n if (!source || typeof source.next !== \"function\") {\n throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n }\n this.source = source;\n this.eof = false;\n\n this.encoding = options.K || 0;\n this.eoline = options.EndOfLine || false;\n this.byteAlign = options.EncodedByteAlign || false;\n this.columns = options.Columns || 1728;\n this.rows = options.Rows || 0;\n let eoblock = options.EndOfBlock;\n if (eoblock === null || eoblock === undefined) {\n eoblock = true;\n }\n this.eoblock = eoblock;\n this.black = options.BlackIs1 || false;\n\n this.codingLine = new Uint32Array(this.columns + 1);\n this.refLine = new Uint32Array(this.columns + 2);\n\n this.codingLine[0] = this.columns;\n this.codingPos = 0;\n\n this.row = 0;\n this.nextLine2D = this.encoding < 0;\n this.inputBits = 0;\n this.inputBuf = 0;\n this.outputBits = 0;\n this.rowsDone = false;\n\n let code1;\n while ((code1 = this._lookBits(12)) === 0) {\n this._eatBits(1);\n }\n if (code1 === 1) {\n this._eatBits(12);\n }\n if (this.encoding > 0) {\n this.nextLine2D = !this._lookBits(1);\n this._eatBits(1);\n }\n }\n\n readNextChar() {\n if (this.eof) {\n return -1;\n }\n const refLine = this.refLine;\n const codingLine = this.codingLine;\n const columns = this.columns;\n\n let refPos, blackPixels, bits, i;\n\n if (this.outputBits === 0) {\n if (this.rowsDone) {\n this.eof = true;\n }\n if (this.eof) {\n return -1;\n }\n this.err = false;\n\n let code1, code2, code3;\n if (this.nextLine2D) {\n for (i = 0; codingLine[i] < columns; ++i) {\n refLine[i] = codingLine[i];\n }\n refLine[i++] = columns;\n refLine[i] = columns;\n codingLine[0] = 0;\n this.codingPos = 0;\n refPos = 0;\n blackPixels = 0;\n\n while (codingLine[this.codingPos] < columns) {\n code1 = this._getTwoDimCode();\n switch (code1) {\n case twoDimPass:\n this._addPixels(refLine[refPos + 1], blackPixels);\n if (refLine[refPos + 1] < columns) {\n refPos += 2;\n }\n break;\n case twoDimHoriz:\n code1 = code2 = 0;\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n do {\n code2 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n } else {\n do {\n code1 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n do {\n code2 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n }\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n if (codingLine[this.codingPos] < columns) {\n this._addPixels(\n codingLine[this.codingPos] + code2,\n blackPixels ^ 1\n );\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n break;\n case twoDimVertR3:\n this._addPixels(refLine[refPos] + 3, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertR2:\n this._addPixels(refLine[refPos] + 2, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertR1:\n this._addPixels(refLine[refPos] + 1, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVert0:\n this._addPixels(refLine[refPos], blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL3:\n this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL2:\n this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL1:\n this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case ccittEOF:\n this._addPixels(columns, 0);\n this.eof = true;\n break;\n default:\n info(\"bad 2d code\");\n this._addPixels(columns, 0);\n this.err = true;\n }\n }\n } else {\n codingLine[0] = 0;\n this.codingPos = 0;\n blackPixels = 0;\n while (codingLine[this.codingPos] < columns) {\n code1 = 0;\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n } else {\n do {\n code1 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n }\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n blackPixels ^= 1;\n }\n }\n\n let gotEOL = false;\n\n if (this.byteAlign) {\n this.inputBits &= ~7;\n }\n\n if (!this.eoblock && this.row === this.rows - 1) {\n this.rowsDone = true;\n } else {\n code1 = this._lookBits(12);\n if (this.eoline) {\n while (code1 !== ccittEOF && code1 !== 1) {\n this._eatBits(1);\n code1 = this._lookBits(12);\n }\n } else {\n while (code1 === 0) {\n this._eatBits(1);\n code1 = this._lookBits(12);\n }\n }\n if (code1 === 1) {\n this._eatBits(12);\n gotEOL = true;\n } else if (code1 === ccittEOF) {\n this.eof = true;\n }\n }\n\n if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n this.nextLine2D = !this._lookBits(1);\n this._eatBits(1);\n }\n\n if (this.eoblock && gotEOL && this.byteAlign) {\n code1 = this._lookBits(12);\n if (code1 === 1) {\n this._eatBits(12);\n if (this.encoding > 0) {\n this._lookBits(1);\n this._eatBits(1);\n }\n if (this.encoding >= 0) {\n for (i = 0; i < 4; ++i) {\n code1 = this._lookBits(12);\n if (code1 !== 1) {\n info(\"bad rtc code: \" + code1);\n }\n this._eatBits(12);\n if (this.encoding > 0) {\n this._lookBits(1);\n this._eatBits(1);\n }\n }\n }\n this.eof = true;\n }\n } else if (this.err && this.eoline) {\n while (true) {\n code1 = this._lookBits(13);\n if (code1 === ccittEOF) {\n this.eof = true;\n return -1;\n }\n if (code1 >> 1 === 1) {\n break;\n }\n this._eatBits(1);\n }\n this._eatBits(12);\n if (this.encoding > 0) {\n this._eatBits(1);\n this.nextLine2D = !(code1 & 1);\n }\n }\n\n if (codingLine[0] > 0) {\n this.outputBits = codingLine[(this.codingPos = 0)];\n } else {\n this.outputBits = codingLine[(this.codingPos = 1)];\n }\n this.row++;\n }\n\n let c;\n if (this.outputBits >= 8) {\n c = this.codingPos & 1 ? 0 : 0xff;\n this.outputBits -= 8;\n if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits =\n codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n }\n } else {\n bits = 8;\n c = 0;\n do {\n if (typeof this.outputBits !== \"number\") {\n throw new FormatError(\n 'Invalid /CCITTFaxDecode data, \"outputBits\" must be a number.'\n );\n }\n\n if (this.outputBits > bits) {\n c <<= bits;\n if (!(this.codingPos & 1)) {\n c |= 0xff >> (8 - bits);\n }\n this.outputBits -= bits;\n bits = 0;\n } else {\n c <<= this.outputBits;\n if (!(this.codingPos & 1)) {\n c |= 0xff >> (8 - this.outputBits);\n }\n bits -= this.outputBits;\n this.outputBits = 0;\n if (codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits =\n codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n } else if (bits > 0) {\n c <<= bits;\n bits = 0;\n }\n }\n } while (bits);\n }\n if (this.black) {\n c ^= 0xff;\n }\n return c;\n }\n\n /**\n * @private\n */\n _addPixels(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n info(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n if ((codingPos & 1) ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n }\n this.codingPos = codingPos;\n }\n\n /**\n * @private\n */\n _addPixelsNeg(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n info(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n if ((codingPos & 1) ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n } else if (a1 < codingLine[codingPos]) {\n if (a1 < 0) {\n info(\"invalid code\");\n this.err = true;\n a1 = 0;\n }\n while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n --codingPos;\n }\n codingLine[codingPos] = a1;\n }\n\n this.codingPos = codingPos;\n }\n\n /**\n * This function returns the code found from the table.\n * The start and end parameters set the boundaries for searching the table.\n * The limit parameter is optional. Function returns an array with three\n * values. The first array element indicates whether a valid code is being\n * returned. The second array element is the actual code. The third array\n * element indicates whether EOF was reached.\n * @private\n */\n _findTableCode(start, end, table, limit) {\n const limitValue = limit || 0;\n for (let i = start; i <= end; ++i) {\n let code = this._lookBits(i);\n if (code === ccittEOF) {\n return [true, 1, false];\n }\n if (i < end) {\n code <<= end - i;\n }\n if (!limitValue || code >= limitValue) {\n const p = table[code - limitValue];\n if (p[0] === i) {\n this._eatBits(i);\n return [true, p[1], true];\n }\n }\n }\n return [false, 0, false];\n }\n\n /**\n * @private\n */\n _getTwoDimCode() {\n let code = 0;\n let p;\n if (this.eoblock) {\n code = this._lookBits(7);\n p = twoDimTable[code];\n if (p && p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n const result = this._findTableCode(1, 7, twoDimTable);\n if (result[0] && result[2]) {\n return result[1];\n }\n }\n info(\"Bad two dim code\");\n return ccittEOF;\n }\n\n /**\n * @private\n */\n _getWhiteCode() {\n let code = 0;\n let p;\n if (this.eoblock) {\n code = this._lookBits(12);\n if (code === ccittEOF) {\n return 1;\n }\n\n if (code >> 5 === 0) {\n p = whiteTable1[code];\n } else {\n p = whiteTable2[code >> 3];\n }\n\n if (p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n let result = this._findTableCode(1, 9, whiteTable2);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(11, 12, whiteTable1);\n if (result[0]) {\n return result[1];\n }\n }\n info(\"bad white code\");\n this._eatBits(1);\n return 1;\n }\n\n /**\n * @private\n */\n _getBlackCode() {\n let code, p;\n if (this.eoblock) {\n code = this._lookBits(13);\n if (code === ccittEOF) {\n return 1;\n }\n if (code >> 7 === 0) {\n p = blackTable1[code];\n } else if (code >> 9 === 0 && code >> 7 !== 0) {\n p = blackTable2[(code >> 1) - 64];\n } else {\n p = blackTable3[code >> 7];\n }\n\n if (p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n let result = this._findTableCode(2, 6, blackTable3);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(7, 12, blackTable2, 64);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(10, 13, blackTable1);\n if (result[0]) {\n return result[1];\n }\n }\n info(\"bad black code\");\n this._eatBits(1);\n return 1;\n }\n\n /**\n * @private\n */\n _lookBits(n) {\n let c;\n while (this.inputBits < n) {\n if ((c = this.source.next()) === -1) {\n if (this.inputBits === 0) {\n return ccittEOF;\n }\n return (this.inputBuf << (n - this.inputBits)) & (0xffff >> (16 - n));\n }\n this.inputBuf = (this.inputBuf << 8) | c;\n this.inputBits += 8;\n }\n return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\n }\n\n /**\n * @private\n */\n _eatBits(n) {\n if ((this.inputBits -= n) < 0) {\n this.inputBits = 0;\n }\n }\n}\n\nexport { CCITTFaxDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The flate stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nconst codeLenCodeMap = new Int32Array([\n 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,\n]);\n\nconst lengthDecode = new Int32Array([\n 0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102,\n]);\n\nconst distDecode = new Int32Array([\n 0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001,\n]);\n\nconst fixedLitCodeTab = [\n new Int32Array([\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff,\n ]),\n 9,\n];\n\nconst fixedDistCodeTab = [\n new Int32Array([\n 0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000,\n ]),\n 5,\n];\n\nclass FlateStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n const cmf = str.getByte();\n const flg = str.getByte();\n if (cmf === -1 || flg === -1) {\n throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n }\n if ((cmf & 0x0f) !== 0x08) {\n throw new FormatError(\n `Unknown compression method in flate stream: ${cmf}, ${flg}`\n );\n }\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n }\n if (flg & 0x20) {\n throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n }\n\n this.codeSize = 0;\n this.codeBuf = 0;\n }\n\n getBits(bits) {\n const str = this.str;\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n\n let b;\n while (codeSize < bits) {\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n b = codeBuf & ((1 << bits) - 1);\n this.codeBuf = codeBuf >> bits;\n this.codeSize = codeSize -= bits;\n\n return b;\n }\n\n getCode(table) {\n const str = this.str;\n const codes = table[0];\n const maxLen = table[1];\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n\n let b;\n while (codeSize < maxLen) {\n if ((b = str.getByte()) === -1) {\n // premature end of stream. code might however still be valid.\n // codeSize < codeLen check below guards against incomplete codeVal.\n break;\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n const code = codes[codeBuf & ((1 << maxLen) - 1)];\n const codeLen = code >> 16;\n const codeVal = code & 0xffff;\n if (codeLen < 1 || codeSize < codeLen) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n this.codeBuf = codeBuf >> codeLen;\n this.codeSize = codeSize - codeLen;\n return codeVal;\n }\n\n generateHuffmanTable(lengths) {\n const n = lengths.length;\n\n // find max code length\n let maxLen = 0;\n let i;\n for (i = 0; i < n; ++i) {\n if (lengths[i] > maxLen) {\n maxLen = lengths[i];\n }\n }\n\n // build the table\n const size = 1 << maxLen;\n const codes = new Int32Array(size);\n for (\n let len = 1, code = 0, skip = 2;\n len <= maxLen;\n ++len, code <<= 1, skip <<= 1\n ) {\n for (let val = 0; val < n; ++val) {\n if (lengths[val] === len) {\n // bit-reverse the code\n let code2 = 0;\n let t = code;\n for (i = 0; i < len; ++i) {\n code2 = (code2 << 1) | (t & 1);\n t >>= 1;\n }\n\n // fill the table entries\n for (i = code2; i < size; i += skip) {\n codes[i] = (len << 16) | val;\n }\n ++code;\n }\n }\n }\n\n return [codes, maxLen];\n }\n\n readBlock() {\n let buffer, len;\n const str = this.str;\n // read block header\n let hdr = this.getBits(3);\n if (hdr & 1) {\n this.eof = true;\n }\n hdr >>= 1;\n\n if (hdr === 0) {\n // uncompressed block\n let b;\n\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n let blockLen = b;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n blockLen |= b << 8;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n let check = b;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n check |= b << 8;\n if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n // Ignoring error for bad \"empty\" block (see issue 1277)\n throw new FormatError(\"Bad uncompressed block length in flate stream\");\n }\n\n this.codeBuf = 0;\n this.codeSize = 0;\n\n const bufferLength = this.bufferLength,\n end = bufferLength + blockLen;\n buffer = this.ensureBuffer(end);\n this.bufferLength = end;\n\n if (blockLen === 0) {\n if (str.peekByte() === -1) {\n this.eof = true;\n }\n } else {\n const block = str.getBytes(blockLen);\n buffer.set(block, bufferLength);\n if (block.length < blockLen) {\n this.eof = true;\n }\n }\n return;\n }\n\n let litCodeTable;\n let distCodeTable;\n if (hdr === 1) {\n // compressed block, fixed codes\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n } else if (hdr === 2) {\n // compressed block, dynamic codes\n const numLitCodes = this.getBits(5) + 257;\n const numDistCodes = this.getBits(5) + 1;\n const numCodeLenCodes = this.getBits(4) + 4;\n\n // build the code lengths code table\n const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n let i;\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n }\n const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n // build the literal and distance code tables\n len = 0;\n i = 0;\n const codes = numLitCodes + numDistCodes;\n const codeLengths = new Uint8Array(codes);\n let bitsLength, bitsOffset, what;\n while (i < codes) {\n const code = this.getCode(codeLenCodeTab);\n if (code === 16) {\n bitsLength = 2;\n bitsOffset = 3;\n what = len;\n } else if (code === 17) {\n bitsLength = 3;\n bitsOffset = 3;\n what = len = 0;\n } else if (code === 18) {\n bitsLength = 7;\n bitsOffset = 11;\n what = len = 0;\n } else {\n codeLengths[i++] = len = code;\n continue;\n }\n\n let repeatLength = this.getBits(bitsLength) + bitsOffset;\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n\n litCodeTable = this.generateHuffmanTable(\n codeLengths.subarray(0, numLitCodes)\n );\n distCodeTable = this.generateHuffmanTable(\n codeLengths.subarray(numLitCodes, codes)\n );\n } else {\n throw new FormatError(\"Unknown block type in flate stream\");\n }\n\n buffer = this.buffer;\n let limit = buffer ? buffer.length : 0;\n let pos = this.bufferLength;\n while (true) {\n let code1 = this.getCode(litCodeTable);\n if (code1 < 256) {\n if (pos + 1 >= limit) {\n buffer = this.ensureBuffer(pos + 1);\n limit = buffer.length;\n }\n buffer[pos++] = code1;\n continue;\n }\n if (code1 === 256) {\n this.bufferLength = pos;\n return;\n }\n code1 -= 257;\n code1 = lengthDecode[code1];\n let code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n len = (code1 & 0xffff) + code2;\n code1 = this.getCode(distCodeTable);\n code1 = distDecode[code1];\n code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n const dist = (code1 & 0xffff) + code2;\n if (pos + len >= limit) {\n buffer = this.ensureBuffer(pos + len);\n limit = buffer.length;\n }\n for (let k = 0; k < len; ++k, ++pos) {\n buffer[pos] = buffer[pos - dist];\n }\n }\n }\n}\n\nexport { FlateStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { Jbig2Image } from \"./jbig2.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JBIG2's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass Jbig2Stream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jbig2Image = new Jbig2Image();\n\n const chunks = [];\n if (this.params instanceof Dict) {\n const globalsStream = this.params.get(\"JBIG2Globals\");\n if (globalsStream instanceof BaseStream) {\n const globals = globalsStream.getBytes();\n chunks.push({ data: globals, start: 0, end: globals.length });\n }\n }\n chunks.push({ data: this.bytes, start: 0, end: this.bytes.length });\n const data = jbig2Image.parseChunks(chunks);\n const dataLength = data.length;\n\n // JBIG2 had black as 1 and white as 0, inverting the colors\n for (let i = 0; i < dataLength; i++) {\n data[i] ^= 0xff;\n }\n this.buffer = data;\n this.bufferLength = dataLength;\n this.eof = true;\n }\n}\n\nexport { Jbig2Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, shadow } from \"../shared/util.js\";\nimport { log2, readInt8, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\n\nclass Jbig2Error extends BaseException {\n constructor(msg) {\n super(`JBIG2 error: ${msg}`, \"Jbig2Error\");\n }\n}\n\n// Utility data structures\nclass ContextCache {\n getContexts(id) {\n if (id in this) {\n return this[id];\n }\n return (this[id] = new Int8Array(1 << 16));\n }\n}\n\nclass DecodingContext {\n constructor(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n }\n\n get decoder() {\n const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n return shadow(this, \"decoder\", decoder);\n }\n\n get contextCache() {\n const cache = new ContextCache();\n return shadow(this, \"contextCache\", cache);\n }\n}\n\n// Annex A. Arithmetic Integer Decoding Procedure\n// A.2 Procedure for decoding values\nfunction decodeInteger(contextCache, procedure, decoder) {\n const contexts = contextCache.getContexts(procedure);\n let prev = 1;\n\n function readBits(length) {\n let v = 0;\n for (let i = 0; i < length; i++) {\n const bit = decoder.readBit(contexts, prev);\n prev = prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n v = (v << 1) | bit;\n }\n return v >>> 0;\n }\n\n const sign = readBits(1);\n // prettier-ignore\n /* eslint-disable no-nested-ternary */\n const value = readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(32) + 4436) :\n readBits(12) + 340) :\n readBits(8) + 84) :\n readBits(6) + 20) :\n readBits(4) + 4) :\n readBits(2);\n /* eslint-enable no-nested-ternary */\n if (sign === 0) {\n return value;\n } else if (value > 0) {\n return -value;\n }\n return null;\n}\n\n// A.3 The IAID decoding procedure\nfunction decodeIAID(contextCache, decoder, codeLength) {\n const contexts = contextCache.getContexts(\"IAID\");\n\n let prev = 1;\n for (let i = 0; i < codeLength; i++) {\n const bit = decoder.readBit(contexts, prev);\n prev = (prev << 1) | bit;\n }\n if (codeLength < 31) {\n return prev & ((1 << codeLength) - 1);\n }\n return prev & 0x7fffffff;\n}\n\n// 7.3 Segment types\nconst SegmentTypes = [\n \"SymbolDictionary\",\n null,\n null,\n null,\n \"IntermediateTextRegion\",\n null,\n \"ImmediateTextRegion\",\n \"ImmediateLosslessTextRegion\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"PatternDictionary\",\n null,\n null,\n null,\n \"IntermediateHalftoneRegion\",\n null,\n \"ImmediateHalftoneRegion\",\n \"ImmediateLosslessHalftoneRegion\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"IntermediateGenericRegion\",\n null,\n \"ImmediateGenericRegion\",\n \"ImmediateLosslessGenericRegion\",\n \"IntermediateGenericRefinementRegion\",\n null,\n \"ImmediateGenericRefinementRegion\",\n \"ImmediateLosslessGenericRefinementRegion\",\n null,\n null,\n null,\n null,\n \"PageInformation\",\n \"EndOfPage\",\n \"EndOfStripe\",\n \"EndOfFile\",\n \"Profiles\",\n \"Tables\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"Extension\",\n];\n\nconst CodingTemplates = [\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: 2, y: -1 },\n { x: -4, y: 0 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: 2, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: 2, y: -1 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -3, y: -1 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -4, y: 0 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n];\n\nconst RefinementTemplates = [\n {\n coding: [\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n ],\n reference: [\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: -1, y: 1 },\n { x: 0, y: 1 },\n { x: 1, y: 1 },\n ],\n },\n {\n coding: [\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n ],\n reference: [\n { x: 0, y: -1 },\n { x: -1, y: 0 },\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: 0, y: 1 },\n { x: 1, y: 1 },\n ],\n },\n];\n\n// See 6.2.5.7 Decoding the bitmap.\nconst ReusedContexts = [\n 0x9b25, // 10011 0110010 0101\n 0x0795, // 0011 110010 101\n 0x00e5, // 001 11001 01\n 0x0195, // 011001 0101\n];\n\nconst RefinementReusedContexts = [\n 0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n 0x0008, // '0000' + '001000'\n];\n\nfunction decodeBitmapTemplate0(width, height, decodingContext) {\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\n const bitmap = [];\n let contextLabel, i, j, pixel, row, row1, row2;\n\n // ...ooooo....\n // ..ooooooo... Context template for current pixel (X)\n // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n const OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111\n\n for (i = 0; i < height; i++) {\n row = bitmap[i] = new Uint8Array(width);\n row1 = i < 1 ? row : bitmap[i - 1];\n row2 = i < 2 ? row : bitmap[i - 2];\n\n // At the beginning of each row:\n // Fill contextLabel with pixels that are above/right of (X)\n contextLabel =\n (row2[0] << 13) |\n (row2[1] << 12) |\n (row2[2] << 11) |\n (row1[0] << 7) |\n (row1[1] << 6) |\n (row1[2] << 5) |\n (row1[3] << 4);\n\n for (j = 0; j < width; j++) {\n row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n // At each pixel: Clear contextLabel pixels that are shifted\n // out of the context, then add new ones.\n contextLabel =\n ((contextLabel & OLD_PIXEL_MASK) << 1) |\n (j + 3 < width ? row2[j + 3] << 11 : 0) |\n (j + 4 < width ? row1[j + 4] << 4 : 0) |\n pixel;\n }\n }\n\n return bitmap;\n}\n\n// 6.2 Generic Region Decoding Procedure\nfunction decodeBitmap(\n mmr,\n width,\n height,\n templateIndex,\n prediction,\n skip,\n at,\n decodingContext\n) {\n if (mmr) {\n const input = new Reader(\n decodingContext.data,\n decodingContext.start,\n decodingContext.end\n );\n return decodeMMRBitmap(input, width, height, false);\n }\n\n // Use optimized version for the most common case\n if (\n templateIndex === 0 &&\n !skip &&\n !prediction &&\n at.length === 4 &&\n at[0].x === 3 &&\n at[0].y === -1 &&\n at[1].x === -3 &&\n at[1].y === -1 &&\n at[2].x === 2 &&\n at[2].y === -2 &&\n at[3].x === -2 &&\n at[3].y === -2\n ) {\n return decodeBitmapTemplate0(width, height, decodingContext);\n }\n\n const useskip = !!skip;\n const template = CodingTemplates[templateIndex].concat(at);\n\n // Sorting is non-standard, and it is not required. But sorting increases\n // the number of template bits that can be reused from the previous\n // contextLabel in the main loop.\n template.sort(function (a, b) {\n return a.y - b.y || a.x - b.x;\n });\n\n const templateLength = template.length;\n const templateX = new Int8Array(templateLength);\n const templateY = new Int8Array(templateLength);\n const changingTemplateEntries = [];\n let reuseMask = 0,\n minX = 0,\n maxX = 0,\n minY = 0;\n let c, k;\n\n for (k = 0; k < templateLength; k++) {\n templateX[k] = template[k].x;\n templateY[k] = template[k].y;\n minX = Math.min(minX, template[k].x);\n maxX = Math.max(maxX, template[k].x);\n minY = Math.min(minY, template[k].y);\n // Check if the template pixel appears in two consecutive context labels,\n // so it can be reused. Otherwise, we add it to the list of changing\n // template entries.\n if (\n k < templateLength - 1 &&\n template[k].y === template[k + 1].y &&\n template[k].x === template[k + 1].x - 1\n ) {\n reuseMask |= 1 << (templateLength - 1 - k);\n } else {\n changingTemplateEntries.push(k);\n }\n }\n const changingEntriesLength = changingTemplateEntries.length;\n\n const changingTemplateX = new Int8Array(changingEntriesLength);\n const changingTemplateY = new Int8Array(changingEntriesLength);\n const changingTemplateBit = new Uint16Array(changingEntriesLength);\n for (c = 0; c < changingEntriesLength; c++) {\n k = changingTemplateEntries[c];\n changingTemplateX[c] = template[k].x;\n changingTemplateY[c] = template[k].y;\n changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n }\n\n // Get the safe bounding box edges from the width, height, minX, maxX, minY\n const sbb_left = -minX;\n const sbb_top = -minY;\n const sbb_right = width - maxX;\n\n const pseudoPixelContext = ReusedContexts[templateIndex];\n let row = new Uint8Array(width);\n const bitmap = [];\n\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n let ltp = 0,\n j,\n i0,\n j0,\n contextLabel = 0,\n bit,\n shift;\n for (let i = 0; i < height; i++) {\n if (prediction) {\n const sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n bitmap.push(row); // duplicate previous row\n continue;\n }\n }\n row = new Uint8Array(row);\n bitmap.push(row);\n for (j = 0; j < width; j++) {\n if (useskip && skip[i][j]) {\n row[j] = 0;\n continue;\n }\n // Are we in the middle of a scanline, so we can reuse contextLabel\n // bits?\n if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n // If yes, we can just shift the bits that are reusable and only\n // fetch the remaining ones.\n contextLabel = (contextLabel << 1) & reuseMask;\n for (k = 0; k < changingEntriesLength; k++) {\n i0 = i + changingTemplateY[k];\n j0 = j + changingTemplateX[k];\n bit = bitmap[i0][j0];\n if (bit) {\n bit = changingTemplateBit[k];\n contextLabel |= bit;\n }\n }\n } else {\n // compute the contextLabel from scratch\n contextLabel = 0;\n shift = templateLength - 1;\n for (k = 0; k < templateLength; k++, shift--) {\n j0 = j + templateX[k];\n if (j0 >= 0 && j0 < width) {\n i0 = i + templateY[k];\n if (i0 >= 0) {\n bit = bitmap[i0][j0];\n if (bit) {\n contextLabel |= bit << shift;\n }\n }\n }\n }\n }\n const pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n return bitmap;\n}\n\n// 6.3.2 Generic Refinement Region Decoding Procedure\nfunction decodeRefinement(\n width,\n height,\n templateIndex,\n referenceBitmap,\n offsetX,\n offsetY,\n prediction,\n at,\n decodingContext\n) {\n let codingTemplate = RefinementTemplates[templateIndex].coding;\n if (templateIndex === 0) {\n codingTemplate = codingTemplate.concat([at[0]]);\n }\n const codingTemplateLength = codingTemplate.length;\n const codingTemplateX = new Int32Array(codingTemplateLength);\n const codingTemplateY = new Int32Array(codingTemplateLength);\n let k;\n for (k = 0; k < codingTemplateLength; k++) {\n codingTemplateX[k] = codingTemplate[k].x;\n codingTemplateY[k] = codingTemplate[k].y;\n }\n\n let referenceTemplate = RefinementTemplates[templateIndex].reference;\n if (templateIndex === 0) {\n referenceTemplate = referenceTemplate.concat([at[1]]);\n }\n const referenceTemplateLength = referenceTemplate.length;\n const referenceTemplateX = new Int32Array(referenceTemplateLength);\n const referenceTemplateY = new Int32Array(referenceTemplateLength);\n for (k = 0; k < referenceTemplateLength; k++) {\n referenceTemplateX[k] = referenceTemplate[k].x;\n referenceTemplateY[k] = referenceTemplate[k].y;\n }\n const referenceWidth = referenceBitmap[0].length;\n const referenceHeight = referenceBitmap.length;\n\n const pseudoPixelContext = RefinementReusedContexts[templateIndex];\n const bitmap = [];\n\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n let ltp = 0;\n for (let i = 0; i < height; i++) {\n if (prediction) {\n const sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n throw new Jbig2Error(\"prediction is not supported\");\n }\n }\n const row = new Uint8Array(width);\n bitmap.push(row);\n for (let j = 0; j < width; j++) {\n let i0, j0;\n let contextLabel = 0;\n for (k = 0; k < codingTemplateLength; k++) {\n i0 = i + codingTemplateY[k];\n j0 = j + codingTemplateX[k];\n if (i0 < 0 || j0 < 0 || j0 >= width) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n }\n }\n for (k = 0; k < referenceTemplateLength; k++) {\n i0 = i + referenceTemplateY[k] - offsetY;\n j0 = j + referenceTemplateX[k] - offsetX;\n if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n }\n }\n const pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n\n return bitmap;\n}\n\n// 6.5.5 Decoding the symbol dictionary\nfunction decodeSymbolDictionary(\n huffman,\n refinement,\n symbols,\n numberOfNewSymbols,\n numberOfExportedSymbols,\n huffmanTables,\n templateIndex,\n at,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n huffmanInput\n) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n }\n\n const newSymbols = [];\n let currentHeight = 0;\n let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n let tableB1, symbolWidths;\n if (huffman) {\n tableB1 = getStandardTable(1); // standard table B.1\n symbolWidths = [];\n symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n }\n\n while (newSymbols.length < numberOfNewSymbols) {\n const deltaHeight = huffman\n ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADH\", decoder); // 6.5.6\n currentHeight += deltaHeight;\n let currentWidth = 0,\n totalWidth = 0;\n const firstSymbol = huffman ? symbolWidths.length : 0;\n while (true) {\n const deltaWidth = huffman\n ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADW\", decoder); // 6.5.7\n if (deltaWidth === null) {\n break; // OOB\n }\n currentWidth += deltaWidth;\n totalWidth += currentWidth;\n let bitmap;\n if (refinement) {\n // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n const numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n if (numberOfInstances > 1) {\n bitmap = decodeTextRegion(\n huffman,\n refinement,\n currentWidth,\n currentHeight,\n 0,\n numberOfInstances,\n 1, // strip size\n symbols.concat(newSymbols),\n symbolCodeLength,\n 0, // transposed\n 0, // ds offset\n 1, // top left 7.4.3.1.1\n 0, // OR operator\n huffmanTables,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n 0,\n huffmanInput\n );\n } else {\n const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n const symbol =\n symbolId < symbols.length\n ? symbols[symbolId]\n : newSymbols[symbolId - symbols.length];\n bitmap = decodeRefinement(\n currentWidth,\n currentHeight,\n refinementTemplateIndex,\n symbol,\n rdx,\n rdy,\n false,\n refinementAt,\n decodingContext\n );\n }\n newSymbols.push(bitmap);\n } else if (huffman) {\n // Store only symbol width and decode a collective bitmap when the\n // height class is done.\n symbolWidths.push(currentWidth);\n } else {\n // 6.5.8.1 Direct-coded symbol bitmap\n bitmap = decodeBitmap(\n false,\n currentWidth,\n currentHeight,\n templateIndex,\n false,\n null,\n at,\n decodingContext\n );\n newSymbols.push(bitmap);\n }\n }\n if (huffman && !refinement) {\n // 6.5.9 Height class collective bitmap\n const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n huffmanInput.byteAlign();\n let collectiveBitmap;\n if (bitmapSize === 0) {\n // Uncompressed collective bitmap\n collectiveBitmap = readUncompressedBitmap(\n huffmanInput,\n totalWidth,\n currentHeight\n );\n } else {\n // MMR collective bitmap\n const originalEnd = huffmanInput.end;\n const bitmapEnd = huffmanInput.position + bitmapSize;\n huffmanInput.end = bitmapEnd;\n collectiveBitmap = decodeMMRBitmap(\n huffmanInput,\n totalWidth,\n currentHeight,\n false\n );\n huffmanInput.end = originalEnd;\n huffmanInput.position = bitmapEnd;\n }\n const numberOfSymbolsDecoded = symbolWidths.length;\n if (firstSymbol === numberOfSymbolsDecoded - 1) {\n // collectiveBitmap is a single symbol.\n newSymbols.push(collectiveBitmap);\n } else {\n // Divide collectiveBitmap into symbols.\n let i,\n y,\n xMin = 0,\n xMax,\n bitmapWidth,\n symbolBitmap;\n for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n bitmapWidth = symbolWidths[i];\n xMax = xMin + bitmapWidth;\n symbolBitmap = [];\n for (y = 0; y < currentHeight; y++) {\n symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n newSymbols.push(symbolBitmap);\n xMin = xMax;\n }\n }\n }\n }\n\n // 6.5.10 Exported symbols\n const exportedSymbols = [],\n flags = [];\n let currentFlag = false,\n i,\n ii;\n const totalSymbolsLength = symbols.length + numberOfNewSymbols;\n while (flags.length < totalSymbolsLength) {\n let runLength = huffman\n ? tableB1.decode(huffmanInput)\n : decodeInteger(contextCache, \"IAEX\", decoder);\n while (runLength--) {\n flags.push(currentFlag);\n }\n currentFlag = !currentFlag;\n }\n for (i = 0, ii = symbols.length; i < ii; i++) {\n if (flags[i]) {\n exportedSymbols.push(symbols[i]);\n }\n }\n for (let j = 0; j < numberOfNewSymbols; i++, j++) {\n if (flags[i]) {\n exportedSymbols.push(newSymbols[j]);\n }\n }\n return exportedSymbols;\n}\n\nfunction decodeTextRegion(\n huffman,\n refinement,\n width,\n height,\n defaultPixelValue,\n numberOfSymbolInstances,\n stripSize,\n inputSymbols,\n symbolCodeLength,\n transposed,\n dsOffset,\n referenceCorner,\n combinationOperator,\n huffmanTables,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n logStripSize,\n huffmanInput\n) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n // Prepare bitmap\n const bitmap = [];\n let i, row;\n for (i = 0; i < height; i++) {\n row = new Uint8Array(width);\n if (defaultPixelValue) {\n for (let j = 0; j < width; j++) {\n row[j] = defaultPixelValue;\n }\n }\n bitmap.push(row);\n }\n\n const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n\n let stripT = huffman\n ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n let firstS = 0;\n i = 0;\n while (i < numberOfSymbolInstances) {\n const deltaT = huffman\n ? huffmanTables.tableDeltaT.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n stripT += deltaT;\n\n const deltaFirstS = huffman\n ? huffmanTables.tableFirstS.decode(huffmanInput)\n : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n firstS += deltaFirstS;\n let currentS = firstS;\n do {\n let currentT = 0; // 6.4.9\n if (stripSize > 1) {\n currentT = huffman\n ? huffmanInput.readBits(logStripSize)\n : decodeInteger(contextCache, \"IAIT\", decoder);\n }\n const t = stripSize * stripT + currentT;\n const symbolId = huffman\n ? huffmanTables.symbolIDTable.decode(huffmanInput)\n : decodeIAID(contextCache, decoder, symbolCodeLength);\n const applyRefinement =\n refinement &&\n (huffman\n ? huffmanInput.readBit()\n : decodeInteger(contextCache, \"IARI\", decoder));\n let symbolBitmap = inputSymbols[symbolId];\n let symbolWidth = symbolBitmap[0].length;\n let symbolHeight = symbolBitmap.length;\n if (applyRefinement) {\n const rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n const rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n symbolWidth += rdw;\n symbolHeight += rdh;\n symbolBitmap = decodeRefinement(\n symbolWidth,\n symbolHeight,\n refinementTemplateIndex,\n symbolBitmap,\n (rdw >> 1) + rdx,\n (rdh >> 1) + rdy,\n false,\n refinementAt,\n decodingContext\n );\n }\n const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n let s2, t2, symbolRow;\n if (transposed) {\n // Place Symbol Bitmap from T1,S1\n for (s2 = 0; s2 < symbolHeight; s2++) {\n row = bitmap[offsetS + s2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[s2];\n // To ignore Parts of Symbol bitmap which goes\n // outside bitmap region\n const maxWidth = Math.min(width - offsetT, symbolWidth);\n switch (combinationOperator) {\n case 0: // OR\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] |= symbolRow[t2];\n }\n break;\n case 2: // XOR\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] ^= symbolRow[t2];\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n currentS += symbolHeight - 1;\n } else {\n for (t2 = 0; t2 < symbolHeight; t2++) {\n row = bitmap[offsetT + t2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[t2];\n switch (combinationOperator) {\n case 0: // OR\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] |= symbolRow[s2];\n }\n break;\n case 2: // XOR\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] ^= symbolRow[s2];\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n currentS += symbolWidth - 1;\n }\n i++;\n const deltaS = huffman\n ? huffmanTables.tableDeltaS.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADS\", decoder); // 6.4.8\n if (deltaS === null) {\n break; // OOB\n }\n currentS += deltaS + dsOffset;\n } while (true);\n }\n return bitmap;\n}\n\nfunction decodePatternDictionary(\n mmr,\n patternWidth,\n patternHeight,\n maxPatternIndex,\n template,\n decodingContext\n) {\n const at = [];\n if (!mmr) {\n at.push({\n x: -patternWidth,\n y: 0,\n });\n if (template === 0) {\n at.push(\n {\n x: -3,\n y: -1,\n },\n {\n x: 2,\n y: -2,\n },\n {\n x: -2,\n y: -2,\n }\n );\n }\n }\n const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n const collectiveBitmap = decodeBitmap(\n mmr,\n collectiveWidth,\n patternHeight,\n template,\n false,\n null,\n at,\n decodingContext\n );\n // Divide collective bitmap into patterns.\n const patterns = [];\n for (let i = 0; i <= maxPatternIndex; i++) {\n const patternBitmap = [];\n const xMin = patternWidth * i;\n const xMax = xMin + patternWidth;\n for (let y = 0; y < patternHeight; y++) {\n patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n patterns.push(patternBitmap);\n }\n return patterns;\n}\n\nfunction decodeHalftoneRegion(\n mmr,\n patterns,\n template,\n regionWidth,\n regionHeight,\n defaultPixelValue,\n enableSkip,\n combinationOperator,\n gridWidth,\n gridHeight,\n gridOffsetX,\n gridOffsetY,\n gridVectorX,\n gridVectorY,\n decodingContext\n) {\n const skip = null;\n if (enableSkip) {\n throw new Jbig2Error(\"skip is not supported\");\n }\n if (combinationOperator !== 0) {\n throw new Jbig2Error(\n `operator \"${combinationOperator}\" is not supported in halftone region`\n );\n }\n\n // Prepare bitmap.\n const regionBitmap = [];\n let i, j, row;\n for (i = 0; i < regionHeight; i++) {\n row = new Uint8Array(regionWidth);\n if (defaultPixelValue) {\n for (j = 0; j < regionWidth; j++) {\n row[j] = defaultPixelValue;\n }\n }\n regionBitmap.push(row);\n }\n\n const numberOfPatterns = patterns.length;\n const pattern0 = patterns[0];\n const patternWidth = pattern0[0].length,\n patternHeight = pattern0.length;\n const bitsPerValue = log2(numberOfPatterns);\n const at = [];\n if (!mmr) {\n at.push({\n x: template <= 1 ? 3 : 2,\n y: -1,\n });\n if (template === 0) {\n at.push(\n {\n x: -3,\n y: -1,\n },\n {\n x: 2,\n y: -2,\n },\n {\n x: -2,\n y: -2,\n }\n );\n }\n }\n // Annex C. Gray-scale Image Decoding Procedure.\n const grayScaleBitPlanes = [];\n let mmrInput, bitmap;\n if (mmr) {\n // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n // the end of each bitmap, so EOFBs must be decoded.\n mmrInput = new Reader(\n decodingContext.data,\n decodingContext.start,\n decodingContext.end\n );\n }\n for (i = bitsPerValue - 1; i >= 0; i--) {\n if (mmr) {\n bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n } else {\n bitmap = decodeBitmap(\n false,\n gridWidth,\n gridHeight,\n template,\n false,\n skip,\n at,\n decodingContext\n );\n }\n grayScaleBitPlanes[i] = bitmap;\n }\n // 6.6.5.2 Rendering the patterns.\n let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n for (mg = 0; mg < gridHeight; mg++) {\n for (ng = 0; ng < gridWidth; ng++) {\n bit = 0;\n patternIndex = 0;\n for (j = bitsPerValue - 1; j >= 0; j--) {\n bit ^= grayScaleBitPlanes[j][mg][ng]; // Gray decoding\n patternIndex |= bit << j;\n }\n patternBitmap = patterns[patternIndex];\n x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n // Draw patternBitmap at (x, y).\n if (\n x >= 0 &&\n x + patternWidth <= regionWidth &&\n y >= 0 &&\n y + patternHeight <= regionHeight\n ) {\n for (i = 0; i < patternHeight; i++) {\n regionRow = regionBitmap[y + i];\n patternRow = patternBitmap[i];\n for (j = 0; j < patternWidth; j++) {\n regionRow[x + j] |= patternRow[j];\n }\n }\n } else {\n let regionX, regionY;\n for (i = 0; i < patternHeight; i++) {\n regionY = y + i;\n if (regionY < 0 || regionY >= regionHeight) {\n continue;\n }\n regionRow = regionBitmap[regionY];\n patternRow = patternBitmap[i];\n for (j = 0; j < patternWidth; j++) {\n regionX = x + j;\n if (regionX >= 0 && regionX < regionWidth) {\n regionRow[regionX] |= patternRow[j];\n }\n }\n }\n }\n }\n }\n return regionBitmap;\n}\n\nfunction readSegmentHeader(data, start) {\n const segmentHeader = {};\n segmentHeader.number = readUint32(data, start);\n const flags = data[start + 4];\n const segmentType = flags & 0x3f;\n if (!SegmentTypes[segmentType]) {\n throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n }\n segmentHeader.type = segmentType;\n segmentHeader.typeName = SegmentTypes[segmentType];\n segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n const pageAssociationFieldSize = !!(flags & 0x40);\n const referredFlags = data[start + 5];\n let referredToCount = (referredFlags >> 5) & 7;\n const retainBits = [referredFlags & 31];\n let position = start + 6;\n if (referredFlags === 7) {\n referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n position += 3;\n let bytes = (referredToCount + 7) >> 3;\n retainBits[0] = data[position++];\n while (--bytes > 0) {\n retainBits.push(data[position++]);\n }\n } else if (referredFlags === 5 || referredFlags === 6) {\n throw new Jbig2Error(\"invalid referred-to flags\");\n }\n\n segmentHeader.retainBits = retainBits;\n\n let referredToSegmentNumberSize = 4;\n if (segmentHeader.number <= 256) {\n referredToSegmentNumberSize = 1;\n } else if (segmentHeader.number <= 65536) {\n referredToSegmentNumberSize = 2;\n }\n const referredTo = [];\n let i, ii;\n for (i = 0; i < referredToCount; i++) {\n let number;\n if (referredToSegmentNumberSize === 1) {\n number = data[position];\n } else if (referredToSegmentNumberSize === 2) {\n number = readUint16(data, position);\n } else {\n number = readUint32(data, position);\n }\n referredTo.push(number);\n position += referredToSegmentNumberSize;\n }\n segmentHeader.referredTo = referredTo;\n if (!pageAssociationFieldSize) {\n segmentHeader.pageAssociation = data[position++];\n } else {\n segmentHeader.pageAssociation = readUint32(data, position);\n position += 4;\n }\n segmentHeader.length = readUint32(data, position);\n position += 4;\n\n if (segmentHeader.length === 0xffffffff) {\n // 7.2.7 Segment data length, unknown segment length\n if (segmentType === 38) {\n // ImmediateGenericRegion\n const genericRegionInfo = readRegionSegmentInformation(data, position);\n const genericRegionSegmentFlags =\n data[position + RegionSegmentInformationFieldLength];\n const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n // searching for the segment end\n const searchPatternLength = 6;\n const searchPattern = new Uint8Array(searchPatternLength);\n if (!genericRegionMmr) {\n searchPattern[0] = 0xff;\n searchPattern[1] = 0xac;\n }\n searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\n searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\n searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\n searchPattern[5] = genericRegionInfo.height & 0xff;\n for (i = position, ii = data.length; i < ii; i++) {\n let j = 0;\n while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n j++;\n }\n if (j === searchPatternLength) {\n segmentHeader.length = i + searchPatternLength;\n break;\n }\n }\n if (segmentHeader.length === 0xffffffff) {\n throw new Jbig2Error(\"segment end was not found\");\n }\n } else {\n throw new Jbig2Error(\"invalid unknown segment length\");\n }\n }\n segmentHeader.headerEnd = position;\n return segmentHeader;\n}\n\nfunction readSegments(header, data, start, end) {\n const segments = [];\n let position = start;\n while (position < end) {\n const segmentHeader = readSegmentHeader(data, position);\n position = segmentHeader.headerEnd;\n const segment = {\n header: segmentHeader,\n data,\n };\n if (!header.randomAccess) {\n segment.start = position;\n position += segmentHeader.length;\n segment.end = position;\n }\n segments.push(segment);\n if (segmentHeader.type === 51) {\n break; // end of file is found\n }\n }\n if (header.randomAccess) {\n for (let i = 0, ii = segments.length; i < ii; i++) {\n segments[i].start = position;\n position += segments[i].header.length;\n segments[i].end = position;\n }\n }\n return segments;\n}\n\n// 7.4.1 Region segment information field\nfunction readRegionSegmentInformation(data, start) {\n return {\n width: readUint32(data, start),\n height: readUint32(data, start + 4),\n x: readUint32(data, start + 8),\n y: readUint32(data, start + 12),\n combinationOperator: data[start + 16] & 7,\n };\n}\nconst RegionSegmentInformationFieldLength = 17;\n\nfunction processSegment(segment, visitor) {\n const header = segment.header;\n\n const data = segment.data,\n end = segment.end;\n let position = segment.start;\n let args, at, i, atLength;\n switch (header.type) {\n case 0: // SymbolDictionary\n // 7.4.2 Symbol dictionary segment syntax\n const dictionary = {};\n const dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n dictionary.huffman = !!(dictionaryFlags & 1);\n dictionary.refinement = !!(dictionaryFlags & 2);\n dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n dictionary.template = (dictionaryFlags >> 10) & 3;\n dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n position += 2;\n if (!dictionary.huffman) {\n atLength = dictionary.template === 0 ? 4 : 1;\n at = [];\n for (i = 0; i < atLength; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n dictionary.at = at;\n }\n if (dictionary.refinement && !dictionary.refinementTemplate) {\n at = [];\n for (i = 0; i < 2; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n dictionary.refinementAt = at;\n }\n dictionary.numberOfExportedSymbols = readUint32(data, position);\n position += 4;\n dictionary.numberOfNewSymbols = readUint32(data, position);\n position += 4;\n args = [\n dictionary,\n header.number,\n header.referredTo,\n data,\n position,\n end,\n ];\n break;\n case 6: // ImmediateTextRegion\n case 7: // ImmediateLosslessTextRegion\n const textRegion = {};\n textRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const textRegionSegmentFlags = readUint16(data, position);\n position += 2;\n textRegion.huffman = !!(textRegionSegmentFlags & 1);\n textRegion.refinement = !!(textRegionSegmentFlags & 2);\n textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n textRegion.stripSize = 1 << textRegion.logStripSize;\n textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n textRegion.transposed = !!(textRegionSegmentFlags & 64);\n textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n if (textRegion.huffman) {\n const textRegionHuffmanFlags = readUint16(data, position);\n position += 2;\n textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n textRegion.huffmanRefinementSizeSelector = !!(\n textRegionHuffmanFlags & 0x4000\n );\n }\n if (textRegion.refinement && !textRegion.refinementTemplate) {\n at = [];\n for (i = 0; i < 2; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n textRegion.refinementAt = at;\n }\n textRegion.numberOfSymbolInstances = readUint32(data, position);\n position += 4;\n args = [textRegion, header.referredTo, data, position, end];\n break;\n case 16: // PatternDictionary\n // 7.4.4. Pattern dictionary segment syntax\n const patternDictionary = {};\n const patternDictionaryFlags = data[position++];\n patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n patternDictionary.patternWidth = data[position++];\n patternDictionary.patternHeight = data[position++];\n patternDictionary.maxPatternIndex = readUint32(data, position);\n position += 4;\n args = [patternDictionary, header.number, data, position, end];\n break;\n case 22: // ImmediateHalftoneRegion\n case 23: // ImmediateLosslessHalftoneRegion\n // 7.4.5 Halftone region segment syntax\n const halftoneRegion = {};\n halftoneRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const halftoneRegionFlags = data[position++];\n halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n halftoneRegion.gridWidth = readUint32(data, position);\n position += 4;\n halftoneRegion.gridHeight = readUint32(data, position);\n position += 4;\n halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridVectorX = readUint16(data, position);\n position += 2;\n halftoneRegion.gridVectorY = readUint16(data, position);\n position += 2;\n args = [halftoneRegion, header.referredTo, data, position, end];\n break;\n case 38: // ImmediateGenericRegion\n case 39: // ImmediateLosslessGenericRegion\n const genericRegion = {};\n genericRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const genericRegionSegmentFlags = data[position++];\n genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n if (!genericRegion.mmr) {\n atLength = genericRegion.template === 0 ? 4 : 1;\n at = [];\n for (i = 0; i < atLength; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n genericRegion.at = at;\n }\n args = [genericRegion, data, position, end];\n break;\n case 48: // PageInformation\n const pageInfo = {\n width: readUint32(data, position),\n height: readUint32(data, position + 4),\n resolutionX: readUint32(data, position + 8),\n resolutionY: readUint32(data, position + 12),\n };\n if (pageInfo.height === 0xffffffff) {\n delete pageInfo.height;\n }\n const pageSegmentFlags = data[position + 16];\n readUint16(data, position + 17); // pageStripingInformation\n pageInfo.lossless = !!(pageSegmentFlags & 1);\n pageInfo.refinement = !!(pageSegmentFlags & 2);\n pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n args = [pageInfo];\n break;\n case 49: // EndOfPage\n break;\n case 50: // EndOfStripe\n break;\n case 51: // EndOfFile\n break;\n case 53: // Tables\n args = [header.number, data, position, end];\n break;\n case 62: // 7.4.15 defines 2 extension types which\n // are comments and can be ignored.\n break;\n default:\n throw new Jbig2Error(\n `segment type ${header.typeName}(${header.type})` +\n \" is not implemented\"\n );\n }\n const callbackName = \"on\" + header.typeName;\n if (callbackName in visitor) {\n visitor[callbackName].apply(visitor, args);\n }\n}\n\nfunction processSegments(segments, visitor) {\n for (let i = 0, ii = segments.length; i < ii; i++) {\n processSegment(segments[i], visitor);\n }\n}\n\nfunction parseJbig2Chunks(chunks) {\n const visitor = new SimpleSegmentVisitor();\n for (let i = 0, ii = chunks.length; i < ii; i++) {\n const chunk = chunks[i];\n const segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n processSegments(segments, visitor);\n }\n return visitor.buffer;\n}\n\nfunction parseJbig2(data) {\n const end = data.length;\n let position = 0;\n\n if (\n data[position] !== 0x97 ||\n data[position + 1] !== 0x4a ||\n data[position + 2] !== 0x42 ||\n data[position + 3] !== 0x32 ||\n data[position + 4] !== 0x0d ||\n data[position + 5] !== 0x0a ||\n data[position + 6] !== 0x1a ||\n data[position + 7] !== 0x0a\n ) {\n throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n }\n\n const header = Object.create(null);\n position += 8;\n const flags = data[position++];\n header.randomAccess = !(flags & 1);\n if (!(flags & 2)) {\n header.numberOfPages = readUint32(data, position);\n position += 4;\n }\n\n const segments = readSegments(header, data, position, end);\n const visitor = new SimpleSegmentVisitor();\n processSegments(segments, visitor);\n\n const { width, height } = visitor.currentPageInfo;\n const bitPacked = visitor.buffer;\n const imgData = new Uint8ClampedArray(width * height);\n let q = 0,\n k = 0;\n for (let i = 0; i < height; i++) {\n let mask = 0,\n buffer;\n for (let j = 0; j < width; j++) {\n if (!mask) {\n mask = 128;\n buffer = bitPacked[k++];\n }\n imgData[q++] = buffer & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n return { imgData, width, height };\n}\n\nclass SimpleSegmentVisitor {\n onPageInformation(info) {\n this.currentPageInfo = info;\n const rowSize = (info.width + 7) >> 3;\n const buffer = new Uint8ClampedArray(rowSize * info.height);\n // The contents of ArrayBuffers are initialized to 0.\n // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n if (info.defaultPixelValue) {\n for (let i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = 0xff;\n }\n }\n this.buffer = buffer;\n }\n\n drawBitmap(regionInfo, bitmap) {\n const pageInfo = this.currentPageInfo;\n const width = regionInfo.width,\n height = regionInfo.height;\n const rowSize = (pageInfo.width + 7) >> 3;\n const combinationOperator = pageInfo.combinationOperatorOverride\n ? regionInfo.combinationOperator\n : pageInfo.combinationOperator;\n const buffer = this.buffer;\n const mask0 = 128 >> (regionInfo.x & 7);\n let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n let i, j, mask, offset;\n switch (combinationOperator) {\n case 0: // OR\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] |= mask;\n }\n mask >>= 1;\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n offset0 += rowSize;\n }\n break;\n case 2: // XOR\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] ^= mask;\n }\n mask >>= 1;\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n offset0 += rowSize;\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n\n onImmediateGenericRegion(region, data, start, end) {\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeBitmap(\n region.mmr,\n regionInfo.width,\n regionInfo.height,\n region.template,\n region.prediction,\n null,\n region.at,\n decodingContext\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessGenericRegion() {\n this.onImmediateGenericRegion.apply(this, arguments);\n }\n\n onSymbolDictionary(\n dictionary,\n currentSegment,\n referredSegments,\n data,\n start,\n end\n ) {\n let huffmanTables, huffmanInput;\n if (dictionary.huffman) {\n huffmanTables = getSymbolDictionaryHuffmanTables(\n dictionary,\n referredSegments,\n this.customTables\n );\n huffmanInput = new Reader(data, start, end);\n }\n\n // Combines exported symbols from all referred segments\n let symbols = this.symbols;\n if (!symbols) {\n this.symbols = symbols = {};\n }\n\n let inputSymbols = [];\n for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n const referredSymbols = symbols[referredSegments[i]];\n // referredSymbols is undefined when we have a reference to a Tables\n // segment instead of a SymbolDictionary.\n if (referredSymbols) {\n inputSymbols = inputSymbols.concat(referredSymbols);\n }\n }\n\n const decodingContext = new DecodingContext(data, start, end);\n symbols[currentSegment] = decodeSymbolDictionary(\n dictionary.huffman,\n dictionary.refinement,\n inputSymbols,\n dictionary.numberOfNewSymbols,\n dictionary.numberOfExportedSymbols,\n huffmanTables,\n dictionary.template,\n dictionary.at,\n dictionary.refinementTemplate,\n dictionary.refinementAt,\n decodingContext,\n huffmanInput\n );\n }\n\n onImmediateTextRegion(region, referredSegments, data, start, end) {\n const regionInfo = region.info;\n let huffmanTables, huffmanInput;\n\n // Combines exported symbols from all referred segments\n const symbols = this.symbols;\n let inputSymbols = [];\n for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n const referredSymbols = symbols[referredSegments[i]];\n // referredSymbols is undefined when we have a reference to a Tables\n // segment instead of a SymbolDictionary.\n if (referredSymbols) {\n inputSymbols = inputSymbols.concat(referredSymbols);\n }\n }\n const symbolCodeLength = log2(inputSymbols.length);\n if (region.huffman) {\n huffmanInput = new Reader(data, start, end);\n huffmanTables = getTextRegionHuffmanTables(\n region,\n referredSegments,\n this.customTables,\n inputSymbols.length,\n huffmanInput\n );\n }\n\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeTextRegion(\n region.huffman,\n region.refinement,\n regionInfo.width,\n regionInfo.height,\n region.defaultPixelValue,\n region.numberOfSymbolInstances,\n region.stripSize,\n inputSymbols,\n symbolCodeLength,\n region.transposed,\n region.dsOffset,\n region.referenceCorner,\n region.combinationOperator,\n huffmanTables,\n region.refinementTemplate,\n region.refinementAt,\n decodingContext,\n region.logStripSize,\n huffmanInput\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessTextRegion() {\n this.onImmediateTextRegion.apply(this, arguments);\n }\n\n onPatternDictionary(dictionary, currentSegment, data, start, end) {\n let patterns = this.patterns;\n if (!patterns) {\n this.patterns = patterns = {};\n }\n const decodingContext = new DecodingContext(data, start, end);\n patterns[currentSegment] = decodePatternDictionary(\n dictionary.mmr,\n dictionary.patternWidth,\n dictionary.patternHeight,\n dictionary.maxPatternIndex,\n dictionary.template,\n decodingContext\n );\n }\n\n onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n // HalftoneRegion refers to exactly one PatternDictionary.\n const patterns = this.patterns[referredSegments[0]];\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeHalftoneRegion(\n region.mmr,\n patterns,\n region.template,\n regionInfo.width,\n regionInfo.height,\n region.defaultPixelValue,\n region.enableSkip,\n region.combinationOperator,\n region.gridWidth,\n region.gridHeight,\n region.gridOffsetX,\n region.gridOffsetY,\n region.gridVectorX,\n region.gridVectorY,\n decodingContext\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessHalftoneRegion() {\n this.onImmediateHalftoneRegion.apply(this, arguments);\n }\n\n onTables(currentSegment, data, start, end) {\n let customTables = this.customTables;\n if (!customTables) {\n this.customTables = customTables = {};\n }\n customTables[currentSegment] = decodeTablesSegment(data, start, end);\n }\n}\n\nclass HuffmanLine {\n constructor(lineData) {\n if (lineData.length === 2) {\n // OOB line.\n this.isOOB = true;\n this.rangeLow = 0;\n this.prefixLength = lineData[0];\n this.rangeLength = 0;\n this.prefixCode = lineData[1];\n this.isLowerRange = false;\n } else {\n // Normal, upper range or lower range line.\n // Upper range lines are processed like normal lines.\n this.isOOB = false;\n this.rangeLow = lineData[0];\n this.prefixLength = lineData[1];\n this.rangeLength = lineData[2];\n this.prefixCode = lineData[3];\n this.isLowerRange = lineData[4] === \"lower\";\n }\n }\n}\n\nclass HuffmanTreeNode {\n constructor(line) {\n this.children = [];\n if (line) {\n // Leaf node\n this.isLeaf = true;\n this.rangeLength = line.rangeLength;\n this.rangeLow = line.rangeLow;\n this.isLowerRange = line.isLowerRange;\n this.isOOB = line.isOOB;\n } else {\n // Intermediate or root node\n this.isLeaf = false;\n }\n }\n\n buildTree(line, shift) {\n const bit = (line.prefixCode >> shift) & 1;\n if (shift <= 0) {\n // Create a leaf node.\n this.children[bit] = new HuffmanTreeNode(line);\n } else {\n // Create an intermediate node and continue recursively.\n let node = this.children[bit];\n if (!node) {\n this.children[bit] = node = new HuffmanTreeNode(null);\n }\n node.buildTree(line, shift - 1);\n }\n }\n\n decodeNode(reader) {\n if (this.isLeaf) {\n if (this.isOOB) {\n return null;\n }\n const htOffset = reader.readBits(this.rangeLength);\n return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n }\n const node = this.children[reader.readBit()];\n if (!node) {\n throw new Jbig2Error(\"invalid Huffman data\");\n }\n return node.decodeNode(reader);\n }\n}\n\nclass HuffmanTable {\n constructor(lines, prefixCodesDone) {\n if (!prefixCodesDone) {\n this.assignPrefixCodes(lines);\n }\n // Create Huffman tree.\n this.rootNode = new HuffmanTreeNode(null);\n for (let i = 0, ii = lines.length; i < ii; i++) {\n const line = lines[i];\n if (line.prefixLength > 0) {\n this.rootNode.buildTree(line, line.prefixLength - 1);\n }\n }\n }\n\n decode(reader) {\n return this.rootNode.decodeNode(reader);\n }\n\n assignPrefixCodes(lines) {\n // Annex B.3 Assigning the prefix codes.\n const linesLength = lines.length;\n let prefixLengthMax = 0;\n for (let i = 0; i < linesLength; i++) {\n prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n }\n\n const histogram = new Uint32Array(prefixLengthMax + 1);\n for (let i = 0; i < linesLength; i++) {\n histogram[lines[i].prefixLength]++;\n }\n let currentLength = 1,\n firstCode = 0,\n currentCode,\n currentTemp,\n line;\n histogram[0] = 0;\n\n while (currentLength <= prefixLengthMax) {\n firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n currentCode = firstCode;\n currentTemp = 0;\n while (currentTemp < linesLength) {\n line = lines[currentTemp];\n if (line.prefixLength === currentLength) {\n line.prefixCode = currentCode;\n currentCode++;\n }\n currentTemp++;\n }\n currentLength++;\n }\n }\n}\n\nfunction decodeTablesSegment(data, start, end) {\n // Decodes a Tables segment, i.e., a custom Huffman table.\n // Annex B.2 Code table structure.\n const flags = data[start];\n const lowestValue = readUint32(data, start + 1) & 0xffffffff;\n const highestValue = readUint32(data, start + 5) & 0xffffffff;\n const reader = new Reader(data, start + 9, end);\n\n const prefixSizeBits = ((flags >> 1) & 7) + 1;\n const rangeSizeBits = ((flags >> 4) & 7) + 1;\n const lines = [];\n let prefixLength,\n rangeLength,\n currentRangeLow = lowestValue;\n\n // Normal table lines\n do {\n prefixLength = reader.readBits(prefixSizeBits);\n rangeLength = reader.readBits(rangeSizeBits);\n lines.push(\n new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\n );\n currentRangeLow += 1 << rangeLength;\n } while (currentRangeLow < highestValue);\n\n // Lower range table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n\n // Upper range table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n if (flags & 1) {\n // Out-of-band table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([prefixLength, 0]));\n }\n\n return new HuffmanTable(lines, false);\n}\n\nconst standardTablesCache = {};\n\nfunction getStandardTable(number) {\n // Annex B.5 Standard Huffman tables.\n let table = standardTablesCache[number];\n if (table) {\n return table;\n }\n let lines;\n switch (number) {\n case 1:\n lines = [\n [0, 1, 4, 0x0],\n [16, 2, 8, 0x2],\n [272, 3, 16, 0x6],\n [65808, 3, 32, 0x7], // upper\n ];\n break;\n case 2:\n lines = [\n [0, 1, 0, 0x0],\n [1, 2, 0, 0x2],\n [2, 3, 0, 0x6],\n [3, 4, 3, 0xe],\n [11, 5, 6, 0x1e],\n [75, 6, 32, 0x3e], // upper\n [6, 0x3f], // OOB\n ];\n break;\n case 3:\n lines = [\n [-256, 8, 8, 0xfe],\n [0, 1, 0, 0x0],\n [1, 2, 0, 0x2],\n [2, 3, 0, 0x6],\n [3, 4, 3, 0xe],\n [11, 5, 6, 0x1e],\n [-257, 8, 32, 0xff, \"lower\"],\n [75, 7, 32, 0x7e], // upper\n [6, 0x3e], // OOB\n ];\n break;\n case 4:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 0, 0x6],\n [4, 4, 3, 0xe],\n [12, 5, 6, 0x1e],\n [76, 5, 32, 0x1f], // upper\n ];\n break;\n case 5:\n lines = [\n [-255, 7, 8, 0x7e],\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 0, 0x6],\n [4, 4, 3, 0xe],\n [12, 5, 6, 0x1e],\n [-256, 7, 32, 0x7f, \"lower\"],\n [76, 6, 32, 0x3e], // upper\n ];\n break;\n case 6:\n lines = [\n [-2048, 5, 10, 0x1c],\n [-1024, 4, 9, 0x8],\n [-512, 4, 8, 0x9],\n [-256, 4, 7, 0xa],\n [-128, 5, 6, 0x1d],\n [-64, 5, 5, 0x1e],\n [-32, 4, 5, 0xb],\n [0, 2, 7, 0x0],\n [128, 3, 7, 0x2],\n [256, 3, 8, 0x3],\n [512, 4, 9, 0xc],\n [1024, 4, 10, 0xd],\n [-2049, 6, 32, 0x3e, \"lower\"],\n [2048, 6, 32, 0x3f], // upper\n ];\n break;\n case 7:\n lines = [\n [-1024, 4, 9, 0x8],\n [-512, 3, 8, 0x0],\n [-256, 4, 7, 0x9],\n [-128, 5, 6, 0x1a],\n [-64, 5, 5, 0x1b],\n [-32, 4, 5, 0xa],\n [0, 4, 5, 0xb],\n [32, 5, 5, 0x1c],\n [64, 5, 6, 0x1d],\n [128, 4, 7, 0xc],\n [256, 3, 8, 0x1],\n [512, 3, 9, 0x2],\n [1024, 3, 10, 0x3],\n [-1025, 5, 32, 0x1e, \"lower\"],\n [2048, 5, 32, 0x1f], // upper\n ];\n break;\n case 8:\n lines = [\n [-15, 8, 3, 0xfc],\n [-7, 9, 1, 0x1fc],\n [-5, 8, 1, 0xfd],\n [-3, 9, 0, 0x1fd],\n [-2, 7, 0, 0x7c],\n [-1, 4, 0, 0xa],\n [0, 2, 1, 0x0],\n [2, 5, 0, 0x1a],\n [3, 6, 0, 0x3a],\n [4, 3, 4, 0x4],\n [20, 6, 1, 0x3b],\n [22, 4, 4, 0xb],\n [38, 4, 5, 0xc],\n [70, 5, 6, 0x1b],\n [134, 5, 7, 0x1c],\n [262, 6, 7, 0x3c],\n [390, 7, 8, 0x7d],\n [646, 6, 10, 0x3d],\n [-16, 9, 32, 0x1fe, \"lower\"],\n [1670, 9, 32, 0x1ff], // upper\n [2, 0x1], // OOB\n ];\n break;\n case 9:\n lines = [\n [-31, 8, 4, 0xfc],\n [-15, 9, 2, 0x1fc],\n [-11, 8, 2, 0xfd],\n [-7, 9, 1, 0x1fd],\n [-5, 7, 1, 0x7c],\n [-3, 4, 1, 0xa],\n [-1, 3, 1, 0x2],\n [1, 3, 1, 0x3],\n [3, 5, 1, 0x1a],\n [5, 6, 1, 0x3a],\n [7, 3, 5, 0x4],\n [39, 6, 2, 0x3b],\n [43, 4, 5, 0xb],\n [75, 4, 6, 0xc],\n [139, 5, 7, 0x1b],\n [267, 5, 8, 0x1c],\n [523, 6, 8, 0x3c],\n [779, 7, 9, 0x7d],\n [1291, 6, 11, 0x3d],\n [-32, 9, 32, 0x1fe, \"lower\"],\n [3339, 9, 32, 0x1ff], // upper\n [2, 0x0], // OOB\n ];\n break;\n case 10:\n lines = [\n [-21, 7, 4, 0x7a],\n [-5, 8, 0, 0xfc],\n [-4, 7, 0, 0x7b],\n [-3, 5, 0, 0x18],\n [-2, 2, 2, 0x0],\n [2, 5, 0, 0x19],\n [3, 6, 0, 0x36],\n [4, 7, 0, 0x7c],\n [5, 8, 0, 0xfd],\n [6, 2, 6, 0x1],\n [70, 5, 5, 0x1a],\n [102, 6, 5, 0x37],\n [134, 6, 6, 0x38],\n [198, 6, 7, 0x39],\n [326, 6, 8, 0x3a],\n [582, 6, 9, 0x3b],\n [1094, 6, 10, 0x3c],\n [2118, 7, 11, 0x7d],\n [-22, 8, 32, 0xfe, \"lower\"],\n [4166, 8, 32, 0xff], // upper\n [2, 0x2], // OOB\n ];\n break;\n case 11:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 1, 0x2],\n [4, 4, 0, 0xc],\n [5, 4, 1, 0xd],\n [7, 5, 1, 0x1c],\n [9, 5, 2, 0x1d],\n [13, 6, 2, 0x3c],\n [17, 7, 2, 0x7a],\n [21, 7, 3, 0x7b],\n [29, 7, 4, 0x7c],\n [45, 7, 5, 0x7d],\n [77, 7, 6, 0x7e],\n [141, 7, 32, 0x7f], // upper\n ];\n break;\n case 12:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 1, 0x6],\n [5, 5, 0, 0x1c],\n [6, 5, 1, 0x1d],\n [8, 6, 1, 0x3c],\n [10, 7, 0, 0x7a],\n [11, 7, 1, 0x7b],\n [13, 7, 2, 0x7c],\n [17, 7, 3, 0x7d],\n [25, 7, 4, 0x7e],\n [41, 8, 5, 0xfe],\n [73, 8, 32, 0xff], // upper\n ];\n break;\n case 13:\n lines = [\n [1, 1, 0, 0x0],\n [2, 3, 0, 0x4],\n [3, 4, 0, 0xc],\n [4, 5, 0, 0x1c],\n [5, 4, 1, 0xd],\n [7, 3, 3, 0x5],\n [15, 6, 1, 0x3a],\n [17, 6, 2, 0x3b],\n [21, 6, 3, 0x3c],\n [29, 6, 4, 0x3d],\n [45, 6, 5, 0x3e],\n [77, 7, 6, 0x7e],\n [141, 7, 32, 0x7f], // upper\n ];\n break;\n case 14:\n lines = [\n [-2, 3, 0, 0x4],\n [-1, 3, 0, 0x5],\n [0, 1, 0, 0x0],\n [1, 3, 0, 0x6],\n [2, 3, 0, 0x7],\n ];\n break;\n case 15:\n lines = [\n [-24, 7, 4, 0x7c],\n [-8, 6, 2, 0x3c],\n [-4, 5, 1, 0x1c],\n [-2, 4, 0, 0xc],\n [-1, 3, 0, 0x4],\n [0, 1, 0, 0x0],\n [1, 3, 0, 0x5],\n [2, 4, 0, 0xd],\n [3, 5, 1, 0x1d],\n [5, 6, 2, 0x3d],\n [9, 7, 4, 0x7d],\n [-25, 7, 32, 0x7e, \"lower\"],\n [25, 7, 32, 0x7f], // upper\n ];\n break;\n default:\n throw new Jbig2Error(`standard table B.${number} does not exist`);\n }\n\n for (let i = 0, ii = lines.length; i < ii; i++) {\n lines[i] = new HuffmanLine(lines[i]);\n }\n table = new HuffmanTable(lines, true);\n standardTablesCache[number] = table;\n return table;\n}\n\nclass Reader {\n constructor(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n this.position = start;\n this.shift = -1;\n this.currentByte = 0;\n }\n\n readBit() {\n if (this.shift < 0) {\n if (this.position >= this.end) {\n throw new Jbig2Error(\"end of data while reading bit\");\n }\n this.currentByte = this.data[this.position++];\n this.shift = 7;\n }\n const bit = (this.currentByte >> this.shift) & 1;\n this.shift--;\n return bit;\n }\n\n readBits(numBits) {\n let result = 0,\n i;\n for (i = numBits - 1; i >= 0; i--) {\n result |= this.readBit() << i;\n }\n return result;\n }\n\n byteAlign() {\n this.shift = -1;\n }\n\n next() {\n if (this.position >= this.end) {\n return -1;\n }\n return this.data[this.position++];\n }\n}\n\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\n // Returns a Tables segment that has been earlier decoded.\n // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n let currentIndex = 0;\n for (let i = 0, ii = referredTo.length; i < ii; i++) {\n const table = customTables[referredTo[i]];\n if (table) {\n if (index === currentIndex) {\n return table;\n }\n currentIndex++;\n }\n }\n throw new Jbig2Error(\"can't find custom Huffman table\");\n}\n\nfunction getTextRegionHuffmanTables(\n textRegion,\n referredTo,\n customTables,\n numberOfSymbols,\n reader\n) {\n // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n // Read code lengths for RUNCODEs 0...34.\n const codes = [];\n for (let i = 0; i <= 34; i++) {\n const codeLength = reader.readBits(4);\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n }\n // Assign Huffman codes for RUNCODEs.\n const runCodesTable = new HuffmanTable(codes, false);\n\n // Read a Huffman code using the assignment above.\n // Interpret the RUNCODE codes and the additional bits (if any).\n codes.length = 0;\n for (let i = 0; i < numberOfSymbols; ) {\n const codeLength = runCodesTable.decode(reader);\n if (codeLength >= 32) {\n let repeatedLength, numberOfRepeats, j;\n switch (codeLength) {\n case 32:\n if (i === 0) {\n throw new Jbig2Error(\"no previous value in symbol ID table\");\n }\n numberOfRepeats = reader.readBits(2) + 3;\n repeatedLength = codes[i - 1].prefixLength;\n break;\n case 33:\n numberOfRepeats = reader.readBits(3) + 3;\n repeatedLength = 0;\n break;\n case 34:\n numberOfRepeats = reader.readBits(7) + 11;\n repeatedLength = 0;\n break;\n default:\n throw new Jbig2Error(\"invalid code length in symbol ID table\");\n }\n for (j = 0; j < numberOfRepeats; j++) {\n codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n i++;\n }\n } else {\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n i++;\n }\n }\n reader.byteAlign();\n const symbolIDTable = new HuffmanTable(codes, false);\n\n // 7.4.3.1.6 Text region segment Huffman table selection\n\n let customIndex = 0,\n tableFirstS,\n tableDeltaS,\n tableDeltaT;\n\n switch (textRegion.huffmanFS) {\n case 0:\n case 1:\n tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n break;\n case 3:\n tableFirstS = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman FS selector\");\n }\n\n switch (textRegion.huffmanDS) {\n case 0:\n case 1:\n case 2:\n tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n break;\n case 3:\n tableDeltaS = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DS selector\");\n }\n\n switch (textRegion.huffmanDT) {\n case 0:\n case 1:\n case 2:\n tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n break;\n case 3:\n tableDeltaT = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DT selector\");\n }\n\n if (textRegion.refinement) {\n // Load tables RDW, RDH, RDX and RDY.\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n return {\n symbolIDTable,\n tableFirstS,\n tableDeltaS,\n tableDeltaT,\n };\n}\n\nfunction getSymbolDictionaryHuffmanTables(\n dictionary,\n referredTo,\n customTables\n) {\n // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n let customIndex = 0,\n tableDeltaHeight,\n tableDeltaWidth;\n switch (dictionary.huffmanDHSelector) {\n case 0:\n case 1:\n tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n break;\n case 3:\n tableDeltaHeight = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DH selector\");\n }\n\n switch (dictionary.huffmanDWSelector) {\n case 0:\n case 1:\n tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n break;\n case 3:\n tableDeltaWidth = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DW selector\");\n }\n\n let tableBitmapSize, tableAggregateInstances;\n if (dictionary.bitmapSizeSelector) {\n tableBitmapSize = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n } else {\n tableBitmapSize = getStandardTable(1);\n }\n\n if (dictionary.aggregationInstancesSelector) {\n tableAggregateInstances = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n } else {\n tableAggregateInstances = getStandardTable(1);\n }\n\n return {\n tableDeltaHeight,\n tableDeltaWidth,\n tableBitmapSize,\n tableAggregateInstances,\n };\n}\n\nfunction readUncompressedBitmap(reader, width, height) {\n const bitmap = [];\n for (let y = 0; y < height; y++) {\n const row = new Uint8Array(width);\n bitmap.push(row);\n for (let x = 0; x < width; x++) {\n row[x] = reader.readBit();\n }\n reader.byteAlign();\n }\n return bitmap;\n}\n\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\n // MMR is the same compression algorithm as the PDF filter\n // CCITTFaxDecode with /K -1.\n const params = {\n K: -1,\n Columns: width,\n Rows: height,\n BlackIs1: true,\n EndOfBlock: endOfBlock,\n };\n const decoder = new CCITTFaxDecoder(input, params);\n const bitmap = [];\n let currentByte,\n eof = false;\n\n for (let y = 0; y < height; y++) {\n const row = new Uint8Array(width);\n bitmap.push(row);\n let shift = -1;\n for (let x = 0; x < width; x++) {\n if (shift < 0) {\n currentByte = decoder.readNextChar();\n if (currentByte === -1) {\n // Set the rest of the bits to zero.\n currentByte = 0;\n eof = true;\n }\n shift = 7;\n }\n row[x] = (currentByte >> shift) & 1;\n shift--;\n }\n }\n\n if (endOfBlock && !eof) {\n // Read until EOFB has been consumed.\n const lookForEOFLimit = 5;\n for (let i = 0; i < lookForEOFLimit; i++) {\n if (decoder.readNextChar() === -1) {\n break;\n }\n }\n }\n\n return bitmap;\n}\n\nclass Jbig2Image {\n parseChunks(chunks) {\n return parseJbig2Chunks(chunks);\n }\n\n parse(data) {\n const { imgData, width, height } = parseJbig2(data);\n this.width = width;\n this.height = height;\n return imgData;\n }\n}\n\nexport { Jbig2Image };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Table C-2\nconst QeTable = [\n { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\n { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\n { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\n { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\n { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\n { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\n { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\n { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\n { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\n { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\n { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\n { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\n { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\n { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\n { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\n { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\n { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\n { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\n { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\n { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\n { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\n { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\n { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\n { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\n { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\n { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\n { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\n { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\n { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\n { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\n { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\n { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\n { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\n { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\n { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\n { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\n { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\n { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\n { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\n { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\n { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\n { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\n { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\n { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\n { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\n { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\n { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\n];\n\n/**\n * This class implements the QM Coder decoding as defined in\n * JPEG 2000 Part I Final Committee Draft Version 1.0\n * Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nclass ArithmeticDecoder {\n // C.3.5 Initialisation of the decoder (INITDEC)\n constructor(data, start, end) {\n this.data = data;\n this.bp = start;\n this.dataEnd = end;\n\n this.chigh = data[start];\n this.clow = 0;\n\n this.byteIn();\n\n this.chigh = ((this.chigh << 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\n this.clow = (this.clow << 7) & 0xffff;\n this.ct -= 7;\n this.a = 0x8000;\n }\n\n // C.3.4 Compressed data input (BYTEIN)\n byteIn() {\n const data = this.data;\n let bp = this.bp;\n\n if (data[bp] === 0xff) {\n if (data[bp + 1] > 0x8f) {\n this.clow += 0xff00;\n this.ct = 8;\n } else {\n bp++;\n this.clow += data[bp] << 9;\n this.ct = 7;\n this.bp = bp;\n }\n } else {\n bp++;\n this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n this.ct = 8;\n this.bp = bp;\n }\n if (this.clow > 0xffff) {\n this.chigh += this.clow >> 16;\n this.clow &= 0xffff;\n }\n }\n\n // C.3.2 Decoding a decision (DECODE)\n readBit(contexts, pos) {\n // Contexts are packed into 1 byte:\n // highest 7 bits carry cx.index, lowest bit carries cx.mps\n let cx_index = contexts[pos] >> 1,\n cx_mps = contexts[pos] & 1;\n const qeTableIcx = QeTable[cx_index];\n const qeIcx = qeTableIcx.qe;\n let d;\n let a = this.a - qeIcx;\n\n if (this.chigh < qeIcx) {\n // exchangeLps\n if (a < qeIcx) {\n a = qeIcx;\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n } else {\n a = qeIcx;\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n }\n } else {\n this.chigh -= qeIcx;\n if ((a & 0x8000) !== 0) {\n this.a = a;\n return cx_mps;\n }\n // exchangeMps\n if (a < qeIcx) {\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n } else {\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n }\n }\n // C.3.3 renormD;\n do {\n if (this.ct === 0) {\n this.byteIn();\n }\n\n a <<= 1;\n this.chigh = ((this.chigh << 1) & 0xffff) | ((this.clow >> 15) & 1);\n this.clow = (this.clow << 1) & 0xffff;\n this.ct--;\n } while ((a & 0x8000) === 0);\n this.a = a;\n\n contexts[pos] = (cx_index << 1) | cx_mps;\n return d;\n }\n}\n\nexport { ArithmeticDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { JpegImage } from \"./jpg.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG's we use a library to decode these images and the stream behaves\n * like all the other DecodeStreams.\n */\nclass JpegStream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n // Some images may contain 'junk' before the SOI (start-of-image) marker.\n // Note: this seems to mainly affect inline images.\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n // Find the first byte of the SOI marker (0xFFD8).\n if (ch === 0xff) {\n stream.skip(-1); // Reset the stream position to the SOI.\n break;\n }\n }\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jpegOptions = {\n decodeTransform: undefined,\n colorTransform: undefined,\n };\n\n // Checking if values need to be transformed before conversion.\n const decodeArr = this.dict.getArray(\"D\", \"Decode\");\n if (this.forceRGB && Array.isArray(decodeArr)) {\n const bitsPerComponent = this.dict.get(\"BPC\", \"BitsPerComponent\") || 8;\n const decodeArrLength = decodeArr.length;\n const transform = new Int32Array(decodeArrLength);\n let transformNeeded = false;\n const maxValue = (1 << bitsPerComponent) - 1;\n for (let i = 0; i < decodeArrLength; i += 2) {\n transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\n transform[i + 1] = (decodeArr[i] * maxValue) | 0;\n if (transform[i] !== 256 || transform[i + 1] !== 0) {\n transformNeeded = true;\n }\n }\n if (transformNeeded) {\n jpegOptions.decodeTransform = transform;\n }\n }\n // Fetching the 'ColorTransform' entry, if it exists.\n if (this.params instanceof Dict) {\n const colorTransform = this.params.get(\"ColorTransform\");\n if (Number.isInteger(colorTransform)) {\n jpegOptions.colorTransform = colorTransform;\n }\n }\n const jpegImage = new JpegImage(jpegOptions);\n\n jpegImage.parse(this.bytes);\n const data = jpegImage.getData({\n width: this.drawWidth,\n height: this.drawHeight,\n forceRGB: this.forceRGB,\n isSourcePDF: true,\n });\n this.buffer = data;\n this.bufferLength = data.length;\n this.eof = true;\n }\n}\n\nexport { JpegStream };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\nimport { readUint16 } from \"./core_utils.js\";\n\nclass JpegError extends BaseException {\n constructor(msg) {\n super(`JPEG error: ${msg}`, \"JpegError\");\n }\n}\n\nclass DNLMarkerError extends BaseException {\n constructor(message, scanLines) {\n super(message, \"DNLMarkerError\");\n this.scanLines = scanLines;\n }\n}\n\nclass EOIMarkerError extends BaseException {\n constructor(msg) {\n super(msg, \"EOIMarkerError\");\n }\n}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n * (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n * (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n * Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n * (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\n// prettier-ignore\nconst dctZigZag = new Uint8Array([\n 0,\n 1, 8,\n 16, 9, 2,\n 3, 10, 17, 24,\n 32, 25, 18, 11, 4,\n 5, 12, 19, 26, 33, 40,\n 48, 41, 34, 27, 20, 13, 6,\n 7, 14, 21, 28, 35, 42, 49, 56,\n 57, 50, 43, 36, 29, 22, 15,\n 23, 30, 37, 44, 51, 58,\n 59, 52, 45, 38, 31,\n 39, 46, 53, 60,\n 61, 54, 47,\n 55, 62,\n 63\n]);\n\nconst dctCos1 = 4017; // cos(pi/16)\nconst dctSin1 = 799; // sin(pi/16)\nconst dctCos3 = 3406; // cos(3*pi/16)\nconst dctSin3 = 2276; // sin(3*pi/16)\nconst dctCos6 = 1567; // cos(6*pi/16)\nconst dctSin6 = 3784; // sin(6*pi/16)\nconst dctSqrt2 = 5793; // sqrt(2)\nconst dctSqrt1d2 = 2896; // sqrt(2) / 2\n\nfunction buildHuffmanTable(codeLengths, values) {\n let k = 0,\n i,\n j,\n length = 16;\n while (length > 0 && !codeLengths[length - 1]) {\n length--;\n }\n const code = [{ children: [], index: 0 }];\n let p = code[0],\n q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n // p here points to last code\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n}\n\nfunction getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n}\n\nfunction decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successivePrev,\n successive,\n parseDNLMarker = false\n) {\n const mcusPerLine = frame.mcusPerLine;\n const progressive = frame.progressive;\n\n const startOffset = offset;\n let bitsData = 0,\n bitsCount = 0;\n\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return (bitsData >> bitsCount) & 1;\n }\n bitsData = data[offset++];\n if (bitsData === 0xff) {\n const nextByte = data[offset++];\n if (nextByte) {\n if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n offset += 2; // Skip marker length.\n\n const scanLines = readUint16(data, offset);\n offset += 2;\n if (scanLines > 0 && scanLines !== frame.scanLines) {\n throw new DNLMarkerError(\n \"Found DNL marker (0xFFDC) while parsing scan data\",\n scanLines\n );\n }\n } else if (nextByte === /* EOI = */ 0xd9) {\n if (parseDNLMarker) {\n // NOTE: only 8-bit JPEG images are supported in this decoder.\n const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n // Heuristic to attempt to handle corrupt JPEG images with too\n // large `scanLines` parameter, by falling back to the currently\n // parsed number of scanLines when it's at least (approximately)\n // one order of magnitude smaller than expected (fixes\n // issue10880.pdf and issue10989.pdf).\n if (\n maybeScanLines > 0 &&\n Math.round(frame.scanLines / maybeScanLines) >= 10\n ) {\n throw new DNLMarkerError(\n \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n \"possibly caused by incorrect `scanLines` parameter\",\n maybeScanLines\n );\n }\n }\n throw new EOIMarkerError(\n \"Found EOI marker (0xFFD9) while parsing scan data\"\n );\n }\n throw new JpegError(\n `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n );\n }\n // unstuff 0\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n\n function decodeHuffman(tree) {\n let node = tree;\n while (true) {\n node = node[readBit()];\n switch (typeof node) {\n case \"number\":\n return node;\n case \"object\":\n continue;\n }\n throw new JpegError(\"invalid huffman sequence\");\n }\n }\n\n function receive(length) {\n let n = 0;\n while (length > 0) {\n n = (n << 1) | readBit();\n length--;\n }\n return n;\n }\n\n function receiveAndExtend(length) {\n if (length === 1) {\n return readBit() === 1 ? 1 : -1;\n }\n const n = receive(length);\n if (n >= 1 << (length - 1)) {\n return n;\n }\n return n + (-1 << length) + 1;\n }\n\n function decodeBaseline(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[blockOffset] = component.pred += diff;\n let k = 1;\n while (k < 64) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n component.blockData[blockOffset] = component.pred += diff;\n }\n\n function decodeDCSuccessive(component, blockOffset) {\n component.blockData[blockOffset] |= readBit() << successive;\n }\n\n let eobrun = 0;\n function decodeACFirst(component, blockOffset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n let k = spectralStart;\n const e = spectralEnd;\n while (k <= e) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] =\n receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n let successiveACState = 0,\n successiveACNextValue;\n function decodeACSuccessive(component, blockOffset) {\n let k = spectralStart;\n const e = spectralEnd;\n let r = 0;\n let s;\n let rs;\n while (k <= e) {\n const offsetZ = blockOffset + dctZigZag[k];\n const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n switch (successiveACState) {\n case 0: // initial state\n rs = decodeHuffman(component.huffmanTableAC);\n s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1) {\n throw new JpegError(\"invalid ACn encoding\");\n }\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1: // skipping r zero items\n case 2:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n r--;\n if (r === 0) {\n successiveACState = successiveACState === 2 ? 3 : 0;\n }\n }\n break;\n case 3: // set value for a zero item\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n component.blockData[offsetZ] = successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4: // eob\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n }\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0) {\n successiveACState = 0;\n }\n }\n }\n\n let blockRow = 0;\n function decodeMcu(component, decode, mcu, row, col) {\n const mcuRow = (mcu / mcusPerLine) | 0;\n const mcuCol = mcu % mcusPerLine;\n blockRow = mcuRow * component.v + row;\n const blockCol = mcuCol * component.h + col;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n function decodeBlock(component, decode, mcu) {\n blockRow = (mcu / component.blocksPerLine) | 0;\n const blockCol = mcu % component.blocksPerLine;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n const componentsLength = components.length;\n let component, i, j, k, n;\n let decodeFn;\n if (progressive) {\n if (spectralStart === 0) {\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n } else {\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n }\n } else {\n decodeFn = decodeBaseline;\n }\n\n let mcu = 0,\n fileMarker;\n let mcuExpected;\n if (componentsLength === 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n\n let h, v;\n while (mcu <= mcuExpected) {\n // reset interval stuff\n const mcuToRead = resetInterval\n ? Math.min(mcuExpected - mcu, resetInterval)\n : mcuExpected;\n\n // The `mcuToRead === 0` case should only occur when all of the expected\n // MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\n // some corrupt JPEG images contain more data than intended and we thus\n // want to skip over any extra RSTx markers below (fixes issue11794.pdf).\n if (mcuToRead > 0) {\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n\n if (componentsLength === 1) {\n component = components[0];\n for (n = 0; n < mcuToRead; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < mcuToRead; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n }\n }\n }\n\n // find marker\n bitsCount = 0;\n fileMarker = findNextFileMarker(data, offset);\n if (!fileMarker) {\n break; // Reached the end of the image data without finding any marker.\n }\n if (fileMarker.invalid) {\n // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n // past those to attempt to find a valid marker (fixes issue4090.pdf).\n const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n warn(\n `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\n );\n offset = fileMarker.offset;\n }\n if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n // RSTx\n offset += 2;\n } else {\n break;\n }\n }\n\n return offset - startOffset;\n}\n\n// A port of poppler's IDCT method which in turn is taken from:\n// Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n// 'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n// IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n// 988-991.\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n const qt = component.quantizationTable,\n blockData = component.blockData;\n let v0, v1, v2, v3, v4, v5, v6, v7;\n let p0, p1, p2, p3, p4, p5, p6, p7;\n let t;\n\n if (!qt) {\n throw new JpegError(\"missing required Quantization Table.\");\n }\n\n // inverse DCT on rows\n for (let row = 0; row < 64; row += 8) {\n // gather block data\n p0 = blockData[blockBufferOffset + row];\n p1 = blockData[blockBufferOffset + row + 1];\n p2 = blockData[blockBufferOffset + row + 2];\n p3 = blockData[blockBufferOffset + row + 3];\n p4 = blockData[blockBufferOffset + row + 4];\n p5 = blockData[blockBufferOffset + row + 5];\n p6 = blockData[blockBufferOffset + row + 6];\n p7 = blockData[blockBufferOffset + row + 7];\n\n // dequant p0\n p0 *= qt[row];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 512) >> 10;\n p[row] = t;\n p[row + 1] = t;\n p[row + 2] = t;\n p[row + 3] = t;\n p[row + 4] = t;\n p[row + 5] = t;\n p[row + 6] = t;\n p[row + 7] = t;\n continue;\n }\n // dequant p1 ... p7\n p1 *= qt[row + 1];\n p2 *= qt[row + 2];\n p3 *= qt[row + 3];\n p4 *= qt[row + 4];\n p5 *= qt[row + 5];\n p6 *= qt[row + 6];\n p7 *= qt[row + 7];\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 128) >> 8;\n v1 = (dctSqrt2 * p4 + 128) >> 8;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n v5 = p3 << 4;\n v6 = p5 << 4;\n\n // stage 3\n v0 = (v0 + v1 + 1) >> 1;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[row] = v0 + v7;\n p[row + 7] = v0 - v7;\n p[row + 1] = v1 + v6;\n p[row + 6] = v1 - v6;\n p[row + 2] = v2 + v5;\n p[row + 5] = v2 - v5;\n p[row + 3] = v3 + v4;\n p[row + 4] = v3 - v4;\n }\n\n // inverse DCT on columns\n for (let col = 0; col < 8; ++col) {\n p0 = p[col];\n p1 = p[col + 8];\n p2 = p[col + 16];\n p3 = p[col + 24];\n p4 = p[col + 32];\n p5 = p[col + 40];\n p6 = p[col + 48];\n p7 = p[col + 56];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 8192) >> 14;\n // Convert to 8-bit.\n if (t < -2040) {\n t = 0;\n } else if (t >= 2024) {\n t = 255;\n } else {\n t = (t + 2056) >> 4;\n }\n blockData[blockBufferOffset + col] = t;\n blockData[blockBufferOffset + col + 8] = t;\n blockData[blockBufferOffset + col + 16] = t;\n blockData[blockBufferOffset + col + 24] = t;\n blockData[blockBufferOffset + col + 32] = t;\n blockData[blockBufferOffset + col + 40] = t;\n blockData[blockBufferOffset + col + 48] = t;\n blockData[blockBufferOffset + col + 56] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 2048) >> 12;\n v1 = (dctSqrt2 * p4 + 2048) >> 12;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n v5 = p3;\n v6 = p5;\n\n // stage 3\n // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n // converting to UInt8 range later.\n v0 = ((v0 + v1 + 1) >> 1) + 4112;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p0 = v0 + v7;\n p7 = v0 - v7;\n p1 = v1 + v6;\n p6 = v1 - v6;\n p2 = v2 + v5;\n p5 = v2 - v5;\n p3 = v3 + v4;\n p4 = v3 - v4;\n\n // Convert to 8-bit integers.\n if (p0 < 16) {\n p0 = 0;\n } else if (p0 >= 4080) {\n p0 = 255;\n } else {\n p0 >>= 4;\n }\n if (p1 < 16) {\n p1 = 0;\n } else if (p1 >= 4080) {\n p1 = 255;\n } else {\n p1 >>= 4;\n }\n if (p2 < 16) {\n p2 = 0;\n } else if (p2 >= 4080) {\n p2 = 255;\n } else {\n p2 >>= 4;\n }\n if (p3 < 16) {\n p3 = 0;\n } else if (p3 >= 4080) {\n p3 = 255;\n } else {\n p3 >>= 4;\n }\n if (p4 < 16) {\n p4 = 0;\n } else if (p4 >= 4080) {\n p4 = 255;\n } else {\n p4 >>= 4;\n }\n if (p5 < 16) {\n p5 = 0;\n } else if (p5 >= 4080) {\n p5 = 255;\n } else {\n p5 >>= 4;\n }\n if (p6 < 16) {\n p6 = 0;\n } else if (p6 >= 4080) {\n p6 = 255;\n } else {\n p6 >>= 4;\n }\n if (p7 < 16) {\n p7 = 0;\n } else if (p7 >= 4080) {\n p7 = 255;\n } else {\n p7 >>= 4;\n }\n\n // store block data\n blockData[blockBufferOffset + col] = p0;\n blockData[blockBufferOffset + col + 8] = p1;\n blockData[blockBufferOffset + col + 16] = p2;\n blockData[blockBufferOffset + col + 24] = p3;\n blockData[blockBufferOffset + col + 32] = p4;\n blockData[blockBufferOffset + col + 40] = p5;\n blockData[blockBufferOffset + col + 48] = p6;\n blockData[blockBufferOffset + col + 56] = p7;\n }\n}\n\nfunction buildComponentData(frame, component) {\n const blocksPerLine = component.blocksPerLine;\n const blocksPerColumn = component.blocksPerColumn;\n const computationBuffer = new Int16Array(64);\n\n for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n const offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n}\n\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\n const maxPos = data.length - 1;\n let newPos = startPos < currentPos ? startPos : currentPos;\n\n if (currentPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n const currentMarker = readUint16(data, currentPos);\n if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n return {\n invalid: null,\n marker: currentMarker,\n offset: currentPos,\n };\n }\n let newMarker = readUint16(data, newPos);\n while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n if (++newPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n newMarker = readUint16(data, newPos);\n }\n return {\n invalid: currentMarker.toString(16),\n marker: newMarker,\n offset: newPos,\n };\n}\n\nclass JpegImage {\n constructor({ decodeTransform = null, colorTransform = -1 } = {}) {\n this._decodeTransform = decodeTransform;\n this._colorTransform = colorTransform;\n }\n\n parse(data, { dnlScanLines = null } = {}) {\n function readDataBlock() {\n const length = readUint16(data, offset);\n offset += 2;\n let endOffset = offset + length - 2;\n\n const fileMarker = findNextFileMarker(data, endOffset, offset);\n if (fileMarker && fileMarker.invalid) {\n warn(\n \"readDataBlock - incorrect length, current marker is: \" +\n fileMarker.invalid\n );\n endOffset = fileMarker.offset;\n }\n\n const array = data.subarray(offset, endOffset);\n offset += array.length;\n return array;\n }\n\n function prepareComponents(frame) {\n const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (let i = 0, ii = frame.components.length; i < ii; i++) {\n const component = frame.components[i];\n const blocksPerLine = Math.ceil(\n (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n );\n const blocksPerColumn = Math.ceil(\n (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n );\n const blocksPerLineForMcu = mcusPerLine * component.h;\n const blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n const blocksBufferSize =\n 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n\n let offset = 0;\n let jfif = null;\n let adobe = null;\n let frame, resetInterval;\n let numSOSMarkers = 0;\n const quantizationTables = [];\n const huffmanTablesAC = [],\n huffmanTablesDC = [];\n\n let fileMarker = readUint16(data, offset);\n offset += 2;\n if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n\n markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n let i, j, l;\n switch (fileMarker) {\n case 0xffe0: // APP0 (Application Specific)\n case 0xffe1: // APP1\n case 0xffe2: // APP2\n case 0xffe3: // APP3\n case 0xffe4: // APP4\n case 0xffe5: // APP5\n case 0xffe6: // APP6\n case 0xffe7: // APP7\n case 0xffe8: // APP8\n case 0xffe9: // APP9\n case 0xffea: // APP10\n case 0xffeb: // APP11\n case 0xffec: // APP12\n case 0xffed: // APP13\n case 0xffee: // APP14\n case 0xffef: // APP15\n case 0xfffe: // COM (Comment)\n const appData = readDataBlock();\n\n if (fileMarker === 0xffe0) {\n // 'JFIF\\x00'\n if (\n appData[0] === 0x4a &&\n appData[1] === 0x46 &&\n appData[2] === 0x49 &&\n appData[3] === 0x46 &&\n appData[4] === 0\n ) {\n jfif = {\n version: { major: appData[5], minor: appData[6] },\n densityUnits: appData[7],\n xDensity: (appData[8] << 8) | appData[9],\n yDensity: (appData[10] << 8) | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(\n 14,\n 14 + 3 * appData[12] * appData[13]\n ),\n };\n }\n }\n // TODO APP1 - Exif\n if (fileMarker === 0xffee) {\n // 'Adobe'\n if (\n appData[0] === 0x41 &&\n appData[1] === 0x64 &&\n appData[2] === 0x6f &&\n appData[3] === 0x62 &&\n appData[4] === 0x65\n ) {\n adobe = {\n version: (appData[5] << 8) | appData[6],\n flags0: (appData[7] << 8) | appData[8],\n flags1: (appData[9] << 8) | appData[10],\n transformCode: appData[11],\n };\n }\n }\n break;\n\n case 0xffdb: // DQT (Define Quantization Tables)\n const quantizationTablesLength = readUint16(data, offset);\n offset += 2;\n const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n let z;\n while (offset < quantizationTablesEnd) {\n const quantizationTableSpec = data[offset++];\n const tableData = new Uint16Array(64);\n if (quantizationTableSpec >> 4 === 0) {\n // 8 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if (quantizationTableSpec >> 4 === 1) {\n // 16 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = readUint16(data, offset);\n offset += 2;\n }\n } else {\n throw new JpegError(\"DQT - invalid table spec\");\n }\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n\n case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n if (frame) {\n throw new JpegError(\"Only single frame JPEGs supported\");\n }\n offset += 2; // Skip marker length.\n\n frame = {};\n frame.extended = fileMarker === 0xffc1;\n frame.progressive = fileMarker === 0xffc2;\n frame.precision = data[offset++];\n const sofScanLines = readUint16(data, offset);\n offset += 2;\n frame.scanLines = dnlScanLines || sofScanLines;\n frame.samplesPerLine = readUint16(data, offset);\n offset += 2;\n frame.components = [];\n frame.componentIds = {};\n const componentsCount = data[offset++];\n let maxH = 0,\n maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n const componentId = data[offset];\n const h = data[offset + 1] >> 4;\n const v = data[offset + 1] & 15;\n if (maxH < h) {\n maxH = h;\n }\n if (maxV < v) {\n maxV = v;\n }\n const qId = data[offset + 2];\n l = frame.components.push({\n h,\n v,\n quantizationId: qId,\n quantizationTable: null, // See comment below.\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n\n case 0xffc4: // DHT (Define Huffman Tables)\n const huffmanLength = readUint16(data, offset);\n offset += 2;\n for (i = 2; i < huffmanLength; ) {\n const huffmanTableSpec = data[offset++];\n const codeLengths = new Uint8Array(16);\n let codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++) {\n codeLengthSum += codeLengths[j] = data[offset];\n }\n const huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++) {\n huffmanValues[j] = data[offset];\n }\n i += 17 + codeLengthSum;\n\n (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n huffmanTableSpec & 15\n ] = buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n\n case 0xffdd: // DRI (Define Restart Interval)\n offset += 2; // Skip marker length.\n\n resetInterval = readUint16(data, offset);\n offset += 2;\n break;\n\n case 0xffda: // SOS (Start of Scan)\n // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n // of the first scan segment and may only occur once in an image.\n // Furthermore, to prevent an infinite loop, do *not* attempt to\n // parse DNL markers during re-parsing of the JPEG scan data.\n const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n offset += 2; // Skip marker length.\n\n const selectorsCount = data[offset++],\n components = [];\n for (i = 0; i < selectorsCount; i++) {\n const index = data[offset++];\n const componentIndex = frame.componentIds[index];\n const component = frame.components[componentIndex];\n component.index = index;\n const tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n const spectralStart = data[offset++],\n spectralEnd = data[offset++],\n successiveApproximation = data[offset++];\n try {\n const processed = decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successiveApproximation >> 4,\n successiveApproximation & 15,\n parseDNLMarker\n );\n offset += processed;\n } catch (ex) {\n if (ex instanceof DNLMarkerError) {\n warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n return this.parse(data, { dnlScanLines: ex.scanLines });\n } else if (ex instanceof EOIMarkerError) {\n warn(`${ex.message} -- ignoring the rest of the image data.`);\n break markerLoop;\n }\n throw ex;\n }\n break;\n\n case 0xffdc: // DNL (Define Number of Lines)\n // Ignore the marker, since it's being handled in `decodeScan`.\n offset += 4;\n break;\n\n case 0xffff: // Fill bytes\n if (data[offset] !== 0xff) {\n // Avoid skipping a valid marker.\n offset--;\n }\n break;\n\n default:\n // Could be incorrect encoding -- the last 0xFF byte of the previous\n // block could have been eaten by the encoder, hence we fallback to\n // `startPos = offset - 3` when looking for the next valid marker.\n const nextFileMarker = findNextFileMarker(\n data,\n /* currentPos = */ offset - 2,\n /* startPos = */ offset - 3\n );\n if (nextFileMarker && nextFileMarker.invalid) {\n warn(\n \"JpegImage.parse - unexpected data, current marker is: \" +\n nextFileMarker.invalid\n );\n offset = nextFileMarker.offset;\n break;\n }\n if (!nextFileMarker || offset >= data.length - 1) {\n warn(\n \"JpegImage.parse - reached the end of the image data \" +\n \"without finding an EOI marker (0xFFD9).\"\n );\n break markerLoop;\n }\n throw new JpegError(\n \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n );\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n }\n\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n for (let i = 0, ii = frame.components.length; i < ii; i++) {\n const component = frame.components[i];\n\n // Prevent errors when DQT markers are placed after SOF{n} markers,\n // by assigning the `quantizationTable` entry after the entire image\n // has been parsed (fixes issue7406.pdf).\n const quantizationTable = quantizationTables[component.quantizationId];\n if (quantizationTable) {\n component.quantizationTable = quantizationTable;\n }\n\n this.components.push({\n index: component.index,\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn,\n });\n }\n this.numComponents = this.components.length;\n return undefined;\n }\n\n _getLinearizedBlockData(width, height, isSourcePDF = false) {\n const scaleX = this.width / width,\n scaleY = this.height / height;\n\n let component, componentScaleX, componentScaleY, blocksPerScanline;\n let x, y, i, j, k;\n let index;\n let offset = 0;\n let output;\n const numComponents = this.components.length;\n const dataLength = width * height * numComponents;\n const data = new Uint8ClampedArray(dataLength);\n const xScaleBlockOffset = new Uint32Array(width);\n const mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n let lastComponentScaleX;\n\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n output = component.output;\n blocksPerScanline = (component.blocksPerLine + 1) << 3;\n // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n // component data, that's only necessary when `componentScaleX` changes.\n if (componentScaleX !== lastComponentScaleX) {\n for (x = 0; x < width; x++) {\n j = 0 | (x * componentScaleX);\n xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n }\n lastComponentScaleX = componentScaleX;\n }\n // linearize the blocks of the component\n for (y = 0; y < height; y++) {\n j = 0 | (y * componentScaleY);\n index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n for (x = 0; x < width; x++) {\n data[offset] = output[index + xScaleBlockOffset[x]];\n offset += numComponents;\n }\n }\n }\n\n // decodeTransform contains pairs of multiplier (-256..256) and additive\n let transform = this._decodeTransform;\n\n // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n // (this can be observed by extracting the raw image data).\n // Since the conversion algorithms (see below) were written primarily for\n // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n //\n // Unfortunately it's not (always) possible to tell, from the image data\n // alone, if it needs to be inverted. Thus in an attempt to provide better\n // out-of-box behaviour when `JpegImage` is used standalone, default to\n // inverting JPEG (CMYK) images if and only if the image data does *not*\n // come from a PDF file and no `decodeTransform` was passed by the user.\n if (!isSourcePDF && numComponents === 4 && !transform) {\n transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n }\n\n if (transform) {\n for (i = 0; i < dataLength; ) {\n for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n }\n }\n }\n return data;\n }\n\n get _isColorConversionNeeded() {\n if (this.adobe) {\n // The adobe transform marker overrides any previous setting.\n return !!this.adobe.transformCode;\n }\n if (this.numComponents === 3) {\n if (this._colorTransform === 0) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n // then the colours should *not* be transformed.\n return false;\n } else if (\n this.components[0].index === /* \"R\" = */ 0x52 &&\n this.components[1].index === /* \"G\" = */ 0x47 &&\n this.components[2].index === /* \"B\" = */ 0x42\n ) {\n // If the three components are indexed as RGB in ASCII\n // then the colours should *not* be transformed.\n return false;\n }\n return true;\n }\n // `this.numComponents !== 3`\n if (this._colorTransform === 1) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n // then the colours should be transformed.\n return true;\n }\n return false;\n }\n\n _convertYccToRgb(data) {\n let Y, Cb, Cr;\n for (let i = 0, length = data.length; i < length; i += 3) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = Y - 179.456 + 1.402 * Cr;\n data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n data[i + 2] = Y - 226.816 + 1.772 * Cb;\n }\n return data;\n }\n\n _convertYcckToRgb(data) {\n let Y, Cb, Cr, k;\n let offset = 0;\n for (let i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n k = data[i + 3];\n\n data[offset++] =\n -122.67195406894 +\n Cb *\n (-6.60635669420364e-5 * Cb +\n 0.000437130475926232 * Cr -\n 5.4080610064599e-5 * Y +\n 0.00048449797120281 * k -\n 0.154362151871126) +\n Cr *\n (-0.000957964378445773 * Cr +\n 0.000817076911346625 * Y -\n 0.00477271405408747 * k +\n 1.53380253221734) +\n Y *\n (0.000961250184130688 * Y -\n 0.00266257332283933 * k +\n 0.48357088451265) +\n k * (-0.000336197177618394 * k + 0.484791561490776);\n\n data[offset++] =\n 107.268039397724 +\n Cb *\n (2.19927104525741e-5 * Cb -\n 0.000640992018297945 * Cr +\n 0.000659397001245577 * Y +\n 0.000426105652938837 * k -\n 0.176491792462875) +\n Cr *\n (-0.000778269941513683 * Cr +\n 0.00130872261408275 * Y +\n 0.000770482631801132 * k -\n 0.151051492775562) +\n Y *\n (0.00126935368114843 * Y -\n 0.00265090189010898 * k +\n 0.25802910206845) +\n k * (-0.000318913117588328 * k - 0.213742400323665);\n\n data[offset++] =\n -20.810012546947 +\n Cb *\n (-0.000570115196973677 * Cb -\n 2.63409051004589e-5 * Cr +\n 0.0020741088115012 * Y -\n 0.00288260236853442 * k +\n 0.814272968359295) +\n Cr *\n (-1.53496057440975e-5 * Cr -\n 0.000132689043961446 * Y +\n 0.000560833691242812 * k -\n 0.195152027534049) +\n Y *\n (0.00174418132927582 * Y -\n 0.00255243321439347 * k +\n 0.116935020465145) +\n k * (-0.000343531996510555 * k + 0.24165260232407);\n }\n // Ensure that only the converted RGB data is returned.\n return data.subarray(0, offset);\n }\n\n _convertYcckToCmyk(data) {\n let Y, Cb, Cr;\n for (let i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = 434.456 - Y - 1.402 * Cr;\n data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n data[i + 2] = 481.816 - Y - 1.772 * Cb;\n // K in data[i + 3] is unchanged\n }\n return data;\n }\n\n _convertCmykToRgb(data) {\n let c, m, y, k;\n let offset = 0;\n for (let i = 0, length = data.length; i < length; i += 4) {\n c = data[i];\n m = data[i + 1];\n y = data[i + 2];\n k = data[i + 3];\n\n data[offset++] =\n 255 +\n c *\n (-0.00006747147073602441 * c +\n 0.0008379262121013727 * m +\n 0.0002894718188643294 * y +\n 0.003264231057537806 * k -\n 1.1185611867203937) +\n m *\n (0.000026374107616089405 * m -\n 0.00008626949158638572 * y -\n 0.0002748769067499491 * k -\n 0.02155688794978967) +\n y *\n (-0.00003878099212869363 * y -\n 0.0003267808279485286 * k +\n 0.0686742238595345) -\n k * (0.0003361971776183937 * k + 0.7430659151342254);\n\n data[offset++] =\n 255 +\n c *\n (0.00013596372813588848 * c +\n 0.000924537132573585 * m +\n 0.00010567359618683593 * y +\n 0.0004791864687436512 * k -\n 0.3109689587515875) +\n m *\n (-0.00023545346108370344 * m +\n 0.0002702845253534714 * y +\n 0.0020200308977307156 * k -\n 0.7488052167015494) +\n y *\n (0.00006834815998235662 * y +\n 0.00015168452363460973 * k -\n 0.09751927774728933) -\n k * (0.0003189131175883281 * k + 0.7364883807733168);\n\n data[offset++] =\n 255 +\n c *\n (0.000013598650411385307 * c +\n 0.00012423956175490851 * m +\n 0.0004751985097583589 * y -\n 0.0000036729317476630422 * k -\n 0.05562186980264034) +\n m *\n (0.00016141380598724676 * m +\n 0.0009692239130725186 * y +\n 0.0007782692450036253 * k -\n 0.44015232367526463) +\n y *\n (5.068882914068769e-7 * y +\n 0.0017778369011375071 * k -\n 0.7591454649749609) -\n k * (0.0003435319965105553 * k + 0.7063770186160144);\n }\n // Ensure that only the converted RGB data is returned.\n return data.subarray(0, offset);\n }\n\n getData({ width, height, forceRGB = false, isSourcePDF = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n isSourcePDF === true,\n 'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.'\n );\n }\n if (this.numComponents > 4) {\n throw new JpegError(\"Unsupported color mode\");\n }\n // Type of data: Uint8ClampedArray(width * height * numComponents)\n const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n if (this.numComponents === 1 && forceRGB) {\n const dataLength = data.length;\n const rgbData = new Uint8ClampedArray(dataLength * 3);\n let offset = 0;\n for (let i = 0; i < dataLength; i++) {\n const grayColor = data[i];\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n }\n return rgbData;\n } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n return this._convertYccToRgb(data);\n } else if (this.numComponents === 4) {\n if (this._isColorConversionNeeded) {\n if (forceRGB) {\n return this._convertYcckToRgb(data);\n }\n return this._convertYcckToCmyk(data);\n } else if (forceRGB) {\n return this._convertCmykToRgb(data);\n }\n }\n return data;\n }\n}\n\nexport { JpegImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG 2000's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass JpxStream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jpxImage = new JpxImage();\n jpxImage.parse(this.bytes);\n\n const width = jpxImage.width;\n const height = jpxImage.height;\n const componentsCount = jpxImage.componentsCount;\n const tileCount = jpxImage.tiles.length;\n if (tileCount === 1) {\n this.buffer = jpxImage.tiles[0].items;\n } else {\n const data = new Uint8ClampedArray(width * height * componentsCount);\n\n for (let k = 0; k < tileCount; k++) {\n const tileComponents = jpxImage.tiles[k];\n const tileWidth = tileComponents.width;\n const tileHeight = tileComponents.height;\n const tileLeft = tileComponents.left;\n const tileTop = tileComponents.top;\n\n const src = tileComponents.items;\n let srcPosition = 0;\n let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n const imgRowSize = width * componentsCount;\n const tileRowSize = tileWidth * componentsCount;\n\n for (let j = 0; j < tileHeight; j++) {\n const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n data.set(rowBytes, dataPosition);\n srcPosition += tileRowSize;\n dataPosition += imgRowSize;\n }\n }\n this.buffer = data;\n }\n this.bufferLength = this.buffer.length;\n this.eof = true;\n }\n}\n\nexport { JpxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, info, unreachable, warn } from \"../shared/util.js\";\nimport { log2, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\n\nclass JpxError extends BaseException {\n constructor(msg) {\n super(`JPX error: ${msg}`, \"JpxError\");\n }\n}\n\n// Table E.1\nconst SubbandsGainLog2 = {\n LL: 0,\n LH: 1,\n HL: 1,\n HH: 2,\n};\n\nclass JpxImage {\n constructor() {\n this.failOnCorruptedImage = false;\n }\n\n parse(data) {\n const head = readUint16(data, 0);\n // No box header, immediate start of codestream (SOC)\n if (head === 0xff4f) {\n this.parseCodestream(data, 0, data.length);\n return;\n }\n\n const length = data.length;\n let position = 0;\n while (position < length) {\n let headerSize = 8;\n let lbox = readUint32(data, position);\n const tbox = readUint32(data, position + 4);\n position += headerSize;\n if (lbox === 1) {\n // XLBox: read UInt64 according to spec.\n // JavaScript's int precision of 53 bit should be sufficient here.\n lbox =\n readUint32(data, position) * 4294967296 +\n readUint32(data, position + 4);\n position += 8;\n headerSize += 8;\n }\n if (lbox === 0) {\n lbox = length - position + headerSize;\n }\n if (lbox < headerSize) {\n throw new JpxError(\"Invalid box field size\");\n }\n const dataLength = lbox - headerSize;\n let jumpDataLength = true;\n switch (tbox) {\n case 0x6a703268: // 'jp2h'\n jumpDataLength = false; // parsing child boxes\n break;\n case 0x636f6c72: // 'colr'\n // Colorspaces are not used, the CS from the PDF is used.\n const method = data[position];\n if (method === 1) {\n // enumerated colorspace\n const colorspace = readUint32(data, position + 3);\n switch (colorspace) {\n case 16: // this indicates a sRGB colorspace\n case 17: // this indicates a grayscale colorspace\n case 18: // this indicates a YUV colorspace\n break;\n default:\n warn(\"Unknown colorspace \" + colorspace);\n break;\n }\n } else if (method === 2) {\n info(\"ICC profile not supported\");\n }\n break;\n case 0x6a703263: // 'jp2c'\n this.parseCodestream(data, position, position + dataLength);\n break;\n case 0x6a502020: // 'jP\\024\\024'\n if (readUint32(data, position) !== 0x0d0a870a) {\n warn(\"Invalid JP2 signature\");\n }\n break;\n // The following header types are valid but currently not used:\n case 0x6a501a1a: // 'jP\\032\\032'\n case 0x66747970: // 'ftyp'\n case 0x72726571: // 'rreq'\n case 0x72657320: // 'res '\n case 0x69686472: // 'ihdr'\n break;\n default:\n const headerType = String.fromCharCode(\n (tbox >> 24) & 0xff,\n (tbox >> 16) & 0xff,\n (tbox >> 8) & 0xff,\n tbox & 0xff\n );\n warn(`Unsupported header type ${tbox} (${headerType}).`);\n break;\n }\n if (jumpDataLength) {\n position += dataLength;\n }\n }\n }\n\n parseImageProperties(stream) {\n let newByte = stream.getByte();\n while (newByte >= 0) {\n const oldByte = newByte;\n newByte = stream.getByte();\n const code = (oldByte << 8) | newByte;\n // Image and tile size (SIZ)\n if (code === 0xff51) {\n stream.skip(4);\n const Xsiz = stream.getInt32() >>> 0; // Byte 4\n const Ysiz = stream.getInt32() >>> 0; // Byte 8\n const XOsiz = stream.getInt32() >>> 0; // Byte 12\n const YOsiz = stream.getInt32() >>> 0; // Byte 16\n stream.skip(16);\n const Csiz = stream.getUint16(); // Byte 36\n this.width = Xsiz - XOsiz;\n this.height = Ysiz - YOsiz;\n this.componentsCount = Csiz;\n // Results are always returned as `Uint8ClampedArray`s.\n this.bitsPerComponent = 8;\n return;\n }\n }\n throw new JpxError(\"No size marker found in JPX stream\");\n }\n\n parseCodestream(data, start, end) {\n const context = {};\n let doNotRecover = false;\n try {\n let position = start;\n while (position + 1 < end) {\n const code = readUint16(data, position);\n position += 2;\n\n let length = 0,\n j,\n sqcd,\n spqcds,\n spqcdSize,\n scalarExpounded,\n tile;\n switch (code) {\n case 0xff4f: // Start of codestream (SOC)\n context.mainHeader = true;\n break;\n case 0xffd9: // End of codestream (EOC)\n break;\n case 0xff51: // Image and tile size (SIZ)\n length = readUint16(data, position);\n const siz = {};\n siz.Xsiz = readUint32(data, position + 4);\n siz.Ysiz = readUint32(data, position + 8);\n siz.XOsiz = readUint32(data, position + 12);\n siz.YOsiz = readUint32(data, position + 16);\n siz.XTsiz = readUint32(data, position + 20);\n siz.YTsiz = readUint32(data, position + 24);\n siz.XTOsiz = readUint32(data, position + 28);\n siz.YTOsiz = readUint32(data, position + 32);\n const componentsCount = readUint16(data, position + 36);\n siz.Csiz = componentsCount;\n const components = [];\n j = position + 38;\n for (let i = 0; i < componentsCount; i++) {\n const component = {\n precision: (data[j] & 0x7f) + 1,\n isSigned: !!(data[j] & 0x80),\n XRsiz: data[j + 1],\n YRsiz: data[j + 2],\n };\n j += 3;\n calculateComponentDimensions(component, siz);\n components.push(component);\n }\n context.SIZ = siz;\n context.components = components;\n calculateTileGrids(context, components);\n context.QCC = [];\n context.COC = [];\n break;\n case 0xff5c: // Quantization default (QCD)\n length = readUint16(data, position);\n const qcd = {};\n j = position + 2;\n sqcd = data[j++];\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n qcd.noQuantization = spqcdSize === 8;\n qcd.scalarExpounded = scalarExpounded;\n qcd.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n const spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcd.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCD = qcd;\n } else {\n context.currentTile.QCD = qcd;\n context.currentTile.QCC = [];\n }\n break;\n case 0xff5d: // Quantization component (QCC)\n length = readUint16(data, position);\n const qcc = {};\n j = position + 2;\n let cqcc;\n if (context.SIZ.Csiz < 257) {\n cqcc = data[j++];\n } else {\n cqcc = readUint16(data, j);\n j += 2;\n }\n sqcd = data[j++];\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n qcc.noQuantization = spqcdSize === 8;\n qcc.scalarExpounded = scalarExpounded;\n qcc.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n const spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcc.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCC[cqcc] = qcc;\n } else {\n context.currentTile.QCC[cqcc] = qcc;\n }\n break;\n case 0xff52: // Coding style default (COD)\n length = readUint16(data, position);\n const cod = {};\n j = position + 2;\n const scod = data[j++];\n cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n cod.sopMarkerUsed = !!(scod & 2);\n cod.ephMarkerUsed = !!(scod & 4);\n cod.progressionOrder = data[j++];\n cod.layersCount = readUint16(data, j);\n j += 2;\n cod.multipleComponentTransform = data[j++];\n\n cod.decompositionLevelsCount = data[j++];\n cod.xcb = (data[j++] & 0xf) + 2;\n cod.ycb = (data[j++] & 0xf) + 2;\n const blockStyle = data[j++];\n cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n cod.resetContextProbabilities = !!(blockStyle & 2);\n cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n cod.verticallyStripe = !!(blockStyle & 8);\n cod.predictableTermination = !!(blockStyle & 16);\n cod.segmentationSymbolUsed = !!(blockStyle & 32);\n cod.reversibleTransformation = data[j++];\n if (cod.entropyCoderWithCustomPrecincts) {\n const precinctsSizes = [];\n while (j < length + position) {\n const precinctsSize = data[j++];\n precinctsSizes.push({\n PPx: precinctsSize & 0xf,\n PPy: precinctsSize >> 4,\n });\n }\n cod.precinctsSizes = precinctsSizes;\n }\n const unsupported = [];\n if (cod.selectiveArithmeticCodingBypass) {\n unsupported.push(\"selectiveArithmeticCodingBypass\");\n }\n if (cod.terminationOnEachCodingPass) {\n unsupported.push(\"terminationOnEachCodingPass\");\n }\n if (cod.verticallyStripe) {\n unsupported.push(\"verticallyStripe\");\n }\n if (cod.predictableTermination) {\n unsupported.push(\"predictableTermination\");\n }\n if (unsupported.length > 0) {\n doNotRecover = true;\n warn(`JPX: Unsupported COD options (${unsupported.join(\", \")}).`);\n }\n if (context.mainHeader) {\n context.COD = cod;\n } else {\n context.currentTile.COD = cod;\n context.currentTile.COC = [];\n }\n break;\n case 0xff90: // Start of tile-part (SOT)\n length = readUint16(data, position);\n tile = {};\n tile.index = readUint16(data, position + 2);\n tile.length = readUint32(data, position + 4);\n tile.dataEnd = tile.length + position - 2;\n tile.partIndex = data[position + 8];\n tile.partsCount = data[position + 9];\n\n context.mainHeader = false;\n if (tile.partIndex === 0) {\n // reset component specific settings\n tile.COD = context.COD;\n tile.COC = context.COC.slice(0); // clone of the global COC\n tile.QCD = context.QCD;\n tile.QCC = context.QCC.slice(0); // clone of the global COC\n }\n context.currentTile = tile;\n break;\n case 0xff93: // Start of data (SOD)\n tile = context.currentTile;\n if (tile.partIndex === 0) {\n initializeTile(context, tile.index);\n buildPackets(context);\n }\n\n // moving to the end of the data\n length = tile.dataEnd - position;\n parseTilePackets(context, data, position, length);\n break;\n case 0xff53: // Coding style component (COC)\n warn(\"JPX: Codestream code 0xFF53 (COC) is not implemented.\");\n /* falls through */\n case 0xff55: // Tile-part lengths, main header (TLM)\n case 0xff57: // Packet length, main header (PLM)\n case 0xff58: // Packet length, tile-part header (PLT)\n case 0xff64: // Comment (COM)\n length = readUint16(data, position);\n // skipping content\n break;\n default:\n throw new Error(\"Unknown codestream code: \" + code.toString(16));\n }\n position += length;\n }\n } catch (e) {\n if (doNotRecover || this.failOnCorruptedImage) {\n throw new JpxError(e.message);\n } else {\n warn(`JPX: Trying to recover from: \"${e.message}\".`);\n }\n }\n this.tiles = transformComponents(context);\n this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n this.componentsCount = context.SIZ.Csiz;\n }\n}\n\nfunction calculateComponentDimensions(component, siz) {\n // Section B.2 Component mapping\n component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n component.width = component.x1 - component.x0;\n component.height = component.y1 - component.y0;\n}\nfunction calculateTileGrids(context, components) {\n const siz = context.SIZ;\n // Section B.3 Division into tile and tile-components\n const tiles = [];\n let tile;\n const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n for (let q = 0; q < numYtiles; q++) {\n for (let p = 0; p < numXtiles; p++) {\n tile = {};\n tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n tile.width = tile.tx1 - tile.tx0;\n tile.height = tile.ty1 - tile.ty0;\n tile.components = [];\n tiles.push(tile);\n }\n }\n context.tiles = tiles;\n\n const componentsCount = siz.Csiz;\n for (let i = 0, ii = componentsCount; i < ii; i++) {\n const component = components[i];\n for (let j = 0, jj = tiles.length; j < jj; j++) {\n const tileComponent = {};\n tile = tiles[j];\n tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n tile.components[i] = tileComponent;\n }\n }\n}\nfunction getBlocksDimensions(context, component, r) {\n const codOrCoc = component.codingStyleParameters;\n const result = {};\n if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n result.PPx = 15;\n result.PPy = 15;\n } else {\n result.PPx = codOrCoc.precinctsSizes[r].PPx;\n result.PPy = codOrCoc.precinctsSizes[r].PPy;\n }\n // calculate codeblock size as described in section B.7\n result.xcb_ =\n r > 0\n ? Math.min(codOrCoc.xcb, result.PPx - 1)\n : Math.min(codOrCoc.xcb, result.PPx);\n result.ycb_ =\n r > 0\n ? Math.min(codOrCoc.ycb, result.PPy - 1)\n : Math.min(codOrCoc.ycb, result.PPy);\n return result;\n}\nfunction buildPrecincts(context, resolution, dimensions) {\n // Section B.6 Division resolution to precincts\n const precinctWidth = 1 << dimensions.PPx;\n const precinctHeight = 1 << dimensions.PPy;\n // Jasper introduces codeblock groups for mapping each subband codeblocks\n // to precincts. Precinct partition divides a resolution according to width\n // and height parameters. The subband that belongs to the resolution level\n // has a different size than the level, unless it is the zero resolution.\n\n // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n // The precinct partitioning for a particular subband is derived from a\n // partitioning of its parent LL band (i.e., the LL band at the next higher\n // resolution level)... The LL band associated with each resolution level is\n // divided into precincts... Each of the resulting precinct regions is then\n // mapped into its child subbands (if any) at the next lower resolution\n // level. This is accomplished by using the coordinate transformation\n // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n // coordinates of a point in the LL band and child subband, respectively.\n const isZeroRes = resolution.resLevel === 0;\n const precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n const precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n const numprecinctswide =\n resolution.trx1 > resolution.trx0\n ? Math.ceil(resolution.trx1 / precinctWidth) -\n Math.floor(resolution.trx0 / precinctWidth)\n : 0;\n const numprecinctshigh =\n resolution.try1 > resolution.try0\n ? Math.ceil(resolution.try1 / precinctHeight) -\n Math.floor(resolution.try0 / precinctHeight)\n : 0;\n const numprecincts = numprecinctswide * numprecinctshigh;\n\n resolution.precinctParameters = {\n precinctWidth,\n precinctHeight,\n numprecinctswide,\n numprecinctshigh,\n numprecincts,\n precinctWidthInSubband,\n precinctHeightInSubband,\n };\n}\nfunction buildCodeblocks(context, subband, dimensions) {\n // Section B.7 Division sub-band into code-blocks\n const xcb_ = dimensions.xcb_;\n const ycb_ = dimensions.ycb_;\n const codeblockWidth = 1 << xcb_;\n const codeblockHeight = 1 << ycb_;\n const cbx0 = subband.tbx0 >> xcb_;\n const cby0 = subband.tby0 >> ycb_;\n const cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n const cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n const precinctParameters = subband.resolution.precinctParameters;\n const codeblocks = [];\n const precincts = [];\n let i, j, codeblock, precinctNumber;\n for (j = cby0; j < cby1; j++) {\n for (i = cbx0; i < cbx1; i++) {\n codeblock = {\n cbx: i,\n cby: j,\n tbx0: codeblockWidth * i,\n tby0: codeblockHeight * j,\n tbx1: codeblockWidth * (i + 1),\n tby1: codeblockHeight * (j + 1),\n };\n\n codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n // Calculate precinct number for this codeblock, codeblock position\n // should be relative to its subband, use actual dimension and position\n // See comment about codeblock group width and height\n const pi = Math.floor(\n (codeblock.tbx0_ - subband.tbx0) /\n precinctParameters.precinctWidthInSubband\n );\n const pj = Math.floor(\n (codeblock.tby0_ - subband.tby0) /\n precinctParameters.precinctHeightInSubband\n );\n precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n\n codeblock.precinctNumber = precinctNumber;\n codeblock.subbandType = subband.type;\n codeblock.Lblock = 3;\n\n if (\n codeblock.tbx1_ <= codeblock.tbx0_ ||\n codeblock.tby1_ <= codeblock.tby0_\n ) {\n continue;\n }\n codeblocks.push(codeblock);\n // building precinct for the sub-band\n let precinct = precincts[precinctNumber];\n if (precinct !== undefined) {\n if (i < precinct.cbxMin) {\n precinct.cbxMin = i;\n } else if (i > precinct.cbxMax) {\n precinct.cbxMax = i;\n }\n if (j < precinct.cbyMin) {\n precinct.cbxMin = j;\n } else if (j > precinct.cbyMax) {\n precinct.cbyMax = j;\n }\n } else {\n precincts[precinctNumber] = precinct = {\n cbxMin: i,\n cbyMin: j,\n cbxMax: i,\n cbyMax: j,\n };\n }\n codeblock.precinct = precinct;\n }\n }\n subband.codeblockParameters = {\n codeblockWidth: xcb_,\n codeblockHeight: ycb_,\n numcodeblockwide: cbx1 - cbx0 + 1,\n numcodeblockhigh: cby1 - cby0 + 1,\n };\n subband.codeblocks = codeblocks;\n subband.precincts = precincts;\n}\nfunction createPacket(resolution, precinctNumber, layerNumber) {\n const precinctCodeblocks = [];\n // Section B.10.8 Order of info in packet\n const subbands = resolution.subbands;\n // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n for (let i = 0, ii = subbands.length; i < ii; i++) {\n const subband = subbands[i];\n const codeblocks = subband.codeblocks;\n for (let j = 0, jj = codeblocks.length; j < jj; j++) {\n const codeblock = codeblocks[j];\n if (codeblock.precinctNumber !== precinctNumber) {\n continue;\n }\n precinctCodeblocks.push(codeblock);\n }\n }\n return {\n layerNumber,\n codeblocks: precinctCodeblocks,\n };\n}\nfunction LayerResolutionComponentPositionIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let maxDecompositionLevelsCount = 0;\n for (let q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount\n );\n }\n\n let l = 0,\n r = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.1 Layer-resolution-component-position\n for (; l < layersCount; l++) {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; i < componentsCount; i++) {\n const component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts; ) {\n const packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n r = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ResolutionLayerComponentPositionIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let maxDecompositionLevelsCount = 0;\n for (let q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount\n );\n }\n\n let r = 0,\n l = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.2 Resolution-layer-component-position\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; l < layersCount; l++) {\n for (; i < componentsCount; i++) {\n const component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts; ) {\n const packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n l = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ResolutionPositionComponentLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let l, r, c, p;\n let maxDecompositionLevelsCount = 0;\n for (c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n component.codingStyleParameters.decompositionLevelsCount\n );\n }\n const maxNumPrecinctsInLevel = new Int32Array(\n maxDecompositionLevelsCount + 1\n );\n for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n let maxNumPrecincts = 0;\n for (c = 0; c < componentsCount; ++c) {\n const resolutions = tile.components[c].resolutions;\n if (r < resolutions.length) {\n maxNumPrecincts = Math.max(\n maxNumPrecincts,\n resolutions[r].precinctParameters.numprecincts\n );\n }\n }\n maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n }\n l = 0;\n r = 0;\n c = 0;\n p = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.3 Resolution-position-component-layer\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; p < maxNumPrecinctsInLevel[r]; p++) {\n for (; c < componentsCount; c++) {\n const component = tile.components[c];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n if (p >= numprecincts) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, p, l);\n l++;\n return packet;\n }\n l = 0;\n }\n c = 0;\n }\n p = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction PositionComponentResolutionLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n const precinctsSizes = getPrecinctSizesInImageScale(tile);\n const precinctsIterationSizes = precinctsSizes;\n let l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.4 Position-component-resolution-layer\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; r <= decompositionLevelsCount; r++) {\n const resolution = component.resolutions[r];\n const sizeInImageScale =\n precinctsSizes.components[c].resolutions[r];\n const k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution\n );\n if (k === null) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n c = 0;\n }\n px = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ComponentPositionResolutionLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n const precinctsSizes = getPrecinctSizesInImageScale(tile);\n let l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.5 Component-position-resolution-layer\n for (; c < componentsCount; ++c) {\n const component = tile.components[c];\n const precinctsIterationSizes = precinctsSizes.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; r <= decompositionLevelsCount; r++) {\n const resolution = component.resolutions[r];\n const sizeInImageScale = precinctsIterationSizes.resolutions[r];\n const k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution\n );\n if (k === null) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n px = 0;\n }\n py = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction getPrecinctIndexIfExist(\n pxIndex,\n pyIndex,\n sizeInImageScale,\n precinctIterationSizes,\n resolution\n) {\n const posX = pxIndex * precinctIterationSizes.minWidth;\n const posY = pyIndex * precinctIterationSizes.minHeight;\n if (\n posX % sizeInImageScale.width !== 0 ||\n posY % sizeInImageScale.height !== 0\n ) {\n return null;\n }\n const startPrecinctRowIndex =\n (posY / sizeInImageScale.width) *\n resolution.precinctParameters.numprecinctswide;\n return posX / sizeInImageScale.height + startPrecinctRowIndex;\n}\nfunction getPrecinctSizesInImageScale(tile) {\n const componentsCount = tile.components.length;\n let minWidth = Number.MAX_VALUE;\n let minHeight = Number.MAX_VALUE;\n let maxNumWide = 0;\n let maxNumHigh = 0;\n const sizePerComponent = new Array(componentsCount);\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n const sizePerResolution = new Array(decompositionLevelsCount + 1);\n let minWidthCurrentComponent = Number.MAX_VALUE;\n let minHeightCurrentComponent = Number.MAX_VALUE;\n let maxNumWideCurrentComponent = 0;\n let maxNumHighCurrentComponent = 0;\n let scale = 1;\n for (let r = decompositionLevelsCount; r >= 0; --r) {\n const resolution = component.resolutions[r];\n const widthCurrentResolution =\n scale * resolution.precinctParameters.precinctWidth;\n const heightCurrentResolution =\n scale * resolution.precinctParameters.precinctHeight;\n minWidthCurrentComponent = Math.min(\n minWidthCurrentComponent,\n widthCurrentResolution\n );\n minHeightCurrentComponent = Math.min(\n minHeightCurrentComponent,\n heightCurrentResolution\n );\n maxNumWideCurrentComponent = Math.max(\n maxNumWideCurrentComponent,\n resolution.precinctParameters.numprecinctswide\n );\n maxNumHighCurrentComponent = Math.max(\n maxNumHighCurrentComponent,\n resolution.precinctParameters.numprecinctshigh\n );\n sizePerResolution[r] = {\n width: widthCurrentResolution,\n height: heightCurrentResolution,\n };\n scale <<= 1;\n }\n minWidth = Math.min(minWidth, minWidthCurrentComponent);\n minHeight = Math.min(minHeight, minHeightCurrentComponent);\n maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n sizePerComponent[c] = {\n resolutions: sizePerResolution,\n minWidth: minWidthCurrentComponent,\n minHeight: minHeightCurrentComponent,\n maxNumWide: maxNumWideCurrentComponent,\n maxNumHigh: maxNumHighCurrentComponent,\n };\n }\n return {\n components: sizePerComponent,\n minWidth,\n minHeight,\n maxNumWide,\n maxNumHigh,\n };\n}\nfunction buildPackets(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const componentsCount = siz.Csiz;\n // Creating resolutions and sub-bands for each component\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n // Section B.5 Resolution levels and sub-bands\n const resolutions = [];\n const subbands = [];\n for (let r = 0; r <= decompositionLevelsCount; r++) {\n const blocksDimensions = getBlocksDimensions(context, component, r);\n const resolution = {};\n const scale = 1 << (decompositionLevelsCount - r);\n resolution.trx0 = Math.ceil(component.tcx0 / scale);\n resolution.try0 = Math.ceil(component.tcy0 / scale);\n resolution.trx1 = Math.ceil(component.tcx1 / scale);\n resolution.try1 = Math.ceil(component.tcy1 / scale);\n resolution.resLevel = r;\n buildPrecincts(context, resolution, blocksDimensions);\n resolutions.push(resolution);\n\n let subband;\n if (r === 0) {\n // one sub-band (LL) with last decomposition\n subband = {};\n subband.type = \"LL\";\n subband.tbx0 = Math.ceil(component.tcx0 / scale);\n subband.tby0 = Math.ceil(component.tcy0 / scale);\n subband.tbx1 = Math.ceil(component.tcx1 / scale);\n subband.tby1 = Math.ceil(component.tcy1 / scale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolution.subbands = [subband];\n } else {\n const bscale = 1 << (decompositionLevelsCount - r + 1);\n const resolutionSubbands = [];\n // three sub-bands (HL, LH and HH) with rest of decompositions\n subband = {};\n subband.type = \"HL\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = \"LH\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = \"HH\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n resolution.subbands = resolutionSubbands;\n }\n }\n component.resolutions = resolutions;\n component.subbands = subbands;\n }\n // Generate the packets sequence\n const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n switch (progressionOrder) {\n case 0:\n tile.packetsIterator = new LayerResolutionComponentPositionIterator(\n context\n );\n break;\n case 1:\n tile.packetsIterator = new ResolutionLayerComponentPositionIterator(\n context\n );\n break;\n case 2:\n tile.packetsIterator = new ResolutionPositionComponentLayerIterator(\n context\n );\n break;\n case 3:\n tile.packetsIterator = new PositionComponentResolutionLayerIterator(\n context\n );\n break;\n case 4:\n tile.packetsIterator = new ComponentPositionResolutionLayerIterator(\n context\n );\n break;\n default:\n throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n }\n}\nfunction parseTilePackets(context, data, offset, dataLength) {\n let position = 0;\n let buffer,\n bufferSize = 0,\n skipNextBit = false;\n function readBits(count) {\n while (bufferSize < count) {\n const b = data[offset + position];\n position++;\n if (skipNextBit) {\n buffer = (buffer << 7) | b;\n bufferSize += 7;\n skipNextBit = false;\n } else {\n buffer = (buffer << 8) | b;\n bufferSize += 8;\n }\n if (b === 0xff) {\n skipNextBit = true;\n }\n }\n bufferSize -= count;\n return (buffer >>> bufferSize) & ((1 << count) - 1);\n }\n function skipMarkerIfEqual(value) {\n if (\n data[offset + position - 1] === 0xff &&\n data[offset + position] === value\n ) {\n skipBytes(1);\n return true;\n } else if (\n data[offset + position] === 0xff &&\n data[offset + position + 1] === value\n ) {\n skipBytes(2);\n return true;\n }\n return false;\n }\n function skipBytes(count) {\n position += count;\n }\n function alignToByte() {\n bufferSize = 0;\n if (skipNextBit) {\n position++;\n skipNextBit = false;\n }\n }\n function readCodingpasses() {\n if (readBits(1) === 0) {\n return 1;\n }\n if (readBits(1) === 0) {\n return 2;\n }\n let value = readBits(2);\n if (value < 3) {\n return value + 3;\n }\n value = readBits(5);\n if (value < 31) {\n return value + 6;\n }\n value = readBits(7);\n return value + 37;\n }\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const sopMarkerUsed = context.COD.sopMarkerUsed;\n const ephMarkerUsed = context.COD.ephMarkerUsed;\n const packetsIterator = tile.packetsIterator;\n while (position < dataLength) {\n alignToByte();\n if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n // Skip also marker segment length and packet sequence ID\n skipBytes(4);\n }\n const packet = packetsIterator.nextPacket();\n if (!readBits(1)) {\n continue;\n }\n const layerNumber = packet.layerNumber,\n queue = [];\n let codeblock;\n for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n codeblock = packet.codeblocks[i];\n let precinct = codeblock.precinct;\n const codeblockColumn = codeblock.cbx - precinct.cbxMin;\n const codeblockRow = codeblock.cby - precinct.cbyMin;\n let codeblockIncluded = false;\n let firstTimeInclusion = false;\n let valueReady, zeroBitPlanesTree;\n if (codeblock.included !== undefined) {\n codeblockIncluded = !!readBits(1);\n } else {\n // reading inclusion tree\n precinct = codeblock.precinct;\n let inclusionTree;\n if (precinct.inclusionTree !== undefined) {\n inclusionTree = precinct.inclusionTree;\n } else {\n // building inclusion and zero bit-planes trees\n const width = precinct.cbxMax - precinct.cbxMin + 1;\n const height = precinct.cbyMax - precinct.cbyMin + 1;\n inclusionTree = new InclusionTree(width, height, layerNumber);\n zeroBitPlanesTree = new TagTree(width, height);\n precinct.inclusionTree = inclusionTree;\n precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n for (let l = 0; l < layerNumber; l++) {\n if (readBits(1) !== 0) {\n throw new JpxError(\"Invalid tag tree\");\n }\n }\n }\n\n if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n while (true) {\n if (readBits(1)) {\n valueReady = !inclusionTree.nextLevel();\n if (valueReady) {\n codeblock.included = true;\n codeblockIncluded = firstTimeInclusion = true;\n break;\n }\n } else {\n inclusionTree.incrementValue(layerNumber);\n break;\n }\n }\n }\n }\n if (!codeblockIncluded) {\n continue;\n }\n if (firstTimeInclusion) {\n zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n while (true) {\n if (readBits(1)) {\n valueReady = !zeroBitPlanesTree.nextLevel();\n if (valueReady) {\n break;\n }\n } else {\n zeroBitPlanesTree.incrementValue();\n }\n }\n codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n }\n const codingpasses = readCodingpasses();\n while (readBits(1)) {\n codeblock.Lblock++;\n }\n const codingpassesLog2 = log2(codingpasses);\n // rounding down log2\n const bits =\n (codingpasses < 1 << codingpassesLog2\n ? codingpassesLog2 - 1\n : codingpassesLog2) + codeblock.Lblock;\n const codedDataLength = readBits(bits);\n queue.push({\n codeblock,\n codingpasses,\n dataLength: codedDataLength,\n });\n }\n alignToByte();\n if (ephMarkerUsed) {\n skipMarkerIfEqual(0x92);\n }\n while (queue.length > 0) {\n const packetItem = queue.shift();\n codeblock = packetItem.codeblock;\n if (codeblock.data === undefined) {\n codeblock.data = [];\n }\n codeblock.data.push({\n data,\n start: offset + position,\n end: offset + position + packetItem.dataLength,\n codingpasses: packetItem.codingpasses,\n });\n position += packetItem.dataLength;\n }\n }\n return position;\n}\nfunction copyCoefficients(\n coefficients,\n levelWidth,\n levelHeight,\n subband,\n delta,\n mb,\n reversible,\n segmentationSymbolUsed,\n resetContextProbabilities\n) {\n const x0 = subband.tbx0;\n const y0 = subband.tby0;\n const width = subband.tbx1 - subband.tbx0;\n const codeblocks = subband.codeblocks;\n const right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n const bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n for (let i = 0, ii = codeblocks.length; i < ii; ++i) {\n const codeblock = codeblocks[i];\n const blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n const blockHeight = codeblock.tby1_ - codeblock.tby0_;\n if (blockWidth === 0 || blockHeight === 0) {\n continue;\n }\n if (codeblock.data === undefined) {\n continue;\n }\n\n const bitModel = new BitModel(\n blockWidth,\n blockHeight,\n codeblock.subbandType,\n codeblock.zeroBitPlanes,\n mb\n );\n let currentCodingpassType = 2; // first bit plane starts from cleanup\n\n // collect data\n const data = codeblock.data;\n let totalLength = 0,\n codingpasses = 0;\n let j, jj, dataItem;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n totalLength += dataItem.end - dataItem.start;\n codingpasses += dataItem.codingpasses;\n }\n const encodedData = new Uint8Array(totalLength);\n let position = 0;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n const chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n encodedData.set(chunk, position);\n position += chunk.length;\n }\n // decoding the item\n const decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n bitModel.setDecoder(decoder);\n\n for (j = 0; j < codingpasses; j++) {\n switch (currentCodingpassType) {\n case 0:\n bitModel.runSignificancePropagationPass();\n break;\n case 1:\n bitModel.runMagnitudeRefinementPass();\n break;\n case 2:\n bitModel.runCleanupPass();\n if (segmentationSymbolUsed) {\n bitModel.checkSegmentationSymbol();\n }\n break;\n }\n\n if (resetContextProbabilities) {\n bitModel.reset();\n }\n\n currentCodingpassType = (currentCodingpassType + 1) % 3;\n }\n\n let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n const sign = bitModel.coefficentsSign;\n const magnitude = bitModel.coefficentsMagnitude;\n const bitsDecoded = bitModel.bitsDecoded;\n const magnitudeCorrection = reversible ? 0 : 0.5;\n let k, n, nb;\n position = 0;\n // Do the interleaving of Section F.3.3 here, so we do not need\n // to copy later. LL level is not interleaved, just copied.\n const interleave = subband.type !== \"LL\";\n for (j = 0; j < blockHeight; j++) {\n const row = (offset / width) | 0; // row in the non-interleaved subband\n const levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n for (k = 0; k < blockWidth; k++) {\n n = magnitude[position];\n if (n !== 0) {\n n = (n + magnitudeCorrection) * delta;\n if (sign[position] !== 0) {\n n = -n;\n }\n nb = bitsDecoded[position];\n const pos = interleave ? levelOffset + (offset << 1) : offset;\n if (reversible && nb >= mb) {\n coefficients[pos] = n;\n } else {\n coefficients[pos] = n * (1 << (mb - nb));\n }\n }\n offset++;\n position++;\n }\n offset += width - blockWidth;\n }\n }\n}\nfunction transformTile(context, tile, c) {\n const component = tile.components[c];\n const codingStyleParameters = component.codingStyleParameters;\n const quantizationParameters = component.quantizationParameters;\n const decompositionLevelsCount =\n codingStyleParameters.decompositionLevelsCount;\n const spqcds = quantizationParameters.SPqcds;\n const scalarExpounded = quantizationParameters.scalarExpounded;\n const guardBits = quantizationParameters.guardBits;\n const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n const resetContextProbabilities =\n codingStyleParameters.resetContextProbabilities;\n const precision = context.components[c].precision;\n\n const reversible = codingStyleParameters.reversibleTransformation;\n const transform = reversible\n ? new ReversibleTransform()\n : new IrreversibleTransform();\n\n const subbandCoefficients = [];\n let b = 0;\n for (let i = 0; i <= decompositionLevelsCount; i++) {\n const resolution = component.resolutions[i];\n\n const width = resolution.trx1 - resolution.trx0;\n const height = resolution.try1 - resolution.try0;\n // Allocate space for the whole sublevel.\n const coefficients = new Float32Array(width * height);\n\n for (let j = 0, jj = resolution.subbands.length; j < jj; j++) {\n let mu, epsilon;\n if (!scalarExpounded) {\n // formula E-5\n mu = spqcds[0].mu;\n epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n } else {\n mu = spqcds[b].mu;\n epsilon = spqcds[b].epsilon;\n b++;\n }\n\n const subband = resolution.subbands[j];\n const gainLog2 = SubbandsGainLog2[subband.type];\n\n // calculate quantization coefficient (Section E.1.1.1)\n const delta = reversible\n ? 1\n : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n const mb = guardBits + epsilon - 1;\n\n // In the first resolution level, copyCoefficients will fill the\n // whole array with coefficients. In the succeeding passes,\n // copyCoefficients will consecutively fill in the values that belong\n // to the interleaved positions of the HL, LH, and HH coefficients.\n // The LL coefficients will then be interleaved in Transform.iterate().\n copyCoefficients(\n coefficients,\n width,\n height,\n subband,\n delta,\n mb,\n reversible,\n segmentationSymbolUsed,\n resetContextProbabilities\n );\n }\n subbandCoefficients.push({\n width,\n height,\n items: coefficients,\n });\n }\n\n const result = transform.calculate(\n subbandCoefficients,\n component.tcx0,\n component.tcy0\n );\n return {\n left: component.tcx0,\n top: component.tcy0,\n width: result.width,\n height: result.height,\n items: result.items,\n };\n}\nfunction transformComponents(context) {\n const siz = context.SIZ;\n const components = context.components;\n const componentsCount = siz.Csiz;\n const resultImages = [];\n for (let i = 0, ii = context.tiles.length; i < ii; i++) {\n const tile = context.tiles[i];\n const transformedTiles = [];\n for (let c = 0; c < componentsCount; c++) {\n transformedTiles[c] = transformTile(context, tile, c);\n }\n const tile0 = transformedTiles[0];\n const out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n const result = {\n left: tile0.left,\n top: tile0.top,\n width: tile0.width,\n height: tile0.height,\n items: out,\n };\n\n // Section G.2.2 Inverse multi component transform\n let shift, offset;\n let pos = 0,\n j,\n jj,\n y0,\n y1,\n y2;\n if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n const fourComponents = componentsCount === 4;\n const y0items = transformedTiles[0].items;\n const y1items = transformedTiles[1].items;\n const y2items = transformedTiles[2].items;\n const y3items = fourComponents ? transformedTiles[3].items : null;\n\n // HACK: The multiple component transform formulas below assume that\n // all components have the same precision. With this in mind, we\n // compute shift and offset only once.\n shift = components[0].precision - 8;\n offset = (128 << shift) + 0.5;\n\n const component0 = tile.components[0];\n const alpha01 = componentsCount - 3;\n jj = y0items.length;\n if (!component0.codingStyleParameters.reversibleTransformation) {\n // inverse irreversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n out[pos++] = (y0 + 1.402 * y2) >> shift;\n out[pos++] = (y0 - 0.34413 * y1 - 0.71414 * y2) >> shift;\n out[pos++] = (y0 + 1.772 * y1) >> shift;\n }\n } else {\n // inverse reversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n const g = y0 - ((y2 + y1) >> 2);\n\n out[pos++] = (g + y2) >> shift;\n out[pos++] = g >> shift;\n out[pos++] = (g + y1) >> shift;\n }\n }\n if (fourComponents) {\n for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n out[pos] = (y3items[j] + offset) >> shift;\n }\n }\n } else {\n // no multi-component transform\n for (let c = 0; c < componentsCount; c++) {\n const items = transformedTiles[c].items;\n shift = components[c].precision - 8;\n offset = (128 << shift) + 0.5;\n for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n out[pos] = (items[j] + offset) >> shift;\n pos += componentsCount;\n }\n }\n }\n resultImages.push(result);\n }\n return resultImages;\n}\nfunction initializeTile(context, tileIndex) {\n const siz = context.SIZ;\n const componentsCount = siz.Csiz;\n const tile = context.tiles[tileIndex];\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const qcdOrQcc =\n context.currentTile.QCC[c] !== undefined\n ? context.currentTile.QCC[c]\n : context.currentTile.QCD;\n component.quantizationParameters = qcdOrQcc;\n const codOrCoc =\n context.currentTile.COC[c] !== undefined\n ? context.currentTile.COC[c]\n : context.currentTile.COD;\n component.codingStyleParameters = codOrCoc;\n }\n tile.codingStyleDefaultParameters = context.currentTile.COD;\n}\n\n// Section B.10.2 Tag trees\nclass TagTree {\n constructor(width, height) {\n const levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (let i = 0; i < levelsLength; i++) {\n const level = {\n width,\n height,\n items: [],\n };\n this.levels.push(level);\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n reset(i, j) {\n let currentLevel = 0,\n value = 0,\n level;\n while (currentLevel < this.levels.length) {\n level = this.levels[currentLevel];\n const index = i + j * level.width;\n if (level.items[index] !== undefined) {\n value = level.items[index];\n break;\n }\n level.index = index;\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n currentLevel--;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n this.currentLevel = currentLevel;\n delete this.value;\n }\n\n incrementValue() {\n const level = this.levels[this.currentLevel];\n level.items[level.index]++;\n }\n\n nextLevel() {\n let currentLevel = this.currentLevel;\n let level = this.levels[currentLevel];\n const value = level.items[level.index];\n currentLevel--;\n if (currentLevel < 0) {\n this.value = value;\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n}\n\nclass InclusionTree {\n constructor(width, height, defaultValue) {\n const levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (let i = 0; i < levelsLength; i++) {\n const items = new Uint8Array(width * height);\n for (let j = 0, jj = items.length; j < jj; j++) {\n items[j] = defaultValue;\n }\n\n const level = {\n width,\n height,\n items,\n };\n this.levels.push(level);\n\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n reset(i, j, stopValue) {\n let currentLevel = 0;\n while (currentLevel < this.levels.length) {\n const level = this.levels[currentLevel];\n const index = i + j * level.width;\n level.index = index;\n const value = level.items[index];\n\n if (value === 0xff) {\n break;\n }\n\n if (value > stopValue) {\n this.currentLevel = currentLevel;\n // already know about this one, propagating the value to top levels\n this.propagateValues();\n return false;\n }\n\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n this.currentLevel = currentLevel - 1;\n return true;\n }\n\n incrementValue(stopValue) {\n const level = this.levels[this.currentLevel];\n level.items[level.index] = stopValue + 1;\n this.propagateValues();\n }\n\n propagateValues() {\n let levelIndex = this.currentLevel;\n let level = this.levels[levelIndex];\n const currentValue = level.items[level.index];\n while (--levelIndex >= 0) {\n level = this.levels[levelIndex];\n level.items[level.index] = currentValue;\n }\n }\n\n nextLevel() {\n let currentLevel = this.currentLevel;\n let level = this.levels[currentLevel];\n const value = level.items[level.index];\n level.items[level.index] = 0xff;\n currentLevel--;\n if (currentLevel < 0) {\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n}\n\n// Section D. Coefficient bit modeling\nconst BitModel = (function BitModelClosure() {\n const UNIFORM_CONTEXT = 17;\n const RUNLENGTH_CONTEXT = 18;\n // Table D-1\n // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n const LLAndLHContextsLabel = new Uint8Array([\n 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,\n 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,\n 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,\n ]);\n const HLContextLabel = new Uint8Array([\n 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,\n 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,\n 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,\n ]);\n const HHContextLabel = new Uint8Array([\n 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,\n 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,\n 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,\n ]);\n\n // eslint-disable-next-line no-shadow\n class BitModel {\n constructor(width, height, subband, zeroBitPlanes, mb) {\n this.width = width;\n this.height = height;\n\n let contextLabelTable;\n if (subband === \"HH\") {\n contextLabelTable = HHContextLabel;\n } else if (subband === \"HL\") {\n contextLabelTable = HLContextLabel;\n } else {\n contextLabelTable = LLAndLHContextsLabel;\n }\n this.contextLabelTable = contextLabelTable;\n\n const coefficientCount = width * height;\n\n // coefficients outside the encoding region treated as insignificant\n // add border state cells for significanceState\n this.neighborsSignificance = new Uint8Array(coefficientCount);\n this.coefficentsSign = new Uint8Array(coefficientCount);\n let coefficentsMagnitude;\n if (mb > 14) {\n coefficentsMagnitude = new Uint32Array(coefficientCount);\n } else if (mb > 6) {\n coefficentsMagnitude = new Uint16Array(coefficientCount);\n } else {\n coefficentsMagnitude = new Uint8Array(coefficientCount);\n }\n this.coefficentsMagnitude = coefficentsMagnitude;\n this.processingFlags = new Uint8Array(coefficientCount);\n\n const bitsDecoded = new Uint8Array(coefficientCount);\n if (zeroBitPlanes !== 0) {\n for (let i = 0; i < coefficientCount; i++) {\n bitsDecoded[i] = zeroBitPlanes;\n }\n }\n this.bitsDecoded = bitsDecoded;\n\n this.reset();\n }\n\n setDecoder(decoder) {\n this.decoder = decoder;\n }\n\n reset() {\n // We have 17 contexts that are accessed via context labels,\n // plus the uniform and runlength context.\n this.contexts = new Int8Array(19);\n\n // Contexts are packed into 1 byte:\n // highest 7 bits carry the index, lowest bit carries mps\n this.contexts[0] = (4 << 1) | 0;\n this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n }\n\n setNeighborsSignificance(row, column, index) {\n const neighborsSignificance = this.neighborsSignificance;\n const width = this.width,\n height = this.height;\n const left = column > 0;\n const right = column + 1 < width;\n let i;\n\n if (row > 0) {\n i = index - width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (row + 1 < height) {\n i = index + width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (left) {\n neighborsSignificance[index - 1] += 0x01;\n }\n if (right) {\n neighborsSignificance[index + 1] += 0x01;\n }\n neighborsSignificance[index] |= 0x80;\n }\n\n runSignificancePropagationPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n const neighborsSignificance = this.neighborsSignificance;\n const processingFlags = this.processingFlags;\n const contexts = this.contexts;\n const labels = this.contextLabelTable;\n const bitsDecoded = this.bitsDecoded;\n const processedInverseMask = ~1;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n\n for (let i0 = 0; i0 < height; i0 += 4) {\n for (let j = 0; j < width; j++) {\n let index = i0 * width + j;\n for (let i1 = 0; i1 < 4; i1++, index += width) {\n const i = i0 + i1;\n if (i >= height) {\n break;\n }\n // clear processed flag first\n processingFlags[index] &= processedInverseMask;\n\n if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {\n continue;\n }\n\n const contextLabel = labels[neighborsSignificance[index]];\n const decision = decoder.readBit(contexts, contextLabel);\n if (decision) {\n const sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n }\n\n decodeSignBit(row, column, index) {\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n let contribution, sign0, sign1, significance1;\n let contextLabel, decoded;\n\n // calculate horizontal contribution\n significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n sign1 = coefficentsSign[index + 1];\n if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign1 - sign0;\n } else {\n contribution = 1 - sign1 - sign1;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign0 - sign0;\n } else {\n contribution = 0;\n }\n const horizontalContribution = 3 * contribution;\n\n // calculate vertical contribution and combine with the horizontal\n significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n sign1 = coefficentsSign[index + width];\n if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign1 - sign0 + horizontalContribution;\n } else {\n contribution = 1 - sign1 - sign1 + horizontalContribution;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign0 - sign0 + horizontalContribution;\n } else {\n contribution = horizontalContribution;\n }\n\n if (contribution >= 0) {\n contextLabel = 9 + contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel);\n } else {\n contextLabel = 9 - contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n }\n return decoded;\n }\n\n runMagnitudeRefinementPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const neighborsSignificance = this.neighborsSignificance;\n const contexts = this.contexts;\n const bitsDecoded = this.bitsDecoded;\n const processingFlags = this.processingFlags;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n const length = width * height;\n const width4 = width * 4;\n\n for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n indexNext = Math.min(length, index0 + width4);\n for (let j = 0; j < width; j++) {\n for (let index = index0 + j; index < indexNext; index += width) {\n // significant but not those that have just become\n if (\n !coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0\n ) {\n continue;\n }\n\n let contextLabel = 16;\n if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n processingFlags[index] ^= firstMagnitudeBitMask;\n // first refinement\n const significance = neighborsSignificance[index] & 127;\n contextLabel = significance === 0 ? 15 : 14;\n }\n\n const bit = decoder.readBit(contexts, contextLabel);\n coefficentsMagnitude[index] =\n (coefficentsMagnitude[index] << 1) | bit;\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n }\n\n runCleanupPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const neighborsSignificance = this.neighborsSignificance;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n const contexts = this.contexts;\n const labels = this.contextLabelTable;\n const bitsDecoded = this.bitsDecoded;\n const processingFlags = this.processingFlags;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n const oneRowDown = width;\n const twoRowsDown = width * 2;\n const threeRowsDown = width * 3;\n let iNext;\n for (let i0 = 0; i0 < height; i0 = iNext) {\n iNext = Math.min(i0 + 4, height);\n const indexBase = i0 * width;\n const checkAllEmpty = i0 + 3 < height;\n for (let j = 0; j < width; j++) {\n const index0 = indexBase + j;\n // using the property: labels[neighborsSignificance[index]] === 0\n // when neighborsSignificance[index] === 0\n const allEmpty =\n checkAllEmpty &&\n processingFlags[index0] === 0 &&\n processingFlags[index0 + oneRowDown] === 0 &&\n processingFlags[index0 + twoRowsDown] === 0 &&\n processingFlags[index0 + threeRowsDown] === 0 &&\n neighborsSignificance[index0] === 0 &&\n neighborsSignificance[index0 + oneRowDown] === 0 &&\n neighborsSignificance[index0 + twoRowsDown] === 0 &&\n neighborsSignificance[index0 + threeRowsDown] === 0;\n let i1 = 0,\n index = index0;\n let i = i0,\n sign;\n if (allEmpty) {\n const hasSignificantCoefficent = decoder.readBit(\n contexts,\n RUNLENGTH_CONTEXT\n );\n if (!hasSignificantCoefficent) {\n bitsDecoded[index0]++;\n bitsDecoded[index0 + oneRowDown]++;\n bitsDecoded[index0 + twoRowsDown]++;\n bitsDecoded[index0 + threeRowsDown]++;\n continue; // next column\n }\n i1 =\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (i1 !== 0) {\n i = i0 + i1;\n index += i1 * width;\n }\n\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n\n index = index0;\n for (let i2 = i0; i2 <= i; i2++, index += width) {\n bitsDecoded[index]++;\n }\n\n i1++;\n }\n for (i = i0 + i1; i < iNext; i++, index += width) {\n if (\n coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0\n ) {\n continue;\n }\n\n const contextLabel = labels[neighborsSignificance[index]];\n const decision = decoder.readBit(contexts, contextLabel);\n if (decision === 1) {\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n }\n }\n }\n }\n\n checkSegmentationSymbol() {\n const decoder = this.decoder;\n const contexts = this.contexts;\n const symbol =\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (symbol !== 0xa) {\n throw new JpxError(\"Invalid segmentation symbol\");\n }\n }\n }\n\n return BitModel;\n})();\n\n// Section F, Discrete wavelet transformation\nclass Transform {\n constructor() {\n if (this.constructor === Transform) {\n unreachable(\"Cannot initialize Transform.\");\n }\n }\n\n calculate(subbands, u0, v0) {\n let ll = subbands[0];\n for (let i = 1, ii = subbands.length; i < ii; i++) {\n ll = this.iterate(ll, subbands[i], u0, v0);\n }\n return ll;\n }\n\n extend(buffer, offset, size) {\n // Section F.3.7 extending... using max extension of 4\n let i1 = offset - 1,\n j1 = offset + 1;\n let i2 = offset + size - 2,\n j2 = offset + size;\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1] = buffer[j1];\n buffer[j2] = buffer[i2];\n }\n\n filter(x, offset, length) {\n unreachable(\"Abstract method `filter` called\");\n }\n\n iterate(ll, hl_lh_hh, u0, v0) {\n const llWidth = ll.width,\n llHeight = ll.height;\n let llItems = ll.items;\n const width = hl_lh_hh.width;\n const height = hl_lh_hh.height;\n const items = hl_lh_hh.items;\n let i, j, k, l, u, v;\n\n // Interleave LL according to Section F.3.3\n for (k = 0, i = 0; i < llHeight; i++) {\n l = i * 2 * width;\n for (j = 0; j < llWidth; j++, k++, l += 2) {\n items[l] = llItems[k];\n }\n }\n // The LL band is not needed anymore.\n llItems = ll.items = null;\n\n const bufferPadding = 4;\n const rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n // Section F.3.4 HOR_SR\n if (width === 1) {\n // if width = 1, when u0 even keep items as is, when odd divide by 2\n if ((u0 & 1) !== 0) {\n for (v = 0, k = 0; v < height; v++, k += width) {\n items[k] *= 0.5;\n }\n }\n } else {\n for (v = 0, k = 0; v < height; v++, k += width) {\n rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n this.extend(rowBuffer, bufferPadding, width);\n this.filter(rowBuffer, bufferPadding, width);\n\n items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);\n }\n }\n\n // Accesses to the items array can take long, because it may not fit into\n // CPU cache and has to be fetched from main memory. Since subsequent\n // accesses to the items array are not local when reading columns, we\n // have a cache miss every time. To reduce cache misses, get up to\n // 'numBuffers' items at a time and store them into the individual\n // buffers. The colBuffers should be small enough to fit into CPU cache.\n let numBuffers = 16;\n const colBuffers = [];\n for (i = 0; i < numBuffers; i++) {\n colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n }\n let b,\n currentBuffer = 0;\n ll = bufferPadding + height;\n\n // Section F.3.5 VER_SR\n if (height === 1) {\n // if height = 1, when v0 even keep items as is, when odd divide by 2\n if ((v0 & 1) !== 0) {\n for (u = 0; u < width; u++) {\n items[u] *= 0.5;\n }\n }\n } else {\n for (u = 0; u < width; u++) {\n // if we ran out of buffers, copy several image columns at once\n if (currentBuffer === 0) {\n numBuffers = Math.min(width - u, numBuffers);\n for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n colBuffers[b][l] = items[k + b];\n }\n }\n currentBuffer = numBuffers;\n }\n\n currentBuffer--;\n const buffer = colBuffers[currentBuffer];\n this.extend(buffer, bufferPadding, height);\n this.filter(buffer, bufferPadding, height);\n\n // If this is last buffer in this group of buffers, flush all buffers.\n if (currentBuffer === 0) {\n k = u - numBuffers + 1;\n for (l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n items[k + b] = colBuffers[b][l];\n }\n }\n }\n }\n }\n\n return { width, height, items };\n }\n}\n\n// Section 3.8.2 Irreversible 9-7 filter\nclass IrreversibleTransform extends Transform {\n filter(x, offset, length) {\n const len = length >> 1;\n offset |= 0;\n let j, n, current, next;\n\n const alpha = -1.586134342059924;\n const beta = -0.052980118572961;\n const gamma = 0.882911075530934;\n const delta = 0.443506852043971;\n const K = 1.230174104914001;\n const K_ = 1 / K;\n\n // step 1 is combined with step 3\n\n // step 2\n j = offset - 3;\n for (n = len + 4; n--; j += 2) {\n x[j] *= K_;\n }\n\n // step 1 & 3\n j = offset - 2;\n current = delta * x[j - 1];\n for (n = len + 3; n--; j += 2) {\n next = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n if (n--) {\n j += 2;\n current = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n } else {\n break;\n }\n }\n\n // step 4\n j = offset - 1;\n current = gamma * x[j - 1];\n for (n = len + 2; n--; j += 2) {\n next = gamma * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = gamma * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 5\n j = offset;\n current = beta * x[j - 1];\n for (n = len + 1; n--; j += 2) {\n next = beta * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = beta * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 6\n if (len !== 0) {\n j = offset + 1;\n current = alpha * x[j - 1];\n for (n = len; n--; j += 2) {\n next = alpha * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = alpha * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n }\n }\n}\n\n// Section 3.8.1 Reversible 5-3 filter\nclass ReversibleTransform extends Transform {\n filter(x, offset, length) {\n const len = length >> 1;\n offset |= 0;\n let j, n;\n\n for (j = offset, n = len + 1; n--; j += 2) {\n x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n }\n\n for (j = offset + 1, n = len; n--; j += 2) {\n x[j] += (x[j - 1] + x[j + 1]) >> 1;\n }\n }\n}\n\nexport { JpxImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass LZWStream extends DecodeStream {\n constructor(str, maybeLength, earlyChange) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.cachedData = 0;\n this.bitsCached = 0;\n\n const maxLzwDictionarySize = 4096;\n const lzwState = {\n earlyChange,\n codeLength: 9,\n nextCode: 258,\n dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n currentSequence: new Uint8Array(maxLzwDictionarySize),\n currentSequenceLength: 0,\n };\n for (let i = 0; i < 256; ++i) {\n lzwState.dictionaryValues[i] = i;\n lzwState.dictionaryLengths[i] = 1;\n }\n this.lzwState = lzwState;\n }\n\n readBits(n) {\n let bitsCached = this.bitsCached;\n let cachedData = this.cachedData;\n while (bitsCached < n) {\n const c = this.str.getByte();\n if (c === -1) {\n this.eof = true;\n return null;\n }\n cachedData = (cachedData << 8) | c;\n bitsCached += 8;\n }\n this.bitsCached = bitsCached -= n;\n this.cachedData = cachedData;\n this.lastCode = null;\n return (cachedData >>> bitsCached) & ((1 << n) - 1);\n }\n\n readBlock() {\n const blockSize = 512,\n decodedSizeDelta = blockSize;\n let estimatedDecodedSize = blockSize * 2;\n let i, j, q;\n\n const lzwState = this.lzwState;\n if (!lzwState) {\n return; // eof was found\n }\n\n const earlyChange = lzwState.earlyChange;\n let nextCode = lzwState.nextCode;\n const dictionaryValues = lzwState.dictionaryValues;\n const dictionaryLengths = lzwState.dictionaryLengths;\n const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n let codeLength = lzwState.codeLength;\n let prevCode = lzwState.prevCode;\n const currentSequence = lzwState.currentSequence;\n let currentSequenceLength = lzwState.currentSequenceLength;\n\n let decodedLength = 0;\n let currentBufferLength = this.bufferLength;\n let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n for (i = 0; i < blockSize; i++) {\n const code = this.readBits(codeLength);\n const hasPrev = currentSequenceLength > 0;\n if (code < 256) {\n currentSequence[0] = code;\n currentSequenceLength = 1;\n } else if (code >= 258) {\n if (code < nextCode) {\n currentSequenceLength = dictionaryLengths[code];\n for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n currentSequence[j] = dictionaryValues[q];\n q = dictionaryPrevCodes[q];\n }\n } else {\n currentSequence[currentSequenceLength++] = currentSequence[0];\n }\n } else if (code === 256) {\n codeLength = 9;\n nextCode = 258;\n currentSequenceLength = 0;\n continue;\n } else {\n this.eof = true;\n delete this.lzwState;\n break;\n }\n\n if (hasPrev) {\n dictionaryPrevCodes[nextCode] = prevCode;\n dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n dictionaryValues[nextCode] = currentSequence[0];\n nextCode++;\n codeLength =\n (nextCode + earlyChange) & (nextCode + earlyChange - 1)\n ? codeLength\n : Math.min(\n Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1,\n 12\n ) | 0;\n }\n prevCode = code;\n\n decodedLength += currentSequenceLength;\n if (estimatedDecodedSize < decodedLength) {\n do {\n estimatedDecodedSize += decodedSizeDelta;\n } while (estimatedDecodedSize < decodedLength);\n buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n }\n for (j = 0; j < currentSequenceLength; j++) {\n buffer[currentBufferLength++] = currentSequence[j];\n }\n }\n lzwState.nextCode = nextCode;\n lzwState.codeLength = codeLength;\n lzwState.prevCode = prevCode;\n lzwState.currentSequenceLength = currentSequenceLength;\n\n this.bufferLength = currentBufferLength;\n }\n}\n\nexport { LZWStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nclass PredictorStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n\n if (!(params instanceof Dict)) {\n return str; // no prediction\n }\n const predictor = (this.predictor = params.get(\"Predictor\") || 1);\n\n if (predictor <= 1) {\n return str; // no prediction\n }\n if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n\n if (predictor === 2) {\n this.readBlock = this.readBlockTiff;\n } else {\n this.readBlock = this.readBlockPng;\n }\n\n this.str = str;\n this.dict = str.dict;\n\n const colors = (this.colors = params.get(\"Colors\") || 1);\n const bits = (this.bits = params.get(\"BPC\", \"BitsPerComponent\") || 8);\n const columns = (this.columns = params.get(\"Columns\") || 1);\n\n this.pixBytes = (colors * bits + 7) >> 3;\n this.rowBytes = (columns * colors * bits + 7) >> 3;\n\n return this;\n }\n\n readBlockTiff() {\n const rowBytes = this.rowBytes;\n\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n const bits = this.bits;\n const colors = this.colors;\n\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n let inbuf = 0,\n outbuf = 0;\n let inbits = 0,\n outbits = 0;\n let pos = bufferLength;\n let i;\n\n if (bits === 1 && colors === 1) {\n // Optimized version of the loop in the \"else\"-branch\n // for 1 bit-per-component and 1 color TIFF images.\n for (i = 0; i < rowBytes; ++i) {\n let c = rawBytes[i] ^ inbuf;\n c ^= c >> 1;\n c ^= c >> 2;\n c ^= c >> 4;\n inbuf = (c & 1) << 7;\n buffer[pos++] = c;\n }\n } else if (bits === 8) {\n for (i = 0; i < colors; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[pos] = buffer[pos - colors] + rawBytes[i];\n pos++;\n }\n } else if (bits === 16) {\n const bytesPerPixel = colors * 2;\n for (i = 0; i < bytesPerPixel; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; i += 2) {\n const sum =\n ((rawBytes[i] & 0xff) << 8) +\n (rawBytes[i + 1] & 0xff) +\n ((buffer[pos - bytesPerPixel] & 0xff) << 8) +\n (buffer[pos - bytesPerPixel + 1] & 0xff);\n buffer[pos++] = (sum >> 8) & 0xff;\n buffer[pos++] = sum & 0xff;\n }\n } else {\n const compArray = new Uint8Array(colors + 1);\n const bitMask = (1 << bits) - 1;\n let j = 0,\n k = bufferLength;\n const columns = this.columns;\n for (i = 0; i < columns; ++i) {\n for (let kk = 0; kk < colors; ++kk) {\n if (inbits < bits) {\n inbuf = (inbuf << 8) | (rawBytes[j++] & 0xff);\n inbits += 8;\n }\n compArray[kk] =\n (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask;\n inbits -= bits;\n outbuf = (outbuf << bits) | compArray[kk];\n outbits += bits;\n if (outbits >= 8) {\n buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\n outbits -= 8;\n }\n }\n }\n if (outbits > 0) {\n buffer[k++] =\n (outbuf << (8 - outbits)) + (inbuf & ((1 << (8 - outbits)) - 1));\n }\n }\n this.bufferLength += rowBytes;\n }\n\n readBlockPng() {\n const rowBytes = this.rowBytes;\n const pixBytes = this.pixBytes;\n\n const predictor = this.str.getByte();\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n if (prevRow.length === 0) {\n prevRow = new Uint8Array(rowBytes);\n }\n\n let i,\n j = bufferLength,\n up,\n c;\n switch (predictor) {\n case 0:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n break;\n case 1:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff;\n j++;\n }\n break;\n case 2:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff;\n }\n break;\n case 3:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] =\n (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff;\n j++;\n }\n break;\n case 4:\n // we need to save the up left pixels values. the simplest way\n // is to create a new buffer\n for (i = 0; i < pixBytes; ++i) {\n up = prevRow[i];\n c = rawBytes[i];\n buffer[j++] = up + c;\n }\n for (; i < rowBytes; ++i) {\n up = prevRow[i];\n const upLeft = prevRow[i - pixBytes];\n const left = buffer[j - pixBytes];\n const p = left + up - upLeft;\n\n let pa = p - left;\n if (pa < 0) {\n pa = -pa;\n }\n let pb = p - up;\n if (pb < 0) {\n pb = -pb;\n }\n let pc = p - upLeft;\n if (pc < 0) {\n pc = -pc;\n }\n\n c = rawBytes[i];\n if (pa <= pb && pa <= pc) {\n buffer[j++] = left + c;\n } else if (pb <= pc) {\n buffer[j++] = up + c;\n } else {\n buffer[j++] = upLeft + c;\n }\n }\n break;\n default:\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n this.bufferLength += rowBytes;\n }\n}\n\nexport { PredictorStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass RunLengthStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n }\n\n readBlock() {\n // The repeatHeader has following format. The first byte defines type of run\n // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n // (in addition to the second byte from the header), n = 129 through 255 -\n // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n const repeatHeader = this.str.getBytes(2);\n if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n\n let buffer;\n let bufferLength = this.bufferLength;\n let n = repeatHeader[0];\n if (n < 128) {\n // copy n bytes\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer[bufferLength++] = repeatHeader[1];\n if (n > 0) {\n const source = this.str.getBytes(n);\n buffer.set(source, bufferLength);\n bufferLength += n;\n }\n } else {\n n = 257 - n;\n const b = repeatHeader[1];\n buffer = this.ensureBuffer(bufferLength + n + 1);\n for (let i = 0; i < n; i++) {\n buffer[bufferLength++] = b;\n }\n }\n this.bufferLength = bufferLength;\n }\n}\n\nexport { RunLengthStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n info,\n shadow,\n string32,\n warn,\n} from \"../shared/util.js\";\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport {\n FontFlags,\n getFontType,\n MacStandardGlyphOrdering,\n normalizeFontName,\n recoverGlyphName,\n SEAC_ANALYSIS_ENABLED,\n} from \"./fonts_utils.js\";\nimport {\n getCharUnicodeCategory,\n getUnicodeForGlyph,\n getUnicodeRangeFor,\n mapSpecialUnicodeValues,\n} from \"./unicode.js\";\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from \"./glyphlist.js\";\nimport {\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n getGlyphMapForStandardFonts,\n getNonStdFontMap,\n getSerifFonts,\n getStdFontMap,\n getSupplementalGlyphMapForArialBlack,\n getSupplementalGlyphMapForCalibri,\n} from \"./standard_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { CFFFont } from \"./cff_font.js\";\nimport { FontRendererFactory } from \"./font_renderer.js\";\nimport { getFontBasicMetrics } from \"./metrics.js\";\nimport { GlyfTable } from \"./glyf.js\";\nimport { IdentityCMap } from \"./cmap.js\";\nimport { OpenTypeFileBuilder } from \"./opentype_file_builder.js\";\nimport { readUint32 } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Font } from \"./type1_font.js\";\n\n// Unicode Private Use Areas:\nconst PRIVATE_USE_AREAS = [\n [0xe000, 0xf8ff], // BMP (0)\n [0x100000, 0x10fffd], // PUP (16)\n];\n\n// PDF Glyph Space Units are one Thousandth of a TextSpace Unit\n// except for Type 3 fonts\nconst PDF_GLYPH_SPACE_UNITS = 1000;\n\nconst EXPORT_DATA_PROPERTIES = [\n \"ascent\",\n \"bbox\",\n \"black\",\n \"bold\",\n \"charProcOperatorList\",\n \"composite\",\n \"cssFontInfo\",\n \"data\",\n \"defaultVMetrics\",\n \"defaultWidth\",\n \"descent\",\n \"fallbackName\",\n \"fontMatrix\",\n \"fontType\",\n \"isType3Font\",\n \"italic\",\n \"loadedName\",\n \"mimetype\",\n \"missingFile\",\n \"name\",\n \"remeasure\",\n \"subtype\",\n \"type\",\n \"vertical\",\n];\n\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\n \"cMap\",\n \"defaultEncoding\",\n \"differences\",\n \"isMonospace\",\n \"isSerifFont\",\n \"isSymbolicFont\",\n \"seacMap\",\n \"toFontChar\",\n \"toUnicode\",\n \"vmetrics\",\n \"widths\",\n];\n\nfunction adjustWidths(properties) {\n if (!properties.fontMatrix) {\n return;\n }\n if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n return;\n }\n // adjusting width to fontMatrix scale\n const scale = 0.001 / properties.fontMatrix[0];\n const glyphsWidths = properties.widths;\n for (const glyph in glyphsWidths) {\n glyphsWidths[glyph] *= scale;\n }\n properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n if (properties.isInternalFont) {\n return;\n }\n if (builtInEncoding === properties.defaultEncoding) {\n return; // No point in trying to adjust `toUnicode` if the encodings match.\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [],\n glyphsUnicodeMap = getGlyphsUnicode();\n for (const charCode in builtInEncoding) {\n if (properties.hasIncludedToUnicodeMap) {\n if (properties.toUnicode.has(charCode)) {\n continue; // The font dictionary has a `ToUnicode` entry.\n }\n } else if (properties.hasEncoding) {\n if (\n properties.differences.length === 0 ||\n properties.differences[charCode] !== undefined\n ) {\n continue; // The font dictionary has an `Encoding`/`Differences` entry.\n }\n }\n const glyphName = builtInEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\n/**\n * NOTE: This function should only be called at the *end* of font-parsing,\n * after e.g. `adjustToUnicode` has run, to prevent any issues.\n */\nfunction amendFallbackToUnicode(properties) {\n if (!properties.fallbackToUnicode) {\n return;\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [];\n for (const charCode in properties.fallbackToUnicode) {\n if (properties.toUnicode.has(charCode)) {\n continue; // The font dictionary has a `ToUnicode` entry.\n }\n toUnicode[charCode] = properties.fallbackToUnicode[charCode];\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\nclass Glyph {\n constructor(\n originalCharCode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n ) {\n this.originalCharCode = originalCharCode;\n this.fontChar = fontChar;\n this.unicode = unicode;\n this.accent = accent;\n this.width = width;\n this.vmetric = vmetric;\n this.operatorListId = operatorListId;\n this.isSpace = isSpace;\n this.isInFont = isInFont;\n\n const category = getCharUnicodeCategory(unicode);\n this.isWhitespace = category.isWhitespace;\n this.isZeroWidthDiacritic = category.isZeroWidthDiacritic;\n this.isInvisibleFormatMark = category.isInvisibleFormatMark;\n }\n\n matchesForCache(\n originalCharCode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n ) {\n return (\n this.originalCharCode === originalCharCode &&\n this.fontChar === fontChar &&\n this.unicode === unicode &&\n this.accent === accent &&\n this.width === width &&\n this.vmetric === vmetric &&\n this.operatorListId === operatorListId &&\n this.isSpace === isSpace &&\n this.isInFont === isInFont\n );\n }\n}\n\nfunction int16(b0, b1) {\n return (b0 << 8) + b1;\n}\n\nfunction writeSignedInt16(bytes, index, value) {\n bytes[index + 1] = value;\n bytes[index] = value >>> 8;\n}\n\nfunction signedInt16(b0, b1) {\n const value = (b0 << 8) + b1;\n return value & (1 << 15) ? value - 0x10000 : value;\n}\n\nfunction int32(b0, b1, b2, b3) {\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n}\n\nfunction string16(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 16,\n `string16: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction safeString16(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && !Number.isNaN(value),\n `safeString16: Unexpected input \"${value}\".`\n );\n }\n // clamp value to the 16-bit int range\n if (value > 0x7fff) {\n value = 0x7fff;\n } else if (value < -0x8000) {\n value = -0x8000;\n }\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction isTrueTypeFile(file) {\n const header = file.peekBytes(4);\n return (\n readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\"\n );\n}\n\nfunction isTrueTypeCollectionFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"ttcf\";\n}\n\nfunction isOpenTypeFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"OTTO\";\n}\n\nfunction isType1File(file) {\n const header = file.peekBytes(2);\n // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\n if (header[0] === 0x25 && header[1] === 0x21) {\n return true;\n }\n // ... obviously some fonts violate that part of the specification,\n // please refer to the comment in |Type1Font| below (pfb file header).\n if (header[0] === 0x80 && header[1] === 0x01) {\n return true;\n }\n return false;\n}\n\n/**\n * Compared to other font formats, the header in CFF files is not constant\n * but contains version numbers. To reduce the possibility of misclassifying\n * font files as CFF, it's recommended to check for other font formats first.\n */\nfunction isCFFFile(file) {\n const header = file.peekBytes(4);\n if (\n /* major version, [1, 255] */ header[0] >= 1 &&\n /* minor version, [0, 255]; header[1] */\n /* header size, [0, 255]; header[2] */\n /* offset(0) size, [1, 4] */ header[3] >= 1 &&\n header[3] <= 4\n ) {\n return true;\n }\n return false;\n}\n\nfunction getFontFileType(file, { type, subtype, composite }) {\n let fileType, fileSubtype;\n\n if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n if (composite) {\n fileType = \"CIDFontType2\";\n } else {\n fileType = \"TrueType\";\n }\n } else if (isOpenTypeFile(file)) {\n if (composite) {\n fileType = \"CIDFontType2\";\n } else {\n fileType = \"OpenType\";\n }\n } else if (isType1File(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n }\n } else if (isCFFFile(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n fileSubtype = \"CIDFontType0C\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n fileSubtype = \"Type1C\";\n }\n } else {\n warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n fileType = type;\n fileSubtype = subtype;\n }\n\n return [fileType, fileSubtype];\n}\n\nfunction applyStandardFontGlyphMap(map, glyphMap) {\n for (const charCode in glyphMap) {\n map[+charCode] = glyphMap[charCode];\n }\n}\n\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n const toFontChar = [];\n let unicode;\n for (let i = 0, ii = encoding.length; i < ii; i++) {\n unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[i] = unicode;\n }\n }\n for (const charCode in differences) {\n unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[+charCode] = unicode;\n }\n }\n return toFontChar;\n}\n\nfunction convertCidString(charCode, cid, shouldThrow = false) {\n switch (cid.length) {\n case 1:\n return cid.charCodeAt(0);\n case 2:\n return (cid.charCodeAt(0) << 8) | cid.charCodeAt(1);\n }\n const msg = `Unsupported CID string (charCode ${charCode}): \"${cid}\".`;\n if (shouldThrow) {\n throw new FormatError(msg);\n }\n warn(msg);\n return cid;\n}\n\n/**\n * Rebuilds the char code to glyph ID map by moving all char codes to the\n * private use area. This is done to avoid issues with various problematic\n * unicode areas where either a glyph won't be drawn or is deformed by a\n * shaper.\n * @returns {Object} Two properties:\n * 'toFontChar' - maps original char codes(the value that will be read\n * from commands such as show text) to the char codes that will be used in the\n * font that we build\n * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\n */\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n const newMap = Object.create(null);\n const toFontChar = [];\n let privateUseAreaIndex = 0;\n let nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n for (let originalCharCode in charCodeToGlyphId) {\n originalCharCode |= 0;\n let glyphId = charCodeToGlyphId[originalCharCode];\n // For missing glyphs don't create the mappings so the glyph isn't\n // drawn.\n if (!hasGlyph(glyphId)) {\n continue;\n }\n if (nextAvailableFontCharCode > privateUseOffetEnd) {\n privateUseAreaIndex++;\n if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n warn(\"Ran out of space in font private use area.\");\n break;\n }\n nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n }\n const fontCharCode = nextAvailableFontCharCode++;\n if (glyphId === 0) {\n glyphId = newGlyphZeroId;\n }\n\n newMap[fontCharCode] = glyphId;\n toFontChar[originalCharCode] = fontCharCode;\n }\n return {\n toFontChar,\n charCodeToGlyphId: newMap,\n nextAvailableFontCharCode,\n };\n}\n\nfunction getRanges(glyphs, numGlyphs) {\n // Array.sort() sorts by characters, not numerically, so convert to an\n // array of characters.\n const codes = [];\n for (const charCode in glyphs) {\n // Remove an invalid glyph ID mappings to make OTS happy.\n if (glyphs[charCode] >= numGlyphs) {\n continue;\n }\n codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });\n }\n // Some fonts have zero glyphs and are used only for text selection, but\n // there needs to be at least one to build a valid cmap table.\n if (codes.length === 0) {\n codes.push({ fontCharCode: 0, glyphId: 0 });\n }\n codes.sort(function fontGetRangesSort(a, b) {\n return a.fontCharCode - b.fontCharCode;\n });\n\n // Split the sorted codes into ranges.\n const ranges = [];\n const length = codes.length;\n for (let n = 0; n < length; ) {\n const start = codes[n].fontCharCode;\n const codeIndices = [codes[n].glyphId];\n ++n;\n let end = start;\n while (n < length && end + 1 === codes[n].fontCharCode) {\n codeIndices.push(codes[n].glyphId);\n ++end;\n ++n;\n if (end === 0xffff) {\n break;\n }\n }\n ranges.push([start, end, codeIndices]);\n }\n\n return ranges;\n}\n\nfunction createCmapTable(glyphs, numGlyphs) {\n const ranges = getRanges(glyphs, numGlyphs);\n const numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n let cmap =\n \"\\x00\\x00\" + // version\n string16(numTables) + // numTables\n \"\\x00\\x03\" + // platformID\n \"\\x00\\x01\" + // encodingID\n string32(4 + numTables * 8); // start of the table record\n\n let i, ii, j, jj;\n for (i = ranges.length - 1; i >= 0; --i) {\n if (ranges[i][0] <= 0xffff) {\n break;\n }\n }\n const bmpLength = i + 1;\n\n if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n ranges[i][1] = 0xfffe;\n }\n const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n const segCount = bmpLength + trailingRangesCount;\n const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n // Fill up the 4 parallel arrays describing the segments.\n let startCount = \"\";\n let endCount = \"\";\n let idDeltas = \"\";\n let idRangeOffsets = \"\";\n let glyphsIds = \"\";\n let bias = 0;\n\n let range, start, end, codes;\n for (i = 0, ii = bmpLength; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n end = range[1];\n startCount += string16(start);\n endCount += string16(end);\n codes = range[2];\n let contiguous = true;\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n contiguous = false;\n break;\n }\n }\n if (!contiguous) {\n const offset = (segCount - i) * 2 + bias * 2;\n bias += end - start + 1;\n\n idDeltas += string16(0);\n idRangeOffsets += string16(offset);\n\n for (j = 0, jj = codes.length; j < jj; ++j) {\n glyphsIds += string16(codes[j]);\n }\n } else {\n const startCode = codes[0];\n\n idDeltas += string16((startCode - start) & 0xffff);\n idRangeOffsets += string16(0);\n }\n }\n\n if (trailingRangesCount > 0) {\n endCount += \"\\xFF\\xFF\";\n startCount += \"\\xFF\\xFF\";\n idDeltas += \"\\x00\\x01\";\n idRangeOffsets += \"\\x00\\x00\";\n }\n\n const format314 =\n \"\\x00\\x00\" + // language\n string16(2 * segCount) +\n string16(searchParams.range) +\n string16(searchParams.entry) +\n string16(searchParams.rangeShift) +\n endCount +\n \"\\x00\\x00\" +\n startCount +\n idDeltas +\n idRangeOffsets +\n glyphsIds;\n\n let format31012 = \"\";\n let header31012 = \"\";\n if (numTables > 1) {\n cmap +=\n \"\\x00\\x03\" + // platformID\n \"\\x00\\x0A\" + // encodingID\n string32(4 + numTables * 8 + 4 + format314.length); // start of the table record\n format31012 = \"\";\n for (i = 0, ii = ranges.length; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n codes = range[2];\n let code = codes[0];\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n end = range[0] + j - 1;\n format31012 +=\n string32(start) + // startCharCode\n string32(end) + // endCharCode\n string32(code); // startGlyphID\n start = end + 1;\n code = codes[j];\n }\n }\n format31012 +=\n string32(start) + // startCharCode\n string32(range[1]) + // endCharCode\n string32(code); // startGlyphID\n }\n header31012 =\n \"\\x00\\x0C\" + // format\n \"\\x00\\x00\" + // reserved\n string32(format31012.length + 16) + // length\n \"\\x00\\x00\\x00\\x00\" + // language\n string32(format31012.length / 12); // nGroups\n }\n\n return (\n cmap +\n \"\\x00\\x04\" + // format\n string16(format314.length + 4) + // length\n format314 +\n header31012 +\n format31012\n );\n}\n\nfunction validateOS2Table(os2, file) {\n file.pos = (file.start || 0) + os2.offset;\n const version = file.getUint16();\n // TODO verify all OS/2 tables fields, but currently we validate only those\n // that give us issues\n file.skip(60); // skipping type, misc sizes, panose, unicode ranges\n const selection = file.getUint16();\n if (version < 4 && selection & 0x0300) {\n return false;\n }\n const firstChar = file.getUint16();\n const lastChar = file.getUint16();\n if (firstChar > lastChar) {\n return false;\n }\n file.skip(6); // skipping sTypoAscender/Descender/LineGap\n const usWinAscent = file.getUint16();\n if (usWinAscent === 0) {\n // makes font unreadable by windows\n return false;\n }\n\n // OS/2 appears to be valid, resetting some fields\n os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0\n return true;\n}\n\nfunction createOS2Table(properties, charstrings, override) {\n override = override || {\n unitsPerEm: 0,\n yMax: 0,\n yMin: 0,\n ascent: 0,\n descent: 0,\n };\n\n let ulUnicodeRange1 = 0;\n let ulUnicodeRange2 = 0;\n let ulUnicodeRange3 = 0;\n let ulUnicodeRange4 = 0;\n\n let firstCharIndex = null;\n let lastCharIndex = 0;\n\n if (charstrings) {\n for (let code in charstrings) {\n code |= 0;\n if (firstCharIndex > code || !firstCharIndex) {\n firstCharIndex = code;\n }\n if (lastCharIndex < code) {\n lastCharIndex = code;\n }\n\n const position = getUnicodeRangeFor(code);\n if (position < 32) {\n ulUnicodeRange1 |= 1 << position;\n } else if (position < 64) {\n ulUnicodeRange2 |= 1 << (position - 32);\n } else if (position < 96) {\n ulUnicodeRange3 |= 1 << (position - 64);\n } else if (position < 123) {\n ulUnicodeRange4 |= 1 << (position - 96);\n } else {\n throw new FormatError(\n \"Unicode ranges Bits > 123 are reserved for internal usage\"\n );\n }\n }\n if (lastCharIndex > 0xffff) {\n // OS2 only supports a 16 bit int. The spec says if supplementary\n // characters are used the field should just be set to 0xFFFF.\n lastCharIndex = 0xffff;\n }\n } else {\n // TODO\n firstCharIndex = 0;\n lastCharIndex = 255;\n }\n\n const bbox = properties.bbox || [0, 0, 0, 0];\n const unitsPerEm =\n override.unitsPerEm ||\n 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n // if the font units differ to the PDF glyph space units\n // then scale up the values\n const scale = properties.ascentScaled\n ? 1.0\n : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n\n const typoAscent =\n override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n let typoDescent =\n override.descent || Math.round(scale * (properties.descent || bbox[1]));\n if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n typoDescent = -typoDescent; // fixing incorrect descent\n }\n const winAscent = override.yMax || typoAscent;\n const winDescent = -override.yMin || -typoDescent;\n\n return (\n \"\\x00\\x03\" + // version\n \"\\x02\\x24\" + // xAvgCharWidth\n \"\\x01\\xF4\" + // usWeightClass\n \"\\x00\\x05\" + // usWidthClass\n \"\\x00\\x00\" + // fstype (0 to let the font loads via font-face on IE)\n \"\\x02\\x8A\" + // ySubscriptXSize\n \"\\x02\\xBB\" + // ySubscriptYSize\n \"\\x00\\x00\" + // ySubscriptXOffset\n \"\\x00\\x8C\" + // ySubscriptYOffset\n \"\\x02\\x8A\" + // ySuperScriptXSize\n \"\\x02\\xBB\" + // ySuperScriptYSize\n \"\\x00\\x00\" + // ySuperScriptXOffset\n \"\\x01\\xDF\" + // ySuperScriptYOffset\n \"\\x00\\x31\" + // yStrikeOutSize\n \"\\x01\\x02\" + // yStrikeOutPosition\n \"\\x00\\x00\" + // sFamilyClass\n \"\\x00\\x00\\x06\" +\n String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\n \"\\x00\\x00\\x00\\x00\\x00\\x00\" + // Panose\n string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)\n string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)\n string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)\n string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)\n \"\\x2A\\x32\\x31\\x2A\" + // achVendID\n string16(properties.italicAngle ? 1 : 0) + // fsSelection\n string16(firstCharIndex || properties.firstChar) + // usFirstCharIndex\n string16(lastCharIndex || properties.lastChar) + // usLastCharIndex\n string16(typoAscent) + // sTypoAscender\n string16(typoDescent) + // sTypoDescender\n \"\\x00\\x64\" + // sTypoLineGap (7%-10% of the unitsPerEM value)\n string16(winAscent) + // usWinAscent\n string16(winDescent) + // usWinDescent\n \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange1 (Bits 0-31)\n \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange2 (Bits 32-63)\n string16(properties.xHeight) + // sxHeight\n string16(properties.capHeight) + // sCapHeight\n string16(0) + // usDefaultChar\n string16(firstCharIndex || properties.firstChar) + // usBreakChar\n \"\\x00\\x03\"\n ); // usMaxContext\n}\n\nfunction createPostTable(properties) {\n const angle = Math.floor(properties.italicAngle * 2 ** 16);\n return (\n \"\\x00\\x03\\x00\\x00\" + // Version number\n string32(angle) + // italicAngle\n \"\\x00\\x00\" + // underlinePosition\n \"\\x00\\x00\" + // underlineThickness\n string32(properties.fixedPitch ? 1 : 0) + // isFixedPitch\n \"\\x00\\x00\\x00\\x00\" + // minMemType42\n \"\\x00\\x00\\x00\\x00\" + // maxMemType42\n \"\\x00\\x00\\x00\\x00\" + // minMemType1\n \"\\x00\\x00\\x00\\x00\"\n ); // maxMemType1\n}\n\nfunction createPostscriptName(name) {\n // See https://docs.microsoft.com/en-us/typography/opentype/spec/recom#name.\n return name.replace(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g, \"\").slice(0, 63);\n}\n\nfunction createNameTable(name, proto) {\n if (!proto) {\n proto = [[], []]; // no strings and unicode strings\n }\n\n const strings = [\n proto[0][0] || \"Original licence\", // 0.Copyright\n proto[0][1] || name, // 1.Font family\n proto[0][2] || \"Unknown\", // 2.Font subfamily (font weight)\n proto[0][3] || \"uniqueID\", // 3.Unique ID\n proto[0][4] || name, // 4.Full font name\n proto[0][5] || \"Version 0.11\", // 5.Version\n proto[0][6] || createPostscriptName(name), // 6.Postscript name\n proto[0][7] || \"Unknown\", // 7.Trademark\n proto[0][8] || \"Unknown\", // 8.Manufacturer\n proto[0][9] || \"Unknown\", // 9.Designer\n ];\n\n // Mac want 1-byte per character strings while Windows want\n // 2-bytes per character, so duplicate the names table\n const stringsUnicode = [];\n let i, ii, j, jj, str;\n for (i = 0, ii = strings.length; i < ii; i++) {\n str = proto[1][i] || strings[i];\n\n const strBufUnicode = [];\n for (j = 0, jj = str.length; j < jj; j++) {\n strBufUnicode.push(string16(str.charCodeAt(j)));\n }\n stringsUnicode.push(strBufUnicode.join(\"\"));\n }\n\n const names = [strings, stringsUnicode];\n const platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n const encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n const languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n\n const namesRecordCount = strings.length * platforms.length;\n let nameTable =\n \"\\x00\\x00\" + // format\n string16(namesRecordCount) + // Number of names Record\n string16(namesRecordCount * 12 + 6); // Storage\n\n // Build the name records field\n let strOffset = 0;\n for (i = 0, ii = platforms.length; i < ii; i++) {\n const strs = names[i];\n for (j = 0, jj = strs.length; j < jj; j++) {\n str = strs[j];\n const nameRecord =\n platforms[i] + // platform ID\n encodings[i] + // encoding ID\n languages[i] + // language ID\n string16(j) + // name ID\n string16(str.length) +\n string16(strOffset);\n nameTable += nameRecord;\n strOffset += str.length;\n }\n }\n\n nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n return nameTable;\n}\n\n/**\n * 'Font' is the class the outside world should use, it encapsulate all the font\n * decoding logics whatever type it is (assuming the font type is supported).\n */\nclass Font {\n constructor(name, file, properties) {\n this.name = name;\n this.psName = null;\n this.mimetype = null;\n this.disableFontFace = false;\n\n this.loadedName = properties.loadedName;\n this.isType3Font = properties.isType3Font;\n this.missingFile = false;\n this.cssFontInfo = properties.cssFontInfo;\n\n this._charsCache = Object.create(null);\n this._glyphCache = Object.create(null);\n\n let isSerifFont = !!(properties.flags & FontFlags.Serif);\n // Fallback to checking the font name, in order to improve text-selection,\n // since the /Flags-entry is often wrong (fixes issue13845.pdf).\n if (!isSerifFont && !properties.isSimulatedFlags) {\n const baseName = name.replace(/[,_]/g, \"-\").split(\"-\")[0],\n serifFonts = getSerifFonts();\n for (const namePart of baseName.split(\"+\")) {\n if (serifFonts[namePart]) {\n isSerifFont = true;\n break;\n }\n }\n }\n this.isSerifFont = isSerifFont;\n\n this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n let type = properties.type;\n let subtype = properties.subtype;\n this.type = type;\n this.subtype = subtype;\n\n let fallbackName = \"sans-serif\";\n if (this.isMonospace) {\n fallbackName = \"monospace\";\n } else if (this.isSerifFont) {\n fallbackName = \"serif\";\n }\n this.fallbackName = fallbackName;\n\n this.differences = properties.differences;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.composite = properties.composite;\n this.cMap = properties.cMap;\n this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;\n this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n this.lineHeight = this.ascent - this.descent;\n this.fontMatrix = properties.fontMatrix;\n this.bbox = properties.bbox;\n this.defaultEncoding = properties.defaultEncoding;\n\n this.toUnicode = properties.toUnicode;\n this.toFontChar = [];\n\n if (properties.type === \"Type3\") {\n for (let charCode = 0; charCode < 256; charCode++) {\n this.toFontChar[charCode] =\n this.differences[charCode] || properties.defaultEncoding[charCode];\n }\n this.fontType = FontType.TYPE3;\n return;\n }\n\n this.cidEncoding = properties.cidEncoding || \"\";\n this.vertical = !!properties.vertical;\n if (this.vertical) {\n this.vmetrics = properties.vmetrics;\n this.defaultVMetrics = properties.defaultVMetrics;\n }\n\n if (!file || file.isEmpty) {\n if (file) {\n // Some bad PDF generators will include empty font files,\n // attempting to recover by assuming that no file exists.\n warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n }\n this.fallbackToSystemFont(properties);\n return;\n }\n\n // Parse the font file to determine the correct type/subtype, rather than\n // relying on the (often incorrect) data in the font dictionary; (see e.g.\n // issue6782.pdf, issue7598.pdf, and issue9949.pdf).\n [type, subtype] = getFontFileType(file, properties);\n\n if (type !== this.type || subtype !== this.subtype) {\n info(\n \"Inconsistent font file Type/SubType, expected: \" +\n `${this.type}/${this.subtype} but found: ${type}/${subtype}.`\n );\n }\n\n let data;\n try {\n switch (type) {\n case \"MMType1\":\n info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n /* falls through */\n case \"Type1\":\n case \"CIDFontType0\":\n this.mimetype = \"font/opentype\";\n\n const cff =\n subtype === \"Type1C\" || subtype === \"CIDFontType0C\"\n ? new CFFFont(file, properties)\n : new Type1Font(name, file, properties);\n\n adjustWidths(properties);\n\n // Wrap the CFF data inside an OTF font file\n data = this.convert(name, cff, properties);\n break;\n\n case \"OpenType\":\n case \"TrueType\":\n case \"CIDFontType2\":\n this.mimetype = \"font/opentype\";\n\n // Repair the TrueType file. It is can be damaged in the point of\n // view of the sanitizer\n data = this.checkAndRepair(name, file, properties);\n if (this.isOpenType) {\n adjustWidths(properties);\n\n type = \"OpenType\";\n }\n break;\n\n default:\n throw new FormatError(`Font ${type} is not supported`);\n }\n } catch (e) {\n warn(e);\n this.fallbackToSystemFont(properties);\n return;\n }\n\n amendFallbackToUnicode(properties);\n this.data = data;\n this.fontType = getFontType(type, subtype, properties.isStandardFont);\n\n // Transfer some properties again that could change during font conversion\n this.fontMatrix = properties.fontMatrix;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.toUnicode = properties.toUnicode;\n this.seacMap = properties.seacMap;\n }\n\n get renderer() {\n const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n return shadow(this, \"renderer\", renderer);\n }\n\n exportData(extraProperties = false) {\n const exportDataProperties = extraProperties\n ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES]\n : EXPORT_DATA_PROPERTIES;\n\n const data = Object.create(null);\n let property, value;\n for (property of exportDataProperties) {\n value = this[property];\n // Ignore properties that haven't been explicitly set.\n if (value !== undefined) {\n data[property] = value;\n }\n }\n return data;\n }\n\n fallbackToSystemFont(properties) {\n this.missingFile = true;\n // The file data is not specified. Trying to fix the font name\n // to be used with the canvas.font.\n const name = this.name;\n const type = this.type;\n const subtype = this.subtype;\n let fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap(),\n nonStdFontMap = getNonStdFontMap();\n const isStandardFont = !!stdFontMap[fontName];\n const isMappedToStandardFont = !!(\n nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]\n );\n\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n\n const fontBasicMetricsMap = getFontBasicMetrics();\n const metrics = fontBasicMetricsMap[fontName];\n if (metrics) {\n if (isNaN(this.ascent)) {\n this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS;\n }\n if (isNaN(this.descent)) {\n this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS;\n }\n if (isNaN(this.capHeight)) {\n this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS;\n }\n }\n\n this.bold = fontName.search(/bold/gi) !== -1;\n this.italic =\n fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;\n\n // Use 'name' instead of 'fontName' here because the original\n // name ArialBlack for example will be replaced by Helvetica.\n this.black = name.search(/Black/g) !== -1;\n\n // Use 'name' instead of 'fontName' here because the original\n // name ArialNarrow for example will be replaced by Helvetica.\n const isNarrow = name.search(/Narrow/g) !== -1;\n\n // if at least one width is present, remeasure all chars when exists\n this.remeasure =\n (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\n if (\n (isStandardFont || isMappedToStandardFont) &&\n type === \"CIDFontType2\" &&\n this.cidEncoding.startsWith(\"Identity-\")\n ) {\n const cidToGidMap = properties.cidToGidMap;\n // Standard fonts might be embedded as CID font without glyph mapping.\n // Building one based on GlyphMapForStandardFonts.\n const map = [];\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n\n if (/Arial-?Black/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\n } else if (/Calibri/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\n }\n\n // Always update the glyph mapping with the `cidToGidMap` when it exists\n // (fixes issue12418_reduced.pdf).\n if (cidToGidMap) {\n for (const charCode in map) {\n const cid = map[charCode];\n if (cidToGidMap[cid] !== undefined) {\n map[+charCode] = cidToGidMap[cid];\n }\n }\n // When the /CIDToGIDMap is \"incomplete\", fallback to the included\n // /ToUnicode-map regardless of its encoding (fixes issue11915.pdf).\n if (\n cidToGidMap.length !== this.toUnicode.length &&\n properties.hasIncludedToUnicodeMap &&\n this.toUnicode instanceof IdentityToUnicodeMap\n ) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n const cid = map[charCode];\n if (cidToGidMap[cid] === undefined) {\n map[+charCode] = unicodeCharCode;\n }\n });\n }\n }\n\n if (!(this.toUnicode instanceof IdentityToUnicodeMap)) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n this.toUnicode = new ToUnicodeMap(map);\n } else if (/Symbol/i.test(fontName)) {\n this.toFontChar = buildToFontChar(\n SymbolSetEncoding,\n getGlyphsUnicode(),\n this.differences\n );\n } else if (/Dingbats/i.test(fontName)) {\n if (/Wingdings/i.test(name)) {\n warn(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n }\n this.toFontChar = buildToFontChar(\n ZapfDingbatsEncoding,\n getDingbatsGlyphsUnicode(),\n this.differences\n );\n } else if (isStandardFont) {\n const map = buildToFontChar(\n this.defaultEncoding,\n getGlyphsUnicode(),\n this.differences\n );\n\n if (\n type === \"CIDFontType2\" &&\n !this.cidEncoding.startsWith(\"Identity-\") &&\n !(this.toUnicode instanceof IdentityToUnicodeMap)\n ) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n } else {\n const glyphsUnicodeMap = getGlyphsUnicode();\n const map = [];\n this.toUnicode.forEach((charCode, unicodeCharCode) => {\n if (!this.composite) {\n const glyphName =\n this.differences[charCode] || this.defaultEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n unicodeCharCode = unicode;\n }\n }\n map[+charCode] = unicodeCharCode;\n });\n\n // Attempt to improve the glyph mapping for (some) composite fonts that\n // appear to lack meaningful ToUnicode data.\n if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n if (/Verdana/i.test(name)) {\n // Fixes issue11242_reduced.pdf\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n }\n }\n this.toFontChar = map;\n }\n\n amendFallbackToUnicode(properties);\n this.loadedName = fontName.split(\"-\")[0];\n this.fontType = getFontType(type, subtype, properties.isStandardFont);\n }\n\n checkAndRepair(name, font, properties) {\n const VALID_TABLES = [\n \"OS/2\",\n \"cmap\",\n \"head\",\n \"hhea\",\n \"hmtx\",\n \"maxp\",\n \"name\",\n \"post\",\n \"loca\",\n \"glyf\",\n \"fpgm\",\n \"prep\",\n \"cvt \",\n \"CFF \",\n ];\n\n function readTables(file, numTables) {\n const tables = Object.create(null);\n tables[\"OS/2\"] = null;\n tables.cmap = null;\n tables.head = null;\n tables.hhea = null;\n tables.hmtx = null;\n tables.maxp = null;\n tables.name = null;\n tables.post = null;\n\n for (let i = 0; i < numTables; i++) {\n const table = readTableEntry(file);\n if (!VALID_TABLES.includes(table.tag)) {\n continue; // skipping table if it's not a required or optional table\n }\n if (table.length === 0) {\n continue; // skipping empty tables\n }\n tables[table.tag] = table;\n }\n return tables;\n }\n\n function readTableEntry(file) {\n const tag = file.getString(4);\n\n const checksum = file.getInt32() >>> 0;\n const offset = file.getInt32() >>> 0;\n const length = file.getInt32() >>> 0;\n\n // Read the table associated data\n const previousPosition = file.pos;\n file.pos = file.start ? file.start : 0;\n file.skip(offset);\n const data = file.getBytes(length);\n file.pos = previousPosition;\n\n if (tag === \"head\") {\n // clearing checksum adjustment\n data[8] = data[9] = data[10] = data[11] = 0;\n data[17] |= 0x20; // Set font optimized for cleartype flag.\n }\n\n return {\n tag,\n checksum,\n length,\n offset,\n data,\n };\n }\n\n function readOpenTypeHeader(ttf) {\n return {\n version: ttf.getString(4),\n numTables: ttf.getUint16(),\n searchRange: ttf.getUint16(),\n entrySelector: ttf.getUint16(),\n rangeShift: ttf.getUint16(),\n };\n }\n\n function readTrueTypeCollectionHeader(ttc) {\n const ttcTag = ttc.getString(4);\n assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n\n const majorVersion = ttc.getUint16();\n const minorVersion = ttc.getUint16();\n const numFonts = ttc.getInt32() >>> 0;\n const offsetTable = [];\n for (let i = 0; i < numFonts; i++) {\n offsetTable.push(ttc.getInt32() >>> 0);\n }\n\n const header = {\n ttcTag,\n majorVersion,\n minorVersion,\n numFonts,\n offsetTable,\n };\n switch (majorVersion) {\n case 1:\n return header;\n case 2:\n header.dsigTag = ttc.getInt32() >>> 0;\n header.dsigLength = ttc.getInt32() >>> 0;\n header.dsigOffset = ttc.getInt32() >>> 0;\n return header;\n }\n throw new FormatError(\n `Invalid TrueType Collection majorVersion: ${majorVersion}.`\n );\n }\n\n function readTrueTypeCollectionData(ttc, fontName) {\n const { numFonts, offsetTable } = readTrueTypeCollectionHeader(ttc);\n const fontNameParts = fontName.split(\"+\");\n let fallbackData;\n\n for (let i = 0; i < numFonts; i++) {\n ttc.pos = (ttc.start || 0) + offsetTable[i];\n const potentialHeader = readOpenTypeHeader(ttc);\n const potentialTables = readTables(ttc, potentialHeader.numTables);\n\n if (!potentialTables.name) {\n throw new FormatError(\n 'TrueType Collection font must contain a \"name\" table.'\n );\n }\n const nameTable = readNameTable(potentialTables.name);\n\n for (let j = 0, jj = nameTable.length; j < jj; j++) {\n for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n const nameEntry =\n nameTable[j][k] && nameTable[j][k].replace(/\\s/g, \"\");\n if (!nameEntry) {\n continue;\n }\n if (nameEntry === fontName) {\n return {\n header: potentialHeader,\n tables: potentialTables,\n };\n }\n if (fontNameParts.length < 2) {\n continue;\n }\n for (const part of fontNameParts) {\n if (nameEntry === part) {\n fallbackData = {\n name: part,\n header: potentialHeader,\n tables: potentialTables,\n };\n }\n }\n }\n }\n }\n if (fallbackData) {\n warn(\n `TrueType Collection does not contain \"${fontName}\" font, ` +\n `falling back to \"${fallbackData.name}\" font instead.`\n );\n return {\n header: fallbackData.header,\n tables: fallbackData.tables,\n };\n }\n throw new FormatError(\n `TrueType Collection does not contain \"${fontName}\" font.`\n );\n }\n\n /**\n * Read the appropriate subtable from the cmap according to 9.6.6.4 from\n * PDF spec\n */\n function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n if (!cmap) {\n warn(\"No cmap table available.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n let segment;\n let start = (file.start ? file.start : 0) + cmap.offset;\n file.pos = start;\n\n file.skip(2); // version\n const numTables = file.getUint16();\n\n let potentialTable;\n let canBreak = false;\n // There's an order of preference in terms of which cmap subtable to\n // use:\n // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\n // - symbolic fonts the preference is a 3,0 table then a 1,0 table\n // The following takes advantage of the fact that the tables are sorted\n // to work.\n for (let i = 0; i < numTables; i++) {\n const platformId = file.getUint16();\n const encodingId = file.getUint16();\n const offset = file.getInt32() >>> 0;\n let useTable = false;\n\n // Sometimes there are multiple of the same type of table. Default\n // to choosing the first table and skip the rest.\n if (\n potentialTable &&\n potentialTable.platformId === platformId &&\n potentialTable.encodingId === encodingId\n ) {\n continue;\n }\n\n if (\n platformId === 0 &&\n (encodingId === /* Unicode Default */ 0 ||\n encodingId === /* Unicode 1.1 */ 1 ||\n encodingId === /* Unicode BMP */ 3)\n ) {\n useTable = true;\n // Continue the loop since there still may be a higher priority\n // table.\n } else if (platformId === 1 && encodingId === 0) {\n useTable = true;\n // Continue the loop since there still may be a higher priority\n // table.\n } else if (\n platformId === 3 &&\n encodingId === 1 &&\n (hasEncoding || !potentialTable)\n ) {\n useTable = true;\n if (!isSymbolicFont) {\n canBreak = true;\n }\n } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n useTable = true;\n\n let correctlySorted = true;\n if (i < numTables - 1) {\n const nextBytes = file.peekBytes(2),\n nextPlatformId = int16(nextBytes[0], nextBytes[1]);\n if (nextPlatformId < platformId) {\n correctlySorted = false;\n }\n }\n if (correctlySorted) {\n canBreak = true;\n }\n }\n\n if (useTable) {\n potentialTable = {\n platformId,\n encodingId,\n offset,\n };\n }\n if (canBreak) {\n break;\n }\n }\n\n if (potentialTable) {\n file.pos = start + potentialTable.offset;\n }\n if (!potentialTable || file.peekByte() === -1) {\n warn(\"Could not find a preferred cmap table.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n\n const format = file.getUint16();\n file.skip(2 + 2); // length + language\n\n let hasShortCmap = false;\n const mappings = [];\n let j, glyphId;\n\n // TODO(mack): refactor this cmap subtable reading logic out\n if (format === 0) {\n for (j = 0; j < 256; j++) {\n const index = file.getByte();\n if (!index) {\n continue;\n }\n mappings.push({\n charCode: j,\n glyphId: index,\n });\n }\n hasShortCmap = true;\n } else if (format === 2) {\n const subHeaderKeys = [];\n let maxSubHeaderKey = 0;\n // Read subHeaderKeys. If subHeaderKeys[i] === 0, then i is a\n // single-byte character. Otherwise, i is the first byte of a\n // multi-byte character, and the value is 8*index into\n // subHeaders.\n for (let i = 0; i < 256; i++) {\n const subHeaderKey = file.getUint16() >> 3;\n subHeaderKeys.push(subHeaderKey);\n maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\n }\n // Read subHeaders. The number of entries is determined\n // dynamically based on the subHeaderKeys found above.\n const subHeaders = [];\n for (let i = 0; i <= maxSubHeaderKey; i++) {\n subHeaders.push({\n firstCode: file.getUint16(),\n entryCount: file.getUint16(),\n idDelta: signedInt16(file.getByte(), file.getByte()),\n idRangePos: file.pos + file.getUint16(),\n });\n }\n for (let i = 0; i < 256; i++) {\n if (subHeaderKeys[i] === 0) {\n // i is a single-byte code.\n file.pos = subHeaders[0].idRangePos + 2 * i;\n glyphId = file.getUint16();\n mappings.push({\n charCode: i,\n glyphId,\n });\n } else {\n // i is the first byte of a two-byte code.\n const s = subHeaders[subHeaderKeys[i]];\n for (j = 0; j < s.entryCount; j++) {\n const charCode = (i << 8) + j + s.firstCode;\n file.pos = s.idRangePos + 2 * j;\n glyphId = file.getUint16();\n if (glyphId !== 0) {\n glyphId = (glyphId + s.idDelta) % 65536;\n }\n mappings.push({\n charCode,\n glyphId,\n });\n }\n }\n }\n } else if (format === 4) {\n // re-creating the table in format 4 since the encoding\n // might be changed\n const segCount = file.getUint16() >> 1;\n file.skip(6); // skipping range fields\n const segments = [];\n let segIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments.push({ end: file.getUint16() });\n }\n file.skip(2);\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].start = file.getUint16();\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].delta = file.getUint16();\n }\n\n let offsetsCount = 0,\n offsetIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n const rangeOffset = file.getUint16();\n if (!rangeOffset) {\n segment.offsetIndex = -1;\n continue;\n }\n\n offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n segment.offsetIndex = offsetIndex;\n offsetsCount = Math.max(\n offsetsCount,\n offsetIndex + segment.end - segment.start + 1\n );\n }\n\n const offsets = [];\n for (j = 0; j < offsetsCount; j++) {\n offsets.push(file.getUint16());\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n start = segment.start;\n const end = segment.end;\n const delta = segment.delta;\n offsetIndex = segment.offsetIndex;\n\n for (j = start; j <= end; j++) {\n if (j === 0xffff) {\n continue;\n }\n\n glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n glyphId = (glyphId + delta) & 0xffff;\n mappings.push({\n charCode: j,\n glyphId,\n });\n }\n }\n } else if (format === 6) {\n // Format 6 is a 2-bytes dense mapping, which means the font data\n // lives glue together even if they are pretty far in the unicode\n // table. (This looks weird, so I can have missed something), this\n // works on Linux but seems to fails on Mac so let's rewrite the\n // cmap table to a 3-1-4 style\n const firstCode = file.getUint16();\n const entryCount = file.getUint16();\n\n for (j = 0; j < entryCount; j++) {\n glyphId = file.getUint16();\n const charCode = firstCode + j;\n\n mappings.push({\n charCode,\n glyphId,\n });\n }\n } else {\n warn(\"cmap table has unsupported format: \" + format);\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n\n // removing duplicate entries\n mappings.sort(function (a, b) {\n return a.charCode - b.charCode;\n });\n for (let i = 1; i < mappings.length; i++) {\n if (mappings[i - 1].charCode === mappings[i].charCode) {\n mappings.splice(i, 1);\n i--;\n }\n }\n\n return {\n platformId: potentialTable.platformId,\n encodingId: potentialTable.encodingId,\n mappings,\n hasShortCmap,\n };\n }\n\n function sanitizeMetrics(\n file,\n header,\n metrics,\n headTable,\n numGlyphs,\n dupFirstEntry\n ) {\n if (!header) {\n if (metrics) {\n metrics.data = null;\n }\n return;\n }\n\n file.pos = (file.start ? file.start : 0) + header.offset;\n file.pos += 4; // version\n file.pos += 2; // ascent\n file.pos += 2; // descent\n file.pos += 2; // linegap\n file.pos += 2; // adv_width_max\n file.pos += 2; // min_sb1\n file.pos += 2; // min_sb2\n file.pos += 2; // max_extent\n file.pos += 2; // caret_slope_rise\n file.pos += 2; // caret_slope_run\n const caretOffset = file.getUint16();\n file.pos += 8; // reserved\n file.pos += 2; // format\n let numOfMetrics = file.getUint16();\n\n if (caretOffset !== 0) {\n const macStyle = int16(headTable.data[44], headTable.data[45]);\n if (!(macStyle & 2)) {\n // Suppress OTS warnings about the `caretOffset` in the hhea-table.\n header.data[22] = 0;\n header.data[23] = 0;\n }\n }\n\n if (numOfMetrics > numGlyphs) {\n info(\n `The numOfMetrics (${numOfMetrics}) should not be ` +\n `greater than the numGlyphs (${numGlyphs}).`\n );\n // Reduce numOfMetrics if it is greater than numGlyphs\n numOfMetrics = numGlyphs;\n header.data[34] = (numOfMetrics & 0xff00) >> 8;\n header.data[35] = numOfMetrics & 0x00ff;\n }\n\n const numOfSidebearings = numGlyphs - numOfMetrics;\n const numMissing =\n numOfSidebearings - ((metrics.length - numOfMetrics * 4) >> 1);\n\n if (numMissing > 0) {\n // For each missing glyph, we set both the width and lsb to 0 (zero).\n // Since we need to add two properties for each glyph, this explains\n // the use of |numMissing * 2| when initializing the typed array.\n const entries = new Uint8Array(metrics.length + numMissing * 2);\n entries.set(metrics.data);\n if (dupFirstEntry) {\n // Set the sidebearing value of the duplicated glyph.\n entries[metrics.length] = metrics.data[2];\n entries[metrics.length + 1] = metrics.data[3];\n }\n metrics.data = entries;\n }\n }\n\n function sanitizeGlyph(\n source,\n sourceStart,\n sourceEnd,\n dest,\n destStart,\n hintsValid\n ) {\n const glyphProfile = {\n length: 0,\n sizeOfInstructions: 0,\n };\n if (sourceEnd - sourceStart <= 12) {\n // glyph with data less than 12 is invalid one\n return glyphProfile;\n }\n const glyf = source.subarray(sourceStart, sourceEnd);\n let contoursCount = signedInt16(glyf[0], glyf[1]);\n if (contoursCount < 0) {\n // OTS doesn't like contour count to be less than -1.\n contoursCount = -1;\n writeSignedInt16(glyf, 0, contoursCount);\n // complex glyph, writing as is\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n let i,\n j = 10,\n flagsCount = 0;\n for (i = 0; i < contoursCount; i++) {\n const endPoint = (glyf[j] << 8) | glyf[j + 1];\n flagsCount = endPoint + 1;\n j += 2;\n }\n // skipping instructions\n const instructionsStart = j;\n const instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n glyphProfile.sizeOfInstructions = instructionsLength;\n j += 2 + instructionsLength;\n const instructionsEnd = j;\n // validating flags\n let coordinatesLength = 0;\n for (i = 0; i < flagsCount; i++) {\n const flag = glyf[j++];\n if (flag & 0xc0) {\n // reserved flags must be zero, cleaning up\n glyf[j - 1] = flag & 0x3f;\n }\n let xLength = 2;\n if (flag & 2) {\n xLength = 1;\n } else if (flag & 16) {\n xLength = 0;\n }\n let yLength = 2;\n if (flag & 4) {\n yLength = 1;\n } else if (flag & 32) {\n yLength = 0;\n }\n const xyLength = xLength + yLength;\n coordinatesLength += xyLength;\n if (flag & 8) {\n const repeat = glyf[j++];\n i += repeat;\n coordinatesLength += repeat * xyLength;\n }\n }\n // glyph without coordinates will be rejected\n if (coordinatesLength === 0) {\n return glyphProfile;\n }\n let glyphDataLength = j + coordinatesLength;\n if (glyphDataLength > glyf.length) {\n // not enough data for coordinates\n return glyphProfile;\n }\n if (!hintsValid && instructionsLength > 0) {\n dest.set(glyf.subarray(0, instructionsStart), destStart);\n dest.set([0, 0], destStart + instructionsStart);\n dest.set(\n glyf.subarray(instructionsEnd, glyphDataLength),\n destStart + instructionsStart + 2\n );\n glyphDataLength -= instructionsLength;\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = (glyphDataLength + 3) & ~3;\n }\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n if (glyf.length - glyphDataLength > 3) {\n // truncating and aligning to 4 bytes the long glyph data\n glyphDataLength = (glyphDataLength + 3) & ~3;\n dest.set(glyf.subarray(0, glyphDataLength), destStart);\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n // glyph data is fine\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n function sanitizeHead(head, numGlyphs, locaLength) {\n const data = head.data;\n\n // Validate version:\n // Should always be 0x00010000\n const version = int32(data[0], data[1], data[2], data[3]);\n if (version >> 16 !== 1) {\n info(\"Attempting to fix invalid version in head table: \" + version);\n data[0] = 0;\n data[1] = 1;\n data[2] = 0;\n data[3] = 0;\n }\n\n const indexToLocFormat = int16(data[50], data[51]);\n if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n info(\n \"Attempting to fix invalid indexToLocFormat in head table: \" +\n indexToLocFormat\n );\n\n // The value of indexToLocFormat should be 0 if the loca table\n // consists of short offsets, and should be 1 if the loca table\n // consists of long offsets.\n //\n // The number of entries in the loca table should be numGlyphs + 1.\n //\n // Using this information, we can work backwards to deduce if the\n // size of each offset in the loca table, and thus figure out the\n // appropriate value for indexToLocFormat.\n\n const numGlyphsPlusOne = numGlyphs + 1;\n if (locaLength === numGlyphsPlusOne << 1) {\n // 0x0000 indicates the loca table consists of short offsets\n data[50] = 0;\n data[51] = 0;\n } else if (locaLength === numGlyphsPlusOne << 2) {\n // 0x0001 indicates the loca table consists of long offsets\n data[50] = 0;\n data[51] = 1;\n } else {\n throw new FormatError(\n \"Could not fix indexToLocFormat: \" + indexToLocFormat\n );\n }\n }\n }\n\n function sanitizeGlyphLocations(\n loca,\n glyf,\n numGlyphs,\n isGlyphLocationsLong,\n hintsValid,\n dupFirstEntry,\n maxSizeOfInstructions\n ) {\n let itemSize, itemDecode, itemEncode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = function fontItemDecodeLong(data, offset) {\n return (\n (data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]\n );\n };\n itemEncode = function fontItemEncodeLong(data, offset, value) {\n data[offset] = (value >>> 24) & 0xff;\n data[offset + 1] = (value >> 16) & 0xff;\n data[offset + 2] = (value >> 8) & 0xff;\n data[offset + 3] = value & 0xff;\n };\n } else {\n itemSize = 2;\n itemDecode = function fontItemDecode(data, offset) {\n return (data[offset] << 9) | (data[offset + 1] << 1);\n };\n itemEncode = function fontItemEncode(data, offset, value) {\n data[offset] = (value >> 9) & 0xff;\n data[offset + 1] = (value >> 1) & 0xff;\n };\n }\n // The first glyph is duplicated.\n const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n const locaDataSize = itemSize * (1 + numGlyphsOut);\n // Resize loca table to account for duplicated glyph.\n const locaData = new Uint8Array(locaDataSize);\n locaData.set(loca.data.subarray(0, locaDataSize));\n loca.data = locaData;\n // removing the invalid glyphs\n const oldGlyfData = glyf.data;\n const oldGlyfDataLength = oldGlyfData.length;\n const newGlyfData = new Uint8Array(oldGlyfDataLength);\n\n // The spec says the offsets should be in ascending order, however\n // this is not true for some fonts or they use the offset of 0 to mark a\n // glyph as missing. OTS requires the offsets to be in order and not to\n // be zero, so we must sort and rebuild the loca table and potentially\n // re-arrange the glyf data.\n let i, j;\n const locaEntries = [];\n // There are numGlyphs + 1 loca table entries.\n for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n let offset = itemDecode(locaData, j);\n if (offset > oldGlyfDataLength) {\n offset = oldGlyfDataLength;\n }\n locaEntries.push({\n index: i,\n offset,\n endOffset: 0,\n });\n }\n locaEntries.sort((a, b) => {\n return a.offset - b.offset;\n });\n // Now the offsets are sorted, calculate the end offset of each glyph.\n // The last loca entry's endOffset is not calculated since it's the end\n // of the data and will be stored on the previous entry's endOffset.\n for (i = 0; i < numGlyphs; i++) {\n locaEntries[i].endOffset = locaEntries[i + 1].offset;\n }\n // Re-sort so glyphs aren't out of order.\n locaEntries.sort((a, b) => {\n return a.index - b.index;\n });\n\n const missingGlyphs = Object.create(null);\n let writeOffset = 0;\n itemEncode(locaData, 0, writeOffset);\n for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n const glyphProfile = sanitizeGlyph(\n oldGlyfData,\n locaEntries[i].offset,\n locaEntries[i].endOffset,\n newGlyfData,\n writeOffset,\n hintsValid\n );\n const newLength = glyphProfile.length;\n if (newLength === 0) {\n missingGlyphs[i] = true;\n }\n if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n }\n writeOffset += newLength;\n itemEncode(locaData, j, writeOffset);\n }\n\n if (writeOffset === 0) {\n // glyf table cannot be empty -- redoing the glyf and loca tables\n // to have single glyph with one point\n const simpleGlyph = new Uint8Array([\n 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0,\n ]);\n for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n itemEncode(locaData, j, simpleGlyph.length);\n }\n glyf.data = simpleGlyph;\n } else if (dupFirstEntry) {\n // Browsers will not display a glyph at position 0. Typically glyph 0\n // is notdef, but a number of fonts put a valid glyph there so it must\n // be duplicated and appended.\n const firstEntryLength = itemDecode(locaData, itemSize);\n if (newGlyfData.length > firstEntryLength + writeOffset) {\n glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n } else {\n glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n glyf.data.set(newGlyfData.subarray(0, writeOffset));\n }\n glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n itemEncode(\n loca.data,\n locaData.length - itemSize,\n writeOffset + firstEntryLength\n );\n } else {\n glyf.data = newGlyfData.subarray(0, writeOffset);\n }\n return {\n missingGlyphs,\n maxSizeOfInstructions,\n };\n }\n\n function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n const start = (font.start ? font.start : 0) + post.offset;\n font.pos = start;\n\n const length = post.length,\n end = start + length;\n const version = font.getInt32();\n // skip rest to the tables\n font.skip(28);\n\n let glyphNames;\n let valid = true;\n let i;\n\n switch (version) {\n case 0x00010000:\n glyphNames = MacStandardGlyphOrdering;\n break;\n case 0x00020000:\n const numGlyphs = font.getUint16();\n if (numGlyphs !== maxpNumGlyphs) {\n valid = false;\n break;\n }\n const glyphNameIndexes = [];\n for (i = 0; i < numGlyphs; ++i) {\n const index = font.getUint16();\n if (index >= 32768) {\n valid = false;\n break;\n }\n glyphNameIndexes.push(index);\n }\n if (!valid) {\n break;\n }\n const customNames = [],\n strBuf = [];\n while (font.pos < end) {\n const stringLength = font.getByte();\n strBuf.length = stringLength;\n for (i = 0; i < stringLength; ++i) {\n strBuf[i] = String.fromCharCode(font.getByte());\n }\n customNames.push(strBuf.join(\"\"));\n }\n glyphNames = [];\n for (i = 0; i < numGlyphs; ++i) {\n const j = glyphNameIndexes[i];\n if (j < 258) {\n glyphNames.push(MacStandardGlyphOrdering[j]);\n continue;\n }\n glyphNames.push(customNames[j - 258]);\n }\n break;\n case 0x00030000:\n break;\n default:\n warn(\"Unknown/unsupported post table version \" + version);\n valid = false;\n if (propertiesObj.defaultEncoding) {\n glyphNames = propertiesObj.defaultEncoding;\n }\n break;\n }\n propertiesObj.glyphNames = glyphNames;\n return valid;\n }\n\n function readNameTable(nameTable) {\n const start = (font.start ? font.start : 0) + nameTable.offset;\n font.pos = start;\n\n const names = [[], []];\n const length = nameTable.length,\n end = start + length;\n const format = font.getUint16();\n const FORMAT_0_HEADER_LENGTH = 6;\n if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n // unsupported name table format or table \"too\" small\n return names;\n }\n const numRecords = font.getUint16();\n const stringsStart = font.getUint16();\n const records = [];\n const NAME_RECORD_LENGTH = 12;\n let i, ii;\n\n for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n const r = {\n platform: font.getUint16(),\n encoding: font.getUint16(),\n language: font.getUint16(),\n name: font.getUint16(),\n length: font.getUint16(),\n offset: font.getUint16(),\n };\n // using only Macintosh and Windows platform/encoding names\n if (\n (r.platform === 1 && r.encoding === 0 && r.language === 0) ||\n (r.platform === 3 && r.encoding === 1 && r.language === 0x409)\n ) {\n records.push(r);\n }\n }\n for (i = 0, ii = records.length; i < ii; i++) {\n const record = records[i];\n if (record.length <= 0) {\n continue; // Nothing to process, ignoring.\n }\n const pos = start + stringsStart + record.offset;\n if (pos + record.length > end) {\n continue; // outside of name table, ignoring\n }\n font.pos = pos;\n const nameIndex = record.name;\n if (record.encoding) {\n // unicode\n let str = \"\";\n for (let j = 0, jj = record.length; j < jj; j += 2) {\n str += String.fromCharCode(font.getUint16());\n }\n names[1][nameIndex] = str;\n } else {\n names[0][nameIndex] = font.getString(record.length);\n }\n }\n return names;\n }\n\n // prettier-ignore\n const TTOpsStackDeltas = [\n 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\n -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\n 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\n 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\n 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\n -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\n -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\n -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n // 0xC0-DF == -1 and 0xE0-FF == -2\n\n function sanitizeTTProgram(table, ttContext) {\n let data = table.data;\n let i = 0,\n j,\n n,\n b,\n funcId,\n pc,\n lastEndf = 0,\n lastDeff = 0;\n const stack = [];\n const callstack = [];\n const functionsCalled = [];\n let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n let inFDEF = false,\n ifLevel = 0,\n inELSE = 0;\n for (let ii = data.length; i < ii; ) {\n const op = data[i++];\n // The TrueType instruction set docs can be found at\n // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html\n if (op === 0x40) {\n // NPUSHB - pushes n bytes\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if (op === 0x41) {\n // NPUSHW - pushes n words\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push((b << 8) | data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb0) {\n // PUSHB - pushes bytes\n n = op - 0xb0 + 1;\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb8) {\n // PUSHW - pushes words\n n = op - 0xb8 + 1;\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push((b << 8) | data[i++]);\n }\n }\n } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n // CALL\n if (!inFDEF && !inELSE) {\n // collecting information about which functions are used\n funcId = stack[stack.length - 1];\n if (isNaN(funcId)) {\n info(\"TT: CALL empty stack (or invalid entry).\");\n } else {\n ttContext.functionsUsed[funcId] = true;\n if (funcId in ttContext.functionsStackDeltas) {\n const newStackLength =\n stack.length + ttContext.functionsStackDeltas[funcId];\n if (newStackLength < 0) {\n warn(\"TT: CALL invalid functions stack delta.\");\n ttContext.hintsValid = false;\n return;\n }\n stack.length = newStackLength;\n } else if (\n funcId in ttContext.functionsDefined &&\n !functionsCalled.includes(funcId)\n ) {\n callstack.push({ data, i, stackTop: stack.length - 1 });\n functionsCalled.push(funcId);\n pc = ttContext.functionsDefined[funcId];\n if (!pc) {\n warn(\"TT: CALL non-existent function\");\n ttContext.hintsValid = false;\n return;\n }\n data = pc.data;\n i = pc.i;\n }\n }\n }\n } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n // FDEF\n if (inFDEF || inELSE) {\n warn(\"TT: nested FDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n // collecting information about which functions are defined\n lastDeff = i;\n funcId = stack.pop();\n ttContext.functionsDefined[funcId] = { data, i };\n } else if (op === 0x2d) {\n // ENDF - end of function\n if (inFDEF) {\n inFDEF = false;\n lastEndf = i;\n } else {\n pc = callstack.pop();\n if (!pc) {\n warn(\"TT: ENDF bad stack\");\n ttContext.hintsValid = false;\n return;\n }\n funcId = functionsCalled.pop();\n data = pc.data;\n i = pc.i;\n ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\n }\n } else if (op === 0x89) {\n // IDEF - instruction definition\n if (inFDEF || inELSE) {\n warn(\"TT: nested IDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n // recording it as a function to track ENDF\n lastDeff = i;\n } else if (op === 0x58) {\n // IF\n ++ifLevel;\n } else if (op === 0x1b) {\n // ELSE\n inELSE = ifLevel;\n } else if (op === 0x59) {\n // EIF\n if (inELSE === ifLevel) {\n inELSE = 0;\n }\n --ifLevel;\n } else if (op === 0x1c) {\n // JMPR\n if (!inFDEF && !inELSE) {\n const offset = stack[stack.length - 1];\n // only jumping forward to prevent infinite loop\n if (offset > 0) {\n i += offset - 1;\n }\n }\n }\n // Adjusting stack not extactly, but just enough to get function id\n if (!inFDEF && !inELSE) {\n let stackDelta = 0;\n if (op <= 0x8e) {\n stackDelta = TTOpsStackDeltas[op];\n } else if (op >= 0xc0 && op <= 0xdf) {\n stackDelta = -1;\n } else if (op >= 0xe0) {\n stackDelta = -2;\n }\n if (op >= 0x71 && op <= 0x75) {\n n = stack.pop();\n if (!isNaN(n)) {\n stackDelta = -n * 2;\n }\n }\n while (stackDelta < 0 && stack.length > 0) {\n stack.pop();\n stackDelta++;\n }\n while (stackDelta > 0) {\n stack.push(NaN); // pushing any number into stack\n stackDelta--;\n }\n }\n }\n ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n const content = [data];\n if (i > data.length) {\n content.push(new Uint8Array(i - data.length));\n }\n if (lastDeff > lastEndf) {\n warn(\"TT: complementing a missing function tail\");\n // new function definition started, but not finished\n // complete function by [CLEAR, ENDF]\n content.push(new Uint8Array([0x22, 0x2d]));\n }\n foldTTTable(table, content);\n }\n\n function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n if (ttContext.tooComplexToFollowFunctions) {\n return;\n }\n if (ttContext.functionsDefined.length > maxFunctionDefs) {\n warn(\"TT: more functions defined than expected\");\n ttContext.hintsValid = false;\n return;\n }\n for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n if (j > maxFunctionDefs) {\n warn(\"TT: invalid function id: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n warn(\"TT: undefined function: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n }\n }\n\n function foldTTTable(table, content) {\n if (content.length > 1) {\n // concatenating the content items\n let newLength = 0;\n let j, jj;\n for (j = 0, jj = content.length; j < jj; j++) {\n newLength += content[j].length;\n }\n newLength = (newLength + 3) & ~3;\n const result = new Uint8Array(newLength);\n let pos = 0;\n for (j = 0, jj = content.length; j < jj; j++) {\n result.set(content[j], pos);\n pos += content[j].length;\n }\n table.data = result;\n table.length = newLength;\n }\n }\n\n function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n const ttContext = {\n functionsDefined: [],\n functionsUsed: [],\n functionsStackDeltas: [],\n tooComplexToFollowFunctions: false,\n hintsValid: true,\n };\n if (fpgm) {\n sanitizeTTProgram(fpgm, ttContext);\n }\n if (prep) {\n sanitizeTTProgram(prep, ttContext);\n }\n if (fpgm) {\n checkInvalidFunctions(ttContext, maxFunctionDefs);\n }\n if (cvt && cvt.length & 1) {\n const cvtData = new Uint8Array(cvt.length + 1);\n cvtData.set(cvt.data);\n cvt.data = cvtData;\n }\n return ttContext.hintsValid;\n }\n\n // The following steps modify the original font data, making copy\n font = new Stream(new Uint8Array(font.getBytes()));\n\n let header, tables;\n if (isTrueTypeCollectionFile(font)) {\n const ttcData = readTrueTypeCollectionData(font, this.name);\n header = ttcData.header;\n tables = ttcData.tables;\n } else {\n header = readOpenTypeHeader(font);\n tables = readTables(font, header.numTables);\n }\n let cff, cffFile;\n\n const isTrueType = !tables[\"CFF \"];\n if (!isTrueType) {\n const isComposite =\n properties.composite &&\n ((properties.cidToGidMap || []).length > 0 ||\n !(properties.cMap instanceof IdentityCMap));\n // OpenType font (skip composite fonts with non-default glyph mapping).\n if (\n (header.version === \"OTTO\" && !isComposite) ||\n !tables.head ||\n !tables.hhea ||\n !tables.maxp ||\n !tables.post\n ) {\n // No major tables: throwing everything at `CFFFont`.\n cffFile = new Stream(tables[\"CFF \"].data);\n cff = new CFFFont(cffFile, properties);\n\n adjustWidths(properties);\n\n return this.convert(name, cff, properties);\n }\n\n delete tables.glyf;\n delete tables.loca;\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n this.isOpenType = true;\n } else {\n if (!tables.loca) {\n throw new FormatError('Required \"loca\" table is not found');\n }\n if (!tables.glyf) {\n warn('Required \"glyf\" table is not found -- trying to recover.');\n // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\n tables.glyf = {\n tag: \"glyf\",\n data: new Uint8Array(0),\n };\n }\n this.isOpenType = false;\n }\n\n if (!tables.maxp) {\n throw new FormatError('Required \"maxp\" table is not found');\n }\n\n font.pos = (font.start || 0) + tables.maxp.offset;\n const version = font.getInt32();\n const numGlyphs = font.getUint16();\n\n if (\n properties.scaleFactors &&\n properties.scaleFactors.length === numGlyphs &&\n isTrueType\n ) {\n const { scaleFactors } = properties;\n const isGlyphLocationsLong = int16(\n tables.head.data[50],\n tables.head.data[51]\n );\n\n const glyphs = new GlyfTable({\n glyfTable: tables.glyf.data,\n isGlyphLocationsLong,\n locaTable: tables.loca.data,\n numGlyphs,\n });\n glyphs.scale(scaleFactors);\n\n const { glyf, loca, isLocationLong } = glyphs.write();\n tables.glyf.data = glyf;\n tables.loca.data = loca;\n\n if (isLocationLong !== !!isGlyphLocationsLong) {\n tables.head.data[50] = 0;\n tables.head.data[51] = isLocationLong ? 1 : 0;\n }\n\n const metrics = tables.hmtx.data;\n\n for (let i = 0; i < numGlyphs; i++) {\n const j = 4 * i;\n const advanceWidth = Math.round(\n scaleFactors[i] * int16(metrics[j], metrics[j + 1])\n );\n metrics[j] = (advanceWidth >> 8) & 0xff;\n metrics[j + 1] = advanceWidth & 0xff;\n const lsb = Math.round(\n scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])\n );\n writeSignedInt16(metrics, j + 2, lsb);\n }\n }\n\n // Glyph 0 is duplicated and appended.\n let numGlyphsOut = numGlyphs + 1;\n let dupFirstEntry = true;\n if (numGlyphsOut > 0xffff) {\n dupFirstEntry = false;\n numGlyphsOut = numGlyphs;\n warn(\"Not enough space in glyfs to duplicate first glyph.\");\n }\n let maxFunctionDefs = 0;\n let maxSizeOfInstructions = 0;\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n // maxZones can be invalid\n font.pos += 8;\n const maxZones = font.getUint16();\n if (maxZones > 2) {\n // reset to 2 if font has invalid maxZones\n tables.maxp.data[14] = 0;\n tables.maxp.data[15] = 2;\n }\n font.pos += 4;\n maxFunctionDefs = font.getUint16();\n font.pos += 4;\n maxSizeOfInstructions = font.getUint16();\n }\n\n tables.maxp.data[4] = numGlyphsOut >> 8;\n tables.maxp.data[5] = numGlyphsOut & 255;\n\n const hintsValid = sanitizeTTPrograms(\n tables.fpgm,\n tables.prep,\n tables[\"cvt \"],\n maxFunctionDefs\n );\n if (!hintsValid) {\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n }\n\n // Ensure the hmtx table contains the advance width and\n // sidebearings information for numGlyphs in the maxp table\n sanitizeMetrics(\n font,\n tables.hhea,\n tables.hmtx,\n tables.head,\n numGlyphsOut,\n dupFirstEntry\n );\n\n if (!tables.head) {\n throw new FormatError('Required \"head\" table is not found');\n }\n\n sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n\n let missingGlyphs = Object.create(null);\n if (isTrueType) {\n const isGlyphLocationsLong = int16(\n tables.head.data[50],\n tables.head.data[51]\n );\n const glyphsInfo = sanitizeGlyphLocations(\n tables.loca,\n tables.glyf,\n numGlyphs,\n isGlyphLocationsLong,\n hintsValid,\n dupFirstEntry,\n maxSizeOfInstructions\n );\n missingGlyphs = glyphsInfo.missingGlyphs;\n\n // Some fonts have incorrect maxSizeOfInstructions values, so we use\n // the computed value instead.\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n }\n }\n if (!tables.hhea) {\n throw new FormatError('Required \"hhea\" table is not found');\n }\n\n // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\n // Sometimes it's 0. That needs to be fixed\n if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n tables.hhea.data[10] = 0xff;\n tables.hhea.data[11] = 0xff;\n }\n\n // Extract some more font properties from the OpenType head and\n // hhea tables; yMin and descent value are always negative.\n const metricsOverride = {\n unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n yMax: int16(tables.head.data[42], tables.head.data[43]),\n yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\n descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]),\n };\n\n // PDF FontDescriptor metrics lie -- using data from actual font.\n this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;\n\n if (this.cssFontInfo && this.cssFontInfo.lineHeight) {\n this.lineHeight = this.cssFontInfo.metrics.lineHeight;\n this.lineGap = this.cssFontInfo.metrics.lineGap;\n } else {\n this.lineHeight = this.ascent - this.descent + this.lineGap;\n }\n\n // The 'post' table has glyphs names.\n if (tables.post) {\n readPostScriptTable(tables.post, properties, numGlyphs);\n }\n\n // The original 'post' table is not needed, replace it.\n tables.post = {\n tag: \"post\",\n data: createPostTable(properties),\n };\n\n const charCodeToGlyphId = [];\n\n // Helper function to try to skip mapping of empty glyphs.\n function hasGlyph(glyphId) {\n return !missingGlyphs[glyphId];\n }\n\n if (properties.composite) {\n const cidToGidMap = properties.cidToGidMap || [];\n const isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n properties.cMap.forEach(function (charCode, cid) {\n if (typeof cid === \"string\") {\n cid = convertCidString(charCode, cid, /* shouldThrow = */ true);\n }\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n let glyphId = -1;\n if (isCidToGidMapEmpty) {\n glyphId = cid;\n } else if (cidToGidMap[cid] !== undefined) {\n glyphId = cidToGidMap[cid];\n }\n\n if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n charCodeToGlyphId[charCode] = glyphId;\n }\n });\n } else {\n // Most of the following logic in this code branch is based on the\n // 9.6.6.4 of the PDF spec.\n const cmapTable = readCmapTable(\n tables.cmap,\n font,\n this.isSymbolicFont,\n properties.hasEncoding\n );\n const cmapPlatformId = cmapTable.platformId;\n const cmapEncodingId = cmapTable.encodingId;\n const cmapMappings = cmapTable.mappings;\n const cmapMappingsLength = cmapMappings.length;\n let baseEncoding = [],\n forcePostTable = false;\n if (\n properties.hasEncoding &&\n (properties.baseEncodingName === \"MacRomanEncoding\" ||\n properties.baseEncodingName === \"WinAnsiEncoding\")\n ) {\n baseEncoding = getEncoding(properties.baseEncodingName);\n }\n\n // If the font has an encoding and is not symbolic then follow the rules\n // in section 9.6.6.4 of the spec on how to map 3,1 and 1,0 cmaps.\n if (\n properties.hasEncoding &&\n !this.isSymbolicFont &&\n ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\n (cmapPlatformId === 1 && cmapEncodingId === 0))\n ) {\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (let charCode = 0; charCode < 256; charCode++) {\n let glyphName;\n if (this.differences[charCode] !== undefined) {\n glyphName = this.differences[charCode];\n } else if (baseEncoding.length && baseEncoding[charCode] !== \"\") {\n glyphName = baseEncoding[charCode];\n } else {\n glyphName = StandardEncoding[charCode];\n }\n if (!glyphName) {\n continue;\n }\n // Ensure that non-standard glyph names are resolved to valid ones.\n const standardGlyphName = recoverGlyphName(\n glyphName,\n glyphsUnicodeMap\n );\n\n let unicodeOrCharCode;\n if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n // TODO: the encoding needs to be updated with mac os table.\n unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n }\n\n if (unicodeOrCharCode === undefined) {\n // Not a valid glyph name, fallback to using the /ToUnicode map\n // when no post-table exists (fixes issue13316_reduced.pdf).\n if (\n !properties.glyphNames &&\n properties.hasIncludedToUnicodeMap &&\n !(this.toUnicode instanceof IdentityToUnicodeMap)\n ) {\n const unicode = this.toUnicode.get(charCode);\n if (unicode) {\n unicodeOrCharCode = unicode.codePointAt(0);\n }\n }\n\n if (unicodeOrCharCode === undefined) {\n continue; // No valid glyph mapping found.\n }\n }\n\n for (let i = 0; i < cmapMappingsLength; ++i) {\n if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n continue;\n }\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n break;\n }\n }\n } else if (cmapPlatformId === 0) {\n // Default Unicode semantics, use the charcodes as is.\n for (let i = 0; i < cmapMappingsLength; ++i) {\n charCodeToGlyphId[cmapMappings[i].charCode] = cmapMappings[i].glyphId;\n }\n // Always prefer the BaseEncoding/Differences arrays, when they exist\n // (fixes issue13433.pdf).\n forcePostTable = true;\n } else {\n // When there is only a (1, 0) cmap table, the char code is a single\n // byte and it is used directly as the char code.\n\n // When a (3, 0) cmap table is present, it is used instead but the\n // spec has special rules for char codes in the range of 0xF000 to\n // 0xF0FF and it says the (3, 0) table should map the values from\n // the (1, 0) table by prepending 0xF0 to the char codes. To reverse\n // this, the upper bits of the char code are cleared, but only for the\n // special range since some PDFs have char codes outside of this range\n // (e.g. 0x2013) which when masked would overwrite other values in the\n // cmap.\n for (let i = 0; i < cmapMappingsLength; ++i) {\n let charCode = cmapMappings[i].charCode;\n if (\n cmapPlatformId === 3 &&\n charCode >= 0xf000 &&\n charCode <= 0xf0ff\n ) {\n charCode &= 0xff;\n }\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n }\n }\n\n // Last, try to map any missing charcodes using the post table.\n if (\n properties.glyphNames &&\n (baseEncoding.length || this.differences.length)\n ) {\n for (let i = 0; i < 256; ++i) {\n if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\n continue;\n }\n const glyphName = this.differences[i] || baseEncoding[i];\n if (!glyphName) {\n continue;\n }\n const glyphId = properties.glyphNames.indexOf(glyphName);\n if (glyphId > 0 && hasGlyph(glyphId)) {\n charCodeToGlyphId[i] = glyphId;\n }\n }\n }\n }\n\n if (charCodeToGlyphId.length === 0) {\n // defines at least one glyph\n charCodeToGlyphId[0] = 0;\n }\n\n // Typically glyph 0 is duplicated and the mapping must be updated, but if\n // there isn't enough room to duplicate, the glyph id is left the same. In\n // this case, glyph 0 may not work correctly, but that is better than\n // having the whole font fail.\n let glyphZeroId = numGlyphsOut - 1;\n if (!dupFirstEntry) {\n glyphZeroId = 0;\n }\n\n // When `cssFontInfo` is set, the font is used to render text in the HTML\n // view (e.g. with Xfa) so nothing must be moved in the private use area.\n if (!properties.cssFontInfo) {\n // Converting glyphs and ids into font's cmap table\n const newMapping = adjustMapping(\n charCodeToGlyphId,\n hasGlyph,\n glyphZeroId\n );\n this.toFontChar = newMapping.toFontChar;\n tables.cmap = {\n tag: \"cmap\",\n data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut),\n };\n\n if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n tables[\"OS/2\"] = {\n tag: \"OS/2\",\n data: createOS2Table(\n properties,\n newMapping.charCodeToGlyphId,\n metricsOverride\n ),\n };\n }\n }\n\n if (!isTrueType) {\n try {\n // Trying to repair CFF file\n cffFile = new Stream(tables[\"CFF \"].data);\n const parser = new CFFParser(\n cffFile,\n properties,\n SEAC_ANALYSIS_ENABLED\n );\n cff = parser.parse();\n cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(cff);\n tables[\"CFF \"].data = compiler.compile();\n } catch (e) {\n warn(\"Failed to compile font \" + properties.loadedName);\n }\n }\n\n // Re-creating 'name' table\n if (!tables.name) {\n tables.name = {\n tag: \"name\",\n data: createNameTable(this.name),\n };\n } else {\n // ... using existing 'name' table as prototype\n const namePrototype = readNameTable(tables.name);\n tables.name.data = createNameTable(name, namePrototype);\n this.psName = namePrototype[0][6] || null;\n }\n\n const builder = new OpenTypeFileBuilder(header.version);\n for (const tableTag in tables) {\n builder.addTable(tableTag, tables[tableTag].data);\n }\n return builder.toArray();\n }\n\n convert(fontName, font, properties) {\n // TODO: Check the charstring widths to determine this.\n properties.fixedPitch = false;\n\n if (properties.builtInEncoding) {\n // For Type1 fonts that do not include either `ToUnicode` or `Encoding`\n // data, attempt to use the `builtInEncoding` to improve text selection.\n adjustToUnicode(properties, properties.builtInEncoding);\n }\n\n // Type 1 fonts have a notdef inserted at the beginning, so glyph 0\n // becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\n // char strings.\n let glyphZeroId = 1;\n if (font instanceof CFFFont) {\n glyphZeroId = font.numGlyphs - 1;\n }\n const mapping = font.getGlyphMapping(properties);\n let newMapping = null;\n let newCharCodeToGlyphId = mapping;\n\n // When `cssFontInfo` is set, the font is used to render text in the HTML\n // view (e.g. with Xfa) so nothing must be moved in the private use area.\n if (!properties.cssFontInfo) {\n newMapping = adjustMapping(\n mapping,\n font.hasGlyphId.bind(font),\n glyphZeroId\n );\n this.toFontChar = newMapping.toFontChar;\n newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\n }\n const numGlyphs = font.numGlyphs;\n\n function getCharCodes(charCodeToGlyphId, glyphId) {\n let charCodes = null;\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n if (!charCodes) {\n charCodes = [];\n }\n charCodes.push(charCode | 0);\n }\n }\n return charCodes;\n }\n\n function createCharCode(charCodeToGlyphId, glyphId) {\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n return charCode | 0;\n }\n }\n newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] =\n glyphId;\n return newMapping.nextAvailableFontCharCode++;\n }\n\n const seacs = font.seacs;\n if (newMapping && SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n const charset = font.getCharset();\n const seacMap = Object.create(null);\n for (let glyphId in seacs) {\n glyphId |= 0;\n const seac = seacs[glyphId];\n const baseGlyphName = StandardEncoding[seac[2]];\n const accentGlyphName = StandardEncoding[seac[3]];\n const baseGlyphId = charset.indexOf(baseGlyphName);\n const accentGlyphId = charset.indexOf(accentGlyphName);\n if (baseGlyphId < 0 || accentGlyphId < 0) {\n continue;\n }\n const accentOffset = {\n x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\n };\n\n const charCodes = getCharCodes(mapping, glyphId);\n if (!charCodes) {\n // There's no point in mapping it if the char code was never mapped\n // to begin with.\n continue;\n }\n for (let i = 0, ii = charCodes.length; i < ii; i++) {\n const charCode = charCodes[i];\n // Find a fontCharCode that maps to the base and accent glyphs.\n // If one doesn't exists, create it.\n const charCodeToGlyphId = newMapping.charCodeToGlyphId;\n const baseFontCharCode = createCharCode(\n charCodeToGlyphId,\n baseGlyphId\n );\n const accentFontCharCode = createCharCode(\n charCodeToGlyphId,\n accentGlyphId\n );\n seacMap[charCode] = {\n baseFontCharCode,\n accentFontCharCode,\n accentOffset,\n };\n }\n }\n properties.seacMap = seacMap;\n }\n\n const unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n const builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n // PostScript Font Program\n builder.addTable(\"CFF \", font.data);\n // OS/2 and Windows Specific metrics\n builder.addTable(\"OS/2\", createOS2Table(properties, newCharCodeToGlyphId));\n // Character to glyphs mapping\n builder.addTable(\"cmap\", createCmapTable(newCharCodeToGlyphId, numGlyphs));\n // Font header\n builder.addTable(\n \"head\",\n \"\\x00\\x01\\x00\\x00\" + // Version number\n \"\\x00\\x00\\x10\\x00\" + // fontRevision\n \"\\x00\\x00\\x00\\x00\" + // checksumAdjustement\n \"\\x5F\\x0F\\x3C\\xF5\" + // magicNumber\n \"\\x00\\x00\" + // Flags\n safeString16(unitsPerEm) + // unitsPerEM\n \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // creation date\n \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // modifification date\n \"\\x00\\x00\" + // xMin\n safeString16(properties.descent) + // yMin\n \"\\x0F\\xFF\" + // xMax\n safeString16(properties.ascent) + // yMax\n string16(properties.italicAngle ? 2 : 0) + // macStyle\n \"\\x00\\x11\" + // lowestRecPPEM\n \"\\x00\\x00\" + // fontDirectionHint\n \"\\x00\\x00\" + // indexToLocFormat\n \"\\x00\\x00\"\n ); // glyphDataFormat\n\n // Horizontal header\n builder.addTable(\n \"hhea\",\n \"\\x00\\x01\\x00\\x00\" + // Version number\n safeString16(properties.ascent) + // Typographic Ascent\n safeString16(properties.descent) + // Typographic Descent\n \"\\x00\\x00\" + // Line Gap\n \"\\xFF\\xFF\" + // advanceWidthMax\n \"\\x00\\x00\" + // minLeftSidebearing\n \"\\x00\\x00\" + // minRightSidebearing\n \"\\x00\\x00\" + // xMaxExtent\n safeString16(properties.capHeight) + // caretSlopeRise\n safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + // caretSlopeRun\n \"\\x00\\x00\" + // caretOffset\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // metricDataFormat\n string16(numGlyphs)\n ); // Number of HMetrics\n\n // Horizontal metrics\n builder.addTable(\n \"hmtx\",\n (function fontFieldsHmtx() {\n const charstrings = font.charstrings;\n const cffWidths = font.cff ? font.cff.widths : null;\n let hmtx = \"\\x00\\x00\\x00\\x00\"; // Fake .notdef\n for (let i = 1, ii = numGlyphs; i < ii; i++) {\n let width = 0;\n if (charstrings) {\n const charstring = charstrings[i - 1];\n width = \"width\" in charstring ? charstring.width : 0;\n } else if (cffWidths) {\n width = Math.ceil(cffWidths[i] || 0);\n }\n hmtx += string16(width) + string16(0);\n }\n return hmtx;\n })()\n );\n\n // Maximum profile\n builder.addTable(\n \"maxp\",\n \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs) // Version number\n ); // Num of glyphs\n\n // Naming tables\n builder.addTable(\"name\", createNameTable(fontName));\n\n // PostScript information\n builder.addTable(\"post\", createPostTable(properties));\n\n return builder.toArray();\n }\n\n get spaceWidth() {\n // trying to estimate space character width\n const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n let width;\n for (let i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n const glyphName = possibleSpaceReplacements[i];\n // if possible, getting width by glyph name\n if (glyphName in this.widths) {\n width = this.widths[glyphName];\n break;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n const glyphUnicode = glyphsUnicodeMap[glyphName];\n // finding the charcode via unicodeToCID map\n let charcode = 0;\n if (this.composite && this.cMap.contains(glyphUnicode)) {\n charcode = this.cMap.lookup(glyphUnicode);\n\n if (typeof charcode === \"string\") {\n charcode = convertCidString(glyphUnicode, charcode);\n }\n }\n // ... via toUnicode map\n if (!charcode && this.toUnicode) {\n charcode = this.toUnicode.charCodeOf(glyphUnicode);\n }\n // setting it to unicode if negative or undefined\n if (charcode <= 0) {\n charcode = glyphUnicode;\n }\n // trying to get width via charcode\n width = this.widths[charcode];\n if (width) {\n break; // the non-zero width found\n }\n }\n width = width || this.defaultWidth;\n return shadow(this, \"spaceWidth\", width);\n }\n\n /**\n * @private\n */\n _charToGlyph(charcode, isSpace = false) {\n let fontCharCode, width, operatorListId;\n\n let widthCode = charcode;\n if (this.cMap && this.cMap.contains(charcode)) {\n widthCode = this.cMap.lookup(charcode);\n\n if (typeof widthCode === \"string\") {\n widthCode = convertCidString(charcode, widthCode);\n }\n }\n width = this.widths[widthCode];\n if (typeof width !== \"number\") {\n width = this.defaultWidth;\n }\n const vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n let unicode = this.toUnicode.get(charcode) || charcode;\n if (typeof unicode === \"number\") {\n unicode = String.fromCharCode(unicode);\n }\n\n let isInFont = this.toFontChar[charcode] !== undefined;\n // First try the toFontChar map, if it's not there then try falling\n // back to the char code.\n fontCharCode = this.toFontChar[charcode] || charcode;\n if (this.missingFile) {\n const glyphName =\n this.differences[charcode] || this.defaultEncoding[charcode];\n if (\n (glyphName === \".notdef\" || glyphName === \"\") &&\n this.type === \"Type1\"\n ) {\n // .notdef glyphs should be invisible in non-embedded Type1 fonts, so\n // replace them with spaces.\n fontCharCode = 0x20;\n }\n fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n }\n\n if (this.isType3Font) {\n // Font char code in this case is actually a glyph name.\n operatorListId = fontCharCode;\n }\n\n let accent = null;\n if (this.seacMap && this.seacMap[charcode]) {\n isInFont = true;\n const seac = this.seacMap[charcode];\n fontCharCode = seac.baseFontCharCode;\n accent = {\n fontChar: String.fromCodePoint(seac.accentFontCharCode),\n offset: seac.accentOffset,\n };\n }\n\n let fontChar = \"\";\n if (typeof fontCharCode === \"number\") {\n if (fontCharCode <= 0x10ffff) {\n fontChar = String.fromCodePoint(fontCharCode);\n } else {\n warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n }\n }\n\n let glyph = this._glyphCache[charcode];\n if (\n !glyph ||\n !glyph.matchesForCache(\n charcode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n )\n ) {\n glyph = new Glyph(\n charcode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n );\n this._glyphCache[charcode] = glyph;\n }\n return glyph;\n }\n\n charsToGlyphs(chars) {\n // If we translated this string before, just grab it from the cache.\n let glyphs = this._charsCache[chars];\n if (glyphs) {\n return glyphs;\n }\n glyphs = [];\n\n if (this.cMap) {\n // Composite fonts have multi-byte strings, convert the string from\n // single-byte to multi-byte.\n const c = Object.create(null),\n ii = chars.length;\n let i = 0;\n while (i < ii) {\n this.cMap.readCharCode(chars, i, c);\n const { charcode, length } = c;\n i += length;\n // Space is char with code 0x20 and length 1 in multiple-byte codes.\n const glyph = this._charToGlyph(\n charcode,\n length === 1 && chars.charCodeAt(i - 1) === 0x20\n );\n glyphs.push(glyph);\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n const charcode = chars.charCodeAt(i);\n const glyph = this._charToGlyph(charcode, charcode === 0x20);\n glyphs.push(glyph);\n }\n }\n\n // Enter the translated string into the cache.\n return (this._charsCache[chars] = glyphs);\n }\n\n /**\n * Chars can have different sizes (depends on the encoding).\n * @param {String} a string encoded with font encoding.\n * @returns {Array<Array<number>>} the positions of each char in the string.\n */\n getCharPositions(chars) {\n // This function doesn't use a cache because\n // it's called only when saving or printing.\n const positions = [];\n\n if (this.cMap) {\n const c = Object.create(null);\n let i = 0;\n while (i < chars.length) {\n this.cMap.readCharCode(chars, i, c);\n const length = c.length;\n positions.push([i, i + length]);\n i += length;\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n positions.push([i, i + 1]);\n }\n }\n\n return positions;\n }\n\n get glyphCacheValues() {\n return Object.values(this._glyphCache);\n }\n\n /**\n * Encode a js string using font encoding.\n * The resulting array contains an encoded string at even positions\n * (can be empty) and a non-encoded one at odd positions.\n * @param {String} a js string.\n * @returns {Array<String>} an array of encoded strings or non-encoded ones.\n */\n encodeString(str) {\n const buffers = [];\n const currentBuf = [];\n\n // buffers will contain: encoded, non-encoded, encoded, ...\n // currentBuf is pushed in buffers each time there is a change.\n // So when buffers.length is odd then the last string is an encoded one\n // and currentBuf contains non-encoded chars.\n const hasCurrentBufErrors = () => buffers.length % 2 === 1;\n\n const getCharCode =\n this.toUnicode instanceof IdentityToUnicodeMap\n ? unicode => this.toUnicode.charCodeOf(unicode)\n : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\n\n for (let i = 0, ii = str.length; i < ii; i++) {\n const unicode = str.codePointAt(i);\n if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {\n // unicode is represented by two uint16\n i++;\n }\n if (this.toUnicode) {\n const charCode = getCharCode(unicode);\n if (charCode !== -1) {\n if (hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n const charCodeLength = this.cMap\n ? this.cMap.getCharCodeLength(charCode)\n : 1;\n for (let j = charCodeLength - 1; j >= 0; j--) {\n currentBuf.push(String.fromCharCode((charCode >> (8 * j)) & 0xff));\n }\n continue;\n }\n }\n\n // unicode can't be encoded\n if (!hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n currentBuf.push(String.fromCodePoint(unicode));\n }\n\n buffers.push(currentBuf.join(\"\"));\n\n return buffers;\n }\n}\n\nclass ErrorFont {\n constructor(error) {\n this.error = error;\n this.loadedName = \"g_font_error\";\n this.missingFile = true;\n }\n\n charsToGlyphs() {\n return [];\n }\n\n encodeString(chars) {\n return [chars];\n }\n\n exportData(extraProperties = false) {\n return { error: this.error };\n }\n}\n\nexport { ErrorFont, Font };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FormatError,\n info,\n shadow,\n stringToBytes,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n ExpertCharset,\n ExpertSubsetCharset,\n ISOAdobeCharset,\n} from \"./charsets.js\";\nimport { ExpertEncoding, StandardEncoding } from \"./encodings.js\";\n\n// Maximum subroutine call depth of type 2 chartrings. Matches OTS.\nconst MAX_SUBR_NESTING = 10;\n\n/**\n * The CFF class takes a Type1 file and wrap it into a\n * 'Compact Font Format' which itself embed Type2 charstrings.\n */\n// prettier-ignore\nconst CFFStandardStrings = [\n \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\",\n \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\",\n \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\",\n \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\",\n \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\",\n \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\",\n \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\",\n \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\",\n \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\",\n \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\",\n \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\",\n \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\",\n \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\",\n \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\",\n \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\",\n \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\",\n \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\",\n \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\",\n \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\",\n \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\",\n \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\",\n \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\",\n \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\",\n \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\",\n \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\",\n \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\",\n \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\",\n \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\",\n \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\",\n \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\",\n \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\",\n \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\",\n \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\",\n \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\",\n \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\",\n \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\",\n \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\",\n \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\",\n \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\",\n \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\",\n \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\",\n \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\",\n \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\",\n \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\",\n \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\",\n \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\",\n \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"\n];\n\nconst NUM_STANDARD_CFF_STRINGS = 391;\n\nconst CFFParser = (function CFFParserClosure() {\n const CharstringValidationData = [\n null,\n { id: \"hstem\", min: 2, stackClearing: true, stem: true },\n null,\n { id: \"vstem\", min: 2, stackClearing: true, stem: true },\n { id: \"vmoveto\", min: 1, stackClearing: true },\n { id: \"rlineto\", min: 2, resetStack: true },\n { id: \"hlineto\", min: 1, resetStack: true },\n { id: \"vlineto\", min: 1, resetStack: true },\n { id: \"rrcurveto\", min: 6, resetStack: true },\n null,\n { id: \"callsubr\", min: 1, undefStack: true },\n { id: \"return\", min: 0, undefStack: true },\n null, // 12\n null,\n { id: \"endchar\", min: 0, stackClearing: true },\n null,\n null,\n null,\n { id: \"hstemhm\", min: 2, stackClearing: true, stem: true },\n { id: \"hintmask\", min: 0, stackClearing: true },\n { id: \"cntrmask\", min: 0, stackClearing: true },\n { id: \"rmoveto\", min: 2, stackClearing: true },\n { id: \"hmoveto\", min: 1, stackClearing: true },\n { id: \"vstemhm\", min: 2, stackClearing: true, stem: true },\n { id: \"rcurveline\", min: 8, resetStack: true },\n { id: \"rlinecurve\", min: 8, resetStack: true },\n { id: \"vvcurveto\", min: 4, resetStack: true },\n { id: \"hhcurveto\", min: 4, resetStack: true },\n null, // shortint\n { id: \"callgsubr\", min: 1, undefStack: true },\n { id: \"vhcurveto\", min: 4, resetStack: true },\n { id: \"hvcurveto\", min: 4, resetStack: true },\n ];\n const CharstringValidationData12 = [\n null,\n null,\n null,\n { id: \"and\", min: 2, stackDelta: -1 },\n { id: \"or\", min: 2, stackDelta: -1 },\n { id: \"not\", min: 1, stackDelta: 0 },\n null,\n null,\n null,\n { id: \"abs\", min: 1, stackDelta: 0 },\n {\n id: \"add\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] + stack[index - 1];\n },\n },\n {\n id: \"sub\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] - stack[index - 1];\n },\n },\n {\n id: \"div\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] / stack[index - 1];\n },\n },\n null,\n {\n id: \"neg\",\n min: 1,\n stackDelta: 0,\n stackFn: function stack_div(stack, index) {\n stack[index - 1] = -stack[index - 1];\n },\n },\n { id: \"eq\", min: 2, stackDelta: -1 },\n null,\n null,\n { id: \"drop\", min: 1, stackDelta: -1 },\n null,\n { id: \"put\", min: 2, stackDelta: -2 },\n { id: \"get\", min: 1, stackDelta: 0 },\n { id: \"ifelse\", min: 4, stackDelta: -3 },\n { id: \"random\", min: 0, stackDelta: 1 },\n {\n id: \"mul\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] * stack[index - 1];\n },\n },\n null,\n { id: \"sqrt\", min: 1, stackDelta: 0 },\n { id: \"dup\", min: 1, stackDelta: 1 },\n { id: \"exch\", min: 2, stackDelta: 0 },\n { id: \"index\", min: 2, stackDelta: 0 },\n { id: \"roll\", min: 3, stackDelta: -2 },\n null,\n null,\n null,\n { id: \"hflex\", min: 7, resetStack: true },\n { id: \"flex\", min: 13, resetStack: true },\n { id: \"hflex1\", min: 9, resetStack: true },\n { id: \"flex1\", min: 11, resetStack: true },\n ];\n\n // eslint-disable-next-line no-shadow\n class CFFParser {\n constructor(file, properties, seacAnalysisEnabled) {\n this.bytes = file.getBytes();\n this.properties = properties;\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n }\n\n parse() {\n const properties = this.properties;\n const cff = new CFF();\n this.cff = cff;\n\n // The first five sections must be in order, all the others are reached\n // via offsets contained in one of the below.\n const header = this.parseHeader();\n const nameIndex = this.parseIndex(header.endPos);\n const topDictIndex = this.parseIndex(nameIndex.endPos);\n const stringIndex = this.parseIndex(topDictIndex.endPos);\n const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n\n cff.header = header.obj;\n cff.names = this.parseNameIndex(nameIndex.obj);\n cff.strings = this.parseStringIndex(stringIndex.obj);\n cff.topDict = topDict;\n cff.globalSubrIndex = globalSubrIndex.obj;\n\n this.parsePrivateDict(cff.topDict);\n\n cff.isCIDFont = topDict.hasName(\"ROS\");\n\n const charStringOffset = topDict.getByName(\"CharStrings\");\n const charStringIndex = this.parseIndex(charStringOffset).obj;\n\n const fontMatrix = topDict.getByName(\"FontMatrix\");\n if (fontMatrix) {\n properties.fontMatrix = fontMatrix;\n }\n\n const fontBBox = topDict.getByName(\"FontBBox\");\n if (fontBBox) {\n // adjusting ascent/descent\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n }\n\n let charset, encoding;\n if (cff.isCIDFont) {\n const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n const dictRaw = fdArrayIndex.get(i);\n const fontDict = this.createDict(\n CFFTopDict,\n this.parseDict(dictRaw),\n cff.strings\n );\n this.parsePrivateDict(fontDict);\n cff.fdArray.push(fontDict);\n }\n // cid fonts don't have an encoding\n encoding = null;\n charset = this.parseCharsets(\n topDict.getByName(\"charset\"),\n charStringIndex.count,\n cff.strings,\n true\n );\n cff.fdSelect = this.parseFDSelect(\n topDict.getByName(\"FDSelect\"),\n charStringIndex.count\n );\n } else {\n charset = this.parseCharsets(\n topDict.getByName(\"charset\"),\n charStringIndex.count,\n cff.strings,\n false\n );\n encoding = this.parseEncoding(\n topDict.getByName(\"Encoding\"),\n properties,\n cff.strings,\n charset.charset\n );\n }\n\n cff.charset = charset;\n cff.encoding = encoding;\n\n const charStringsAndSeacs = this.parseCharStrings({\n charStrings: charStringIndex,\n localSubrIndex: topDict.privateDict.subrsIndex,\n globalSubrIndex: globalSubrIndex.obj,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n privateDict: topDict.privateDict,\n });\n cff.charStrings = charStringsAndSeacs.charStrings;\n cff.seacs = charStringsAndSeacs.seacs;\n cff.widths = charStringsAndSeacs.widths;\n\n return cff;\n }\n\n parseHeader() {\n let bytes = this.bytes;\n const bytesLength = bytes.length;\n let offset = 0;\n\n // Prevent an infinite loop, by checking that the offset is within the\n // bounds of the bytes array. Necessary in empty, or invalid, font files.\n while (offset < bytesLength && bytes[offset] !== 1) {\n ++offset;\n }\n if (offset >= bytesLength) {\n throw new FormatError(\"Invalid CFF header\");\n }\n if (offset !== 0) {\n info(\"cff data is shifted\");\n bytes = bytes.subarray(offset);\n this.bytes = bytes;\n }\n const major = bytes[0];\n const minor = bytes[1];\n const hdrSize = bytes[2];\n const offSize = bytes[3];\n const header = new CFFHeader(major, minor, hdrSize, offSize);\n return { obj: header, endPos: hdrSize };\n }\n\n parseDict(dict) {\n let pos = 0;\n\n function parseOperand() {\n let value = dict[pos++];\n if (value === 30) {\n return parseFloatOperand();\n } else if (value === 28) {\n value = dict[pos++];\n value = ((value << 24) | (dict[pos++] << 16)) >> 16;\n return value;\n } else if (value === 29) {\n value = dict[pos++];\n value = (value << 8) | dict[pos++];\n value = (value << 8) | dict[pos++];\n value = (value << 8) | dict[pos++];\n return value;\n } else if (value >= 32 && value <= 246) {\n return value - 139;\n } else if (value >= 247 && value <= 250) {\n return (value - 247) * 256 + dict[pos++] + 108;\n } else if (value >= 251 && value <= 254) {\n return -((value - 251) * 256) - dict[pos++] - 108;\n }\n warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n return NaN;\n }\n\n function parseFloatOperand() {\n let str = \"\";\n const eof = 15;\n // prettier-ignore\n const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n const length = dict.length;\n while (pos < length) {\n const b = dict[pos++];\n const b1 = b >> 4;\n const b2 = b & 15;\n\n if (b1 === eof) {\n break;\n }\n str += lookup[b1];\n\n if (b2 === eof) {\n break;\n }\n str += lookup[b2];\n }\n return parseFloat(str);\n }\n\n let operands = [];\n const entries = [];\n\n pos = 0;\n const end = dict.length;\n while (pos < end) {\n let b = dict[pos];\n if (b <= 21) {\n if (b === 12) {\n b = (b << 8) | dict[++pos];\n }\n entries.push([b, operands]);\n operands = [];\n ++pos;\n } else {\n operands.push(parseOperand());\n }\n }\n return entries;\n }\n\n parseIndex(pos) {\n const cffIndex = new CFFIndex();\n const bytes = this.bytes;\n const count = (bytes[pos++] << 8) | bytes[pos++];\n const offsets = [];\n let end = pos;\n let i, ii;\n\n if (count !== 0) {\n const offsetSize = bytes[pos++];\n // add 1 for offset to determine size of last object\n const startPos = pos + (count + 1) * offsetSize - 1;\n\n for (i = 0, ii = count + 1; i < ii; ++i) {\n let offset = 0;\n for (let j = 0; j < offsetSize; ++j) {\n offset <<= 8;\n offset += bytes[pos++];\n }\n offsets.push(startPos + offset);\n }\n end = offsets[count];\n }\n for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n const offsetStart = offsets[i];\n const offsetEnd = offsets[i + 1];\n cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n }\n return { obj: cffIndex, endPos: end };\n }\n\n parseNameIndex(index) {\n const names = [];\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const name = index.get(i);\n names.push(bytesToString(name));\n }\n return names;\n }\n\n parseStringIndex(index) {\n const strings = new CFFStrings();\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const data = index.get(i);\n strings.add(bytesToString(data));\n }\n return strings;\n }\n\n createDict(Type, dict, strings) {\n const cffDict = new Type(strings);\n for (let i = 0, ii = dict.length; i < ii; ++i) {\n const pair = dict[i];\n const key = pair[0];\n const value = pair[1];\n cffDict.setByKey(key, value);\n }\n return cffDict;\n }\n\n parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n if (!data || state.callDepth > MAX_SUBR_NESTING) {\n return false;\n }\n let stackSize = state.stackSize;\n const stack = state.stack;\n\n const length = data.length;\n\n for (let j = 0; j < length; ) {\n const value = data[j++];\n let validationCommand = null;\n if (value === 12) {\n const q = data[j++];\n if (q === 0) {\n // The CFF specification state that the 'dotsection' command\n // (12, 0) is deprecated and treated as a no-op, but all Type2\n // charstrings processors should support them. Unfortunately\n // the font sanitizer don't. As a workaround the sequence (12, 0)\n // is replaced by a useless (0, hmoveto).\n data[j - 2] = 139;\n data[j - 1] = 22;\n stackSize = 0;\n } else {\n validationCommand = CharstringValidationData12[q];\n }\n } else if (value === 28) {\n // number (16 bit)\n stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;\n j += 2;\n stackSize++;\n } else if (value === 14) {\n if (stackSize >= 4) {\n stackSize -= 4;\n if (this.seacAnalysisEnabled) {\n state.seac = stack.slice(stackSize, stackSize + 4);\n return false;\n }\n }\n validationCommand = CharstringValidationData[value];\n } else if (value >= 32 && value <= 246) {\n // number\n stack[stackSize] = value - 139;\n stackSize++;\n } else if (value >= 247 && value <= 254) {\n // number (+1 bytes)\n stack[stackSize] =\n value < 251\n ? ((value - 247) << 8) + data[j] + 108\n : -((value - 251) << 8) - data[j] - 108;\n j++;\n stackSize++;\n } else if (value === 255) {\n // number (32 bit)\n stack[stackSize] =\n ((data[j] << 24) |\n (data[j + 1] << 16) |\n (data[j + 2] << 8) |\n data[j + 3]) /\n 65536;\n j += 4;\n stackSize++;\n } else if (value === 19 || value === 20) {\n state.hints += stackSize >> 1;\n // skipping right amount of hints flag data\n j += (state.hints + 7) >> 3;\n stackSize %= 2;\n validationCommand = CharstringValidationData[value];\n } else if (value === 10 || value === 29) {\n let subrsIndex;\n if (value === 10) {\n subrsIndex = localSubrIndex;\n } else {\n subrsIndex = globalSubrIndex;\n }\n if (!subrsIndex) {\n validationCommand = CharstringValidationData[value];\n warn(\"Missing subrsIndex for \" + validationCommand.id);\n return false;\n }\n let bias = 32768;\n if (subrsIndex.count < 1240) {\n bias = 107;\n } else if (subrsIndex.count < 33900) {\n bias = 1131;\n }\n const subrNumber = stack[--stackSize] + bias;\n if (\n subrNumber < 0 ||\n subrNumber >= subrsIndex.count ||\n isNaN(subrNumber)\n ) {\n validationCommand = CharstringValidationData[value];\n warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n return false;\n }\n state.stackSize = stackSize;\n state.callDepth++;\n const valid = this.parseCharString(\n state,\n subrsIndex.get(subrNumber),\n localSubrIndex,\n globalSubrIndex\n );\n if (!valid) {\n return false;\n }\n state.callDepth--;\n stackSize = state.stackSize;\n continue;\n } else if (value === 11) {\n state.stackSize = stackSize;\n return true;\n } else if (value === 0 && j === data.length) {\n // Operator 0 is not used according to the current spec and\n // it's the last char and consequently it's likely a terminator.\n // So just replace it by endchar command to make OTS happy.\n data[j - 1] = 14;\n validationCommand = CharstringValidationData[14];\n } else {\n validationCommand = CharstringValidationData[value];\n }\n if (validationCommand) {\n if (validationCommand.stem) {\n state.hints += stackSize >> 1;\n if (value === 3 || value === 23) {\n // vstem or vstemhm.\n state.hasVStems = true;\n } else if (state.hasVStems && (value === 1 || value === 18)) {\n // Some browsers don't draw glyphs that specify vstems before\n // hstems. As a workaround, replace hstem (1) and hstemhm (18)\n // with a pointless vstem (3) or vstemhm (23).\n warn(\"CFF stem hints are in wrong order\");\n data[j - 1] = value === 1 ? 3 : 23;\n }\n }\n if (\"min\" in validationCommand) {\n if (!state.undefStack && stackSize < validationCommand.min) {\n warn(\n \"Not enough parameters for \" +\n validationCommand.id +\n \"; actual: \" +\n stackSize +\n \", expected: \" +\n validationCommand.min\n );\n\n if (stackSize === 0) {\n // Just \"fix\" the outline in replacing command by a endchar:\n // it could lead to wrong rendering of some glyphs or not.\n // For example, the pdf in #6132 is well-rendered.\n data[j - 1] = 14;\n return true;\n }\n return false;\n }\n }\n if (state.firstStackClearing && validationCommand.stackClearing) {\n state.firstStackClearing = false;\n // the optional character width can be found before the first\n // stack-clearing command arguments\n stackSize -= validationCommand.min;\n if (stackSize >= 2 && validationCommand.stem) {\n // there are even amount of arguments for stem commands\n stackSize %= 2;\n } else if (stackSize > 1) {\n warn(\"Found too many parameters for stack-clearing command\");\n }\n if (stackSize > 0) {\n // Width can be any number since its the difference\n // from nominalWidthX.\n state.width = stack[stackSize - 1];\n }\n }\n if (\"stackDelta\" in validationCommand) {\n if (\"stackFn\" in validationCommand) {\n validationCommand.stackFn(stack, stackSize);\n }\n stackSize += validationCommand.stackDelta;\n } else if (validationCommand.stackClearing) {\n stackSize = 0;\n } else if (validationCommand.resetStack) {\n stackSize = 0;\n state.undefStack = false;\n } else if (validationCommand.undefStack) {\n stackSize = 0;\n state.undefStack = true;\n state.firstStackClearing = false;\n }\n }\n }\n state.stackSize = stackSize;\n return true;\n }\n\n parseCharStrings({\n charStrings,\n localSubrIndex,\n globalSubrIndex,\n fdSelect,\n fdArray,\n privateDict,\n }) {\n const seacs = [];\n const widths = [];\n const count = charStrings.count;\n for (let i = 0; i < count; i++) {\n const charstring = charStrings.get(i);\n const state = {\n callDepth: 0,\n stackSize: 0,\n stack: [],\n undefStack: true,\n hints: 0,\n firstStackClearing: true,\n seac: null,\n width: null,\n hasVStems: false,\n };\n let valid = true;\n let localSubrToUse = null;\n let privateDictToUse = privateDict;\n if (fdSelect && fdArray.length) {\n const fdIndex = fdSelect.getFDIndex(i);\n if (fdIndex === -1) {\n warn(\"Glyph index is not in fd select.\");\n valid = false;\n }\n if (fdIndex >= fdArray.length) {\n warn(\"Invalid fd index for glyph index.\");\n valid = false;\n }\n if (valid) {\n privateDictToUse = fdArray[fdIndex].privateDict;\n localSubrToUse = privateDictToUse.subrsIndex;\n }\n } else if (localSubrIndex) {\n localSubrToUse = localSubrIndex;\n }\n if (valid) {\n valid = this.parseCharString(\n state,\n charstring,\n localSubrToUse,\n globalSubrIndex\n );\n }\n if (state.width !== null) {\n const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n widths[i] = nominalWidth + state.width;\n } else {\n const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n widths[i] = defaultWidth;\n }\n if (state.seac !== null) {\n seacs[i] = state.seac;\n }\n if (!valid) {\n // resetting invalid charstring to single 'endchar'\n charStrings.set(i, new Uint8Array([14]));\n }\n }\n return { charStrings, seacs, widths };\n }\n\n emptyPrivateDictionary(parentDict) {\n const privateDict = this.createDict(\n CFFPrivateDict,\n [],\n parentDict.strings\n );\n parentDict.setByKey(18, [0, 0]);\n parentDict.privateDict = privateDict;\n }\n\n parsePrivateDict(parentDict) {\n // no private dict, do nothing\n if (!parentDict.hasName(\"Private\")) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const privateOffset = parentDict.getByName(\"Private\");\n // make sure the params are formatted correctly\n if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n parentDict.removeByName(\"Private\");\n return;\n }\n const size = privateOffset[0];\n const offset = privateOffset[1];\n // remove empty dicts or ones that refer to invalid location\n if (size === 0 || offset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n\n const privateDictEnd = offset + size;\n const dictData = this.bytes.subarray(offset, privateDictEnd);\n const dict = this.parseDict(dictData);\n const privateDict = this.createDict(\n CFFPrivateDict,\n dict,\n parentDict.strings\n );\n parentDict.privateDict = privateDict;\n\n // Parse the Subrs index also since it's relative to the private dict.\n if (!privateDict.getByName(\"Subrs\")) {\n return;\n }\n const subrsOffset = privateDict.getByName(\"Subrs\");\n const relativeOffset = offset + subrsOffset;\n // Validate the offset.\n if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const subrsIndex = this.parseIndex(relativeOffset);\n privateDict.subrsIndex = subrsIndex.obj;\n }\n\n parseCharsets(pos, length, strings, cid) {\n if (pos === 0) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.ISO_ADOBE,\n ISOAdobeCharset\n );\n } else if (pos === 1) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.EXPERT,\n ExpertCharset\n );\n } else if (pos === 2) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.EXPERT_SUBSET,\n ExpertSubsetCharset\n );\n }\n\n const bytes = this.bytes;\n const start = pos;\n const format = bytes[pos++];\n const charset = [cid ? 0 : \".notdef\"];\n let id, count, i;\n\n // subtract 1 for the .notdef glyph\n length -= 1;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; i++) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n charset.push(cid ? id : strings.get(id));\n }\n break;\n case 1:\n while (charset.length <= length) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n count = bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n case 2:\n while (charset.length <= length) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n count = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n default:\n throw new FormatError(\"Unknown charset format\");\n }\n // Raw won't be needed if we actually compile the charset.\n const end = pos;\n const raw = bytes.subarray(start, end);\n\n return new CFFCharset(false, format, charset, raw);\n }\n\n parseEncoding(pos, properties, strings, charset) {\n const encoding = Object.create(null);\n const bytes = this.bytes;\n let predefined = false;\n let format, i, ii;\n let raw = null;\n\n function readSupplement() {\n const supplementsCount = bytes[pos++];\n for (i = 0; i < supplementsCount; i++) {\n const code = bytes[pos++];\n const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n encoding[code] = charset.indexOf(strings.get(sid));\n }\n }\n\n if (pos === 0 || pos === 1) {\n predefined = true;\n format = pos;\n const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n for (i = 0, ii = charset.length; i < ii; i++) {\n const index = baseEncoding.indexOf(charset[i]);\n if (index !== -1) {\n encoding[index] = i;\n }\n }\n } else {\n const dataStart = pos;\n format = bytes[pos++];\n switch (format & 0x7f) {\n case 0:\n const glyphsCount = bytes[pos++];\n for (i = 1; i <= glyphsCount; i++) {\n encoding[bytes[pos++]] = i;\n }\n break;\n\n case 1:\n const rangesCount = bytes[pos++];\n let gid = 1;\n for (i = 0; i < rangesCount; i++) {\n const start = bytes[pos++];\n const left = bytes[pos++];\n for (let j = start; j <= start + left; j++) {\n encoding[j] = gid++;\n }\n }\n break;\n\n default:\n throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n }\n const dataEnd = pos;\n if (format & 0x80) {\n // hasSupplement\n // The font sanitizer does not support CFF encoding with a\n // supplement, since the encoding is not really used to map\n // between gid to glyph, let's overwrite what is declared in\n // the top dictionary to let the sanitizer think the font use\n // StandardEncoding, that's a lie but that's ok.\n bytes[dataStart] &= 0x7f;\n readSupplement();\n }\n raw = bytes.subarray(dataStart, dataEnd);\n }\n format &= 0x7f;\n return new CFFEncoding(predefined, format, encoding, raw);\n }\n\n parseFDSelect(pos, length) {\n const bytes = this.bytes;\n const format = bytes[pos++];\n const fdSelect = [];\n let i;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; ++i) {\n const id = bytes[pos++];\n fdSelect.push(id);\n }\n break;\n case 3:\n const rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i < rangesCount; ++i) {\n let first = (bytes[pos++] << 8) | bytes[pos++];\n if (i === 0 && first !== 0) {\n warn(\n \"parseFDSelect: The first range must have a first GID of 0\" +\n \" -- trying to recover.\"\n );\n first = 0;\n }\n const fdIndex = bytes[pos++];\n const next = (bytes[pos] << 8) | bytes[pos + 1];\n for (let j = first; j < next; ++j) {\n fdSelect.push(fdIndex);\n }\n }\n // Advance past the sentinel(next).\n pos += 2;\n break;\n default:\n throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n }\n if (fdSelect.length !== length) {\n throw new FormatError(\"parseFDSelect: Invalid font data.\");\n }\n\n return new CFFFDSelect(format, fdSelect);\n }\n }\n return CFFParser;\n})();\n\n// Compact Font Format\nclass CFF {\n constructor() {\n this.header = null;\n this.names = [];\n this.topDict = null;\n this.strings = new CFFStrings();\n this.globalSubrIndex = null;\n\n // The following could really be per font, but since we only have one font\n // store them here.\n this.encoding = null;\n this.charset = null;\n this.charStrings = null;\n this.fdArray = [];\n this.fdSelect = null;\n\n this.isCIDFont = false;\n }\n\n duplicateFirstGlyph() {\n // Browsers will not display a glyph at position 0. Typically glyph 0 is\n // notdef, but a number of fonts put a valid glyph there so it must be\n // duplicated and appended.\n if (this.charStrings.count >= 65535) {\n warn(\"Not enough space in charstrings to duplicate first glyph.\");\n return;\n }\n const glyphZero = this.charStrings.get(0);\n this.charStrings.add(glyphZero);\n if (this.isCIDFont) {\n this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n }\n }\n\n hasGlyphId(id) {\n if (id < 0 || id >= this.charStrings.count) {\n return false;\n }\n const glyph = this.charStrings.get(id);\n return glyph.length > 0;\n }\n}\n\nclass CFFHeader {\n constructor(major, minor, hdrSize, offSize) {\n this.major = major;\n this.minor = minor;\n this.hdrSize = hdrSize;\n this.offSize = offSize;\n }\n}\n\nclass CFFStrings {\n constructor() {\n this.strings = [];\n }\n\n get(index) {\n if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n return CFFStandardStrings[index];\n }\n if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n }\n return CFFStandardStrings[0];\n }\n\n getSID(str) {\n let index = CFFStandardStrings.indexOf(str);\n if (index !== -1) {\n return index;\n }\n index = this.strings.indexOf(str);\n if (index !== -1) {\n return index + NUM_STANDARD_CFF_STRINGS;\n }\n return -1;\n }\n\n add(value) {\n this.strings.push(value);\n }\n\n get count() {\n return this.strings.length;\n }\n}\n\nclass CFFIndex {\n constructor() {\n this.objects = [];\n this.length = 0;\n }\n\n add(data) {\n this.length += data.length;\n this.objects.push(data);\n }\n\n set(index, data) {\n this.length += data.length - this.objects[index].length;\n this.objects[index] = data;\n }\n\n get(index) {\n return this.objects[index];\n }\n\n get count() {\n return this.objects.length;\n }\n}\n\nclass CFFDict {\n constructor(tables, strings) {\n this.keyToNameMap = tables.keyToNameMap;\n this.nameToKeyMap = tables.nameToKeyMap;\n this.defaults = tables.defaults;\n this.types = tables.types;\n this.opcodes = tables.opcodes;\n this.order = tables.order;\n this.strings = strings;\n this.values = Object.create(null);\n }\n\n // value should always be an array\n setByKey(key, value) {\n if (!(key in this.keyToNameMap)) {\n return false;\n }\n const valueLength = value.length;\n // ignore empty values\n if (valueLength === 0) {\n return true;\n }\n // Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\n for (let i = 0; i < valueLength; i++) {\n if (isNaN(value[i])) {\n warn('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n return true;\n }\n }\n const type = this.types[key];\n // remove the array wrapping these types of values\n if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n value = value[0];\n }\n this.values[key] = value;\n return true;\n }\n\n setByName(name, value) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name \"${name}\"`);\n }\n this.values[this.nameToKeyMap[name]] = value;\n }\n\n hasName(name) {\n return this.nameToKeyMap[name] in this.values;\n }\n\n getByName(name) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name ${name}\"`);\n }\n const key = this.nameToKeyMap[name];\n if (!(key in this.values)) {\n return this.defaults[key];\n }\n return this.values[key];\n }\n\n removeByName(name) {\n delete this.values[this.nameToKeyMap[name]];\n }\n\n static createTables(layout) {\n const tables = {\n keyToNameMap: {},\n nameToKeyMap: {},\n defaults: {},\n types: {},\n opcodes: {},\n order: [],\n };\n for (let i = 0, ii = layout.length; i < ii; ++i) {\n const entry = layout[i];\n const key = Array.isArray(entry[0])\n ? (entry[0][0] << 8) + entry[0][1]\n : entry[0];\n tables.keyToNameMap[key] = entry[1];\n tables.nameToKeyMap[entry[1]] = key;\n tables.types[key] = entry[2];\n tables.defaults[key] = entry[3];\n tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n tables.order.push(key);\n }\n return tables;\n }\n}\n\nconst CFFTopDict = (function CFFTopDictClosure() {\n const layout = [\n [[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null],\n [[12, 20], \"SyntheticBase\", \"num\", null],\n [0, \"version\", \"sid\", null],\n [1, \"Notice\", \"sid\", null],\n [[12, 0], \"Copyright\", \"sid\", null],\n [2, \"FullName\", \"sid\", null],\n [3, \"FamilyName\", \"sid\", null],\n [4, \"Weight\", \"sid\", null],\n [[12, 1], \"isFixedPitch\", \"num\", 0],\n [[12, 2], \"ItalicAngle\", \"num\", 0],\n [[12, 3], \"UnderlinePosition\", \"num\", -100],\n [[12, 4], \"UnderlineThickness\", \"num\", 50],\n [[12, 5], \"PaintType\", \"num\", 0],\n [[12, 6], \"CharstringType\", \"num\", 2],\n // prettier-ignore\n [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"],\n [0.001, 0, 0, 0.001, 0, 0]],\n [13, \"UniqueID\", \"num\", null],\n [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]],\n [[12, 8], \"StrokeWidth\", \"num\", 0],\n [14, \"XUID\", \"array\", null],\n [15, \"charset\", \"offset\", 0],\n [16, \"Encoding\", \"offset\", 0],\n [17, \"CharStrings\", \"offset\", 0],\n [18, \"Private\", [\"offset\", \"offset\"], null],\n [[12, 21], \"PostScript\", \"sid\", null],\n [[12, 22], \"BaseFontName\", \"sid\", null],\n [[12, 23], \"BaseFontBlend\", \"delta\", null],\n [[12, 31], \"CIDFontVersion\", \"num\", 0],\n [[12, 32], \"CIDFontRevision\", \"num\", 0],\n [[12, 33], \"CIDFontType\", \"num\", 0],\n [[12, 34], \"CIDCount\", \"num\", 8720],\n [[12, 35], \"UIDBase\", \"num\", null],\n // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\n // before FDArray.\n [[12, 37], \"FDSelect\", \"offset\", null],\n [[12, 36], \"FDArray\", \"offset\", null],\n [[12, 38], \"FontName\", \"sid\", null],\n ];\n let tables = null;\n\n // eslint-disable-next-line no-shadow\n class CFFTopDict extends CFFDict {\n constructor(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n super(tables, strings);\n this.privateDict = null;\n }\n }\n return CFFTopDict;\n})();\n\nconst CFFPrivateDict = (function CFFPrivateDictClosure() {\n const layout = [\n [6, \"BlueValues\", \"delta\", null],\n [7, \"OtherBlues\", \"delta\", null],\n [8, \"FamilyBlues\", \"delta\", null],\n [9, \"FamilyOtherBlues\", \"delta\", null],\n [[12, 9], \"BlueScale\", \"num\", 0.039625],\n [[12, 10], \"BlueShift\", \"num\", 7],\n [[12, 11], \"BlueFuzz\", \"num\", 1],\n [10, \"StdHW\", \"num\", null],\n [11, \"StdVW\", \"num\", null],\n [[12, 12], \"StemSnapH\", \"delta\", null],\n [[12, 13], \"StemSnapV\", \"delta\", null],\n [[12, 14], \"ForceBold\", \"num\", 0],\n [[12, 17], \"LanguageGroup\", \"num\", 0],\n [[12, 18], \"ExpansionFactor\", \"num\", 0.06],\n [[12, 19], \"initialRandomSeed\", \"num\", 0],\n [20, \"defaultWidthX\", \"num\", 0],\n [21, \"nominalWidthX\", \"num\", 0],\n [19, \"Subrs\", \"offset\", null],\n ];\n let tables = null;\n\n // eslint-disable-next-line no-shadow\n class CFFPrivateDict extends CFFDict {\n constructor(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n super(tables, strings);\n this.subrsIndex = null;\n }\n }\n return CFFPrivateDict;\n})();\n\nconst CFFCharsetPredefinedTypes = {\n ISO_ADOBE: 0,\n EXPERT: 1,\n EXPERT_SUBSET: 2,\n};\n\nclass CFFCharset {\n constructor(predefined, format, charset, raw) {\n this.predefined = predefined;\n this.format = format;\n this.charset = charset;\n this.raw = raw;\n }\n}\n\nclass CFFEncoding {\n constructor(predefined, format, encoding, raw) {\n this.predefined = predefined;\n this.format = format;\n this.encoding = encoding;\n this.raw = raw;\n }\n}\n\nclass CFFFDSelect {\n constructor(format, fdSelect) {\n this.format = format;\n this.fdSelect = fdSelect;\n }\n\n getFDIndex(glyphIndex) {\n if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n return -1;\n }\n return this.fdSelect[glyphIndex];\n }\n}\n\n// Helper class to keep track of where an offset is within the data and helps\n// filling in that offset once it's known.\nclass CFFOffsetTracker {\n constructor() {\n this.offsets = Object.create(null);\n }\n\n isTracking(key) {\n return key in this.offsets;\n }\n\n track(key, location) {\n if (key in this.offsets) {\n throw new FormatError(`Already tracking location of ${key}`);\n }\n this.offsets[key] = location;\n }\n\n offset(value) {\n for (const key in this.offsets) {\n this.offsets[key] += value;\n }\n }\n\n setEntryLocation(key, values, output) {\n if (!(key in this.offsets)) {\n throw new FormatError(`Not tracking location of ${key}`);\n }\n const data = output.data;\n const dataOffset = this.offsets[key];\n const size = 5;\n for (let i = 0, ii = values.length; i < ii; ++i) {\n const offset0 = i * size + dataOffset;\n const offset1 = offset0 + 1;\n const offset2 = offset0 + 2;\n const offset3 = offset0 + 3;\n const offset4 = offset0 + 4;\n // It's easy to screw up offsets so perform this sanity check.\n if (\n data[offset0] !== 0x1d ||\n data[offset1] !== 0 ||\n data[offset2] !== 0 ||\n data[offset3] !== 0 ||\n data[offset4] !== 0\n ) {\n throw new FormatError(\"writing to an offset that is not empty\");\n }\n const value = values[i];\n data[offset0] = 0x1d;\n data[offset1] = (value >> 24) & 0xff;\n data[offset2] = (value >> 16) & 0xff;\n data[offset3] = (value >> 8) & 0xff;\n data[offset4] = value & 0xff;\n }\n }\n}\n\n// Takes a CFF and converts it to the binary representation.\nclass CFFCompiler {\n constructor(cff) {\n this.cff = cff;\n }\n\n compile() {\n const cff = this.cff;\n const output = {\n data: [],\n length: 0,\n add: function CFFCompiler_add(data) {\n this.data = this.data.concat(data);\n this.length = this.data.length;\n },\n };\n\n // Compile the five entries that must be in order.\n const header = this.compileHeader(cff.header);\n output.add(header);\n\n const nameIndex = this.compileNameIndex(cff.names);\n output.add(nameIndex);\n\n if (cff.isCIDFont) {\n // The spec is unclear on how font matrices should relate to each other\n // when there is one in the main top dict and the sub top dicts.\n // Windows handles this differently than linux and osx so we have to\n // normalize to work on all.\n // Rules based off of some mailing list discussions:\n // - If main font has a matrix and subfont doesn't, use the main matrix.\n // - If no main font matrix and there is a subfont matrix, use the\n // subfont matrix.\n // - If both have matrices, concat together.\n // - If neither have matrices, use default.\n // To make this work on all platforms we move the top matrix into each\n // sub top dict and concat if necessary.\n if (cff.topDict.hasName(\"FontMatrix\")) {\n const base = cff.topDict.getByName(\"FontMatrix\");\n cff.topDict.removeByName(\"FontMatrix\");\n for (let i = 0, ii = cff.fdArray.length; i < ii; i++) {\n const subDict = cff.fdArray[i];\n let matrix = base.slice(0);\n if (subDict.hasName(\"FontMatrix\")) {\n matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n }\n subDict.setByName(\"FontMatrix\", matrix);\n }\n }\n }\n\n const xuid = cff.topDict.getByName(\"XUID\");\n if (xuid && xuid.length > 16) {\n // Length of XUID array must not be greater than 16 (issue #12399).\n cff.topDict.removeByName(\"XUID\");\n }\n\n cff.topDict.setByName(\"charset\", 0);\n let compiled = this.compileTopDicts(\n [cff.topDict],\n output.length,\n cff.isCIDFont\n );\n output.add(compiled.output);\n const topDictTracker = compiled.trackers[0];\n\n const stringIndex = this.compileStringIndex(cff.strings.strings);\n output.add(stringIndex);\n\n const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n output.add(globalSubrIndex);\n\n // Now start on the other entries that have no specific order.\n if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n if (cff.encoding.predefined) {\n topDictTracker.setEntryLocation(\n \"Encoding\",\n [cff.encoding.format],\n output\n );\n } else {\n const encoding = this.compileEncoding(cff.encoding);\n topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n output.add(encoding);\n }\n }\n const charset = this.compileCharset(\n cff.charset,\n cff.charStrings.count,\n cff.strings,\n cff.isCIDFont\n );\n topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n output.add(charset);\n\n const charStrings = this.compileCharStrings(cff.charStrings);\n topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n output.add(charStrings);\n\n if (cff.isCIDFont) {\n // For some reason FDSelect must be in front of FDArray on windows. OSX\n // and linux don't seem to care.\n topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n const fdSelect = this.compileFDSelect(cff.fdSelect);\n output.add(fdSelect);\n // It is unclear if the sub font dictionary can have CID related\n // dictionary keys, but the sanitizer doesn't like them so remove them.\n compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n output.add(compiled.output);\n const fontDictTrackers = compiled.trackers;\n\n this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n }\n\n this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n\n // If the font data ends with INDEX whose object data is zero-length,\n // the sanitizer will bail out. Add a dummy byte to avoid that.\n output.add([0]);\n\n return output.data;\n }\n\n encodeNumber(value) {\n if (Number.isInteger(value)) {\n return this.encodeInteger(value);\n }\n return this.encodeFloat(value);\n }\n\n static get EncodeFloatRegExp() {\n return shadow(\n this,\n \"EncodeFloatRegExp\",\n /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/\n );\n }\n\n encodeFloat(num) {\n let value = num.toString();\n\n // Rounding inaccurate doubles.\n const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n if (m) {\n const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(num * epsilon) / epsilon).toString();\n }\n\n let nibbles = \"\";\n let i, ii;\n for (i = 0, ii = value.length; i < ii; ++i) {\n const a = value[i];\n if (a === \"e\") {\n nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n } else if (a === \".\") {\n nibbles += \"a\";\n } else if (a === \"-\") {\n nibbles += \"e\";\n } else {\n nibbles += a;\n }\n }\n nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n const out = [30];\n for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substring(i, i + 2), 16));\n }\n return out;\n }\n\n encodeInteger(value) {\n let code;\n if (value >= -107 && value <= 107) {\n code = [value + 139];\n } else if (value >= 108 && value <= 1131) {\n value -= 108;\n code = [(value >> 8) + 247, value & 0xff];\n } else if (value >= -1131 && value <= -108) {\n value = -value - 108;\n code = [(value >> 8) + 251, value & 0xff];\n } else if (value >= -32768 && value <= 32767) {\n code = [0x1c, (value >> 8) & 0xff, value & 0xff];\n } else {\n code = [\n 0x1d,\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff,\n ];\n }\n return code;\n }\n\n compileHeader(header) {\n // `header.hdrSize` can be any value but we only write 4 values\n // so header size is 4 (prevents OTS from rejecting the font).\n return [header.major, header.minor, 4, header.offSize];\n }\n\n compileNameIndex(names) {\n const nameIndex = new CFFIndex();\n for (let i = 0, ii = names.length; i < ii; ++i) {\n const name = names[i];\n // OTS doesn't allow names to be over 127 characters.\n const length = Math.min(name.length, 127);\n let sanitizedName = new Array(length);\n for (let j = 0; j < length; j++) {\n // OTS requires chars to be between a range and not certain other\n // chars.\n let char = name[j];\n if (\n char < \"!\" ||\n char > \"~\" ||\n char === \"[\" ||\n char === \"]\" ||\n char === \"(\" ||\n char === \")\" ||\n char === \"{\" ||\n char === \"}\" ||\n char === \"<\" ||\n char === \">\" ||\n char === \"/\" ||\n char === \"%\"\n ) {\n char = \"_\";\n }\n sanitizedName[j] = char;\n }\n sanitizedName = sanitizedName.join(\"\");\n\n if (sanitizedName === \"\") {\n sanitizedName = \"Bad_Font_Name\";\n }\n nameIndex.add(stringToBytes(sanitizedName));\n }\n return this.compileIndex(nameIndex);\n }\n\n compileTopDicts(dicts, length, removeCidKeys) {\n const fontDictTrackers = [];\n let fdArrayIndex = new CFFIndex();\n for (let i = 0, ii = dicts.length; i < ii; ++i) {\n const fontDict = dicts[i];\n if (removeCidKeys) {\n fontDict.removeByName(\"CIDFontVersion\");\n fontDict.removeByName(\"CIDFontRevision\");\n fontDict.removeByName(\"CIDFontType\");\n fontDict.removeByName(\"CIDCount\");\n fontDict.removeByName(\"UIDBase\");\n }\n const fontDictTracker = new CFFOffsetTracker();\n const fontDictData = this.compileDict(fontDict, fontDictTracker);\n fontDictTrackers.push(fontDictTracker);\n fdArrayIndex.add(fontDictData);\n fontDictTracker.offset(length);\n }\n fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n return {\n trackers: fontDictTrackers,\n output: fdArrayIndex,\n };\n }\n\n compilePrivateDicts(dicts, trackers, output) {\n for (let i = 0, ii = dicts.length; i < ii; ++i) {\n const fontDict = dicts[i];\n const privateDict = fontDict.privateDict;\n if (!privateDict || !fontDict.hasName(\"Private\")) {\n throw new FormatError(\"There must be a private dictionary.\");\n }\n const privateDictTracker = new CFFOffsetTracker();\n const privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n let outputLength = output.length;\n privateDictTracker.offset(outputLength);\n if (!privateDictData.length) {\n // The private dictionary was empty, set the output length to zero to\n // ensure the offset length isn't out of bounds in the eyes of the\n // sanitizer.\n outputLength = 0;\n }\n\n trackers[i].setEntryLocation(\n \"Private\",\n [privateDictData.length, outputLength],\n output\n );\n output.add(privateDictData);\n\n if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n const subrs = this.compileIndex(privateDict.subrsIndex);\n privateDictTracker.setEntryLocation(\n \"Subrs\",\n [privateDictData.length],\n output\n );\n output.add(subrs);\n }\n }\n }\n\n compileDict(dict, offsetTracker) {\n let out = [];\n // The dictionary keys must be in a certain order.\n const order = dict.order;\n for (let i = 0; i < order.length; ++i) {\n const key = order[i];\n if (!(key in dict.values)) {\n continue;\n }\n let values = dict.values[key];\n let types = dict.types[key];\n if (!Array.isArray(types)) {\n types = [types];\n }\n if (!Array.isArray(values)) {\n values = [values];\n }\n\n // Remove any empty dict values.\n if (values.length === 0) {\n continue;\n }\n\n for (let j = 0, jj = types.length; j < jj; ++j) {\n const type = types[j];\n const value = values[j];\n switch (type) {\n case \"num\":\n case \"sid\":\n out = out.concat(this.encodeNumber(value));\n break;\n case \"offset\":\n // For offsets we just insert a 32bit integer so we don't have to\n // deal with figuring out the length of the offset when it gets\n // replaced later on by the compiler.\n const name = dict.keyToNameMap[key];\n // Some offsets have the offset and the length, so just record the\n // position of the first one.\n if (!offsetTracker.isTracking(name)) {\n offsetTracker.track(name, out.length);\n }\n out = out.concat([0x1d, 0, 0, 0, 0]);\n break;\n case \"array\":\n case \"delta\":\n out = out.concat(this.encodeNumber(value));\n for (let k = 1, kk = values.length; k < kk; ++k) {\n out = out.concat(this.encodeNumber(values[k]));\n }\n break;\n default:\n throw new FormatError(`Unknown data type of ${type}`);\n }\n }\n out = out.concat(dict.opcodes[key]);\n }\n return out;\n }\n\n compileStringIndex(strings) {\n const stringIndex = new CFFIndex();\n for (let i = 0, ii = strings.length; i < ii; ++i) {\n stringIndex.add(stringToBytes(strings[i]));\n }\n return this.compileIndex(stringIndex);\n }\n\n compileGlobalSubrIndex() {\n const globalSubrIndex = this.cff.globalSubrIndex;\n this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n }\n\n compileCharStrings(charStrings) {\n const charStringsIndex = new CFFIndex();\n for (let i = 0; i < charStrings.count; i++) {\n const glyph = charStrings.get(i);\n // If the CharString outline is empty, replace it with .notdef to\n // prevent OTS from rejecting the font (fixes bug1252420.pdf).\n if (glyph.length === 0) {\n charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n continue;\n }\n charStringsIndex.add(glyph);\n }\n return this.compileIndex(charStringsIndex);\n }\n\n compileCharset(charset, numGlyphs, strings, isCIDFont) {\n // Freetype requires the number of charset strings be correct and MacOS\n // requires a valid mapping for printing.\n let out;\n const numGlyphsLessNotDef = numGlyphs - 1;\n if (isCIDFont) {\n // In a CID font, the charset is a mapping of CIDs not SIDs so just\n // create an identity mapping.\n out = new Uint8Array([\n 2, // format\n 0, // first CID upper byte\n 0, // first CID lower byte\n (numGlyphsLessNotDef >> 8) & 0xff,\n numGlyphsLessNotDef & 0xff,\n ]);\n } else {\n const length = 1 + numGlyphsLessNotDef * 2;\n out = new Uint8Array(length);\n out[0] = 0; // format 0\n let charsetIndex = 0;\n const numCharsets = charset.charset.length;\n let warned = false;\n for (let i = 1; i < out.length; i += 2) {\n let sid = 0;\n if (charsetIndex < numCharsets) {\n const name = charset.charset[charsetIndex++];\n sid = strings.getSID(name);\n if (sid === -1) {\n sid = 0;\n if (!warned) {\n warned = true;\n warn(`Couldn't find ${name} in CFF strings`);\n }\n }\n }\n out[i] = (sid >> 8) & 0xff;\n out[i + 1] = sid & 0xff;\n }\n }\n return this.compileTypedArray(out);\n }\n\n compileEncoding(encoding) {\n return this.compileTypedArray(encoding.raw);\n }\n\n compileFDSelect(fdSelect) {\n const format = fdSelect.format;\n let out, i;\n switch (format) {\n case 0:\n out = new Uint8Array(1 + fdSelect.fdSelect.length);\n out[0] = format;\n for (i = 0; i < fdSelect.fdSelect.length; i++) {\n out[i + 1] = fdSelect.fdSelect[i];\n }\n break;\n case 3:\n const start = 0;\n let lastFD = fdSelect.fdSelect[0];\n const ranges = [\n format,\n 0, // nRanges place holder\n 0, // nRanges place holder\n (start >> 8) & 0xff,\n start & 0xff,\n lastFD,\n ];\n for (i = 1; i < fdSelect.fdSelect.length; i++) {\n const currentFD = fdSelect.fdSelect[i];\n if (currentFD !== lastFD) {\n ranges.push((i >> 8) & 0xff, i & 0xff, currentFD);\n lastFD = currentFD;\n }\n }\n // 3 bytes are pushed for every range and there are 3 header bytes.\n const numRanges = (ranges.length - 3) / 3;\n ranges[1] = (numRanges >> 8) & 0xff;\n ranges[2] = numRanges & 0xff;\n // sentinel\n ranges.push((i >> 8) & 0xff, i & 0xff);\n out = new Uint8Array(ranges);\n break;\n }\n return this.compileTypedArray(out);\n }\n\n compileTypedArray(data) {\n const out = [];\n for (let i = 0, ii = data.length; i < ii; ++i) {\n out[i] = data[i];\n }\n return out;\n }\n\n compileIndex(index, trackers = []) {\n const objects = index.objects;\n // First 2 bytes contains the number of objects contained into this index\n const count = objects.length;\n\n // If there is no object, just create an index. This technically\n // should just be [0, 0] but OTS has an issue with that.\n if (count === 0) {\n return [0, 0, 0];\n }\n\n const data = [(count >> 8) & 0xff, count & 0xff];\n\n let lastOffset = 1,\n i;\n for (i = 0; i < count; ++i) {\n lastOffset += objects[i].length;\n }\n\n let offsetSize;\n if (lastOffset < 0x100) {\n offsetSize = 1;\n } else if (lastOffset < 0x10000) {\n offsetSize = 2;\n } else if (lastOffset < 0x1000000) {\n offsetSize = 3;\n } else {\n offsetSize = 4;\n }\n\n // Next byte contains the offset size use to reference object in the file\n data.push(offsetSize);\n\n // Add another offset after this one because we need a new offset\n let relativeOffset = 1;\n for (i = 0; i < count + 1; i++) {\n if (offsetSize === 1) {\n data.push(relativeOffset & 0xff);\n } else if (offsetSize === 2) {\n data.push((relativeOffset >> 8) & 0xff, relativeOffset & 0xff);\n } else if (offsetSize === 3) {\n data.push(\n (relativeOffset >> 16) & 0xff,\n (relativeOffset >> 8) & 0xff,\n relativeOffset & 0xff\n );\n } else {\n data.push(\n (relativeOffset >>> 24) & 0xff,\n (relativeOffset >> 16) & 0xff,\n (relativeOffset >> 8) & 0xff,\n relativeOffset & 0xff\n );\n }\n\n if (objects[i]) {\n relativeOffset += objects[i].length;\n }\n }\n\n for (i = 0; i < count; i++) {\n // Notify the tracker where the object will be offset in the data.\n if (trackers[i]) {\n trackers[i].offset(data.length);\n }\n for (let j = 0, jj = objects[i].length; j < jj; j++) {\n data.push(objects[i][j]);\n }\n }\n return data;\n }\n}\n\nexport {\n CFF,\n CFFCharset,\n CFFCompiler,\n CFFFDSelect,\n CFFHeader,\n CFFIndex,\n CFFParser,\n CFFPrivateDict,\n CFFStandardStrings,\n CFFStrings,\n CFFTopDict,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ISOAdobeCharset = [\n \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\",\n \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\",\n \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\",\n \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\",\n \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\",\n \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\",\n \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\",\n \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\",\n \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\",\n \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\",\n \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\",\n \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\",\n \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\",\n \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\",\n \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\",\n \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\",\n \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\",\n \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\",\n \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\",\n \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\",\n \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\",\n \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\",\n \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\",\n \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\",\n \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\",\n \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"\n];\n\n// prettier-ignore\nconst ExpertCharset = [\n \".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\",\n \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\",\n \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\",\n \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\",\n \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\",\n \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\",\n \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\",\n \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\",\n \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\",\n \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\",\n \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n \"Ydieresissmall\"\n];\n\n// prettier-ignore\nconst ExpertSubsetCharset = [\n \".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\",\n \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\",\n \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\",\n \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\",\n \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\",\n \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\",\n \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\",\n \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\",\n \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n \"periodinferior\", \"commainferior\"\n];\n\nexport { ExpertCharset, ExpertSubsetCharset, ISOAdobeCharset };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\n/**\n * Hold a map of decoded fonts and of the standard fourteen Type1\n * fonts and their acronyms.\n */\nconst getStdFontMap = getLookupTableFactory(function (t) {\n // The standard 14 fonts:\n t[\"Times-Roman\"] = \"Times-Roman\";\n t.Helvetica = \"Helvetica\";\n t.Courier = \"Courier\";\n t.Symbol = \"Symbol\";\n t[\"Times-Bold\"] = \"Times-Bold\";\n t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n t[\"Courier-Bold\"] = \"Courier-Bold\";\n t.ZapfDingbats = \"ZapfDingbats\";\n t[\"Times-Italic\"] = \"Times-Italic\";\n t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n t[\"Courier-Oblique\"] = \"Courier-Oblique\";\n t[\"Times-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n t[\"Courier-BoldOblique\"] = \"Courier-BoldOblique\";\n\n // Extra mappings\n t.ArialNarrow = \"Helvetica\";\n t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n t.ArialBlack = \"Helvetica\";\n t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-Black\"] = \"Helvetica\";\n t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n t.Arial = \"Helvetica\";\n t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n t.ArialMT = \"Helvetica\";\n t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"Courier-Italic\"] = \"Courier-Oblique\";\n t.CourierNew = \"Courier\";\n t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n t.CourierNewPSMT = \"Courier\";\n t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n t[\"Symbol-Bold\"] = \"Symbol\";\n t[\"Symbol-BoldItalic\"] = \"Symbol\";\n t[\"Symbol-Italic\"] = \"Symbol\";\n t.TimesNewRoman = \"Times-Roman\";\n t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n t.TimesNewRomanPS = \"Times-Roman\";\n t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n t.TimesNewRomanPSMT = \"Times-Roman\";\n t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\n\n// Contains mapping for standard fonts and xfa fonts.\nconst getFontNameToFileMap = getLookupTableFactory(function (t) {\n t.Courier = \"FoxitFixed.pfb\";\n t[\"Courier-Bold\"] = \"FoxitFixedBold.pfb\";\n t[\"Courier-BoldOblique\"] = \"FoxitFixedBoldItalic.pfb\";\n t[\"Courier-Oblique\"] = \"FoxitFixedItalic.pfb\";\n t.Helvetica = \"FoxitSans.pfb\";\n t[\"Helvetica-Bold\"] = \"FoxitSansBold.pfb\";\n t[\"Helvetica-BoldOblique\"] = \"FoxitSansBoldItalic.pfb\";\n t[\"Helvetica-Oblique\"] = \"FoxitSansItalic.pfb\";\n t[\"Times-Roman\"] = \"FoxitSerif.pfb\";\n t[\"Times-Bold\"] = \"FoxitSerifBold.pfb\";\n t[\"Times-BoldItalic\"] = \"FoxitSerifBoldItalic.pfb\";\n t[\"Times-Italic\"] = \"FoxitSerifItalic.pfb\";\n t.Symbol = \"FoxitSymbol.pfb\";\n t.ZapfDingbats = \"FoxitDingbats.pfb\";\n t[\"LiberationSans-Regular\"] = \"LiberationSans-Regular.ttf\";\n t[\"LiberationSans-Bold\"] = \"LiberationSans-Bold.ttf\";\n t[\"LiberationSans-Italic\"] = \"LiberationSans-Italic.ttf\";\n t[\"LiberationSans-BoldItalic\"] = \"LiberationSans-BoldItalic.ttf\";\n});\n\n/**\n * Holds the map of the non-standard fonts that might be included as\n * a standard fonts without glyph data.\n */\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\n t.Calibri = \"Helvetica\";\n t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n t.CenturyGothic = \"Helvetica\";\n t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n t.ComicSansMS = \"Comic Sans MS\";\n t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n t[\"ItcSymbol-Bold\"] = \"Helvetica-Bold\";\n t[\"ItcSymbol-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ItcSymbol-Book\"] = \"Helvetica\";\n t[\"ItcSymbol-BookItalic\"] = \"Helvetica-Oblique\";\n t[\"ItcSymbol-Medium\"] = \"Helvetica\";\n t[\"ItcSymbol-MediumItalic\"] = \"Helvetica-Oblique\";\n t.LucidaConsole = \"Courier\";\n t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n t[\"MS-Gothic\"] = \"MS Gothic\";\n t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n t[\"MS-Mincho\"] = \"MS Mincho\";\n t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n t[\"MS-PGothic\"] = \"MS PGothic\";\n t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n t[\"MS-PMincho\"] = \"MS PMincho\";\n t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n t.NuptialScript = \"Times-Italic\";\n t.SegoeUISymbol = \"Helvetica\";\n t.Wingdings = \"ZapfDingbats\";\n t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\n\nconst getSerifFonts = getLookupTableFactory(function (t) {\n t[\"Adobe Jenson\"] = true;\n t[\"Adobe Text\"] = true;\n t.Albertus = true;\n t.Aldus = true;\n t.Alexandria = true;\n t.Algerian = true;\n t[\"American Typewriter\"] = true;\n t.Antiqua = true;\n t.Apex = true;\n t.Arno = true;\n t.Aster = true;\n t.Aurora = true;\n t.Baskerville = true;\n t.Bell = true;\n t.Bembo = true;\n t[\"Bembo Schoolbook\"] = true;\n t.Benguiat = true;\n t[\"Berkeley Old Style\"] = true;\n t[\"Bernhard Modern\"] = true;\n t[\"Berthold City\"] = true;\n t.Bodoni = true;\n t[\"Bauer Bodoni\"] = true;\n t[\"Book Antiqua\"] = true;\n t.Bookman = true;\n t[\"Bordeaux Roman\"] = true;\n t[\"Californian FB\"] = true;\n t.Calisto = true;\n t.Calvert = true;\n t.Capitals = true;\n t.Cambria = true;\n t.Cartier = true;\n t.Caslon = true;\n t.Catull = true;\n t.Centaur = true;\n t[\"Century Old Style\"] = true;\n t[\"Century Schoolbook\"] = true;\n t.Chaparral = true;\n t[\"Charis SIL\"] = true;\n t.Cheltenham = true;\n t[\"Cholla Slab\"] = true;\n t.Clarendon = true;\n t.Clearface = true;\n t.Cochin = true;\n t.Colonna = true;\n t[\"Computer Modern\"] = true;\n t[\"Concrete Roman\"] = true;\n t.Constantia = true;\n t[\"Cooper Black\"] = true;\n t.Corona = true;\n t.Ecotype = true;\n t.Egyptienne = true;\n t.Elephant = true;\n t.Excelsior = true;\n t.Fairfield = true;\n t[\"FF Scala\"] = true;\n t.Folkard = true;\n t.Footlight = true;\n t.FreeSerif = true;\n t[\"Friz Quadrata\"] = true;\n t.Garamond = true;\n t.Gentium = true;\n t.Georgia = true;\n t.Gloucester = true;\n t[\"Goudy Old Style\"] = true;\n t[\"Goudy Schoolbook\"] = true;\n t[\"Goudy Pro Font\"] = true;\n t.Granjon = true;\n t[\"Guardian Egyptian\"] = true;\n t.Heather = true;\n t.Hercules = true;\n t[\"High Tower Text\"] = true;\n t.Hiroshige = true;\n t[\"Hoefler Text\"] = true;\n t[\"Humana Serif\"] = true;\n t.Imprint = true;\n t[\"Ionic No. 5\"] = true;\n t.Janson = true;\n t.Joanna = true;\n t.Korinna = true;\n t.Lexicon = true;\n t.LiberationSerif = true;\n t[\"Liberation Serif\"] = true;\n t[\"Linux Libertine\"] = true;\n t.Literaturnaya = true;\n t.Lucida = true;\n t[\"Lucida Bright\"] = true;\n t.Melior = true;\n t.Memphis = true;\n t.Miller = true;\n t.Minion = true;\n t.Modern = true;\n t[\"Mona Lisa\"] = true;\n t[\"Mrs Eaves\"] = true;\n t[\"MS Serif\"] = true;\n t[\"Museo Slab\"] = true;\n t[\"New York\"] = true;\n t[\"Nimbus Roman\"] = true;\n t[\"NPS Rawlinson Roadway\"] = true;\n t.NuptialScript = true;\n t.Palatino = true;\n t.Perpetua = true;\n t.Plantin = true;\n t[\"Plantin Schoolbook\"] = true;\n t.Playbill = true;\n t[\"Poor Richard\"] = true;\n t[\"Rawlinson Roadway\"] = true;\n t.Renault = true;\n t.Requiem = true;\n t.Rockwell = true;\n t.Roman = true;\n t[\"Rotis Serif\"] = true;\n t.Sabon = true;\n t.Scala = true;\n t.Seagull = true;\n t.Sistina = true;\n t.Souvenir = true;\n t.STIX = true;\n t[\"Stone Informal\"] = true;\n t[\"Stone Serif\"] = true;\n t.Sylfaen = true;\n t.Times = true;\n t.Trajan = true;\n t[\"Trinité\"] = true;\n t[\"Trump Mediaeval\"] = true;\n t.Utopia = true;\n t[\"Vale Type\"] = true;\n t[\"Bitstream Vera\"] = true;\n t[\"Vera Serif\"] = true;\n t.Versailles = true;\n t.Wanted = true;\n t.Weiss = true;\n t[\"Wide Latin\"] = true;\n t.Windsor = true;\n t.XITS = true;\n});\n\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n t.Dingbats = true;\n t.Symbol = true;\n t.ZapfDingbats = true;\n});\n\n// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\n// fonts, but does not embed the CID to GID mapping. The mapping is incomplete\n// for all glyphs, but common for some set of the standard fonts.\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n t[2] = 10;\n t[3] = 32;\n t[4] = 33;\n t[5] = 34;\n t[6] = 35;\n t[7] = 36;\n t[8] = 37;\n t[9] = 38;\n t[10] = 39;\n t[11] = 40;\n t[12] = 41;\n t[13] = 42;\n t[14] = 43;\n t[15] = 44;\n t[16] = 45;\n t[17] = 46;\n t[18] = 47;\n t[19] = 48;\n t[20] = 49;\n t[21] = 50;\n t[22] = 51;\n t[23] = 52;\n t[24] = 53;\n t[25] = 54;\n t[26] = 55;\n t[27] = 56;\n t[28] = 57;\n t[29] = 58;\n t[30] = 894;\n t[31] = 60;\n t[32] = 61;\n t[33] = 62;\n t[34] = 63;\n t[35] = 64;\n t[36] = 65;\n t[37] = 66;\n t[38] = 67;\n t[39] = 68;\n t[40] = 69;\n t[41] = 70;\n t[42] = 71;\n t[43] = 72;\n t[44] = 73;\n t[45] = 74;\n t[46] = 75;\n t[47] = 76;\n t[48] = 77;\n t[49] = 78;\n t[50] = 79;\n t[51] = 80;\n t[52] = 81;\n t[53] = 82;\n t[54] = 83;\n t[55] = 84;\n t[56] = 85;\n t[57] = 86;\n t[58] = 87;\n t[59] = 88;\n t[60] = 89;\n t[61] = 90;\n t[62] = 91;\n t[63] = 92;\n t[64] = 93;\n t[65] = 94;\n t[66] = 95;\n t[67] = 96;\n t[68] = 97;\n t[69] = 98;\n t[70] = 99;\n t[71] = 100;\n t[72] = 101;\n t[73] = 102;\n t[74] = 103;\n t[75] = 104;\n t[76] = 105;\n t[77] = 106;\n t[78] = 107;\n t[79] = 108;\n t[80] = 109;\n t[81] = 110;\n t[82] = 111;\n t[83] = 112;\n t[84] = 113;\n t[85] = 114;\n t[86] = 115;\n t[87] = 116;\n t[88] = 117;\n t[89] = 118;\n t[90] = 119;\n t[91] = 120;\n t[92] = 121;\n t[93] = 122;\n t[94] = 123;\n t[95] = 124;\n t[96] = 125;\n t[97] = 126;\n t[98] = 196;\n t[99] = 197;\n t[100] = 199;\n t[101] = 201;\n t[102] = 209;\n t[103] = 214;\n t[104] = 220;\n t[105] = 225;\n t[106] = 224;\n t[107] = 226;\n t[108] = 228;\n t[109] = 227;\n t[110] = 229;\n t[111] = 231;\n t[112] = 233;\n t[113] = 232;\n t[114] = 234;\n t[115] = 235;\n t[116] = 237;\n t[117] = 236;\n t[118] = 238;\n t[119] = 239;\n t[120] = 241;\n t[121] = 243;\n t[122] = 242;\n t[123] = 244;\n t[124] = 246;\n t[125] = 245;\n t[126] = 250;\n t[127] = 249;\n t[128] = 251;\n t[129] = 252;\n t[130] = 8224;\n t[131] = 176;\n t[132] = 162;\n t[133] = 163;\n t[134] = 167;\n t[135] = 8226;\n t[136] = 182;\n t[137] = 223;\n t[138] = 174;\n t[139] = 169;\n t[140] = 8482;\n t[141] = 180;\n t[142] = 168;\n t[143] = 8800;\n t[144] = 198;\n t[145] = 216;\n t[146] = 8734;\n t[147] = 177;\n t[148] = 8804;\n t[149] = 8805;\n t[150] = 165;\n t[151] = 181;\n t[152] = 8706;\n t[153] = 8721;\n t[154] = 8719;\n t[156] = 8747;\n t[157] = 170;\n t[158] = 186;\n t[159] = 8486;\n t[160] = 230;\n t[161] = 248;\n t[162] = 191;\n t[163] = 161;\n t[164] = 172;\n t[165] = 8730;\n t[166] = 402;\n t[167] = 8776;\n t[168] = 8710;\n t[169] = 171;\n t[170] = 187;\n t[171] = 8230;\n t[200] = 193;\n t[203] = 205;\n t[210] = 218;\n t[223] = 711;\n t[224] = 321;\n t[225] = 322;\n t[226] = 352;\n t[227] = 353;\n t[228] = 381;\n t[229] = 382;\n t[233] = 221;\n t[234] = 253;\n t[252] = 263;\n t[253] = 268;\n t[254] = 269;\n t[258] = 258;\n t[260] = 260;\n t[261] = 261;\n t[265] = 280;\n t[266] = 281;\n t[267] = 282;\n t[268] = 283;\n t[269] = 313;\n t[275] = 323;\n t[276] = 324;\n t[278] = 328;\n t[283] = 344;\n t[284] = 345;\n t[285] = 346;\n t[286] = 347;\n t[292] = 367;\n t[295] = 377;\n t[296] = 378;\n t[298] = 380;\n t[305] = 963;\n t[306] = 964;\n t[307] = 966;\n t[308] = 8215;\n t[309] = 8252;\n t[310] = 8319;\n t[311] = 8359;\n t[312] = 8592;\n t[313] = 8593;\n t[337] = 9552;\n t[493] = 1039;\n t[494] = 1040;\n t[705] = 1524;\n t[706] = 8362;\n t[710] = 64288;\n t[711] = 64298;\n t[759] = 1617;\n t[761] = 1776;\n t[763] = 1778;\n t[775] = 1652;\n t[777] = 1764;\n t[778] = 1780;\n t[779] = 1781;\n t[780] = 1782;\n t[782] = 771;\n t[783] = 64726;\n t[786] = 8363;\n t[788] = 8532;\n t[790] = 768;\n t[791] = 769;\n t[792] = 768;\n t[795] = 803;\n t[797] = 64336;\n t[798] = 64337;\n t[799] = 64342;\n t[800] = 64343;\n t[801] = 64344;\n t[802] = 64345;\n t[803] = 64362;\n t[804] = 64363;\n t[805] = 64364;\n t[2424] = 7821;\n t[2425] = 7822;\n t[2426] = 7823;\n t[2427] = 7824;\n t[2428] = 7825;\n t[2429] = 7826;\n t[2430] = 7827;\n t[2433] = 7682;\n t[2678] = 8045;\n t[2679] = 8046;\n t[2830] = 1552;\n t[2838] = 686;\n t[2840] = 751;\n t[2842] = 753;\n t[2843] = 754;\n t[2844] = 755;\n t[2846] = 757;\n t[2856] = 767;\n t[2857] = 848;\n t[2858] = 849;\n t[2862] = 853;\n t[2863] = 854;\n t[2864] = 855;\n t[2865] = 861;\n t[2866] = 862;\n t[2906] = 7460;\n t[2908] = 7462;\n t[2909] = 7463;\n t[2910] = 7464;\n t[2912] = 7466;\n t[2913] = 7467;\n t[2914] = 7468;\n t[2916] = 7470;\n t[2917] = 7471;\n t[2918] = 7472;\n t[2920] = 7474;\n t[2921] = 7475;\n t[2922] = 7476;\n t[2924] = 7478;\n t[2925] = 7479;\n t[2926] = 7480;\n t[2928] = 7482;\n t[2929] = 7483;\n t[2930] = 7484;\n t[2932] = 7486;\n t[2933] = 7487;\n t[2934] = 7488;\n t[2936] = 7490;\n t[2937] = 7491;\n t[2938] = 7492;\n t[2940] = 7494;\n t[2941] = 7495;\n t[2942] = 7496;\n t[2944] = 7498;\n t[2946] = 7500;\n t[2948] = 7502;\n t[2950] = 7504;\n t[2951] = 7505;\n t[2952] = 7506;\n t[2954] = 7508;\n t[2955] = 7509;\n t[2956] = 7510;\n t[2958] = 7512;\n t[2959] = 7513;\n t[2960] = 7514;\n t[2962] = 7516;\n t[2963] = 7517;\n t[2964] = 7518;\n t[2966] = 7520;\n t[2967] = 7521;\n t[2968] = 7522;\n t[2970] = 7524;\n t[2971] = 7525;\n t[2972] = 7526;\n t[2974] = 7528;\n t[2975] = 7529;\n t[2976] = 7530;\n t[2978] = 1537;\n t[2979] = 1538;\n t[2980] = 1539;\n t[2982] = 1549;\n t[2983] = 1551;\n t[2984] = 1552;\n t[2986] = 1554;\n t[2987] = 1555;\n t[2988] = 1556;\n t[2990] = 1623;\n t[2991] = 1624;\n t[2995] = 1775;\n t[2999] = 1791;\n t[3002] = 64290;\n t[3003] = 64291;\n t[3004] = 64292;\n t[3006] = 64294;\n t[3007] = 64295;\n t[3008] = 64296;\n t[3011] = 1900;\n t[3014] = 8223;\n t[3015] = 8244;\n t[3017] = 7532;\n t[3018] = 7533;\n t[3019] = 7534;\n t[3075] = 7590;\n t[3076] = 7591;\n t[3079] = 7594;\n t[3080] = 7595;\n t[3083] = 7598;\n t[3084] = 7599;\n t[3087] = 7602;\n t[3088] = 7603;\n t[3091] = 7606;\n t[3092] = 7607;\n t[3095] = 7610;\n t[3096] = 7611;\n t[3099] = 7614;\n t[3100] = 7615;\n t[3103] = 7618;\n t[3104] = 7619;\n t[3107] = 8337;\n t[3108] = 8338;\n t[3116] = 1884;\n t[3119] = 1885;\n t[3120] = 1885;\n t[3123] = 1886;\n t[3124] = 1886;\n t[3127] = 1887;\n t[3128] = 1887;\n t[3131] = 1888;\n t[3132] = 1888;\n t[3135] = 1889;\n t[3136] = 1889;\n t[3139] = 1890;\n t[3140] = 1890;\n t[3143] = 1891;\n t[3144] = 1891;\n t[3147] = 1892;\n t[3148] = 1892;\n t[3153] = 580;\n t[3154] = 581;\n t[3157] = 584;\n t[3158] = 585;\n t[3161] = 588;\n t[3162] = 589;\n t[3165] = 891;\n t[3166] = 892;\n t[3169] = 1274;\n t[3170] = 1275;\n t[3173] = 1278;\n t[3174] = 1279;\n t[3181] = 7622;\n t[3182] = 7623;\n t[3282] = 11799;\n t[3316] = 578;\n t[3379] = 42785;\n t[3393] = 1159;\n t[3416] = 8377;\n});\n\n// The glyph map for ArialBlack differs slightly from the glyph map used for\n// other well-known standard fonts. Hence we use this (incomplete) CID to GID\n// mapping to adjust the glyph map for non-embedded ArialBlack fonts.\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (\n t\n) {\n t[227] = 322;\n t[264] = 261;\n t[291] = 346;\n});\n\n// The glyph map for Calibri (a Windows font) differs from the glyph map used\n// in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\n// adjust the glyph map for non-embedded Calibri fonts.\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n t[1] = 32;\n t[4] = 65;\n t[6] = 193;\n t[17] = 66;\n t[18] = 67;\n t[21] = 268;\n t[24] = 68;\n t[28] = 69;\n t[30] = 201;\n t[32] = 282;\n t[38] = 70;\n t[39] = 71;\n t[44] = 72;\n t[47] = 73;\n t[49] = 205;\n t[58] = 74;\n t[60] = 75;\n t[62] = 76;\n t[68] = 77;\n t[69] = 78;\n t[75] = 79;\n t[87] = 80;\n t[89] = 81;\n t[90] = 82;\n t[92] = 344;\n t[94] = 83;\n t[97] = 352;\n t[100] = 84;\n t[104] = 85;\n t[115] = 86;\n t[116] = 87;\n t[121] = 88;\n t[122] = 89;\n t[124] = 221;\n t[127] = 90;\n t[129] = 381;\n t[258] = 97;\n t[260] = 225;\n t[268] = 261;\n t[271] = 98;\n t[272] = 99;\n t[273] = 263;\n t[275] = 269;\n t[282] = 100;\n t[286] = 101;\n t[288] = 233;\n t[290] = 283;\n t[295] = 281;\n t[296] = 102;\n t[336] = 103;\n t[346] = 104;\n t[349] = 105;\n t[351] = 237;\n t[361] = 106;\n t[364] = 107;\n t[367] = 108;\n t[371] = 322;\n t[373] = 109;\n t[374] = 110;\n t[381] = 111;\n t[383] = 243;\n t[393] = 112;\n t[395] = 113;\n t[396] = 114;\n t[398] = 345;\n t[400] = 115;\n t[401] = 347;\n t[403] = 353;\n t[410] = 116;\n t[437] = 117;\n t[448] = 118;\n t[449] = 119;\n t[454] = 120;\n t[455] = 121;\n t[457] = 253;\n t[460] = 122;\n t[462] = 382;\n t[463] = 380;\n t[853] = 44;\n t[855] = 58;\n t[856] = 46;\n t[876] = 47;\n t[878] = 45;\n t[882] = 45;\n t[894] = 40;\n t[895] = 41;\n t[896] = 91;\n t[897] = 93;\n t[923] = 64;\n t[1004] = 48;\n t[1005] = 49;\n t[1006] = 50;\n t[1007] = 51;\n t[1008] = 52;\n t[1009] = 53;\n t[1010] = 54;\n t[1011] = 55;\n t[1012] = 56;\n t[1013] = 57;\n t[1081] = 37;\n t[1085] = 43;\n t[1086] = 45;\n});\n\nfunction getStandardFontName(name) {\n const fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap();\n return stdFontMap[fontName];\n}\n\nexport {\n getFontNameToFileMap,\n getGlyphMapForStandardFonts,\n getNonStdFontMap,\n getSerifFonts,\n getStandardFontName,\n getStdFontMap,\n getSupplementalGlyphMapForArialBlack,\n getSupplementalGlyphMapForCalibri,\n getSymbolsFonts,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { unreachable } from \"../shared/util.js\";\n\nclass ToUnicodeMap {\n constructor(cmap = []) {\n // The elements of this._map can be integers or strings, depending on how\n // `cmap` was created.\n this._map = cmap;\n }\n\n get length() {\n return this._map.length;\n }\n\n forEach(callback) {\n for (const charCode in this._map) {\n callback(charCode, this._map[charCode].charCodeAt(0));\n }\n }\n\n has(i) {\n return this._map[i] !== undefined;\n }\n\n get(i) {\n return this._map[i];\n }\n\n charCodeOf(value) {\n // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n // are both very sparse and very large (see issue8372.pdf).\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n\n amend(map) {\n for (const charCode in map) {\n this._map[charCode] = map[charCode];\n }\n }\n}\n\nclass IdentityToUnicodeMap {\n constructor(firstChar, lastChar) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n }\n\n get length() {\n return this.lastChar + 1 - this.firstChar;\n }\n\n forEach(callback) {\n for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n callback(i, i);\n }\n }\n\n has(i) {\n return this.firstChar <= i && i <= this.lastChar;\n }\n\n get(i) {\n if (this.firstChar <= i && i <= this.lastChar) {\n return String.fromCharCode(i);\n }\n return undefined;\n }\n\n charCodeOf(v) {\n return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar\n ? v\n : -1;\n }\n\n amend(map) {\n unreachable(\"Should not call amend()\");\n }\n}\n\nexport { IdentityToUnicodeMap, ToUnicodeMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nclass CFFFont {\n constructor(file, properties) {\n this.properties = properties;\n\n const parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n this.cff = parser.parse();\n this.cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(this.cff);\n this.seacs = this.cff.seacs;\n try {\n this.data = compiler.compile();\n } catch (e) {\n warn(\"Failed to compile font \" + properties.loadedName);\n // There may have just been an issue with the compiler, set the data\n // anyway and hope the font loaded.\n this.data = file;\n }\n this._createBuiltInEncoding();\n }\n\n get numGlyphs() {\n return this.cff.charStrings.count;\n }\n\n getCharset() {\n return this.cff.charset.charset;\n }\n\n getGlyphMapping() {\n const cff = this.cff;\n const properties = this.properties;\n const charsets = cff.charset.charset;\n let charCodeToGlyphId;\n let glyphId;\n\n if (properties.composite) {\n charCodeToGlyphId = Object.create(null);\n let charCode;\n if (cff.isCIDFont) {\n // If the font is actually a CID font then we should use the charset\n // to map CIDs to GIDs.\n for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n const cid = charsets[glyphId];\n charCode = properties.cMap.charCodeOf(cid);\n charCodeToGlyphId[charCode] = glyphId;\n }\n } else {\n // If it is NOT actually a CID font then CIDs should be mapped\n // directly to GIDs.\n for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n charCode = properties.cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId;\n }\n }\n return charCodeToGlyphId;\n }\n\n let encoding = cff.encoding ? cff.encoding.encoding : null;\n if (properties.isInternalFont) {\n encoding = properties.defaultEncoding;\n }\n charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n return charCodeToGlyphId;\n }\n\n hasGlyphId(id) {\n return this.cff.hasGlyphId(id);\n }\n\n /**\n * @private\n */\n _createBuiltInEncoding() {\n const { charset, encoding } = this.cff;\n if (!charset || !encoding) {\n return;\n }\n const charsets = charset.charset,\n encodings = encoding.encoding;\n const map = [];\n\n for (const charCode in encodings) {\n const glyphId = encodings[charCode];\n if (glyphId >= 0) {\n const glyphName = charsets[glyphId];\n if (glyphName) {\n map[charCode] = glyphName;\n }\n }\n }\n if (map.length > 0) {\n this.properties.builtInEncoding = map;\n }\n }\n}\n\nexport { CFFFont };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FONT_IDENTITY_MATRIX,\n FormatError,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { CFFParser } from \"./cff_parser.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { StandardEncoding } from \"./encodings.js\";\nimport { Stream } from \"./stream.js\";\n\n// TODO: use DataView and its methods.\n\nfunction getUint32(data, offset) {\n return (\n ((data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]) >>>\n 0\n );\n}\n\nfunction getUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction getInt16(data, offset) {\n return ((data[offset] << 24) | (data[offset + 1] << 16)) >> 16;\n}\n\nfunction getInt8(data, offset) {\n return (data[offset] << 24) >> 24;\n}\n\nfunction getFloat214(data, offset) {\n return getInt16(data, offset) / 16384;\n}\n\nfunction getSubroutineBias(subrs) {\n const numSubrs = subrs.length;\n let bias = 32768;\n if (numSubrs < 1240) {\n bias = 107;\n } else if (numSubrs < 33900) {\n bias = 1131;\n }\n return bias;\n}\n\nfunction parseCmap(data, start, end) {\n const offset =\n getUint16(data, start + 2) === 1\n ? getUint32(data, start + 8)\n : getUint32(data, start + 16);\n const format = getUint16(data, start + offset);\n let ranges, p, i;\n if (format === 4) {\n getUint16(data, start + offset + 2); // length\n const segCount = getUint16(data, start + offset + 6) >> 1;\n p = start + offset + 14;\n ranges = [];\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i] = { end: getUint16(data, p) };\n }\n p += 2;\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].start = getUint16(data, p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].idDelta = getUint16(data, p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n let idOffset = getUint16(data, p);\n if (idOffset === 0) {\n continue;\n }\n ranges[i].ids = [];\n for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n ranges[i].ids[j] = getUint16(data, p + idOffset);\n idOffset += 2;\n }\n }\n return ranges;\n } else if (format === 12) {\n const groups = getUint32(data, start + offset + 12);\n p = start + offset + 16;\n ranges = [];\n for (i = 0; i < groups; i++) {\n start = getUint32(data, p);\n ranges.push({\n start,\n end: getUint32(data, p + 4),\n idDelta: getUint32(data, p + 8) - start,\n });\n p += 12;\n }\n return ranges;\n }\n throw new FormatError(`unsupported cmap: ${format}`);\n}\n\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\n const properties = {};\n const parser = new CFFParser(\n new Stream(data, start, end - start),\n properties,\n seacAnalysisEnabled\n );\n const cff = parser.parse();\n return {\n glyphs: cff.charStrings.objects,\n subrs:\n cff.topDict.privateDict &&\n cff.topDict.privateDict.subrsIndex &&\n cff.topDict.privateDict.subrsIndex.objects,\n gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n isCFFCIDFont: cff.isCIDFont,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n };\n}\n\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n let itemSize, itemDecode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = getUint32;\n } else {\n itemSize = 2;\n itemDecode = (data, offset) => 2 * getUint16(data, offset);\n }\n const glyphs = [];\n let startOffset = itemDecode(loca, 0);\n for (let j = itemSize; j < loca.length; j += itemSize) {\n const endOffset = itemDecode(loca, j);\n glyphs.push(glyf.subarray(startOffset, endOffset));\n startOffset = endOffset;\n }\n return glyphs;\n}\n\nfunction lookupCmap(ranges, unicode) {\n const code = unicode.codePointAt(0);\n let gid = 0,\n l = 0,\n r = ranges.length - 1;\n while (l < r) {\n const c = (l + r + 1) >> 1;\n if (code < ranges[c].start) {\n r = c - 1;\n } else {\n l = c;\n }\n }\n if (ranges[l].start <= code && code <= ranges[l].end) {\n gid =\n (ranges[l].idDelta +\n (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code)) &\n 0xffff;\n }\n return {\n charCode: code,\n glyphId: gid,\n };\n}\n\nfunction compileGlyf(code, cmds, font) {\n function moveTo(x, y) {\n cmds.push({ cmd: \"moveTo\", args: [x, y] });\n }\n function lineTo(x, y) {\n cmds.push({ cmd: \"lineTo\", args: [x, y] });\n }\n function quadraticCurveTo(xa, ya, x, y) {\n cmds.push({ cmd: \"quadraticCurveTo\", args: [xa, ya, x, y] });\n }\n\n let i = 0;\n const numberOfContours = getInt16(code, i);\n let flags;\n let x = 0,\n y = 0;\n i += 10;\n if (numberOfContours < 0) {\n // composite glyph\n do {\n flags = getUint16(code, i);\n const glyphIndex = getUint16(code, i + 2);\n i += 4;\n let arg1, arg2;\n if (flags & 0x01) {\n if (flags & 0x02) {\n arg1 = getInt16(code, i);\n arg2 = getInt16(code, i + 2);\n } else {\n arg1 = getUint16(code, i);\n arg2 = getUint16(code, i + 2);\n }\n i += 4;\n } else {\n if (flags & 0x02) {\n arg1 = getInt8(code, i++);\n arg2 = getInt8(code, i++);\n } else {\n arg1 = code[i++];\n arg2 = code[i++];\n }\n }\n if (flags & 0x02) {\n x = arg1;\n y = arg2;\n } else {\n x = 0;\n y = 0;\n }\n let scaleX = 1,\n scaleY = 1,\n scale01 = 0,\n scale10 = 0;\n if (flags & 0x08) {\n scaleX = scaleY = getFloat214(code, i);\n i += 2;\n } else if (flags & 0x40) {\n scaleX = getFloat214(code, i);\n scaleY = getFloat214(code, i + 2);\n i += 4;\n } else if (flags & 0x80) {\n scaleX = getFloat214(code, i);\n scale01 = getFloat214(code, i + 2);\n scale10 = getFloat214(code, i + 4);\n scaleY = getFloat214(code, i + 6);\n i += 8;\n }\n const subglyph = font.glyphs[glyphIndex];\n if (subglyph) {\n // TODO: the transform should be applied only if there is a scale:\n // https://github.com/freetype/freetype/blob/edd4fedc5427cf1cf1f4b045e53ff91eb282e9d4/src/truetype/ttgload.c#L1205\n cmds.push(\n { cmd: \"save\" },\n {\n cmd: \"transform\",\n args: [scaleX, scale01, scale10, scaleY, x, y],\n }\n );\n\n if (!(flags & 0x02)) {\n // TODO: we must use arg1 and arg2 to make something similar to:\n // https://github.com/freetype/freetype/blob/edd4fedc5427cf1cf1f4b045e53ff91eb282e9d4/src/truetype/ttgload.c#L1209\n }\n compileGlyf(subglyph, cmds, font);\n cmds.push({ cmd: \"restore\" });\n }\n } while (flags & 0x20);\n } else {\n // simple glyph\n const endPtsOfContours = [];\n let j, jj;\n for (j = 0; j < numberOfContours; j++) {\n endPtsOfContours.push(getUint16(code, i));\n i += 2;\n }\n const instructionLength = getUint16(code, i);\n i += 2 + instructionLength; // skipping the instructions\n const numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n const points = [];\n while (points.length < numberOfPoints) {\n flags = code[i++];\n let repeat = 1;\n if (flags & 0x08) {\n repeat += code[i++];\n }\n while (repeat-- > 0) {\n points.push({ flags });\n }\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x12) {\n case 0x00:\n x += getInt16(code, i);\n i += 2;\n break;\n case 0x02:\n x -= code[i++];\n break;\n case 0x12:\n x += code[i++];\n break;\n }\n points[j].x = x;\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x24) {\n case 0x00:\n y += getInt16(code, i);\n i += 2;\n break;\n case 0x04:\n y -= code[i++];\n break;\n case 0x24:\n y += code[i++];\n break;\n }\n points[j].y = y;\n }\n\n let startPoint = 0;\n for (i = 0; i < numberOfContours; i++) {\n const endPoint = endPtsOfContours[i];\n // contours might have implicit points, which is located in the middle\n // between two neighboring off-curve points\n const contour = points.slice(startPoint, endPoint + 1);\n if (contour[0].flags & 1) {\n contour.push(contour[0]); // using start point at the contour end\n } else if (contour[contour.length - 1].flags & 1) {\n // first is off-curve point, trying to use one from the end\n contour.unshift(contour[contour.length - 1]);\n } else {\n // start and end are off-curve points, creating implicit one\n const p = {\n flags: 1,\n x: (contour[0].x + contour[contour.length - 1].x) / 2,\n y: (contour[0].y + contour[contour.length - 1].y) / 2,\n };\n contour.unshift(p);\n contour.push(p);\n }\n moveTo(contour[0].x, contour[0].y);\n for (j = 1, jj = contour.length; j < jj; j++) {\n if (contour[j].flags & 1) {\n lineTo(contour[j].x, contour[j].y);\n } else if (contour[j + 1].flags & 1) {\n quadraticCurveTo(\n contour[j].x,\n contour[j].y,\n contour[j + 1].x,\n contour[j + 1].y\n );\n j++;\n } else {\n quadraticCurveTo(\n contour[j].x,\n contour[j].y,\n (contour[j].x + contour[j + 1].x) / 2,\n (contour[j].y + contour[j + 1].y) / 2\n );\n }\n }\n startPoint = endPoint + 1;\n }\n }\n}\n\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\n function moveTo(x, y) {\n cmds.push({ cmd: \"moveTo\", args: [x, y] });\n }\n function lineTo(x, y) {\n cmds.push({ cmd: \"lineTo\", args: [x, y] });\n }\n function bezierCurveTo(x1, y1, x2, y2, x, y) {\n cmds.push({ cmd: \"bezierCurveTo\", args: [x1, y1, x2, y2, x, y] });\n }\n\n const stack = [];\n let x = 0,\n y = 0;\n let stems = 0;\n\n function parse(code) {\n let i = 0;\n while (i < code.length) {\n let stackClean = false;\n let v = code[i++];\n let xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n switch (v) {\n case 1: // hstem\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 3: // vstem\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 4: // vmoveto\n y += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 5: // rlineto\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 6: // hlineto\n while (stack.length > 0) {\n x += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 7: // vlineto\n while (stack.length > 0) {\n y += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n x += stack.shift();\n lineTo(x, y);\n }\n break;\n case 8: // rrcurveto\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 10: // callsubr\n n = stack.pop();\n subrCode = null;\n if (font.isCFFCIDFont) {\n const fdIndex = font.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n const fontDict = font.fdArray[fdIndex];\n let subrs;\n if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n subrs = fontDict.privateDict.subrsIndex.objects;\n }\n if (subrs) {\n // Add subroutine bias.\n n += getSubroutineBias(subrs);\n subrCode = subrs[n];\n }\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n } else {\n subrCode = font.subrs[n + font.subrsBias];\n }\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 11: // return\n return;\n case 12:\n v = code[i++];\n switch (v) {\n case 34: // flex\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y1 = y + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y, xb, y1, x, y1);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y, x, y);\n break;\n case 35: // flex\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n stack.pop(); // fd\n break;\n case 36: // hflex1\n xa = x + stack.shift();\n y1 = y + stack.shift();\n xb = xa + stack.shift();\n y2 = y1 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y2, x, y2);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y3 = y2 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y2, xb, y3, x, y);\n break;\n case 37: // flex1\n const x0 = x,\n y0 = y;\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb;\n if (Math.abs(x - x0) > Math.abs(y - y0)) {\n x += stack.shift();\n } else {\n y += stack.shift();\n }\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n default:\n throw new FormatError(`unknown operator: 12 ${v}`);\n }\n break;\n case 14: // endchar\n if (stack.length >= 4) {\n const achar = stack.pop();\n const bchar = stack.pop();\n y = stack.pop();\n x = stack.pop();\n cmds.push({ cmd: \"save\" }, { cmd: \"translate\", args: [x, y] });\n let cmap = lookupCmap(\n font.cmap,\n String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])\n );\n compileCharString(\n font.glyphs[cmap.glyphId],\n cmds,\n font,\n cmap.glyphId\n );\n cmds.push({ cmd: \"restore\" });\n\n cmap = lookupCmap(\n font.cmap,\n String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])\n );\n compileCharString(\n font.glyphs[cmap.glyphId],\n cmds,\n font,\n cmap.glyphId\n );\n }\n return;\n case 18: // hstemhm\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 19: // hintmask\n stems += stack.length >> 1;\n i += (stems + 7) >> 3;\n stackClean = true;\n break;\n case 20: // cntrmask\n stems += stack.length >> 1;\n i += (stems + 7) >> 3;\n stackClean = true;\n break;\n case 21: // rmoveto\n y += stack.pop();\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 22: // hmoveto\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 23: // vstemhm\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 24: // rcurveline\n while (stack.length > 2) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n break;\n case 25: // rlinecurve\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n case 26: // vvcurveto\n if (stack.length % 2) {\n x += stack.shift();\n }\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 27: // hhcurveto\n if (stack.length % 2) {\n y += stack.shift();\n }\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb;\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 28:\n stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);\n i += 2;\n break;\n case 29: // callgsubr\n n = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[n];\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 30: // vhcurveto\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 31: // hvcurveto\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n default:\n if (v < 32) {\n throw new FormatError(`unknown operator: ${v}`);\n }\n if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n stack.push((v - 247) * 256 + code[i++] + 108);\n } else if (v < 255) {\n stack.push(-(v - 251) * 256 - code[i++] - 108);\n } else {\n stack.push(\n ((code[i] << 24) |\n (code[i + 1] << 16) |\n (code[i + 2] << 8) |\n code[i + 3]) /\n 65536\n );\n i += 4;\n }\n break;\n }\n if (stackClean) {\n stack.length = 0;\n }\n }\n }\n parse(charStringCode);\n}\n\nconst NOOP = [];\n\nclass CompiledFont {\n constructor(fontMatrix) {\n if (this.constructor === CompiledFont) {\n unreachable(\"Cannot initialize CompiledFont.\");\n }\n this.fontMatrix = fontMatrix;\n\n this.compiledGlyphs = Object.create(null);\n this.compiledCharCodeToGlyphId = Object.create(null);\n }\n\n getPathJs(unicode) {\n const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n let fn = this.compiledGlyphs[glyphId];\n if (!fn) {\n try {\n fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\n this.compiledGlyphs[glyphId] = fn;\n } catch (ex) {\n // Avoid attempting to re-compile a corrupt glyph.\n this.compiledGlyphs[glyphId] = NOOP;\n\n if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n this.compiledCharCodeToGlyphId[charCode] = glyphId;\n }\n throw ex;\n }\n }\n if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n this.compiledCharCodeToGlyphId[charCode] = glyphId;\n }\n return fn;\n }\n\n compileGlyph(code, glyphId) {\n if (!code || code.length === 0 || code[0] === 14) {\n return NOOP;\n }\n\n let fontMatrix = this.fontMatrix;\n if (this.isCFFCIDFont) {\n // Top DICT's FontMatrix can be ignored because CFFCompiler always\n // removes it and copies to FDArray DICTs.\n const fdIndex = this.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n const fontDict = this.fdArray[fdIndex];\n fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n }\n\n const cmds = [\n { cmd: \"save\" },\n { cmd: \"transform\", args: fontMatrix.slice() },\n { cmd: \"scale\", args: [\"size\", \"-size\"] },\n ];\n this.compileGlyphImpl(code, cmds, glyphId);\n\n cmds.push({ cmd: \"restore\" });\n\n return cmds;\n }\n\n compileGlyphImpl() {\n unreachable(\"Children classes should implement this.\");\n }\n\n hasBuiltPath(unicode) {\n const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n return (\n this.compiledGlyphs[glyphId] !== undefined &&\n this.compiledCharCodeToGlyphId[charCode] !== undefined\n );\n }\n}\n\nclass TrueTypeCompiled extends CompiledFont {\n constructor(glyphs, cmap, fontMatrix) {\n super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n\n this.glyphs = glyphs;\n this.cmap = cmap;\n }\n\n compileGlyphImpl(code, cmds) {\n compileGlyf(code, cmds, this);\n }\n}\n\nclass Type2Compiled extends CompiledFont {\n constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n\n this.glyphs = cffInfo.glyphs;\n this.gsubrs = cffInfo.gsubrs || [];\n this.subrs = cffInfo.subrs || [];\n this.cmap = cmap;\n this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n\n this.gsubrsBias = getSubroutineBias(this.gsubrs);\n this.subrsBias = getSubroutineBias(this.subrs);\n\n this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n this.fdSelect = cffInfo.fdSelect;\n this.fdArray = cffInfo.fdArray;\n }\n\n compileGlyphImpl(code, cmds, glyphId) {\n compileCharString(code, cmds, this, glyphId);\n }\n}\n\nclass FontRendererFactory {\n static create(font, seacAnalysisEnabled) {\n const data = new Uint8Array(font.data);\n let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n const numTables = getUint16(data, 4);\n for (let i = 0, p = 12; i < numTables; i++, p += 16) {\n const tag = bytesToString(data.subarray(p, p + 4));\n const offset = getUint32(data, p + 8);\n const length = getUint32(data, p + 12);\n switch (tag) {\n case \"cmap\":\n cmap = parseCmap(data, offset, offset + length);\n break;\n case \"glyf\":\n glyf = data.subarray(offset, offset + length);\n break;\n case \"loca\":\n loca = data.subarray(offset, offset + length);\n break;\n case \"head\":\n unitsPerEm = getUint16(data, offset + 18);\n indexToLocFormat = getUint16(data, offset + 50);\n break;\n case \"CFF \":\n cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n break;\n }\n }\n\n if (glyf) {\n const fontMatrix = !unitsPerEm\n ? font.fontMatrix\n : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n return new TrueTypeCompiled(\n parseGlyfTable(glyf, loca, indexToLocFormat),\n cmap,\n fontMatrix\n );\n }\n return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n }\n}\n\nexport { FontRendererFactory };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n// The Metrics object contains glyph widths (in glyph space units).\n// As per PDF spec, for most fonts (Type 3 being an exception) a glyph\n// space unit corresponds to 1/1000th of text space unit.\nconst getMetrics = getLookupTableFactory(function (t) {\n t.Courier = 600;\n t[\"Courier-Bold\"] = 600;\n t[\"Courier-BoldOblique\"] = 600;\n t[\"Courier-Oblique\"] = 600;\n // eslint-disable-next-line no-shadow\n t.Helvetica = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-Oblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t.Symbol = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.universal = 713;\n t.numbersign = 500;\n t.existential = 549;\n t.percent = 833;\n t.ampersand = 778;\n t.suchthat = 439;\n t.parenleft = 333;\n t.parenright = 333;\n t.asteriskmath = 500;\n t.plus = 549;\n t.comma = 250;\n t.minus = 549;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 549;\n t.equal = 549;\n t.greater = 549;\n t.question = 444;\n t.congruent = 549;\n t.Alpha = 722;\n t.Beta = 667;\n t.Chi = 722;\n t.Delta = 612;\n t.Epsilon = 611;\n t.Phi = 763;\n t.Gamma = 603;\n t.Eta = 722;\n t.Iota = 333;\n t.theta1 = 631;\n t.Kappa = 722;\n t.Lambda = 686;\n t.Mu = 889;\n t.Nu = 722;\n t.Omicron = 722;\n t.Pi = 768;\n t.Theta = 741;\n t.Rho = 556;\n t.Sigma = 592;\n t.Tau = 611;\n t.Upsilon = 690;\n t.sigma1 = 439;\n t.Omega = 768;\n t.Xi = 645;\n t.Psi = 795;\n t.Zeta = 611;\n t.bracketleft = 333;\n t.therefore = 863;\n t.bracketright = 333;\n t.perpendicular = 658;\n t.underscore = 500;\n t.radicalex = 500;\n t.alpha = 631;\n t.beta = 549;\n t.chi = 549;\n t.delta = 494;\n t.epsilon = 439;\n t.phi = 521;\n t.gamma = 411;\n t.eta = 603;\n t.iota = 329;\n t.phi1 = 603;\n t.kappa = 549;\n t.lambda = 549;\n t.mu = 576;\n t.nu = 521;\n t.omicron = 549;\n t.pi = 549;\n t.theta = 521;\n t.rho = 549;\n t.sigma = 603;\n t.tau = 439;\n t.upsilon = 576;\n t.omega1 = 713;\n t.omega = 686;\n t.xi = 493;\n t.psi = 686;\n t.zeta = 494;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.similar = 549;\n t.Euro = 750;\n t.Upsilon1 = 620;\n t.minute = 247;\n t.lessequal = 549;\n t.fraction = 167;\n t.infinity = 713;\n t.florin = 500;\n t.club = 753;\n t.diamond = 753;\n t.heart = 753;\n t.spade = 753;\n t.arrowboth = 1042;\n t.arrowleft = 987;\n t.arrowup = 603;\n t.arrowright = 987;\n t.arrowdown = 603;\n t.degree = 400;\n t.plusminus = 549;\n t.second = 411;\n t.greaterequal = 549;\n t.multiply = 549;\n t.proportional = 713;\n t.partialdiff = 494;\n t.bullet = 460;\n t.divide = 549;\n t.notequal = 549;\n t.equivalence = 549;\n t.approxequal = 549;\n t.ellipsis = 1000;\n t.arrowvertex = 603;\n t.arrowhorizex = 1000;\n t.carriagereturn = 658;\n t.aleph = 823;\n t.Ifraktur = 686;\n t.Rfraktur = 795;\n t.weierstrass = 987;\n t.circlemultiply = 768;\n t.circleplus = 768;\n t.emptyset = 823;\n t.intersection = 768;\n t.union = 768;\n t.propersuperset = 713;\n t.reflexsuperset = 713;\n t.notsubset = 713;\n t.propersubset = 713;\n t.reflexsubset = 713;\n t.element = 713;\n t.notelement = 713;\n t.angle = 768;\n t.gradient = 713;\n t.registerserif = 790;\n t.copyrightserif = 790;\n t.trademarkserif = 890;\n t.product = 823;\n t.radical = 549;\n t.dotmath = 250;\n t.logicalnot = 713;\n t.logicaland = 603;\n t.logicalor = 603;\n t.arrowdblboth = 1042;\n t.arrowdblleft = 987;\n t.arrowdblup = 603;\n t.arrowdblright = 987;\n t.arrowdbldown = 603;\n t.lozenge = 494;\n t.angleleft = 329;\n t.registersans = 790;\n t.copyrightsans = 790;\n t.trademarksans = 786;\n t.summation = 713;\n t.parenlefttp = 384;\n t.parenleftex = 384;\n t.parenleftbt = 384;\n t.bracketlefttp = 384;\n t.bracketleftex = 384;\n t.bracketleftbt = 384;\n t.bracelefttp = 494;\n t.braceleftmid = 494;\n t.braceleftbt = 494;\n t.braceex = 494;\n t.angleright = 329;\n t.integral = 274;\n t.integraltp = 686;\n t.integralex = 686;\n t.integralbt = 686;\n t.parenrighttp = 384;\n t.parenrightex = 384;\n t.parenrightbt = 384;\n t.bracketrighttp = 384;\n t.bracketrightex = 384;\n t.bracketrightbt = 384;\n t.bracerighttp = 494;\n t.bracerightmid = 494;\n t.bracerightbt = 494;\n t.apple = 790;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Roman\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 408;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 564;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 564;\n t.equal = 564;\n t.greater = 564;\n t.question = 444;\n t.at = 921;\n t.A = 722;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 556;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 389;\n t.K = 722;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 556;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 722;\n t.W = 944;\n t.X = 722;\n t.Y = 722;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 469;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 444;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 333;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.asciitilde = 541;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 180;\n t.quotedblleft = 444;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 453;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 444;\n t.quotedblright = 444;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 444;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 889;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 444;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 564;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 444;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 444;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 444;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 444;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 444;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 444;\n t.Amacron = 722;\n t.rcaron = 333;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 556;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 588;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 564;\n t.uacute = 500;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 444;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 722;\n t.Iacute = 333;\n t.plusminus = 564;\n t.brokenbar = 200;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 333;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 326;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 444;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 344;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 722;\n t.zdotaccent = 444;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 500;\n t.minus = 564;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 564;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 1000;\n t.ampersand = 833;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 930;\n t.A = 722;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 778;\n t.L = 667;\n t.M = 944;\n t.N = 722;\n t.O = 778;\n t.P = 611;\n t.Q = 778;\n t.R = 722;\n t.S = 556;\n t.T = 667;\n t.U = 722;\n t.V = 722;\n t.W = 1000;\n t.X = 722;\n t.Y = 722;\n t.Z = 667;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 581;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 556;\n t.c = 444;\n t.d = 556;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 333;\n t.k = 556;\n t.l = 278;\n t.m = 833;\n t.n = 556;\n t.o = 500;\n t.p = 556;\n t.q = 556;\n t.r = 444;\n t.s = 389;\n t.t = 333;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 394;\n t.bar = 220;\n t.braceright = 394;\n t.asciitilde = 520;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 540;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 300;\n t.Lslash = 667;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 330;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 556;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 570;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 667;\n t.Cacute = 722;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 722;\n t.rcaron = 444;\n t.ccedilla = 444;\n t.Zdotaccent = 667;\n t.Thorn = 611;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 556;\n t.dcaron = 672;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 667;\n t.partialdiff = 494;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 778;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 444;\n t.omacron = 500;\n t.Zacute = 667;\n t.Zcaron = 667;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 416;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 300;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 394;\n t.Kcommaaccent = 778;\n t.Lacute = 667;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 667;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 444;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 667;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 444;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 556;\n t.minus = 570;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 333;\n t.logicalnot = 570;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-BoldItalic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 389;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 832;\n t.A = 667;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 667;\n t.F = 667;\n t.G = 722;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 667;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 889;\n t.X = 667;\n t.Y = 611;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 570;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 556;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 556;\n t.v = 444;\n t.w = 667;\n t.x = 500;\n t.y = 444;\n t.z = 389;\n t.braceleft = 348;\n t.bar = 220;\n t.braceright = 348;\n t.asciitilde = 570;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 500;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 944;\n t.ordfeminine = 266;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 300;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 611;\n t.divide = 570;\n t.Yacute = 611;\n t.Acircumflex = 667;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 667;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 608;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 444;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 722;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 366;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 576;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 382;\n t.Kcommaaccent = 667;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 500;\n t.minus = 606;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 606;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Italic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 420;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 675;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 675;\n t.equal = 675;\n t.greater = 675;\n t.question = 500;\n t.at = 920;\n t.A = 611;\n t.B = 611;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 611;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 444;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 667;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 611;\n t.S = 500;\n t.T = 556;\n t.U = 722;\n t.V = 611;\n t.W = 833;\n t.X = 611;\n t.Y = 556;\n t.Z = 556;\n t.bracketleft = 389;\n t.backslash = 278;\n t.bracketright = 389;\n t.asciicircum = 422;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 278;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 444;\n t.l = 278;\n t.m = 722;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 444;\n t.w = 667;\n t.x = 444;\n t.y = 444;\n t.z = 389;\n t.braceleft = 400;\n t.bar = 275;\n t.braceright = 400;\n t.asciitilde = 541;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 214;\n t.quotedblleft = 556;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 523;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 556;\n t.quotedblright = 556;\n t.guillemotright = 500;\n t.ellipsis = 889;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 889;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 556;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 667;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 556;\n t.divide = 675;\n t.Yacute = 556;\n t.Acircumflex = 611;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 667;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 556;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 611;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 500;\n t.Amacron = 611;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 556;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 611;\n t.Sacute = 500;\n t.dcaron = 544;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 611;\n t.Abreve = 611;\n t.multiply = 675;\n t.uacute = 500;\n t.Tcaron = 556;\n t.partialdiff = 476;\n t.ydieresis = 444;\n t.Nacute = 667;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 667;\n t.Iacute = 333;\n t.plusminus = 675;\n t.brokenbar = 275;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 556;\n t.Zcaron = 556;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 300;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 611;\n t.Adieresis = 611;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 500;\n t.lcaron = 300;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 500;\n t.Scommaaccent = 500;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 667;\n t.otilde = 500;\n t.Rcommaaccent = 611;\n t.Lcommaaccent = 556;\n t.Atilde = 611;\n t.Aogonek = 611;\n t.Aring = 611;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 444;\n t.minus = 675;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 675;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t.ZapfDingbats = getLookupTableFactory(function (t) {\n t.space = 278;\n t.a1 = 974;\n t.a2 = 961;\n t.a202 = 974;\n t.a3 = 980;\n t.a4 = 719;\n t.a5 = 789;\n t.a119 = 790;\n t.a118 = 791;\n t.a117 = 690;\n t.a11 = 960;\n t.a12 = 939;\n t.a13 = 549;\n t.a14 = 855;\n t.a15 = 911;\n t.a16 = 933;\n t.a105 = 911;\n t.a17 = 945;\n t.a18 = 974;\n t.a19 = 755;\n t.a20 = 846;\n t.a21 = 762;\n t.a22 = 761;\n t.a23 = 571;\n t.a24 = 677;\n t.a25 = 763;\n t.a26 = 760;\n t.a27 = 759;\n t.a28 = 754;\n t.a6 = 494;\n t.a7 = 552;\n t.a8 = 537;\n t.a9 = 577;\n t.a10 = 692;\n t.a29 = 786;\n t.a30 = 788;\n t.a31 = 788;\n t.a32 = 790;\n t.a33 = 793;\n t.a34 = 794;\n t.a35 = 816;\n t.a36 = 823;\n t.a37 = 789;\n t.a38 = 841;\n t.a39 = 823;\n t.a40 = 833;\n t.a41 = 816;\n t.a42 = 831;\n t.a43 = 923;\n t.a44 = 744;\n t.a45 = 723;\n t.a46 = 749;\n t.a47 = 790;\n t.a48 = 792;\n t.a49 = 695;\n t.a50 = 776;\n t.a51 = 768;\n t.a52 = 792;\n t.a53 = 759;\n t.a54 = 707;\n t.a55 = 708;\n t.a56 = 682;\n t.a57 = 701;\n t.a58 = 826;\n t.a59 = 815;\n t.a60 = 789;\n t.a61 = 789;\n t.a62 = 707;\n t.a63 = 687;\n t.a64 = 696;\n t.a65 = 689;\n t.a66 = 786;\n t.a67 = 787;\n t.a68 = 713;\n t.a69 = 791;\n t.a70 = 785;\n t.a71 = 791;\n t.a72 = 873;\n t.a73 = 761;\n t.a74 = 762;\n t.a203 = 762;\n t.a75 = 759;\n t.a204 = 759;\n t.a76 = 892;\n t.a77 = 892;\n t.a78 = 788;\n t.a79 = 784;\n t.a81 = 438;\n t.a82 = 138;\n t.a83 = 277;\n t.a84 = 415;\n t.a97 = 392;\n t.a98 = 392;\n t.a99 = 668;\n t.a100 = 668;\n t.a89 = 390;\n t.a90 = 390;\n t.a93 = 317;\n t.a94 = 317;\n t.a91 = 276;\n t.a92 = 276;\n t.a205 = 509;\n t.a85 = 509;\n t.a206 = 410;\n t.a86 = 410;\n t.a87 = 234;\n t.a88 = 234;\n t.a95 = 334;\n t.a96 = 334;\n t.a101 = 732;\n t.a102 = 544;\n t.a103 = 544;\n t.a104 = 910;\n t.a106 = 667;\n t.a107 = 760;\n t.a108 = 760;\n t.a112 = 776;\n t.a111 = 595;\n t.a110 = 694;\n t.a109 = 626;\n t.a120 = 788;\n t.a121 = 788;\n t.a122 = 788;\n t.a123 = 788;\n t.a124 = 788;\n t.a125 = 788;\n t.a126 = 788;\n t.a127 = 788;\n t.a128 = 788;\n t.a129 = 788;\n t.a130 = 788;\n t.a131 = 788;\n t.a132 = 788;\n t.a133 = 788;\n t.a134 = 788;\n t.a135 = 788;\n t.a136 = 788;\n t.a137 = 788;\n t.a138 = 788;\n t.a139 = 788;\n t.a140 = 788;\n t.a141 = 788;\n t.a142 = 788;\n t.a143 = 788;\n t.a144 = 788;\n t.a145 = 788;\n t.a146 = 788;\n t.a147 = 788;\n t.a148 = 788;\n t.a149 = 788;\n t.a150 = 788;\n t.a151 = 788;\n t.a152 = 788;\n t.a153 = 788;\n t.a154 = 788;\n t.a155 = 788;\n t.a156 = 788;\n t.a157 = 788;\n t.a158 = 788;\n t.a159 = 788;\n t.a160 = 894;\n t.a161 = 838;\n t.a163 = 1016;\n t.a164 = 458;\n t.a196 = 748;\n t.a165 = 924;\n t.a192 = 748;\n t.a166 = 918;\n t.a167 = 927;\n t.a168 = 928;\n t.a169 = 928;\n t.a170 = 834;\n t.a171 = 873;\n t.a172 = 828;\n t.a173 = 924;\n t.a162 = 924;\n t.a174 = 917;\n t.a175 = 930;\n t.a176 = 931;\n t.a177 = 463;\n t.a178 = 883;\n t.a179 = 836;\n t.a193 = 836;\n t.a180 = 867;\n t.a199 = 867;\n t.a181 = 696;\n t.a200 = 696;\n t.a182 = 874;\n t.a201 = 874;\n t.a183 = 760;\n t.a184 = 946;\n t.a197 = 771;\n t.a185 = 865;\n t.a194 = 771;\n t.a198 = 888;\n t.a186 = 967;\n t.a195 = 888;\n t.a187 = 831;\n t.a188 = 873;\n t.a189 = 927;\n t.a190 = 970;\n t.a191 = 918;\n });\n});\n\nconst getFontBasicMetrics = getLookupTableFactory(function (t) {\n t.Courier = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: -426,\n };\n t[\"Courier-Bold\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 439,\n };\n t[\"Courier-Oblique\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 426,\n };\n t[\"Courier-BoldOblique\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 426,\n };\n t.Helvetica = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 523,\n };\n t[\"Helvetica-Bold\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 532,\n };\n t[\"Helvetica-Oblique\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 523,\n };\n t[\"Helvetica-BoldOblique\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 532,\n };\n t[\"Times-Roman\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 662,\n xHeight: 450,\n };\n t[\"Times-Bold\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 676,\n xHeight: 461,\n };\n t[\"Times-Italic\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 653,\n xHeight: 441,\n };\n t[\"Times-BoldItalic\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 669,\n xHeight: 462,\n };\n t.Symbol = {\n ascent: Math.NaN,\n descent: Math.NaN,\n capHeight: Math.NaN,\n xHeight: Math.NaN,\n };\n t.ZapfDingbats = {\n ascent: Math.NaN,\n descent: Math.NaN,\n capHeight: Math.NaN,\n xHeight: Math.NaN,\n };\n});\n\nexport { getFontBasicMetrics, getMetrics };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst ON_CURVE_POINT = 1 << 0;\nconst X_SHORT_VECTOR = 1 << 1;\nconst Y_SHORT_VECTOR = 1 << 2;\nconst REPEAT_FLAG = 1 << 3;\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4;\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5;\nconst OVERLAP_SIMPLE = 1 << 6;\n\nconst ARG_1_AND_2_ARE_WORDS = 1 << 0;\nconst ARGS_ARE_XY_VALUES = 1 << 1;\n// const ROUND_XY_TO_GRID = 1 << 2;\nconst WE_HAVE_A_SCALE = 1 << 3;\nconst MORE_COMPONENTS = 1 << 5;\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nconst WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nconst WE_HAVE_INSTRUCTIONS = 1 << 8;\n// const USE_MY_METRICS = 1 << 9;\n// const OVERLAP_COMPOUND = 1 << 10;\n// const SCALED_COMPONENT_OFFSET = 1 << 11;\n// const UNSCALED_COMPONENT_OFFSET = 1 << 12;\n\n/**\n * GlyfTable object represents a glyf table containing glyph information:\n * - glyph header (xMin, yMin, xMax, yMax);\n * - contours if any;\n * - components if the glyph is a composite.\n *\n * It's possible to re-scale each glyph in order to have a new font which\n * exactly fits an other one: the goal is to be able to build some substitution\n * font for well-known fonts (Myriad, Arial, ...).\n *\n * A full description of glyf table can be found here\n * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html\n */\nclass GlyfTable {\n constructor({ glyfTable, isGlyphLocationsLong, locaTable, numGlyphs }) {\n this.glyphs = [];\n const loca = new DataView(\n locaTable.buffer,\n locaTable.byteOffset,\n locaTable.byteLength\n );\n const glyf = new DataView(\n glyfTable.buffer,\n glyfTable.byteOffset,\n glyfTable.byteLength\n );\n const offsetSize = isGlyphLocationsLong ? 4 : 2;\n let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\n let pos = 0;\n for (let i = 0; i < numGlyphs; i++) {\n pos += offsetSize;\n const next = isGlyphLocationsLong\n ? loca.getUint32(pos)\n : 2 * loca.getUint16(pos);\n if (next === prev) {\n this.glyphs.push(new Glyph({}));\n continue;\n }\n\n const glyph = Glyph.parse(prev, glyf);\n this.glyphs.push(glyph);\n\n prev = next;\n }\n }\n\n getSize() {\n return this.glyphs.reduce((a, g) => {\n const size = g.getSize();\n // Round to next multiple of 4 if needed.\n return a + ((size + 3) & ~3);\n }, 0);\n }\n\n write() {\n const totalSize = this.getSize();\n const glyfTable = new DataView(new ArrayBuffer(totalSize));\n const isLocationLong = totalSize > /* 0xffff * 2 */ 0x1fffe;\n const offsetSize = isLocationLong ? 4 : 2;\n const locaTable = new DataView(\n new ArrayBuffer((this.glyphs.length + 1) * offsetSize)\n );\n\n if (isLocationLong) {\n locaTable.setUint32(0, 0);\n } else {\n locaTable.setUint16(0, 0);\n }\n\n let pos = 0;\n let locaIndex = 0;\n for (const glyph of this.glyphs) {\n pos += glyph.write(pos, glyfTable);\n // Round to next multiple of 4 if needed.\n pos = (pos + 3) & ~3;\n\n locaIndex += offsetSize;\n if (isLocationLong) {\n locaTable.setUint32(locaIndex, pos);\n } else {\n locaTable.setUint16(locaIndex, pos >> 1);\n }\n }\n\n return {\n isLocationLong,\n loca: new Uint8Array(locaTable.buffer),\n glyf: new Uint8Array(glyfTable.buffer),\n };\n }\n\n scale(factors) {\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n this.glyphs[i].scale(factors[i]);\n }\n }\n}\n\nclass Glyph {\n constructor({ header = null, simple = null, composites = null }) {\n this.header = header;\n this.simple = simple;\n this.composites = composites;\n }\n\n static parse(pos, glyf) {\n const [read, header] = GlyphHeader.parse(pos, glyf);\n pos += read;\n\n if (header.numberOfContours < 0) {\n // Composite glyph.\n const composites = [];\n while (true) {\n const [n, composite] = CompositeGlyph.parse(pos, glyf);\n pos += n;\n composites.push(composite);\n if (!(composite.flags & MORE_COMPONENTS)) {\n break;\n }\n }\n\n return new Glyph({ header, composites });\n }\n\n const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\n\n return new Glyph({ header, simple });\n }\n\n getSize() {\n if (!this.header) {\n return 0;\n }\n const size = this.simple\n ? this.simple.getSize()\n : this.composites.reduce((a, c) => a + c.getSize(), 0);\n return this.header.getSize() + size;\n }\n\n write(pos, buf) {\n if (!this.header) {\n return 0;\n }\n\n const spos = pos;\n pos += this.header.write(pos, buf);\n if (this.simple) {\n pos += this.simple.write(pos, buf);\n } else {\n for (const composite of this.composites) {\n pos += composite.write(pos, buf);\n }\n }\n\n return pos - spos;\n }\n\n scale(factor) {\n if (!this.header) {\n return;\n }\n\n const xMiddle = (this.header.xMin + this.header.xMax) / 2;\n this.header.scale(xMiddle, factor);\n if (this.simple) {\n this.simple.scale(xMiddle, factor);\n } else {\n for (const composite of this.composites) {\n composite.scale(xMiddle, factor);\n }\n }\n }\n}\n\nclass GlyphHeader {\n constructor({ numberOfContours, xMin, yMin, xMax, yMax }) {\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n }\n\n static parse(pos, glyf) {\n return [\n 10,\n new GlyphHeader({\n numberOfContours: glyf.getInt16(pos),\n xMin: glyf.getInt16(pos + 2),\n yMin: glyf.getInt16(pos + 4),\n xMax: glyf.getInt16(pos + 6),\n yMax: glyf.getInt16(pos + 8),\n }),\n ];\n }\n\n getSize() {\n return 10;\n }\n\n write(pos, buf) {\n buf.setInt16(pos, this.numberOfContours);\n buf.setInt16(pos + 2, this.xMin);\n buf.setInt16(pos + 4, this.yMin);\n buf.setInt16(pos + 6, this.xMax);\n buf.setInt16(pos + 8, this.yMax);\n\n return 10;\n }\n\n scale(x, factor) {\n this.xMin = Math.round(x + (this.xMin - x) * factor);\n this.xMax = Math.round(x + (this.xMax - x) * factor);\n }\n}\n\nclass Contour {\n constructor({ flags, xCoordinates, yCoordinates }) {\n this.xCoordinates = xCoordinates;\n this.yCoordinates = yCoordinates;\n this.flags = flags;\n }\n}\n\nclass SimpleGlyph {\n constructor({ contours, instructions }) {\n this.contours = contours;\n this.instructions = instructions;\n }\n\n static parse(pos, glyf, numberOfContours) {\n const endPtsOfContours = [];\n for (let i = 0; i < numberOfContours; i++) {\n const endPt = glyf.getUint16(pos);\n pos += 2;\n endPtsOfContours.push(endPt);\n }\n const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n const instructions = new Uint8Array(glyf).slice(\n pos,\n pos + instructionLength\n );\n pos += instructionLength;\n\n const flags = [];\n for (let i = 0; i < numberOfPt; pos++, i++) {\n let flag = glyf.getUint8(pos);\n flags.push(flag);\n if (flag & REPEAT_FLAG) {\n const count = glyf.getUint8(++pos);\n flag ^= REPEAT_FLAG;\n for (let m = 0; m < count; m++) {\n flags.push(flag);\n }\n i += count;\n }\n }\n\n const allXCoordinates = [];\n let xCoordinates = [];\n let yCoordinates = [];\n let pointFlags = [];\n const contours = [];\n let endPtsOfContoursIndex = 0;\n let lastCoordinate = 0;\n\n // Get x coordinates.\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n // 8-bits unsigned value.\n const x = glyf.getUint8(pos++);\n lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\n xCoordinates.push(lastCoordinate);\n } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\n // IS_SAME.\n xCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n xCoordinates.push(lastCoordinate);\n }\n\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n // Next entry is the first one of a new contour.\n endPtsOfContoursIndex++;\n allXCoordinates.push(xCoordinates);\n xCoordinates = [];\n }\n }\n\n lastCoordinate = 0;\n endPtsOfContoursIndex = 0;\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n // 8-bits unsigned value.\n const y = glyf.getUint8(pos++);\n lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\n yCoordinates.push(lastCoordinate);\n } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\n // IS_SAME.\n yCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n yCoordinates.push(lastCoordinate);\n }\n\n pointFlags.push((flag & ON_CURVE_POINT) | (flag & OVERLAP_SIMPLE));\n\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n // Next entry is the first one of a new contour.\n xCoordinates = allXCoordinates[endPtsOfContoursIndex];\n endPtsOfContoursIndex++;\n contours.push(\n new Contour({\n flags: pointFlags,\n xCoordinates,\n yCoordinates,\n })\n );\n yCoordinates = [];\n pointFlags = [];\n }\n }\n\n return new SimpleGlyph({\n contours,\n instructions,\n });\n }\n\n getSize() {\n let size = this.contours.length * 2 + 2 + this.instructions.length;\n let lastX = 0;\n let lastY = 0;\n for (const contour of this.contours) {\n size += contour.flags.length;\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n const x = contour.xCoordinates[i];\n const y = contour.yCoordinates[i];\n let abs = Math.abs(x - lastX);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastX = x;\n\n abs = Math.abs(y - lastY);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastY = y;\n }\n }\n return size;\n }\n\n write(pos, buf) {\n const spos = pos;\n const xCoordinates = [];\n const yCoordinates = [];\n const flags = [];\n let lastX = 0;\n let lastY = 0;\n\n for (const contour of this.contours) {\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n let flag = contour.flags[i];\n const x = contour.xCoordinates[i];\n let delta = x - lastX;\n if (delta === 0) {\n flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\n xCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |=\n delta >= 0\n ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR\n : X_SHORT_VECTOR;\n xCoordinates.push(abs);\n } else {\n xCoordinates.push(delta);\n }\n }\n lastX = x;\n\n const y = contour.yCoordinates[i];\n delta = y - lastY;\n if (delta === 0) {\n flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\n yCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |=\n delta >= 0\n ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR\n : Y_SHORT_VECTOR;\n yCoordinates.push(abs);\n } else {\n yCoordinates.push(delta);\n }\n }\n lastY = y;\n\n flags.push(flag);\n }\n\n // Write endPtsOfContours entry.\n buf.setUint16(pos, xCoordinates.length - 1);\n pos += 2;\n }\n\n // Write instructionLength.\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n if (this.instructions.length) {\n // Write instructions.\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n this.instructions,\n pos\n );\n pos += this.instructions.length;\n }\n\n // Write flags.\n for (const flag of flags) {\n buf.setUint8(pos++, flag);\n }\n\n // Write xCoordinates.\n for (let i = 0, ii = xCoordinates.length; i < ii; i++) {\n const x = xCoordinates[i];\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n buf.setUint8(pos++, x);\n } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\n buf.setInt16(pos, x);\n pos += 2;\n }\n }\n\n // Write yCoordinates.\n for (let i = 0, ii = yCoordinates.length; i < ii; i++) {\n const y = yCoordinates[i];\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n buf.setUint8(pos++, y);\n } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\n buf.setInt16(pos, y);\n pos += 2;\n }\n }\n\n return pos - spos;\n }\n\n scale(x, factor) {\n for (const contour of this.contours) {\n if (contour.xCoordinates.length === 0) {\n continue;\n }\n\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n contour.xCoordinates[i] = Math.round(\n x + (contour.xCoordinates[i] - x) * factor\n );\n }\n }\n }\n}\n\nclass CompositeGlyph {\n constructor({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions,\n }) {\n this.flags = flags;\n this.glyphIndex = glyphIndex;\n this.argument1 = argument1;\n this.argument2 = argument2;\n this.transf = transf;\n this.instructions = instructions;\n }\n\n static parse(pos, glyf) {\n const spos = pos;\n const transf = [];\n let flags = glyf.getUint16(pos);\n const glyphIndex = glyf.getUint16(pos + 2);\n pos += 4;\n\n let argument1, argument2;\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt16(pos);\n argument2 = glyf.getInt16(pos + 2);\n } else {\n argument1 = glyf.getUint16(pos);\n argument2 = glyf.getUint16(pos + 2);\n }\n pos += 4;\n flags ^= ARG_1_AND_2_ARE_WORDS;\n } else {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt8(pos);\n argument2 = glyf.getInt8(pos + 1);\n } else {\n argument1 = glyf.getUint8(pos);\n argument2 = glyf.getUint8(pos + 1);\n }\n pos += 2;\n }\n\n if (flags & WE_HAVE_A_SCALE) {\n // Single F2.14.\n transf.push(glyf.getUint16(pos));\n pos += 2;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n // Two F2.14.\n transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\n pos += 4;\n } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n // Four F2.14.\n transf.push(\n glyf.getUint16(pos),\n glyf.getUint16(pos + 2),\n glyf.getUint16(pos + 4),\n glyf.getUint16(pos + 6)\n );\n pos += 8;\n }\n\n let instructions = null;\n if (flags & WE_HAVE_INSTRUCTIONS) {\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n pos += instructionLength;\n }\n\n return [\n pos - spos,\n new CompositeGlyph({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions,\n }),\n ];\n }\n\n getSize() {\n let size = 2 + 2 + this.transf.length * 2;\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n size += 2 + this.instructions.length;\n }\n\n size += 2;\n if (this.flags & 2) {\n // Arguments are signed.\n if (\n !(\n this.argument1 >= -128 &&\n this.argument1 <= 127 &&\n this.argument2 >= -128 &&\n this.argument2 <= 127\n )\n ) {\n size += 2;\n }\n } else {\n if (\n !(\n this.argument1 >= 0 &&\n this.argument1 <= 255 &&\n this.argument2 >= 0 &&\n this.argument2 <= 255\n )\n ) {\n size += 2;\n }\n }\n\n return size;\n }\n\n write(pos, buf) {\n const spos = pos;\n\n if (this.flags & ARGS_ARE_XY_VALUES) {\n // Arguments are signed.\n if (\n !(\n this.argument1 >= -128 &&\n this.argument1 <= 127 &&\n this.argument2 >= -128 &&\n this.argument2 <= 127\n )\n ) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n } else {\n if (\n !(\n this.argument1 >= 0 &&\n this.argument1 <= 255 &&\n this.argument2 >= 0 &&\n this.argument2 <= 255\n )\n ) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n }\n\n buf.setUint16(pos, this.flags);\n buf.setUint16(pos + 2, this.glyphIndex);\n pos += 4;\n\n if (this.flags & ARG_1_AND_2_ARE_WORDS) {\n if (this.flags & ARGS_ARE_XY_VALUES) {\n buf.setInt16(pos, this.argument1);\n buf.setInt16(pos + 2, this.argument2);\n } else {\n buf.setUint16(pos, this.argument1);\n buf.setUint16(pos + 2, this.argument2);\n }\n pos += 4;\n } else {\n buf.setUint8(pos, this.argument1);\n buf.setUint8(pos + 1, this.argument2);\n pos += 2;\n }\n\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n // Write instructions.\n if (this.instructions.length) {\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n this.instructions,\n pos\n );\n pos += this.instructions.length;\n }\n }\n\n return pos - spos;\n }\n\n scale(x, factor) {}\n}\n\nexport { GlyfTable };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { readUint32 } from \"./core_utils.js\";\nimport { string32 } from \"../shared/util.js\";\n\nfunction writeInt16(dest, offset, num) {\n dest[offset] = (num >> 8) & 0xff;\n dest[offset + 1] = num & 0xff;\n}\n\nfunction writeInt32(dest, offset, num) {\n dest[offset] = (num >> 24) & 0xff;\n dest[offset + 1] = (num >> 16) & 0xff;\n dest[offset + 2] = (num >> 8) & 0xff;\n dest[offset + 3] = num & 0xff;\n}\n\nfunction writeData(dest, offset, data) {\n if (data instanceof Uint8Array) {\n dest.set(data, offset);\n } else if (typeof data === \"string\") {\n for (let i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data.charCodeAt(i) & 0xff;\n }\n } else {\n // treating everything else as array\n for (let i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data[i] & 0xff;\n }\n }\n}\n\nconst OTF_HEADER_SIZE = 12;\nconst OTF_TABLE_ENTRY_SIZE = 16;\n\nclass OpenTypeFileBuilder {\n constructor(sfnt) {\n this.sfnt = sfnt;\n this.tables = Object.create(null);\n }\n\n static getSearchParams(entriesCount, entrySize) {\n let maxPower2 = 1,\n log2 = 0;\n while ((maxPower2 ^ entriesCount) > maxPower2) {\n maxPower2 <<= 1;\n log2++;\n }\n const searchRange = maxPower2 * entrySize;\n return {\n range: searchRange,\n entry: log2,\n rangeShift: entrySize * entriesCount - searchRange,\n };\n }\n\n toArray() {\n let sfnt = this.sfnt;\n\n // Tables needs to be written by ascendant alphabetic order\n const tables = this.tables;\n const tablesNames = Object.keys(tables);\n tablesNames.sort();\n const numTables = tablesNames.length;\n\n let i, j, jj, table, tableName;\n // layout the tables data\n let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n const tableOffsets = [offset];\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n const paddedLength = ((table.length + 3) & ~3) >>> 0;\n offset += paddedLength;\n tableOffsets.push(offset);\n }\n\n const file = new Uint8Array(offset);\n // write the table data first (mostly for checksum)\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n writeData(file, tableOffsets[i], table);\n }\n\n // sfnt version (4 bytes)\n if (sfnt === \"true\") {\n // Windows hates the Mac TrueType sfnt version number\n sfnt = string32(0x00010000);\n }\n file[0] = sfnt.charCodeAt(0) & 0xff;\n file[1] = sfnt.charCodeAt(1) & 0xff;\n file[2] = sfnt.charCodeAt(2) & 0xff;\n file[3] = sfnt.charCodeAt(3) & 0xff;\n\n // numTables (2 bytes)\n writeInt16(file, 4, numTables);\n\n const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n\n // searchRange (2 bytes)\n writeInt16(file, 6, searchParams.range);\n // entrySelector (2 bytes)\n writeInt16(file, 8, searchParams.entry);\n // rangeShift (2 bytes)\n writeInt16(file, 10, searchParams.rangeShift);\n\n offset = OTF_HEADER_SIZE;\n // writing table entries\n for (i = 0; i < numTables; i++) {\n tableName = tablesNames[i];\n file[offset] = tableName.charCodeAt(0) & 0xff;\n file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n\n // checksum\n let checksum = 0;\n for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n const quad = readUint32(file, j);\n checksum = (checksum + quad) >>> 0;\n }\n writeInt32(file, offset + 4, checksum);\n\n // offset\n writeInt32(file, offset + 8, tableOffsets[i]);\n // length\n writeInt32(file, offset + 12, tables[tableName].length);\n\n offset += OTF_TABLE_ENTRY_SIZE;\n }\n return file;\n }\n\n addTable(tag, data) {\n if (tag in this.tables) {\n throw new Error(\"Table \" + tag + \" already exists\");\n }\n this.tables[tag] = data;\n }\n}\n\nexport { OpenTypeFileBuilder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CFF,\n CFFCharset,\n CFFCompiler,\n CFFHeader,\n CFFIndex,\n CFFPrivateDict,\n CFFStandardStrings,\n CFFStrings,\n CFFTopDict,\n} from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Parser } from \"./type1_parser.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction findBlock(streamBytes, signature, startIndex) {\n const streamBytesLength = streamBytes.length;\n const signatureLength = signature.length;\n const scanLength = streamBytesLength - signatureLength;\n\n let i = startIndex,\n found = false;\n while (i < scanLength) {\n let j = 0;\n while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found, skip over whitespace.\n i += j;\n while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n i++;\n }\n found = true;\n break;\n }\n i++;\n }\n return {\n found,\n length: i,\n };\n}\n\nfunction getHeaderBlock(stream, suggestedLength) {\n const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n const streamStartPos = stream.pos; // Save the initial stream position.\n let headerBytes, headerBytesLength, block;\n try {\n headerBytes = stream.getBytes(suggestedLength);\n headerBytesLength = headerBytes.length;\n } catch (ex) {\n // Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\n // cannot hold the result of `getBytes`, and fallback to simply checking\n // the entire stream (fixes issue3928.pdf).\n }\n\n if (headerBytesLength === suggestedLength) {\n // Most of the time `suggestedLength` is correct, so to speed things up we\n // initially only check the last few bytes to see if the header was found.\n // Otherwise we (potentially) check the entire stream to prevent errors in\n // `Type1Parser` (fixes issue5686.pdf).\n block = findBlock(\n headerBytes,\n EEXEC_SIGNATURE,\n suggestedLength - 2 * EEXEC_SIGNATURE.length\n );\n\n if (block.found && block.length === suggestedLength) {\n return {\n stream: new Stream(headerBytes),\n length: suggestedLength,\n };\n }\n }\n warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n stream.pos = streamStartPos; // Reset the stream position.\n\n const SCAN_BLOCK_LENGTH = 2048;\n let actualLength;\n while (true) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n if (block.length === 0) {\n break;\n }\n stream.pos += block.length; // Update the stream position.\n\n if (block.found) {\n actualLength = stream.pos - streamStartPos;\n break;\n }\n }\n stream.pos = streamStartPos; // Reset the stream position.\n\n if (actualLength) {\n return {\n stream: new Stream(stream.getBytes(actualLength)),\n length: actualLength,\n };\n }\n warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n return {\n stream: new Stream(stream.getBytes(suggestedLength)),\n length: suggestedLength,\n };\n}\n\nfunction getEexecBlock(stream, suggestedLength) {\n // We should ideally parse the eexec block to ensure that `suggestedLength`\n // is correct, so we don't truncate the block data if it's too small.\n // However, this would also require checking if the fixed-content portion\n // exists (using the 'Length3' property), and ensuring that it's valid.\n //\n // Given that `suggestedLength` almost always is correct, all the validation\n // would require a great deal of unnecessary parsing for most fonts.\n // To save time, we always fetch the entire stream instead, which also avoid\n // issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\n //\n // NOTE: This means that the function can include the fixed-content portion\n // in the returned eexec block. In practice this does *not* seem to matter,\n // since `Type1Parser_extractFontProgram` will skip over any non-commands.\n const eexecBytes = stream.getBytes();\n return {\n stream: new Stream(eexecBytes),\n length: eexecBytes.length,\n };\n}\n\n/**\n * Type1Font is also a CIDFontType0.\n */\nclass Type1Font {\n constructor(name, file, properties) {\n // Some bad generators embed pfb file as is, we have to strip 6-byte header.\n // Also, length1 and length2 might be off by 6 bytes as well.\n // http://www.math.ubc.ca/~cass/piscript/type1.pdf\n const PFB_HEADER_SIZE = 6;\n let headerBlockLength = properties.length1;\n let eexecBlockLength = properties.length2;\n let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n if (pfbHeaderPresent) {\n file.skip(PFB_HEADER_SIZE);\n headerBlockLength =\n (pfbHeader[5] << 24) |\n (pfbHeader[4] << 16) |\n (pfbHeader[3] << 8) |\n pfbHeader[2];\n }\n\n // Get the data block containing glyphs and subrs information\n const headerBlock = getHeaderBlock(file, headerBlockLength);\n const headerBlockParser = new Type1Parser(\n headerBlock.stream,\n false,\n SEAC_ANALYSIS_ENABLED\n );\n headerBlockParser.extractFontHeader(properties);\n\n if (pfbHeaderPresent) {\n pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n eexecBlockLength =\n (pfbHeader[5] << 24) |\n (pfbHeader[4] << 16) |\n (pfbHeader[3] << 8) |\n pfbHeader[2];\n }\n\n // Decrypt the data blocks and retrieve it's content\n const eexecBlock = getEexecBlock(file, eexecBlockLength);\n const eexecBlockParser = new Type1Parser(\n eexecBlock.stream,\n true,\n SEAC_ANALYSIS_ENABLED\n );\n const data = eexecBlockParser.extractFontProgram(properties);\n for (const key in data.properties) {\n properties[key] = data.properties[key];\n }\n\n const charstrings = data.charstrings;\n const type2Charstrings = this.getType2Charstrings(charstrings);\n const subrs = this.getType2Subrs(data.subrs);\n\n this.charstrings = charstrings;\n this.data = this.wrap(\n name,\n type2Charstrings,\n this.charstrings,\n subrs,\n properties\n );\n this.seacs = this.getSeacs(data.charstrings);\n }\n\n get numGlyphs() {\n return this.charstrings.length + 1;\n }\n\n getCharset() {\n const charset = [\".notdef\"];\n const charstrings = this.charstrings;\n for (let glyphId = 0; glyphId < charstrings.length; glyphId++) {\n charset.push(charstrings[glyphId].glyphName);\n }\n return charset;\n }\n\n getGlyphMapping(properties) {\n const charstrings = this.charstrings;\n\n if (properties.composite) {\n const charCodeToGlyphId = Object.create(null);\n // Map CIDs directly to GIDs.\n for (\n let glyphId = 0, charstringsLen = charstrings.length;\n glyphId < charstringsLen;\n glyphId++\n ) {\n const charCode = properties.cMap.charCodeOf(glyphId);\n // Add 1 because glyph 0 is duplicated.\n charCodeToGlyphId[charCode] = glyphId + 1;\n }\n return charCodeToGlyphId;\n }\n\n const glyphNames = [\".notdef\"];\n let builtInEncoding, glyphId;\n for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n glyphNames.push(charstrings[glyphId].glyphName);\n }\n const encoding = properties.builtInEncoding;\n if (encoding) {\n builtInEncoding = Object.create(null);\n for (const charCode in encoding) {\n glyphId = glyphNames.indexOf(encoding[charCode]);\n if (glyphId >= 0) {\n builtInEncoding[charCode] = glyphId;\n }\n }\n }\n\n return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n }\n\n hasGlyphId(id) {\n if (id < 0 || id >= this.numGlyphs) {\n return false;\n }\n if (id === 0) {\n // notdef is always defined.\n return true;\n }\n const glyph = this.charstrings[id - 1];\n return glyph.charstring.length > 0;\n }\n\n getSeacs(charstrings) {\n const seacMap = [];\n for (let i = 0, ii = charstrings.length; i < ii; i++) {\n const charstring = charstrings[i];\n if (charstring.seac) {\n // Offset by 1 for .notdef\n seacMap[i + 1] = charstring.seac;\n }\n }\n return seacMap;\n }\n\n getType2Charstrings(type1Charstrings) {\n const type2Charstrings = [];\n for (let i = 0, ii = type1Charstrings.length; i < ii; i++) {\n type2Charstrings.push(type1Charstrings[i].charstring);\n }\n return type2Charstrings;\n }\n\n getType2Subrs(type1Subrs) {\n let bias = 0;\n const count = type1Subrs.length;\n if (count < 1133) {\n bias = 107;\n } else if (count < 33769) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n\n // Add a bunch of empty subrs to deal with the Type2 bias\n const type2Subrs = [];\n let i;\n for (i = 0; i < bias; i++) {\n type2Subrs.push([0x0b]);\n }\n\n for (i = 0; i < count; i++) {\n type2Subrs.push(type1Subrs[i]);\n }\n\n return type2Subrs;\n }\n\n wrap(name, glyphs, charstrings, subrs, properties) {\n const cff = new CFF();\n cff.header = new CFFHeader(1, 0, 4, 4);\n\n cff.names = [name];\n\n const topDict = new CFFTopDict();\n // CFF strings IDs 0...390 are predefined names, so refering\n // to entries in our own String INDEX starts at SID 391.\n topDict.setByName(\"version\", 391);\n topDict.setByName(\"Notice\", 392);\n topDict.setByName(\"FullName\", 393);\n topDict.setByName(\"FamilyName\", 394);\n topDict.setByName(\"Weight\", 395);\n topDict.setByName(\"Encoding\", null); // placeholder\n topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n topDict.setByName(\"FontBBox\", properties.bbox);\n topDict.setByName(\"charset\", null); // placeholder\n topDict.setByName(\"CharStrings\", null); // placeholder\n topDict.setByName(\"Private\", null); // placeholder\n cff.topDict = topDict;\n\n const strings = new CFFStrings();\n strings.add(\"Version 0.11\"); // Version\n strings.add(\"See original notice\"); // Notice\n strings.add(name); // FullName\n strings.add(name); // FamilyName\n strings.add(\"Medium\"); // Weight\n cff.strings = strings;\n\n cff.globalSubrIndex = new CFFIndex();\n\n const count = glyphs.length;\n const charsetArray = [\".notdef\"];\n let i, ii;\n for (i = 0; i < count; i++) {\n const glyphName = charstrings[i].glyphName;\n const index = CFFStandardStrings.indexOf(glyphName);\n if (index === -1) {\n strings.add(glyphName);\n }\n charsetArray.push(glyphName);\n }\n cff.charset = new CFFCharset(false, 0, charsetArray);\n\n const charStringsIndex = new CFFIndex();\n charStringsIndex.add([0x8b, 0x0e]); // .notdef\n for (i = 0; i < count; i++) {\n charStringsIndex.add(glyphs[i]);\n }\n cff.charStrings = charStringsIndex;\n\n const privateDict = new CFFPrivateDict();\n privateDict.setByName(\"Subrs\", null); // placeholder\n const fields = [\n \"BlueValues\",\n \"OtherBlues\",\n \"FamilyBlues\",\n \"FamilyOtherBlues\",\n \"StemSnapH\",\n \"StemSnapV\",\n \"BlueShift\",\n \"BlueFuzz\",\n \"BlueScale\",\n \"LanguageGroup\",\n \"ExpansionFactor\",\n \"ForceBold\",\n \"StdHW\",\n \"StdVW\",\n ];\n for (i = 0, ii = fields.length; i < ii; i++) {\n const field = fields[i];\n if (!(field in properties.privateData)) {\n continue;\n }\n const value = properties.privateData[field];\n if (Array.isArray(value)) {\n // All of the private dictionary array data in CFF must be stored as\n // \"delta-encoded\" numbers.\n for (let j = value.length - 1; j > 0; j--) {\n value[j] -= value[j - 1]; // ... difference from previous value\n }\n }\n privateDict.setByName(field, value);\n }\n cff.topDict.privateDict = privateDict;\n\n const subrIndex = new CFFIndex();\n for (i = 0, ii = subrs.length; i < ii; i++) {\n subrIndex.add(subrs[i]);\n }\n privateDict.subrsIndex = subrIndex;\n\n const compiler = new CFFCompiler(cff);\n return compiler.compile();\n }\n}\n\nexport { Type1Font };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getEncoding } from \"./encodings.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { warn } from \"../shared/util.js\";\n\n// Hinting is currently disabled due to unknown problems on windows\n// in tracemonkey and various other pdfs with type1 fonts.\nconst HINTING_ENABLED = false;\n\n/*\n * CharStrings are encoded following the the CharString Encoding sequence\n * describe in Chapter 6 of the \"Adobe Type1 Font Format\" specification.\n * The value in a byte indicates a command, a number, or subsequent bytes\n * that are to be interpreted in a special way.\n *\n * CharString Number Encoding:\n * A CharString byte containing the values from 32 through 255 inclusive\n * indicate an integer. These values are decoded in four ranges.\n *\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\n * indicate the integer v - 139. Thus, the integer values from -107 through\n * 107 inclusive may be encoded in single byte.\n *\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * [(v - 247) x 256] + w + 108\n *\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * -[(v - 251) * 256] - w - 108\n *\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\n * are a two complement signed integer. The first of these bytes contains the\n * highest order bits, the second byte contains the next higher order bits\n * and the fourth byte contain the lowest order bits.\n *\n *\n * CharString Command Encoding:\n * CharStrings commands are encoded in 1 or 2 bytes.\n *\n * Single byte commands are encoded in 1 byte that contains a value between\n * 0 and 31 inclusive.\n * If a command byte contains the value 12, then the value in the next byte\n * indicates a command. This \"escape\" mechanism allows many extra commands\n * to be encoded and this encoding technique helps to minimize the length of\n * the charStrings.\n */\nconst Type1CharString = (function Type1CharStringClosure() {\n const COMMAND_MAP = {\n hstem: [1],\n vstem: [3],\n vmoveto: [4],\n rlineto: [5],\n hlineto: [6],\n vlineto: [7],\n rrcurveto: [8],\n callsubr: [10],\n flex: [12, 35],\n drop: [12, 18],\n endchar: [14],\n rmoveto: [21],\n hmoveto: [22],\n vhcurveto: [30],\n hvcurveto: [31],\n };\n\n // eslint-disable-next-line no-shadow\n class Type1CharString {\n constructor() {\n this.width = 0;\n this.lsb = 0;\n this.flexing = false;\n this.output = [];\n this.stack = [];\n }\n\n convert(encoded, subrs, seacAnalysisEnabled) {\n const count = encoded.length;\n let error = false;\n let wx, sbx, subrNumber;\n for (let i = 0; i < count; i++) {\n let value = encoded[i];\n if (value < 32) {\n if (value === 12) {\n value = (value << 8) + encoded[++i];\n }\n switch (value) {\n case 1: // hstem\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case 3: // vstem\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case 4: // vmoveto\n if (this.flexing) {\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n // Add the dx for flex and but also swap the values so they are\n // the right order.\n const dy = this.stack.pop();\n this.stack.push(0, dy);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n break;\n case 5: // rlineto\n error = this.executeCommand(2, COMMAND_MAP.rlineto);\n break;\n case 6: // hlineto\n error = this.executeCommand(1, COMMAND_MAP.hlineto);\n break;\n case 7: // vlineto\n error = this.executeCommand(1, COMMAND_MAP.vlineto);\n break;\n case 8: // rrcurveto\n error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n break;\n case 9: // closepath\n // closepath is a Type1 command that does not take argument and is\n // useless in Type2 and it can simply be ignored.\n this.stack = [];\n break;\n case 10: // callsubr\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n if (!subrs[subrNumber]) {\n error = true;\n break;\n }\n error = this.convert(\n subrs[subrNumber],\n subrs,\n seacAnalysisEnabled\n );\n break;\n case 11: // return\n return error;\n case 13: // hsbw\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n // To convert to type2 we have to move the width value to the\n // first part of the charstring and then use hmoveto with lsb.\n wx = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx);\n error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n break;\n case 14: // endchar\n this.output.push(COMMAND_MAP.endchar[0]);\n break;\n case 21: // rmoveto\n if (this.flexing) {\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n break;\n case 22: // hmoveto\n if (this.flexing) {\n // Add the dy for flex.\n this.stack.push(0);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n break;\n case 30: // vhcurveto\n error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n break;\n case 31: // hvcurveto\n error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n break;\n case (12 << 8) + 0: // dotsection\n // dotsection is a Type1 command to specify some hinting feature\n // for dots that do not take a parameter and it can safely be\n // ignored for Type2.\n this.stack = [];\n break;\n case (12 << 8) + 1: // vstem3\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n // [vh]stem3 are Type1 only and Type2 supports [vh]stem with\n // multiple parameters, so instead of returning [vh]stem3 take a\n // shortcut and return [vhstem] instead.\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case (12 << 8) + 2: // hstem3\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n // See vstem3.\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case (12 << 8) + 6: // seac\n // seac is like type 2's special endchar but it doesn't use the\n // first argument asb, so remove it.\n if (seacAnalysisEnabled) {\n const asb = this.stack[this.stack.length - 5];\n this.seac = this.stack.splice(-4, 4);\n this.seac[0] += this.lsb - asb;\n error = this.executeCommand(0, COMMAND_MAP.endchar);\n } else {\n error = this.executeCommand(4, COMMAND_MAP.endchar);\n }\n break;\n case (12 << 8) + 7: // sbw\n if (this.stack.length < 4) {\n error = true;\n break;\n }\n // To convert to type2 we have to move the width value to the\n // first part of the charstring and then use rmoveto with\n // (dx, dy). The height argument will not be used for vmtx and\n // vhea tables reconstruction -- ignoring it.\n this.stack.pop(); // wy\n wx = this.stack.pop();\n const sby = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx, sby);\n error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n break;\n case (12 << 8) + 12: // div\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n const num2 = this.stack.pop();\n const num1 = this.stack.pop();\n this.stack.push(num1 / num2);\n break;\n case (12 << 8) + 16: // callothersubr\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n const numArgs = this.stack.pop();\n if (subrNumber === 0 && numArgs === 3) {\n const flexArgs = this.stack.splice(this.stack.length - 17, 17);\n this.stack.push(\n flexArgs[2] + flexArgs[0], // bcp1x + rpx\n flexArgs[3] + flexArgs[1], // bcp1y + rpy\n flexArgs[4], // bcp2x\n flexArgs[5], // bcp2y\n flexArgs[6], // p2x\n flexArgs[7], // p2y\n flexArgs[8], // bcp3x\n flexArgs[9], // bcp3y\n flexArgs[10], // bcp4x\n flexArgs[11], // bcp4y\n flexArgs[12], // p3x\n flexArgs[13], // p3y\n flexArgs[14] // flexDepth\n // 15 = finalx unused by flex\n // 16 = finaly unused by flex\n );\n error = this.executeCommand(13, COMMAND_MAP.flex, true);\n this.flexing = false;\n this.stack.push(flexArgs[15], flexArgs[16]);\n } else if (subrNumber === 1 && numArgs === 0) {\n this.flexing = true;\n }\n break;\n case (12 << 8) + 17: // pop\n // Ignore this since it is only used with othersubr.\n break;\n case (12 << 8) + 33: // setcurrentpoint\n // Ignore for now.\n this.stack = [];\n break;\n default:\n warn('Unknown type 1 charstring command of \"' + value + '\"');\n break;\n }\n if (error) {\n break;\n }\n continue;\n } else if (value <= 246) {\n value -= 139;\n } else if (value <= 250) {\n value = (value - 247) * 256 + encoded[++i] + 108;\n } else if (value <= 254) {\n value = -((value - 251) * 256) - encoded[++i] - 108;\n } else {\n value =\n ((encoded[++i] & 0xff) << 24) |\n ((encoded[++i] & 0xff) << 16) |\n ((encoded[++i] & 0xff) << 8) |\n ((encoded[++i] & 0xff) << 0);\n }\n this.stack.push(value);\n }\n return error;\n }\n\n executeCommand(howManyArgs, command, keepStack) {\n const stackLength = this.stack.length;\n if (howManyArgs > stackLength) {\n return true;\n }\n const start = stackLength - howManyArgs;\n for (let i = start; i < stackLength; i++) {\n let value = this.stack[i];\n if (Number.isInteger(value)) {\n this.output.push(28, (value >> 8) & 0xff, value & 0xff);\n } else {\n // fixed point\n value = (65536 * value) | 0;\n this.output.push(\n 255,\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n }\n }\n this.output.push.apply(this.output, command);\n if (keepStack) {\n this.stack.splice(start, howManyArgs);\n } else {\n this.stack.length = 0;\n }\n return false;\n }\n }\n\n return Type1CharString;\n})();\n\n/*\n * Type1Parser encapsulate the needed code for parsing a Type1 font\n * program. Some of its logic depends on the Type2 charstrings\n * structure.\n * Note: this doesn't really parse the font since that would require evaluation\n * of PostScript, but it is possible in most cases to extract what we need\n * without a full parse.\n */\nconst Type1Parser = (function Type1ParserClosure() {\n /*\n * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\n * of Plaintext Bytes. The function took a key as a parameter which can be\n * for decrypting the eexec block of for decoding charStrings.\n */\n const EEXEC_ENCRYPT_KEY = 55665;\n const CHAR_STRS_ENCRYPT_KEY = 4330;\n\n function isHexDigit(code) {\n return (\n (code >= 48 && code <= 57) || // '0'-'9'\n (code >= 65 && code <= 70) || // 'A'-'F'\n (code >= 97 && code <= 102) // 'a'-'f'\n );\n }\n\n function decrypt(data, key, discardNumber) {\n if (discardNumber >= data.length) {\n return new Uint8Array(0);\n }\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0,\n i,\n j;\n for (i = 0; i < discardNumber; i++) {\n r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n }\n const count = data.length - discardNumber;\n const decrypted = new Uint8Array(count);\n for (i = discardNumber, j = 0; j < count; i++, j++) {\n const value = data[i];\n decrypted[j] = value ^ (r >> 8);\n r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n }\n return decrypted;\n }\n\n function decryptAscii(data, key, discardNumber) {\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0;\n const count = data.length,\n maybeLength = count >>> 1;\n const decrypted = new Uint8Array(maybeLength);\n let i, j;\n for (i = 0, j = 0; i < count; i++) {\n const digit1 = data[i];\n if (!isHexDigit(digit1)) {\n continue;\n }\n i++;\n let digit2;\n while (i < count && !isHexDigit((digit2 = data[i]))) {\n i++;\n }\n if (i < count) {\n const value = parseInt(String.fromCharCode(digit1, digit2), 16);\n decrypted[j++] = value ^ (r >> 8);\n r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n }\n }\n return decrypted.slice(discardNumber, j);\n }\n\n function isSpecial(c) {\n return (\n c === /* '/' = */ 0x2f ||\n c === /* '[' = */ 0x5b ||\n c === /* ']' = */ 0x5d ||\n c === /* '{' = */ 0x7b ||\n c === /* '}' = */ 0x7d ||\n c === /* '(' = */ 0x28 ||\n c === /* ')' = */ 0x29\n );\n }\n\n // eslint-disable-next-line no-shadow\n class Type1Parser {\n constructor(stream, encrypted, seacAnalysisEnabled) {\n if (encrypted) {\n const data = stream.getBytes();\n const isBinary = !(\n (isHexDigit(data[0]) || isWhiteSpace(data[0])) &&\n isHexDigit(data[1]) &&\n isHexDigit(data[2]) &&\n isHexDigit(data[3]) &&\n isHexDigit(data[4]) &&\n isHexDigit(data[5]) &&\n isHexDigit(data[6]) &&\n isHexDigit(data[7])\n );\n stream = new Stream(\n isBinary\n ? decrypt(data, EEXEC_ENCRYPT_KEY, 4)\n : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)\n );\n }\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n\n this.stream = stream;\n this.nextChar();\n }\n\n readNumberArray() {\n this.getToken(); // read '[' or '{' (arrays can start with either)\n const array = [];\n while (true) {\n const token = this.getToken();\n if (token === null || token === \"]\" || token === \"}\") {\n break;\n }\n array.push(parseFloat(token || 0));\n }\n return array;\n }\n\n readNumber() {\n const token = this.getToken();\n return parseFloat(token || 0);\n }\n\n readInt() {\n // Use '| 0' to prevent setting a double into length such as the double\n // does not flow into the loop variable.\n const token = this.getToken();\n return parseInt(token || 0, 10) | 0;\n }\n\n readBoolean() {\n const token = this.getToken();\n // Use 1 and 0 since that's what type2 charstrings use.\n return token === \"true\" ? 1 : 0;\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n prevChar() {\n this.stream.skip(-2);\n return (this.currentChar = this.stream.getByte());\n }\n\n getToken() {\n // Eat whitespace and comments.\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch === -1) {\n return null;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (!isWhiteSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n if (isSpecial(ch)) {\n this.nextChar();\n return String.fromCharCode(ch);\n }\n let token = \"\";\n do {\n token += String.fromCharCode(ch);\n ch = this.nextChar();\n } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n return token;\n }\n\n readCharStrings(bytes, lenIV) {\n if (lenIV === -1) {\n // This isn't in the spec, but Adobe's tx program handles -1\n // as plain text.\n return bytes;\n }\n return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n }\n\n /*\n * Returns an object containing a Subrs array and a CharStrings\n * array extracted from and eexec encrypted block of data\n */\n extractFontProgram(properties) {\n const stream = this.stream;\n\n const subrs = [],\n charstrings = [];\n const privateData = Object.create(null);\n privateData.lenIV = 4;\n const program = {\n subrs: [],\n charstrings: [],\n properties: {\n privateData,\n },\n };\n let token, length, data, lenIV, encoded;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"CharStrings\":\n // The number immediately following CharStrings must be greater or\n // equal to the number of CharStrings.\n this.getToken();\n this.getToken(); // read in 'dict'\n this.getToken(); // read in 'dup'\n this.getToken(); // read in 'begin'\n while (true) {\n token = this.getToken();\n if (token === null || token === \"end\") {\n break;\n }\n\n if (token !== \"/\") {\n continue;\n }\n const glyph = this.getToken();\n length = this.readInt();\n this.getToken(); // read in 'RD' or '-|'\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken(); // read in 'ND' or '|-'\n if (token === \"noaccess\") {\n this.getToken(); // read in 'def'\n } else if (token === \"/\") {\n // The expected 'ND' or '|-' token is missing, avoid swallowing\n // the start of the next glyph (fixes issue14462_reduced.pdf).\n this.prevChar();\n }\n charstrings.push({\n glyph,\n encoded,\n });\n }\n break;\n case \"Subrs\":\n this.readInt(); // num\n this.getToken(); // read in 'array'\n while (this.getToken() === \"dup\") {\n const index = this.readInt();\n length = this.readInt();\n this.getToken(); // read in 'RD' or '-|'\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken(); // read in 'NP' or '|'\n if (token === \"noaccess\") {\n this.getToken(); // read in 'put'\n }\n subrs[index] = encoded;\n }\n break;\n case \"BlueValues\":\n case \"OtherBlues\":\n case \"FamilyBlues\":\n case \"FamilyOtherBlues\":\n const blueArray = this.readNumberArray();\n // *Blue* values may contain invalid data: disables reading of\n // those values when hinting is disabled.\n if (\n blueArray.length > 0 &&\n blueArray.length % 2 === 0 &&\n HINTING_ENABLED\n ) {\n program.properties.privateData[token] = blueArray;\n }\n break;\n case \"StemSnapH\":\n case \"StemSnapV\":\n program.properties.privateData[token] = this.readNumberArray();\n break;\n case \"StdHW\":\n case \"StdVW\":\n program.properties.privateData[token] = this.readNumberArray()[0];\n break;\n case \"BlueShift\":\n case \"lenIV\":\n case \"BlueFuzz\":\n case \"BlueScale\":\n case \"LanguageGroup\":\n case \"ExpansionFactor\":\n program.properties.privateData[token] = this.readNumber();\n break;\n case \"ForceBold\":\n program.properties.privateData[token] = this.readBoolean();\n break;\n }\n }\n\n for (let i = 0; i < charstrings.length; i++) {\n const glyph = charstrings[i].glyph;\n encoded = charstrings[i].encoded;\n const charString = new Type1CharString();\n const error = charString.convert(\n encoded,\n subrs,\n this.seacAnalysisEnabled\n );\n let output = charString.output;\n if (error) {\n // It seems when FreeType encounters an error while evaluating a glyph\n // that it completely ignores the glyph so we'll mimic that behaviour\n // here and put an endchar to make the validator happy.\n output = [14];\n }\n const charStringObject = {\n glyphName: glyph,\n charstring: output,\n width: charString.width,\n lsb: charString.lsb,\n seac: charString.seac,\n };\n if (glyph === \".notdef\") {\n // Make sure .notdef is at index zero (issue #11477).\n program.charstrings.unshift(charStringObject);\n } else {\n program.charstrings.push(charStringObject);\n }\n\n // Attempt to replace missing widths, from the font dictionary /Widths\n // entry, with ones from the font data (fixes issue11150_reduced.pdf).\n if (properties.builtInEncoding) {\n const index = properties.builtInEncoding.indexOf(glyph);\n if (\n index > -1 &&\n properties.widths[index] === undefined &&\n index >= properties.firstChar &&\n index <= properties.lastChar\n ) {\n properties.widths[index] = charString.width;\n }\n }\n }\n\n return program;\n }\n\n extractFontHeader(properties) {\n let token;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"FontMatrix\":\n const matrix = this.readNumberArray();\n properties.fontMatrix = matrix;\n break;\n case \"Encoding\":\n const encodingArg = this.getToken();\n let encoding;\n if (!/^\\d+$/.test(encodingArg)) {\n // encoding name is specified\n encoding = getEncoding(encodingArg);\n } else {\n encoding = [];\n const size = parseInt(encodingArg, 10) | 0;\n this.getToken(); // read in 'array'\n\n for (let j = 0; j < size; j++) {\n token = this.getToken();\n // skipping till first dup or def (e.g. ignoring for statement)\n while (token !== \"dup\" && token !== \"def\") {\n token = this.getToken();\n if (token === null) {\n return; // invalid header\n }\n }\n if (token === \"def\") {\n break; // read all array data\n }\n const index = this.readInt();\n this.getToken(); // read in '/'\n const glyph = this.getToken();\n encoding[index] = glyph;\n this.getToken(); // read the in 'put'\n }\n }\n properties.builtInEncoding = encoding;\n break;\n case \"FontBBox\":\n const fontBBox = this.readNumberArray();\n // adjusting ascent/descent\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n break;\n }\n }\n }\n }\n\n return Type1Parser;\n})();\n\nexport { Type1Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n shadow,\n unreachable,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nconst ShadingType = {\n FUNCTION_BASED: 1,\n AXIAL: 2,\n RADIAL: 3,\n FREE_FORM_MESH: 4,\n LATTICE_FORM_MESH: 5,\n COONS_PATCH_MESH: 6,\n TENSOR_PATCH_MESH: 7,\n};\n\nclass Pattern {\n constructor() {\n unreachable(\"Cannot initialize Pattern.\");\n }\n\n static parseShading(\n shading,\n xref,\n res,\n handler,\n pdfFunctionFactory,\n localColorSpaceCache\n ) {\n const dict = shading instanceof BaseStream ? shading.dict : shading;\n const type = dict.get(\"ShadingType\");\n\n try {\n switch (type) {\n case ShadingType.AXIAL:\n case ShadingType.RADIAL:\n return new RadialAxialShading(\n dict,\n xref,\n res,\n pdfFunctionFactory,\n localColorSpaceCache\n );\n case ShadingType.FREE_FORM_MESH:\n case ShadingType.LATTICE_FORM_MESH:\n case ShadingType.COONS_PATCH_MESH:\n case ShadingType.TENSOR_PATCH_MESH:\n return new MeshShading(\n shading,\n xref,\n res,\n pdfFunctionFactory,\n localColorSpaceCache\n );\n default:\n throw new FormatError(\"Unsupported ShadingType: \" + type);\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.shadingPattern,\n });\n warn(ex);\n return new DummyShading();\n }\n }\n}\n\nclass BaseShading {\n // A small number to offset the first/last color stops so we can insert ones\n // to support extend. Number.MIN_VALUE is too small and breaks the extend.\n static get SMALL_NUMBER() {\n return shadow(this, \"SMALL_NUMBER\", 1e-6);\n }\n\n constructor() {\n if (this.constructor === BaseShading) {\n unreachable(\"Cannot initialize BaseShading.\");\n }\n }\n\n getIR() {\n unreachable(\"Abstract method `getIR` called.\");\n }\n}\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes.\nclass RadialAxialShading extends BaseShading {\n constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n super();\n this.coordsArr = dict.getArray(\"Coords\");\n this.shadingType = dict.get(\"ShadingType\");\n const cs = ColorSpace.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n const bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n\n let t0 = 0.0,\n t1 = 1.0;\n if (dict.has(\"Domain\")) {\n const domainArr = dict.getArray(\"Domain\");\n t0 = domainArr[0];\n t1 = domainArr[1];\n }\n\n let extendStart = false,\n extendEnd = false;\n if (dict.has(\"Extend\")) {\n const extendArr = dict.getArray(\"Extend\");\n extendStart = extendArr[0];\n extendEnd = extendArr[1];\n }\n\n if (\n this.shadingType === ShadingType.RADIAL &&\n (!extendStart || !extendEnd)\n ) {\n // Radial gradient only currently works if either circle is fully within\n // the other circle.\n const [x1, y1, r1, x2, y2, r2] = this.coordsArr;\n const distance = Math.hypot(x1 - x2, y1 - y2);\n if (r1 <= r2 + distance && r2 <= r1 + distance) {\n warn(\"Unsupported radial gradient.\");\n }\n }\n\n this.extendStart = extendStart;\n this.extendEnd = extendEnd;\n\n const fnObj = dict.getRaw(\"Function\");\n const fn = pdfFunctionFactory.createFromArray(fnObj);\n\n // 10 samples seems good enough for now, but probably won't work\n // if there are sharp color changes. Ideally, we would implement\n // the spec faithfully and add lossless optimizations.\n const NUMBER_OF_SAMPLES = 10;\n const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n\n const colorStops = (this.colorStops = []);\n\n // Protect against bad domains.\n if (t0 >= t1 || step <= 0) {\n // Acrobat doesn't seem to handle these cases so we'll ignore for\n // now.\n info(\"Bad shading domain.\");\n return;\n }\n\n const color = new Float32Array(cs.numComps),\n ratio = new Float32Array(1);\n let rgbColor;\n for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {\n ratio[0] = t0 + i * step;\n fn(ratio, 0, color, 0);\n rgbColor = cs.getRgb(color, 0);\n const cssColor = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n }\n\n let background = \"transparent\";\n if (dict.has(\"Background\")) {\n rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n background = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n }\n\n if (!extendStart) {\n // Insert a color stop at the front and offset the first real color stop\n // so it doesn't conflict with the one we insert.\n colorStops.unshift([0, background]);\n colorStops[1][0] += BaseShading.SMALL_NUMBER;\n }\n if (!extendEnd) {\n // Same idea as above in extendStart but for the end.\n colorStops[colorStops.length - 1][0] -= BaseShading.SMALL_NUMBER;\n colorStops.push([1, background]);\n }\n\n this.colorStops = colorStops;\n }\n\n getIR() {\n const coordsArr = this.coordsArr;\n const shadingType = this.shadingType;\n let type, p0, p1, r0, r1;\n if (shadingType === ShadingType.AXIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[2], coordsArr[3]];\n r0 = null;\n r1 = null;\n type = \"axial\";\n } else if (shadingType === ShadingType.RADIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[3], coordsArr[4]];\n r0 = coordsArr[2];\n r1 = coordsArr[5];\n type = \"radial\";\n } else {\n unreachable(`getPattern type unknown: ${shadingType}`);\n }\n\n return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n }\n}\n\n// All mesh shadings. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nclass MeshStreamReader {\n constructor(stream, context) {\n this.stream = stream;\n this.context = context;\n this.buffer = 0;\n this.bufferLength = 0;\n\n const numComps = context.numComps;\n this.tmpCompsBuf = new Float32Array(numComps);\n const csNumComps = context.colorSpace.numComps;\n this.tmpCsCompsBuf = context.colorFn\n ? new Float32Array(csNumComps)\n : this.tmpCompsBuf;\n }\n\n get hasData() {\n if (this.stream.end) {\n return this.stream.pos < this.stream.end;\n }\n if (this.bufferLength > 0) {\n return true;\n }\n const nextByte = this.stream.getByte();\n if (nextByte < 0) {\n return false;\n }\n this.buffer = nextByte;\n this.bufferLength = 8;\n return true;\n }\n\n readBits(n) {\n let buffer = this.buffer;\n let bufferLength = this.bufferLength;\n if (n === 32) {\n if (bufferLength === 0) {\n return (\n ((this.stream.getByte() << 24) |\n (this.stream.getByte() << 16) |\n (this.stream.getByte() << 8) |\n this.stream.getByte()) >>>\n 0\n );\n }\n buffer =\n (buffer << 24) |\n (this.stream.getByte() << 16) |\n (this.stream.getByte() << 8) |\n this.stream.getByte();\n const nextByte = this.stream.getByte();\n this.buffer = nextByte & ((1 << bufferLength) - 1);\n return (\n ((buffer << (8 - bufferLength)) |\n ((nextByte & 0xff) >> bufferLength)) >>>\n 0\n );\n }\n if (n === 8 && bufferLength === 0) {\n return this.stream.getByte();\n }\n while (bufferLength < n) {\n buffer = (buffer << 8) | this.stream.getByte();\n bufferLength += 8;\n }\n bufferLength -= n;\n this.bufferLength = bufferLength;\n this.buffer = buffer & ((1 << bufferLength) - 1);\n return buffer >> bufferLength;\n }\n\n align() {\n this.buffer = 0;\n this.bufferLength = 0;\n }\n\n readFlag() {\n return this.readBits(this.context.bitsPerFlag);\n }\n\n readCoordinate() {\n const bitsPerCoordinate = this.context.bitsPerCoordinate;\n const xi = this.readBits(bitsPerCoordinate);\n const yi = this.readBits(bitsPerCoordinate);\n const decode = this.context.decode;\n const scale =\n bitsPerCoordinate < 32\n ? 1 / ((1 << bitsPerCoordinate) - 1)\n : 2.3283064365386963e-10; // 2 ^ -32\n return [\n xi * scale * (decode[1] - decode[0]) + decode[0],\n yi * scale * (decode[3] - decode[2]) + decode[2],\n ];\n }\n\n readComponents() {\n const numComps = this.context.numComps;\n const bitsPerComponent = this.context.bitsPerComponent;\n const scale =\n bitsPerComponent < 32\n ? 1 / ((1 << bitsPerComponent) - 1)\n : 2.3283064365386963e-10; // 2 ^ -32\n const decode = this.context.decode;\n const components = this.tmpCompsBuf;\n for (let i = 0, j = 4; i < numComps; i++, j += 2) {\n const ci = this.readBits(bitsPerComponent);\n components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n }\n const color = this.tmpCsCompsBuf;\n if (this.context.colorFn) {\n this.context.colorFn(components, 0, color, 0);\n }\n return this.context.colorSpace.getRgb(color, 0);\n }\n}\n\nconst getB = (function getBClosure() {\n function buildB(count) {\n const lut = [];\n for (let i = 0; i <= count; i++) {\n const t = i / count,\n t_ = 1 - t;\n lut.push(\n new Float32Array([\n t_ * t_ * t_,\n 3 * t * t_ * t_,\n 3 * t * t * t_,\n t * t * t,\n ])\n );\n }\n return lut;\n }\n const cache = [];\n\n return function (count) {\n if (!cache[count]) {\n cache[count] = buildB(count);\n }\n return cache[count];\n };\n})();\n\nclass MeshShading extends BaseShading {\n static get MIN_SPLIT_PATCH_CHUNKS_AMOUNT() {\n return shadow(this, \"MIN_SPLIT_PATCH_CHUNKS_AMOUNT\", 3);\n }\n\n static get MAX_SPLIT_PATCH_CHUNKS_AMOUNT() {\n return shadow(this, \"MAX_SPLIT_PATCH_CHUNKS_AMOUNT\", 20);\n }\n\n // Count of triangles per entire mesh bounds.\n static get TRIANGLE_DENSITY() {\n return shadow(this, \"TRIANGLE_DENSITY\", 20);\n }\n\n constructor(\n stream,\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache\n ) {\n super();\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"Mesh data is not a stream\");\n }\n const dict = stream.dict;\n this.shadingType = dict.get(\"ShadingType\");\n const bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n const cs = ColorSpace.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n this.background = dict.has(\"Background\")\n ? cs.getRgb(dict.get(\"Background\"), 0)\n : null;\n\n const fnObj = dict.getRaw(\"Function\");\n const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n\n this.coords = [];\n this.colors = [];\n this.figures = [];\n\n const decodeContext = {\n bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n bitsPerComponent: dict.get(\"BitsPerComponent\"),\n bitsPerFlag: dict.get(\"BitsPerFlag\"),\n decode: dict.getArray(\"Decode\"),\n colorFn: fn,\n colorSpace: cs,\n numComps: fn ? 1 : cs.numComps,\n };\n const reader = new MeshStreamReader(stream, decodeContext);\n\n let patchMesh = false;\n switch (this.shadingType) {\n case ShadingType.FREE_FORM_MESH:\n this._decodeType4Shading(reader);\n break;\n case ShadingType.LATTICE_FORM_MESH:\n const verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n if (verticesPerRow < 2) {\n throw new FormatError(\"Invalid VerticesPerRow\");\n }\n this._decodeType5Shading(reader, verticesPerRow);\n break;\n case ShadingType.COONS_PATCH_MESH:\n this._decodeType6Shading(reader);\n patchMesh = true;\n break;\n case ShadingType.TENSOR_PATCH_MESH:\n this._decodeType7Shading(reader);\n patchMesh = true;\n break;\n default:\n unreachable(\"Unsupported mesh type.\");\n break;\n }\n\n if (patchMesh) {\n // Dirty bounds calculation, to determine how dense the triangles will be.\n this._updateBounds();\n for (let i = 0, ii = this.figures.length; i < ii; i++) {\n this._buildFigureFromPatch(i);\n }\n }\n // Calculate bounds.\n this._updateBounds();\n\n this._packData();\n }\n\n _decodeType4Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const operators = [];\n const ps = []; // not maintaining cs since that will match ps\n let verticesLeft = 0; // assuming we have all data to start a new triangle\n while (reader.hasData) {\n const f = reader.readFlag();\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n if (verticesLeft === 0) {\n // ignoring flags if we started a triangle\n if (!(0 <= f && f <= 2)) {\n throw new FormatError(\"Unknown type4 flag\");\n }\n switch (f) {\n case 0:\n verticesLeft = 3;\n break;\n case 1:\n ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n case 2:\n ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n }\n operators.push(f);\n }\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n verticesLeft--;\n\n reader.align();\n }\n this.figures.push({\n type: \"triangles\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n });\n }\n\n _decodeType5Shading(reader, verticesPerRow) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = []; // not maintaining cs since that will match ps\n while (reader.hasData) {\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n }\n this.figures.push({\n type: \"lattice\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n verticesPerRow,\n });\n }\n\n _decodeType6Shading(reader) {\n // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n const cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type6 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n // prettier-ignore\n case 0:\n ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6;\n ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 7;\n ps[ 4] = pi + 1; /* calculated below */ ps[ 7] = pi + 8;\n ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n cs[2] = ci + 1; cs[3] = ci + 2;\n cs[0] = ci; cs[1] = ci + 3;\n break;\n // prettier-ignore\n case 1:\n tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[2]; tmp2 = cs[3];\n cs[2] = tmp2; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[7]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1]; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 3:\n ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[1]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = ps[2]; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n cs[2] = cs[0]; cs[3] = ci;\n cs[0] = cs[1]; cs[1] = ci + 1;\n break;\n }\n // set p11, p12, p21, p22\n ps[5] = coords.length;\n coords.push([\n (-4 * coords[ps[0]][0] -\n coords[ps[15]][0] +\n 6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\n 2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n 3 * (coords[ps[13]][0] + coords[ps[7]][0])) /\n 9,\n (-4 * coords[ps[0]][1] -\n coords[ps[15]][1] +\n 6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\n 2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n 3 * (coords[ps[13]][1] + coords[ps[7]][1])) /\n 9,\n ]);\n ps[6] = coords.length;\n coords.push([\n (-4 * coords[ps[3]][0] -\n coords[ps[12]][0] +\n 6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\n 2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n 3 * (coords[ps[4]][0] + coords[ps[14]][0])) /\n 9,\n (-4 * coords[ps[3]][1] -\n coords[ps[12]][1] +\n 6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\n 2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n 3 * (coords[ps[4]][1] + coords[ps[14]][1])) /\n 9,\n ]);\n ps[9] = coords.length;\n coords.push([\n (-4 * coords[ps[12]][0] -\n coords[ps[3]][0] +\n 6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\n 2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n 3 * (coords[ps[11]][0] + coords[ps[1]][0])) /\n 9,\n (-4 * coords[ps[12]][1] -\n coords[ps[3]][1] +\n 6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\n 2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n 3 * (coords[ps[11]][1] + coords[ps[1]][1])) /\n 9,\n ]);\n ps[10] = coords.length;\n coords.push([\n (-4 * coords[ps[15]][0] -\n coords[ps[0]][0] +\n 6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\n 2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n 3 * (coords[ps[2]][0] + coords[ps[8]][0])) /\n 9,\n (-4 * coords[ps[15]][1] -\n coords[ps[0]][1] +\n 6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\n 2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n 3 * (coords[ps[2]][1] + coords[ps[8]][1])) /\n 9,\n ]);\n this.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps), // making copies of ps and cs\n colors: new Int32Array(cs),\n });\n }\n }\n\n _decodeType7Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n const cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type7 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n // prettier-ignore\n case 0:\n ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6;\n ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\n ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\n ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n cs[2] = ci + 1; cs[3] = ci + 2;\n cs[0] = ci; cs[1] = ci + 3;\n break;\n // prettier-ignore\n case 1:\n tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = tmp3; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[2]; tmp2 = cs[3];\n cs[2] = tmp2; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1]; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 3:\n ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[1]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = ps[2]; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n cs[2] = cs[0]; cs[3] = ci;\n cs[0] = cs[1]; cs[1] = ci + 1;\n break;\n }\n this.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps), // making copies of ps and cs\n colors: new Int32Array(cs),\n });\n }\n }\n\n _buildFigureFromPatch(index) {\n const figure = this.figures[index];\n assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n\n const coords = this.coords,\n colors = this.colors;\n const pi = figure.coords;\n const ci = figure.colors;\n\n const figureMinX = Math.min(\n coords[pi[0]][0],\n coords[pi[3]][0],\n coords[pi[12]][0],\n coords[pi[15]][0]\n );\n const figureMinY = Math.min(\n coords[pi[0]][1],\n coords[pi[3]][1],\n coords[pi[12]][1],\n coords[pi[15]][1]\n );\n const figureMaxX = Math.max(\n coords[pi[0]][0],\n coords[pi[3]][0],\n coords[pi[12]][0],\n coords[pi[15]][0]\n );\n const figureMaxY = Math.max(\n coords[pi[0]][1],\n coords[pi[3]][1],\n coords[pi[12]][1],\n coords[pi[15]][1]\n );\n let splitXBy = Math.ceil(\n ((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY) /\n (this.bounds[2] - this.bounds[0])\n );\n splitXBy = Math.max(\n MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)\n );\n let splitYBy = Math.ceil(\n ((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY) /\n (this.bounds[3] - this.bounds[1])\n );\n splitYBy = Math.max(\n MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)\n );\n\n const verticesPerRow = splitXBy + 1;\n const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n let k = 0;\n const cl = new Uint8Array(3),\n cr = new Uint8Array(3);\n const c0 = colors[ci[0]],\n c1 = colors[ci[1]],\n c2 = colors[ci[2]],\n c3 = colors[ci[3]];\n const bRow = getB(splitYBy),\n bCol = getB(splitXBy);\n for (let row = 0; row <= splitYBy; row++) {\n cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;\n cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;\n cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;\n\n cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;\n cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;\n cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;\n\n for (let col = 0; col <= splitXBy; col++, k++) {\n if (\n (row === 0 || row === splitYBy) &&\n (col === 0 || col === splitXBy)\n ) {\n continue;\n }\n let x = 0,\n y = 0;\n let q = 0;\n for (let i = 0; i <= 3; i++) {\n for (let j = 0; j <= 3; j++, q++) {\n const m = bRow[row][i] * bCol[col][j];\n x += coords[pi[q]][0] * m;\n y += coords[pi[q]][1] * m;\n }\n }\n figureCoords[k] = coords.length;\n coords.push([x, y]);\n figureColors[k] = colors.length;\n const newColor = new Uint8Array(3);\n newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;\n newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;\n newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;\n colors.push(newColor);\n }\n }\n figureCoords[0] = pi[0];\n figureColors[0] = ci[0];\n figureCoords[splitXBy] = pi[3];\n figureColors[splitXBy] = ci[1];\n figureCoords[verticesPerRow * splitYBy] = pi[12];\n figureColors[verticesPerRow * splitYBy] = ci[2];\n figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n\n this.figures[index] = {\n type: \"lattice\",\n coords: figureCoords,\n colors: figureColors,\n verticesPerRow,\n };\n }\n\n _updateBounds() {\n let minX = this.coords[0][0],\n minY = this.coords[0][1],\n maxX = minX,\n maxY = minY;\n for (let i = 1, ii = this.coords.length; i < ii; i++) {\n const x = this.coords[i][0],\n y = this.coords[i][1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n this.bounds = [minX, minY, maxX, maxY];\n }\n\n _packData() {\n let i, ii, j, jj;\n\n const coords = this.coords;\n const coordsPacked = new Float32Array(coords.length * 2);\n for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n const xy = coords[i];\n coordsPacked[j++] = xy[0];\n coordsPacked[j++] = xy[1];\n }\n this.coords = coordsPacked;\n\n const colors = this.colors;\n const colorsPacked = new Uint8Array(colors.length * 3);\n for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n const c = colors[i];\n colorsPacked[j++] = c[0];\n colorsPacked[j++] = c[1];\n colorsPacked[j++] = c[2];\n }\n this.colors = colorsPacked;\n\n const figures = this.figures;\n for (i = 0, ii = figures.length; i < ii; i++) {\n const figure = figures[i],\n ps = figure.coords,\n cs = figure.colors;\n for (j = 0, jj = ps.length; j < jj; j++) {\n ps[j] *= 2;\n cs[j] *= 3;\n }\n }\n }\n\n getIR() {\n return [\n \"Mesh\",\n this.shadingType,\n this.coords,\n this.colors,\n this.figures,\n this.bounds,\n this.bbox,\n this.background,\n ];\n }\n}\n\nclass DummyShading extends BaseShading {\n getIR() {\n return [\"Dummy\"];\n }\n}\n\nfunction getTilingPatternIR(operatorList, dict, color) {\n const matrix = dict.getArray(\"Matrix\");\n const bbox = Util.normalizeRect(dict.getArray(\"BBox\"));\n const xstep = dict.get(\"XStep\");\n const ystep = dict.get(\"YStep\");\n const paintType = dict.get(\"PaintType\");\n const tilingType = dict.get(\"TilingType\");\n\n // Ensure that the pattern has a non-zero width and height, to prevent errors\n // in `pattern_helper.js` (fixes issue8330.pdf).\n if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n throw new FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n }\n\n return [\n \"TilingPattern\",\n color,\n operatorList,\n matrix,\n bbox,\n xstep,\n ystep,\n paintType,\n tilingType,\n ];\n}\n\nexport { getTilingPatternIR, Pattern };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, Ref } from \"./primitives.js\";\nimport {\n FormatError,\n info,\n IsEvalSupportedCached,\n shadow,\n unreachable,\n} from \"../shared/util.js\";\nimport { PostScriptLexer, PostScriptParser } from \"./ps_parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { LocalFunctionCache } from \"./image_utils.js\";\n\nclass PDFFunctionFactory {\n constructor({ xref, isEvalSupported = true }) {\n this.xref = xref;\n this.isEvalSupported = isEvalSupported !== false;\n }\n\n create(fn) {\n const cachedFunction = this.getCached(fn);\n if (cachedFunction) {\n return cachedFunction;\n }\n const parsedFunction = PDFFunction.parse({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fn: fn instanceof Ref ? this.xref.fetch(fn) : fn,\n });\n\n // Attempt to cache the parsed Function, by reference.\n this._cache(fn, parsedFunction);\n\n return parsedFunction;\n }\n\n createFromArray(fnObj) {\n const cachedFunction = this.getCached(fnObj);\n if (cachedFunction) {\n return cachedFunction;\n }\n const parsedFunction = PDFFunction.parseArray({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fnObj: fnObj instanceof Ref ? this.xref.fetch(fnObj) : fnObj,\n });\n\n // Attempt to cache the parsed Function, by reference.\n this._cache(fnObj, parsedFunction);\n\n return parsedFunction;\n }\n\n getCached(cacheKey) {\n let fnRef;\n if (cacheKey instanceof Ref) {\n fnRef = cacheKey;\n } else if (cacheKey instanceof Dict) {\n fnRef = cacheKey.objId;\n } else if (cacheKey instanceof BaseStream) {\n fnRef = cacheKey.dict && cacheKey.dict.objId;\n }\n if (fnRef) {\n const localFunction = this._localFunctionCache.getByRef(fnRef);\n if (localFunction) {\n return localFunction;\n }\n }\n return null;\n }\n\n /**\n * @private\n */\n _cache(cacheKey, parsedFunction) {\n if (!parsedFunction) {\n throw new Error(\n 'PDFFunctionFactory._cache - expected \"parsedFunction\" argument.'\n );\n }\n let fnRef;\n if (cacheKey instanceof Ref) {\n fnRef = cacheKey;\n } else if (cacheKey instanceof Dict) {\n fnRef = cacheKey.objId;\n } else if (cacheKey instanceof BaseStream) {\n fnRef = cacheKey.dict && cacheKey.dict.objId;\n }\n if (fnRef) {\n this._localFunctionCache.set(/* name = */ null, fnRef, parsedFunction);\n }\n }\n\n /**\n * @private\n */\n get _localFunctionCache() {\n return shadow(this, \"_localFunctionCache\", new LocalFunctionCache());\n }\n}\n\nfunction toNumberArray(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n const length = arr.length;\n for (let i = 0; i < length; i++) {\n if (typeof arr[i] !== \"number\") {\n // Non-number is found -- convert all items to numbers.\n const result = new Array(length);\n for (let j = 0; j < length; j++) {\n result[j] = +arr[j];\n }\n return result;\n }\n }\n return arr;\n}\n\nclass PDFFunction {\n static getSampleArray(size, outputSize, bps, stream) {\n let i, ii;\n let length = 1;\n for (i = 0, ii = size.length; i < ii; i++) {\n length *= size[i];\n }\n length *= outputSize;\n\n const array = new Array(length);\n let codeSize = 0;\n let codeBuf = 0;\n // 32 is a valid bps so shifting won't work\n const sampleMul = 1.0 / (2.0 ** bps - 1);\n\n const strBytes = stream.getBytes((length * bps + 7) / 8);\n let strIdx = 0;\n for (i = 0; i < length; i++) {\n while (codeSize < bps) {\n codeBuf <<= 8;\n codeBuf |= strBytes[strIdx++];\n codeSize += 8;\n }\n codeSize -= bps;\n array[i] = (codeBuf >> codeSize) * sampleMul;\n codeBuf &= (1 << codeSize) - 1;\n }\n return array;\n }\n\n static parse({ xref, isEvalSupported, fn }) {\n const dict = fn.dict || fn;\n const typeNum = dict.get(\"FunctionType\");\n\n switch (typeNum) {\n case 0:\n return this.constructSampled({ xref, isEvalSupported, fn, dict });\n case 1:\n break;\n case 2:\n return this.constructInterpolated({ xref, isEvalSupported, dict });\n case 3:\n return this.constructStiched({ xref, isEvalSupported, dict });\n case 4:\n return this.constructPostScript({ xref, isEvalSupported, fn, dict });\n }\n throw new FormatError(\"Unknown type of function\");\n }\n\n static parseArray({ xref, isEvalSupported, fnObj }) {\n if (!Array.isArray(fnObj)) {\n // not an array -- parsing as regular function\n return this.parse({ xref, isEvalSupported, fn: fnObj });\n }\n\n const fnArray = [];\n for (let j = 0, jj = fnObj.length; j < jj; j++) {\n fnArray.push(\n this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnObj[j]) })\n );\n }\n return function (src, srcOffset, dest, destOffset) {\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n fnArray[i](src, srcOffset, dest, destOffset + i);\n }\n };\n }\n\n static constructSampled({ xref, isEvalSupported, fn, dict }) {\n function toMultiArray(arr) {\n const inputLength = arr.length;\n const out = [];\n let index = 0;\n for (let i = 0; i < inputLength; i += 2) {\n out[index++] = [arr[i], arr[i + 1]];\n }\n return out;\n }\n // See chapter 3, page 109 of the PDF reference\n function interpolate(x, xmin, xmax, ymin, ymax) {\n return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n }\n\n let domain = toNumberArray(dict.getArray(\"Domain\"));\n let range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain || !range) {\n throw new FormatError(\"No domain or range\");\n }\n\n const inputSize = domain.length / 2;\n const outputSize = range.length / 2;\n\n domain = toMultiArray(domain);\n range = toMultiArray(range);\n\n const size = toNumberArray(dict.getArray(\"Size\"));\n const bps = dict.get(\"BitsPerSample\");\n const order = dict.get(\"Order\") || 1;\n if (order !== 1) {\n // No description how cubic spline interpolation works in PDF32000:2008\n // As in poppler, ignoring order, linear interpolation may work as good\n info(\"No support for cubic spline interpolation: \" + order);\n }\n\n let encode = toNumberArray(dict.getArray(\"Encode\"));\n if (!encode) {\n encode = [];\n for (let i = 0; i < inputSize; ++i) {\n encode.push([0, size[i] - 1]);\n }\n } else {\n encode = toMultiArray(encode);\n }\n\n let decode = toNumberArray(dict.getArray(\"Decode\"));\n if (!decode) {\n decode = range;\n } else {\n decode = toMultiArray(decode);\n }\n\n const samples = this.getSampleArray(size, outputSize, bps, fn);\n // const mask = 2 ** bps - 1;\n\n return function constructSampledFn(src, srcOffset, dest, destOffset) {\n // See chapter 3, page 110 of the PDF reference.\n\n // Building the cube vertices: its part and sample index\n // http://rjwagner49.com/Mathematics/Interpolation.pdf\n const cubeVertices = 1 << inputSize;\n const cubeN = new Float64Array(cubeVertices);\n const cubeVertex = new Uint32Array(cubeVertices);\n let i, j;\n for (j = 0; j < cubeVertices; j++) {\n cubeN[j] = 1;\n }\n\n let k = outputSize,\n pos = 1;\n // Map x_i to y_j for 0 <= i < m using the sampled function.\n for (i = 0; i < inputSize; ++i) {\n // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n const domain_2i = domain[i][0];\n const domain_2i_1 = domain[i][1];\n const xi = Math.min(\n Math.max(src[srcOffset + i], domain_2i),\n domain_2i_1\n );\n\n // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\n // Encode_2i, Encode_2i+1)\n let e = interpolate(\n xi,\n domain_2i,\n domain_2i_1,\n encode[i][0],\n encode[i][1]\n );\n\n // e_i' = min(max(e_i, 0), Size_i - 1)\n const size_i = size[i];\n e = Math.min(Math.max(e, 0), size_i - 1);\n\n // Adjusting the cube: N and vertex sample index\n const e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n const n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n const n1 = e - e0; // (e - e0) / (e1 - e0);\n const offset0 = e0 * k;\n const offset1 = offset0 + k; // e1 * k\n for (j = 0; j < cubeVertices; j++) {\n if (j & pos) {\n cubeN[j] *= n1;\n cubeVertex[j] += offset1;\n } else {\n cubeN[j] *= n0;\n cubeVertex[j] += offset0;\n }\n }\n\n k *= size_i;\n pos <<= 1;\n }\n\n for (j = 0; j < outputSize; ++j) {\n // Sum all cube vertices' samples portions\n let rj = 0;\n for (i = 0; i < cubeVertices; i++) {\n rj += samples[cubeVertex[i] + j] * cubeN[i];\n }\n\n // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\n // Decode_2j, Decode_2j+1)\n rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n\n // y_j = min(max(r_j, range_2j), range_2j+1)\n dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n }\n };\n }\n\n static constructInterpolated({ xref, isEvalSupported, dict }) {\n const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n const n = dict.get(\"N\");\n\n const diff = [];\n for (let i = 0, ii = c0.length; i < ii; ++i) {\n diff.push(c1[i] - c0[i]);\n }\n const length = diff.length;\n\n return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\n const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n for (let j = 0; j < length; ++j) {\n dest[destOffset + j] = c0[j] + x * diff[j];\n }\n };\n }\n\n static constructStiched({ xref, isEvalSupported, dict }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n\n if (!domain) {\n throw new FormatError(\"No domain\");\n }\n\n const inputSize = domain.length / 2;\n if (inputSize !== 1) {\n throw new FormatError(\"Bad domain for stiched function\");\n }\n\n const fnRefs = dict.get(\"Functions\");\n const fns = [];\n for (let i = 0, ii = fnRefs.length; i < ii; ++i) {\n fns.push(\n this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnRefs[i]) })\n );\n }\n\n const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n const encode = toNumberArray(dict.getArray(\"Encode\"));\n const tmpBuf = new Float32Array(1);\n\n return function constructStichedFn(src, srcOffset, dest, destOffset) {\n const clip = function constructStichedFromIRClip(v, min, max) {\n if (v > max) {\n v = max;\n } else if (v < min) {\n v = min;\n }\n return v;\n };\n\n // clip to domain\n const v = clip(src[srcOffset], domain[0], domain[1]);\n // calculate which bound the value is in\n const length = bounds.length;\n let i;\n for (i = 0; i < length; ++i) {\n if (v < bounds[i]) {\n break;\n }\n }\n\n // encode value into domain of function\n let dmin = domain[0];\n if (i > 0) {\n dmin = bounds[i - 1];\n }\n let dmax = domain[1];\n if (i < bounds.length) {\n dmax = bounds[i];\n }\n\n const rmin = encode[2 * i];\n const rmax = encode[2 * i + 1];\n\n // Prevent the value from becoming NaN as a result\n // of division by zero (fixes issue6113.pdf).\n tmpBuf[0] =\n dmin === dmax\n ? rmin\n : rmin + ((v - dmin) * (rmax - rmin)) / (dmax - dmin);\n\n // call the appropriate function\n fns[i](tmpBuf, 0, dest, destOffset);\n };\n }\n\n static constructPostScript({ xref, isEvalSupported, fn, dict }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n const range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain) {\n throw new FormatError(\"No domain.\");\n }\n\n if (!range) {\n throw new FormatError(\"No range.\");\n }\n\n const lexer = new PostScriptLexer(fn);\n const parser = new PostScriptParser(lexer);\n const code = parser.parse();\n\n if (isEvalSupported && IsEvalSupportedCached.value) {\n const compiled = new PostScriptCompiler().compile(code, domain, range);\n if (compiled) {\n // Compiled function consists of simple expressions such as addition,\n // subtraction, Math.max, and also contains 'var' and 'return'\n // statements. See the generation in the PostScriptCompiler below.\n // eslint-disable-next-line no-new-func\n return new Function(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n }\n }\n info(\"Unable to compile PS function\");\n\n const numOutputs = range.length >> 1;\n const numInputs = domain.length >> 1;\n const evaluator = new PostScriptEvaluator(code);\n // Cache the values for a big speed up, the cache size is limited though\n // since the number of possible values can be huge from a PS function.\n const cache = Object.create(null);\n // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\n // seen in our tests.\n const MAX_CACHE_SIZE = 2048 * 4;\n let cache_available = MAX_CACHE_SIZE;\n const tmpBuf = new Float32Array(numInputs);\n\n return function constructPostScriptFn(src, srcOffset, dest, destOffset) {\n let i, value;\n let key = \"\";\n const input = tmpBuf;\n for (i = 0; i < numInputs; i++) {\n value = src[srcOffset + i];\n input[i] = value;\n key += value + \"_\";\n }\n\n const cachedValue = cache[key];\n if (cachedValue !== undefined) {\n dest.set(cachedValue, destOffset);\n return;\n }\n\n const output = new Float32Array(numOutputs);\n const stack = evaluator.execute(input);\n const stackIndex = stack.length - numOutputs;\n for (i = 0; i < numOutputs; i++) {\n value = stack[stackIndex + i];\n let bound = range[i * 2];\n if (value < bound) {\n value = bound;\n } else {\n bound = range[i * 2 + 1];\n if (value > bound) {\n value = bound;\n }\n }\n output[i] = value;\n }\n if (cache_available > 0) {\n cache_available--;\n cache[key] = output;\n }\n dest.set(output, destOffset);\n };\n }\n}\n\nfunction isPDFFunction(v) {\n let fnDict;\n if (typeof v !== \"object\") {\n return false;\n } else if (v instanceof Dict) {\n fnDict = v;\n } else if (v instanceof BaseStream) {\n fnDict = v.dict;\n } else {\n return false;\n }\n return fnDict.has(\"FunctionType\");\n}\n\nclass PostScriptStack {\n static get MAX_STACK_SIZE() {\n return shadow(this, \"MAX_STACK_SIZE\", 100);\n }\n\n constructor(initialStack) {\n this.stack = !initialStack\n ? []\n : Array.prototype.slice.call(initialStack, 0);\n }\n\n push(value) {\n if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n this.stack.push(value);\n }\n\n pop() {\n if (this.stack.length <= 0) {\n throw new Error(\"PostScript function stack underflow.\");\n }\n return this.stack.pop();\n }\n\n copy(n) {\n if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n const stack = this.stack;\n for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n stack.push(stack[i]);\n }\n }\n\n index(n) {\n this.push(this.stack[this.stack.length - n - 1]);\n }\n\n // rotate the last n stack elements p times\n roll(n, p) {\n const stack = this.stack;\n const l = stack.length - n;\n const r = stack.length - 1;\n const c = l + (p - Math.floor(p / n) * n);\n\n for (let i = l, j = r; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n for (let i = l, j = c - 1; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n for (let i = c, j = r; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n }\n}\n\nclass PostScriptEvaluator {\n constructor(operators) {\n this.operators = operators;\n }\n\n execute(initialStack) {\n const stack = new PostScriptStack(initialStack);\n let counter = 0;\n const operators = this.operators;\n const length = operators.length;\n let operator, a, b;\n while (counter < length) {\n operator = operators[counter++];\n if (typeof operator === \"number\") {\n // Operator is really an operand and should be pushed to the stack.\n stack.push(operator);\n continue;\n }\n switch (operator) {\n // non standard ps operators\n case \"jz\": // jump if false\n b = stack.pop();\n a = stack.pop();\n if (!a) {\n counter = b;\n }\n break;\n case \"j\": // jump\n a = stack.pop();\n counter = a;\n break;\n\n // all ps operators in alphabetical order (excluding if/ifelse)\n case \"abs\":\n a = stack.pop();\n stack.push(Math.abs(a));\n break;\n case \"add\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a + b);\n break;\n case \"and\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a && b);\n } else {\n stack.push(a & b);\n }\n break;\n case \"atan\":\n a = stack.pop();\n stack.push(Math.atan(a));\n break;\n case \"bitshift\":\n b = stack.pop();\n a = stack.pop();\n if (a > 0) {\n stack.push(a << b);\n } else {\n stack.push(a >> b);\n }\n break;\n case \"ceiling\":\n a = stack.pop();\n stack.push(Math.ceil(a));\n break;\n case \"copy\":\n a = stack.pop();\n stack.copy(a);\n break;\n case \"cos\":\n a = stack.pop();\n stack.push(Math.cos(a));\n break;\n case \"cvi\":\n a = stack.pop() | 0;\n stack.push(a);\n break;\n case \"cvr\":\n // noop\n break;\n case \"div\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a / b);\n break;\n case \"dup\":\n stack.copy(1);\n break;\n case \"eq\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a === b);\n break;\n case \"exch\":\n stack.roll(2, 1);\n break;\n case \"exp\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a ** b);\n break;\n case \"false\":\n stack.push(false);\n break;\n case \"floor\":\n a = stack.pop();\n stack.push(Math.floor(a));\n break;\n case \"ge\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a >= b);\n break;\n case \"gt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a > b);\n break;\n case \"idiv\":\n b = stack.pop();\n a = stack.pop();\n stack.push((a / b) | 0);\n break;\n case \"index\":\n a = stack.pop();\n stack.index(a);\n break;\n case \"le\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a <= b);\n break;\n case \"ln\":\n a = stack.pop();\n stack.push(Math.log(a));\n break;\n case \"log\":\n a = stack.pop();\n stack.push(Math.log(a) / Math.LN10);\n break;\n case \"lt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a < b);\n break;\n case \"mod\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a % b);\n break;\n case \"mul\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a * b);\n break;\n case \"ne\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a !== b);\n break;\n case \"neg\":\n a = stack.pop();\n stack.push(-a);\n break;\n case \"not\":\n a = stack.pop();\n if (typeof a === \"boolean\") {\n stack.push(!a);\n } else {\n stack.push(~a);\n }\n break;\n case \"or\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a || b);\n } else {\n stack.push(a | b);\n }\n break;\n case \"pop\":\n stack.pop();\n break;\n case \"roll\":\n b = stack.pop();\n a = stack.pop();\n stack.roll(a, b);\n break;\n case \"round\":\n a = stack.pop();\n stack.push(Math.round(a));\n break;\n case \"sin\":\n a = stack.pop();\n stack.push(Math.sin(a));\n break;\n case \"sqrt\":\n a = stack.pop();\n stack.push(Math.sqrt(a));\n break;\n case \"sub\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a - b);\n break;\n case \"true\":\n stack.push(true);\n break;\n case \"truncate\":\n a = stack.pop();\n a = a < 0 ? Math.ceil(a) : Math.floor(a);\n stack.push(a);\n break;\n case \"xor\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a !== b);\n } else {\n stack.push(a ^ b);\n }\n break;\n default:\n throw new FormatError(`Unknown operator ${operator}`);\n }\n }\n return stack.stack;\n }\n}\n\n// Most of the PDFs functions consist of simple operations such as:\n// roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\n//\n// We can compile most of such programs, and at the same moment, we can\n// optimize some expressions using basic math properties. Keeping track of\n// min/max values will allow us to avoid extra Math.min/Math.max calls.\nconst PostScriptCompiler = (function PostScriptCompilerClosure() {\n class AstNode {\n constructor(type) {\n this.type = type;\n }\n\n visit(visitor) {\n unreachable(\"abstract method\");\n }\n }\n\n class AstArgument extends AstNode {\n constructor(index, min, max) {\n super(\"args\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitArgument(this);\n }\n }\n\n class AstLiteral extends AstNode {\n constructor(number) {\n super(\"literal\");\n this.number = number;\n this.min = number;\n this.max = number;\n }\n\n visit(visitor) {\n visitor.visitLiteral(this);\n }\n }\n\n class AstBinaryOperation extends AstNode {\n constructor(op, arg1, arg2, min, max) {\n super(\"binary\");\n this.op = op;\n this.arg1 = arg1;\n this.arg2 = arg2;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitBinaryOperation(this);\n }\n }\n\n class AstMin extends AstNode {\n constructor(arg, max) {\n super(\"max\");\n this.arg = arg;\n this.min = arg.min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitMin(this);\n }\n }\n\n class AstVariable extends AstNode {\n constructor(index, min, max) {\n super(\"var\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitVariable(this);\n }\n }\n\n class AstVariableDefinition extends AstNode {\n constructor(variable, arg) {\n super(\"definition\");\n this.variable = variable;\n this.arg = arg;\n }\n\n visit(visitor) {\n visitor.visitVariableDefinition(this);\n }\n }\n\n class ExpressionBuilderVisitor {\n constructor() {\n this.parts = [];\n }\n\n visitArgument(arg) {\n this.parts.push(\n \"Math.max(\",\n arg.min,\n \", Math.min(\",\n arg.max,\n \", src[srcOffset + \",\n arg.index,\n \"]))\"\n );\n }\n\n visitVariable(variable) {\n this.parts.push(\"v\", variable.index);\n }\n\n visitLiteral(literal) {\n this.parts.push(literal.number);\n }\n\n visitBinaryOperation(operation) {\n this.parts.push(\"(\");\n operation.arg1.visit(this);\n this.parts.push(\" \", operation.op, \" \");\n operation.arg2.visit(this);\n this.parts.push(\")\");\n }\n\n visitVariableDefinition(definition) {\n this.parts.push(\"var \");\n definition.variable.visit(this);\n this.parts.push(\" = \");\n definition.arg.visit(this);\n this.parts.push(\";\");\n }\n\n visitMin(max) {\n this.parts.push(\"Math.min(\");\n max.arg.visit(this);\n this.parts.push(\", \", max.max, \")\");\n }\n\n toString() {\n return this.parts.join(\"\");\n }\n }\n\n function buildAddOperation(num1, num2) {\n if (num2.type === \"literal\" && num2.number === 0) {\n // optimization: second operand is 0\n return num1;\n }\n if (num1.type === \"literal\" && num1.number === 0) {\n // optimization: first operand is 0\n return num2;\n }\n if (num2.type === \"literal\" && num1.type === \"literal\") {\n // optimization: operands operand are literals\n return new AstLiteral(num1.number + num2.number);\n }\n return new AstBinaryOperation(\n \"+\",\n num1,\n num2,\n num1.min + num2.min,\n num1.max + num2.max\n );\n }\n\n function buildMulOperation(num1, num2) {\n if (num2.type === \"literal\") {\n // optimization: second operands is a literal...\n if (num2.number === 0) {\n return new AstLiteral(0); // and it's 0\n } else if (num2.number === 1) {\n return num1; // and it's 1\n } else if (num1.type === \"literal\") {\n // ... and first operands is a literal too\n return new AstLiteral(num1.number * num2.number);\n }\n }\n if (num1.type === \"literal\") {\n // optimization: first operands is a literal...\n if (num1.number === 0) {\n return new AstLiteral(0); // and it's 0\n } else if (num1.number === 1) {\n return num2; // and it's 1\n }\n }\n const min = Math.min(\n num1.min * num2.min,\n num1.min * num2.max,\n num1.max * num2.min,\n num1.max * num2.max\n );\n const max = Math.max(\n num1.min * num2.min,\n num1.min * num2.max,\n num1.max * num2.min,\n num1.max * num2.max\n );\n return new AstBinaryOperation(\"*\", num1, num2, min, max);\n }\n\n function buildSubOperation(num1, num2) {\n if (num2.type === \"literal\") {\n // optimization: second operands is a literal...\n if (num2.number === 0) {\n return num1; // ... and it's 0\n } else if (num1.type === \"literal\") {\n // ... and first operands is a literal too\n return new AstLiteral(num1.number - num2.number);\n }\n }\n if (\n num2.type === \"binary\" &&\n num2.op === \"-\" &&\n num1.type === \"literal\" &&\n num1.number === 1 &&\n num2.arg1.type === \"literal\" &&\n num2.arg1.number === 1\n ) {\n // optimization for case: 1 - (1 - x)\n return num2.arg2;\n }\n return new AstBinaryOperation(\n \"-\",\n num1,\n num2,\n num1.min - num2.max,\n num1.max - num2.min\n );\n }\n\n function buildMinOperation(num1, max) {\n if (num1.min >= max) {\n // optimization: num1 min value is not less than required max\n return new AstLiteral(max); // just returning max\n } else if (num1.max <= max) {\n // optimization: num1 max value is not greater than required max\n return num1; // just returning an argument\n }\n return new AstMin(num1, max);\n }\n\n // eslint-disable-next-line no-shadow\n class PostScriptCompiler {\n compile(code, domain, range) {\n const stack = [];\n const instructions = [];\n const inputSize = domain.length >> 1,\n outputSize = range.length >> 1;\n let lastRegister = 0;\n let n, j;\n let num1, num2, ast1, ast2, tmpVar, item;\n for (let i = 0; i < inputSize; i++) {\n stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n }\n\n for (let i = 0, ii = code.length; i < ii; i++) {\n item = code[i];\n if (typeof item === \"number\") {\n stack.push(new AstLiteral(item));\n continue;\n }\n\n switch (item) {\n case \"add\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildAddOperation(num1, num2));\n break;\n case \"cvr\":\n if (stack.length < 1) {\n return null;\n }\n break;\n case \"mul\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildMulOperation(num1, num2));\n break;\n case \"sub\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildSubOperation(num1, num2));\n break;\n case \"exch\":\n if (stack.length < 2) {\n return null;\n }\n ast1 = stack.pop();\n ast2 = stack.pop();\n stack.push(ast1, ast2);\n break;\n case \"pop\":\n if (stack.length < 1) {\n return null;\n }\n stack.pop();\n break;\n case \"index\":\n if (stack.length < 1) {\n return null;\n }\n num1 = stack.pop();\n if (num1.type !== \"literal\") {\n return null;\n }\n n = num1.number;\n if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n return null;\n }\n ast1 = stack[stack.length - n - 1];\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n stack.push(ast1);\n break;\n }\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - n - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n case \"dup\":\n if (stack.length < 1) {\n return null;\n }\n if (\n typeof code[i + 1] === \"number\" &&\n code[i + 2] === \"gt\" &&\n code[i + 3] === i + 7 &&\n code[i + 4] === \"jz\" &&\n code[i + 5] === \"pop\" &&\n code[i + 6] === code[i + 1]\n ) {\n // special case of the commands sequence for the min operation\n num1 = stack.pop();\n stack.push(buildMinOperation(num1, code[i + 1]));\n i += 6;\n break;\n }\n ast1 = stack[stack.length - 1];\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n // we don't have to save into intermediate variable a literal or\n // variable.\n stack.push(ast1);\n break;\n }\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n case \"roll\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n // both roll operands must be numbers\n return null;\n }\n j = num2.number;\n n = num1.number;\n if (\n n <= 0 ||\n !Number.isInteger(n) ||\n !Number.isInteger(j) ||\n stack.length < n\n ) {\n // ... and integers\n return null;\n }\n j = ((j % n) + n) % n;\n if (j === 0) {\n break; // just skipping -- there are nothing to rotate\n }\n Array.prototype.push.apply(\n stack,\n stack.splice(stack.length - n, n - j)\n );\n break;\n default:\n return null; // unsupported operator\n }\n }\n\n if (stack.length !== outputSize) {\n return null;\n }\n\n const result = [];\n for (const instruction of instructions) {\n const statementBuilder = new ExpressionBuilderVisitor();\n instruction.visit(statementBuilder);\n result.push(statementBuilder.toString());\n }\n for (let i = 0, ii = stack.length; i < ii; i++) {\n const expr = stack[i],\n statementBuilder = new ExpressionBuilderVisitor();\n expr.visit(statementBuilder);\n const min = range[i * 2],\n max = range[i * 2 + 1];\n const out = [statementBuilder.toString()];\n if (min > expr.min) {\n out.unshift(\"Math.max(\", min, \", \");\n out.push(\")\");\n }\n if (max < expr.max) {\n out.unshift(\"Math.min(\", max, \", \");\n out.push(\")\");\n }\n out.unshift(\"dest[destOffset + \", i, \"] = \");\n out.push(\";\");\n result.push(out.join(\"\"));\n }\n return result.join(\"\\n\");\n }\n }\n\n return PostScriptCompiler;\n})();\n\nexport {\n isPDFFunction,\n PDFFunctionFactory,\n PostScriptCompiler,\n PostScriptEvaluator,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, shadow } from \"../shared/util.js\";\nimport { EOF } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass PostScriptParser {\n constructor(lexer) {\n this.lexer = lexer;\n this.operators = [];\n this.token = null;\n this.prev = null;\n }\n\n nextToken() {\n this.prev = this.token;\n this.token = this.lexer.getToken();\n }\n\n accept(type) {\n if (this.token.type === type) {\n this.nextToken();\n return true;\n }\n return false;\n }\n\n expect(type) {\n if (this.accept(type)) {\n return true;\n }\n throw new FormatError(\n `Unexpected symbol: found ${this.token.type} expected ${type}.`\n );\n }\n\n parse() {\n this.nextToken();\n this.expect(PostScriptTokenTypes.LBRACE);\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n return this.operators;\n }\n\n parseBlock() {\n while (true) {\n if (this.accept(PostScriptTokenTypes.NUMBER)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n this.parseCondition();\n } else {\n return;\n }\n }\n }\n\n parseCondition() {\n // Add two place holders that will be updated later\n const conditionLocation = this.operators.length;\n this.operators.push(null, null);\n\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n if (this.accept(PostScriptTokenTypes.IF)) {\n // The true block is right after the 'if' so it just falls through on true\n // else it jumps and skips the true block.\n this.operators[conditionLocation] = this.operators.length;\n this.operators[conditionLocation + 1] = \"jz\";\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n const jumpLocation = this.operators.length;\n this.operators.push(null, null);\n const endOfTrue = this.operators.length;\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n this.expect(PostScriptTokenTypes.IFELSE);\n // The jump is added at the end of the true block to skip the false block.\n this.operators[jumpLocation] = this.operators.length;\n this.operators[jumpLocation + 1] = \"j\";\n\n this.operators[conditionLocation] = endOfTrue;\n this.operators[conditionLocation + 1] = \"jz\";\n } else {\n throw new FormatError(\"PS Function: error parsing conditional.\");\n }\n }\n}\n\nconst PostScriptTokenTypes = {\n LBRACE: 0,\n RBRACE: 1,\n NUMBER: 2,\n OPERATOR: 3,\n IF: 4,\n IFELSE: 5,\n};\n\nclass PostScriptToken {\n static get opCache() {\n return shadow(this, \"opCache\", Object.create(null));\n }\n\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n\n static getOperator(op) {\n const opValue = PostScriptToken.opCache[op];\n if (opValue) {\n return opValue;\n }\n return (PostScriptToken.opCache[op] = new PostScriptToken(\n PostScriptTokenTypes.OPERATOR,\n op\n ));\n }\n\n static get LBRACE() {\n return shadow(\n this,\n \"LBRACE\",\n new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\")\n );\n }\n\n static get RBRACE() {\n return shadow(\n this,\n \"RBRACE\",\n new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\")\n );\n }\n\n static get IF() {\n return shadow(\n this,\n \"IF\",\n new PostScriptToken(PostScriptTokenTypes.IF, \"IF\")\n );\n }\n\n static get IFELSE() {\n return shadow(\n this,\n \"IFELSE\",\n new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\")\n );\n }\n}\n\nclass PostScriptLexer {\n constructor(stream) {\n this.stream = stream;\n this.nextChar();\n\n this.strBuf = [];\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n getToken() {\n let comment = false;\n let ch = this.currentChar;\n\n // skip comments\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (!isWhiteSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n switch (ch | 0) {\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n case 0x38: // '8'\n case 0x39: // '9'\n case 0x2b: // '+'\n case 0x2d: // '-'\n case 0x2e: // '.'\n return new PostScriptToken(\n PostScriptTokenTypes.NUMBER,\n this.getNumber()\n );\n case 0x7b: // '{'\n this.nextChar();\n return PostScriptToken.LBRACE;\n case 0x7d: // '}'\n this.nextChar();\n return PostScriptToken.RBRACE;\n }\n // operator\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while (\n (ch = this.nextChar()) >= 0 &&\n ((ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x5a) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x7a))\n ) {\n strBuf.push(String.fromCharCode(ch));\n }\n const str = strBuf.join(\"\");\n switch (str.toLowerCase()) {\n case \"if\":\n return PostScriptToken.IF;\n case \"ifelse\":\n return PostScriptToken.IFELSE;\n default:\n return PostScriptToken.getOperator(str);\n }\n }\n\n getNumber() {\n let ch = this.currentChar;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while ((ch = this.nextChar()) >= 0) {\n if (\n (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) ||\n ch === /* '-' = */ 0x2d ||\n ch === /* '.' = */ 0x2e\n ) {\n strBuf.push(String.fromCharCode(ch));\n } else {\n break;\n }\n }\n const value = parseFloat(strBuf.join(\"\"));\n if (isNaN(value)) {\n throw new FormatError(`Invalid floating point number: ${value}`);\n }\n return value;\n }\n}\n\nexport { PostScriptLexer, PostScriptParser };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable, warn } from \"../shared/util.js\";\nimport { RefSetCache } from \"./primitives.js\";\n\nclass BaseLocalCache {\n constructor(options) {\n if (this.constructor === BaseLocalCache) {\n unreachable(\"Cannot initialize BaseLocalCache.\");\n }\n this._onlyRefs = (options && options.onlyRefs) === true;\n\n if (!this._onlyRefs) {\n this._nameRefMap = new Map();\n this._imageMap = new Map();\n }\n this._imageCache = new RefSetCache();\n }\n\n getByName(name) {\n if (this._onlyRefs) {\n unreachable(\"Should not call `getByName` method.\");\n }\n const ref = this._nameRefMap.get(name);\n if (ref) {\n return this.getByRef(ref);\n }\n return this._imageMap.get(name) || null;\n }\n\n getByRef(ref) {\n return this._imageCache.get(ref) || null;\n }\n\n set(name, ref, data) {\n unreachable(\"Abstract method `set` called.\");\n }\n}\n\nclass LocalImageCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalImageCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalColorSpaceCache extends BaseLocalCache {\n set(name = null, ref = null, data) {\n if (typeof name !== \"string\" && !ref) {\n throw new Error(\n 'LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.'\n );\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n if (name !== null) {\n // Optional when `ref` is defined.\n this._nameRefMap.set(name, ref);\n }\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalFunctionCache extends BaseLocalCache {\n constructor(options) {\n super({ onlyRefs: true });\n }\n\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\n\nclass LocalGStateCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalTilingPatternCache extends BaseLocalCache {\n constructor(options) {\n super({ onlyRefs: true });\n }\n\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalTilingPatternCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\n\nclass GlobalImageCache {\n static get NUM_PAGES_THRESHOLD() {\n return shadow(this, \"NUM_PAGES_THRESHOLD\", 2);\n }\n\n static get MIN_IMAGES_TO_CACHE() {\n return shadow(this, \"MIN_IMAGES_TO_CACHE\", 10);\n }\n\n static get MAX_BYTE_SIZE() {\n return shadow(this, \"MAX_BYTE_SIZE\", /* Forty megabytes = */ 40e6);\n }\n\n constructor() {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n GlobalImageCache.NUM_PAGES_THRESHOLD > 1,\n \"GlobalImageCache - invalid NUM_PAGES_THRESHOLD constant.\"\n );\n }\n this._refCache = new RefSetCache();\n this._imageCache = new RefSetCache();\n }\n\n get _byteSize() {\n let byteSize = 0;\n this._imageCache.forEach(imageData => {\n byteSize += imageData.byteSize;\n });\n return byteSize;\n }\n\n get _cacheLimitReached() {\n if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) {\n return false;\n }\n if (this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) {\n return false;\n }\n return true;\n }\n\n shouldCache(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n const numPages = pageIndexSet\n ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1)\n : 1;\n\n if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return false;\n }\n if (!this._imageCache.has(ref) && this._cacheLimitReached) {\n return false;\n }\n return true;\n }\n\n addPageIndex(ref, pageIndex) {\n let pageIndexSet = this._refCache.get(ref);\n if (!pageIndexSet) {\n pageIndexSet = new Set();\n this._refCache.put(ref, pageIndexSet);\n }\n pageIndexSet.add(pageIndex);\n }\n\n /**\n * PLEASE NOTE: Must be called *after* the `setData` method.\n */\n addByteSize(ref, byteSize) {\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return; // The image data isn't cached (the limit was reached).\n }\n if (imageData.byteSize) {\n return; // The byte-size has already been set.\n }\n imageData.byteSize = byteSize;\n }\n\n getData(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n if (!pageIndexSet) {\n return null;\n }\n if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return null;\n }\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return null;\n }\n // Ensure that we keep track of all pages containing the image reference.\n pageIndexSet.add(pageIndex);\n\n return imageData;\n }\n\n setData(ref, data) {\n if (!this._refCache.has(ref)) {\n throw new Error(\n 'GlobalImageCache.setData - expected \"addPageIndex\" to have been called.'\n );\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n if (this._cacheLimitReached) {\n warn(\"GlobalImageCache.setData - cache limit reached.\");\n return;\n }\n this._imageCache.put(ref, data);\n }\n\n clear(onlyData = false) {\n if (!onlyData) {\n this._refCache.clear();\n }\n this._imageCache.clear();\n }\n}\n\nexport {\n GlobalImageCache,\n LocalColorSpaceCache,\n LocalFunctionCache,\n LocalGStateCache,\n LocalImageCache,\n LocalTilingPatternCache,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { warn } from \"../shared/util.js\";\n\n// Character types for symbols from 0000 to 00FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// prettier-ignore\nconst baseTypes = [\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\",\n \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\",\n \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\",\n \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\",\n \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\",\n \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\",\n \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\",\n \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"\n];\n\n// Character types for symbols from 0600 to 06FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// Note that 061D does not exist in the Unicode standard (see\n// http://unicode.org/charts/PDF/U0600.pdf), so we replace it with an\n// empty string and issue a warning if we encounter this character. The\n// empty string is required to properly index the items after it.\n// prettier-ignore\nconst arabicTypes = [\n \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\",\n \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\",\n \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\",\n \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\",\n \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\",\n \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"\n];\n\nfunction isOdd(i) {\n return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n let j, jj;\n for (j = start, jj = arr.length; j < jj; ++j) {\n if (arr[j] !== value) {\n return j;\n }\n }\n return j;\n}\n\nfunction setValues(arr, start, end, value) {\n for (let j = start; j < end; ++j) {\n arr[j] = value;\n }\n}\n\nfunction reverseValues(arr, start, end) {\n for (let i = start, j = end - 1; i < j; ++i, --j) {\n const temp = arr[i];\n arr[i] = arr[j];\n arr[j] = temp;\n }\n}\n\nfunction createBidiText(str, isLTR, vertical = false) {\n let dir = \"ltr\";\n if (vertical) {\n dir = \"ttb\";\n } else if (!isLTR) {\n dir = \"rtl\";\n }\n return { str, dir };\n}\n\n// These are used in bidi(), which is called frequently. We re-use them on\n// each call to avoid unnecessary allocations.\nconst chars = [];\nconst types = [];\n\nfunction bidi(str, startLevel = -1, vertical = false) {\n let isLTR = true;\n const strLength = str.length;\n if (strLength === 0 || vertical) {\n return createBidiText(str, isLTR, vertical);\n }\n\n // Get types and fill arrays\n chars.length = strLength;\n types.length = strLength;\n let numBidi = 0;\n\n let i, ii;\n for (i = 0; i < strLength; ++i) {\n chars[i] = str.charAt(i);\n\n const charCode = str.charCodeAt(i);\n let charType = \"L\";\n if (charCode <= 0x00ff) {\n charType = baseTypes[charCode];\n } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n charType = \"R\";\n } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n charType = arabicTypes[charCode & 0xff];\n if (!charType) {\n warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n }\n } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n charType = \"AL\";\n }\n if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n numBidi++;\n }\n types[i] = charType;\n }\n\n // Detect the bidi method\n // - If there are no rtl characters then no bidi needed\n // - If less than 30% chars are rtl then string is primarily ltr,\n // unless the string is very short.\n // - If more than 30% chars are rtl then string is primarily rtl\n if (numBidi === 0) {\n isLTR = true;\n return createBidiText(str, isLTR);\n }\n\n if (startLevel === -1) {\n if (numBidi / strLength < 0.3 && strLength > 4) {\n isLTR = true;\n startLevel = 0;\n } else {\n isLTR = false;\n startLevel = 1;\n }\n }\n\n const levels = [];\n for (i = 0; i < strLength; ++i) {\n levels[i] = startLevel;\n }\n\n /*\n X1-X10: skip most of this, since we are NOT doing the embeddings.\n */\n const e = isOdd(startLevel) ? \"R\" : \"L\";\n const sor = e;\n const eor = sor;\n\n /*\n W1. Examine each non-spacing mark (NSM) in the level run, and change the\n type of the NSM to the type of the previous character. If the NSM is at the\n start of the level run, it will get the type of sor.\n */\n let lastType = sor;\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"NSM\") {\n types[i] = lastType;\n } else {\n lastType = types[i];\n }\n }\n\n /*\n W2. Search backwards from each instance of a European number until the\n first strong type (R, L, AL, or sor) is found. If an AL is found, change\n the type of the European number to Arabic number.\n */\n lastType = sor;\n let t;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n lastType = t;\n }\n }\n\n /*\n W3. Change all ALs to R.\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"AL\") {\n types[i] = \"R\";\n }\n }\n\n /*\n W4. A single European separator between two European numbers changes to a\n European number. A single common separator between two numbers of the same\n type changes to that type:\n */\n for (i = 1; i < strLength - 1; ++i) {\n if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n types[i] = \"EN\";\n }\n if (\n types[i] === \"CS\" &&\n (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") &&\n types[i + 1] === types[i - 1]\n ) {\n types[i] = types[i - 1];\n }\n }\n\n /*\n W5. A sequence of European terminators adjacent to European numbers changes\n to all European numbers:\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"EN\") {\n // do before\n for (let j = i - 1; j >= 0; --j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n // do after\n for (let j = i + 1; j < strLength; ++j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n }\n }\n\n /*\n W6. Otherwise, separators and terminators change to Other Neutral:\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n types[i] = \"ON\";\n }\n }\n\n /*\n W7. Search backwards from each instance of a European number until the\n first strong type (R, L, or sor) is found. If an L is found, then change\n the type of the European number to L.\n */\n lastType = sor;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n } else if (t === \"R\" || t === \"L\") {\n lastType = t;\n }\n }\n\n /*\n N1. A sequence of neutrals takes the direction of the surrounding strong\n text if the text on both sides has the same direction. European and Arabic\n numbers are treated as though they were R. Start-of-level-run (sor) and\n end-of-level-run (eor) are used at level run boundaries.\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n const end = findUnequal(types, i + 1, \"ON\");\n let before = sor;\n if (i > 0) {\n before = types[i - 1];\n }\n\n let after = eor;\n if (end + 1 < strLength) {\n after = types[end + 1];\n }\n if (before !== \"L\") {\n before = \"R\";\n }\n if (after !== \"L\") {\n after = \"R\";\n }\n if (before === after) {\n setValues(types, i, end, before);\n }\n i = end - 1; // reset to end (-1 so next iteration is ok)\n }\n }\n\n /*\n N2. Any remaining neutrals take the embedding direction.\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n types[i] = e;\n }\n }\n\n /*\n I1. For all characters with an even (left-to-right) embedding direction,\n those of type R go up one level and those of type AN or EN go up two\n levels.\n I2. For all characters with an odd (right-to-left) embedding direction,\n those of type L, EN or AN go up one level.\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (isEven(levels[i])) {\n if (t === \"R\") {\n levels[i] += 1;\n } else if (t === \"AN\" || t === \"EN\") {\n levels[i] += 2;\n }\n } else {\n // isOdd\n if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n levels[i] += 1;\n }\n }\n }\n\n /*\n L1. On each line, reset the embedding level of the following characters to\n the paragraph embedding level:\n\n segment separators,\n paragraph separators,\n any sequence of whitespace characters preceding a segment separator or\n paragraph separator, and any sequence of white space characters at the end\n of the line.\n */\n\n // don't bother as text is only single line\n\n /*\n L2. From the highest level found in the text to the lowest odd level on\n each line, reverse any contiguous sequence of characters that are at that\n level or higher.\n */\n\n // find highest level & lowest odd level\n let highestLevel = -1;\n let lowestOddLevel = 99;\n let level;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n level = levels[i];\n if (highestLevel < level) {\n highestLevel = level;\n }\n if (lowestOddLevel > level && isOdd(level)) {\n lowestOddLevel = level;\n }\n }\n\n // now reverse between those limits\n for (level = highestLevel; level >= lowestOddLevel; --level) {\n // find segments to reverse\n let start = -1;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n if (levels[i] < level) {\n if (start >= 0) {\n reverseValues(chars, start, i);\n start = -1;\n }\n } else if (start < 0) {\n start = i;\n }\n }\n if (start >= 0) {\n reverseValues(chars, start, levels.length);\n }\n }\n\n /*\n L3. Combining marks applied to a right-to-left base character will at this\n point precede their base character. If the rendering engine expects them to\n follow the base characters in the final display process, then the ordering\n of the marks and the base character must be reversed.\n */\n\n // don't bother for now\n\n /*\n L4. A character that possesses the mirrored property as specified by\n Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\n directionality of that character is R.\n */\n\n // don't mirror as characters are already mirrored in the pdf\n\n // Finally, return string\n for (i = 0, ii = chars.length; i < ii; ++i) {\n const ch = chars[i];\n if (ch === \"<\" || ch === \">\") {\n chars[i] = \"\";\n }\n }\n return createBidiText(chars.join(\"\"), isLTR);\n}\n\nexport { bidi };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer } from \"../shared/util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (isArrayBuffer(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\n \"Wrong data format in MurmurHash3_64_update. \" +\n \"Input must be a string or array.\"\n );\n }\n\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n // We don't care about endianness here.\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n k2 = (k2 << 15) | (k2 >>> 17);\n k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n h2 ^= k2;\n h2 = (h2 << 13) | (h2 >>> 19);\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n h2 =\n ((h2 * 0xff51afd7) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n h2 =\n ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n\n const hex1 = (h1 >>> 0).toString(16),\n hex2 = (h2 >>> 0).toString(16);\n return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n ImageKind,\n OPS,\n RenderingIntentFlag,\n shadow,\n warn,\n} from \"../shared/util.js\";\n\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\n let state = parentState;\n for (let i = 0, ii = pattern.length - 1; i < ii; i++) {\n const item = pattern[i];\n state = state[item] || (state[item] = []);\n }\n state[pattern[pattern.length - 1]] = {\n checkFn,\n iterateFn,\n processFn,\n };\n}\n\nfunction handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {\n // Handles special case of mainly LaTeX documents which use image masks to\n // draw lines with the current fill style.\n // 'count' groups of (save, transform, paintImageMaskXObject, restore)+\n // have been found at iFirstSave.\n const iFirstPIMXO = iFirstSave + 2;\n let i;\n for (i = 0; i < count; i++) {\n const arg = argsArray[iFirstPIMXO + 4 * i];\n const imageMask = arg.length === 1 && arg[0];\n if (\n imageMask &&\n imageMask.width === 1 &&\n imageMask.height === 1 &&\n (!imageMask.data.length ||\n (imageMask.data.length === 1 && imageMask.data[0] === 0))\n ) {\n fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask;\n continue;\n }\n break;\n }\n return count - i;\n}\n\nconst InitialState = [];\n\n// This replaces (save, transform, paintInlineImageXObject, restore)+\n// sequences with one |paintInlineImageXObjectGroup| operation.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n null,\n function iterateInlineImageGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintInlineImageXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n },\n function foundInlineImageGroup(context, i) {\n const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n const MAX_WIDTH = 1000;\n const IMAGE_PADDING = 1;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIIXO = curr - 1;\n\n const count = Math.min(\n Math.floor((i - iFirstSave) / 4),\n MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\n );\n if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n // assuming that heights of those image is too small (~1 pixel)\n // packing as much as possible by lines\n let maxX = 0;\n const map = [];\n let maxLineHeight = 0;\n let currentX = IMAGE_PADDING,\n currentY = IMAGE_PADDING;\n for (let q = 0; q < count; q++) {\n const transform = argsArray[iFirstTransform + (q << 2)];\n const img = argsArray[iFirstPIIXO + (q << 2)][0];\n if (currentX + img.width > MAX_WIDTH) {\n // starting new line\n maxX = Math.max(maxX, currentX);\n currentY += maxLineHeight + 2 * IMAGE_PADDING;\n currentX = 0;\n maxLineHeight = 0;\n }\n map.push({\n transform,\n x: currentX,\n y: currentY,\n w: img.width,\n h: img.height,\n });\n currentX += img.width + 2 * IMAGE_PADDING;\n maxLineHeight = Math.max(maxLineHeight, img.height);\n }\n const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n const imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n const imgRowSize = imgWidth << 2;\n for (let q = 0; q < count; q++) {\n const data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n // Copy image by lines and extends pixels into padding.\n const rowSize = map[q].w << 2;\n let dataOffset = 0;\n let offset = (map[q].x + map[q].y * imgWidth) << 2;\n imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n for (let k = 0, kk = map[q].h; k < kk; k++) {\n imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n dataOffset += rowSize;\n offset += imgRowSize;\n }\n imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n while (offset >= 0) {\n data[offset - 4] = data[offset];\n data[offset - 3] = data[offset + 1];\n data[offset - 2] = data[offset + 2];\n data[offset - 1] = data[offset + 3];\n data[offset + rowSize] = data[offset + rowSize - 4];\n data[offset + rowSize + 1] = data[offset + rowSize - 3];\n data[offset + rowSize + 2] = data[offset + rowSize - 2];\n data[offset + rowSize + 3] = data[offset + rowSize - 1];\n offset -= imgRowSize;\n }\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [\n {\n width: imgWidth,\n height: imgHeight,\n kind: ImageKind.RGBA_32BPP,\n data: imgData,\n },\n map,\n ]);\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (save, transform, paintImageMaskXObject, restore)+\n// sequences with one |paintImageMaskXObjectGroup| or one\n// |paintImageMaskXObjectRepeat| operation.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n null,\n function iterateImageMaskGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintImageMaskXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n },\n function foundImageMaskGroup(context, i) {\n const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIMXO = curr - 1;\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n let count = Math.floor((i - iFirstSave) / 4);\n count = handlePaintSolidColorImageMask(\n iFirstSave,\n count,\n fnArray,\n argsArray\n );\n if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n let isSameImage = false;\n let iTransform, transformArgs;\n const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0],\n firstTransformArg1 = argsArray[iFirstTransform][1],\n firstTransformArg2 = argsArray[iFirstTransform][2],\n firstTransformArg3 = argsArray[iFirstTransform][3];\n\n if (firstTransformArg1 === firstTransformArg2) {\n isSameImage = true;\n iTransform = iFirstTransform + 4;\n let iPIMXO = iFirstPIMXO + 4;\n for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n transformArgs = argsArray[iTransform];\n if (\n argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\n transformArgs[0] !== firstTransformArg0 ||\n transformArgs[1] !== firstTransformArg1 ||\n transformArgs[2] !== firstTransformArg2 ||\n transformArgs[3] !== firstTransformArg3\n ) {\n if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n isSameImage = false;\n } else {\n count = q;\n }\n break; // different image or transform\n }\n }\n }\n\n if (isSameImage) {\n count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n const positions = new Float32Array(count * 2);\n iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, [\n firstPIMXOArg0,\n firstTransformArg0,\n firstTransformArg1,\n firstTransformArg2,\n firstTransformArg3,\n positions,\n ]);\n } else {\n count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n const images = [];\n for (let q = 0; q < count; q++) {\n transformArgs = argsArray[iFirstTransform + (q << 2)];\n const maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n images.push({\n data: maskParams.data,\n width: maskParams.width,\n height: maskParams.height,\n transform: transformArgs,\n });\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [images]);\n }\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (save, transform, paintImageXObject, restore)+ sequences\n// with one paintImageXObjectRepeat operation, if the |transform| and\n// |paintImageXObjectRepeat| ops are appropriate.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n function (context) {\n const argsArray = context.argsArray;\n const iFirstTransform = context.iCurr - 2;\n return (\n argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0\n );\n },\n function iterateImageGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n if (fnArray[i] !== OPS.transform) {\n return false;\n }\n const iFirstTransform = context.iCurr - 2;\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n if (\n argsArray[i][0] !== firstTransformArg0 ||\n argsArray[i][1] !== 0 ||\n argsArray[i][2] !== 0 ||\n argsArray[i][3] !== firstTransformArg3\n ) {\n return false; // transforms don't match\n }\n return true;\n case 2:\n if (fnArray[i] !== OPS.paintImageXObject) {\n return false;\n }\n const iFirstPIXO = context.iCurr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n if (argsArray[i][0] !== firstPIXOArg0) {\n return false; // images don't match\n }\n return true;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n },\n function (context, i) {\n const MIN_IMAGES_IN_BLOCK = 3;\n const MAX_IMAGES_IN_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIXO = curr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n const count = Math.min(\n Math.floor((i - iFirstSave) / 4),\n MAX_IMAGES_IN_BLOCK\n );\n if (count < MIN_IMAGES_IN_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n // Extract the (x,y) positions from all of the matching transforms.\n const positions = new Float32Array(count * 2);\n let iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n const transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n const args = [\n firstPIXOArg0,\n firstTransformArg0,\n firstTransformArg3,\n positions,\n ];\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, args);\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (beginText, setFont, setTextMatrix, showText, endText)+\n// sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\n// sequences, if the font for each one is the same.\naddState(\n InitialState,\n [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n null,\n function iterateShowTextGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 4;\n const pos = (i - iFirstSave) % 5;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.beginText;\n case 1:\n return fnArray[i] === OPS.setFont;\n case 2:\n return fnArray[i] === OPS.setTextMatrix;\n case 3:\n if (fnArray[i] !== OPS.showText) {\n return false;\n }\n const iFirstSetFont = context.iCurr - 3;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n if (\n argsArray[i][0] !== firstSetFontArg0 ||\n argsArray[i][1] !== firstSetFontArg1\n ) {\n return false; // fonts don't match\n }\n return true;\n case 4:\n return fnArray[i] === OPS.endText;\n }\n throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n },\n function (context, i) {\n const MIN_CHARS_IN_BLOCK = 3;\n const MAX_CHARS_IN_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstBeginText = curr - 4;\n const iFirstSetFont = curr - 3;\n const iFirstSetTextMatrix = curr - 2;\n const iFirstShowText = curr - 1;\n const iFirstEndText = curr;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n // At this point, i is the index of the first op past the last valid\n // quintet.\n let count = Math.min(\n Math.floor((i - iFirstBeginText) / 5),\n MAX_CHARS_IN_BLOCK\n );\n if (count < MIN_CHARS_IN_BLOCK) {\n return i - ((i - iFirstBeginText) % 5);\n }\n\n // If the preceding quintet is (<something>, setFont, setTextMatrix,\n // showText, endText), include that as well. (E.g. <something> might be\n // |dependency|.)\n let iFirst = iFirstBeginText;\n if (\n iFirstBeginText >= 4 &&\n fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\n fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\n fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\n fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\n argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\n argsArray[iFirstBeginText - 4][1] === firstSetFontArg1\n ) {\n count++;\n iFirst -= 5;\n }\n\n // Remove (endText, beginText, setFont) trios.\n let iEndText = iFirst + 4;\n for (let q = 1; q < count; q++) {\n fnArray.splice(iEndText, 3);\n argsArray.splice(iEndText, 3);\n iEndText += 2;\n }\n\n return iEndText + 1;\n }\n);\n\nclass NullOptimizer {\n constructor(queue) {\n this.queue = queue;\n }\n\n _optimize() {}\n\n push(fn, args) {\n this.queue.fnArray.push(fn);\n this.queue.argsArray.push(args);\n this._optimize();\n }\n\n flush() {}\n\n reset() {}\n}\n\nclass QueueOptimizer extends NullOptimizer {\n constructor(queue) {\n super(queue);\n this.state = null;\n this.context = {\n iCurr: 0,\n fnArray: queue.fnArray,\n argsArray: queue.argsArray,\n };\n this.match = null;\n this.lastProcessed = 0;\n }\n\n _optimize() {\n // Process new fnArray item(s) chunk.\n const fnArray = this.queue.fnArray;\n let i = this.lastProcessed,\n ii = fnArray.length;\n let state = this.state;\n let match = this.match;\n if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n // Micro-optimization for the common case: last item is not\n // optimizable, just skipping it.\n this.lastProcessed = ii;\n return;\n }\n\n const context = this.context;\n while (i < ii) {\n if (match) {\n // Already find a block of potentially optimizable items, iterating...\n const iterate = (0, match.iterateFn)(context, i);\n if (iterate) {\n i++;\n continue;\n }\n // Found last items for the block, processing...\n i = (0, match.processFn)(context, i + 1);\n ii = fnArray.length;\n match = null;\n state = null;\n if (i >= ii) {\n break;\n }\n }\n // Find the potentially optimizable items.\n state = (state || InitialState)[fnArray[i]];\n if (!state || Array.isArray(state)) {\n i++;\n continue;\n }\n // Found a start of the block based on addState rules.\n context.iCurr = i;\n i++;\n if (state.checkFn && !(0, state.checkFn)(context)) {\n // Check failed, continue search...\n state = null;\n continue;\n }\n match = state;\n state = null;\n }\n this.state = state;\n this.match = match;\n this.lastProcessed = i;\n }\n\n flush() {\n while (this.match) {\n const length = this.queue.fnArray.length;\n this.lastProcessed = (0, this.match.processFn)(this.context, length);\n this.match = null;\n this.state = null;\n // Repeat optimization until all chunks are exhausted.\n this._optimize();\n }\n }\n\n reset() {\n this.state = null;\n this.match = null;\n this.lastProcessed = 0;\n }\n}\n\nclass OperatorList {\n static get CHUNK_SIZE() {\n return shadow(this, \"CHUNK_SIZE\", 1000);\n }\n\n // Close to chunk size.\n static get CHUNK_SIZE_ABOUT() {\n return shadow(this, \"CHUNK_SIZE_ABOUT\", this.CHUNK_SIZE - 5);\n }\n\n constructor(intent = 0, streamSink) {\n this._streamSink = streamSink;\n this.fnArray = [];\n this.argsArray = [];\n if (streamSink && !(intent & RenderingIntentFlag.OPLIST)) {\n this.optimizer = new QueueOptimizer(this);\n } else {\n this.optimizer = new NullOptimizer(this);\n }\n this.dependencies = new Set();\n this._totalLength = 0;\n this.weight = 0;\n this._resolved = streamSink ? null : Promise.resolve();\n }\n\n get length() {\n return this.argsArray.length;\n }\n\n get ready() {\n return this._resolved || this._streamSink.ready;\n }\n\n /**\n * @type {number} The total length of the entire operator list, since\n * `this.length === 0` after flushing.\n */\n get totalLength() {\n return this._totalLength + this.length;\n }\n\n addOp(fn, args) {\n this.optimizer.push(fn, args);\n this.weight++;\n if (this._streamSink) {\n if (this.weight >= OperatorList.CHUNK_SIZE) {\n this.flush();\n } else if (\n this.weight >= OperatorList.CHUNK_SIZE_ABOUT &&\n (fn === OPS.restore || fn === OPS.endText)\n ) {\n // Heuristic to flush on boundary of restore or endText.\n this.flush();\n }\n }\n }\n\n addDependency(dependency) {\n if (this.dependencies.has(dependency)) {\n return;\n }\n this.dependencies.add(dependency);\n this.addOp(OPS.dependency, [dependency]);\n }\n\n addDependencies(dependencies) {\n for (const dependency of dependencies) {\n this.addDependency(dependency);\n }\n }\n\n addOpList(opList) {\n if (!(opList instanceof OperatorList)) {\n warn('addOpList - ignoring invalid \"opList\" parameter.');\n return;\n }\n for (const dependency of opList.dependencies) {\n this.dependencies.add(dependency);\n }\n for (let i = 0, ii = opList.length; i < ii; i++) {\n this.addOp(opList.fnArray[i], opList.argsArray[i]);\n }\n }\n\n getIR() {\n return {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n length: this.length,\n };\n }\n\n get _transfers() {\n const transfers = [];\n const { fnArray, argsArray, length } = this;\n for (let i = 0; i < length; i++) {\n switch (fnArray[i]) {\n case OPS.paintInlineImageXObject:\n case OPS.paintInlineImageXObjectGroup:\n case OPS.paintImageMaskXObject:\n const arg = argsArray[i][0]; // First parameter in imgData.\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n arg.data instanceof Uint8ClampedArray,\n 'OperatorList._transfers: Unsupported \"arg.data\" type.'\n );\n }\n if (!arg.cached) {\n transfers.push(arg.data.buffer);\n }\n break;\n }\n }\n return transfers;\n }\n\n flush(lastChunk = false) {\n this.optimizer.flush();\n const length = this.length;\n this._totalLength += length;\n\n this._streamSink.enqueue(\n {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n lastChunk,\n length,\n },\n 1,\n this._transfers\n );\n\n this.dependencies.clear();\n this.fnArray.length = 0;\n this.argsArray.length = 0;\n this.weight = 0;\n this.optimizer.reset();\n }\n}\n\nexport { OperatorList };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, FormatError, ImageKind, info, warn } from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { Name } from \"./primitives.js\";\n\n/**\n * Decode and clamp a value. The formula is different from the spec because we\n * don't decode to float range [0,1], we decode it in the [0,max] range.\n */\nfunction decodeAndClamp(value, addend, coefficient, max) {\n value = addend + value * coefficient;\n // Clamp the value to the range\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n return value;\n}\n\n/**\n * Resizes an image mask with 1 component.\n * @param {TypedArray} src - The source buffer.\n * @param {number} bpc - Number of bits per component.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @returns {TypedArray} The resized image mask buffer.\n */\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\n const length = w2 * h2;\n let dest;\n if (bpc <= 8) {\n dest = new Uint8Array(length);\n } else if (bpc <= 16) {\n dest = new Uint16Array(length);\n } else {\n dest = new Uint32Array(length);\n }\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let i,\n j,\n py,\n newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1;\n\n for (i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n for (i = 0; i < h2; i++) {\n py = Math.floor(i * yRatio) * w1Scanline;\n for (j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex];\n }\n }\n return dest;\n}\n\nclass PDFImage {\n constructor({\n xref,\n res,\n image,\n isInline = false,\n smask = null,\n mask = null,\n isMask = false,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n this.image = image;\n const dict = image.dict;\n\n const filter = dict.get(\"F\", \"Filter\");\n if (filter instanceof Name) {\n switch (filter.name) {\n case \"JPXDecode\":\n const jpxImage = new JpxImage();\n jpxImage.parseImageProperties(image.stream);\n image.stream.reset();\n\n image.width = jpxImage.width;\n image.height = jpxImage.height;\n image.bitsPerComponent = jpxImage.bitsPerComponent;\n image.numComps = jpxImage.componentsCount;\n break;\n case \"JBIG2Decode\":\n image.bitsPerComponent = 1;\n image.numComps = 1;\n break;\n }\n }\n // TODO cache rendered images?\n\n let width = dict.get(\"W\", \"Width\");\n let height = dict.get(\"H\", \"Height\");\n\n if (\n Number.isInteger(image.width) &&\n image.width > 0 &&\n Number.isInteger(image.height) &&\n image.height > 0 &&\n (image.width !== width || image.height !== height)\n ) {\n warn(\n \"PDFImage - using the Width/Height of the image data, \" +\n \"rather than the image dictionary.\"\n );\n width = image.width;\n height = image.height;\n }\n if (width < 1 || height < 1) {\n throw new FormatError(\n `Invalid image width: ${width} or height: ${height}`\n );\n }\n this.width = width;\n this.height = height;\n\n this.interpolate = dict.get(\"I\", \"Interpolate\");\n this.imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n this.matte = dict.get(\"Matte\") || false;\n\n let bitsPerComponent = image.bitsPerComponent;\n if (!bitsPerComponent) {\n bitsPerComponent = dict.get(\"BPC\", \"BitsPerComponent\");\n if (!bitsPerComponent) {\n if (this.imageMask) {\n bitsPerComponent = 1;\n } else {\n throw new FormatError(\n `Bits per component missing in image: ${this.imageMask}`\n );\n }\n }\n }\n this.bpc = bitsPerComponent;\n\n if (!this.imageMask) {\n let colorSpace = dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\");\n if (!colorSpace) {\n info(\"JPX images (which do not require color spaces)\");\n switch (image.numComps) {\n case 1:\n colorSpace = Name.get(\"DeviceGray\");\n break;\n case 3:\n colorSpace = Name.get(\"DeviceRGB\");\n break;\n case 4:\n colorSpace = Name.get(\"DeviceCMYK\");\n break;\n default:\n throw new Error(\n `JPX images with ${image.numComps} color components not supported.`\n );\n }\n }\n this.colorSpace = ColorSpace.parse({\n cs: colorSpace,\n xref,\n resources: isInline ? res : null,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n this.numComps = this.colorSpace.numComps;\n }\n\n this.decode = dict.getArray(\"D\", \"Decode\");\n this.needsDecode = false;\n if (\n this.decode &&\n ((this.colorSpace &&\n !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent)) ||\n (isMask &&\n !ColorSpace.isDefaultDecode(this.decode, /* numComps = */ 1)))\n ) {\n this.needsDecode = true;\n // Do some preprocessing to avoid more math.\n const max = (1 << bitsPerComponent) - 1;\n this.decodeCoefficients = [];\n this.decodeAddends = [];\n const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n const dmin = this.decode[i];\n const dmax = this.decode[i + 1];\n this.decodeCoefficients[j] = isIndexed\n ? (dmax - dmin) / max\n : dmax - dmin;\n this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n }\n }\n\n if (smask) {\n this.smask = new PDFImage({\n xref,\n res,\n image: smask,\n isInline,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n } else if (mask) {\n if (mask instanceof BaseStream) {\n const maskDict = mask.dict,\n imageMask = maskDict.get(\"IM\", \"ImageMask\");\n if (!imageMask) {\n warn(\"Ignoring /Mask in image without /ImageMask.\");\n } else {\n this.mask = new PDFImage({\n xref,\n res,\n image: mask,\n isInline,\n isMask: true,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n }\n } else {\n // Color key mask (just an array).\n this.mask = mask;\n }\n }\n }\n\n /**\n * Handles processing of image data and returns the Promise that is resolved\n * with a PDFImage when the image is ready to be used.\n */\n static async buildImage({\n xref,\n res,\n image,\n isInline = false,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n const imageData = image;\n let smaskData = null;\n let maskData = null;\n\n const smask = image.dict.get(\"SMask\");\n const mask = image.dict.get(\"Mask\");\n\n if (smask) {\n smaskData = smask;\n } else if (mask) {\n if (mask instanceof BaseStream || Array.isArray(mask)) {\n maskData = mask;\n } else {\n warn(\"Unsupported mask format.\");\n }\n }\n\n return new PDFImage({\n xref,\n res,\n image: imageData,\n isInline,\n smask: smaskData,\n mask: maskData,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n }\n\n static createMask({\n imgArray,\n width,\n height,\n imageIsFromDecodeStream,\n inverseDecode,\n interpolate,\n }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n imgArray instanceof Uint8ClampedArray,\n 'PDFImage.createMask: Unsupported \"imgArray\" type.'\n );\n }\n // |imgArray| might not contain full data for every pixel of the mask, so\n // we need to distinguish between |computedLength| and |actualLength|.\n // In particular, if inverseDecode is true, then the array we return must\n // have a length of |computedLength|.\n\n const computedLength = ((width + 7) >> 3) * height;\n const actualLength = imgArray.byteLength;\n const haveFullData = computedLength === actualLength;\n let data, i;\n\n if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n // imgArray came from a DecodeStream and its data is in an appropriate\n // form, so we can just transfer it.\n data = imgArray;\n } else if (!inverseDecode) {\n data = new Uint8ClampedArray(actualLength);\n data.set(imgArray);\n } else {\n data = new Uint8ClampedArray(computedLength);\n data.set(imgArray);\n for (i = actualLength; i < computedLength; i++) {\n data[i] = 0xff;\n }\n }\n\n // If necessary, invert the original mask data (but not any extra we might\n // have added above). It's safe to modify the array -- whether it's the\n // original or a copy, we're about to transfer it anyway, so nothing else\n // in this thread can be relying on its contents.\n if (inverseDecode) {\n for (i = 0; i < actualLength; i++) {\n data[i] ^= 0xff;\n }\n }\n\n return { data, width, height, interpolate };\n }\n\n get drawWidth() {\n return Math.max(\n this.width,\n (this.smask && this.smask.width) || 0,\n (this.mask && this.mask.width) || 0\n );\n }\n\n get drawHeight() {\n return Math.max(\n this.height,\n (this.smask && this.smask.height) || 0,\n (this.mask && this.mask.height) || 0\n );\n }\n\n decodeBuffer(buffer) {\n const bpc = this.bpc;\n const numComps = this.numComps;\n\n const decodeAddends = this.decodeAddends;\n const decodeCoefficients = this.decodeCoefficients;\n const max = (1 << bpc) - 1;\n let i, ii;\n\n if (bpc === 1) {\n // If the buffer needed decode that means it just needs to be inverted.\n for (i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = +!buffer[i];\n }\n return;\n }\n let index = 0;\n for (i = 0, ii = this.width * this.height; i < ii; i++) {\n for (let j = 0; j < numComps; j++) {\n buffer[index] = decodeAndClamp(\n buffer[index],\n decodeAddends[j],\n decodeCoefficients[j],\n max\n );\n index++;\n }\n }\n }\n\n getComponents(buffer) {\n const bpc = this.bpc;\n\n // This image doesn't require any extra work.\n if (bpc === 8) {\n return buffer;\n }\n\n const width = this.width;\n const height = this.height;\n const numComps = this.numComps;\n\n const length = width * height * numComps;\n let bufferPos = 0;\n let output;\n if (bpc <= 8) {\n output = new Uint8Array(length);\n } else if (bpc <= 16) {\n output = new Uint16Array(length);\n } else {\n output = new Uint32Array(length);\n }\n const rowComps = width * numComps;\n\n const max = (1 << bpc) - 1;\n let i = 0,\n ii,\n buf;\n\n if (bpc === 1) {\n // Optimization for reading 1 bpc images.\n let mask, loop1End, loop2End;\n for (let j = 0; j < height; j++) {\n loop1End = i + (rowComps & ~7);\n loop2End = i + rowComps;\n\n // unroll loop for all full bytes\n while (i < loop1End) {\n buf = buffer[bufferPos++];\n output[i] = (buf >> 7) & 1;\n output[i + 1] = (buf >> 6) & 1;\n output[i + 2] = (buf >> 5) & 1;\n output[i + 3] = (buf >> 4) & 1;\n output[i + 4] = (buf >> 3) & 1;\n output[i + 5] = (buf >> 2) & 1;\n output[i + 6] = (buf >> 1) & 1;\n output[i + 7] = buf & 1;\n i += 8;\n }\n\n // handle remaining bits\n if (i < loop2End) {\n buf = buffer[bufferPos++];\n mask = 128;\n while (i < loop2End) {\n output[i++] = +!!(buf & mask);\n mask >>= 1;\n }\n }\n }\n } else {\n // The general case that handles all other bpc values.\n let bits = 0;\n buf = 0;\n for (i = 0, ii = length; i < ii; ++i) {\n if (i % rowComps === 0) {\n buf = 0;\n bits = 0;\n }\n\n while (bits < bpc) {\n buf = (buf << 8) | buffer[bufferPos++];\n bits += 8;\n }\n\n const remainingBits = bits - bpc;\n let value = buf >> remainingBits;\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n output[i] = value;\n buf &= (1 << remainingBits) - 1;\n bits = remainingBits;\n }\n }\n return output;\n }\n\n fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n rgbaBuf instanceof Uint8ClampedArray,\n 'PDFImage.fillOpacity: Unsupported \"rgbaBuf\" type.'\n );\n }\n const smask = this.smask;\n const mask = this.mask;\n let alphaBuf, sw, sh, i, ii, j;\n\n if (smask) {\n sw = smask.width;\n sh = smask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n smask.fillGrayBuffer(alphaBuf);\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n }\n } else if (mask) {\n if (mask instanceof PDFImage) {\n sw = mask.width;\n sh = mask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n mask.numComps = 1;\n mask.fillGrayBuffer(alphaBuf);\n\n // Need to invert values in rgbaBuf\n for (i = 0, ii = sw * sh; i < ii; ++i) {\n alphaBuf[i] = 255 - alphaBuf[i];\n }\n\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\n }\n } else if (Array.isArray(mask)) {\n // Color key mask: if any of the components are outside the range\n // then they should be painted.\n alphaBuf = new Uint8ClampedArray(width * height);\n const numComps = this.numComps;\n for (i = 0, ii = width * height; i < ii; ++i) {\n let opacity = 0;\n const imageOffset = i * numComps;\n for (j = 0; j < numComps; ++j) {\n const color = image[imageOffset + j];\n const maskOffset = j * 2;\n if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n opacity = 255;\n break;\n }\n }\n alphaBuf[i] = opacity;\n }\n } else {\n throw new FormatError(\"Unknown mask format.\");\n }\n }\n\n if (alphaBuf) {\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = alphaBuf[i];\n }\n } else {\n // No mask.\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = 255;\n }\n }\n }\n\n undoPreblend(buffer, width, height) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n buffer instanceof Uint8ClampedArray,\n 'PDFImage.undoPreblend: Unsupported \"buffer\" type.'\n );\n }\n const matte = this.smask && this.smask.matte;\n if (!matte) {\n return;\n }\n const matteRgb = this.colorSpace.getRgb(matte, 0);\n const matteR = matteRgb[0];\n const matteG = matteRgb[1];\n const matteB = matteRgb[2];\n const length = width * height * 4;\n for (let i = 0; i < length; i += 4) {\n const alpha = buffer[i + 3];\n if (alpha === 0) {\n // according formula we have to get Infinity in all components\n // making it white (typical paper color) should be okay\n buffer[i] = 255;\n buffer[i + 1] = 255;\n buffer[i + 2] = 255;\n continue;\n }\n const k = 255 / alpha;\n buffer[i] = (buffer[i] - matteR) * k + matteR;\n buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n }\n }\n\n createImageData(forceRGBA = false) {\n const drawWidth = this.drawWidth;\n const drawHeight = this.drawHeight;\n const imgData = {\n width: drawWidth,\n height: drawHeight,\n interpolate: this.interpolate,\n kind: 0,\n data: null,\n // Other fields are filled in below.\n };\n\n const numComps = this.numComps;\n const originalWidth = this.width;\n const originalHeight = this.height;\n const bpc = this.bpc;\n\n // Rows start at byte boundary.\n const rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n let imgArray;\n\n if (!forceRGBA) {\n // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\n // without any complications, we pass a same-sized copy to the main\n // thread rather than expanding by 32x to RGBA form. This saves *lots*\n // of memory for many scanned documents. It's also much faster.\n //\n // Similarly, if it is a 24-bit-per pixel RGB image without any\n // complications, we avoid expanding by 1.333x to RGBA form.\n let kind;\n if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n kind = ImageKind.GRAYSCALE_1BPP;\n } else if (\n this.colorSpace.name === \"DeviceRGB\" &&\n bpc === 8 &&\n !this.needsDecode\n ) {\n kind = ImageKind.RGB_24BPP;\n }\n if (\n kind &&\n !this.smask &&\n !this.mask &&\n drawWidth === originalWidth &&\n drawHeight === originalHeight\n ) {\n imgData.kind = kind;\n\n imgArray = this.getImageBytes(originalHeight * rowBytes);\n // If imgArray came from a DecodeStream, we're safe to transfer it\n // (and thus detach its underlying buffer) because it will constitute\n // the entire DecodeStream's data. But if it came from a Stream, we\n // need to copy it because it'll only be a portion of the Stream's\n // data, and the rest will be read later on.\n if (this.image instanceof DecodeStream) {\n imgData.data = imgArray;\n } else {\n const newArray = new Uint8ClampedArray(imgArray.length);\n newArray.set(imgArray);\n imgData.data = newArray;\n }\n if (this.needsDecode) {\n // Invert the buffer (which must be grayscale if we reached here).\n assert(\n kind === ImageKind.GRAYSCALE_1BPP,\n \"PDFImage.createImageData: The image must be grayscale.\"\n );\n const buffer = imgData.data;\n for (let i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] ^= 0xff;\n }\n }\n return imgData;\n }\n if (this.image instanceof JpegStream && !this.smask && !this.mask) {\n let imageLength = originalHeight * rowBytes;\n switch (this.colorSpace.name) {\n case \"DeviceGray\":\n // Avoid truncating the image, since `JpegImage.getData`\n // will expand the image data when `forceRGB === true`.\n imageLength *= 3;\n /* falls through */\n case \"DeviceRGB\":\n case \"DeviceCMYK\":\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = this.getImageBytes(\n imageLength,\n drawWidth,\n drawHeight,\n /* forceRGB = */ true\n );\n return imgData;\n }\n }\n }\n\n imgArray = this.getImageBytes(originalHeight * rowBytes);\n // imgArray can be incomplete (e.g. after CCITT fax encoding).\n const actualHeight =\n 0 | (((imgArray.length / rowBytes) * drawHeight) / originalHeight);\n\n const comps = this.getComponents(imgArray);\n\n // If opacity data is present, use RGBA_32BPP form. Otherwise, use the\n // more compact RGB_24BPP form if allowable.\n let alpha01, maybeUndoPreblend;\n if (!forceRGBA && !this.smask && !this.mask) {\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n alpha01 = 0;\n maybeUndoPreblend = false;\n } else {\n imgData.kind = ImageKind.RGBA_32BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n alpha01 = 1;\n maybeUndoPreblend = true;\n\n // Color key masking (opacity) must be performed before decoding.\n this.fillOpacity(\n imgData.data,\n drawWidth,\n drawHeight,\n actualHeight,\n comps\n );\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n this.colorSpace.fillRgb(\n imgData.data,\n originalWidth,\n originalHeight,\n drawWidth,\n drawHeight,\n actualHeight,\n bpc,\n comps,\n alpha01\n );\n if (maybeUndoPreblend) {\n this.undoPreblend(imgData.data, drawWidth, actualHeight);\n }\n\n return imgData;\n }\n\n fillGrayBuffer(buffer) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n buffer instanceof Uint8ClampedArray,\n 'PDFImage.fillGrayBuffer: Unsupported \"buffer\" type.'\n );\n }\n const numComps = this.numComps;\n if (numComps !== 1) {\n throw new FormatError(\n `Reading gray scale from a color image: ${numComps}`\n );\n }\n\n const width = this.width;\n const height = this.height;\n const bpc = this.bpc;\n\n // rows start at byte boundary\n const rowBytes = (width * numComps * bpc + 7) >> 3;\n const imgArray = this.getImageBytes(height * rowBytes);\n\n const comps = this.getComponents(imgArray);\n let i, length;\n\n if (bpc === 1) {\n // inline decoding (= inversion) for 1 bpc images\n length = width * height;\n if (this.needsDecode) {\n // invert and scale to {0, 255}\n for (i = 0; i < length; ++i) {\n buffer[i] = (comps[i] - 1) & 255;\n }\n } else {\n // scale to {0, 255}\n for (i = 0; i < length; ++i) {\n buffer[i] = -comps[i] & 255;\n }\n }\n return;\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n length = width * height;\n // we aren't using a colorspace so we need to scale the value\n const scale = 255 / ((1 << bpc) - 1);\n for (i = 0; i < length; ++i) {\n buffer[i] = scale * comps[i];\n }\n }\n\n getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {\n this.image.reset();\n this.image.drawWidth = drawWidth || this.width;\n this.image.drawHeight = drawHeight || this.height;\n this.image.forceRGB = !!forceRGB;\n return this.image.getBytes(length, /* forceClamped = */ true);\n }\n}\n\nexport { PDFImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n collectActions,\n MissingDataException,\n recoverJsURL,\n toRomanNumerals,\n XRefEntryException,\n} from \"./core_utils.js\";\nimport {\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FormatError,\n info,\n objectSize,\n PermissionFlag,\n shadow,\n stringToPDFString,\n stringToUTF8String,\n warn,\n} from \"../shared/util.js\";\nimport {\n Dict,\n isDict,\n isName,\n isRefsEqual,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n} from \"./primitives.js\";\nimport { NameTree, NumberTree } from \"./name_number_tree.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { GlobalImageCache } from \"./image_utils.js\";\nimport { MetadataParser } from \"./metadata_parser.js\";\nimport { StructTreeRoot } from \"./struct_tree.js\";\n\nfunction fetchDestination(dest) {\n if (dest instanceof Dict) {\n dest = dest.get(\"D\");\n }\n return Array.isArray(dest) ? dest : null;\n}\n\nclass Catalog {\n constructor(pdfManager, xref) {\n this.pdfManager = pdfManager;\n this.xref = xref;\n\n this._catDict = xref.getCatalogObj();\n if (!(this._catDict instanceof Dict)) {\n throw new FormatError(\"Catalog object is not a dictionary.\");\n }\n // Given that `XRef.parse` will both fetch *and* validate the /Pages-entry,\n // the following call must always succeed here:\n this.toplevelPagesDict; // eslint-disable-line no-unused-expressions\n\n this._actualNumPages = null;\n\n this.fontCache = new RefSetCache();\n this.builtInCMapCache = new Map();\n this.standardFontDataCache = new Map();\n this.globalImageCache = new GlobalImageCache();\n this.pageKidsCountCache = new RefSetCache();\n this.pageIndexCache = new RefSetCache();\n this.nonBlendModesSet = new RefSet();\n }\n\n get version() {\n const version = this._catDict.get(\"Version\");\n return shadow(\n this,\n \"version\",\n version instanceof Name ? version.name : null\n );\n }\n\n get lang() {\n const lang = this._catDict.get(\"Lang\");\n return shadow(\n this,\n \"lang\",\n typeof lang === \"string\" ? stringToPDFString(lang) : null\n );\n }\n\n /**\n * @type {boolean} `true` for pure XFA documents,\n * `false` for XFA Foreground documents.\n */\n get needsRendering() {\n const needsRendering = this._catDict.get(\"NeedsRendering\");\n return shadow(\n this,\n \"needsRendering\",\n typeof needsRendering === \"boolean\" ? needsRendering : false\n );\n }\n\n get collection() {\n let collection = null;\n try {\n const obj = this._catDict.get(\"Collection\");\n if (obj instanceof Dict && obj.size > 0) {\n collection = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch Collection entry; assuming no collection is present.\");\n }\n return shadow(this, \"collection\", collection);\n }\n\n get acroForm() {\n let acroForm = null;\n try {\n const obj = this._catDict.get(\"AcroForm\");\n if (obj instanceof Dict && obj.size > 0) {\n acroForm = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n }\n return shadow(this, \"acroForm\", acroForm);\n }\n\n get acroFormRef() {\n const value = this._catDict.getRaw(\"AcroForm\");\n return shadow(this, \"acroFormRef\", value instanceof Ref ? value : null);\n }\n\n get metadata() {\n const streamRef = this._catDict.getRaw(\"Metadata\");\n if (!(streamRef instanceof Ref)) {\n return shadow(this, \"metadata\", null);\n }\n\n let metadata = null;\n try {\n const suppressEncryption = !(\n this.xref.encrypt && this.xref.encrypt.encryptMetadata\n );\n const stream = this.xref.fetch(streamRef, suppressEncryption);\n\n if (stream instanceof BaseStream && stream.dict instanceof Dict) {\n const type = stream.dict.get(\"Type\");\n const subtype = stream.dict.get(\"Subtype\");\n\n if (isName(type, \"Metadata\") && isName(subtype, \"XML\")) {\n // XXX: This should examine the charset the XML document defines,\n // however since there are currently no real means to decode arbitrary\n // charsets, let's just hope that the author of the PDF was reasonable\n // enough to stick with the XML default charset, which is UTF-8.\n const data = stringToUTF8String(stream.getString());\n if (data) {\n metadata = new MetadataParser(data).serializable;\n }\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(`Skipping invalid Metadata: \"${ex}\".`);\n }\n return shadow(this, \"metadata\", metadata);\n }\n\n get markInfo() {\n let markInfo = null;\n try {\n markInfo = this._readMarkInfo();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read mark info.\");\n }\n return shadow(this, \"markInfo\", markInfo);\n }\n\n /**\n * @private\n */\n _readMarkInfo() {\n const obj = this._catDict.get(\"MarkInfo\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n\n const markInfo = Object.assign(Object.create(null), {\n Marked: false,\n UserProperties: false,\n Suspects: false,\n });\n for (const key in markInfo) {\n if (!obj.has(key)) {\n continue;\n }\n const value = obj.get(key);\n if (typeof value !== \"boolean\") {\n continue;\n }\n markInfo[key] = value;\n }\n\n return markInfo;\n }\n\n get structTreeRoot() {\n let structTree = null;\n try {\n structTree = this._readStructTreeRoot();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable read to structTreeRoot info.\");\n }\n return shadow(this, \"structTreeRoot\", structTree);\n }\n\n /**\n * @private\n */\n _readStructTreeRoot() {\n const obj = this._catDict.get(\"StructTreeRoot\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n const root = new StructTreeRoot(obj);\n root.init();\n return root;\n }\n\n get toplevelPagesDict() {\n const pagesObj = this._catDict.get(\"Pages\");\n if (!(pagesObj instanceof Dict)) {\n throw new FormatError(\"Invalid top-level pages dictionary.\");\n }\n return shadow(this, \"toplevelPagesDict\", pagesObj);\n }\n\n get documentOutline() {\n let obj = null;\n try {\n obj = this._readDocumentOutline();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read document outline.\");\n }\n return shadow(this, \"documentOutline\", obj);\n }\n\n /**\n * @private\n */\n _readDocumentOutline() {\n let obj = this._catDict.get(\"Outlines\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n obj = obj.getRaw(\"First\");\n if (!(obj instanceof Ref)) {\n return null;\n }\n\n const root = { items: [] };\n const queue = [{ obj, parent: root }];\n // To avoid recursion, keep track of the already processed items.\n const processed = new RefSet();\n processed.put(obj);\n const xref = this.xref,\n blackColor = new Uint8ClampedArray(3);\n\n while (queue.length > 0) {\n const i = queue.shift();\n const outlineDict = xref.fetchIfRef(i.obj);\n if (outlineDict === null) {\n continue;\n }\n if (!outlineDict.has(\"Title\")) {\n throw new FormatError(\"Invalid outline item encountered.\");\n }\n\n const data = { url: null, dest: null };\n Catalog.parseDestDictionary({\n destDict: outlineDict,\n resultObj: data,\n docBaseUrl: this.pdfManager.docBaseUrl,\n });\n const title = outlineDict.get(\"Title\");\n const flags = outlineDict.get(\"F\") || 0;\n const color = outlineDict.getArray(\"C\");\n const count = outlineDict.get(\"Count\");\n let rgbColor = blackColor;\n\n // We only need to parse the color when it's valid, and non-default.\n if (\n Array.isArray(color) &&\n color.length === 3 &&\n (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)\n ) {\n rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n }\n\n const outlineItem = {\n dest: data.dest,\n url: data.url,\n unsafeUrl: data.unsafeUrl,\n newWindow: data.newWindow,\n title: stringToPDFString(title),\n color: rgbColor,\n count: Number.isInteger(count) ? count : undefined,\n bold: !!(flags & 2),\n italic: !!(flags & 1),\n items: [],\n };\n\n i.parent.items.push(outlineItem);\n obj = outlineDict.getRaw(\"First\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({ obj, parent: outlineItem });\n processed.put(obj);\n }\n obj = outlineDict.getRaw(\"Next\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({ obj, parent: i.parent });\n processed.put(obj);\n }\n }\n return root.items.length > 0 ? root.items : null;\n }\n\n get permissions() {\n let permissions = null;\n try {\n permissions = this._readPermissions();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read permissions.\");\n }\n return shadow(this, \"permissions\", permissions);\n }\n\n /**\n * @private\n */\n _readPermissions() {\n const encrypt = this.xref.trailer.get(\"Encrypt\");\n if (!(encrypt instanceof Dict)) {\n return null;\n }\n\n let flags = encrypt.get(\"P\");\n if (typeof flags !== \"number\") {\n return null;\n }\n\n // PDF integer objects are represented internally in signed 2's complement\n // form. Therefore, convert the signed decimal integer to a signed 2's\n // complement binary integer so we can use regular bitwise operations on it.\n flags += 2 ** 32;\n\n const permissions = [];\n for (const key in PermissionFlag) {\n const value = PermissionFlag[key];\n if (flags & value) {\n permissions.push(value);\n }\n }\n return permissions;\n }\n\n get optionalContentConfig() {\n let config = null;\n try {\n const properties = this._catDict.get(\"OCProperties\");\n if (!properties) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const defaultConfig = properties.get(\"D\");\n if (!defaultConfig) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groupsData = properties.get(\"OCGs\");\n if (!Array.isArray(groupsData)) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groups = [];\n const groupRefs = [];\n // Ensure all the optional content groups are valid.\n for (const groupRef of groupsData) {\n if (!(groupRef instanceof Ref)) {\n continue;\n }\n groupRefs.push(groupRef);\n const group = this.xref.fetchIfRef(groupRef);\n groups.push({\n id: groupRef.toString(),\n name:\n typeof group.get(\"Name\") === \"string\"\n ? stringToPDFString(group.get(\"Name\"))\n : null,\n intent:\n typeof group.get(\"Intent\") === \"string\"\n ? stringToPDFString(group.get(\"Intent\"))\n : null,\n });\n }\n config = this._readOptionalContentConfig(defaultConfig, groupRefs);\n config.groups = groups;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Unable to read optional content config: ${ex}`);\n }\n return shadow(this, \"optionalContentConfig\", config);\n }\n\n _readOptionalContentConfig(config, contentGroupRefs) {\n function parseOnOff(refs) {\n const onParsed = [];\n if (Array.isArray(refs)) {\n for (const value of refs) {\n if (!(value instanceof Ref)) {\n continue;\n }\n if (contentGroupRefs.includes(value)) {\n onParsed.push(value.toString());\n }\n }\n }\n return onParsed;\n }\n\n function parseOrder(refs, nestedLevels = 0) {\n if (!Array.isArray(refs)) {\n return null;\n }\n const order = [];\n\n for (const value of refs) {\n if (value instanceof Ref && contentGroupRefs.includes(value)) {\n parsedOrderRefs.put(value); // Handle \"hidden\" groups, see below.\n\n order.push(value.toString());\n continue;\n }\n // Handle nested /Order arrays (see e.g. issue 9462 and bug 1240641).\n const nestedOrder = parseNestedOrder(value, nestedLevels);\n if (nestedOrder) {\n order.push(nestedOrder);\n }\n }\n\n if (nestedLevels > 0) {\n return order;\n }\n const hiddenGroups = [];\n for (const groupRef of contentGroupRefs) {\n if (parsedOrderRefs.has(groupRef)) {\n continue;\n }\n hiddenGroups.push(groupRef.toString());\n }\n if (hiddenGroups.length) {\n order.push({ name: null, order: hiddenGroups });\n }\n\n return order;\n }\n\n function parseNestedOrder(ref, nestedLevels) {\n if (++nestedLevels > MAX_NESTED_LEVELS) {\n warn(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n return null;\n }\n const value = xref.fetchIfRef(ref);\n if (!Array.isArray(value)) {\n return null;\n }\n const nestedName = xref.fetchIfRef(value[0]);\n if (typeof nestedName !== \"string\") {\n return null;\n }\n const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n if (!nestedOrder || !nestedOrder.length) {\n return null;\n }\n return { name: stringToPDFString(nestedName), order: nestedOrder };\n }\n\n const xref = this.xref,\n parsedOrderRefs = new RefSet(),\n MAX_NESTED_LEVELS = 10;\n\n return {\n name:\n typeof config.get(\"Name\") === \"string\"\n ? stringToPDFString(config.get(\"Name\"))\n : null,\n creator:\n typeof config.get(\"Creator\") === \"string\"\n ? stringToPDFString(config.get(\"Creator\"))\n : null,\n baseState:\n config.get(\"BaseState\") instanceof Name\n ? config.get(\"BaseState\").name\n : null,\n on: parseOnOff(config.get(\"ON\")),\n off: parseOnOff(config.get(\"OFF\")),\n order: parseOrder(config.get(\"Order\")),\n groups: null,\n };\n }\n\n setActualNumPages(num = null) {\n this._actualNumPages = num;\n }\n\n get hasActualNumPages() {\n return this._actualNumPages !== null;\n }\n\n get _pagesCount() {\n const obj = this.toplevelPagesDict.get(\"Count\");\n if (!Number.isInteger(obj)) {\n throw new FormatError(\n \"Page count in top-level pages dictionary is not an integer.\"\n );\n }\n return shadow(this, \"_pagesCount\", obj);\n }\n\n get numPages() {\n return this.hasActualNumPages ? this._actualNumPages : this._pagesCount;\n }\n\n get destinations() {\n const obj = this._readDests(),\n dests = Object.create(null);\n if (obj instanceof NameTree) {\n for (const [key, value] of obj.getAll()) {\n const dest = fetchDestination(value);\n if (dest) {\n dests[key] = dest;\n }\n }\n } else if (obj instanceof Dict) {\n obj.forEach(function (key, value) {\n const dest = fetchDestination(value);\n if (dest) {\n dests[key] = dest;\n }\n });\n }\n return shadow(this, \"destinations\", dests);\n }\n\n getDestination(id) {\n const obj = this._readDests();\n if (obj instanceof NameTree) {\n const dest = fetchDestination(obj.get(id));\n if (dest) {\n return dest;\n }\n // Fallback to checking the *entire* NameTree, in an attempt to handle\n // corrupt PDF documents with out-of-order NameTrees (fixes issue 10272).\n const allDest = this.destinations[id];\n if (allDest) {\n warn(`Found \"${id}\" at an incorrect position in the NameTree.`);\n return allDest;\n }\n } else if (obj instanceof Dict) {\n const dest = fetchDestination(obj.get(id));\n if (dest) {\n return dest;\n }\n }\n return null;\n }\n\n /**\n * @private\n */\n _readDests() {\n const obj = this._catDict.get(\"Names\");\n if (obj && obj.has(\"Dests\")) {\n return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n } else if (this._catDict.has(\"Dests\")) {\n // Simple destination dictionary.\n return this._catDict.get(\"Dests\");\n }\n return undefined;\n }\n\n get pageLabels() {\n let obj = null;\n try {\n obj = this._readPageLabels();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read page labels.\");\n }\n return shadow(this, \"pageLabels\", obj);\n }\n\n /**\n * @private\n */\n _readPageLabels() {\n const obj = this._catDict.getRaw(\"PageLabels\");\n if (!obj) {\n return null;\n }\n\n const pageLabels = new Array(this.numPages);\n let style = null,\n prefix = \"\";\n\n const numberTree = new NumberTree(obj, this.xref);\n const nums = numberTree.getAll();\n let currentLabel = \"\",\n currentIndex = 1;\n\n for (let i = 0, ii = this.numPages; i < ii; i++) {\n const labelDict = nums.get(i);\n\n if (labelDict !== undefined) {\n if (!(labelDict instanceof Dict)) {\n throw new FormatError(\"PageLabel is not a dictionary.\");\n }\n\n if (\n labelDict.has(\"Type\") &&\n !isName(labelDict.get(\"Type\"), \"PageLabel\")\n ) {\n throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n }\n\n if (labelDict.has(\"S\")) {\n const s = labelDict.get(\"S\");\n if (!(s instanceof Name)) {\n throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n }\n style = s.name;\n } else {\n style = null;\n }\n\n if (labelDict.has(\"P\")) {\n const p = labelDict.get(\"P\");\n if (typeof p !== \"string\") {\n throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n }\n prefix = stringToPDFString(p);\n } else {\n prefix = \"\";\n }\n\n if (labelDict.has(\"St\")) {\n const st = labelDict.get(\"St\");\n if (!(Number.isInteger(st) && st >= 1)) {\n throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n }\n currentIndex = st;\n } else {\n currentIndex = 1;\n }\n }\n\n switch (style) {\n case \"D\":\n currentLabel = currentIndex;\n break;\n case \"R\":\n case \"r\":\n currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n break;\n case \"A\":\n case \"a\":\n const LIMIT = 26; // Use only the characters A-Z, or a-z.\n const A_UPPER_CASE = 0x41,\n A_LOWER_CASE = 0x61;\n\n const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n const letterIndex = currentIndex - 1;\n const character = String.fromCharCode(\n baseCharCode + (letterIndex % LIMIT)\n );\n const charBuf = [];\n for (let j = 0, jj = (letterIndex / LIMIT) | 0; j <= jj; j++) {\n charBuf.push(character);\n }\n currentLabel = charBuf.join(\"\");\n break;\n default:\n if (style) {\n throw new FormatError(\n `Invalid style \"${style}\" in PageLabel dictionary.`\n );\n }\n currentLabel = \"\";\n }\n\n pageLabels[i] = prefix + currentLabel;\n currentIndex++;\n }\n return pageLabels;\n }\n\n get pageLayout() {\n const obj = this._catDict.get(\"PageLayout\");\n // Purposely use a non-standard default value, rather than 'SinglePage', to\n // allow differentiating between `undefined` and /SinglePage since that does\n // affect the Scroll mode (continuous/non-continuous) used in Adobe Reader.\n let pageLayout = \"\";\n\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"SinglePage\":\n case \"OneColumn\":\n case \"TwoColumnLeft\":\n case \"TwoColumnRight\":\n case \"TwoPageLeft\":\n case \"TwoPageRight\":\n pageLayout = obj.name;\n }\n }\n return shadow(this, \"pageLayout\", pageLayout);\n }\n\n get pageMode() {\n const obj = this._catDict.get(\"PageMode\");\n let pageMode = \"UseNone\"; // Default value.\n\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"FullScreen\":\n case \"UseOC\":\n case \"UseAttachments\":\n pageMode = obj.name;\n }\n }\n return shadow(this, \"pageMode\", pageMode);\n }\n\n get viewerPreferences() {\n const obj = this._catDict.get(\"ViewerPreferences\");\n if (!(obj instanceof Dict)) {\n return shadow(this, \"viewerPreferences\", null);\n }\n let prefs = null;\n\n for (const key of obj.getKeys()) {\n const value = obj.get(key);\n let prefValue;\n\n switch (key) {\n case \"HideToolbar\":\n case \"HideMenubar\":\n case \"HideWindowUI\":\n case \"FitWindow\":\n case \"CenterWindow\":\n case \"DisplayDocTitle\":\n case \"PickTrayByPDFSize\":\n if (typeof value === \"boolean\") {\n prefValue = value;\n }\n break;\n case \"NonFullScreenPageMode\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"UseOC\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"UseNone\";\n }\n }\n break;\n case \"Direction\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"L2R\":\n case \"R2L\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"L2R\";\n }\n }\n break;\n case \"ViewArea\":\n case \"ViewClip\":\n case \"PrintArea\":\n case \"PrintClip\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"MediaBox\":\n case \"CropBox\":\n case \"BleedBox\":\n case \"TrimBox\":\n case \"ArtBox\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"CropBox\";\n }\n }\n break;\n case \"PrintScaling\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"None\":\n case \"AppDefault\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"AppDefault\";\n }\n }\n break;\n case \"Duplex\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"Simplex\":\n case \"DuplexFlipShortEdge\":\n case \"DuplexFlipLongEdge\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"None\";\n }\n }\n break;\n case \"PrintPageRange\":\n // The number of elements must be even.\n if (Array.isArray(value) && value.length % 2 === 0) {\n const isValid = value.every((page, i, arr) => {\n return (\n Number.isInteger(page) &&\n page > 0 &&\n (i === 0 || page >= arr[i - 1]) &&\n page <= this.numPages\n );\n });\n if (isValid) {\n prefValue = value;\n }\n }\n break;\n case \"NumCopies\":\n if (Number.isInteger(value) && value > 0) {\n prefValue = value;\n }\n break;\n default:\n warn(`Ignoring non-standard key in ViewerPreferences: ${key}.`);\n continue;\n }\n\n if (prefValue === undefined) {\n warn(`Bad value, for key \"${key}\", in ViewerPreferences: ${value}.`);\n continue;\n }\n if (!prefs) {\n prefs = Object.create(null);\n }\n prefs[key] = prefValue;\n }\n return shadow(this, \"viewerPreferences\", prefs);\n }\n\n get openAction() {\n const obj = this._catDict.get(\"OpenAction\");\n const openAction = Object.create(null);\n\n if (obj instanceof Dict) {\n // Convert the OpenAction dictionary into a format that works with\n // `parseDestDictionary`, to avoid having to re-implement those checks.\n const destDict = new Dict(this.xref);\n destDict.set(\"A\", obj);\n\n const resultObj = { url: null, dest: null, action: null };\n Catalog.parseDestDictionary({ destDict, resultObj });\n\n if (Array.isArray(resultObj.dest)) {\n openAction.dest = resultObj.dest;\n } else if (resultObj.action) {\n openAction.action = resultObj.action;\n }\n } else if (Array.isArray(obj)) {\n openAction.dest = obj;\n }\n return shadow(\n this,\n \"openAction\",\n objectSize(openAction) > 0 ? openAction : null\n );\n }\n\n get attachments() {\n const obj = this._catDict.get(\"Names\");\n let attachments = null;\n\n if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n const fs = new FileSpec(value, this.xref);\n if (!attachments) {\n attachments = Object.create(null);\n }\n attachments[stringToPDFString(key)] = fs.serializable;\n }\n }\n return shadow(this, \"attachments\", attachments);\n }\n\n get xfaImages() {\n const obj = this._catDict.get(\"Names\");\n let xfaImages = null;\n\n if (obj instanceof Dict && obj.has(\"XFAImages\")) {\n const nameTree = new NameTree(obj.getRaw(\"XFAImages\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n if (!xfaImages) {\n xfaImages = new Dict(this.xref);\n }\n xfaImages.set(key, value);\n }\n }\n return shadow(this, \"xfaImages\", xfaImages);\n }\n\n _collectJavaScript() {\n const obj = this._catDict.get(\"Names\");\n let javaScript = null;\n\n function appendIfJavaScriptDict(name, jsDict) {\n if (!(jsDict instanceof Dict)) {\n return;\n }\n if (!isName(jsDict.get(\"S\"), \"JavaScript\")) {\n return;\n }\n\n let js = jsDict.get(\"JS\");\n if (js instanceof BaseStream) {\n js = js.getString();\n } else if (typeof js !== \"string\") {\n return;\n }\n\n if (javaScript === null) {\n javaScript = new Map();\n }\n javaScript.set(name, stringToPDFString(js));\n }\n\n if (obj instanceof Dict && obj.has(\"JavaScript\")) {\n const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n appendIfJavaScriptDict(key, value);\n }\n }\n // Append OpenAction \"JavaScript\" actions, if any, to the JavaScript map.\n const openAction = this._catDict.get(\"OpenAction\");\n if (openAction) {\n appendIfJavaScriptDict(\"OpenAction\", openAction);\n }\n\n return javaScript;\n }\n\n get javaScript() {\n const javaScript = this._collectJavaScript();\n return shadow(\n this,\n \"javaScript\",\n javaScript ? [...javaScript.values()] : null\n );\n }\n\n get jsActions() {\n const javaScript = this._collectJavaScript();\n let actions = collectActions(\n this.xref,\n this._catDict,\n DocumentActionEventType\n );\n\n if (javaScript) {\n if (!actions) {\n actions = Object.create(null);\n }\n for (const [key, val] of javaScript) {\n if (key in actions) {\n actions[key].push(val);\n } else {\n actions[key] = [val];\n }\n }\n }\n return shadow(this, \"jsActions\", actions);\n }\n\n fontFallback(id, handler) {\n const promises = [];\n this.fontCache.forEach(function (promise) {\n promises.push(promise);\n });\n\n return Promise.all(promises).then(translatedFonts => {\n for (const translatedFont of translatedFonts) {\n if (translatedFont.loadedName === id) {\n translatedFont.fallback(handler);\n return;\n }\n }\n });\n }\n\n cleanup(manuallyTriggered = false) {\n clearGlobalCaches();\n this.globalImageCache.clear(/* onlyData = */ manuallyTriggered);\n this.pageKidsCountCache.clear();\n this.pageIndexCache.clear();\n this.nonBlendModesSet.clear();\n\n const promises = [];\n this.fontCache.forEach(function (promise) {\n promises.push(promise);\n });\n\n return Promise.all(promises).then(translatedFonts => {\n for (const { dict } of translatedFonts) {\n delete dict.cacheKey;\n }\n this.fontCache.clear();\n this.builtInCMapCache.clear();\n this.standardFontDataCache.clear();\n });\n }\n\n async getPageDict(pageIndex) {\n const nodesToVisit = [this.toplevelPagesDict];\n const visitedNodes = new RefSet();\n\n const pagesRef = this._catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const xref = this.xref,\n pageKidsCountCache = this.pageKidsCountCache,\n pageIndexCache = this.pageIndexCache;\n let currentPageIndex = 0;\n\n while (nodesToVisit.length) {\n const currentNode = nodesToVisit.pop();\n\n if (currentNode instanceof Ref) {\n const count = pageKidsCountCache.get(currentNode);\n // Skip nodes where the page can't be.\n if (count >= 0 && currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n // Prevent circular references in the /Pages tree.\n if (visitedNodes.has(currentNode)) {\n throw new FormatError(\"Pages tree contains circular reference.\");\n }\n visitedNodes.put(currentNode);\n\n const obj = await xref.fetchAsync(currentNode);\n if (obj instanceof Dict) {\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n // Cache the Page reference, since it can *greatly* improve\n // performance by reducing redundant lookups in long documents\n // where all nodes are found at *one* level of the tree.\n if (!pageKidsCountCache.has(currentNode)) {\n pageKidsCountCache.put(currentNode, 1);\n }\n // Help improve performance of the `getPageIndex` method.\n if (!pageIndexCache.has(currentNode)) {\n pageIndexCache.put(currentNode, currentPageIndex);\n }\n\n if (currentPageIndex === pageIndex) {\n return [obj, currentNode];\n }\n currentPageIndex++;\n continue;\n }\n }\n nodesToVisit.push(obj);\n continue;\n }\n\n // Must be a child page dictionary.\n if (!(currentNode instanceof Dict)) {\n throw new FormatError(\n \"Page dictionary kid reference points to wrong type of object.\"\n );\n }\n const { objId } = currentNode;\n\n let count = currentNode.getRaw(\"Count\");\n if (count instanceof Ref) {\n count = await xref.fetchAsync(count);\n }\n if (Number.isInteger(count) && count >= 0) {\n // Cache the Kids count, since it can reduce redundant lookups in\n // documents where all nodes are found at *one* level of the tree.\n if (objId && !pageKidsCountCache.has(objId)) {\n pageKidsCountCache.put(objId, count);\n }\n\n // Skip nodes where the page can't be.\n if (currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n }\n\n let kids = currentNode.getRaw(\"Kids\");\n if (kids instanceof Ref) {\n kids = await xref.fetchAsync(kids);\n }\n if (!Array.isArray(kids)) {\n // Prevent errors in corrupt PDF documents that violate the\n // specification by *inlining* Page dicts directly in the Kids\n // array, rather than using indirect objects (fixes issue9540.pdf).\n let type = currentNode.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !currentNode.has(\"Kids\")) {\n if (currentPageIndex === pageIndex) {\n return [currentNode, null];\n }\n currentPageIndex++;\n continue;\n }\n\n throw new FormatError(\"Page dictionary kids object is not an array.\");\n }\n\n // Always check all `Kids` nodes, to avoid getting stuck in an empty\n // node further down in the tree (see issue5644.pdf, issue8088.pdf),\n // and to ensure that we actually find the correct `Page` dict.\n for (let last = kids.length - 1; last >= 0; last--) {\n nodesToVisit.push(kids[last]);\n }\n }\n\n throw new Error(`Page index ${pageIndex} not found.`);\n }\n\n /**\n * Eagerly fetches the entire /Pages-tree; should ONLY be used as a fallback.\n * @returns {Promise<Map>}\n */\n async getAllPageDicts(recoveryMode = false) {\n const queue = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }];\n const visitedNodes = new RefSet();\n\n const pagesRef = this._catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const map = new Map(),\n xref = this.xref,\n pageIndexCache = this.pageIndexCache;\n let pageIndex = 0;\n\n function addPageDict(pageDict, pageRef) {\n // Help improve performance of the `getPageIndex` method.\n if (pageRef && !pageIndexCache.has(pageRef)) {\n pageIndexCache.put(pageRef, pageIndex);\n }\n\n map.set(pageIndex++, [pageDict, pageRef]);\n }\n function addPageError(error) {\n if (error instanceof XRefEntryException && !recoveryMode) {\n throw error;\n }\n\n map.set(pageIndex++, [error, null]);\n }\n\n while (queue.length > 0) {\n const queueItem = queue[queue.length - 1];\n const { currentNode, posInKids } = queueItem;\n\n let kids = currentNode.getRaw(\"Kids\");\n if (kids instanceof Ref) {\n try {\n kids = await xref.fetchAsync(kids);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (!Array.isArray(kids)) {\n addPageError(\n new FormatError(\"Page dictionary kids object is not an array.\")\n );\n break;\n }\n\n if (posInKids >= kids.length) {\n queue.pop();\n continue;\n }\n\n const kidObj = kids[posInKids];\n let obj;\n if (kidObj instanceof Ref) {\n // Prevent circular references in the /Pages tree.\n if (visitedNodes.has(kidObj)) {\n addPageError(\n new FormatError(\"Pages tree contains circular reference.\")\n );\n break;\n }\n visitedNodes.put(kidObj);\n\n try {\n obj = await xref.fetchAsync(kidObj);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n } else {\n // Prevent errors in corrupt PDF documents that violate the\n // specification by *inlining* Page dicts directly in the Kids\n // array, rather than using indirect objects (see issue9540.pdf).\n obj = kidObj;\n }\n if (!(obj instanceof Dict)) {\n addPageError(\n new FormatError(\n \"Page dictionary kid reference points to wrong type of object.\"\n )\n );\n break;\n }\n\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n try {\n type = await xref.fetchAsync(type);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n addPageDict(obj, kidObj instanceof Ref ? kidObj : null);\n } else {\n queue.push({ currentNode: obj, posInKids: 0 });\n }\n queueItem.posInKids++;\n }\n return map;\n }\n\n getPageIndex(pageRef) {\n const cachedPageIndex = this.pageIndexCache.get(pageRef);\n if (cachedPageIndex !== undefined) {\n return Promise.resolve(cachedPageIndex);\n }\n\n // The page tree nodes have the count of all the leaves below them. To get\n // how many pages are before we just have to walk up the tree and keep\n // adding the count of siblings to the left of the node.\n const xref = this.xref;\n\n function pagesBeforeRef(kidRef) {\n let total = 0,\n parentRef;\n\n return xref\n .fetchAsync(kidRef)\n .then(function (node) {\n if (\n isRefsEqual(kidRef, pageRef) &&\n !isDict(node, \"Page\") &&\n !(node instanceof Dict && !node.has(\"Type\") && node.has(\"Contents\"))\n ) {\n throw new FormatError(\n \"The reference does not point to a /Page dictionary.\"\n );\n }\n if (!node) {\n return null;\n }\n if (!(node instanceof Dict)) {\n throw new FormatError(\"Node must be a dictionary.\");\n }\n parentRef = node.getRaw(\"Parent\");\n return node.getAsync(\"Parent\");\n })\n .then(function (parent) {\n if (!parent) {\n return null;\n }\n if (!(parent instanceof Dict)) {\n throw new FormatError(\"Parent must be a dictionary.\");\n }\n return parent.getAsync(\"Kids\");\n })\n .then(function (kids) {\n if (!kids) {\n return null;\n }\n\n const kidPromises = [];\n let found = false;\n for (let i = 0, ii = kids.length; i < ii; i++) {\n const kid = kids[i];\n if (!(kid instanceof Ref)) {\n throw new FormatError(\"Kid must be a reference.\");\n }\n if (isRefsEqual(kid, kidRef)) {\n found = true;\n break;\n }\n kidPromises.push(\n xref.fetchAsync(kid).then(function (obj) {\n if (!(obj instanceof Dict)) {\n throw new FormatError(\"Kid node must be a dictionary.\");\n }\n if (obj.has(\"Count\")) {\n total += obj.get(\"Count\");\n } else {\n // Page leaf node.\n total++;\n }\n })\n );\n }\n if (!found) {\n throw new FormatError(\"Kid reference not found in parent's kids.\");\n }\n return Promise.all(kidPromises).then(function () {\n return [total, parentRef];\n });\n });\n }\n\n let total = 0;\n const next = ref =>\n pagesBeforeRef(ref).then(args => {\n if (!args) {\n this.pageIndexCache.put(pageRef, total);\n return total;\n }\n const [count, parentRef] = args;\n total += count;\n return next(parentRef);\n });\n\n return next(pageRef);\n }\n\n /**\n * @typedef ParseDestDictionaryParameters\n * @property {Dict} destDict - The dictionary containing the destination.\n * @property {Object} resultObj - The object where the parsed destination\n * properties will be placed.\n * @property {string} [docBaseUrl] - The document base URL that is used when\n * attempting to recover valid absolute URLs from relative ones.\n */\n\n /**\n * Helper function used to parse the contents of destination dictionaries.\n * @param {ParseDestDictionaryParameters} params\n */\n static parseDestDictionary(params) {\n const destDict = params.destDict;\n if (!(destDict instanceof Dict)) {\n warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n return;\n }\n const resultObj = params.resultObj;\n if (typeof resultObj !== \"object\") {\n warn(\"parseDestDictionary: `resultObj` must be an object.\");\n return;\n }\n const docBaseUrl = params.docBaseUrl || null;\n\n let action = destDict.get(\"A\"),\n url,\n dest;\n if (!(action instanceof Dict)) {\n if (destDict.has(\"Dest\")) {\n // A /Dest entry should *only* contain a Name or an Array, but some bad\n // PDF generators ignore that and treat it as an /A entry.\n action = destDict.get(\"Dest\");\n } else {\n action = destDict.get(\"AA\");\n if (action instanceof Dict) {\n if (action.has(\"D\")) {\n // MouseDown\n action = action.get(\"D\");\n } else if (action.has(\"U\")) {\n // MouseUp\n action = action.get(\"U\");\n }\n }\n }\n }\n\n if (action instanceof Dict) {\n const actionType = action.get(\"S\");\n if (!(actionType instanceof Name)) {\n warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n return;\n }\n const actionName = actionType.name;\n\n switch (actionName) {\n case \"ResetForm\":\n const flags = action.get(\"Flags\");\n const include = ((typeof flags === \"number\" ? flags : 0) & 1) === 0;\n const fields = [];\n const refs = [];\n for (const obj of action.get(\"Fields\") || []) {\n if (obj instanceof Ref) {\n refs.push(obj.toString());\n } else if (typeof obj === \"string\") {\n fields.push(stringToPDFString(obj));\n }\n }\n resultObj.resetForm = { fields, refs, include };\n break;\n case \"URI\":\n url = action.get(\"URI\");\n if (url instanceof Name) {\n // Some bad PDFs do not put parentheses around relative URLs.\n url = \"/\" + url.name;\n }\n // TODO: pdf spec mentions urls can be relative to a Base\n // entry in the dictionary.\n break;\n\n case \"GoTo\":\n dest = action.get(\"D\");\n break;\n\n case \"Launch\":\n // We neither want, nor can, support arbitrary 'Launch' actions.\n // However, in practice they are mostly used for linking to other PDF\n // files, which we thus attempt to support (utilizing `docBaseUrl`).\n /* falls through */\n\n case \"GoToR\":\n const urlDict = action.get(\"F\");\n if (urlDict instanceof Dict) {\n // We assume that we found a FileSpec dictionary\n // and fetch the URL without checking any further.\n url = urlDict.get(\"F\") || null;\n } else if (typeof urlDict === \"string\") {\n url = urlDict;\n }\n\n // NOTE: the destination is relative to the *remote* document.\n let remoteDest = action.get(\"D\");\n if (remoteDest) {\n if (remoteDest instanceof Name) {\n remoteDest = remoteDest.name;\n }\n if (typeof url === \"string\") {\n const baseUrl = url.split(\"#\")[0];\n if (typeof remoteDest === \"string\") {\n url = baseUrl + \"#\" + remoteDest;\n } else if (Array.isArray(remoteDest)) {\n url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n }\n }\n }\n // The 'NewWindow' property, equal to `LinkTarget.BLANK`.\n const newWindow = action.get(\"NewWindow\");\n if (typeof newWindow === \"boolean\") {\n resultObj.newWindow = newWindow;\n }\n break;\n\n case \"Named\":\n const namedAction = action.get(\"N\");\n if (namedAction instanceof Name) {\n resultObj.action = namedAction.name;\n }\n break;\n\n case \"JavaScript\":\n const jsAction = action.get(\"JS\");\n let js;\n\n if (jsAction instanceof BaseStream) {\n js = jsAction.getString();\n } else if (typeof jsAction === \"string\") {\n js = jsAction;\n }\n\n const jsURL = js && recoverJsURL(stringToPDFString(js));\n if (jsURL) {\n url = jsURL.url;\n resultObj.newWindow = jsURL.newWindow;\n break;\n }\n /* falls through */\n default:\n if (actionName === \"JavaScript\" || actionName === \"SubmitForm\") {\n // Don't bother the user with a warning for actions that require\n // scripting support, since those will be handled separately.\n break;\n }\n warn(`parseDestDictionary - unsupported action: \"${actionName}\".`);\n break;\n }\n } else if (destDict.has(\"Dest\")) {\n // Simple destination.\n dest = destDict.get(\"Dest\");\n }\n\n if (typeof url === \"string\") {\n const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, {\n addDefaultProtocol: true,\n tryConvertEncoding: true,\n });\n if (absoluteUrl) {\n resultObj.url = absoluteUrl.href;\n }\n resultObj.unsafeUrl = url;\n }\n if (dest) {\n if (dest instanceof Name) {\n dest = dest.name;\n }\n if (typeof dest === \"string\" || Array.isArray(dest)) {\n resultObj.dest = dest;\n }\n }\n }\n}\n\nexport { Catalog };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, RefSet } from \"./primitives.js\";\nimport { FormatError, unreachable, warn } from \"../shared/util.js\";\n\n/**\n * A NameTree/NumberTree is like a Dict but has some advantageous properties,\n * see the specification (7.9.6 and 7.9.7) for additional details.\n * TODO: implement all the Dict functions and make this more efficient.\n */\nclass NameOrNumberTree {\n constructor(root, xref, type) {\n if (this.constructor === NameOrNumberTree) {\n unreachable(\"Cannot initialize NameOrNumberTree.\");\n }\n this.root = root;\n this.xref = xref;\n this._type = type;\n }\n\n getAll() {\n const map = new Map();\n if (!this.root) {\n return map;\n }\n const xref = this.xref;\n // Reading Name/Number tree.\n const processed = new RefSet();\n processed.put(this.root);\n const queue = [this.root];\n while (queue.length > 0) {\n const obj = xref.fetchIfRef(queue.shift());\n if (!(obj instanceof Dict)) {\n continue;\n }\n if (obj.has(\"Kids\")) {\n const kids = obj.get(\"Kids\");\n for (let i = 0, ii = kids.length; i < ii; i++) {\n const kid = kids[i];\n if (processed.has(kid)) {\n throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n }\n queue.push(kid);\n processed.put(kid);\n }\n continue;\n }\n const entries = obj.get(this._type);\n if (!Array.isArray(entries)) {\n continue;\n }\n for (let i = 0, ii = entries.length; i < ii; i += 2) {\n map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1]));\n }\n }\n return map;\n }\n\n get(key) {\n if (!this.root) {\n return null;\n }\n const xref = this.xref;\n let kidsOrEntries = xref.fetchIfRef(this.root);\n let loopCount = 0;\n const MAX_LEVELS = 10;\n\n // Perform a binary search to quickly find the entry that\n // contains the key we are looking for.\n while (kidsOrEntries.has(\"Kids\")) {\n if (++loopCount > MAX_LEVELS) {\n warn(`Search depth limit reached for \"${this._type}\" tree.`);\n return null;\n }\n\n const kids = kidsOrEntries.get(\"Kids\");\n if (!Array.isArray(kids)) {\n return null;\n }\n\n let l = 0,\n r = kids.length - 1;\n while (l <= r) {\n const m = (l + r) >> 1;\n const kid = xref.fetchIfRef(kids[m]);\n const limits = kid.get(\"Limits\");\n\n if (key < xref.fetchIfRef(limits[0])) {\n r = m - 1;\n } else if (key > xref.fetchIfRef(limits[1])) {\n l = m + 1;\n } else {\n kidsOrEntries = xref.fetchIfRef(kids[m]);\n break;\n }\n }\n if (l > r) {\n return null;\n }\n }\n\n // If we get here, then we have found the right entry. Now go through the\n // entries in the dictionary until we find the key we're looking for.\n const entries = kidsOrEntries.get(this._type);\n if (Array.isArray(entries)) {\n // Perform a binary search to reduce the lookup time.\n let l = 0,\n r = entries.length - 2;\n while (l <= r) {\n // Check only even indices (0, 2, 4, ...) because the\n // odd indices contain the actual data.\n const tmp = (l + r) >> 1,\n m = tmp + (tmp & 1);\n const currentKey = xref.fetchIfRef(entries[m]);\n if (key < currentKey) {\n r = m - 2;\n } else if (key > currentKey) {\n l = m + 2;\n } else {\n return xref.fetchIfRef(entries[m + 1]);\n }\n }\n }\n return null;\n }\n}\n\nclass NameTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Names\");\n }\n}\n\nclass NumberTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Nums\");\n }\n}\n\nexport { NameTree, NumberTree };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { clearPrimitiveCaches } from \"./primitives.js\";\nimport { clearUnicodeCaches } from \"./unicode.js\";\n\nfunction clearGlobalCaches() {\n clearPrimitiveCaches();\n clearUnicodeCaches();\n}\n\nexport { clearGlobalCaches };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToPDFString, warn } from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { Dict } from \"./primitives.js\";\n\nfunction pickPlatformItem(dict) {\n // Look for the filename in this order:\n // UF, F, Unix, Mac, DOS\n if (dict.has(\"UF\")) {\n return dict.get(\"UF\");\n } else if (dict.has(\"F\")) {\n return dict.get(\"F\");\n } else if (dict.has(\"Unix\")) {\n return dict.get(\"Unix\");\n } else if (dict.has(\"Mac\")) {\n return dict.get(\"Mac\");\n } else if (dict.has(\"DOS\")) {\n return dict.get(\"DOS\");\n }\n return null;\n}\n\n/**\n * \"A PDF file can refer to the contents of another file by using a File\n * Specification (PDF 1.1)\", see the spec (7.11) for more details.\n * NOTE: Only embedded files are supported (as part of the attachments support)\n * TODO: support the 'URL' file system (with caching if !/V), portable\n * collections attributes and related files (/RF)\n */\nclass FileSpec {\n constructor(root, xref) {\n if (!(root instanceof Dict)) {\n return;\n }\n this.xref = xref;\n this.root = root;\n if (root.has(\"FS\")) {\n this.fs = root.get(\"FS\");\n }\n this.description = root.has(\"Desc\")\n ? stringToPDFString(root.get(\"Desc\"))\n : \"\";\n if (root.has(\"RF\")) {\n warn(\"Related file specifications are not supported\");\n }\n this.contentAvailable = true;\n if (!root.has(\"EF\")) {\n this.contentAvailable = false;\n warn(\"Non-embedded file specifications are not supported\");\n }\n }\n\n get filename() {\n if (!this._filename && this.root) {\n const filename = pickPlatformItem(this.root) || \"unnamed\";\n this._filename = stringToPDFString(filename)\n .replace(/\\\\\\\\/g, \"\\\\\")\n .replace(/\\\\\\//g, \"/\")\n .replace(/\\\\/g, \"/\");\n }\n return this._filename;\n }\n\n get content() {\n if (!this.contentAvailable) {\n return null;\n }\n if (!this.contentRef && this.root) {\n this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n }\n let content = null;\n if (this.contentRef) {\n const fileObj = this.xref.fetchIfRef(this.contentRef);\n if (fileObj instanceof BaseStream) {\n content = fileObj.getBytes();\n } else {\n warn(\n \"Embedded file specification points to non-existing/invalid content\"\n );\n }\n } else {\n warn(\"Embedded file specification does not have a content\");\n }\n return content;\n }\n\n get serializable() {\n return {\n filename: this.filename,\n content: this.content,\n };\n }\n}\n\nexport { FileSpec };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SimpleXMLParser } from \"./xml_parser.js\";\n\nclass MetadataParser {\n constructor(data) {\n // Ghostscript may produce invalid metadata, so try to repair that first.\n data = this._repair(data);\n\n // Convert the string to an XML document.\n const parser = new SimpleXMLParser({ lowerCaseName: true });\n const xmlDocument = parser.parseFromString(data);\n\n this._metadataMap = new Map();\n this._data = data;\n\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n\n _repair(data) {\n // Start by removing any \"junk\" before the first tag (see issue 10395).\n return data\n .replace(/^[^<]+/, \"\")\n .replace(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n const bytes = codes\n .replace(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n })\n .replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n switch (name) {\n case \"amp\":\n return \"&\";\n case \"apos\":\n return \"'\";\n case \"gt\":\n return \">\";\n case \"lt\":\n return \"<\";\n case \"quot\":\n return '\"';\n }\n throw new Error(`_repair: ${name} isn't defined.`);\n });\n\n const charBuf = [];\n for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n if (\n code >= /* Space = */ 32 &&\n code < /* Delete = */ 127 &&\n code !== /* '<' = */ 60 &&\n code !== /* '>' = */ 62 &&\n code !== /* '&' = */ 38\n ) {\n charBuf.push(String.fromCharCode(code));\n } else {\n charBuf.push(\n \"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\"\n );\n }\n }\n return \">\" + charBuf.join(\"\");\n });\n }\n\n _getSequence(entry) {\n const name = entry.nodeName;\n if (name !== \"rdf:bag\" && name !== \"rdf:seq\" && name !== \"rdf:alt\") {\n return null;\n }\n return entry.childNodes.filter(node => node.nodeName === \"rdf:li\");\n }\n\n _parseArray(entry) {\n if (!entry.hasChildNodes()) {\n return;\n }\n // Child must be a Bag (unordered array) or a Seq.\n const [seqNode] = entry.childNodes;\n const sequence = this._getSequence(seqNode) || [];\n\n this._metadataMap.set(\n entry.nodeName,\n sequence.map(node => node.textContent.trim())\n );\n }\n\n _parse(xmlDocument) {\n let rdf = xmlDocument.documentElement;\n\n if (rdf.nodeName !== \"rdf:rdf\") {\n // Wrapped in <xmpmeta>\n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName !== \"rdf:rdf\") {\n rdf = rdf.nextSibling;\n }\n }\n\n if (!rdf || rdf.nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n return;\n }\n\n for (const desc of rdf.childNodes) {\n if (desc.nodeName !== \"rdf:description\") {\n continue;\n }\n\n for (const entry of desc.childNodes) {\n const name = entry.nodeName;\n switch (name) {\n case \"#text\":\n continue;\n case \"dc:creator\":\n case \"dc:subject\":\n this._parseArray(entry);\n continue;\n }\n this._metadataMap.set(name, entry.textContent.trim());\n }\n }\n }\n\n get serializable() {\n return {\n parsedData: this._metadataMap,\n rawData: this._data,\n };\n }\n}\n\nexport { MetadataParser };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// The code for XMLParserBase copied from\n// https://github.com/mozilla/shumway/blob/16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0/src/avm2/natives/xml.ts\n\nimport { encodeToXmlString } from \"./core_utils.js\";\n\nconst XMLParserErrorCode = {\n NoError: 0,\n EndOfDocument: -1,\n UnterminatedCdat: -2,\n UnterminatedXmlDeclaration: -3,\n UnterminatedDoctypeDeclaration: -4,\n UnterminatedComment: -5,\n MalformedElement: -6,\n OutOfMemory: -7,\n UnterminatedAttributeValue: -8,\n UnterminatedElement: -9,\n ElementNeverBegun: -10,\n};\n\nfunction isWhitespace(s, index) {\n const ch = s[index];\n return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\n\nfunction isWhitespaceString(s) {\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (!isWhitespace(s, i)) {\n return false;\n }\n }\n return true;\n}\n\nclass XMLParserBase {\n _resolveEntities(s) {\n return s.replace(/&([^;]+);/g, (all, entity) => {\n if (entity.substring(0, 2) === \"#x\") {\n return String.fromCodePoint(parseInt(entity.substring(2), 16));\n } else if (entity.substring(0, 1) === \"#\") {\n return String.fromCodePoint(parseInt(entity.substring(1), 10));\n }\n switch (entity) {\n case \"lt\":\n return \"<\";\n case \"gt\":\n return \">\";\n case \"amp\":\n return \"&\";\n case \"quot\":\n return '\"';\n case \"apos\":\n return \"'\";\n }\n return this.onResolveEntity(entity);\n });\n }\n\n _parseContent(s, start) {\n const attributes = [];\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n while (\n pos < s.length &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\" &&\n s[pos] !== \"?\"\n ) {\n skipWs();\n let attrName = \"\",\n attrValue = \"\";\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n attrName += s[pos];\n ++pos;\n }\n skipWs();\n if (s[pos] !== \"=\") {\n return null;\n }\n ++pos;\n skipWs();\n const attrEndChar = s[pos];\n if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n return null;\n }\n const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n if (attrEndIndex < 0) {\n return null;\n }\n attrValue = s.substring(pos, attrEndIndex);\n attributes.push({\n name: attrName,\n value: this._resolveEntities(attrValue),\n });\n pos = attrEndIndex + 1;\n skipWs();\n }\n return {\n name,\n attributes,\n parsed: pos - start,\n };\n }\n\n _parseProcessingInstruction(s, start) {\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"?\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n const attrStart = pos;\n while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n ++pos;\n }\n const value = s.substring(attrStart, pos);\n return {\n name,\n value,\n parsed: pos - start,\n };\n }\n\n parseXml(s) {\n let i = 0;\n while (i < s.length) {\n const ch = s[i];\n let j = i;\n if (ch === \"<\") {\n ++j;\n const ch2 = s[j];\n let q;\n switch (ch2) {\n case \"/\":\n ++j;\n q = s.indexOf(\">\", j);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onEndElement(s.substring(j, q));\n j = q + 1;\n break;\n case \"?\":\n ++j;\n const pi = this._parseProcessingInstruction(s, j);\n if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n return;\n }\n this.onPi(pi.name, pi.value);\n j += pi.parsed + 2;\n break;\n case \"!\":\n if (s.substring(j + 1, j + 3) === \"--\") {\n q = s.indexOf(\"-->\", j + 3);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\n this.onComment(s.substring(j + 3, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n q = s.indexOf(\"]]>\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n const q2 = s.indexOf(\"[\", j + 8);\n let complexDoctype = false;\n q = s.indexOf(\">\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n if (q2 > 0 && q > q2) {\n q = s.indexOf(\"]>\", j + 8);\n if (q < 0) {\n this.onError(\n XMLParserErrorCode.UnterminatedDoctypeDeclaration\n );\n return;\n }\n complexDoctype = true;\n }\n const doctypeContent = s.substring(\n j + 8,\n q + (complexDoctype ? 1 : 0)\n );\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n break;\n default:\n const content = this._parseContent(s, j);\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n let isClosed = false;\n if (\n s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\"\n ) {\n isClosed = true;\n } else if (\n s.substring(j + content.parsed, j + content.parsed + 1) !== \">\"\n ) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onBeginElement(content.name, content.attributes, isClosed);\n j += content.parsed + (isClosed ? 2 : 1);\n break;\n }\n } else {\n while (j < s.length && s[j] !== \"<\") {\n j++;\n }\n const text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n i = j;\n }\n }\n\n onResolveEntity(name) {\n return `&${name};`;\n }\n\n onPi(name, value) {}\n\n onComment(text) {}\n\n onCdata(text) {}\n\n onDoctype(doctypeContent) {}\n\n onText(text) {}\n\n onBeginElement(name, attributes, isEmpty) {}\n\n onEndElement(name) {}\n\n onError(code) {}\n}\n\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n\n Object.defineProperty(this, \"parentNode\", { value: null, writable: true });\n }\n\n get firstChild() {\n return this.childNodes && this.childNodes[0];\n }\n\n get nextSibling() {\n const childNodes = this.parentNode.childNodes;\n if (!childNodes) {\n return undefined;\n }\n const index = childNodes.indexOf(this);\n if (index === -1) {\n return undefined;\n }\n return childNodes[index + 1];\n }\n\n get textContent() {\n if (!this.childNodes) {\n return this.nodeValue || \"\";\n }\n return this.childNodes\n .map(function (child) {\n return child.textContent;\n })\n .join(\"\");\n }\n\n hasChildNodes() {\n return this.childNodes && this.childNodes.length > 0;\n }\n\n /**\n * Search a node in the tree with the given path\n * foo.bar[nnn], i.e. find the nnn-th node named\n * bar under a node named foo.\n *\n * @param {Array} paths - an array of objects as\n * returned by {parseXFAPath}.\n * @param {number} pos - the current position in\n * the paths array.\n * @returns {SimpleDOMNode} The node corresponding\n * to the path or null if not found.\n */\n searchNode(paths, pos) {\n if (pos >= paths.length) {\n return this;\n }\n\n const component = paths[pos];\n const stack = [];\n let node = this;\n\n while (true) {\n if (component.name === node.nodeName) {\n if (component.pos === 0) {\n const res = node.searchNode(paths, pos + 1);\n if (res !== null) {\n return res;\n }\n } else if (stack.length === 0) {\n return null;\n } else {\n const [parent] = stack.pop();\n let siblingPos = 0;\n for (const child of parent.childNodes) {\n if (component.name === child.nodeName) {\n if (siblingPos === component.pos) {\n return child.searchNode(paths, pos + 1);\n }\n siblingPos++;\n }\n }\n // We didn't find the correct sibling\n // so just return the first found node\n return node.searchNode(paths, pos + 1);\n }\n }\n\n if (node.childNodes && node.childNodes.length !== 0) {\n stack.push([node, 0]);\n node = node.childNodes[0];\n } else if (stack.length === 0) {\n return null;\n } else {\n while (stack.length !== 0) {\n const [parent, currentPos] = stack.pop();\n const newPos = currentPos + 1;\n if (newPos < parent.childNodes.length) {\n stack.push([parent, newPos]);\n node = parent.childNodes[newPos];\n break;\n }\n }\n if (stack.length === 0) {\n return null;\n }\n }\n }\n }\n\n dump(buffer) {\n if (this.nodeName === \"#text\") {\n buffer.push(encodeToXmlString(this.nodeValue));\n return;\n }\n\n buffer.push(`<${this.nodeName}`);\n if (this.attributes) {\n for (const attribute of this.attributes) {\n buffer.push(\n ` ${attribute.name}=\"${encodeToXmlString(attribute.value)}\"`\n );\n }\n }\n if (this.hasChildNodes()) {\n buffer.push(\">\");\n for (const child of this.childNodes) {\n child.dump(buffer);\n }\n buffer.push(`</${this.nodeName}>`);\n } else if (this.nodeValue) {\n buffer.push(`>${encodeToXmlString(this.nodeValue)}</${this.nodeName}>`);\n } else {\n buffer.push(\"/>\");\n }\n }\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n constructor({ hasAttributes = false, lowerCaseName = false }) {\n super();\n this._currentFragment = null;\n this._stack = null;\n this._errorCode = XMLParserErrorCode.NoError;\n this._hasAttributes = hasAttributes;\n this._lowerCaseName = lowerCaseName;\n }\n\n parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined; // return undefined on error\n }\n\n // We should only have one root.\n const [documentElement] = this._currentFragment;\n if (!documentElement) {\n return undefined; // Return undefined if no root was found.\n }\n return { documentElement };\n }\n\n onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onCdata(text) {\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onBeginElement(name, attributes, isEmpty) {\n if (this._lowerCaseName) {\n name = name.toLowerCase();\n }\n const node = new SimpleDOMNode(name);\n node.childNodes = [];\n if (this._hasAttributes) {\n node.attributes = attributes;\n }\n this._currentFragment.push(node);\n if (isEmpty) {\n return;\n }\n this._stack.push(this._currentFragment);\n this._currentFragment = node.childNodes;\n }\n\n onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n const lastElement = this._currentFragment[this._currentFragment.length - 1];\n if (!lastElement) {\n return;\n }\n for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n lastElement.childNodes[i].parentNode = lastElement;\n }\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { SimpleDOMNode, SimpleXMLParser, XMLParserBase, XMLParserErrorCode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isName, Name, Ref } from \"./primitives.js\";\nimport { stringToPDFString, warn } from \"../shared/util.js\";\nimport { NumberTree } from \"./name_number_tree.js\";\n\nconst MAX_DEPTH = 40;\n\nconst StructElementType = {\n PAGE_CONTENT: \"PAGE_CONTENT\",\n STREAM_CONTENT: \"STREAM_CONTENT\",\n OBJECT: \"OBJECT\",\n ELEMENT: \"ELEMENT\",\n};\n\nclass StructTreeRoot {\n constructor(rootDict) {\n this.dict = rootDict;\n this.roleMap = new Map();\n }\n\n init() {\n this.readRoleMap();\n }\n\n readRoleMap() {\n const roleMapDict = this.dict.get(\"RoleMap\");\n if (!(roleMapDict instanceof Dict)) {\n return;\n }\n roleMapDict.forEach((key, value) => {\n if (!(value instanceof Name)) {\n return;\n }\n this.roleMap.set(key, value.name);\n });\n }\n}\n\n/**\n * Instead of loading the whole tree we load just the page's relevant structure\n * elements, which means we need a wrapper structure to represent the tree.\n */\nclass StructElementNode {\n constructor(tree, dict) {\n this.tree = tree;\n this.dict = dict;\n this.kids = [];\n this.parseKids();\n }\n\n get role() {\n const nameObj = this.dict.get(\"S\");\n const name = nameObj instanceof Name ? nameObj.name : \"\";\n const { root } = this.tree;\n if (root.roleMap.has(name)) {\n return root.roleMap.get(name);\n }\n return name;\n }\n\n parseKids() {\n let pageObjId = null;\n const objRef = this.dict.getRaw(\"Pg\");\n if (objRef instanceof Ref) {\n pageObjId = objRef.toString();\n }\n const kids = this.dict.get(\"K\");\n if (Array.isArray(kids)) {\n for (const kid of kids) {\n const element = this.parseKid(pageObjId, kid);\n if (element) {\n this.kids.push(element);\n }\n }\n } else {\n const element = this.parseKid(pageObjId, kids);\n if (element) {\n this.kids.push(element);\n }\n }\n }\n\n parseKid(pageObjId, kid) {\n // A direct link to content, the integer is an mcid.\n if (Number.isInteger(kid)) {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n\n return new StructElement({\n type: StructElementType.PAGE_CONTENT,\n mcid: kid,\n pageObjId,\n });\n }\n\n // Find the dictionary for the kid.\n let kidDict = null;\n if (kid instanceof Ref) {\n kidDict = this.dict.xref.fetch(kid);\n } else if (kid instanceof Dict) {\n kidDict = kid;\n }\n if (!kidDict) {\n return null;\n }\n const pageRef = kidDict.getRaw(\"Pg\");\n if (pageRef instanceof Ref) {\n pageObjId = pageRef.toString();\n }\n\n const type =\n kidDict.get(\"Type\") instanceof Name ? kidDict.get(\"Type\").name : null;\n if (type === \"MCR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.STREAM_CONTENT,\n refObjId:\n kidDict.getRaw(\"Stm\") instanceof Ref\n ? kidDict.getRaw(\"Stm\").toString()\n : null,\n pageObjId,\n mcid: kidDict.get(\"MCID\"),\n });\n }\n\n if (type === \"OBJR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.OBJECT,\n refObjId:\n kidDict.getRaw(\"Obj\") instanceof Ref\n ? kidDict.getRaw(\"Obj\").toString()\n : null,\n pageObjId,\n });\n }\n\n return new StructElement({\n type: StructElementType.ELEMENT,\n dict: kidDict,\n });\n }\n}\n\nclass StructElement {\n constructor({\n type,\n dict = null,\n mcid = null,\n pageObjId = null,\n refObjId = null,\n }) {\n this.type = type;\n this.dict = dict;\n this.mcid = mcid;\n this.pageObjId = pageObjId;\n this.refObjId = refObjId;\n this.parentNode = null;\n }\n}\n\nclass StructTreePage {\n constructor(structTreeRoot, pageDict) {\n this.root = structTreeRoot;\n this.rootDict = structTreeRoot ? structTreeRoot.dict : null;\n this.pageDict = pageDict;\n this.nodes = [];\n }\n\n parse() {\n if (!this.root || !this.rootDict) {\n return;\n }\n\n const parentTree = this.rootDict.get(\"ParentTree\");\n if (!parentTree) {\n return;\n }\n const id = this.pageDict.get(\"StructParents\");\n if (!Number.isInteger(id)) {\n return;\n }\n const numberTree = new NumberTree(parentTree, this.rootDict.xref);\n const parentArray = numberTree.get(id);\n if (!Array.isArray(parentArray)) {\n return;\n }\n const map = new Map();\n for (const ref of parentArray) {\n if (ref instanceof Ref) {\n this.addNode(this.rootDict.xref.fetch(ref), map);\n }\n }\n }\n\n addNode(dict, map, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree MAX_DEPTH reached.\");\n return null;\n }\n\n if (map.has(dict)) {\n return map.get(dict);\n }\n\n const element = new StructElementNode(this, dict);\n map.set(dict, element);\n\n const parent = dict.get(\"P\");\n\n if (!parent || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n if (!this.addTopLevelNode(dict, element)) {\n map.delete(dict);\n }\n return element;\n }\n\n const parentNode = this.addNode(parent, map, level + 1);\n if (!parentNode) {\n return element;\n }\n let save = false;\n for (const kid of parentNode.kids) {\n if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\n kid.parentNode = element;\n save = true;\n }\n }\n if (!save) {\n map.delete(dict);\n }\n return element;\n }\n\n addTopLevelNode(dict, element) {\n const obj = this.rootDict.get(\"K\");\n if (!obj) {\n return false;\n }\n\n if (obj instanceof Dict) {\n if (obj.objId !== dict.objId) {\n return false;\n }\n this.nodes[0] = element;\n return true;\n }\n\n if (!Array.isArray(obj)) {\n return true;\n }\n let save = false;\n for (let i = 0; i < obj.length; i++) {\n const kidRef = obj[i];\n if (kidRef && kidRef.toString() === dict.objId) {\n this.nodes[i] = element;\n save = true;\n }\n }\n return save;\n }\n\n /**\n * Convert the tree structure into a simplifed object literal that can\n * be sent to the main thread.\n * @returns {Object}\n */\n get serializable() {\n function nodeToSerializable(node, parent, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree too deep to be fully serialized.\");\n return;\n }\n const obj = Object.create(null);\n obj.role = node.role;\n obj.children = [];\n parent.children.push(obj);\n const alt = node.dict.get(\"Alt\");\n if (typeof alt === \"string\") {\n obj.alt = stringToPDFString(alt);\n }\n const lang = node.dict.get(\"Lang\");\n if (typeof lang === \"string\") {\n obj.lang = stringToPDFString(lang);\n }\n\n for (const kid of node.kids) {\n const kidElement =\n kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\n if (kidElement) {\n nodeToSerializable(kidElement, obj, level + 1);\n continue;\n } else if (\n kid.type === StructElementType.PAGE_CONTENT ||\n kid.type === StructElementType.STREAM_CONTENT\n ) {\n obj.children.push({\n type: \"content\",\n id: `page${kid.pageObjId}_mcid${kid.mcid}`,\n });\n } else if (kid.type === StructElementType.OBJECT) {\n obj.children.push({\n type: \"object\",\n id: kid.refObjId,\n });\n }\n }\n }\n\n const root = Object.create(null);\n root.children = [];\n root.role = \"Root\";\n for (const child of this.nodes) {\n if (!child) {\n continue;\n }\n nodeToSerializable(child, root);\n }\n return root;\n }\n}\n\nexport { StructTreePage, StructTreeRoot };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction mayHaveChildren(value) {\n return (\n value instanceof Ref ||\n value instanceof Dict ||\n value instanceof BaseStream ||\n Array.isArray(value)\n );\n}\n\nfunction addChildren(node, nodesToVisit) {\n if (node instanceof Dict) {\n node = node.getRawValues();\n } else if (node instanceof BaseStream) {\n node = node.dict.getRawValues();\n } else if (!Array.isArray(node)) {\n return;\n }\n for (const rawValue of node) {\n if (mayHaveChildren(rawValue)) {\n nodesToVisit.push(rawValue);\n }\n }\n}\n\n/**\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\n * depth first and queues up any objects that have missing data. Once it has\n * has traversed as many objects that are available it attempts to bundle the\n * missing data requests and then resume from the nodes that weren't ready.\n *\n * NOTE: It provides protection from circular references by keeping track of\n * loaded references. However, you must be careful not to load any graphs\n * that have references to the catalog or other pages since that will cause the\n * entire PDF document object graph to be traversed.\n */\nclass ObjectLoader {\n constructor(dict, keys, xref) {\n this.dict = dict;\n this.keys = keys;\n this.xref = xref;\n this.refSet = null;\n }\n\n async load() {\n // Don't walk the graph if all the data is already loaded.\n if (this.xref.stream.isDataLoaded) {\n return undefined;\n }\n\n const { keys, dict } = this;\n this.refSet = new RefSet();\n // Setup the initial nodes to visit.\n const nodesToVisit = [];\n for (let i = 0, ii = keys.length; i < ii; i++) {\n const rawValue = dict.getRaw(keys[i]);\n // Skip nodes that are guaranteed to be empty.\n if (rawValue !== undefined) {\n nodesToVisit.push(rawValue);\n }\n }\n return this._walk(nodesToVisit);\n }\n\n async _walk(nodesToVisit) {\n const nodesToRevisit = [];\n const pendingRequests = [];\n // DFS walk of the object graph.\n while (nodesToVisit.length) {\n let currentNode = nodesToVisit.pop();\n\n // Only references or chunked streams can cause missing data exceptions.\n if (currentNode instanceof Ref) {\n // Skip nodes that have already been visited.\n if (this.refSet.has(currentNode)) {\n continue;\n }\n try {\n this.refSet.put(currentNode);\n currentNode = this.xref.fetch(currentNode);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n warn(`ObjectLoader._walk - requesting all data: \"${ex}\".`);\n this.refSet = null;\n\n const { manager } = this.xref.stream;\n return manager.requestAllChunks();\n }\n nodesToRevisit.push(currentNode);\n pendingRequests.push({ begin: ex.begin, end: ex.end });\n }\n }\n if (currentNode instanceof BaseStream) {\n const baseStreams = currentNode.getBaseStreams();\n if (baseStreams) {\n let foundMissingData = false;\n for (const stream of baseStreams) {\n if (stream.isDataLoaded) {\n continue;\n }\n foundMissingData = true;\n pendingRequests.push({ begin: stream.start, end: stream.end });\n }\n if (foundMissingData) {\n nodesToRevisit.push(currentNode);\n }\n }\n }\n\n addChildren(currentNode, nodesToVisit);\n }\n\n if (pendingRequests.length) {\n await this.xref.stream.manager.requestRanges(pendingRequests);\n\n for (const node of nodesToRevisit) {\n // Remove any reference nodes from the current `RefSet` so they\n // aren't skipped when we revist them.\n if (node instanceof Ref) {\n this.refSet.remove(node);\n }\n }\n return this._walk(nodesToRevisit);\n }\n // Everything is loaded.\n this.refSet = null;\n return undefined;\n }\n}\n\nexport { ObjectLoader };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, escapeString, warn } from \"../shared/util.js\";\nimport { Dict, Name, Ref } from \"./primitives.js\";\nimport { escapePDFName, parseXFAPath } from \"./core_utils.js\";\nimport { SimpleDOMNode, SimpleXMLParser } from \"./xml_parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\n\nfunction writeDict(dict, buffer, transform) {\n buffer.push(\"<<\");\n for (const key of dict.getKeys()) {\n buffer.push(` /${escapePDFName(key)} `);\n writeValue(dict.getRaw(key), buffer, transform);\n }\n buffer.push(\">>\");\n}\n\nfunction writeStream(stream, buffer, transform) {\n writeDict(stream.dict, buffer, transform);\n buffer.push(\" stream\\n\");\n let string = stream.getString();\n if (transform !== null) {\n string = transform.encryptString(string);\n }\n buffer.push(string, \"\\nendstream\\n\");\n}\n\nfunction writeArray(array, buffer, transform) {\n buffer.push(\"[\");\n let first = true;\n for (const val of array) {\n if (!first) {\n buffer.push(\" \");\n } else {\n first = false;\n }\n writeValue(val, buffer, transform);\n }\n buffer.push(\"]\");\n}\n\nfunction numberToString(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n const roundedValue = Math.round(value * 100);\n if (roundedValue % 100 === 0) {\n return (roundedValue / 100).toString();\n }\n\n if (roundedValue % 10 === 0) {\n return value.toFixed(1);\n }\n\n return value.toFixed(2);\n}\n\nfunction writeValue(value, buffer, transform) {\n if (value instanceof Name) {\n buffer.push(`/${escapePDFName(value.name)}`);\n } else if (value instanceof Ref) {\n buffer.push(`${value.num} ${value.gen} R`);\n } else if (Array.isArray(value)) {\n writeArray(value, buffer, transform);\n } else if (typeof value === \"string\") {\n if (transform !== null) {\n value = transform.encryptString(value);\n }\n buffer.push(`(${escapeString(value)})`);\n } else if (typeof value === \"number\") {\n buffer.push(numberToString(value));\n } else if (typeof value === \"boolean\") {\n buffer.push(value.toString());\n } else if (value instanceof Dict) {\n writeDict(value, buffer, transform);\n } else if (value instanceof BaseStream) {\n writeStream(value, buffer, transform);\n } else if (value === null) {\n buffer.push(\"null\");\n } else {\n warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\n }\n}\n\nfunction writeInt(number, size, offset, buffer) {\n for (let i = size + offset - 1; i > offset - 1; i--) {\n buffer[i] = number & 0xff;\n number >>= 8;\n }\n return offset + size;\n}\n\nfunction writeString(string, offset, buffer) {\n for (let i = 0, len = string.length; i < len; i++) {\n buffer[offset + i] = string.charCodeAt(i) & 0xff;\n }\n}\n\nfunction computeMD5(filesize, xrefInfo) {\n const time = Math.floor(Date.now() / 1000);\n const filename = xrefInfo.filename || \"\";\n const md5Buffer = [time.toString(), filename, filesize.toString()];\n let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\n for (const value of Object.values(xrefInfo.info)) {\n md5Buffer.push(value);\n md5BufferLen += value.length;\n }\n\n const array = new Uint8Array(md5BufferLen);\n let offset = 0;\n for (const str of md5Buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n return bytesToString(calculateMD5(array));\n}\n\nfunction writeXFADataForAcroform(str, newRefs) {\n const xml = new SimpleXMLParser({ hasAttributes: true }).parseFromString(str);\n\n for (const { xfa } of newRefs) {\n if (!xfa) {\n continue;\n }\n const { path, value } = xfa;\n if (!path) {\n continue;\n }\n const node = xml.documentElement.searchNode(parseXFAPath(path), 0);\n if (node) {\n node.childNodes = [new SimpleDOMNode(\"#text\", value)];\n } else {\n warn(`Node not found for path: ${path}`);\n }\n }\n const buffer = [];\n xml.documentElement.dump(buffer);\n return buffer.join(\"\");\n}\n\nfunction updateXFA({\n xfaData,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n newRefs,\n xref,\n xrefInfo,\n}) {\n if (xref === null) {\n return;\n }\n\n if (!hasXfaDatasetsEntry) {\n if (!acroFormRef) {\n warn(\"XFA - Cannot save it\");\n return;\n }\n\n // We've a XFA array which doesn't contain a datasets entry.\n // So we'll update the AcroForm dictionary to have an XFA containing\n // the datasets.\n const oldXfa = acroForm.get(\"XFA\");\n const newXfa = oldXfa.slice();\n newXfa.splice(2, 0, \"datasets\");\n newXfa.splice(3, 0, xfaDatasetsRef);\n\n acroForm.set(\"XFA\", newXfa);\n\n const encrypt = xref.encrypt;\n let transform = null;\n if (encrypt) {\n transform = encrypt.createCipherTransform(\n acroFormRef.num,\n acroFormRef.gen\n );\n }\n\n const buffer = [`${acroFormRef.num} ${acroFormRef.gen} obj\\n`];\n writeDict(acroForm, buffer, transform);\n buffer.push(\"\\n\");\n\n acroForm.set(\"XFA\", oldXfa);\n\n newRefs.push({ ref: acroFormRef, data: buffer.join(\"\") });\n }\n\n if (xfaData === null) {\n const datasets = xref.fetchIfRef(xfaDatasetsRef);\n xfaData = writeXFADataForAcroform(datasets.getString(), newRefs);\n }\n\n const encrypt = xref.encrypt;\n if (encrypt) {\n const transform = encrypt.createCipherTransform(\n xfaDatasetsRef.num,\n xfaDatasetsRef.gen\n );\n xfaData = transform.encryptString(xfaData);\n }\n const data =\n `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\\n` +\n `<< /Type /EmbeddedFile /Length ${xfaData.length}>>\\nstream\\n` +\n xfaData +\n \"\\nendstream\\nendobj\\n\";\n\n newRefs.push({ ref: xfaDatasetsRef, data });\n}\n\nfunction incrementalUpdate({\n originalData,\n xrefInfo,\n newRefs,\n xref = null,\n hasXfa = false,\n xfaDatasetsRef = null,\n hasXfaDatasetsEntry = false,\n acroFormRef = null,\n acroForm = null,\n xfaData = null,\n}) {\n if (hasXfa) {\n updateXFA({\n xfaData,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n newRefs,\n xref,\n xrefInfo,\n });\n }\n\n const newXref = new Dict(null);\n const refForXrefTable = xrefInfo.newRef;\n\n let buffer, baseOffset;\n const lastByte = originalData[originalData.length - 1];\n if (lastByte === /* \\n */ 0x0a || lastByte === /* \\r */ 0x0d) {\n buffer = [];\n baseOffset = originalData.length;\n } else {\n // Avoid to concatenate %%EOF with an object definition\n buffer = [\"\\n\"];\n baseOffset = originalData.length + 1;\n }\n\n newXref.set(\"Size\", refForXrefTable.num + 1);\n newXref.set(\"Prev\", xrefInfo.startXRef);\n newXref.set(\"Type\", Name.get(\"XRef\"));\n\n if (xrefInfo.rootRef !== null) {\n newXref.set(\"Root\", xrefInfo.rootRef);\n }\n if (xrefInfo.infoRef !== null) {\n newXref.set(\"Info\", xrefInfo.infoRef);\n }\n if (xrefInfo.encryptRef !== null) {\n newXref.set(\"Encrypt\", xrefInfo.encryptRef);\n }\n\n // Add a ref for the new xref and sort them\n newRefs.push({ ref: refForXrefTable, data: \"\" });\n newRefs = newRefs.sort((a, b) => {\n // compare the refs\n return a.ref.num - b.ref.num;\n });\n\n const xrefTableData = [[0, 1, 0xffff]];\n const indexes = [0, 1];\n let maxOffset = 0;\n for (const { ref, data } of newRefs) {\n maxOffset = Math.max(maxOffset, baseOffset);\n xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);\n baseOffset += data.length;\n indexes.push(ref.num, 1);\n buffer.push(data);\n }\n\n newXref.set(\"Index\", indexes);\n\n if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\n const md5 = computeMD5(baseOffset, xrefInfo);\n newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n }\n\n const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);\n const sizes = [1, offsetSize, 2];\n const structSize = sizes[0] + sizes[1] + sizes[2];\n const tableLength = structSize * xrefTableData.length;\n newXref.set(\"W\", sizes);\n newXref.set(\"Length\", tableLength);\n\n buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\\n`);\n writeDict(newXref, buffer, null);\n buffer.push(\" stream\\n\");\n\n const bufferLen = buffer.reduce((a, str) => a + str.length, 0);\n const footer = `\\nendstream\\nendobj\\nstartxref\\n${baseOffset}\\n%%EOF\\n`;\n const array = new Uint8Array(\n originalData.length + bufferLen + tableLength + footer.length\n );\n\n // Original data\n array.set(originalData);\n let offset = originalData.length;\n\n // New data\n for (const str of buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n\n // New xref table\n for (const [type, objOffset, gen] of xrefTableData) {\n offset = writeInt(type, sizes[0], offset, array);\n offset = writeInt(objOffset, sizes[1], offset, array);\n offset = writeInt(gen, sizes[2], offset, array);\n }\n\n // Add the footer\n writeString(footer, offset, array);\n\n return array;\n}\n\nexport { incrementalUpdate, writeDict };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FormatError,\n isArrayEqual,\n PasswordException,\n PasswordResponses,\n stringToBytes,\n unreachable,\n utf8StringToString,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, Name } from \"./primitives.js\";\nimport { DecryptStream } from \"./decrypt_stream.js\";\n\nclass ARCFourCipher {\n constructor(key) {\n this.a = 0;\n this.b = 0;\n const s = new Uint8Array(256);\n const keyLength = key.length;\n\n for (let i = 0; i < 256; ++i) {\n s[i] = i;\n }\n for (let i = 0, j = 0; i < 256; ++i) {\n const tmp = s[i];\n j = (j + tmp + key[i % keyLength]) & 0xff;\n s[i] = s[j];\n s[j] = tmp;\n }\n this.s = s;\n }\n\n encryptBlock(data) {\n let a = this.a,\n b = this.b;\n const s = this.s;\n const n = data.length;\n const output = new Uint8Array(n);\n for (let i = 0; i < n; ++i) {\n a = (a + 1) & 0xff;\n const tmp = s[a];\n b = (b + tmp) & 0xff;\n const tmp2 = s[b];\n s[a] = tmp2;\n s[b] = tmp;\n output[i] = data[i] ^ s[(tmp + tmp2) & 0xff];\n }\n this.a = a;\n this.b = b;\n return output;\n }\n\n decryptBlock(data) {\n return this.encryptBlock(data);\n }\n\n encrypt(data) {\n return this.encryptBlock(data);\n }\n}\n\nconst calculateMD5 = (function calculateMD5Closure() {\n const r = new Uint8Array([\n 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5,\n 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11,\n 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10,\n 15, 21,\n ]);\n\n const k = new Int32Array([\n -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\n -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\n 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n 643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\n 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\n 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\n -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\n -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\n -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\n -145523070, -1120210379, 718787259, -343485551,\n ]);\n\n function hash(data, offset, length) {\n let h0 = 1732584193,\n h1 = -271733879,\n h2 = -1732584194,\n h3 = 271733878;\n // pre-processing\n const paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = (length << 3) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n const w = new Int32Array(16);\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j, i += 4) {\n w[j] =\n padded[i] |\n (padded[i + 1] << 8) |\n (padded[i + 2] << 16) |\n (padded[i + 3] << 24);\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n f,\n g;\n for (j = 0; j < 64; ++j) {\n if (j < 16) {\n f = (b & c) | (~b & d);\n g = j;\n } else if (j < 32) {\n f = (d & b) | (~d & c);\n g = (5 * j + 1) & 15;\n } else if (j < 48) {\n f = b ^ c ^ d;\n g = (3 * j + 5) & 15;\n } else {\n f = c ^ (b | ~d);\n g = (7 * j) & 15;\n }\n const tmp = d,\n rotateArg = (a + f + k[j] + w[g]) | 0,\n rotate = r[j];\n d = c;\n c = b;\n b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;\n a = tmp;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n }\n // prettier-ignore\n return new Uint8Array([\n h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n ]);\n }\n\n return hash;\n})();\n\nclass Word64 {\n constructor(highInteger, lowInteger) {\n this.high = highInteger | 0;\n this.low = lowInteger | 0;\n }\n\n and(word) {\n this.high &= word.high;\n this.low &= word.low;\n }\n\n xor(word) {\n this.high ^= word.high;\n this.low ^= word.low;\n }\n\n or(word) {\n this.high |= word.high;\n this.low |= word.low;\n }\n\n shiftRight(places) {\n if (places >= 32) {\n this.low = (this.high >>> (places - 32)) | 0;\n this.high = 0;\n } else {\n this.low = (this.low >>> places) | (this.high << (32 - places));\n this.high = (this.high >>> places) | 0;\n }\n }\n\n shiftLeft(places) {\n if (places >= 32) {\n this.high = this.low << (places - 32);\n this.low = 0;\n } else {\n this.high = (this.high << places) | (this.low >>> (32 - places));\n this.low <<= places;\n }\n }\n\n rotateRight(places) {\n let low, high;\n if (places & 32) {\n high = this.low;\n low = this.high;\n } else {\n low = this.low;\n high = this.high;\n }\n places &= 31;\n this.low = (low >>> places) | (high << (32 - places));\n this.high = (high >>> places) | (low << (32 - places));\n }\n\n not() {\n this.high = ~this.high;\n this.low = ~this.low;\n }\n\n add(word) {\n const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n let highAdd = (this.high >>> 0) + (word.high >>> 0);\n if (lowAdd > 0xffffffff) {\n highAdd += 1;\n }\n this.low = lowAdd | 0;\n this.high = highAdd | 0;\n }\n\n copyTo(bytes, offset) {\n bytes[offset] = (this.high >>> 24) & 0xff;\n bytes[offset + 1] = (this.high >> 16) & 0xff;\n bytes[offset + 2] = (this.high >> 8) & 0xff;\n bytes[offset + 3] = this.high & 0xff;\n bytes[offset + 4] = (this.low >>> 24) & 0xff;\n bytes[offset + 5] = (this.low >> 16) & 0xff;\n bytes[offset + 6] = (this.low >> 8) & 0xff;\n bytes[offset + 7] = this.low & 0xff;\n }\n\n assign(word) {\n this.high = word.high;\n this.low = word.low;\n }\n}\n\nconst calculateSHA256 = (function calculateSHA256Closure() {\n function rotr(x, n) {\n return (x >>> n) | (x << (32 - n));\n }\n\n function ch(x, y, z) {\n return (x & y) ^ (~x & z);\n }\n\n function maj(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n }\n\n function sigma(x) {\n return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n }\n\n function sigmaPrime(x) {\n return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n }\n\n function littleSigma(x) {\n return rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\n }\n\n function littleSigmaPrime(x) {\n return rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);\n }\n\n const k = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,\n 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\n 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,\n 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\n 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n ];\n\n function hash(data, offset, length) {\n // initial hash values\n let h0 = 0x6a09e667,\n h1 = 0xbb67ae85,\n h2 = 0x3c6ef372,\n h3 = 0xa54ff53a,\n h4 = 0x510e527f,\n h5 = 0x9b05688c,\n h6 = 0x1f83d9ab,\n h7 = 0x5be0cd19;\n // pre-processing\n const paddedLength = Math.ceil((length + 9) / 64) * 64;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length << 3) & 0xff;\n const w = new Uint32Array(64);\n // for each 512 bit block\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j) {\n w[j] =\n (padded[i] << 24) |\n (padded[i + 1] << 16) |\n (padded[i + 2] << 8) |\n padded[i + 3];\n i += 4;\n }\n\n for (j = 16; j < 64; ++j) {\n w[j] =\n (littleSigmaPrime(w[j - 2]) +\n w[j - 7] +\n littleSigma(w[j - 15]) +\n w[j - 16]) |\n 0;\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n e = h4,\n f = h5,\n g = h6,\n h = h7,\n t1,\n t2;\n for (j = 0; j < 64; ++j) {\n t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n t2 = sigma(a) + maj(a, b, c);\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n }\n // prettier-ignore\n return new Uint8Array([\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\n (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n ]);\n }\n\n return hash;\n})();\n\nconst calculateSHA512 = (function calculateSHA512Closure() {\n function ch(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.not();\n tmp.and(z);\n result.xor(tmp);\n }\n\n function maj(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.and(z);\n result.xor(tmp);\n tmp.assign(y);\n tmp.and(z);\n result.xor(tmp);\n }\n\n function sigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(28);\n tmp.assign(x);\n tmp.rotateRight(34);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(39);\n result.xor(tmp);\n }\n\n function sigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(14);\n tmp.assign(x);\n tmp.rotateRight(18);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(41);\n result.xor(tmp);\n }\n\n function littleSigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(1);\n tmp.assign(x);\n tmp.rotateRight(8);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(7);\n result.xor(tmp);\n }\n\n function littleSigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(19);\n tmp.assign(x);\n tmp.rotateRight(61);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(6);\n result.xor(tmp);\n }\n\n // prettier-ignore\n const k = [\n new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\n new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\n new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\n new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\n new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\n new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\n new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\n new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\n new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\n new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\n new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\n new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\n new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\n new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\n new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\n new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\n new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\n new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\n new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\n new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\n new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\n new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\n new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\n new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\n new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\n new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\n new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\n new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\n new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\n new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\n new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\n new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\n new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\n new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\n new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\n new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\n new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\n new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\n new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\n new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n function hash(data, offset, length, mode384 = false) {\n // initial hash values\n let h0, h1, h2, h3, h4, h5, h6, h7;\n if (!mode384) {\n h0 = new Word64(0x6a09e667, 0xf3bcc908);\n h1 = new Word64(0xbb67ae85, 0x84caa73b);\n h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n h4 = new Word64(0x510e527f, 0xade682d1);\n h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n h7 = new Word64(0x5be0cd19, 0x137e2179);\n } else {\n // SHA384 is exactly the same\n // except with different starting values and a trimmed result\n h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n h1 = new Word64(0x629a292a, 0x367cd507);\n h2 = new Word64(0x9159015a, 0x3070dd17);\n h3 = new Word64(0x152fecd8, 0xf70e5939);\n h4 = new Word64(0x67332667, 0xffc00b31);\n h5 = new Word64(0x8eb44a87, 0x68581511);\n h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n }\n\n // pre-processing\n const paddedLength = Math.ceil((length + 17) / 128) * 128;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 16;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length << 3) & 0xff;\n\n const w = new Array(80);\n for (i = 0; i < 80; i++) {\n w[i] = new Word64(0, 0);\n }\n let a = new Word64(0, 0),\n b = new Word64(0, 0),\n c = new Word64(0, 0);\n let d = new Word64(0, 0),\n e = new Word64(0, 0),\n f = new Word64(0, 0);\n let g = new Word64(0, 0),\n h = new Word64(0, 0);\n const t1 = new Word64(0, 0),\n t2 = new Word64(0, 0);\n const tmp1 = new Word64(0, 0),\n tmp2 = new Word64(0, 0);\n let tmp3;\n\n // for each 1024 bit block\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j) {\n w[j].high =\n (padded[i] << 24) |\n (padded[i + 1] << 16) |\n (padded[i + 2] << 8) |\n padded[i + 3];\n w[j].low =\n (padded[i + 4] << 24) |\n (padded[i + 5] << 16) |\n (padded[i + 6] << 8) |\n padded[i + 7];\n i += 8;\n }\n for (j = 16; j < 80; ++j) {\n tmp3 = w[j];\n littleSigmaPrime(tmp3, w[j - 2], tmp2);\n tmp3.add(w[j - 7]);\n littleSigma(tmp1, w[j - 15], tmp2);\n tmp3.add(tmp1);\n tmp3.add(w[j - 16]);\n }\n\n a.assign(h0);\n b.assign(h1);\n c.assign(h2);\n d.assign(h3);\n e.assign(h4);\n f.assign(h5);\n g.assign(h6);\n h.assign(h7);\n for (j = 0; j < 80; ++j) {\n t1.assign(h);\n sigmaPrime(tmp1, e, tmp2);\n t1.add(tmp1);\n ch(tmp1, e, f, g, tmp2);\n t1.add(tmp1);\n t1.add(k[j]);\n t1.add(w[j]);\n\n sigma(t2, a, tmp2);\n maj(tmp1, a, b, c, tmp2);\n t2.add(tmp1);\n\n tmp3 = h;\n h = g;\n g = f;\n f = e;\n d.add(t1);\n e = d;\n d = c;\n c = b;\n b = a;\n tmp3.assign(t1);\n tmp3.add(t2);\n a = tmp3;\n }\n h0.add(a);\n h1.add(b);\n h2.add(c);\n h3.add(d);\n h4.add(e);\n h5.add(f);\n h6.add(g);\n h7.add(h);\n }\n\n let result;\n if (!mode384) {\n result = new Uint8Array(64);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n h6.copyTo(result, 48);\n h7.copyTo(result, 56);\n } else {\n result = new Uint8Array(48);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n }\n return result;\n }\n\n return hash;\n})();\n\nfunction calculateSHA384(data, offset, length) {\n return calculateSHA512(data, offset, length, /* mode384 = */ true);\n}\n\nclass NullCipher {\n decryptBlock(data) {\n return data;\n }\n\n encrypt(data) {\n return data;\n }\n}\n\nclass AESBaseCipher {\n constructor() {\n if (this.constructor === AESBaseCipher) {\n unreachable(\"Cannot initialize AESBaseCipher.\");\n }\n\n this._s = new Uint8Array([\n 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n 0xb0, 0x54, 0xbb, 0x16,\n ]);\n\n this._inv_s = new Uint8Array([\n 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n 0x55, 0x21, 0x0c, 0x7d,\n ]);\n\n this._mix = new Uint32Array([\n 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\n ]);\n\n this._mixCol = new Uint8Array(256);\n for (let i = 0; i < 256; i++) {\n if (i < 128) {\n this._mixCol[i] = i << 1;\n } else {\n this._mixCol[i] = (i << 1) ^ 0x1b;\n }\n }\n\n this.buffer = new Uint8Array(16);\n this.bufferPosition = 0;\n }\n\n _expandKey(cipherKey) {\n unreachable(\"Cannot call `_expandKey` on the base class\");\n }\n\n _decrypt(input, key) {\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n\n // AddRoundKey\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n // InvSubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = this._inv_s[state[j]];\n }\n // AddRoundKey\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n // InvMixColumns\n for (let j = 0; j < 16; j += 4) {\n const s0 = this._mix[state[j]];\n const s1 = this._mix[state[j + 1]];\n const s2 = this._mix[state[j + 2]];\n const s3 = this._mix[state[j + 3]];\n t =\n s0 ^\n (s1 >>> 8) ^\n (s1 << 24) ^\n (s2 >>> 16) ^\n (s2 << 16) ^\n (s3 >>> 24) ^\n (s3 << 8);\n state[j] = (t >>> 24) & 0xff;\n state[j + 1] = (t >> 16) & 0xff;\n state[j + 2] = (t >> 8) & 0xff;\n state[j + 3] = t & 0xff;\n }\n }\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n for (let j = 0; j < 16; ++j) {\n // InvSubBytes\n state[j] = this._inv_s[state[j]];\n // AddRoundKey\n state[j] ^= key[j];\n }\n return state;\n }\n\n _encrypt(input, key) {\n const s = this._s;\n\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n\n for (let j = 0; j < 16; ++j) {\n // AddRoundKey\n state[j] ^= key[j];\n }\n\n for (let i = 1; i < this._cyclesOfRepetition; i++) {\n // SubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // MixColumns\n for (let j = 0; j < 16; j += 4) {\n const s0 = state[j + 0];\n const s1 = state[j + 1];\n const s2 = state[j + 2];\n const s3 = state[j + 3];\n t = s0 ^ s1 ^ s2 ^ s3;\n state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n }\n // AddRoundKey\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n }\n\n // SubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // AddRoundKey\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n return state;\n }\n\n _decryptBlock2(data, finalize) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n let iv = this.iv;\n\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n // buffer is full, decrypting\n const plain = this._decrypt(buffer, this._key);\n // xor-ing the IV vector to get plain text\n for (let j = 0; j < 16; ++j) {\n plain[j] ^= iv[j];\n }\n iv = buffer;\n result.push(plain);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n // combining plain text blocks into one\n let outputLength = 16 * result.length;\n if (finalize) {\n // undo a padding that is described in RFC 2898\n const lastBlock = result[result.length - 1];\n let psLen = lastBlock[15];\n if (psLen <= 16) {\n for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n if (lastBlock[i] !== psLen) {\n // Invalid padding, assume that the block has no padding.\n psLen = 0;\n break;\n }\n }\n outputLength -= psLen;\n result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n }\n }\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n\n decryptBlock(data, finalize, iv = null) {\n const sourceLength = data.length;\n const buffer = this.buffer;\n let bufferLength = this.bufferPosition;\n // If an IV is not supplied, wait for IV values. They are at the start\n // of the stream.\n if (iv) {\n this.iv = iv;\n } else {\n for (\n let i = 0;\n bufferLength < 16 && i < sourceLength;\n ++i, ++bufferLength\n ) {\n buffer[bufferLength] = data[i];\n }\n if (bufferLength < 16) {\n // Need more data.\n this.bufferLength = bufferLength;\n return new Uint8Array(0);\n }\n this.iv = buffer;\n data = data.subarray(16);\n }\n this.buffer = new Uint8Array(16);\n this.bufferLength = 0;\n // starting decryption\n this.decryptBlock = this._decryptBlock2;\n return this.decryptBlock(data, finalize);\n }\n\n encrypt(data, iv) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n\n if (!iv) {\n iv = new Uint8Array(16);\n }\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n\n for (let j = 0; j < 16; ++j) {\n buffer[j] ^= iv[j];\n }\n\n // buffer is full, encrypting\n const cipher = this._encrypt(buffer, this._key);\n iv = cipher;\n result.push(cipher);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n // combining plain text blocks into one\n const outputLength = 16 * result.length;\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n}\n\nclass AES128Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n\n this._cyclesOfRepetition = 10;\n this._keySize = 160; // bits\n\n this._rcon = new Uint8Array([\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d,\n ]);\n\n this._key = this._expandKey(key);\n }\n\n _expandKey(cipherKey) {\n const b = 176;\n const s = this._s;\n const rcon = this._rcon;\n\n const result = new Uint8Array(b);\n result.set(cipherKey);\n\n for (let j = 16, i = 1; j < b; ++i) {\n // RotWord\n let t1 = result[j - 3];\n let t2 = result[j - 2];\n let t3 = result[j - 1];\n let t4 = result[j - 4];\n // SubWord\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n // Rcon\n t1 ^= rcon[i];\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 16];\n j++;\n result[j] = t2 ^= result[j - 16];\n j++;\n result[j] = t3 ^= result[j - 16];\n j++;\n result[j] = t4 ^= result[j - 16];\n j++;\n }\n }\n return result;\n }\n}\n\nclass AES256Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n\n this._cyclesOfRepetition = 14;\n this._keySize = 224; // bits\n\n this._key = this._expandKey(key);\n }\n\n _expandKey(cipherKey) {\n const b = 240;\n const s = this._s;\n\n const result = new Uint8Array(b);\n result.set(cipherKey);\n\n let r = 1;\n let t1, t2, t3, t4;\n for (let j = 32, i = 1; j < b; ++i) {\n if (j % 32 === 16) {\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n } else if (j % 32 === 0) {\n // RotWord\n t1 = result[j - 3];\n t2 = result[j - 2];\n t3 = result[j - 1];\n t4 = result[j - 4];\n // SubWord\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n // Rcon\n t1 ^= r;\n if ((r <<= 1) >= 256) {\n r = (r ^ 0x1b) & 0xff;\n }\n }\n\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 32];\n j++;\n result[j] = t2 ^= result[j - 32];\n j++;\n result[j] = t3 ^= result[j - 32];\n j++;\n result[j] = t4 ^= result[j - 32];\n j++;\n }\n }\n return result;\n }\n}\n\nclass PDF17 {\n checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n const result = calculateSHA256(hashData, 0, hashData.length);\n return isArrayEqual(result, ownerPassword);\n }\n\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = calculateSHA256(hashData, 0, hashData.length);\n return isArrayEqual(result, userPassword);\n }\n\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n const key = calculateSHA256(hashData, 0, hashData.length);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n\n getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n // `key` is the decryption key for the UE string.\n const key = calculateSHA256(hashData, 0, hashData.length);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n}\n\nconst PDF20 = (function PDF20Closure() {\n function calculatePDF20Hash(password, input, userBytes) {\n // This refers to Algorithm 2.B as defined in ISO 32000-2.\n let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n let e = [0];\n let i = 0;\n while (i < 64 || e[e.length - 1] > i - 32) {\n const combinedLength = password.length + k.length + userBytes.length,\n combinedArray = new Uint8Array(combinedLength);\n let writeOffset = 0;\n combinedArray.set(password, writeOffset);\n writeOffset += password.length;\n combinedArray.set(k, writeOffset);\n writeOffset += k.length;\n combinedArray.set(userBytes, writeOffset);\n\n const k1 = new Uint8Array(combinedLength * 64);\n for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) {\n k1.set(combinedArray, pos);\n }\n // AES128 CBC NO PADDING with first 16 bytes of k as the key\n // and the second 16 as the iv.\n const cipher = new AES128Cipher(k.subarray(0, 16));\n e = cipher.encrypt(k1, k.subarray(16, 32));\n // Now we have to take the first 16 bytes of an unsigned big endian\n // integer and compute the remainder modulo 3. That is a fairly large\n // number and JavaScript isn't going to handle that well, so we're using\n // a trick that allows us to perform modulo math byte by byte.\n let remainder = 0;\n for (let z = 0; z < 16; z++) {\n remainder *= 256 % 3;\n remainder %= 3;\n remainder += (e[z] >>> 0) % 3;\n remainder %= 3;\n }\n if (remainder === 0) {\n k = calculateSHA256(e, 0, e.length);\n } else if (remainder === 1) {\n k = calculateSHA384(e, 0, e.length);\n } else if (remainder === 2) {\n k = calculateSHA512(e, 0, e.length);\n }\n i++;\n }\n return k.subarray(0, 32);\n }\n\n // eslint-disable-next-line no-shadow\n class PDF20 {\n hash(password, concatBytes, userBytes) {\n return calculatePDF20Hash(password, concatBytes, userBytes);\n }\n\n checkOwnerPassword(\n password,\n ownerValidationSalt,\n userBytes,\n ownerPassword\n ) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n const result = calculatePDF20Hash(password, hashData, userBytes);\n return isArrayEqual(result, ownerPassword);\n }\n\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = calculatePDF20Hash(password, hashData, []);\n return isArrayEqual(result, userPassword);\n }\n\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n const key = calculatePDF20Hash(password, hashData, userBytes);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n\n getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n // `key` is the decryption key for the UE string.\n const key = calculatePDF20Hash(password, hashData, []);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n }\n\n return PDF20;\n})();\n\nclass CipherTransform {\n constructor(stringCipherConstructor, streamCipherConstructor) {\n this.StringCipherConstructor = stringCipherConstructor;\n this.StreamCipherConstructor = streamCipherConstructor;\n }\n\n createStream(stream, length) {\n const cipher = new this.StreamCipherConstructor();\n return new DecryptStream(\n stream,\n length,\n function cipherTransformDecryptStream(data, finalize) {\n return cipher.decryptBlock(data, finalize);\n }\n );\n }\n\n decryptString(s) {\n const cipher = new this.StringCipherConstructor();\n let data = stringToBytes(s);\n data = cipher.decryptBlock(data, true);\n return bytesToString(data);\n }\n\n encryptString(s) {\n const cipher = new this.StringCipherConstructor();\n if (cipher instanceof AESBaseCipher) {\n // Append some chars equal to \"16 - (M mod 16)\"\n // where M is the string length (see section 7.6.2 in PDF specification)\n // to have a final string where the length is a multiple of 16.\n // Special note:\n // \"Note that the pad is present when M is evenly divisible by 16;\n // it contains 16 bytes of 0x10.\"\n const strLen = s.length;\n const pad = 16 - (strLen % 16);\n s += String.fromCharCode(pad).repeat(pad);\n\n // Generate an initialization vector\n const iv = new Uint8Array(16);\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(iv);\n } else {\n for (let i = 0; i < 16; i++) {\n iv[i] = Math.floor(256 * Math.random());\n }\n }\n\n let data = stringToBytes(s);\n data = cipher.encrypt(data, iv);\n\n const buf = new Uint8Array(16 + data.length);\n buf.set(iv);\n buf.set(data, 16);\n\n return bytesToString(buf);\n }\n\n let data = stringToBytes(s);\n data = cipher.encrypt(data);\n return bytesToString(data);\n }\n}\n\nconst CipherTransformFactory = (function CipherTransformFactoryClosure() {\n const defaultPasswordBytes = new Uint8Array([\n 0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56,\n 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80,\n 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a,\n ]);\n\n function createEncryptionKey20(\n revision,\n password,\n ownerPassword,\n ownerValidationSalt,\n ownerKeySalt,\n uBytes,\n userPassword,\n userValidationSalt,\n userKeySalt,\n ownerEncryption,\n userEncryption,\n perms\n ) {\n if (password) {\n const passwordLength = Math.min(127, password.length);\n password = password.subarray(0, passwordLength);\n } else {\n password = [];\n }\n let pdfAlgorithm;\n if (revision === 6) {\n pdfAlgorithm = new PDF20();\n } else {\n pdfAlgorithm = new PDF17();\n }\n\n if (\n pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)\n ) {\n return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n } else if (\n password.length &&\n pdfAlgorithm.checkOwnerPassword(\n password,\n ownerValidationSalt,\n uBytes,\n ownerPassword\n )\n ) {\n return pdfAlgorithm.getOwnerKey(\n password,\n ownerKeySalt,\n uBytes,\n ownerEncryption\n );\n }\n\n return null;\n }\n\n function prepareKeyData(\n fileId,\n password,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n ) {\n const hashDataSize = 40 + ownerPassword.length + fileId.length;\n const hashData = new Uint8Array(hashDataSize);\n let i = 0,\n j,\n n;\n if (password) {\n n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n }\n j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n // as now the padded password in the hashData[0..i]\n for (j = 0, n = ownerPassword.length; j < n; ++j) {\n hashData[i++] = ownerPassword[j];\n }\n hashData[i++] = flags & 0xff;\n hashData[i++] = (flags >> 8) & 0xff;\n hashData[i++] = (flags >> 16) & 0xff;\n hashData[i++] = (flags >>> 24) & 0xff;\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n if (revision >= 4 && !encryptMetadata) {\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, keyLengthInBytes);\n }\n }\n const encryptionKey = hash.subarray(0, keyLengthInBytes);\n let cipher, checkData;\n\n if (revision >= 3) {\n for (i = 0; i < 32; ++i) {\n hashData[i] = defaultPasswordBytes[i];\n }\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n n = encryptionKey.length;\n const derivedKey = new Uint8Array(n);\n for (j = 1; j <= 19; ++j) {\n for (let k = 0; k < n; ++k) {\n derivedKey[k] = encryptionKey[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n checkData = cipher.encryptBlock(checkData);\n }\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n } else {\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(defaultPasswordBytes);\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n }\n return encryptionKey;\n }\n\n function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n const hashData = new Uint8Array(32);\n let i = 0;\n const n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n let j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, hash.length);\n }\n }\n\n let cipher, userPassword;\n if (revision >= 3) {\n userPassword = ownerPassword;\n const derivedKey = new Uint8Array(keyLengthInBytes);\n for (j = 19; j >= 0; j--) {\n for (let k = 0; k < keyLengthInBytes; ++k) {\n derivedKey[k] = hash[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n userPassword = cipher.encryptBlock(userPassword);\n }\n } else {\n cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n userPassword = cipher.encryptBlock(ownerPassword);\n }\n return userPassword;\n }\n\n const identityName = Name.get(\"Identity\");\n\n function buildObjectKey(num, gen, encryptionKey, isAes = false) {\n const key = new Uint8Array(encryptionKey.length + 9);\n const n = encryptionKey.length;\n let i;\n for (i = 0; i < n; ++i) {\n key[i] = encryptionKey[i];\n }\n key[i++] = num & 0xff;\n key[i++] = (num >> 8) & 0xff;\n key[i++] = (num >> 16) & 0xff;\n key[i++] = gen & 0xff;\n key[i++] = (gen >> 8) & 0xff;\n if (isAes) {\n key[i++] = 0x73;\n key[i++] = 0x41;\n key[i++] = 0x6c;\n key[i++] = 0x54;\n }\n const hash = calculateMD5(key, 0, i);\n return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n }\n\n function buildCipherConstructor(cf, name, num, gen, key) {\n if (!(name instanceof Name)) {\n throw new FormatError(\"Invalid crypt filter name.\");\n }\n const cryptFilter = cf.get(name.name);\n let cfm;\n if (cryptFilter !== null && cryptFilter !== undefined) {\n cfm = cryptFilter.get(\"CFM\");\n }\n if (!cfm || cfm.name === \"None\") {\n return function cipherTransformFactoryBuildCipherConstructorNone() {\n return new NullCipher();\n };\n }\n if (cfm.name === \"V2\") {\n return function cipherTransformFactoryBuildCipherConstructorV2() {\n return new ARCFourCipher(\n buildObjectKey(num, gen, key, /* isAes = */ false)\n );\n };\n }\n if (cfm.name === \"AESV2\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n return new AES128Cipher(\n buildObjectKey(num, gen, key, /* isAes = */ true)\n );\n };\n }\n if (cfm.name === \"AESV3\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n return new AES256Cipher(key);\n };\n }\n throw new FormatError(\"Unknown crypto method\");\n }\n\n // eslint-disable-next-line no-shadow\n class CipherTransformFactory {\n constructor(dict, fileId, password) {\n const filter = dict.get(\"Filter\");\n if (!isName(filter, \"Standard\")) {\n throw new FormatError(\"unknown encryption method\");\n }\n this.filterName = filter.name;\n this.dict = dict;\n const algorithm = dict.get(\"V\");\n if (\n !Number.isInteger(algorithm) ||\n (algorithm !== 1 &&\n algorithm !== 2 &&\n algorithm !== 4 &&\n algorithm !== 5)\n ) {\n throw new FormatError(\"unsupported encryption algorithm\");\n }\n this.algorithm = algorithm;\n let keyLength = dict.get(\"Length\");\n if (!keyLength) {\n // Spec asks to rely on encryption dictionary's Length entry, however\n // some PDFs don't have it. Trying to recover.\n if (algorithm <= 3) {\n // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\n keyLength = 40;\n } else {\n // Trying to find default handler -- it usually has Length.\n const cfDict = dict.get(\"CF\");\n const streamCryptoName = dict.get(\"StmF\");\n if (cfDict instanceof Dict && streamCryptoName instanceof Name) {\n cfDict.suppressEncryption = true; // See comment below.\n const handlerDict = cfDict.get(streamCryptoName.name);\n keyLength = (handlerDict && handlerDict.get(\"Length\")) || 128;\n if (keyLength < 40) {\n // Sometimes it's incorrect value of bits, generators specify\n // bytes.\n keyLength <<= 3;\n }\n }\n }\n }\n if (\n !Number.isInteger(keyLength) ||\n keyLength < 40 ||\n keyLength % 8 !== 0\n ) {\n throw new FormatError(\"invalid key length\");\n }\n\n // prepare keys\n const ownerPassword = stringToBytes(dict.get(\"O\")).subarray(0, 32);\n const userPassword = stringToBytes(dict.get(\"U\")).subarray(0, 32);\n const flags = dict.get(\"P\");\n const revision = dict.get(\"R\");\n // meaningful when V is 4 or 5\n const encryptMetadata =\n (algorithm === 4 || algorithm === 5) &&\n dict.get(\"EncryptMetadata\") !== false;\n this.encryptMetadata = encryptMetadata;\n\n const fileIdBytes = stringToBytes(fileId);\n let passwordBytes;\n if (password) {\n if (revision === 6) {\n try {\n password = utf8StringToString(password);\n } catch (ex) {\n warn(\n \"CipherTransformFactory: \" +\n \"Unable to convert UTF8 encoded password.\"\n );\n }\n }\n passwordBytes = stringToBytes(password);\n }\n\n let encryptionKey;\n if (algorithm !== 5) {\n encryptionKey = prepareKeyData(\n fileIdBytes,\n passwordBytes,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n );\n } else {\n const ownerValidationSalt = stringToBytes(dict.get(\"O\")).subarray(\n 32,\n 40\n );\n const ownerKeySalt = stringToBytes(dict.get(\"O\")).subarray(40, 48);\n const uBytes = stringToBytes(dict.get(\"U\")).subarray(0, 48);\n const userValidationSalt = stringToBytes(dict.get(\"U\")).subarray(\n 32,\n 40\n );\n const userKeySalt = stringToBytes(dict.get(\"U\")).subarray(40, 48);\n const ownerEncryption = stringToBytes(dict.get(\"OE\"));\n const userEncryption = stringToBytes(dict.get(\"UE\"));\n const perms = stringToBytes(dict.get(\"Perms\"));\n encryptionKey = createEncryptionKey20(\n revision,\n passwordBytes,\n ownerPassword,\n ownerValidationSalt,\n ownerKeySalt,\n uBytes,\n userPassword,\n userValidationSalt,\n userKeySalt,\n ownerEncryption,\n userEncryption,\n perms\n );\n }\n if (!encryptionKey && !password) {\n throw new PasswordException(\n \"No password given\",\n PasswordResponses.NEED_PASSWORD\n );\n } else if (!encryptionKey && password) {\n // Attempting use the password as an owner password\n const decodedPassword = decodeUserPassword(\n passwordBytes,\n ownerPassword,\n revision,\n keyLength\n );\n encryptionKey = prepareKeyData(\n fileIdBytes,\n decodedPassword,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n );\n }\n\n if (!encryptionKey) {\n throw new PasswordException(\n \"Incorrect Password\",\n PasswordResponses.INCORRECT_PASSWORD\n );\n }\n\n this.encryptionKey = encryptionKey;\n\n if (algorithm >= 4) {\n const cf = dict.get(\"CF\");\n if (cf instanceof Dict) {\n // The 'CF' dictionary itself should not be encrypted, and by setting\n // `suppressEncryption` we can prevent an infinite loop inside of\n // `XRef_fetchUncompressed` if the dictionary contains indirect\n // objects (fixes issue7665.pdf).\n cf.suppressEncryption = true;\n }\n this.cf = cf;\n this.stmf = dict.get(\"StmF\") || identityName;\n this.strf = dict.get(\"StrF\") || identityName;\n this.eff = dict.get(\"EFF\") || this.stmf;\n }\n }\n\n createCipherTransform(num, gen) {\n if (this.algorithm === 4 || this.algorithm === 5) {\n return new CipherTransform(\n buildCipherConstructor(\n this.cf,\n this.stmf,\n num,\n gen,\n this.encryptionKey\n ),\n buildCipherConstructor(\n this.cf,\n this.strf,\n num,\n gen,\n this.encryptionKey\n )\n );\n }\n // algorithms 1 and 2\n const key = buildObjectKey(\n num,\n gen,\n this.encryptionKey,\n /* isAes = */ false\n );\n const cipherConstructor = function buildCipherCipherConstructor() {\n return new ARCFourCipher(key);\n };\n return new CipherTransform(cipherConstructor, cipherConstructor);\n }\n }\n\n return CipherTransformFactory;\n})();\n\nexport {\n AES128Cipher,\n AES256Cipher,\n ARCFourCipher,\n calculateMD5,\n calculateSHA256,\n calculateSHA384,\n calculateSHA512,\n CipherTransformFactory,\n PDF17,\n PDF20,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nconst chunkSize = 512;\n\nclass DecryptStream extends DecodeStream {\n constructor(str, maybeLength, decrypt) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.decrypt = decrypt;\n this.nextChunk = null;\n this.initialized = false;\n }\n\n readBlock() {\n let chunk;\n if (this.initialized) {\n chunk = this.nextChunk;\n } else {\n chunk = this.str.getBytes(chunkSize);\n this.initialized = true;\n }\n if (!chunk || chunk.length === 0) {\n this.eof = true;\n return;\n }\n this.nextChunk = this.str.getBytes(chunkSize);\n const hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n const decrypt = this.decrypt;\n chunk = decrypt(chunk, !hasMoreData);\n\n let bufferLength = this.bufferLength;\n const n = chunk.length,\n buffer = this.ensureBuffer(bufferLength + n);\n for (let i = 0; i < n; i++) {\n buffer[bufferLength++] = chunk[i];\n }\n this.bufferLength = bufferLength;\n }\n}\n\nexport { DecryptStream };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $globalData,\n $nodeName,\n $text,\n $toHTML,\n $toPages,\n} from \"./xfa_object.js\";\nimport { Binder } from \"./bind.js\";\nimport { DataHandler } from \"./data.js\";\nimport { FontFinder } from \"./fonts.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\nimport { XFAParser } from \"./parser.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nclass XFAFactory {\n constructor(data) {\n try {\n this.root = new XFAParser().parse(XFAFactory._createDocument(data));\n const binder = new Binder(this.root);\n this.form = binder.bind();\n this.dataHandler = new DataHandler(this.root, binder.getData());\n this.form[$globalData].template = this.form;\n } catch (e) {\n warn(`XFA - an error occurred during parsing and binding: ${e}`);\n }\n }\n\n isValid() {\n return this.root && this.form;\n }\n\n /**\n * In order to avoid to block the event loop, the conversion\n * into pages is made asynchronously.\n */\n _createPagesHelper() {\n const iterator = this.form[$toPages]();\n return new Promise((resolve, reject) => {\n const nextIteration = () => {\n try {\n const value = iterator.next();\n if (value.done) {\n resolve(value.value);\n } else {\n setTimeout(nextIteration, 0);\n }\n } catch (e) {\n reject(e);\n }\n };\n setTimeout(nextIteration, 0);\n });\n }\n\n async _createPages() {\n try {\n this.pages = await this._createPagesHelper();\n this.dims = this.pages.children.map(c => {\n const { width, height } = c.attributes.style;\n return [0, 0, parseInt(width), parseInt(height)];\n });\n } catch (e) {\n warn(`XFA - an error occurred during layout: ${e}`);\n }\n }\n\n getBoundingBox(pageIndex) {\n return this.dims[pageIndex];\n }\n\n async getNumPages() {\n if (!this.pages) {\n await this._createPages();\n }\n return this.dims.length;\n }\n\n setImages(images) {\n this.form[$globalData].images = images;\n }\n\n setFonts(fonts) {\n this.form[$globalData].fontFinder = new FontFinder(fonts);\n const missingFonts = [];\n for (let typeface of this.form[$globalData].usedTypefaces) {\n typeface = stripQuotes(typeface);\n const font = this.form[$globalData].fontFinder.find(typeface);\n if (!font) {\n missingFonts.push(typeface);\n }\n }\n\n if (missingFonts.length > 0) {\n return missingFonts;\n }\n\n return null;\n }\n\n appendFonts(fonts, reallyMissingFonts) {\n this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\n }\n\n async getPages() {\n if (!this.pages) {\n await this._createPages();\n }\n const pages = this.pages;\n this.pages = null;\n return pages;\n }\n\n serializeData(storage) {\n return this.dataHandler.serialize(storage);\n }\n\n static _createDocument(data) {\n if (!data[\"/xdp:xdp\"]) {\n return data[\"xdp:xdp\"];\n }\n return Object.values(data).join(\"\");\n }\n\n static getRichTextAsHtml(rc) {\n if (!rc || typeof rc !== \"string\") {\n return null;\n }\n\n try {\n let root = new XFAParser(XhtmlNamespace, /* richText */ true).parse(rc);\n if (![\"body\", \"xhtml\"].includes(root[$nodeName])) {\n // No body, so create one.\n const newRoot = XhtmlNamespace.body({});\n newRoot[$appendChild](root);\n root = newRoot;\n }\n\n const result = root[$toHTML]();\n if (!result.success) {\n return null;\n }\n\n const { html } = result;\n const { attributes } = html;\n if (attributes) {\n if (attributes.class) {\n attributes.class = attributes.class.filter(\n attr => !attr.startsWith(\"xfa\")\n );\n }\n attributes.dir = \"auto\";\n }\n\n return { html, str: root[$text]() };\n } catch (e) {\n warn(`XFA - an error occurred during parsing of rich text: ${e}`);\n }\n return null;\n }\n}\n\nexport { XFAFactory };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInteger, getKeyword, HTMLResult } from \"./utils.js\";\nimport { shadow, utf8StringToString, warn } from \"../../shared/util.js\";\nimport { encodeToXmlString } from \"../core_utils.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { searchNode } from \"./som.js\";\n\n// We use these symbols to avoid name conflict between tags\n// and properties/methods names.\nconst $acceptWhitespace = Symbol();\nconst $addHTML = Symbol();\nconst $appendChild = Symbol();\nconst $childrenToHTML = Symbol();\nconst $clean = Symbol();\nconst $cleanPage = Symbol();\nconst $cleanup = Symbol();\nconst $clone = Symbol();\nconst $consumed = Symbol();\nconst $content = Symbol(\"content\");\nconst $data = Symbol(\"data\");\nconst $dump = Symbol();\nconst $extra = Symbol(\"extra\");\nconst $finalize = Symbol();\nconst $flushHTML = Symbol();\nconst $getAttributeIt = Symbol();\nconst $getAttributes = Symbol();\nconst $getAvailableSpace = Symbol();\nconst $getChildrenByClass = Symbol();\nconst $getChildrenByName = Symbol();\nconst $getChildrenByNameIt = Symbol();\nconst $getDataValue = Symbol();\nconst $getExtra = Symbol();\nconst $getRealChildrenByNameIt = Symbol();\nconst $getChildren = Symbol();\nconst $getContainedChildren = Symbol();\nconst $getNextPage = Symbol();\nconst $getSubformParent = Symbol();\nconst $getParent = Symbol();\nconst $getTemplateRoot = Symbol();\nconst $globalData = Symbol();\nconst $hasSettableValue = Symbol();\nconst $ids = Symbol();\nconst $indexOf = Symbol();\nconst $insertAt = Symbol();\nconst $isCDATAXml = Symbol();\nconst $isBindable = Symbol();\nconst $isDataValue = Symbol();\nconst $isDescendent = Symbol();\nconst $isNsAgnostic = Symbol();\nconst $isSplittable = Symbol();\nconst $isThereMoreWidth = Symbol();\nconst $isTransparent = Symbol();\nconst $isUsable = Symbol();\nconst $lastAttribute = Symbol();\nconst $namespaceId = Symbol(\"namespaceId\");\nconst $nodeName = Symbol(\"nodeName\");\nconst $nsAttributes = Symbol();\nconst $onChild = Symbol();\nconst $onChildCheck = Symbol();\nconst $onText = Symbol();\nconst $pushGlyphs = Symbol();\nconst $popPara = Symbol();\nconst $pushPara = Symbol();\nconst $removeChild = Symbol();\nconst $root = Symbol(\"root\");\nconst $resolvePrototypes = Symbol();\nconst $searchNode = Symbol();\nconst $setId = Symbol();\nconst $setSetAttributes = Symbol();\nconst $setValue = Symbol();\nconst $tabIndex = Symbol();\nconst $text = Symbol();\nconst $toPages = Symbol();\nconst $toHTML = Symbol();\nconst $toString = Symbol();\nconst $toStyle = Symbol();\nconst $uid = Symbol(\"uid\");\n\nconst _applyPrototype = Symbol();\nconst _attributes = Symbol();\nconst _attributeNames = Symbol();\nconst _children = Symbol(\"_children\");\nconst _cloneAttribute = Symbol();\nconst _dataValue = Symbol();\nconst _defaultValue = Symbol();\nconst _filteredChildrenGenerator = Symbol();\nconst _getPrototype = Symbol();\nconst _getUnsetAttributes = Symbol();\nconst _hasChildren = Symbol();\nconst _max = Symbol();\nconst _options = Symbol();\nconst _parent = Symbol(\"parent\");\nconst _resolvePrototypesHelper = Symbol();\nconst _setAttributes = Symbol();\nconst _validator = Symbol();\n\nlet uid = 0;\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nclass XFAObject {\n constructor(nsId, name, hasChildren = false) {\n this[$namespaceId] = nsId;\n this[$nodeName] = name;\n this[_hasChildren] = hasChildren;\n this[_parent] = null;\n this[_children] = [];\n this[$uid] = `${name}${uid++}`;\n this[$globalData] = null;\n }\n\n [$onChild](child) {\n if (!this[_hasChildren] || !this[$onChildCheck](child)) {\n return false;\n }\n\n const name = child[$nodeName];\n const node = this[name];\n\n if (node instanceof XFAObjectArray) {\n if (node.push(child)) {\n this[$appendChild](child);\n return true;\n }\n } else {\n // IRL it's possible to already have a node.\n // So just replace it with the last version.\n if (node !== null) {\n this[$removeChild](node);\n }\n this[name] = child;\n this[$appendChild](child);\n return true;\n }\n\n let id = \"\";\n if (this.id) {\n id = ` (id: ${this.id})`;\n } else if (this.name) {\n id = ` (name: ${this.name} ${this.h.value})`;\n }\n warn(`XFA - node \"${this[$nodeName]}\"${id} has already enough \"${name}\"!`);\n return false;\n }\n\n [$onChildCheck](child) {\n return (\n this.hasOwnProperty(child[$nodeName]) &&\n child[$namespaceId] === this[$namespaceId]\n );\n }\n\n [$isNsAgnostic]() {\n return false;\n }\n\n [$acceptWhitespace]() {\n return false;\n }\n\n [$isCDATAXml]() {\n return false;\n }\n\n [$isBindable]() {\n return false;\n }\n\n [$popPara]() {\n if (this.para) {\n this[$getTemplateRoot]()[$extra].paraStack.pop();\n }\n }\n\n [$pushPara]() {\n this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\n }\n\n [$setId](ids) {\n if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\n ids.set(this.id, this);\n }\n }\n\n [$getTemplateRoot]() {\n return this[$globalData].template;\n }\n\n [$isSplittable]() {\n return false;\n }\n\n /**\n Return true if this node (typically a container)\n can provide more width during layout.\n The goal is to help to know what a descendant must\n do in case of horizontal overflow.\n */\n [$isThereMoreWidth]() {\n return false;\n }\n\n [$appendChild](child) {\n child[_parent] = this;\n this[_children].push(child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n\n [$removeChild](child) {\n const i = this[_children].indexOf(child);\n this[_children].splice(i, 1);\n }\n\n [$hasSettableValue]() {\n return this.hasOwnProperty(\"value\");\n }\n\n [$setValue](_) {}\n\n [$onText](_) {}\n\n [$finalize]() {}\n\n [$clean](builder) {\n delete this[_hasChildren];\n if (this[$cleanup]) {\n builder.clean(this[$cleanup]);\n delete this[$cleanup];\n }\n }\n\n [$indexOf](child) {\n return this[_children].indexOf(child);\n }\n\n [$insertAt](i, child) {\n child[_parent] = this;\n this[_children].splice(i, 0, child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n\n /**\n * If true the element is transparent when searching a node using\n * a SOM expression which means that looking for \"foo.bar\" in\n * <... name=\"foo\"><toto><titi><... name=\"bar\"></titi></toto>...\n * is fine because toto and titi are transparent.\n */\n [$isTransparent]() {\n return !this.name;\n }\n\n [$lastAttribute]() {\n return \"\";\n }\n\n [$text]() {\n if (this[_children].length === 0) {\n return this[$content];\n }\n return this[_children].map(c => c[$text]()).join(\"\");\n }\n\n get [_attributeNames]() {\n // Lazily get attributes names\n const proto = Object.getPrototypeOf(this);\n if (!proto._attributes) {\n const attributes = (proto._attributes = new Set());\n for (const name of Object.getOwnPropertyNames(this)) {\n if (\n this[name] === null ||\n this[name] instanceof XFAObject ||\n this[name] instanceof XFAObjectArray\n ) {\n break;\n }\n attributes.add(name);\n }\n }\n return shadow(this, _attributeNames, proto._attributes);\n }\n\n [$isDescendent](parent) {\n let node = this;\n while (node) {\n if (node === parent) {\n return true;\n }\n node = node[$getParent]();\n }\n return false;\n }\n\n [$getParent]() {\n return this[_parent];\n }\n\n [$getSubformParent]() {\n return this[$getParent]();\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[name];\n }\n\n [$dump]() {\n const dumped = Object.create(null);\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n const value = this[name];\n if (value === null) {\n continue;\n }\n if (value instanceof XFAObject) {\n dumped[name] = value[$dump]();\n } else if (value instanceof XFAObjectArray) {\n if (!value.isEmpty()) {\n dumped[name] = value.dump();\n }\n } else {\n dumped[name] = value;\n }\n }\n\n return dumped;\n }\n\n [$toStyle]() {\n return null;\n }\n\n [$toHTML]() {\n return HTMLResult.EMPTY;\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in Subform and SubformSet.\n for (const node of this[$getChildren]()) {\n yield node;\n }\n }\n\n *[_filteredChildrenGenerator](filter, include) {\n for (const node of this[$getContainedChildren]()) {\n if (!filter || include === filter.has(node[$nodeName])) {\n const availableSpace = this[$getAvailableSpace]();\n const res = node[$toHTML](availableSpace);\n if (!res.success) {\n this[$extra].failingNode = node;\n }\n yield res;\n }\n }\n }\n\n [$flushHTML]() {\n return null;\n }\n\n [$addHTML](html, bbox) {\n this[$extra].children.push(html);\n }\n\n [$getAvailableSpace]() {}\n\n [$childrenToHTML]({ filter = null, include = true }) {\n if (!this[$extra].generator) {\n this[$extra].generator = this[_filteredChildrenGenerator](\n filter,\n include\n );\n } else {\n const availableSpace = this[$getAvailableSpace]();\n const res = this[$extra].failingNode[$toHTML](availableSpace);\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n delete this[$extra].failingNode;\n }\n\n while (true) {\n const gen = this[$extra].generator.next();\n if (gen.done) {\n break;\n }\n const res = gen.value;\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n }\n\n this[$extra].generator = null;\n\n return HTMLResult.EMPTY;\n }\n\n [$setSetAttributes](attributes) {\n // Just keep set attributes because it can be used in a proto.\n this[_setAttributes] = new Set(Object.keys(attributes));\n }\n\n /**\n * Get attribute names which have been set in the proto but not in this.\n */\n [_getUnsetAttributes](protoAttributes) {\n const allAttr = this[_attributeNames];\n const setAttr = this[_setAttributes];\n return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x));\n }\n\n /**\n * Update the node with properties coming from a prototype and apply\n * this function recursivly to all children.\n */\n [$resolvePrototypes](ids, ancestors = new Set()) {\n for (const child of this[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n\n [_resolvePrototypesHelper](ids, ancestors) {\n const proto = this[_getPrototype](ids, ancestors);\n if (proto) {\n // _applyPrototype will apply $resolvePrototypes with correct ancestors\n // to avoid infinite loop.\n this[_applyPrototype](proto, ids, ancestors);\n } else {\n this[$resolvePrototypes](ids, ancestors);\n }\n }\n\n [_getPrototype](ids, ancestors) {\n const { use, usehref } = this;\n if (!use && !usehref) {\n return null;\n }\n\n let proto = null;\n let somExpression = null;\n let id = null;\n let ref = use;\n\n // If usehref and use are non-empty then use usehref.\n if (usehref) {\n ref = usehref;\n // Href can be one of the following:\n // - #ID\n // - URI#ID\n // - #som(expression)\n // - URI#som(expression)\n // - URI\n // For now we don't handle URI other than \".\" (current document).\n if (usehref.startsWith(\"#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\"#som(\".length, usehref.length - 1);\n } else if (usehref.startsWith(\".#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\".#som(\".length, usehref.length - 1);\n } else if (usehref.startsWith(\"#\")) {\n id = usehref.slice(1);\n } else if (usehref.startsWith(\".#\")) {\n id = usehref.slice(2);\n }\n } else if (use.startsWith(\"#\")) {\n id = use.slice(1);\n } else {\n somExpression = use;\n }\n\n this.use = this.usehref = \"\";\n if (id) {\n proto = ids.get(id);\n } else {\n proto = searchNode(\n ids.get($root),\n this,\n somExpression,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (proto) {\n proto = proto[0];\n }\n }\n\n if (!proto) {\n warn(`XFA - Invalid prototype reference: ${ref}.`);\n return null;\n }\n\n if (proto[$nodeName] !== this[$nodeName]) {\n warn(\n `XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`\n );\n return null;\n }\n\n if (ancestors.has(proto)) {\n // We've a cycle so break it.\n warn(`XFA - Cycle detected in prototypes use.`);\n return null;\n }\n\n ancestors.add(proto);\n\n // The prototype can have a \"use\" attribute itself.\n const protoProto = proto[_getPrototype](ids, ancestors);\n if (protoProto) {\n proto[_applyPrototype](protoProto, ids, ancestors);\n }\n\n // The prototype can have a child which itself has a \"use\" property.\n proto[$resolvePrototypes](ids, ancestors);\n\n ancestors.delete(proto);\n\n return proto;\n }\n\n [_applyPrototype](proto, ids, ancestors) {\n if (ancestors.has(proto)) {\n // We've a cycle so break it.\n warn(`XFA - Cycle detected in prototypes use.`);\n return;\n }\n\n if (!this[$content] && proto[$content]) {\n this[$content] = proto[$content];\n }\n\n const newAncestors = new Set(ancestors);\n newAncestors.add(proto);\n\n for (const unsetAttrName of this[_getUnsetAttributes](\n proto[_setAttributes]\n )) {\n this[unsetAttrName] = proto[unsetAttrName];\n if (this[_setAttributes]) {\n this[_setAttributes].add(unsetAttrName);\n }\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n continue;\n }\n const value = this[name];\n const protoValue = proto[name];\n\n if (value instanceof XFAObjectArray) {\n for (const child of value[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n\n for (\n let i = value[_children].length, ii = protoValue[_children].length;\n i < ii;\n i++\n ) {\n const child = proto[_children][i][$clone]();\n if (value.push(child)) {\n child[_parent] = this;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n } else {\n // No need to continue: other nodes will be rejected.\n break;\n }\n }\n continue;\n }\n\n if (value !== null) {\n value[$resolvePrototypes](ids, ancestors);\n if (protoValue) {\n // protoValue must be treated as a prototype for value.\n value[_applyPrototype](protoValue, ids, ancestors);\n }\n continue;\n }\n\n if (protoValue !== null) {\n const child = protoValue[$clone]();\n child[_parent] = this;\n this[name] = child;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n }\n\n static [_cloneAttribute](obj) {\n if (Array.isArray(obj)) {\n return obj.map(x => XFAObject[_cloneAttribute](x));\n }\n if (typeof obj === \"object\" && obj !== null) {\n return Object.assign({}, obj);\n }\n return obj;\n }\n\n [$clone]() {\n const clone = Object.create(Object.getPrototypeOf(this));\n for (const $symbol of Object.getOwnPropertySymbols(this)) {\n try {\n clone[$symbol] = this[$symbol];\n } catch (_) {\n shadow(clone, $symbol, this[$symbol]);\n }\n }\n clone[$uid] = `${clone[$nodeName]}${uid++}`;\n clone[_children] = [];\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n clone[name] = XFAObject[_cloneAttribute](this[name]);\n continue;\n }\n const value = this[name];\n if (value instanceof XFAObjectArray) {\n clone[name] = new XFAObjectArray(value[_max]);\n } else {\n clone[name] = null;\n }\n }\n\n for (const child of this[_children]) {\n const name = child[$nodeName];\n const clonedChild = child[$clone]();\n clone[_children].push(clonedChild);\n clonedChild[_parent] = clone;\n if (clone[name] === null) {\n clone[name] = clonedChild;\n } else {\n clone[name][_children].push(clonedChild);\n }\n }\n\n return clone;\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[_children].filter(c => c[$nodeName] === name);\n }\n\n [$getChildrenByClass](name) {\n return this[name];\n }\n\n [$getChildrenByName](name, allTransparent, first = true) {\n return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\n }\n\n *[$getChildrenByNameIt](name, allTransparent, first = true) {\n if (name === \"parent\") {\n yield this[_parent];\n return;\n }\n\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n\n if (child.name === name) {\n yield child;\n }\n\n if (allTransparent || child[$isTransparent]()) {\n yield* child[$getChildrenByNameIt](name, allTransparent, false);\n }\n }\n\n if (first && this[_attributeNames].has(name)) {\n yield new XFAAttribute(this, name, this[name]);\n }\n }\n}\n\nclass XFAObjectArray {\n constructor(max = Infinity) {\n this[_max] = max;\n this[_children] = [];\n }\n\n push(child) {\n const len = this[_children].length;\n if (len <= this[_max]) {\n this[_children].push(child);\n return true;\n }\n warn(\n `XFA - node \"${child[$nodeName]}\" accepts no more than ${this[_max]} children`\n );\n return false;\n }\n\n isEmpty() {\n return this[_children].length === 0;\n }\n\n dump() {\n return this[_children].length === 1\n ? this[_children][0][$dump]()\n : this[_children].map(x => x[$dump]());\n }\n\n [$clone]() {\n const clone = new XFAObjectArray(this[_max]);\n clone[_children] = this[_children].map(c => c[$clone]());\n return clone;\n }\n\n get children() {\n return this[_children];\n }\n\n clear() {\n this[_children].length = 0;\n }\n}\n\nclass XFAAttribute {\n constructor(node, name, value) {\n this[_parent] = node;\n this[$nodeName] = name;\n this[$content] = value;\n this[$consumed] = false;\n this[$uid] = `attribute${uid++}`;\n }\n\n [$getParent]() {\n return this[_parent];\n }\n\n [$isDataValue]() {\n return true;\n }\n\n [$getDataValue]() {\n return this[$content].trim();\n }\n\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n\n [$text]() {\n return this[$content];\n }\n\n [$isDescendent](parent) {\n return this[_parent] === parent || this[_parent][$isDescendent](parent);\n }\n}\n\nclass XmlObject extends XFAObject {\n constructor(nsId, name, attributes = {}) {\n super(nsId, name);\n this[$content] = \"\";\n this[_dataValue] = null;\n if (name !== \"#text\") {\n const map = new Map();\n this[_attributes] = map;\n for (const [attrName, value] of Object.entries(attributes)) {\n map.set(attrName, new XFAAttribute(this, attrName, value));\n }\n if (attributes.hasOwnProperty($nsAttributes)) {\n // XFA attributes.\n const dataNode = attributes[$nsAttributes].xfa.dataNode;\n if (dataNode !== undefined) {\n if (dataNode === \"dataGroup\") {\n this[_dataValue] = false;\n } else if (dataNode === \"dataValue\") {\n this[_dataValue] = true;\n }\n }\n }\n }\n this[$consumed] = false;\n }\n\n [$toString](buf) {\n const tagName = this[$nodeName];\n if (tagName === \"#text\") {\n buf.push(encodeToXmlString(this[$content]));\n return;\n }\n const utf8TagName = utf8StringToString(tagName);\n const prefix = this[$namespaceId] === NS_DATASETS ? \"xfa:\" : \"\";\n buf.push(`<${prefix}${utf8TagName}`);\n for (const [name, value] of this[_attributes].entries()) {\n const utf8Name = utf8StringToString(name);\n buf.push(` ${utf8Name}=\"${encodeToXmlString(value[$content])}\"`);\n }\n if (this[_dataValue] !== null) {\n if (this[_dataValue]) {\n buf.push(` xfa:dataNode=\"dataValue\"`);\n } else {\n buf.push(` xfa:dataNode=\"dataGroup\"`);\n }\n }\n if (!this[$content] && this[_children].length === 0) {\n buf.push(\"/>\");\n return;\n }\n\n buf.push(\">\");\n if (this[$content]) {\n if (typeof this[$content] === \"string\") {\n buf.push(encodeToXmlString(this[$content]));\n } else {\n this[$content][$toString](buf);\n }\n } else {\n for (const child of this[_children]) {\n child[$toString](buf);\n }\n }\n buf.push(`</${prefix}${utf8TagName}>`);\n }\n\n [$onChild](child) {\n if (this[$content]) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n this[$content] = \"\";\n }\n this[$appendChild](child);\n return true;\n }\n\n [$onText](str) {\n this[$content] += str;\n }\n\n [$finalize]() {\n if (this[$content] && this[_children].length > 0) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n delete this[$content];\n }\n }\n\n [$toHTML]() {\n if (this[$nodeName] === \"#text\") {\n return HTMLResult.success({\n name: \"#text\",\n value: this[$content],\n });\n }\n\n return HTMLResult.EMPTY;\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[_children].filter(c => c[$nodeName] === name);\n }\n\n [$getAttributes]() {\n return this[_attributes];\n }\n\n [$getChildrenByClass](name) {\n const value = this[_attributes].get(name);\n if (value !== undefined) {\n return value;\n }\n return this[$getChildren](name);\n }\n\n *[$getChildrenByNameIt](name, allTransparent) {\n const value = this[_attributes].get(name);\n if (value) {\n yield value;\n }\n\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n\n if (allTransparent) {\n yield* child[$getChildrenByNameIt](name, allTransparent);\n }\n }\n }\n\n *[$getAttributeIt](name, skipConsumed) {\n const value = this[_attributes].get(name);\n if (value && (!skipConsumed || !value[$consumed])) {\n yield value;\n }\n for (const child of this[_children]) {\n yield* child[$getAttributeIt](name, skipConsumed);\n }\n }\n\n *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\n for (const child of this[_children]) {\n if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\n yield child;\n }\n\n if (allTransparent) {\n yield* child[$getRealChildrenByNameIt](\n name,\n allTransparent,\n skipConsumed\n );\n }\n }\n }\n\n [$isDataValue]() {\n if (this[_dataValue] === null) {\n return (\n this[_children].length === 0 ||\n this[_children][0][$namespaceId] === NamespaceIds.xhtml.id\n );\n }\n return this[_dataValue];\n }\n\n [$getDataValue]() {\n if (this[_dataValue] === null) {\n if (this[_children].length === 0) {\n return this[$content].trim();\n }\n if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) {\n return this[_children][0][$text]().trim();\n }\n return null;\n }\n return this[$content].trim();\n }\n\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n\n [$dump](hasNS = false) {\n const dumped = Object.create(null);\n if (hasNS) {\n dumped.$ns = this[$namespaceId];\n }\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n dumped.$name = this[$nodeName];\n\n dumped.children = [];\n for (const child of this[_children]) {\n dumped.children.push(child[$dump](hasNS));\n }\n\n dumped.attributes = Object.create(null);\n for (const [name, value] of this[_attributes]) {\n dumped.attributes[name] = value[$content];\n }\n\n return dumped;\n }\n}\n\nclass ContentObject extends XFAObject {\n constructor(nsId, name) {\n super(nsId, name);\n this[$content] = \"\";\n }\n\n [$onText](text) {\n this[$content] += text;\n }\n\n [$finalize]() {}\n}\n\nclass OptionObject extends ContentObject {\n constructor(nsId, name, options) {\n super(nsId, name);\n this[_options] = options;\n }\n\n [$finalize]() {\n this[$content] = getKeyword({\n data: this[$content],\n defaultValue: this[_options][0],\n validate: k => this[_options].includes(k),\n });\n }\n\n [$clean](builder) {\n super[$clean](builder);\n delete this[_options];\n }\n}\n\nclass StringObject extends ContentObject {\n [$finalize]() {\n this[$content] = this[$content].trim();\n }\n}\n\nclass IntegerObject extends ContentObject {\n constructor(nsId, name, defaultValue, validator) {\n super(nsId, name);\n this[_defaultValue] = defaultValue;\n this[_validator] = validator;\n }\n\n [$finalize]() {\n this[$content] = getInteger({\n data: this[$content],\n defaultValue: this[_defaultValue],\n validate: this[_validator],\n });\n }\n\n [$clean](builder) {\n super[$clean](builder);\n delete this[_defaultValue];\n delete this[_validator];\n }\n}\n\nclass Option01 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 0, n => n === 1);\n }\n}\n\nclass Option10 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 1, n => n === 0);\n }\n}\n\nexport {\n $acceptWhitespace,\n $addHTML,\n $appendChild,\n $childrenToHTML,\n $clean,\n $cleanPage,\n $cleanup,\n $clone,\n $consumed,\n $content,\n $data,\n $dump,\n $extra,\n $finalize,\n $flushHTML,\n $getAttributeIt,\n $getAttributes,\n $getAvailableSpace,\n $getChildren,\n $getChildrenByClass,\n $getChildrenByName,\n $getChildrenByNameIt,\n $getContainedChildren,\n $getDataValue,\n $getExtra,\n $getNextPage,\n $getParent,\n $getRealChildrenByNameIt,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $hasSettableValue,\n $ids,\n $indexOf,\n $insertAt,\n $isBindable,\n $isCDATAXml,\n $isDataValue,\n $isDescendent,\n $isNsAgnostic,\n $isSplittable,\n $isThereMoreWidth,\n $isTransparent,\n $isUsable,\n $namespaceId,\n $nodeName,\n $nsAttributes,\n $onChild,\n $onChildCheck,\n $onText,\n $popPara,\n $pushGlyphs,\n $pushPara,\n $removeChild,\n $resolvePrototypes,\n $root,\n $searchNode,\n $setId,\n $setSetAttributes,\n $setValue,\n $tabIndex,\n $text,\n $toHTML,\n $toPages,\n $toString,\n $toStyle,\n $uid,\n ContentObject,\n IntegerObject,\n Option01,\n Option10,\n OptionObject,\n StringObject,\n XFAAttribute,\n XFAObject,\n XFAObjectArray,\n XmlObject,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { shadow } from \"../../shared/util.js\";\n\nconst dimConverters = {\n pt: x => x,\n cm: x => (x / 2.54) * 72,\n mm: x => (x / (10 * 2.54)) * 72,\n in: x => x * 72,\n px: x => x,\n};\nconst measurementPattern = /([+-]?\\d+\\.?\\d*)(.*)/;\n\nfunction stripQuotes(str) {\n if (str.startsWith(\"'\") || str.startsWith('\"')) {\n return str.slice(1, str.length - 1);\n }\n return str;\n}\n\nfunction getInteger({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseInt(data, 10);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\n\nfunction getFloat({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseFloat(data);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\n\nfunction getKeyword({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n if (validate(data)) {\n return data;\n }\n return defaultValue;\n}\n\nfunction getStringOption(data, options) {\n return getKeyword({\n data,\n defaultValue: options[0],\n validate: k => options.includes(k),\n });\n}\n\nfunction getMeasurement(str, def = \"0\") {\n def = def || \"0\";\n if (!str) {\n return getMeasurement(def);\n }\n const match = str.trim().match(measurementPattern);\n if (!match) {\n return getMeasurement(def);\n }\n const [, valueStr, unit] = match;\n const value = parseFloat(valueStr);\n if (isNaN(value)) {\n return getMeasurement(def);\n }\n\n if (value === 0) {\n return 0;\n }\n\n const conv = dimConverters[unit];\n if (conv) {\n return conv(value);\n }\n\n return value;\n}\n\nfunction getRatio(data) {\n if (!data) {\n return { num: 1, den: 1 };\n }\n const ratio = data\n .trim()\n .split(/\\s*:\\s*/)\n .map(x => parseFloat(x))\n .filter(x => !isNaN(x));\n if (ratio.length === 1) {\n ratio.push(1);\n }\n\n if (ratio.length === 0) {\n return { num: 1, den: 1 };\n }\n\n const [num, den] = ratio;\n return { num, den };\n}\n\nfunction getRelevant(data) {\n if (!data) {\n return [];\n }\n return data\n .trim()\n .split(/\\s+/)\n .map(e => {\n return {\n excluded: e[0] === \"-\",\n viewname: e.substring(1),\n };\n });\n}\n\nfunction getColor(data, def = [0, 0, 0]) {\n let [r, g, b] = def;\n if (!data) {\n return { r, g, b };\n }\n const color = data\n .trim()\n .split(/\\s*,\\s*/)\n .map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255))\n .map(c => (isNaN(c) ? 0 : c));\n\n if (color.length < 3) {\n return { r, g, b };\n }\n\n [r, g, b] = color;\n return { r, g, b };\n}\n\nfunction getBBox(data) {\n const def = -1;\n if (!data) {\n return { x: def, y: def, width: def, height: def };\n }\n const bbox = data\n .trim()\n .split(/\\s*,\\s*/)\n .map(m => getMeasurement(m, \"-1\"));\n if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {\n return { x: def, y: def, width: def, height: def };\n }\n\n const [x, y, width, height] = bbox;\n return { x, y, width, height };\n}\n\nclass HTMLResult {\n static get FAILURE() {\n return shadow(this, \"FAILURE\", new HTMLResult(false, null, null, null));\n }\n\n static get EMPTY() {\n return shadow(this, \"EMPTY\", new HTMLResult(true, null, null, null));\n }\n\n constructor(success, html, bbox, breakNode) {\n this.success = success;\n this.html = html;\n this.bbox = bbox;\n this.breakNode = breakNode;\n }\n\n isBreak() {\n return !!this.breakNode;\n }\n\n static breakNode(node) {\n return new HTMLResult(false, null, null, node);\n }\n\n static success(html, bbox = null) {\n return new HTMLResult(true, html, bbox, null);\n }\n}\n\nexport {\n getBBox,\n getColor,\n getFloat,\n getInteger,\n getKeyword,\n getMeasurement,\n getRatio,\n getRelevant,\n getStringOption,\n HTMLResult,\n stripQuotes,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst $buildXFAObject = Symbol();\n\nconst NamespaceIds = {\n config: {\n id: 0,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xci/\"),\n },\n connectionSet: {\n id: 1,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-connection-set/\"),\n },\n datasets: {\n id: 2,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-data/\"),\n },\n form: {\n id: 3,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-form/\"),\n },\n localeSet: {\n id: 4,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-locale-set/\"),\n },\n pdf: {\n id: 5,\n check: ns => ns === \"http://ns.adobe.com/xdp/pdf/\",\n },\n signature: {\n id: 6,\n check: ns => ns === \"http://www.w3.org/2000/09/xmldsig#\",\n },\n sourceSet: {\n id: 7,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-source-set/\"),\n },\n stylesheet: {\n id: 8,\n check: ns => ns === \"http://www.w3.org/1999/XSL/Transform\",\n },\n template: {\n id: 9,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-template/\"),\n },\n xdc: {\n id: 10,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xdc/\"),\n },\n xdp: {\n id: 11,\n check: ns => ns === \"http://ns.adobe.com/xdp/\",\n },\n xfdf: {\n id: 12,\n check: ns => ns === \"http://ns.adobe.com/xfdf/\",\n },\n xhtml: {\n id: 13,\n check: ns => ns === \"http://www.w3.org/1999/xhtml\",\n },\n xmpmeta: {\n id: 14,\n check: ns => ns === \"http://ns.adobe.com/xmpmeta/\",\n },\n};\n\nexport { $buildXFAObject, NamespaceIds };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $getChildren,\n $getChildrenByClass,\n $getChildrenByName,\n $getParent,\n $namespaceId,\n XFAObject,\n XFAObjectArray,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst namePattern = /^[^.[]+/;\nconst indexPattern = /^[^\\]]+/;\nconst operators = {\n dot: 0,\n dotDot: 1,\n dotHash: 2,\n dotBracket: 3,\n dotParen: 4,\n};\n\nconst shortcuts = new Map([\n [\"$data\", (root, current) => (root.datasets ? root.datasets.data : root)],\n [\n \"$record\",\n (root, current) =>\n (root.datasets ? root.datasets.data : root)[$getChildren]()[0],\n ],\n [\"$template\", (root, current) => root.template],\n [\"$connectionSet\", (root, current) => root.connectionSet],\n [\"$form\", (root, current) => root.form],\n [\"$layout\", (root, current) => root.layout],\n [\"$host\", (root, current) => root.host],\n [\"$dataWindow\", (root, current) => root.dataWindow],\n [\"$event\", (root, current) => root.event],\n [\"!\", (root, current) => root.datasets],\n [\"$xfa\", (root, current) => root],\n [\"xfa\", (root, current) => root],\n [\"$\", (root, current) => current],\n]);\n\nconst somCache = new WeakMap();\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction parseIndex(index) {\n index = index.trim();\n if (index === \"*\") {\n return Infinity;\n }\n return parseInt(index, 10) || 0;\n}\n\n// For now expressions containaing .[...] or .(...) are not\n// evaluated so don't parse them.\n// TODO: implement that stuff and the remove the noExpr param.\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\n let match = expr.match(namePattern);\n if (!match) {\n return null;\n }\n\n let [name] = match;\n const parsed = [\n {\n name,\n cacheName: \".\" + name,\n index: 0,\n js: null,\n formCalc: null,\n operator: operators.dot,\n },\n ];\n\n let pos = name.length;\n\n while (pos < expr.length) {\n const spos = pos;\n const char = expr.charAt(pos++);\n if (char === \"[\") {\n match = expr.slice(pos).match(indexPattern);\n if (!match) {\n warn(\"XFA - Invalid index in SOM expression\");\n return null;\n }\n parsed[parsed.length - 1].index = parseIndex(match[0]);\n pos += match[0].length + 1;\n continue;\n }\n\n let operator;\n switch (expr.charAt(pos)) {\n case \".\":\n if (!dotDotAllowed) {\n return null;\n }\n pos++;\n operator = operators.dotDot;\n break;\n case \"#\":\n pos++;\n operator = operators.dotHash;\n break;\n case \"[\":\n if (noExpr) {\n warn(\n \"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\"\n );\n return null;\n }\n // TODO: FormCalc expression so need to use the parser\n operator = operators.dotBracket;\n break;\n case \"(\":\n if (noExpr) {\n warn(\n \"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\"\n );\n return null;\n }\n // TODO:\n // Javascript expression: should be a boolean operation with a path\n // so maybe we can have our own parser for that stuff or\n // maybe use the formcalc one.\n operator = operators.dotParen;\n break;\n default:\n operator = operators.dot;\n break;\n }\n\n match = expr.slice(pos).match(namePattern);\n if (!match) {\n break;\n }\n\n [name] = match;\n pos += name.length;\n parsed.push({\n name,\n cacheName: expr.slice(spos, pos),\n operator,\n index: 0,\n js: null,\n formCalc: null,\n });\n }\n return parsed;\n}\n\nfunction searchNode(\n root,\n container,\n expr,\n dotDotAllowed = true,\n useCache = true\n) {\n const parsed = parseExpression(expr, dotDotAllowed);\n if (!parsed) {\n return null;\n }\n\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n let isQualified;\n if (fn) {\n isQualified = true;\n root = [fn(root, container)];\n i = 1;\n } else {\n isQualified = container === null;\n root = [container || root];\n }\n\n for (let ii = parsed.length; i < ii; i++) {\n const { name, cacheName, operator, index } = parsed[i];\n const nodes = [];\n for (const node of root) {\n if (!(node instanceof XFAObject)) {\n continue;\n }\n\n let children, cached;\n\n if (useCache) {\n cached = somCache.get(node);\n if (!cached) {\n cached = new Map();\n somCache.set(node, cached);\n }\n children = cached.get(cacheName);\n }\n\n if (!children) {\n switch (operator) {\n case operators.dot:\n children = node[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = node[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = node[$getChildrenByClass](name);\n if (children instanceof XFAObjectArray) {\n children = children.children;\n } else {\n children = [children];\n }\n break;\n default:\n break;\n }\n if (useCache) {\n cached.set(cacheName, children);\n }\n }\n\n if (children.length > 0) {\n nodes.push(children);\n }\n }\n\n if (nodes.length === 0 && !isQualified && i === 0) {\n // We've an unqualified expression and we didn't find anything\n // so look at container and siblings of container and so on.\n // http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=114\n const parent = container[$getParent]();\n container = parent;\n if (!container) {\n return null;\n }\n i = -1;\n root = [container];\n continue;\n }\n\n if (isFinite(index)) {\n root = nodes.filter(node => index < node.length).map(node => node[index]);\n } else {\n root = nodes.reduce((acc, node) => acc.concat(node), []);\n }\n }\n\n if (root.length === 0) {\n return null;\n }\n\n return root;\n}\n\nfunction createNodes(root, path) {\n let node = null;\n for (const { name, index } of path) {\n for (let i = 0, ii = !isFinite(index) ? 0 : index; i <= ii; i++) {\n const nsId = root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId];\n node = new XmlObject(nsId, name);\n root[$appendChild](node);\n }\n\n root = node;\n }\n return node;\n}\n\nfunction createDataNode(root, container, expr) {\n const parsed = parseExpression(expr);\n if (!parsed) {\n return null;\n }\n\n if (parsed.some(x => x.operator === operators.dotDot)) {\n return null;\n }\n\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n if (fn) {\n root = fn(root, container);\n i = 1;\n } else {\n root = container || root;\n }\n\n for (let ii = parsed.length; i < ii; i++) {\n const { name, operator, index } = parsed[i];\n if (!isFinite(index)) {\n parsed[i].index = 0;\n return createNodes(root, parsed.slice(i));\n }\n\n let children;\n switch (operator) {\n case operators.dot:\n children = root[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = root[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = root[$getChildrenByClass](name);\n if (children instanceof XFAObjectArray) {\n children = children.children;\n } else {\n children = [children];\n }\n break;\n default:\n break;\n }\n\n if (children.length === 0) {\n return createNodes(root, parsed.slice(i));\n }\n\n if (index < children.length) {\n const child = children[index];\n if (!(child instanceof XFAObject)) {\n warn(`XFA - Cannot create a node.`);\n return null;\n }\n root = child;\n } else {\n parsed[i].index = index - children.length;\n return createNodes(root, parsed.slice(i));\n }\n }\n return null;\n}\n\nexport { createDataNode, searchNode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $clone,\n $consumed,\n $content,\n $data,\n $finalize,\n $getAttributeIt,\n $getChildren,\n $getDataValue,\n $getParent,\n $getRealChildrenByNameIt,\n $hasSettableValue,\n $indexOf,\n $insertAt,\n $isBindable,\n $isDataValue,\n $isDescendent,\n $namespaceId,\n $nodeName,\n $removeChild,\n $setValue,\n $text,\n XFAAttribute,\n XFAObjectArray,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { BindItems, Field, Items, SetProperty, Text } from \"./template.js\";\nimport { createDataNode, searchNode } from \"./som.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction createText(content) {\n const node = new Text({});\n node[$content] = content;\n return node;\n}\n\nclass Binder {\n constructor(root) {\n this.root = root;\n this.datasets = root.datasets;\n if (root.datasets && root.datasets.data) {\n this.data = root.datasets.data;\n } else {\n this.data = new XmlObject(NamespaceIds.datasets.id, \"data\");\n }\n this.emptyMerge = this.data[$getChildren]().length === 0;\n\n this.root.form = this.form = root.template[$clone]();\n }\n\n _isConsumeData() {\n return !this.emptyMerge && this._mergeMode;\n }\n\n _isMatchTemplate() {\n return !this._isConsumeData();\n }\n\n bind() {\n this._bindElement(this.form, this.data);\n return this.form;\n }\n\n getData() {\n return this.data;\n }\n\n _bindValue(formNode, data, picture) {\n // Nodes must have the same \"type\": container or value.\n // Here we make the link between form node and\n // data node (through $data property): we'll use it\n // to save form data.\n\n formNode[$data] = data;\n if (formNode[$hasSettableValue]()) {\n if (data[$isDataValue]()) {\n const value = data[$getDataValue]();\n // TODO: use picture.\n formNode[$setValue](createText(value));\n } else if (\n formNode instanceof Field &&\n formNode.ui &&\n formNode.ui.choiceList &&\n formNode.ui.choiceList.open === \"multiSelect\"\n ) {\n const value = data[$getChildren]()\n .map(child => child[$content].trim())\n .join(\"\\n\");\n formNode[$setValue](createText(value));\n } else if (this._isConsumeData()) {\n warn(`XFA - Nodes haven't the same type.`);\n }\n } else if (!data[$isDataValue]() || this._isMatchTemplate()) {\n this._bindElement(formNode, data);\n } else {\n warn(`XFA - Nodes haven't the same type.`);\n }\n }\n\n _findDataByNameToConsume(name, isValue, dataNode, global) {\n if (!name) {\n return null;\n }\n\n // Firstly, we try to find a node with the given name:\n // - in dataNode;\n // - if not found, then in parent;\n // - and if not in found, then in grand-parent.\n let generator, match;\n for (let i = 0; i < 3; i++) {\n generator = dataNode[$getRealChildrenByNameIt](\n name,\n /* allTransparent = */ false,\n /* skipConsumed = */ true\n );\n // Try to find a match of the same kind.\n while (true) {\n match = generator.next().value;\n if (!match) {\n break;\n }\n\n if (isValue === match[$isDataValue]()) {\n return match;\n }\n }\n if (\n dataNode[$namespaceId] === NamespaceIds.datasets.id &&\n dataNode[$nodeName] === \"data\"\n ) {\n break;\n }\n dataNode = dataNode[$getParent]();\n }\n\n if (!global) {\n return null;\n }\n\n // Secondly, if global try to find it just under the root of datasets\n // (which is the location of global variables).\n generator = this.data[$getRealChildrenByNameIt](\n name,\n /* allTransparent = */ true,\n /* skipConsumed = */ false\n );\n\n match = generator.next().value;\n if (match) {\n return match;\n }\n\n // Thirdly, try to find it in attributes.\n generator = this.data[$getAttributeIt](name, /* skipConsumed = */ true);\n match = generator.next().value;\n if (match && match[$isDataValue]()) {\n return match;\n }\n\n return null;\n }\n\n _setProperties(formNode, dataNode) {\n // For example:\n // <field name=\"LastName\" ...>\n // <setProperty ref=\"$data.Main.Style.NameFont\" target=\"font.typeface\"/>\n // <setProperty ref=\"$data.Main.Style.NameSize\" target=\"font.size\"/>\n // <setProperty ref=\"$data.Main.Help.LastName\" target=\"assist.toolTip\"/>\n // </field>\n\n if (!formNode.hasOwnProperty(\"setProperty\")) {\n return;\n }\n\n for (const { ref, target, connection } of formNode.setProperty.children) {\n if (connection) {\n // TODO: evaluate if we should implement this feature.\n // Skip for security reasons.\n continue;\n }\n if (!ref) {\n continue;\n }\n\n const nodes = searchNode(\n this.root,\n dataNode,\n ref,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n const [node] = nodes;\n\n if (!node[$isDescendent](this.data)) {\n warn(`XFA - Invalid node: must be a data node.`);\n continue;\n }\n\n const targetNodes = searchNode(\n this.root,\n formNode,\n target,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!targetNodes) {\n warn(`XFA - Invalid target: ${target}.`);\n continue;\n }\n const [targetNode] = targetNodes;\n\n if (!targetNode[$isDescendent](formNode)) {\n warn(`XFA - Invalid target: must be a property or subproperty.`);\n continue;\n }\n\n const targetParent = targetNode[$getParent]();\n if (\n targetNode instanceof SetProperty ||\n targetParent instanceof SetProperty\n ) {\n warn(\n `XFA - Invalid target: cannot be a setProperty or one of its properties.`\n );\n continue;\n }\n\n if (\n targetNode instanceof BindItems ||\n targetParent instanceof BindItems\n ) {\n warn(\n `XFA - Invalid target: cannot be a bindItems or one of its properties.`\n );\n continue;\n }\n\n const content = node[$text]();\n const name = targetNode[$nodeName];\n\n if (targetNode instanceof XFAAttribute) {\n const attrs = Object.create(null);\n attrs[name] = content;\n const obj = Reflect.construct(\n Object.getPrototypeOf(targetParent).constructor,\n [attrs]\n );\n targetParent[name] = obj[name];\n continue;\n }\n\n if (!targetNode.hasOwnProperty($content)) {\n warn(`XFA - Invalid node to use in setProperty`);\n continue;\n }\n\n targetNode[$data] = node;\n targetNode[$content] = content;\n targetNode[$finalize]();\n }\n }\n\n _bindItems(formNode, dataNode) {\n // For example:\n // <field name=\"CardName\"...>\n // <bindItems ref=\"$data.main.ccs.cc[*]\" labelRef=\"uiname\"\n // valueRef=\"token\"/>\n // <ui><choiceList/></ui>\n // </field>\n\n if (\n !formNode.hasOwnProperty(\"items\") ||\n !formNode.hasOwnProperty(\"bindItems\") ||\n formNode.bindItems.isEmpty()\n ) {\n return;\n }\n\n for (const item of formNode.items.children) {\n formNode[$removeChild](item);\n }\n\n formNode.items.clear();\n\n const labels = new Items({});\n const values = new Items({});\n\n formNode[$appendChild](labels);\n formNode.items.push(labels);\n\n formNode[$appendChild](values);\n formNode.items.push(values);\n\n for (const { ref, labelRef, valueRef, connection } of formNode.bindItems\n .children) {\n if (connection) {\n // TODO: evaluate if we should implement this feature.\n // Skip for security reasons.\n continue;\n }\n if (!ref) {\n continue;\n }\n\n const nodes = searchNode(\n this.root,\n dataNode,\n ref,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n for (const node of nodes) {\n if (!node[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid ref (${ref}): must be a datasets child.`);\n continue;\n }\n\n const labelNodes = searchNode(\n this.root,\n node,\n labelRef,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!labelNodes) {\n warn(`XFA - Invalid label: ${labelRef}.`);\n continue;\n }\n const [labelNode] = labelNodes;\n\n if (!labelNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid label: must be a datasets child.`);\n continue;\n }\n\n const valueNodes = searchNode(\n this.root,\n node,\n valueRef,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!valueNodes) {\n warn(`XFA - Invalid value: ${valueRef}.`);\n continue;\n }\n const [valueNode] = valueNodes;\n\n if (!valueNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid value: must be a datasets child.`);\n continue;\n }\n\n const label = createText(labelNode[$text]());\n const value = createText(valueNode[$text]());\n\n labels[$appendChild](label);\n labels.text.push(label);\n\n values[$appendChild](value);\n values.text.push(value);\n }\n }\n }\n\n _bindOccurrences(formNode, matches, picture) {\n // Insert nodes which are not in the template but reflect\n // what we've in data tree.\n\n let baseClone;\n if (matches.length > 1) {\n // Clone before binding to avoid bad state.\n baseClone = formNode[$clone]();\n baseClone[$removeChild](baseClone.occur);\n baseClone.occur = null;\n }\n\n this._bindValue(formNode, matches[0], picture);\n this._setProperties(formNode, matches[0]);\n this._bindItems(formNode, matches[0]);\n\n if (matches.length === 1) {\n return;\n }\n\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n const pos = parent[$indexOf](formNode);\n\n for (let i = 1, ii = matches.length; i < ii; i++) {\n const match = matches[i];\n const clone = baseClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n\n this._bindValue(clone, match, picture);\n this._setProperties(clone, match);\n this._bindItems(clone, match);\n }\n }\n\n _createOccurrences(formNode) {\n if (!this.emptyMerge) {\n return;\n }\n\n const { occur } = formNode;\n if (!occur || occur.initial <= 1) {\n return;\n }\n\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n\n if (!(parent[name] instanceof XFAObjectArray)) {\n return;\n }\n\n let currentNumber;\n if (formNode.name) {\n currentNumber = parent[name].children.filter(\n e => e.name === formNode.name\n ).length;\n } else {\n currentNumber = parent[name].children.length;\n }\n\n const pos = parent[$indexOf](formNode) + 1;\n const ii = occur.initial - currentNumber;\n if (ii) {\n const nodeClone = formNode[$clone]();\n nodeClone[$removeChild](nodeClone.occur);\n nodeClone.occur = null;\n parent[name].push(nodeClone);\n parent[$insertAt](pos, nodeClone);\n\n for (let i = 1; i < ii; i++) {\n const clone = nodeClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n }\n }\n }\n\n _getOccurInfo(formNode) {\n const { name, occur } = formNode;\n if (!occur || !name) {\n return [1, 1];\n }\n const max = occur.max === -1 ? Infinity : occur.max;\n return [occur.min, max];\n }\n\n _setAndBind(formNode, dataNode) {\n this._setProperties(formNode, dataNode);\n this._bindItems(formNode, dataNode);\n this._bindElement(formNode, dataNode);\n }\n\n _bindElement(formNode, dataNode) {\n // Some nodes can be useless because min=0 so remove them\n // after the loop to avoid bad things.\n\n const uselessNodes = [];\n\n this._createOccurrences(formNode);\n\n for (const child of formNode[$getChildren]()) {\n if (child[$data]) {\n // Already bound.\n continue;\n }\n\n if (this._mergeMode === undefined && child[$nodeName] === \"subform\") {\n this._mergeMode = child.mergeMode === \"consumeData\";\n\n // XFA specs p. 182:\n // The highest-level subform and the data node representing\n // the current record are special; they are always\n // bound even if their names don't match.\n const dataChildren = dataNode[$getChildren]();\n if (dataChildren.length > 0) {\n this._bindOccurrences(child, [dataChildren[0]], null);\n } else if (this.emptyMerge) {\n const nsId =\n dataNode[$namespaceId] === NS_DATASETS\n ? -1\n : dataNode[$namespaceId];\n const dataChild = (child[$data] = new XmlObject(\n nsId,\n child.name || \"root\"\n ));\n dataNode[$appendChild](dataChild);\n this._bindElement(child, dataChild);\n }\n continue;\n }\n\n if (!child[$isBindable]()) {\n // The node cannot contain some new data so there is nothing\n // to create in the data node.\n continue;\n }\n\n let global = false;\n let picture = null;\n let ref = null;\n let match = null;\n if (child.bind) {\n switch (child.bind.match) {\n case \"none\":\n this._setAndBind(child, dataNode);\n continue;\n case \"global\":\n global = true;\n break;\n case \"dataRef\":\n if (!child.bind.ref) {\n warn(`XFA - ref is empty in node ${child[$nodeName]}.`);\n this._setAndBind(child, dataNode);\n continue;\n }\n ref = child.bind.ref;\n break;\n default:\n break;\n }\n if (child.bind.picture) {\n picture = child.bind.picture[$content];\n }\n }\n\n const [min, max] = this._getOccurInfo(child);\n\n if (ref) {\n // Don't use a cache for searching: nodes can change during binding.\n match = searchNode(\n this.root,\n dataNode,\n ref,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (match === null) {\n // Nothing found: we must create some nodes in data in order\n // to have something to match with the given expression.\n // See http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=199\n match = createDataNode(this.data, dataNode, ref);\n if (!match) {\n // For example if the node contains a .(...) then it isn't\n // findable.\n // TODO: remove this when .(...) is implemented.\n continue;\n }\n if (this._isConsumeData()) {\n match[$consumed] = true;\n }\n\n // Don't bind the value in newly created node because it's empty.\n this._setAndBind(child, match);\n continue;\n } else {\n if (this._isConsumeData()) {\n // Filter out consumed nodes.\n match = match.filter(node => !node[$consumed]);\n }\n if (match.length > max) {\n match = match.slice(0, max);\n } else if (match.length === 0) {\n match = null;\n }\n if (match && this._isConsumeData()) {\n match.forEach(node => {\n node[$consumed] = true;\n });\n }\n }\n } else {\n if (!child.name) {\n this._setAndBind(child, dataNode);\n continue;\n }\n if (this._isConsumeData()) {\n // In consumeData mode, search for the next node with the given name.\n // occurs.max gives us the max number of node to match.\n const matches = [];\n while (matches.length < max) {\n const found = this._findDataByNameToConsume(\n child.name,\n child[$hasSettableValue](),\n dataNode,\n global\n );\n\n if (!found) {\n break;\n }\n found[$consumed] = true;\n matches.push(found);\n }\n match = matches.length > 0 ? matches : null;\n } else {\n // If we've an empty merge, there are no reason\n // to make multiple bind so skip consumed nodes.\n match = dataNode[$getRealChildrenByNameIt](\n child.name,\n /* allTransparent = */ false,\n /* skipConsumed = */ this.emptyMerge\n ).next().value;\n if (!match) {\n // If there is no match (no data) and `min === 0` then\n // the container is entirely excluded.\n // https://www.pdfa.org/norm-refs/XFA-3_3.pdf#G12.1428332\n if (min === 0) {\n uselessNodes.push(child);\n continue;\n }\n // We're in matchTemplate mode so create a node in data to reflect\n // what we've in template.\n const nsId =\n dataNode[$namespaceId] === NS_DATASETS\n ? -1\n : dataNode[$namespaceId];\n match = child[$data] = new XmlObject(nsId, child.name);\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n dataNode[$appendChild](match);\n\n // Don't bind the value in newly created node because it's empty.\n this._setAndBind(child, match);\n continue;\n }\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n match = [match];\n }\n }\n\n if (match) {\n this._bindOccurrences(child, match, picture);\n } else if (min > 0) {\n this._setAndBind(child, dataNode);\n } else {\n uselessNodes.push(child);\n }\n }\n\n uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\n }\n}\n\nexport { Binder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $addHTML,\n $appendChild,\n $childrenToHTML,\n $clean,\n $cleanPage,\n $content,\n $data,\n $extra,\n $finalize,\n $flushHTML,\n $getAvailableSpace,\n $getChildren,\n $getContainedChildren,\n $getExtra,\n $getNextPage,\n $getParent,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $hasSettableValue,\n $ids,\n $isBindable,\n $isCDATAXml,\n $isSplittable,\n $isThereMoreWidth,\n $isTransparent,\n $isUsable,\n $namespaceId,\n $nodeName,\n $onChild,\n $onText,\n $popPara,\n $pushPara,\n $removeChild,\n $searchNode,\n $setSetAttributes,\n $setValue,\n $tabIndex,\n $text,\n $toHTML,\n $toPages,\n $toStyle,\n $uid,\n ContentObject,\n Option01,\n OptionObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n addHTML,\n checkDimensions,\n flushHTML,\n getAvailableSpace,\n} from \"./layout.js\";\nimport {\n computeBbox,\n createWrapper,\n fixDimensions,\n fixTextIndent,\n fixURL,\n isPrintOnly,\n layoutClass,\n layoutNode,\n measureToString,\n setAccess,\n setFontFamily,\n setMinMaxDimensions,\n setPara,\n toStyle,\n} from \"./html_utils.js\";\nimport {\n getBBox,\n getColor,\n getFloat,\n getInteger,\n getKeyword,\n getMeasurement,\n getRatio,\n getRelevant,\n getStringOption,\n HTMLResult,\n} from \"./utils.js\";\nimport { stringToBytes, Util, warn } from \"../../shared/util.js\";\nimport { getMetrics } from \"./fonts.js\";\nimport { recoverJsURL } from \"../core_utils.js\";\nimport { searchNode } from \"./som.js\";\n\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\n// In case of lr-tb (and rl-tb) layouts, we try:\n// - to put the container at the end of a line\n// - and if it fails we try on the next line.\n// If both tries failed then it's up to the parent\n// to handle the situation.\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\n\n// It's possible to have a bug in the layout and so as\n// a consequence we could loop for ever in Template::toHTML()\n// so in order to avoid that (and avoid a OOM crash) we break\n// the loop after having MAX_EMPTY_PAGES empty pages.\nconst MAX_EMPTY_PAGES = 3;\n\n// Default value to start with for the tabIndex property.\nconst DEFAULT_TAB_INDEX = 5000;\n\nconst HEADING_PATTERN = /^H(\\d+)$/;\n\n// Allowed mime types for images\nconst MIMES = new Set([\n \"image/gif\",\n \"image/jpeg\",\n \"image/jpg\",\n \"image/pjpeg\",\n \"image/png\",\n \"image/apng\",\n \"image/x-png\",\n \"image/bmp\",\n \"image/x-ms-bmp\",\n \"image/tiff\",\n \"image/tif\",\n \"application/octet-stream\",\n]);\n\nconst IMAGES_HEADERS = [\n [[0x42, 0x4d], \"image/bmp\"],\n [[0xff, 0xd8, 0xff], \"image/jpeg\"],\n [[0x49, 0x49, 0x2a, 0x00], \"image/tiff\"],\n [[0x4d, 0x4d, 0x00, 0x2a], \"image/tiff\"],\n [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \"image/gif\"],\n [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \"image/png\"],\n];\n\nfunction getBorderDims(node) {\n if (!node || !node.border) {\n return { w: 0, h: 0 };\n }\n\n const borderExtra = node.border[$getExtra]();\n if (!borderExtra) {\n return { w: 0, h: 0 };\n }\n\n return {\n w:\n borderExtra.widths[0] +\n borderExtra.widths[2] +\n borderExtra.insets[0] +\n borderExtra.insets[2],\n h:\n borderExtra.widths[1] +\n borderExtra.widths[3] +\n borderExtra.insets[1] +\n borderExtra.insets[3],\n };\n}\n\nfunction hasMargin(node) {\n return (\n node.margin &&\n (node.margin.topInset ||\n node.margin.rightInset ||\n node.margin.bottomInset ||\n node.margin.leftInset)\n );\n}\n\nfunction _setValue(templateNode, value) {\n if (!templateNode.value) {\n const nodeValue = new Value({});\n templateNode[$appendChild](nodeValue);\n templateNode.value = nodeValue;\n }\n templateNode.value[$setValue](value);\n}\n\nfunction* getContainedChildren(node) {\n for (const child of node[$getChildren]()) {\n if (child instanceof SubformSet) {\n yield* child[$getContainedChildren]();\n continue;\n }\n yield child;\n }\n}\n\nfunction setTabIndex(node) {\n while (node) {\n if (!node.traversal) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n\n if (node[$tabIndex]) {\n return;\n }\n\n let next = null;\n for (const child of node.traversal[$getChildren]()) {\n if (child.operation === \"next\") {\n next = child;\n break;\n }\n }\n\n if (!next || !next.ref) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n\n const root = node[$getTemplateRoot]();\n node[$tabIndex] = ++root[$tabIndex];\n\n const ref = root[$searchNode](next.ref, node);\n if (!ref) {\n return;\n }\n\n node = ref[0];\n }\n}\n\nfunction applyAssist(obj, attributes) {\n const assist = obj.assist;\n if (assist) {\n const assistTitle = assist[$toHTML]();\n if (assistTitle) {\n attributes.title = assistTitle;\n }\n const role = assist.role;\n const match = role.match(HEADING_PATTERN);\n if (match) {\n const ariaRole = \"heading\";\n const ariaLevel = match[1];\n attributes.role = ariaRole;\n attributes[\"aria-level\"] = ariaLevel;\n }\n }\n // XXX: We could end up in a situation where the obj has a heading role and\n // is also a table. For now prioritize the table role.\n if (obj.layout === \"table\") {\n attributes.role = \"table\";\n } else if (obj.layout === \"row\") {\n attributes.role = \"row\";\n } else {\n const parent = obj[$getParent]();\n if (parent.layout === \"row\") {\n if (parent.assist && parent.assist.role === \"TH\") {\n attributes.role = \"columnheader\";\n } else {\n attributes.role = \"cell\";\n }\n }\n }\n}\n\nfunction ariaLabel(obj) {\n if (!obj.assist) {\n return null;\n }\n const assist = obj.assist;\n if (assist.speak && assist.speak[$content] !== \"\") {\n return assist.speak[$content];\n }\n if (assist.toolTip) {\n return assist.toolTip[$content];\n }\n // TODO: support finding the related caption element. See xfa_bug1718037.pdf\n // for an example.\n return null;\n}\n\nfunction valueToHtml(value) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: Object.create(null),\n },\n children: [\n {\n name: \"span\",\n attributes: {\n style: Object.create(null),\n },\n value,\n },\n ],\n });\n}\n\nfunction setFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === null) {\n root[$extra].firstUnsplittable = node;\n root[$extra].noLayoutFailure = true;\n }\n}\n\nfunction unsetFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === node) {\n root[$extra].noLayoutFailure = false;\n }\n}\n\nfunction handleBreak(node) {\n if (node[$extra]) {\n return false;\n }\n\n node[$extra] = Object.create(null);\n\n if (node.targetType === \"auto\") {\n return false;\n }\n\n const root = node[$getTemplateRoot]();\n let target = null;\n if (node.target) {\n target = root[$searchNode](node.target, node[$getParent]());\n if (!target) {\n return false;\n }\n target = target[0];\n }\n\n const { currentPageArea, currentContentArea } = root[$extra];\n\n if (node.targetType === \"pageArea\") {\n if (!(target instanceof PageArea)) {\n target = null;\n }\n\n if (node.startNew) {\n node[$extra].target = target || currentPageArea;\n return true;\n } else if (target && target !== currentPageArea) {\n node[$extra].target = target;\n return true;\n }\n\n return false;\n }\n\n if (!(target instanceof ContentArea)) {\n target = null;\n }\n\n const pageArea = target && target[$getParent]();\n\n let index;\n let nextPageArea = pageArea;\n if (node.startNew) {\n // startNew === 1 so we must create a new container (pageArea or\n // contentArea).\n if (target) {\n const contentAreas = pageArea.contentArea.children;\n const indexForCurrent = contentAreas.indexOf(currentContentArea);\n const indexForTarget = contentAreas.indexOf(target);\n if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) {\n // The next container is after the current container so\n // we can stay on the same page.\n nextPageArea = null;\n }\n index = indexForTarget - 1;\n } else {\n index = currentPageArea.contentArea.children.indexOf(currentContentArea);\n }\n } else if (target && target !== currentContentArea) {\n const contentAreas = pageArea.contentArea.children;\n index = contentAreas.indexOf(target) - 1;\n nextPageArea = pageArea === currentPageArea ? null : pageArea;\n } else {\n return false;\n }\n\n node[$extra].target = nextPageArea;\n node[$extra].index = index;\n return true;\n}\n\nfunction handleOverflow(node, extraNode, space) {\n const root = node[$getTemplateRoot]();\n const saved = root[$extra].noLayoutFailure;\n const savedMethod = extraNode[$getSubformParent];\n\n // Replace $getSubformParent to emulate that extraNode is just\n // under node.\n extraNode[$getSubformParent] = () => node;\n\n root[$extra].noLayoutFailure = true;\n const res = extraNode[$toHTML](space);\n node[$addHTML](res.html, res.bbox);\n root[$extra].noLayoutFailure = saved;\n extraNode[$getSubformParent] = savedMethod;\n}\n\nclass AppearanceFilter extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"appearanceFilter\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Arc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"arc\", /* hasChildren = */ true);\n this.circular = getInteger({\n data: attributes.circular,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.startAngle = getFloat({\n data: attributes.startAngle,\n defaultValue: 0,\n validate: x => true,\n });\n this.sweepAngle = getFloat({\n data: attributes.sweepAngle,\n defaultValue: 360,\n validate: x => true,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n this.fill = null;\n }\n\n [$toHTML]() {\n const edge = this.edge ? this.edge : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(\n edge.presence === \"visible\" ? edge.thickness : 0\n );\n style.stroke = edgeStyle.color;\n let arc;\n const attributes = {\n xmlns: SVG_NS,\n style: {\n width: \"100%\",\n height: \"100%\",\n overflow: \"visible\",\n },\n };\n\n if (this.sweepAngle === 360) {\n arc = {\n name: \"ellipse\",\n attributes: {\n xmlns: SVG_NS,\n cx: \"50%\",\n cy: \"50%\",\n rx: \"50%\",\n ry: \"50%\",\n style,\n },\n };\n } else {\n const startAngle = (this.startAngle * Math.PI) / 180;\n const sweepAngle = (this.sweepAngle * Math.PI) / 180;\n const largeArc = this.sweepAngle > 180 ? 1 : 0;\n const [x1, y1, x2, y2] = [\n 50 * (1 + Math.cos(startAngle)),\n 50 * (1 - Math.sin(startAngle)),\n 50 * (1 + Math.cos(startAngle + sweepAngle)),\n 50 * (1 - Math.sin(startAngle + sweepAngle)),\n ];\n\n arc = {\n name: \"path\",\n attributes: {\n xmlns: SVG_NS,\n d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\n vectorEffect: \"non-scaling-stroke\",\n style,\n },\n };\n\n Object.assign(attributes, {\n viewBox: \"0 0 100 100\",\n preserveAspectRatio: \"none\",\n });\n }\n\n const svg = {\n name: \"svg\",\n children: [arc],\n attributes,\n };\n\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass Area extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"area\", /* hasChildren = */ true);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n this.area = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$isTransparent]() {\n return true;\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$addHTML](html, bbox) {\n const [x, y, w, h] = bbox;\n this[$extra].width = Math.max(this[$extra].width, x + w);\n this[$extra].height = Math.max(this[$extra].height, y + h);\n\n this[$extra].children.push(html);\n }\n\n [$getAvailableSpace]() {\n return this[$extra].availableSpace;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"position\");\n const attributes = {\n style,\n id: this[$uid],\n class: [\"xfaArea\"],\n };\n\n if (isPrintOnly(this)) {\n attributes.class.push(\"xfaPrintOnly\");\n }\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const children = [];\n this[$extra] = {\n children,\n width: 0,\n height: 0,\n availableSpace,\n };\n\n const result = this[$childrenToHTML]({\n filter: new Set([\n \"area\",\n \"draw\",\n \"field\",\n \"exclGroup\",\n \"subform\",\n \"subformSet\",\n ]),\n include: true,\n });\n\n if (!result.success) {\n if (result.isBreak()) {\n return result;\n }\n // Nothing to propose for the element which doesn't fit the\n // available space.\n delete this[$extra];\n return HTMLResult.FAILURE;\n }\n\n style.width = measureToString(this[$extra].width);\n style.height = measureToString(this[$extra].height);\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\n delete this[$extra];\n\n return HTMLResult.success(html, bbox);\n }\n}\n\nclass Assist extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"assist\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.role = attributes.role || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.speak = null;\n this.toolTip = null;\n }\n\n [$toHTML]() {\n return this.toolTip && this.toolTip[$content]\n ? this.toolTip[$content]\n : null;\n }\n}\n\nclass Barcode extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"barcode\", /* hasChildren = */ true);\n this.charEncoding = getKeyword({\n data: attributes.charEncoding\n ? attributes.charEncoding.toLowerCase()\n : \"\",\n defaultValue: \"\",\n validate: k =>\n [\n \"utf-8\",\n \"big-five\",\n \"fontspecific\",\n \"gbk\",\n \"gb-18030\",\n \"gb-2312\",\n \"ksc-5601\",\n \"none\",\n \"shift-jis\",\n \"ucs-2\",\n \"utf-16\",\n ].includes(k) || k.match(/iso-8859-\\d{2}/),\n });\n this.checksum = getStringOption(attributes.checksum, [\n \"none\",\n \"1mod10\",\n \"1mod10_1mod11\",\n \"2mod10\",\n \"auto\",\n ]);\n this.dataColumnCount = getInteger({\n data: attributes.dataColumnCount,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.dataLength = getInteger({\n data: attributes.dataLength,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.dataPrep = getStringOption(attributes.dataPrep, [\n \"none\",\n \"flateCompress\",\n ]);\n this.dataRowCount = getInteger({\n data: attributes.dataRowCount,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.endChar = attributes.endChar || \"\";\n this.errorCorrectionLevel = getInteger({\n data: attributes.errorCorrectionLevel,\n defaultValue: -1,\n validate: x => x >= 0 && x <= 8,\n });\n this.id = attributes.id || \"\";\n this.moduleHeight = getMeasurement(attributes.moduleHeight, \"5mm\");\n this.moduleWidth = getMeasurement(attributes.moduleWidth, \"0.25mm\");\n this.printCheckDigit = getInteger({\n data: attributes.printCheckDigit,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.rowColumnRatio = getRatio(attributes.rowColumnRatio);\n this.startChar = attributes.startChar || \"\";\n this.textLocation = getStringOption(attributes.textLocation, [\n \"below\",\n \"above\",\n \"aboveEmbedded\",\n \"belowEmbedded\",\n \"none\",\n ]);\n this.truncate = getInteger({\n data: attributes.truncate,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.type = getStringOption(\n attributes.type ? attributes.type.toLowerCase() : \"\",\n [\n \"aztec\",\n \"codabar\",\n \"code2of5industrial\",\n \"code2of5interleaved\",\n \"code2of5matrix\",\n \"code2of5standard\",\n \"code3of9\",\n \"code3of9extended\",\n \"code11\",\n \"code49\",\n \"code93\",\n \"code128\",\n \"code128a\",\n \"code128b\",\n \"code128c\",\n \"code128sscc\",\n \"datamatrix\",\n \"ean8\",\n \"ean8add2\",\n \"ean8add5\",\n \"ean13\",\n \"ean13add2\",\n \"ean13add5\",\n \"ean13pwcd\",\n \"fim\",\n \"logmars\",\n \"maxicode\",\n \"msi\",\n \"pdf417\",\n \"pdf417macro\",\n \"plessey\",\n \"postauscust2\",\n \"postauscust3\",\n \"postausreplypaid\",\n \"postausstandard\",\n \"postukrm4scc\",\n \"postusdpbc\",\n \"postusimb\",\n \"postusstandard\",\n \"postus5zip\",\n \"qrcode\",\n \"rfid\",\n \"rss14\",\n \"rss14expanded\",\n \"rss14limited\",\n \"rss14stacked\",\n \"rss14stackedomni\",\n \"rss14truncated\",\n \"telepen\",\n \"ucc128\",\n \"ucc128random\",\n \"ucc128sscc\",\n \"upca\",\n \"upcaadd2\",\n \"upcaadd5\",\n \"upcapwcd\",\n \"upce\",\n \"upceadd2\",\n \"upceadd5\",\n \"upcean2\",\n \"upcean5\",\n \"upsmaxicode\",\n ]\n );\n this.upsMode = getStringOption(attributes.upsMode, [\n \"usCarrier\",\n \"internationalCarrier\",\n \"secureSymbol\",\n \"standardSymbol\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio);\n this.encrypt = null;\n this.extras = null;\n }\n}\n\nclass Bind extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bind\", /* hasChildren = */ true);\n this.match = getStringOption(attributes.match, [\n \"once\",\n \"dataRef\",\n \"global\",\n \"none\",\n ]);\n this.ref = attributes.ref || \"\";\n this.picture = null;\n }\n}\n\nclass BindItems extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bindItems\");\n this.connection = attributes.connection || \"\";\n this.labelRef = attributes.labelRef || \"\";\n this.ref = attributes.ref || \"\";\n this.valueRef = attributes.valueRef || \"\";\n }\n}\n\nclass Bookend extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bookend\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass BooleanElement extends Option01 {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"boolean\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] === 1 ? \"1\" : \"0\");\n }\n}\n\nclass Border extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"border\", /* hasChildren = */ true);\n this.break = getStringOption(attributes.break, [\"close\", \"open\"]);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.extras = null;\n this.fill = null;\n this.margin = null;\n }\n\n [$getExtra]() {\n if (!this[$extra]) {\n const edges = this.edge.children.slice();\n if (edges.length < 4) {\n const defaultEdge = edges[edges.length - 1] || new Edge({});\n for (let i = edges.length; i < 4; i++) {\n edges.push(defaultEdge);\n }\n }\n\n const widths = edges.map(edge => edge.thickness);\n const insets = [0, 0, 0, 0];\n if (this.margin) {\n insets[0] = this.margin.topInset;\n insets[1] = this.margin.rightInset;\n insets[2] = this.margin.bottomInset;\n insets[3] = this.margin.leftInset;\n }\n this[$extra] = { widths, insets, edges };\n }\n return this[$extra];\n }\n\n [$toStyle]() {\n // TODO: incomplete (hand).\n const { edges } = this[$getExtra]();\n const edgeStyles = edges.map(node => {\n const style = node[$toStyle]();\n style.color = style.color || \"#000000\";\n return style;\n });\n\n const style = Object.create(null);\n if (this.margin) {\n Object.assign(style, this.margin[$toStyle]());\n }\n\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n }\n\n if (this.corner.children.some(node => node.radius !== 0)) {\n const cornerStyles = this.corner.children.map(node => node[$toStyle]());\n if (cornerStyles.length === 2 || cornerStyles.length === 3) {\n const last = cornerStyles[cornerStyles.length - 1];\n for (let i = cornerStyles.length; i < 4; i++) {\n cornerStyles.push(last);\n }\n }\n\n style.borderRadius = cornerStyles.map(s => s.radius).join(\" \");\n }\n\n switch (this.presence) {\n case \"invisible\":\n case \"hidden\":\n style.borderStyle = \"\";\n break;\n case \"inactive\":\n style.borderStyle = \"none\";\n break;\n default:\n style.borderStyle = edgeStyles.map(s => s.style).join(\" \");\n break;\n }\n\n style.borderWidth = edgeStyles.map(s => s.width).join(\" \");\n style.borderColor = edgeStyles.map(s => s.color).join(\" \");\n\n return style;\n }\n}\n\nclass Break extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"break\", /* hasChildren = */ true);\n this.after = getStringOption(attributes.after, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n \"pageEven\",\n \"pageOdd\",\n ]);\n this.afterTarget = attributes.afterTarget || \"\";\n this.before = getStringOption(attributes.before, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n \"pageEven\",\n \"pageOdd\",\n ]);\n this.beforeTarget = attributes.beforeTarget || \"\";\n this.bookendLeader = attributes.bookendLeader || \"\";\n this.bookendTrailer = attributes.bookendTrailer || \"\";\n this.id = attributes.id || \"\";\n this.overflowLeader = attributes.overflowLeader || \"\";\n this.overflowTarget = attributes.overflowTarget || \"\";\n this.overflowTrailer = attributes.overflowTrailer || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass BreakAfter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakAfter\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n ]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n}\n\nclass BreakBefore extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakBefore\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n ]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n\n [$toHTML](availableSpace) {\n this[$extra] = {};\n return HTMLResult.FAILURE;\n }\n}\n\nclass Button extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"button\", /* hasChildren = */ true);\n this.highlight = getStringOption(attributes.highlight, [\n \"inverted\",\n \"none\",\n \"outline\",\n \"push\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: highlight.\n\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const htmlButton = {\n name: \"button\",\n attributes: {\n id: this[$uid],\n class: [\"xfaButton\"],\n style: {},\n },\n children: [],\n };\n\n for (const event of grandpa.event.children) {\n // if (true) break;\n if (event.activity !== \"click\" || !event.script) {\n continue;\n }\n const jsURL = recoverJsURL(event.script[$content]);\n if (!jsURL) {\n continue;\n }\n const href = fixURL(jsURL.url);\n if (!href) {\n continue;\n }\n\n // we've an url so generate a <a>\n htmlButton.children.push({\n name: \"a\",\n attributes: {\n id: \"link\" + this[$uid],\n href,\n newWindow: jsURL.newWindow,\n class: [\"xfaLink\"],\n style: {},\n },\n children: [],\n });\n }\n\n return HTMLResult.success(htmlButton);\n }\n}\n\nclass Calculate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"calculate\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.override = getStringOption(attributes.override, [\n \"disabled\",\n \"error\",\n \"ignore\",\n \"warning\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.script = null;\n }\n}\n\nclass Caption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"caption\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.placement = getStringOption(attributes.placement, [\n \"left\",\n \"bottom\",\n \"inline\",\n \"right\",\n \"top\",\n ]);\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.reserve = Math.ceil(getMeasurement(attributes.reserve));\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.font = null;\n this.margin = null;\n this.para = null;\n this.value = null;\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$getExtra](availableSpace) {\n if (!this[$extra]) {\n let { width, height } = availableSpace;\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width = this.reserve <= 0 ? width : this.reserve;\n break;\n case \"top\":\n case \"bottom\":\n height = this.reserve <= 0 ? height : this.reserve;\n break;\n }\n\n this[$extra] = layoutNode(this, { width, height });\n }\n return this[$extra];\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n if (!this.value) {\n return HTMLResult.EMPTY;\n }\n\n this[$pushPara]();\n const value = this.value[$toHTML](availableSpace).html;\n\n if (!value) {\n this[$popPara]();\n return HTMLResult.EMPTY;\n }\n\n const savedReserve = this.reserve;\n if (this.reserve <= 0) {\n const { w, h } = this[$getExtra](availableSpace);\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n this.reserve = w;\n break;\n case \"top\":\n case \"bottom\":\n this.reserve = h;\n break;\n }\n }\n\n const children = [];\n if (typeof value === \"string\") {\n children.push({\n name: \"#text\",\n value,\n });\n } else {\n children.push(value);\n }\n\n const style = toStyle(this, \"font\", \"margin\", \"visibility\");\n switch (this.placement) {\n case \"left\":\n case \"right\":\n if (this.reserve > 0) {\n style.width = measureToString(this.reserve);\n }\n break;\n case \"top\":\n case \"bottom\":\n if (this.reserve > 0) {\n style.height = measureToString(this.reserve);\n }\n break;\n }\n\n setPara(this, null, value);\n this[$popPara]();\n\n this.reserve = savedReserve;\n\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style,\n class: [\"xfaCaption\"],\n },\n children,\n });\n }\n}\n\nclass Certificate extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificate\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Certificates extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificates\", /* hasChildren = */ true);\n this.credentialServerPolicy = getStringOption(\n attributes.credentialServerPolicy,\n [\"optional\", \"required\"]\n );\n this.id = attributes.id || \"\";\n this.url = attributes.url || \"\";\n this.urlPolicy = attributes.urlPolicy || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryption = null;\n this.issuers = null;\n this.keyUsage = null;\n this.oids = null;\n this.signing = null;\n this.subjectDNs = null;\n }\n}\n\nclass CheckButton extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"checkButton\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.mark = getStringOption(attributes.mark, [\n \"default\",\n \"check\",\n \"circle\",\n \"cross\",\n \"diamond\",\n \"square\",\n \"star\",\n ]);\n this.shape = getStringOption(attributes.shape, [\"square\", \"round\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: border, shape and mark.\n\n const style = toStyle(\"margin\");\n const size = measureToString(this.size);\n\n style.width = style.height = size;\n\n let type;\n let className;\n let groupId;\n const field = this[$getParent]()[$getParent]();\n const items =\n (field.items.children.length &&\n field.items.children[0][$toHTML]().html) ||\n [];\n const exportedValue = {\n on: (items[0] !== undefined ? items[0] : \"on\").toString(),\n off: (items[1] !== undefined ? items[1] : \"off\").toString(),\n };\n\n const value = (field.value && field.value[$text]()) || \"off\";\n const checked = value === exportedValue.on || undefined;\n const container = field[$getSubformParent]();\n const fieldId = field[$uid];\n let dataId;\n\n if (container instanceof ExclGroup) {\n groupId = container[$uid];\n type = \"radio\";\n className = \"xfaRadio\";\n dataId = (container[$data] && container[$data][$uid]) || container[$uid];\n } else {\n type = \"checkbox\";\n className = \"xfaCheckbox\";\n dataId = (field[$data] && field[$data][$uid]) || field[$uid];\n }\n\n const input = {\n name: \"input\",\n attributes: {\n class: [className],\n style,\n fieldId,\n dataId,\n type,\n checked,\n xfaOn: exportedValue.on,\n xfaOff: exportedValue.off,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n if (groupId) {\n input.attributes.name = groupId;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [input],\n });\n }\n}\n\nclass ChoiceList extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"choiceList\", /* hasChildren = */ true);\n this.commitOn = getStringOption(attributes.commitOn, [\"select\", \"exit\"]);\n this.id = attributes.id || \"\";\n this.open = getStringOption(attributes.open, [\n \"userControl\",\n \"always\",\n \"multiSelect\",\n \"onEntry\",\n ]);\n this.textEntry = getInteger({\n data: attributes.textEntry,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"margin\");\n const ui = this[$getParent]();\n const field = ui[$getParent]();\n const fontSize = (field.font && field.font.size) || 10;\n const optionStyle = {\n fontSize: `calc(${fontSize}px * var(--zoom-factor))`,\n };\n const children = [];\n\n if (field.items.children.length > 0) {\n const items = field.items;\n let displayedIndex = 0;\n let saveIndex = 0;\n if (items.children.length === 2) {\n displayedIndex = items.children[0].save;\n saveIndex = 1 - displayedIndex;\n }\n const displayed = items.children[displayedIndex][$toHTML]().html;\n const values = items.children[saveIndex][$toHTML]().html;\n\n let selected = false;\n const value = (field.value && field.value[$text]()) || \"\";\n for (let i = 0, ii = displayed.length; i < ii; i++) {\n const option = {\n name: \"option\",\n attributes: {\n value: values[i] || displayed[i],\n style: optionStyle,\n },\n value: displayed[i],\n };\n if (values[i] === value) {\n option.attributes.selected = selected = true;\n }\n children.push(option);\n }\n\n if (!selected) {\n children.splice(0, 0, {\n name: \"option\",\n attributes: {\n hidden: true,\n selected: true,\n },\n value: \" \",\n });\n }\n }\n\n const selectAttributes = {\n class: [\"xfaSelect\"],\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n style,\n \"aria-label\": ariaLabel(field),\n };\n\n if (this.open === \"multiSelect\") {\n selectAttributes.multiple = true;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [\n {\n name: \"select\",\n children,\n attributes: selectAttributes,\n },\n ],\n });\n }\n}\n\nclass Color extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"color\", /* hasChildren = */ true);\n this.cSpace = getStringOption(attributes.cSpace, [\"SRGB\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.value = attributes.value ? getColor(attributes.value) : \"\";\n this.extras = null;\n }\n\n [$hasSettableValue]() {\n return false;\n }\n\n [$toStyle]() {\n return this.value\n ? Util.makeHexColor(this.value.r, this.value.g, this.value.b)\n : null;\n }\n}\n\nclass Comb extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"comb\");\n this.id = attributes.id || \"\";\n this.numberOfCells = getInteger({\n data: attributes.numberOfCells,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Connect extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"connect\", /* hasChildren = */ true);\n this.connection = attributes.connection || \"\";\n this.id = attributes.id || \"\";\n this.ref = attributes.ref || \"\";\n this.usage = getStringOption(attributes.usage, [\n \"exportAndImport\",\n \"exportOnly\",\n \"importOnly\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.picture = null;\n }\n}\n\nclass ContentArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"contentArea\", /* hasChildren = */ true);\n this.h = getMeasurement(attributes.h);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = getMeasurement(attributes.w);\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const left = measureToString(this.x);\n const top = measureToString(this.y);\n\n const style = {\n left,\n top,\n width: measureToString(this.w),\n height: measureToString(this.h),\n };\n\n const classNames = [\"xfaContentarea\"];\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {\n style,\n class: classNames,\n id: this[$uid],\n },\n });\n }\n}\n\nclass Corner extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"corner\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.inverted = getInteger({\n data: attributes.inverted,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.join = getStringOption(attributes.join, [\"square\", \"round\"]);\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.radius = getMeasurement(attributes.radius);\n this.stroke = getStringOption(attributes.stroke, [\n \"solid\",\n \"dashDot\",\n \"dashDotDot\",\n \"dashed\",\n \"dotted\",\n \"embossed\",\n \"etched\",\n \"lowered\",\n \"raised\",\n ]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle]() {\n // In using CSS it's only possible to handle radius\n // (at least with basic css).\n // Is there a real use (interest ?) of all these properties ?\n // Maybe it's possible to implement them using svg and border-image...\n // TODO: implement all the missing properties.\n const style = toStyle(this, \"visibility\");\n style.radius = measureToString(this.join === \"square\" ? 0 : this.radius);\n return style;\n }\n}\n\nclass DateElement extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"date\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass DateTime extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTime\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass DateTimeEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTimeEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.picker = getStringOption(attributes.picker, [\"host\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n // When the picker is host we should use type=date for the input\n // but we need to put the buttons outside the text-field.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Decimal extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"decimal\");\n this.fracDigits = getInteger({\n data: attributes.fracDigits,\n defaultValue: 2,\n validate: x => true,\n });\n this.id = attributes.id || \"\";\n this.leadDigits = getInteger({\n data: attributes.leadDigits,\n defaultValue: -1,\n validate: x => true,\n });\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass DefaultUi extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"defaultUi\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass Desc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"desc\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\n\nclass DigestMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethod\", [\n \"\",\n \"SHA1\",\n \"SHA256\",\n \"SHA512\",\n \"RIPEMD160\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass DigestMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethods\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.digestMethod = new XFAObjectArray();\n }\n}\n\nclass Draw extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"draw\", /* hasChildren = */ true);\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.border = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.value = null;\n this.setProperty = new XFAObjectArray();\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n\n fixDimensions(this);\n this[$pushPara]();\n\n // If at least one dimension is missing and we've a text\n // then we can guess it in laying out the text.\n const savedW = this.w;\n const savedH = this.h;\n const { w, h, isBroken } = layoutNode(this, availableSpace);\n if (w && this.w === \"\") {\n // If the parent layout is lr-tb with a w=100 and we already have a child\n // which takes 90 on the current line.\n // If we have a text with a length (in px) equal to 100 then it'll be\n // splitted into almost 10 chunks: so it won't be nice.\n // So if we've potentially more width to provide in some parent containers\n // let's increase it to give a chance to have a better rendering.\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n\n this.w = w;\n }\n if (h && this.h === \"\") {\n this.h = h;\n }\n\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n\n const style = toStyle(\n this,\n \"font\",\n \"hAlign\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"rotate\",\n \"anchorType\",\n \"border\",\n \"margin\"\n );\n\n setMinMaxDimensions(this, style);\n\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n\n const classNames = [\"xfaDraw\"];\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const attributes = {\n style,\n id: this[$uid],\n class: classNames,\n };\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const html = {\n name: \"div\",\n attributes,\n children: [],\n };\n\n applyAssist(this, attributes);\n\n const bbox = computeBbox(this, html, availableSpace);\n\n const value = this.value ? this.value[$toHTML](availableSpace).html : null;\n if (value === null) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n html.children.push(value);\n setPara(this, style, value);\n\n this.w = savedW;\n this.h = savedH;\n\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Edge extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"edge\", /* hasChildren = */ true);\n this.cap = getStringOption(attributes.cap, [\"square\", \"butt\", \"round\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.stroke = getStringOption(attributes.stroke, [\n \"solid\",\n \"dashDot\",\n \"dashDotDot\",\n \"dashed\",\n \"dotted\",\n \"embossed\",\n \"etched\",\n \"lowered\",\n \"raised\",\n ]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle]() {\n // TODO: dashDot & dashDotDot.\n const style = toStyle(this, \"visibility\");\n Object.assign(style, {\n linecap: this.cap,\n width: measureToString(this.thickness),\n color: this.color ? this.color[$toStyle]() : \"#000000\",\n style: \"\",\n });\n\n if (this.presence !== \"visible\") {\n style.style = \"none\";\n } else {\n switch (this.stroke) {\n case \"solid\":\n style.style = \"solid\";\n break;\n case \"dashDot\":\n style.style = \"dashed\";\n break;\n case \"dashDotDot\":\n style.style = \"dashed\";\n break;\n case \"dashed\":\n style.style = \"dashed\";\n break;\n case \"dotted\":\n style.style = \"dotted\";\n break;\n case \"embossed\":\n style.style = \"ridge\";\n break;\n case \"etched\":\n style.style = \"groove\";\n break;\n case \"lowered\":\n style.style = \"inset\";\n break;\n case \"raised\":\n style.style = \"outset\";\n break;\n }\n }\n return style;\n }\n}\n\nclass Encoding extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encoding\", [\n \"adbe.x509.rsa_sha1\",\n \"adbe.pkcs7.detached\",\n \"adbe.pkcs7.sha1\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Encodings extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encodings\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encoding = new XFAObjectArray();\n }\n}\n\nclass Encrypt extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encrypt\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = null;\n }\n}\n\nclass EncryptData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptData\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"encrypt\",\n \"decrypt\",\n ]);\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\n\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryption\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass EncryptionMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethod\", [\n \"\",\n \"AES256-CBC\",\n \"TRIPLEDES-CBC\",\n \"AES128-CBC\",\n \"AES192-CBC\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass EncryptionMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethods\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryptionMethod = new XFAObjectArray();\n }\n}\n\nclass Event extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"event\", /* hasChildren = */ true);\n this.activity = getStringOption(attributes.activity, [\n \"click\",\n \"change\",\n \"docClose\",\n \"docReady\",\n \"enter\",\n \"exit\",\n \"full\",\n \"indexChange\",\n \"initialize\",\n \"mouseDown\",\n \"mouseEnter\",\n \"mouseExit\",\n \"mouseUp\",\n \"postExecute\",\n \"postOpen\",\n \"postPrint\",\n \"postSave\",\n \"postSign\",\n \"postSubmit\",\n \"preExecute\",\n \"preOpen\",\n \"prePrint\",\n \"preSave\",\n \"preSign\",\n \"preSubmit\",\n \"ready\",\n \"validationState\",\n ]);\n this.id = attributes.id || \"\";\n this.listen = getStringOption(attributes.listen, [\n \"refOnly\",\n \"refAndDescendents\",\n ]);\n this.name = attributes.name || \"\";\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n\n // One-of properties\n this.encryptData = null;\n this.execute = null;\n this.script = null;\n this.signData = null;\n this.submit = null;\n }\n}\n\nclass ExData extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exData\");\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.maxLength = getInteger({\n data: attributes.maxLength,\n defaultValue: -1,\n validate: x => x >= -1,\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\n \"none\",\n \"base64\",\n \"package\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$isCDATAXml]() {\n return this.contentType === \"text/html\";\n }\n\n [$onChild](child) {\n if (\n this.contentType === \"text/html\" &&\n child[$namespaceId] === NamespaceIds.xhtml.id\n ) {\n this[$content] = child;\n return true;\n }\n\n if (this.contentType === \"text/xml\") {\n this[$content] = child;\n return true;\n }\n\n return false;\n }\n\n [$toHTML](availableSpace) {\n if (this.contentType !== \"text/html\" || !this[$content]) {\n // TODO: fix other cases.\n return HTMLResult.EMPTY;\n }\n\n return this[$content][$toHTML](availableSpace);\n }\n}\n\nclass ExObject extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exObject\", /* hasChildren = */ true);\n this.archive = attributes.archive || \"\";\n this.classId = attributes.classId || \"\";\n this.codeBase = attributes.codeBase || \"\";\n this.codeType = attributes.codeType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\n\nclass ExclGroup extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exclGroup\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\n \"position\",\n \"lr-tb\",\n \"rl-row\",\n \"rl-tb\",\n \"row\",\n \"table\",\n \"tb\",\n ]);\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$hasSettableValue]() {\n return true;\n }\n\n [$setValue](value) {\n for (const field of this.field.children) {\n if (!field.value) {\n const nodeValue = new Value({});\n field[$appendChild](nodeValue);\n field.value = nodeValue;\n }\n\n field.value[$setValue](value);\n }\n }\n\n [$isThereMoreWidth]() {\n return (\n (this.layout.endsWith(\"-tb\") &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine > 0) ||\n this[$getParent]()[$isThereMoreWidth]()\n );\n }\n\n [$isSplittable]() {\n // We cannot cache the result here because the contentArea\n // can change.\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (\n parent.layout &&\n parent.layout.endsWith(\"-tb\") &&\n parent[$extra].numberInLine !== 0\n ) {\n // See comment in Subform::[$isSplittable] for an explanation.\n return false;\n }\n\n this[$extra]._isSplittable = true;\n return true;\n }\n\n [$flushHTML]() {\n return flushHTML(this);\n }\n\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (\n this.presence === \"hidden\" ||\n this.presence === \"inactive\" ||\n this.h === 0 ||\n this.w === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n fixDimensions(this);\n\n const children = [];\n const attributes = {\n id: this[$uid],\n class: [],\n };\n\n setAccess(this, attributes.class);\n\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\n }\n\n Object.assign(this[$extra], {\n children,\n attributes,\n attempt: 0,\n line: null,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height),\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0,\n });\n\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n const filter = new Set([\"field\"]);\n\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n\n const style = toStyle(\n this,\n \"anchorType\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"border\",\n \"margin\",\n \"hAlign\"\n );\n const classNames = [\"xfaExclgroup\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n attributes.style = style;\n attributes.class = classNames;\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n // If the layout is lr-tb then having attempt equals to\n // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n // on the next line so this on is empty.\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true,\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (\n isLrTb &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine === 0 &&\n !this[$getTemplateRoot]()[$extra].noLayoutFailure\n ) {\n // See comment in Subform::[$toHTML].\n this[$extra].attempt = maxRun;\n break;\n }\n }\n\n this[$popPara]();\n\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n\n if (this[$extra].attempt === maxRun) {\n if (!isSplittable) {\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n delete this[$extra];\n\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Execute extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"execute\");\n this.connection = attributes.connection || \"\";\n this.executeType = getStringOption(attributes.executeType, [\n \"import\",\n \"remerge\",\n ]);\n this.id = attributes.id || \"\";\n this.runAt = getStringOption(attributes.runAt, [\n \"client\",\n \"both\",\n \"server\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Extras extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"extras\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n // (Spec) The XFA template grammar defines the extras and desc elements,\n // which can be used to add human-readable or machine-readable\n // data to a template.\n}\n\nclass Field extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"field\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.format = null;\n // For a choice list, one list is used to have display entries\n // and the other for the exported values\n this.items = new XFAObjectArray(2);\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.validate = null;\n this.value = null;\n this.bindItems = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (!this.ui) {\n // It's allowed to not have an ui, specs say:\n // If the UI element contains no children or is not present,\n // the application chooses a default user interface for the\n // container, based on the type of the container's content.\n\n this.ui = new Ui({});\n this.ui[$globalData] = this[$globalData];\n this[$appendChild](this.ui);\n let node;\n\n // The items element can have 2 element max and\n // according to the items specs it's likely a good\n // way to guess the correct ui type.\n switch (this.items.children.length) {\n case 0:\n node = new TextEdit({});\n this.ui.textEdit = node;\n break;\n case 1:\n node = new CheckButton({});\n this.ui.checkButton = node;\n break;\n case 2:\n node = new ChoiceList({});\n this.ui.choiceList = node;\n break;\n }\n this.ui[$appendChild](node);\n }\n\n if (\n !this.ui ||\n this.presence === \"hidden\" ||\n this.presence === \"inactive\" ||\n this.h === 0 ||\n this.w === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n if (this.caption) {\n // Maybe we already tried to layout this field with\n // another availableSpace, so to avoid to use the cached\n // value just delete it.\n delete this.caption[$extra];\n }\n\n this[$pushPara]();\n\n const caption = this.caption\n ? this.caption[$toHTML](availableSpace).html\n : null;\n const savedW = this.w;\n const savedH = this.h;\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n let borderDims = null;\n if (this.w === \"\" || this.h === \"\") {\n let width = null;\n let height = null;\n\n let uiW = 0;\n let uiH = 0;\n if (this.ui.checkButton) {\n uiW = uiH = this.ui.checkButton.size;\n } else {\n const { w, h } = layoutNode(this, availableSpace);\n if (w !== null) {\n uiW = w;\n uiH = h;\n } else {\n uiH = getMetrics(this.font, /* real = */ true).lineNoGap;\n }\n }\n\n borderDims = getBorderDims(this.ui[$getExtra]());\n uiW += borderDims.w;\n uiH += borderDims.h;\n\n if (this.caption) {\n const { w, h, isBroken } = this.caption[$getExtra](availableSpace);\n // See comment in Draw::[$toHTML] to have an explanation\n // about this line.\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n\n width = w;\n height = h;\n\n switch (this.caption.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width += uiW;\n break;\n case \"top\":\n case \"bottom\":\n height += uiH;\n break;\n }\n } else {\n width = uiW;\n height = uiH;\n }\n\n if (width && this.w === \"\") {\n width += marginH;\n this.w = Math.min(\n this.maxW <= 0 ? Infinity : this.maxW,\n this.minW + 1 < width ? width : this.minW\n );\n }\n\n if (height && this.h === \"\") {\n height += marginV;\n this.h = Math.min(\n this.maxH <= 0 ? Infinity : this.maxH,\n this.minH + 1 < height ? height : this.minH\n );\n }\n }\n\n this[$popPara]();\n\n fixDimensions(this);\n\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n\n const style = toStyle(\n this,\n \"font\",\n \"dimensions\",\n \"position\",\n \"rotate\",\n \"anchorType\",\n \"presence\",\n \"margin\",\n \"hAlign\"\n );\n\n setMinMaxDimensions(this, style);\n\n const classNames = [\"xfaField\"];\n // If no font, font properties are inherited.\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const attributes = {\n style,\n id: this[$uid],\n class: classNames,\n };\n\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n\n setAccess(this, classNames);\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const children = [];\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n const borderStyle = this.border ? this.border[$toStyle]() : null;\n const bbox = computeBbox(this, html, availableSpace);\n const ui = this.ui[$toHTML]().html;\n if (!ui) {\n Object.assign(style, borderStyle);\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n if (this[$tabIndex]) {\n if (ui.children && ui.children[0]) {\n ui.children[0].attributes.tabindex = this[$tabIndex];\n } else {\n ui.attributes.tabindex = this[$tabIndex];\n }\n }\n\n if (!ui.attributes.style) {\n ui.attributes.style = Object.create(null);\n }\n\n let aElement = null;\n\n if (this.ui.button) {\n if (ui.children.length === 1) {\n [aElement] = ui.children.splice(0, 1);\n }\n Object.assign(ui.attributes.style, borderStyle);\n } else {\n Object.assign(style, borderStyle);\n }\n\n children.push(ui);\n\n if (this.value) {\n if (this.ui.imageEdit) {\n ui.children.push(this.value[$toHTML]().html);\n } else if (!this.ui.button) {\n let value = \"\";\n if (this.value.exData) {\n value = this.value.exData[$text]();\n } else if (this.value.text) {\n value = this.value.text[$getExtra]();\n } else {\n const htmlValue = this.value[$toHTML]().html;\n if (htmlValue !== null) {\n value = htmlValue.children[0].value;\n }\n }\n if (this.ui.textEdit && this.value.text && this.value.text.maxChars) {\n ui.children[0].attributes.maxLength = this.value.text.maxChars;\n }\n\n if (value) {\n if (this.ui.numericEdit) {\n value = parseFloat(value);\n value = isNaN(value) ? \"\" : value.toString();\n }\n\n if (ui.children[0].name === \"textarea\") {\n ui.children[0].attributes.textContent = value;\n } else {\n ui.children[0].attributes.value = value;\n }\n }\n }\n }\n\n if (!this.ui.imageEdit && ui.children && ui.children[0] && this.h) {\n borderDims = borderDims || getBorderDims(this.ui[$getExtra]());\n\n let captionHeight = 0;\n if (this.caption && [\"top\", \"bottom\"].includes(this.caption.placement)) {\n captionHeight = this.caption.reserve;\n if (captionHeight <= 0) {\n captionHeight = this.caption[$getExtra](availableSpace).h;\n }\n const inputHeight = this.h - captionHeight - marginV - borderDims.h;\n ui.children[0].attributes.style.height = measureToString(inputHeight);\n } else {\n ui.children[0].attributes.style.height = \"100%\";\n }\n }\n\n if (aElement) {\n ui.children.push(aElement);\n }\n\n if (!caption) {\n if (ui.attributes.class) {\n // Even if no caption this class will help to center the ui.\n ui.attributes.class.push(\"xfaLeft\");\n }\n this.w = savedW;\n this.h = savedH;\n\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n if (this.ui.button) {\n if (style.padding) {\n delete style.padding;\n }\n if (caption.name === \"div\") {\n caption.name = \"span\";\n }\n ui.children.push(caption);\n return HTMLResult.success(html, bbox);\n } else if (this.ui.checkButton) {\n caption.attributes.class[0] = \"xfaCaptionForCheckButton\";\n }\n\n if (!ui.attributes.class) {\n ui.attributes.class = [];\n }\n\n ui.children.splice(0, 0, caption);\n\n switch (this.caption.placement) {\n case \"left\":\n ui.attributes.class.push(\"xfaLeft\");\n break;\n case \"right\":\n ui.attributes.class.push(\"xfaRight\");\n break;\n case \"top\":\n ui.attributes.class.push(\"xfaTop\");\n break;\n case \"bottom\":\n ui.attributes.class.push(\"xfaBottom\");\n break;\n case \"inline\":\n // TODO;\n ui.attributes.class.push(\"xfaLeft\");\n break;\n }\n\n this.w = savedW;\n this.h = savedH;\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Fill extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"fill\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n\n // One-of properties or none\n this.linear = null;\n this.pattern = null;\n this.radial = null;\n this.solid = null;\n this.stipple = null;\n }\n\n [$toStyle]() {\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const ggrandpa = grandpa[$getParent]();\n const style = Object.create(null);\n\n // Use for color, i.e. #...\n let propName = \"color\";\n\n // Use for non-color, i.e. gradient, radial-gradient...\n let altPropName = propName;\n\n if (parent instanceof Border) {\n propName = \"background-color\";\n altPropName = \"background\";\n if (ggrandpa instanceof Ui) {\n // The default fill color is white.\n style.backgroundColor = \"white\";\n }\n }\n if (parent instanceof Rectangle || parent instanceof Arc) {\n propName = altPropName = \"fill\";\n style.fill = \"white\";\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"color\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n const color = obj[$toStyle](this.color);\n if (color) {\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n return style;\n }\n\n if (this.color && this.color.value) {\n const color = this.color[$toStyle]();\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n\n return style;\n }\n}\n\nclass Filter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"filter\", /* hasChildren = */ true);\n this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\n \"\",\n \"required\",\n \"optional\",\n \"none\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.version = getInteger({\n data: this.version,\n defaultValue: 5,\n validate: x => x >= 1 && x <= 5,\n });\n this.appearanceFilter = null;\n this.certificates = null;\n this.digestMethods = null;\n this.encodings = null;\n this.encryptionMethods = null;\n this.handler = null;\n this.lockDocument = null;\n this.mdp = null;\n this.reasons = null;\n this.timeStamp = null;\n }\n}\n\nclass Float extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"float\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass Font extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"font\", /* hasChildren = */ true);\n this.baselineShift = getMeasurement(attributes.baselineShift);\n this.fontHorizontalScale = getFloat({\n data: attributes.fontHorizontalScale,\n defaultValue: 100,\n validate: x => x >= 0,\n });\n this.fontVerticalScale = getFloat({\n data: attributes.fontVerticalScale,\n defaultValue: 100,\n validate: x => x >= 0,\n });\n this.id = attributes.id || \"\";\n this.kerningMode = getStringOption(attributes.kerningMode, [\n \"none\",\n \"pair\",\n ]);\n this.letterSpacing = getMeasurement(attributes.letterSpacing, \"0\");\n this.lineThrough = getInteger({\n data: attributes.lineThrough,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, [\n \"all\",\n \"word\",\n ]);\n this.overline = getInteger({\n data: attributes.overline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.overlinePeriod = getStringOption(attributes.overlinePeriod, [\n \"all\",\n \"word\",\n ]);\n this.posture = getStringOption(attributes.posture, [\"normal\", \"italic\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.typeface = attributes.typeface || \"Courier\";\n this.underline = getInteger({\n data: attributes.underline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.underlinePeriod = getStringOption(attributes.underlinePeriod, [\n \"all\",\n \"word\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.weight = getStringOption(attributes.weight, [\"normal\", \"bold\"]);\n this.extras = null;\n this.fill = null;\n }\n\n [$clean](builder) {\n super[$clean](builder);\n this[$globalData].usedTypefaces.add(this.typeface);\n }\n\n [$toStyle]() {\n const style = toStyle(this, \"fill\");\n const color = style.color;\n if (color) {\n if (color === \"#000000\") {\n // Default font color.\n delete style.color;\n } else if (!color.startsWith(\"#\")) {\n // We've a gradient which is not possible for a font color\n // so use a workaround.\n style.background = color;\n style.backgroundClip = \"text\";\n style.color = \"transparent\";\n }\n }\n\n if (this.baselineShift) {\n style.verticalAlign = measureToString(this.baselineShift);\n }\n\n // TODO: fontHorizontalScale\n // TODO: fontVerticalScale\n\n style.fontKerning = this.kerningMode === \"none\" ? \"none\" : \"normal\";\n style.letterSpacing = measureToString(this.letterSpacing);\n\n if (this.lineThrough !== 0) {\n style.textDecoration = \"line-through\";\n if (this.lineThrough === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: lineThroughPeriod\n\n if (this.overline !== 0) {\n style.textDecoration = \"overline\";\n if (this.overline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: overlinePeriod\n\n style.fontStyle = this.posture;\n style.fontSize = measureToString(0.99 * this.size);\n\n setFontFamily(this, this, this[$globalData].fontFinder, style);\n\n if (this.underline !== 0) {\n style.textDecoration = \"underline\";\n if (this.underline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: underlinePeriod\n\n style.fontWeight = this.weight;\n\n return style;\n }\n}\n\nclass Format extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"format\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n }\n}\n\nclass Handler extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"handler\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Hyphenation extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"hyphenation\");\n this.excludeAllCaps = getInteger({\n data: attributes.excludeAllCaps,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.excludeInitialCap = getInteger({\n data: attributes.excludeInitialCap,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hyphenate = getInteger({\n data: attributes.hyphenate,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.id = attributes.id || \"\";\n this.pushCharacterCount = getInteger({\n data: attributes.pushCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0,\n });\n this.remainCharacterCount = getInteger({\n data: attributes.remainCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wordCharacterCount = getInteger({\n data: attributes.wordCharacterCount,\n defaultValue: 7,\n validate: x => x >= 0,\n });\n }\n}\n\nclass Image extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"image\");\n this.aspect = getStringOption(attributes.aspect, [\n \"fit\",\n \"actual\",\n \"height\",\n \"none\",\n \"width\",\n ]);\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\n \"base64\",\n \"none\",\n \"package\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$toHTML]() {\n if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n return HTMLResult.EMPTY;\n }\n\n let buffer =\n this[$globalData].images && this[$globalData].images.get(this.href);\n if (!buffer && (this.href || !this[$content])) {\n // In general, we don't get remote data and use what we have\n // in the pdf itself, so no picture for non null href.\n return HTMLResult.EMPTY;\n }\n\n if (!buffer && this.transferEncoding === \"base64\") {\n buffer = stringToBytes(atob(this[$content]));\n }\n\n if (!buffer) {\n return HTMLResult.EMPTY;\n }\n\n if (!this.contentType) {\n for (const [header, type] of IMAGES_HEADERS) {\n if (\n buffer.length > header.length &&\n header.every((x, i) => x === buffer[i])\n ) {\n this.contentType = type;\n break;\n }\n }\n if (!this.contentType) {\n return HTMLResult.EMPTY;\n }\n }\n\n // TODO: Firefox doesn't support natively tiff (and tif) format.\n const blob = new Blob([buffer], { type: this.contentType });\n let style;\n switch (this.aspect) {\n case \"fit\":\n case \"actual\":\n // TODO: check what to do with actual.\n // Normally we should return {auto, auto} for it but\n // it implies some wrong rendering (see xfa_bug1716816.pdf).\n break;\n case \"height\":\n style = {\n height: \"100%\",\n objectFit: \"fill\",\n };\n break;\n case \"none\":\n style = {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"fill\",\n };\n break;\n case \"width\":\n style = {\n width: \"100%\",\n objectFit: \"fill\",\n };\n break;\n }\n const parent = this[$getParent]();\n return HTMLResult.success({\n name: \"img\",\n attributes: {\n class: [\"xfaImage\"],\n style,\n src: URL.createObjectURL(blob),\n alt: parent ? ariaLabel(parent[$getParent]()) : null,\n },\n });\n }\n}\n\nclass ImageEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"imageEdit\", /* hasChildren = */ true);\n this.data = getStringOption(attributes.data, [\"link\", \"embed\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n if (this.data === \"embed\") {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {},\n });\n }\n\n return HTMLResult.EMPTY;\n }\n}\n\nclass Integer extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"integer\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseInt(this[$content].trim(), 10);\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass Issuers extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"issuers\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass Items extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"items\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.ref = attributes.ref || \"\";\n this.save = getInteger({\n data: attributes.save,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n [$toHTML]() {\n const output = [];\n for (const child of this[$getChildren]()) {\n output.push(child[$text]());\n }\n return HTMLResult.success(output);\n }\n}\n\nclass Keep extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keep\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n const options = [\"none\", \"contentArea\", \"pageArea\"];\n this.intact = getStringOption(attributes.intact, options);\n this.next = getStringOption(attributes.next, options);\n this.previous = getStringOption(attributes.previous, options);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass KeyUsage extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keyUsage\");\n const options = [\"\", \"yes\", \"no\"];\n this.crlSign = getStringOption(attributes.crlSign, options);\n this.dataEncipherment = getStringOption(\n attributes.dataEncipherment,\n options\n );\n this.decipherOnly = getStringOption(attributes.decipherOnly, options);\n this.digitalSignature = getStringOption(\n attributes.digitalSignature,\n options\n );\n this.encipherOnly = getStringOption(attributes.encipherOnly, options);\n this.id = attributes.id || \"\";\n this.keyAgreement = getStringOption(attributes.keyAgreement, options);\n this.keyCertSign = getStringOption(attributes.keyCertSign, options);\n this.keyEncipherment = getStringOption(attributes.keyEncipherment, options);\n this.nonRepudiation = getStringOption(attributes.nonRepudiation, options);\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Line extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"line\", /* hasChildren = */ true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.slope = getStringOption(attributes.slope, [\"\\\\\", \"/\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n }\n\n [$toHTML]() {\n const parent = this[$getParent]()[$getParent]();\n const edge = this.edge ? this.edge : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n const thickness = edge.presence === \"visible\" ? edge.thickness : 0;\n style.strokeWidth = measureToString(thickness);\n style.stroke = edgeStyle.color;\n let x1, y1, x2, y2;\n let width = \"100%\";\n let height = \"100%\";\n\n if (parent.w <= thickness) {\n [x1, y1, x2, y2] = [\"50%\", 0, \"50%\", \"100%\"];\n width = style.strokeWidth;\n } else if (parent.h <= thickness) {\n [x1, y1, x2, y2] = [0, \"50%\", \"100%\", \"50%\"];\n height = style.strokeWidth;\n } else {\n if (this.slope === \"\\\\\") {\n [x1, y1, x2, y2] = [0, 0, \"100%\", \"100%\"];\n } else {\n [x1, y1, x2, y2] = [0, \"100%\", \"100%\", 0];\n }\n }\n\n const line = {\n name: \"line\",\n attributes: {\n xmlns: SVG_NS,\n x1,\n y1,\n x2,\n y2,\n style,\n },\n };\n\n const svg = {\n name: \"svg\",\n children: [line],\n attributes: {\n xmlns: SVG_NS,\n width,\n height,\n style: {\n overflow: \"visible\",\n },\n },\n };\n\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass Linear extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"linear\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\n \"toRight\",\n \"toBottom\",\n \"toLeft\",\n \"toTop\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const transf = this.type.replace(/([RBLT])/, \" $1\").toLowerCase();\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\n }\n}\n\nclass LockDocument extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"lockDocument\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n this[$content] = getStringOption(this[$content], [\"auto\", \"0\", \"1\"]);\n }\n}\n\nclass Manifest extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"manifest\", /* hasChildren = */ true);\n this.action = getStringOption(attributes.action, [\n \"include\",\n \"all\",\n \"exclude\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.ref = new XFAObjectArray();\n }\n}\n\nclass Margin extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"margin\", /* hasChildren = */ true);\n this.bottomInset = getMeasurement(attributes.bottomInset, \"0\");\n this.id = attributes.id || \"\";\n this.leftInset = getMeasurement(attributes.leftInset, \"0\");\n this.rightInset = getMeasurement(attributes.rightInset, \"0\");\n this.topInset = getMeasurement(attributes.topInset, \"0\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toStyle]() {\n return {\n margin:\n measureToString(this.topInset) +\n \" \" +\n measureToString(this.rightInset) +\n \" \" +\n measureToString(this.bottomInset) +\n \" \" +\n measureToString(this.leftInset),\n };\n }\n}\n\nclass Mdp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"mdp\");\n this.id = attributes.id || \"\";\n this.permissions = getInteger({\n data: attributes.permissions,\n defaultValue: 2,\n validate: x => x === 1 || x === 3,\n });\n this.signatureType = getStringOption(attributes.signatureType, [\n \"filler\",\n \"author\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Medium extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"medium\");\n this.id = attributes.id || \"\";\n this.imagingBBox = getBBox(attributes.imagingBBox);\n this.long = getMeasurement(attributes.long);\n this.orientation = getStringOption(attributes.orientation, [\n \"portrait\",\n \"landscape\",\n ]);\n this.short = getMeasurement(attributes.short);\n this.stock = attributes.stock || \"\";\n this.trayIn = getStringOption(attributes.trayIn, [\n \"auto\",\n \"delegate\",\n \"pageFront\",\n ]);\n this.trayOut = getStringOption(attributes.trayOut, [\"auto\", \"delegate\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Message extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"message\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.text = new XFAObjectArray();\n }\n}\n\nclass NumericEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"numericEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Occur extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"occur\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.initial =\n attributes.initial !== \"\"\n ? getInteger({\n data: attributes.initial,\n defaultValue: \"\",\n validate: x => true,\n })\n : \"\";\n this.max =\n attributes.max !== \"\"\n ? getInteger({\n data: attributes.max,\n defaultValue: 1,\n validate: x => true,\n })\n : \"\";\n this.min =\n attributes.min !== \"\"\n ? getInteger({\n data: attributes.min,\n defaultValue: 1,\n validate: x => true,\n })\n : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$clean]() {\n const parent = this[$getParent]();\n const originalMin = this.min;\n\n if (this.min === \"\") {\n this.min =\n parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\n }\n if (this.max === \"\") {\n if (originalMin === \"\") {\n this.max =\n parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\n } else {\n this.max = this.min;\n }\n }\n\n if (this.max !== -1 && this.max < this.min) {\n this.max = this.min;\n }\n\n if (this.initial === \"\") {\n this.initial = parent instanceof Template ? 1 : this.min;\n }\n }\n}\n\nclass Oid extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oid\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Oids extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oids\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.oid = new XFAObjectArray();\n }\n}\n\nclass Overflow extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"overflow\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.target = attributes.target || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$getExtra]() {\n if (!this[$extra]) {\n const parent = this[$getParent]();\n const root = this[$getTemplateRoot]();\n const target = root[$searchNode](this.target, parent);\n const leader = root[$searchNode](this.leader, parent);\n const trailer = root[$searchNode](this.trailer, parent);\n this[$extra] = {\n target: (target && target[0]) || null,\n leader: (leader && leader[0]) || null,\n trailer: (trailer && trailer[0]) || null,\n addLeader: false,\n addTrailer: false,\n };\n }\n return this[$extra];\n }\n}\n\nclass PageArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageArea\", /* hasChildren = */ true);\n this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\n \"any\",\n \"blank\",\n \"notBlank\",\n ]);\n this.id = attributes.id || \"\";\n this.initialNumber = getInteger({\n data: attributes.initialNumber,\n defaultValue: 1,\n validate: x => true,\n });\n this.name = attributes.name || \"\";\n this.numbered = getInteger({\n data: attributes.numbered,\n defaultValue: 1,\n validate: x => true,\n });\n this.oddOrEven = getStringOption(attributes.oddOrEven, [\n \"any\",\n \"even\",\n \"odd\",\n ]);\n this.pagePosition = getStringOption(attributes.pagePosition, [\n \"any\",\n \"first\",\n \"last\",\n \"only\",\n \"rest\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.desc = null;\n this.extras = null;\n this.medium = null;\n this.occur = null;\n this.area = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n }\n\n [$isUsable]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0,\n };\n return true;\n }\n return (\n !this.occur ||\n this.occur.max === -1 ||\n this[$extra].numberOfUse < this.occur.max\n );\n }\n\n [$cleanPage]() {\n delete this[$extra];\n }\n\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0,\n };\n }\n\n const parent = this[$getParent]();\n if (parent.relation === \"orderedOccurrence\") {\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n return this;\n }\n }\n\n return parent[$getNextPage]();\n }\n\n [$getAvailableSpace]() {\n return this[$extra].space || { width: 0, height: 0 };\n }\n\n [$toHTML]() {\n // TODO: incomplete.\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n };\n }\n\n const children = [];\n this[$extra].children = children;\n\n const style = Object.create(null);\n if (this.medium && this.medium.short && this.medium.long) {\n style.width = measureToString(this.medium.short);\n style.height = measureToString(this.medium.long);\n this[$extra].space = {\n width: this.medium.short,\n height: this.medium.long,\n };\n if (this.medium.orientation === \"landscape\") {\n const x = style.width;\n style.width = style.height;\n style.height = x;\n this[$extra].space = {\n width: this.medium.long,\n height: this.medium.short,\n };\n }\n } else {\n warn(\"XFA - No medium specified in pageArea: please file a bug.\");\n }\n\n this[$childrenToHTML]({\n filter: new Set([\"area\", \"draw\", \"field\", \"subform\"]),\n include: true,\n });\n\n // contentarea must be the last container to be sure it is\n // on top of the others.\n this[$childrenToHTML]({\n filter: new Set([\"contentArea\"]),\n include: true,\n });\n\n return HTMLResult.success({\n name: \"div\",\n children,\n attributes: {\n class: [\"xfaPage\"],\n id: this[$uid],\n style,\n xfaName: this.name,\n },\n });\n }\n}\n\nclass PageSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageSet\", /* hasChildren = */ true);\n this.duplexImposition = getStringOption(attributes.duplexImposition, [\n \"longEdge\",\n \"shortEdge\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\n \"orderedOccurrence\",\n \"duplexPaginated\",\n \"simplexPaginated\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.occur = null;\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n }\n\n [$cleanPage]() {\n for (const page of this.pageArea.children) {\n page[$cleanPage]();\n }\n for (const page of this.pageSet.children) {\n page[$cleanPage]();\n }\n }\n\n [$isUsable]() {\n return (\n !this.occur ||\n this.occur.max === -1 ||\n this[$extra].numberOfUse < this.occur.max\n );\n }\n\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n pageIndex: -1,\n pageSetIndex: -1,\n };\n }\n\n if (this.relation === \"orderedOccurrence\") {\n if (this[$extra].pageIndex + 1 < this.pageArea.children.length) {\n this[$extra].pageIndex += 1;\n const pageArea = this.pageArea.children[this[$extra].pageIndex];\n return pageArea[$getNextPage]();\n }\n\n if (this[$extra].pageSetIndex + 1 < this.pageSet.children.length) {\n this[$extra].pageSetIndex += 1;\n return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage]();\n }\n\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n this[$extra].pageIndex = -1;\n this[$extra].pageSetIndex = -1;\n return this[$getNextPage]();\n }\n\n const parent = this[$getParent]();\n if (parent instanceof PageSet) {\n return parent[$getNextPage]();\n }\n\n this[$cleanPage]();\n return this[$getNextPage]();\n }\n const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber;\n const parity = pageNumber % 2 === 0 ? \"even\" : \"odd\";\n const position = pageNumber === 0 ? \"first\" : \"rest\";\n\n let page = this.pageArea.children.find(\n p => p.oddOrEven === parity && p.pagePosition === position\n );\n if (page) {\n return page;\n }\n\n page = this.pageArea.children.find(\n p => p.oddOrEven === \"any\" && p.pagePosition === position\n );\n if (page) {\n return page;\n }\n\n page = this.pageArea.children.find(\n p => p.oddOrEven === \"any\" && p.pagePosition === \"any\"\n );\n if (page) {\n return page;\n }\n\n return this.pageArea.children[0];\n }\n}\n\nclass Para extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"para\", /* hasChildren = */ true);\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.lineHeight = attributes.lineHeight\n ? getMeasurement(attributes.lineHeight, \"0pt\")\n : \"\";\n this.marginLeft = attributes.marginLeft\n ? getMeasurement(attributes.marginLeft, \"0pt\")\n : \"\";\n this.marginRight = attributes.marginRight\n ? getMeasurement(attributes.marginRight, \"0pt\")\n : \"\";\n this.orphans = getInteger({\n data: attributes.orphans,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.preserve = attributes.preserve || \"\";\n this.radixOffset = attributes.radixOffset\n ? getMeasurement(attributes.radixOffset, \"0pt\")\n : \"\";\n this.spaceAbove = attributes.spaceAbove\n ? getMeasurement(attributes.spaceAbove, \"0pt\")\n : \"\";\n this.spaceBelow = attributes.spaceBelow\n ? getMeasurement(attributes.spaceBelow, \"0pt\")\n : \"\";\n this.tabDefault = attributes.tabDefault\n ? getMeasurement(this.tabDefault)\n : \"\";\n this.tabStops = (attributes.tabStops || \"\")\n .trim()\n .split(/\\s+/)\n .map((x, i) => (i % 2 === 1 ? getMeasurement(x) : x));\n this.textIndent = attributes.textIndent\n ? getMeasurement(attributes.textIndent, \"0pt\")\n : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vAlign = getStringOption(attributes.vAlign, [\n \"top\",\n \"bottom\",\n \"middle\",\n ]);\n this.widows = getInteger({\n data: attributes.widows,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.hyphenation = null;\n }\n\n [$toStyle]() {\n const style = toStyle(this, \"hAlign\");\n if (this.marginLeft !== \"\") {\n style.paddingLeft = measureToString(this.marginLeft);\n }\n if (this.marginRight !== \"\") {\n style.paddingight = measureToString(this.marginRight);\n }\n if (this.spaceAbove !== \"\") {\n style.paddingTop = measureToString(this.spaceAbove);\n }\n if (this.spaceBelow !== \"\") {\n style.paddingBottom = measureToString(this.spaceBelow);\n }\n if (this.textIndent !== \"\") {\n style.textIndent = measureToString(this.textIndent);\n fixTextIndent(style);\n }\n\n if (this.lineHeight > 0) {\n style.lineHeight = measureToString(this.lineHeight);\n }\n\n if (this.tabDefault !== \"\") {\n style.tabSize = measureToString(this.tabDefault);\n }\n\n if (this.tabStops.length > 0) {\n // TODO\n }\n\n if (this.hyphenatation) {\n Object.assign(style, this.hyphenatation[$toStyle]());\n }\n\n return style;\n }\n}\n\nclass PasswordEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"passwordEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.passwordChar = attributes.passwordChar || \"*\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n}\n\nclass Pattern extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pattern\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\n \"crossHatch\",\n \"crossDiagonal\",\n \"diagonalLeft\",\n \"diagonalRight\",\n \"horizontal\",\n \"vertical\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const width = 5;\n const cmd = \"repeating-linear-gradient\";\n const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${\n 2 * width\n }px`;\n switch (this.type) {\n case \"crossHatch\":\n return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\n case \"crossDiagonal\":\n return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\n case \"diagonalLeft\":\n return `${cmd}(45deg,${colors})`;\n case \"diagonalRight\":\n return `${cmd}(-45deg,${colors})`;\n case \"horizontal\":\n return `${cmd}(to top,${colors})`;\n case \"vertical\":\n return `${cmd}(to right,${colors})`;\n }\n\n return \"\";\n }\n}\n\nclass Picture extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"picture\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Proto extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"proto\", /* hasChildren = */ true);\n this.appearanceFilter = new XFAObjectArray();\n this.arc = new XFAObjectArray();\n this.area = new XFAObjectArray();\n this.assist = new XFAObjectArray();\n this.barcode = new XFAObjectArray();\n this.bindItems = new XFAObjectArray();\n this.bookend = new XFAObjectArray();\n this.boolean = new XFAObjectArray();\n this.border = new XFAObjectArray();\n this.break = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.button = new XFAObjectArray();\n this.calculate = new XFAObjectArray();\n this.caption = new XFAObjectArray();\n this.certificate = new XFAObjectArray();\n this.certificates = new XFAObjectArray();\n this.checkButton = new XFAObjectArray();\n this.choiceList = new XFAObjectArray();\n this.color = new XFAObjectArray();\n this.comb = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.corner = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.dateTimeEdit = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.defaultUi = new XFAObjectArray();\n this.desc = new XFAObjectArray();\n this.digestMethod = new XFAObjectArray();\n this.digestMethods = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.edge = new XFAObjectArray();\n this.encoding = new XFAObjectArray();\n this.encodings = new XFAObjectArray();\n this.encrypt = new XFAObjectArray();\n this.encryptData = new XFAObjectArray();\n this.encryption = new XFAObjectArray();\n this.encryptionMethod = new XFAObjectArray();\n this.encryptionMethods = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.execute = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.fill = new XFAObjectArray();\n this.filter = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.font = new XFAObjectArray();\n this.format = new XFAObjectArray();\n this.handler = new XFAObjectArray();\n this.hyphenation = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.imageEdit = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.issuers = new XFAObjectArray();\n this.items = new XFAObjectArray();\n this.keep = new XFAObjectArray();\n this.keyUsage = new XFAObjectArray();\n this.line = new XFAObjectArray();\n this.linear = new XFAObjectArray();\n this.lockDocument = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.margin = new XFAObjectArray();\n this.mdp = new XFAObjectArray();\n this.medium = new XFAObjectArray();\n this.message = new XFAObjectArray();\n this.numericEdit = new XFAObjectArray();\n this.occur = new XFAObjectArray();\n this.oid = new XFAObjectArray();\n this.oids = new XFAObjectArray();\n this.overflow = new XFAObjectArray();\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n this.para = new XFAObjectArray();\n this.passwordEdit = new XFAObjectArray();\n this.pattern = new XFAObjectArray();\n this.picture = new XFAObjectArray();\n this.radial = new XFAObjectArray();\n this.reason = new XFAObjectArray();\n this.reasons = new XFAObjectArray();\n this.rectangle = new XFAObjectArray();\n this.ref = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n this.signature = new XFAObjectArray();\n this.signing = new XFAObjectArray();\n this.solid = new XFAObjectArray();\n this.speak = new XFAObjectArray();\n this.stipple = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n this.subjectDN = new XFAObjectArray();\n this.subjectDNs = new XFAObjectArray();\n this.submit = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.textEdit = new XFAObjectArray();\n this.time = new XFAObjectArray();\n this.timeStamp = new XFAObjectArray();\n this.toolTip = new XFAObjectArray();\n this.traversal = new XFAObjectArray();\n this.traverse = new XFAObjectArray();\n this.ui = new XFAObjectArray();\n this.validate = new XFAObjectArray();\n this.value = new XFAObjectArray();\n this.variables = new XFAObjectArray();\n }\n}\n\nclass Radial extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"radial\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"toEdge\", \"toCenter\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const colors =\n this.type === \"toEdge\"\n ? `${startColor},${endColor}`\n : `${endColor},${startColor}`;\n return `radial-gradient(circle at center, ${colors})`;\n }\n}\n\nclass Reason extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reason\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Reasons extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reasons\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.reason = new XFAObjectArray();\n }\n}\n\nclass Rectangle extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"rectangle\", /* hasChildren = */ true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.fill = null;\n }\n\n [$toHTML]() {\n const edge = this.edge.children.length\n ? this.edge.children[0]\n : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(\n edge.presence === \"visible\" ? edge.thickness : 0\n );\n style.stroke = edgeStyle.color;\n\n const corner = this.corner.children.length\n ? this.corner.children[0]\n : new Corner({});\n const cornerStyle = corner[$toStyle]();\n\n const rect = {\n name: \"rect\",\n attributes: {\n xmlns: SVG_NS,\n width: \"100%\",\n height: \"100%\",\n x: 0,\n y: 0,\n rx: cornerStyle.radius,\n ry: cornerStyle.radius,\n style,\n },\n };\n\n const svg = {\n name: \"svg\",\n children: [rect],\n attributes: {\n xmlns: SVG_NS,\n style: {\n overflow: \"visible\",\n },\n width: \"100%\",\n height: \"100%\",\n },\n };\n\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass RefElement extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ref\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Script extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"script\");\n this.binding = attributes.binding || \"\";\n this.contentType = attributes.contentType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.runAt = getStringOption(attributes.runAt, [\n \"client\",\n \"both\",\n \"server\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SetProperty extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"setProperty\");\n this.connection = attributes.connection || \"\";\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n }\n}\n\nclass SignData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signData\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"sign\",\n \"clear\",\n \"verify\",\n ]);\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\n\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signature\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"PDF1.3\", \"PDF1.6\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.filter = null;\n this.manifest = null;\n this.margin = null;\n }\n}\n\nclass Signing extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signing\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass Solid extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"solid\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n return startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n }\n}\n\nclass Speak extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"speak\");\n this.disable = getInteger({\n data: attributes.disable,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.id = attributes.id || \"\";\n this.priority = getStringOption(attributes.priority, [\n \"custom\",\n \"caption\",\n \"name\",\n \"toolTip\",\n ]);\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Stipple extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"stipple\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.rate = getInteger({\n data: attributes.rate,\n defaultValue: 50,\n validate: x => x >= 0 && x <= 100,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](bgColor) {\n const alpha = this.rate / 100;\n return Util.makeHexColor(\n Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha),\n Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha),\n Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)\n );\n }\n}\n\nclass Subform extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subform\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.allowMacro = getInteger({\n data: attributes.allowMacro,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.columnWidths = (attributes.columnWidths || \"\")\n .trim()\n .split(/\\s+/)\n .map(x => (x === \"-1\" ? -1 : getMeasurement(x)));\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\n \"position\",\n \"lr-tb\",\n \"rl-row\",\n \"rl-tb\",\n \"row\",\n \"table\",\n \"tb\",\n ]);\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.mergeMode = getStringOption(attributes.mergeMode, [\n \"consumeData\",\n \"matchTemplate\",\n ]);\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.restoreState = getStringOption(attributes.restoreState, [\n \"manual\",\n \"auto\",\n ]);\n this.scope = getStringOption(attributes.scope, [\"name\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.bookend = null;\n this.border = null;\n this.break = null;\n this.calculate = null;\n this.desc = null;\n this.extras = null;\n this.keep = null;\n this.margin = null;\n this.occur = null;\n this.overflow = null;\n this.pageSet = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.variables = null;\n this.area = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.proto = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n\n [$getSubformParent]() {\n const parent = this[$getParent]();\n if (parent instanceof SubformSet) {\n return parent[$getSubformParent]();\n }\n return parent;\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$isThereMoreWidth]() {\n return (\n (this.layout.endsWith(\"-tb\") &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine > 0) ||\n this[$getParent]()[$isThereMoreWidth]()\n );\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$flushHTML]() {\n return flushHTML(this);\n }\n\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n\n [$isSplittable]() {\n // We cannot cache the result here because the contentArea\n // can change.\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (this.keep && this.keep.intact !== \"none\") {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (\n parent.layout &&\n parent.layout.endsWith(\"-tb\") &&\n parent[$extra].numberInLine !== 0\n ) {\n // If parent can fit in w=100 and there's already an element which takes\n // 90 then we've 10 for this element. Suppose this element has a tb layout\n // and 5 elements have a width of 7 and the 6th has a width of 20:\n // then this element (and all its content) must move on the next line.\n // If this element is splittable then the first 5 children will stay\n // at the end of the line: we don't want that.\n return false;\n }\n\n this[$extra]._isSplittable = true;\n\n return true;\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (this.break) {\n // break element is deprecated so plug it on one of its replacement\n // breakBefore or breakAfter.\n if (this.break.after !== \"auto\" || this.break.afterTarget !== \"\") {\n const node = new BreakAfter({\n targetType: this.break.after,\n target: this.break.afterTarget,\n startNew: this.break.startNew.toString(),\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakAfter.push(node);\n }\n\n if (this.break.before !== \"auto\" || this.break.beforeTarget !== \"\") {\n const node = new BreakBefore({\n targetType: this.break.before,\n target: this.break.beforeTarget,\n startNew: this.break.startNew.toString(),\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakBefore.push(node);\n }\n\n if (this.break.overflowTarget !== \"\") {\n const node = new Overflow({\n target: this.break.overflowTarget,\n leader: this.break.overflowLeader,\n trailer: this.break.overflowTrailer,\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.overflow.push(node);\n }\n\n this[$removeChild](this.break);\n this.break = null;\n }\n\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n\n if (\n this.breakBefore.children.length > 1 ||\n this.breakAfter.children.length > 1\n ) {\n // Specs are always talking about the breakBefore element\n // and it doesn't really make sense to have several ones.\n warn(\n \"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\"\n );\n }\n\n if (this.breakBefore.children.length >= 1) {\n const breakBefore = this.breakBefore.children[0];\n if (handleBreak(breakBefore)) {\n return HTMLResult.breakNode(breakBefore);\n }\n }\n\n if (this[$extra] && this[$extra].afterBreakAfter) {\n return HTMLResult.EMPTY;\n }\n\n // TODO: incomplete.\n fixDimensions(this);\n const children = [];\n const attributes = {\n id: this[$uid],\n class: [],\n };\n\n setAccess(this, attributes.class);\n\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\n }\n\n Object.assign(this[$extra], {\n children,\n line: null,\n attributes,\n attempt: 0,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height),\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0,\n });\n\n const root = this[$getTemplateRoot]();\n const savedNoLayoutFailure = root[$extra].noLayoutFailure;\n\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n\n const filter = new Set([\n \"area\",\n \"draw\",\n \"exclGroup\",\n \"field\",\n \"subform\",\n \"subformSet\",\n ]);\n\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n\n const style = toStyle(\n this,\n \"anchorType\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"border\",\n \"margin\",\n \"hAlign\"\n );\n const classNames = [\"xfaSubform\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n\n attributes.style = style;\n attributes.class = classNames;\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addLeader) {\n overflowExtra.addLeader = false;\n handleOverflow(this, overflowExtra.leader, availableSpace);\n }\n }\n\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n // If the layout is lr-tb then having attempt equals to\n // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n // on the next line so this on is empty.\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true,\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (\n isLrTb &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine === 0 &&\n !root[$extra].noLayoutFailure\n ) {\n // We're failing to put the first element on the line so no\n // need to test on the next line.\n // The goal is not only to avoid some useless checks but to avoid\n // bugs too: if a descendant managed to put a node and failed\n // on the next one, going to the next step here will imply to\n // visit the descendant again, clear [$extra].children and restart\n // on the failing node, consequently the first node just disappears\n // because it has never been flushed.\n this[$extra].attempt = maxRun;\n break;\n }\n }\n\n this[$popPara]();\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n root[$extra].noLayoutFailure = savedNoLayoutFailure;\n\n if (this[$extra].attempt === maxRun) {\n if (this.overflow) {\n this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\n }\n\n if (!isSplittable) {\n // Since a new try will happen in a new container with maybe\n // new dimensions, we invalidate already layed out components.\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addTrailer) {\n overflowExtra.addTrailer = false;\n handleOverflow(this, overflowExtra.trailer, availableSpace);\n }\n }\n\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n\n if (\n (style.width === \"0px\" || style.height === \"0px\") &&\n children.length === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n const result = HTMLResult.success(createWrapper(this, html), bbox);\n\n if (this.breakAfter.children.length >= 1) {\n const breakAfter = this.breakAfter.children[0];\n if (handleBreak(breakAfter)) {\n this[$extra].afterBreakAfter = result;\n return HTMLResult.breakNode(breakAfter);\n }\n }\n\n delete this[$extra];\n\n return result;\n }\n}\n\nclass SubformSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subformSet\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\n \"ordered\",\n \"choice\",\n \"unordered\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.bookend = null;\n this.break = null;\n this.desc = null;\n this.extras = null;\n this.occur = null;\n this.overflow = null;\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n\n // TODO: need to handle break stuff and relation.\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$getSubformParent]() {\n let parent = this[$getParent]();\n while (!(parent instanceof Subform)) {\n parent = parent[$getParent]();\n }\n return parent;\n }\n\n [$isBindable]() {\n return true;\n }\n}\n\nclass SubjectDN extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDN\");\n this.delimiter = attributes.delimiter || \",\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n this[$content] = new Map(\n this[$content].split(this.delimiter).map(kv => {\n kv = kv.split(\"=\", 2);\n kv[0] = kv[0].trim();\n return kv;\n })\n );\n }\n}\n\nclass SubjectDNs extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDNs\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.subjectDN = new XFAObjectArray();\n }\n}\n\nclass Submit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"submit\", /* hasChildren = */ true);\n this.embedPDF = getInteger({\n data: attributes.embedPDF,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.format = getStringOption(attributes.format, [\n \"xdp\",\n \"formdata\",\n \"pdf\",\n \"urlencoded\",\n \"xfd\",\n \"xml\",\n ]);\n this.id = attributes.id || \"\";\n this.target = attributes.target || \"\";\n this.textEncoding = getKeyword({\n data: attributes.textEncoding\n ? attributes.textEncoding.toLowerCase()\n : \"\",\n defaultValue: \"\",\n validate: k =>\n [\n \"utf-8\",\n \"big-five\",\n \"fontspecific\",\n \"gbk\",\n \"gb-18030\",\n \"gb-2312\",\n \"ksc-5601\",\n \"none\",\n \"shift-jis\",\n \"ucs-2\",\n \"utf-16\",\n ].includes(k) || k.match(/iso-8859-\\d{2}/),\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.xdpContent = attributes.xdpContent || \"\";\n this.encrypt = null;\n this.encryptData = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n }\n}\n\nclass Template extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"template\", /* hasChildren = */ true);\n this.baseProfile = getStringOption(attributes.baseProfile, [\n \"full\",\n \"interactiveForms\",\n ]);\n this.extras = null;\n\n // Spec is unclear:\n // A container element that describes a single subform capable of\n // enclosing other containers.\n // Can we have more than one subform ?\n this.subform = new XFAObjectArray();\n }\n\n [$finalize]() {\n if (this.subform.children.length === 0) {\n warn(\"XFA - No subforms in template node.\");\n }\n if (this.subform.children.length >= 2) {\n warn(\"XFA - Several subforms in template node: please file a bug.\");\n }\n this[$tabIndex] = DEFAULT_TAB_INDEX;\n }\n\n [$isSplittable]() {\n return true;\n }\n\n [$searchNode](expr, container) {\n if (expr.startsWith(\"#\")) {\n // This is an id.\n return [this[$ids].get(expr.slice(1))];\n }\n return searchNode(this, container, expr, true, true);\n }\n\n /**\n * This function is a generator because the conversion into\n * pages is done asynchronously and we want to save the state\n * of the function where we were in the previous iteration.\n */\n *[$toPages]() {\n if (!this.subform.children.length) {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n });\n }\n this[$extra] = {\n overflowNode: null,\n firstUnsplittable: null,\n currentContentArea: null,\n currentPageArea: null,\n noLayoutFailure: false,\n pageNumber: 1,\n pagePosition: \"first\",\n oddOrEven: \"odd\",\n blankOrNotBlank: \"nonBlank\",\n paraStack: [],\n };\n\n const root = this.subform.children[0];\n root.pageSet[$cleanPage]();\n\n const pageAreas = root.pageSet.pageArea.children;\n const mainHtml = {\n name: \"div\",\n children: [],\n };\n\n let pageArea = null;\n let breakBefore = null;\n let breakBeforeTarget = null;\n if (root.breakBefore.children.length >= 1) {\n breakBefore = root.breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (\n root.subform.children.length >= 1 &&\n root.subform.children[0].breakBefore.children.length >= 1\n ) {\n breakBefore = root.subform.children[0].breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (root.break && root.break.beforeTarget) {\n breakBefore = root.break;\n breakBeforeTarget = breakBefore.beforeTarget;\n } else if (\n root.subform.children.length >= 1 &&\n root.subform.children[0].break &&\n root.subform.children[0].break.beforeTarget\n ) {\n breakBefore = root.subform.children[0].break;\n breakBeforeTarget = breakBefore.beforeTarget;\n }\n\n if (breakBefore) {\n const target = this[$searchNode](\n breakBeforeTarget,\n breakBefore[$getParent]()\n );\n if (target instanceof PageArea) {\n pageArea = target;\n // Consume breakBefore.\n breakBefore[$extra] = {};\n }\n }\n\n if (!pageArea) {\n pageArea = pageAreas[0];\n }\n\n pageArea[$extra] = {\n numberOfUse: 1,\n };\n\n const pageAreaParent = pageArea[$getParent]();\n pageAreaParent[$extra] = {\n numberOfUse: 1,\n pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\n pageSetIndex: 0,\n };\n\n let targetPageArea;\n let leader = null;\n let trailer = null;\n let hasSomething = true;\n let hasSomethingCounter = 0;\n let startIndex = 0;\n\n while (true) {\n if (!hasSomething) {\n mainHtml.children.pop();\n // Nothing has been added in the previous page\n if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\n warn(\"XFA - Something goes wrong: please file a bug.\");\n return mainHtml;\n }\n } else {\n hasSomethingCounter = 0;\n }\n\n targetPageArea = null;\n this[$extra].currentPageArea = pageArea;\n const page = pageArea[$toHTML]().html;\n mainHtml.children.push(page);\n\n if (leader) {\n this[$extra].noLayoutFailure = true;\n page.children.push(leader[$toHTML](pageArea[$extra].space).html);\n leader = null;\n }\n\n if (trailer) {\n this[$extra].noLayoutFailure = true;\n page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\n trailer = null;\n }\n\n const contentAreas = pageArea.contentArea.children;\n const htmlContentAreas = page.children.filter(node =>\n node.attributes.class.includes(\"xfaContentarea\")\n );\n\n hasSomething = false;\n this[$extra].firstUnsplittable = null;\n this[$extra].noLayoutFailure = false;\n\n const flush = index => {\n const html = root[$flushHTML]();\n if (html) {\n hasSomething =\n hasSomething || (html.children && html.children.length !== 0);\n htmlContentAreas[index].children.push(html);\n }\n };\n\n for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {\n const contentArea = (this[$extra].currentContentArea = contentAreas[i]);\n const space = { width: contentArea.w, height: contentArea.h };\n startIndex = 0;\n\n if (leader) {\n htmlContentAreas[i].children.push(leader[$toHTML](space).html);\n leader = null;\n }\n\n if (trailer) {\n htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\n trailer = null;\n }\n\n const html = root[$toHTML](space);\n if (html.success) {\n if (html.html) {\n hasSomething =\n hasSomething ||\n (html.html.children && html.html.children.length !== 0);\n htmlContentAreas[i].children.push(html.html);\n } else if (!hasSomething && mainHtml.children.length > 1) {\n mainHtml.children.pop();\n }\n return mainHtml;\n }\n\n if (html.isBreak()) {\n const node = html.breakNode;\n flush(i);\n\n if (node.targetType === \"auto\") {\n continue;\n }\n\n if (node.leader) {\n leader = this[$searchNode](node.leader, node[$getParent]());\n leader = leader ? leader[0] : null;\n }\n\n if (node.trailer) {\n trailer = this[$searchNode](node.trailer, node[$getParent]());\n trailer = trailer ? trailer[0] : null;\n }\n\n if (node.targetType === \"pageArea\") {\n targetPageArea = node[$extra].target;\n i = Infinity;\n } else if (!node[$extra].target) {\n // We stay on the same page.\n i = node[$extra].index;\n } else {\n targetPageArea = node[$extra].target;\n startIndex = node[$extra].index + 1;\n i = Infinity;\n }\n\n continue;\n }\n\n if (this[$extra].overflowNode) {\n const node = this[$extra].overflowNode;\n this[$extra].overflowNode = null;\n\n const overflowExtra = node[$getExtra]();\n const target = overflowExtra.target;\n overflowExtra.addLeader = overflowExtra.leader !== null;\n overflowExtra.addTrailer = overflowExtra.trailer !== null;\n\n flush(i);\n\n const currentIndex = i;\n\n i = Infinity;\n if (target instanceof PageArea) {\n // We must stop the contentAreas filling and go to the next page.\n targetPageArea = target;\n } else if (target instanceof ContentArea) {\n const index = contentAreas.findIndex(e => e === target);\n if (index !== -1) {\n if (index > currentIndex) {\n // In the next loop iteration `i` will be incremented, note the\n // `continue` just below, hence we need to subtract one here.\n i = index - 1;\n } else {\n // The targetted contentArea has already been filled\n // so create a new page.\n startIndex = index;\n }\n } else {\n targetPageArea = target[$getParent]();\n startIndex = targetPageArea.contentArea.children.findIndex(\n e => e === target\n );\n }\n }\n continue;\n }\n\n flush(i);\n }\n\n this[$extra].pageNumber += 1;\n if (targetPageArea) {\n if (targetPageArea[$isUsable]()) {\n targetPageArea[$extra].numberOfUse += 1;\n } else {\n targetPageArea = null;\n }\n }\n pageArea = targetPageArea || pageArea[$getNextPage]();\n yield null;\n }\n }\n}\n\nclass Text extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"text\");\n this.id = attributes.id || \"\";\n this.maxChars = getInteger({\n data: attributes.maxChars,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$acceptWhitespace]() {\n return true;\n }\n\n [$onChild](child) {\n if (child[$namespaceId] === NamespaceIds.xhtml.id) {\n this[$content] = child;\n return true;\n }\n warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`);\n return false;\n }\n\n [$onText](str) {\n if (this[$content] instanceof XFAObject) {\n return;\n }\n super[$onText](str);\n }\n\n [$finalize]() {\n if (typeof this[$content] === \"string\") {\n this[$content] = this[$content].replace(/\\r\\n/g, \"\\n\");\n }\n }\n\n [$getExtra]() {\n if (typeof this[$content] === \"string\") {\n return this[$content]\n .split(/[\\u2029\\u2028\\n]/)\n .reduce((acc, line) => {\n if (line) {\n acc.push(line);\n }\n return acc;\n }, [])\n .join(\"\\n\");\n }\n return this[$content][$text]();\n }\n\n [$toHTML](availableSpace) {\n if (typeof this[$content] === \"string\") {\n // \\u2028 is a line separator.\n // \\u2029 is a paragraph separator.\n const html = valueToHtml(this[$content]).html;\n\n if (this[$content].includes(\"\\u2029\")) {\n // We've plain text containing a paragraph separator\n // so convert it into a set of <p>.\n html.name = \"div\";\n html.children = [];\n this[$content]\n .split(\"\\u2029\")\n .map(para =>\n // Convert a paragraph into a set of <span> (for lines)\n // separated by <br>.\n para.split(/[\\u2028\\n]/).reduce((acc, line) => {\n acc.push(\n {\n name: \"span\",\n value: line,\n },\n {\n name: \"br\",\n }\n );\n return acc;\n }, [])\n )\n .forEach(lines => {\n html.children.push({\n name: \"p\",\n children: lines,\n });\n });\n } else if (/[\\u2028\\n]/.test(this[$content])) {\n html.name = \"div\";\n html.children = [];\n // Convert plain text into a set of <span> (for lines)\n // separated by <br>.\n this[$content].split(/[\\u2028\\n]/).forEach(line => {\n html.children.push(\n {\n name: \"span\",\n value: line,\n },\n {\n name: \"br\",\n }\n );\n });\n }\n\n return HTMLResult.success(html);\n }\n\n return this[$content][$toHTML](availableSpace);\n }\n}\n\nclass TextEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"textEdit\", /* hasChildren = */ true);\n this.allowRichText = getInteger({\n data: attributes.allowRichText,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.multiLine = getInteger({\n data: attributes.multiLine,\n defaultValue: \"\",\n validate: x => x === 0 || x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n let html;\n const field = this[$getParent]()[$getParent]();\n if (this.multiLine === \"\") {\n this.multiLine = field instanceof Draw ? 1 : 0;\n }\n if (this.multiLine === 1) {\n html = {\n name: \"textarea\",\n attributes: {\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n } else {\n html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Time extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"time\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n // TODO: need to handle the string as a time and not as a date.\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass TimeStamp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"timeStamp\");\n this.id = attributes.id || \"\";\n this.server = attributes.server || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass ToolTip extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"toolTip\");\n this.id = attributes.id || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Traversal extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traversal\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.traverse = new XFAObjectArray();\n }\n}\n\nclass Traverse extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traverse\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"next\",\n \"back\",\n \"down\",\n \"first\",\n \"left\",\n \"right\",\n \"up\",\n ]);\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.script = null;\n }\n\n get name() {\n // SOM expression: see page 94\n return this.operation;\n }\n\n [$isTransparent]() {\n return false;\n }\n}\n\nclass Ui extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ui\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n\n // One-of properties\n this.barcode = null;\n this.button = null;\n this.checkButton = null;\n this.choiceList = null;\n this.dateTimeEdit = null;\n this.defaultUi = null;\n this.imageEdit = null;\n this.numericEdit = null;\n this.passwordEdit = null;\n this.signature = null;\n this.textEdit = null;\n }\n\n [$getExtra]() {\n if (this[$extra] === undefined) {\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"picture\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n this[$extra] = obj;\n return obj;\n }\n this[$extra] = null;\n }\n return this[$extra];\n }\n\n [$toHTML](availableSpace) {\n // TODO: picture.\n const obj = this[$getExtra]();\n if (obj) {\n return obj[$toHTML](availableSpace);\n }\n return HTMLResult.EMPTY;\n }\n}\n\nclass Validate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"validate\", /* hasChildren = */ true);\n this.formatTest = getStringOption(attributes.formatTest, [\n \"warning\",\n \"disabled\",\n \"error\",\n ]);\n this.id = attributes.id || \"\";\n this.nullTest = getStringOption(attributes.nullTest, [\n \"disabled\",\n \"error\",\n \"warning\",\n ]);\n this.scriptTest = getStringOption(attributes.scriptTest, [\n \"error\",\n \"disabled\",\n \"warning\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.picture = null;\n this.script = null;\n }\n}\n\nclass Value extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"value\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.override = getInteger({\n data: attributes.override,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n\n // One-of properties\n this.arc = null;\n this.boolean = null;\n this.date = null;\n this.dateTime = null;\n this.decimal = null;\n this.exData = null;\n this.float = null;\n this.image = null;\n this.integer = null;\n this.line = null;\n this.rectangle = null;\n this.text = null;\n this.time = null;\n }\n\n [$setValue](value) {\n const parent = this[$getParent]();\n if (parent instanceof Field) {\n if (parent.ui && parent.ui.imageEdit) {\n if (!this.image) {\n this.image = new Image({});\n this[$appendChild](this.image);\n }\n this.image[$content] = value[$content];\n return;\n }\n }\n\n const valueName = value[$nodeName];\n if (this[valueName] !== null) {\n this[valueName][$content] = value[$content];\n return;\n }\n\n // Reset all the properties.\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (obj instanceof XFAObject) {\n this[name] = null;\n this[$removeChild](obj);\n }\n }\n\n this[value[$nodeName]] = value;\n this[$appendChild](value);\n }\n\n [$text]() {\n if (this.exData) {\n if (typeof this.exData[$content] === \"string\") {\n return this.exData[$content].trim();\n }\n return this.exData[$content][$text]().trim();\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"image\") {\n continue;\n }\n const obj = this[name];\n if (obj instanceof XFAObject) {\n return (obj[$content] || \"\").toString().trim();\n }\n }\n return null;\n }\n\n [$toHTML](availableSpace) {\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n return obj[$toHTML](availableSpace);\n }\n\n return HTMLResult.EMPTY;\n }\n}\n\nclass Variables extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"variables\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n [$isTransparent]() {\n return true;\n }\n}\n\nclass TemplateNamespace {\n static [$buildXFAObject](name, attributes) {\n if (TemplateNamespace.hasOwnProperty(name)) {\n const node = TemplateNamespace[name](attributes);\n node[$setSetAttributes](attributes);\n return node;\n }\n return undefined;\n }\n\n static appearanceFilter(attrs) {\n return new AppearanceFilter(attrs);\n }\n\n static arc(attrs) {\n return new Arc(attrs);\n }\n\n static area(attrs) {\n return new Area(attrs);\n }\n\n static assist(attrs) {\n return new Assist(attrs);\n }\n\n static barcode(attrs) {\n return new Barcode(attrs);\n }\n\n static bind(attrs) {\n return new Bind(attrs);\n }\n\n static bindItems(attrs) {\n return new BindItems(attrs);\n }\n\n static bookend(attrs) {\n return new Bookend(attrs);\n }\n\n static boolean(attrs) {\n return new BooleanElement(attrs);\n }\n\n static border(attrs) {\n return new Border(attrs);\n }\n\n static break(attrs) {\n return new Break(attrs);\n }\n\n static breakAfter(attrs) {\n return new BreakAfter(attrs);\n }\n\n static breakBefore(attrs) {\n return new BreakBefore(attrs);\n }\n\n static button(attrs) {\n return new Button(attrs);\n }\n\n static calculate(attrs) {\n return new Calculate(attrs);\n }\n\n static caption(attrs) {\n return new Caption(attrs);\n }\n\n static certificate(attrs) {\n return new Certificate(attrs);\n }\n\n static certificates(attrs) {\n return new Certificates(attrs);\n }\n\n static checkButton(attrs) {\n return new CheckButton(attrs);\n }\n\n static choiceList(attrs) {\n return new ChoiceList(attrs);\n }\n\n static color(attrs) {\n return new Color(attrs);\n }\n\n static comb(attrs) {\n return new Comb(attrs);\n }\n\n static connect(attrs) {\n return new Connect(attrs);\n }\n\n static contentArea(attrs) {\n return new ContentArea(attrs);\n }\n\n static corner(attrs) {\n return new Corner(attrs);\n }\n\n static date(attrs) {\n return new DateElement(attrs);\n }\n\n static dateTime(attrs) {\n return new DateTime(attrs);\n }\n\n static dateTimeEdit(attrs) {\n return new DateTimeEdit(attrs);\n }\n\n static decimal(attrs) {\n return new Decimal(attrs);\n }\n\n static defaultUi(attrs) {\n return new DefaultUi(attrs);\n }\n\n static desc(attrs) {\n return new Desc(attrs);\n }\n\n static digestMethod(attrs) {\n return new DigestMethod(attrs);\n }\n\n static digestMethods(attrs) {\n return new DigestMethods(attrs);\n }\n\n static draw(attrs) {\n return new Draw(attrs);\n }\n\n static edge(attrs) {\n return new Edge(attrs);\n }\n\n static encoding(attrs) {\n return new Encoding(attrs);\n }\n\n static encodings(attrs) {\n return new Encodings(attrs);\n }\n\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n\n static encryptData(attrs) {\n return new EncryptData(attrs);\n }\n\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n\n static encryptionMethod(attrs) {\n return new EncryptionMethod(attrs);\n }\n\n static encryptionMethods(attrs) {\n return new EncryptionMethods(attrs);\n }\n\n static event(attrs) {\n return new Event(attrs);\n }\n\n static exData(attrs) {\n return new ExData(attrs);\n }\n\n static exObject(attrs) {\n return new ExObject(attrs);\n }\n\n static exclGroup(attrs) {\n return new ExclGroup(attrs);\n }\n\n static execute(attrs) {\n return new Execute(attrs);\n }\n\n static extras(attrs) {\n return new Extras(attrs);\n }\n\n static field(attrs) {\n return new Field(attrs);\n }\n\n static fill(attrs) {\n return new Fill(attrs);\n }\n\n static filter(attrs) {\n return new Filter(attrs);\n }\n\n static float(attrs) {\n return new Float(attrs);\n }\n\n static font(attrs) {\n return new Font(attrs);\n }\n\n static format(attrs) {\n return new Format(attrs);\n }\n\n static handler(attrs) {\n return new Handler(attrs);\n }\n\n static hyphenation(attrs) {\n return new Hyphenation(attrs);\n }\n\n static image(attrs) {\n return new Image(attrs);\n }\n\n static imageEdit(attrs) {\n return new ImageEdit(attrs);\n }\n\n static integer(attrs) {\n return new Integer(attrs);\n }\n\n static issuers(attrs) {\n return new Issuers(attrs);\n }\n\n static items(attrs) {\n return new Items(attrs);\n }\n\n static keep(attrs) {\n return new Keep(attrs);\n }\n\n static keyUsage(attrs) {\n return new KeyUsage(attrs);\n }\n\n static line(attrs) {\n return new Line(attrs);\n }\n\n static linear(attrs) {\n return new Linear(attrs);\n }\n\n static lockDocument(attrs) {\n return new LockDocument(attrs);\n }\n\n static manifest(attrs) {\n return new Manifest(attrs);\n }\n\n static margin(attrs) {\n return new Margin(attrs);\n }\n\n static mdp(attrs) {\n return new Mdp(attrs);\n }\n\n static medium(attrs) {\n return new Medium(attrs);\n }\n\n static message(attrs) {\n return new Message(attrs);\n }\n\n static numericEdit(attrs) {\n return new NumericEdit(attrs);\n }\n\n static occur(attrs) {\n return new Occur(attrs);\n }\n\n static oid(attrs) {\n return new Oid(attrs);\n }\n\n static oids(attrs) {\n return new Oids(attrs);\n }\n\n static overflow(attrs) {\n return new Overflow(attrs);\n }\n\n static pageArea(attrs) {\n return new PageArea(attrs);\n }\n\n static pageSet(attrs) {\n return new PageSet(attrs);\n }\n\n static para(attrs) {\n return new Para(attrs);\n }\n\n static passwordEdit(attrs) {\n return new PasswordEdit(attrs);\n }\n\n static pattern(attrs) {\n return new Pattern(attrs);\n }\n\n static picture(attrs) {\n return new Picture(attrs);\n }\n\n static proto(attrs) {\n return new Proto(attrs);\n }\n\n static radial(attrs) {\n return new Radial(attrs);\n }\n\n static reason(attrs) {\n return new Reason(attrs);\n }\n\n static reasons(attrs) {\n return new Reasons(attrs);\n }\n\n static rectangle(attrs) {\n return new Rectangle(attrs);\n }\n\n static ref(attrs) {\n return new RefElement(attrs);\n }\n\n static script(attrs) {\n return new Script(attrs);\n }\n\n static setProperty(attrs) {\n return new SetProperty(attrs);\n }\n\n static signData(attrs) {\n return new SignData(attrs);\n }\n\n static signature(attrs) {\n return new Signature(attrs);\n }\n\n static signing(attrs) {\n return new Signing(attrs);\n }\n\n static solid(attrs) {\n return new Solid(attrs);\n }\n\n static speak(attrs) {\n return new Speak(attrs);\n }\n\n static stipple(attrs) {\n return new Stipple(attrs);\n }\n\n static subform(attrs) {\n return new Subform(attrs);\n }\n\n static subformSet(attrs) {\n return new SubformSet(attrs);\n }\n\n static subjectDN(attrs) {\n return new SubjectDN(attrs);\n }\n\n static subjectDNs(attrs) {\n return new SubjectDNs(attrs);\n }\n\n static submit(attrs) {\n return new Submit(attrs);\n }\n\n static template(attrs) {\n return new Template(attrs);\n }\n\n static text(attrs) {\n return new Text(attrs);\n }\n\n static textEdit(attrs) {\n return new TextEdit(attrs);\n }\n\n static time(attrs) {\n return new Time(attrs);\n }\n\n static timeStamp(attrs) {\n return new TimeStamp(attrs);\n }\n\n static toolTip(attrs) {\n return new ToolTip(attrs);\n }\n\n static traversal(attrs) {\n return new Traversal(attrs);\n }\n\n static traverse(attrs) {\n return new Traverse(attrs);\n }\n\n static ui(attrs) {\n return new Ui(attrs);\n }\n\n static validate(attrs) {\n return new Validate(attrs);\n }\n\n static value(attrs) {\n return new Value(attrs);\n }\n\n static variables(attrs) {\n return new Variables(attrs);\n }\n}\n\nexport {\n BindItems,\n Field,\n Items,\n SetProperty,\n Template,\n TemplateNamespace,\n Text,\n Value,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $extra,\n $flushHTML,\n $getSubformParent,\n $getTemplateRoot,\n $isSplittable,\n $isThereMoreWidth,\n} from \"./xfa_object.js\";\nimport { measureToString } from \"./html_utils.js\";\n\n// Subform and ExclGroup have a layout so they share these functions.\n\n/**\n * How layout works ?\n *\n * A container has an initial space (with a width and a height) to fit in,\n * which means that once all the children have been added then\n * the total width/height must be lower than the given ones in\n * the initial space.\n * So if the container has known dimensions and these ones are ok with the\n * space then continue else we return HTMLResult.FAILURE: it's up to the\n * parent to deal with this failure (e.g. if parent layout is lr-tb and\n * we fail to add a child at end of line (lr) then we try to add it on the\n * next line).\n * And then we run through the children, each child gets its initial space\n * in calling its parent $getAvailableSpace method\n * (see _filteredChildrenGenerator and $childrenToHTML in xfa_object.js)\n * then we try to layout child in its space. If everything is ok then we add\n * the result to its parent through $addHTML which will recompute the available\n * space in parent according to its layout property else we return\n * HTMLResult.Failure.\n * Before a failure some children may have been layed out: they've been saved in\n * [$extra].children and [$extra] has properties generator and failingNode\n * in order to save the state where we were before a failure.\n * This [$extra].children property is useful when a container has to be splited.\n * So if a container is unbreakable, we must delete its [$extra] property before\n * returning.\n */\n\nfunction createLine(node, children) {\n return {\n name: \"div\",\n attributes: {\n class: [node.layout === \"lr-tb\" ? \"xfaLr\" : \"xfaRl\"],\n },\n children,\n };\n}\n\nfunction flushHTML(node) {\n if (!node[$extra]) {\n return null;\n }\n\n const attributes = node[$extra].attributes;\n const html = {\n name: \"div\",\n attributes,\n children: node[$extra].children,\n };\n\n if (node[$extra].failingNode) {\n const htmlFromFailing = node[$extra].failingNode[$flushHTML]();\n if (htmlFromFailing) {\n if (node.layout.endsWith(\"-tb\")) {\n html.children.push(createLine(node, [htmlFromFailing]));\n } else {\n html.children.push(htmlFromFailing);\n }\n }\n }\n\n if (html.children.length === 0) {\n return null;\n }\n\n return html;\n}\n\nfunction addHTML(node, html, bbox) {\n const extra = node[$extra];\n const availableSpace = extra.availableSpace;\n\n const [x, y, w, h] = bbox;\n switch (node.layout) {\n case \"position\": {\n extra.width = Math.max(extra.width, x + w);\n extra.height = Math.max(extra.height, y + h);\n extra.children.push(html);\n break;\n }\n case \"lr-tb\":\n case \"rl-tb\":\n if (!extra.line || extra.attempt === 1) {\n extra.line = createLine(node, []);\n extra.children.push(extra.line);\n extra.numberInLine = 0;\n }\n\n extra.numberInLine += 1;\n extra.line.children.push(html);\n\n if (extra.attempt === 0) {\n // Add the element on the line\n extra.currentWidth += w;\n extra.height = Math.max(extra.height, extra.prevHeight + h);\n } else {\n extra.currentWidth = w;\n extra.prevHeight = extra.height;\n extra.height += h;\n\n // The element has been added on a new line so switch to line mode now.\n extra.attempt = 0;\n }\n extra.width = Math.max(extra.width, extra.currentWidth);\n break;\n case \"rl-row\":\n case \"row\": {\n extra.children.push(html);\n extra.width += w;\n extra.height = Math.max(extra.height, h);\n const height = measureToString(extra.height);\n for (const child of extra.children) {\n child.attributes.style.height = height;\n }\n break;\n }\n case \"table\": {\n extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n extra.height += h;\n extra.children.push(html);\n break;\n }\n case \"tb\": {\n // Even if the subform can possibly take all the available width,\n // we must compute the final width as it is in order to be able\n // for example to center the subform within its parent.\n extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n extra.height += h;\n extra.children.push(html);\n break;\n }\n }\n}\n\nfunction getAvailableSpace(node) {\n const availableSpace = node[$extra].availableSpace;\n const marginV = node.margin\n ? node.margin.topInset + node.margin.bottomInset\n : 0;\n const marginH = node.margin\n ? node.margin.leftInset + node.margin.rightInset\n : 0;\n\n switch (node.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (node[$extra].attempt === 0) {\n return {\n width: availableSpace.width - marginH - node[$extra].currentWidth,\n height: availableSpace.height - marginV - node[$extra].prevHeight,\n };\n }\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height,\n };\n case \"rl-row\":\n case \"row\":\n const width = node[$extra].columnWidths\n .slice(node[$extra].currentColumn)\n .reduce((a, x) => a + x);\n return { width, height: availableSpace.height - marginH };\n case \"table\":\n case \"tb\":\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height,\n };\n case \"position\":\n default:\n return availableSpace;\n }\n}\n\nfunction getTransformedBBox(node) {\n // Take into account rotation and anchor to get the real bounding box.\n let w = node.w === \"\" ? NaN : node.w;\n let h = node.h === \"\" ? NaN : node.h;\n let [centerX, centerY] = [0, 0];\n switch (node.anchorType || \"\") {\n case \"bottomCenter\":\n [centerX, centerY] = [w / 2, h];\n break;\n case \"bottomLeft\":\n [centerX, centerY] = [0, h];\n break;\n case \"bottomRight\":\n [centerX, centerY] = [w, h];\n break;\n case \"middleCenter\":\n [centerX, centerY] = [w / 2, h / 2];\n break;\n case \"middleLeft\":\n [centerX, centerY] = [0, h / 2];\n break;\n case \"middleRight\":\n [centerX, centerY] = [w, h / 2];\n break;\n case \"topCenter\":\n [centerX, centerY] = [w / 2, 0];\n break;\n case \"topRight\":\n [centerX, centerY] = [w, 0];\n break;\n }\n\n let x, y;\n switch (node.rotate || 0) {\n case 0:\n [x, y] = [-centerX, -centerY];\n break;\n case 90:\n [x, y] = [-centerY, centerX];\n [w, h] = [h, -w];\n break;\n case 180:\n [x, y] = [centerX, centerY];\n [w, h] = [-w, -h];\n break;\n case 270:\n [x, y] = [centerY, -centerX];\n [w, h] = [-h, w];\n break;\n }\n\n return [\n node.x + x + Math.min(0, w),\n node.y + y + Math.min(0, h),\n Math.abs(w),\n Math.abs(h),\n ];\n}\n\n/**\n * Returning true means that the node will be layed out\n * else the layout will go to its next step (changing of line\n * in case of lr-tb or changing content area...).\n */\nfunction checkDimensions(node, space) {\n if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\n return true;\n }\n\n if (node.w === 0 || node.h === 0) {\n return true;\n }\n\n const ERROR = 2;\n const parent = node[$getSubformParent]();\n const attempt = (parent[$extra] && parent[$extra].attempt) || 0;\n\n const [, y, w, h] = getTransformedBBox(node);\n switch (parent.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (attempt === 0) {\n // Try to put an element in the line.\n\n if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n // Not enough height.\n return false;\n }\n\n if (node.w !== \"\") {\n if (Math.round(w - space.width) <= ERROR) {\n return true;\n }\n if (parent[$extra].numberInLine === 0) {\n return space.height > ERROR;\n }\n\n return false;\n }\n\n return space.width > ERROR;\n }\n\n // No layout failure.\n\n // Put the element on the line but we can fail\n // and then in the second step (next line) we'll accept.\n if (node.w !== \"\") {\n return Math.round(w - space.width) <= ERROR;\n }\n\n return space.width > ERROR;\n }\n\n // Second attempt: try to put the element on the next line.\n\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n // We cannot fail.\n return true;\n }\n\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n return false;\n }\n\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n\n return space.height > ERROR;\n case \"table\":\n case \"tb\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n // If the node has a height then check if it's fine with available height.\n // If the node is breakable then we can return true.\n if (node.h !== \"\" && !node[$isSplittable]()) {\n return Math.round(h - space.height) <= ERROR;\n }\n // Else wait and see: this node will be layed out itself\n // in the provided space and maybe a children won't fit.\n\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n\n return space.height > ERROR;\n case \"position\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n if (node.h === \"\" || Math.round(h + y - space.height) <= ERROR) {\n return true;\n }\n\n const area = node[$getTemplateRoot]()[$extra].currentContentArea;\n return h + y > area.h;\n case \"rl-row\":\n case \"row\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n if (node.h !== \"\") {\n return Math.round(h - space.height) <= ERROR;\n }\n return true;\n default:\n // No layout, so accept everything.\n return true;\n }\n}\n\nexport { addHTML, checkDimensions, flushHTML, getAvailableSpace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $content,\n $extra,\n $getParent,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $nodeName,\n $pushGlyphs,\n $text,\n $toStyle,\n XFAObject,\n} from \"./xfa_object.js\";\nimport { createValidAbsoluteUrl, warn } from \"../../shared/util.js\";\nimport { getMeasurement, stripQuotes } from \"./utils.js\";\nimport { selectFont } from \"./fonts.js\";\nimport { TextMeasure } from \"./text.js\";\n\nfunction measureToString(m) {\n if (typeof m === \"string\") {\n return \"0px\";\n }\n\n return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\n}\n\nconst converters = {\n anchorType(node, style) {\n const parent = node[$getSubformParent]();\n if (!parent || (parent.layout && parent.layout !== \"position\")) {\n // anchorType is only used in a positioned layout.\n return;\n }\n\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n switch (node.anchorType) {\n case \"bottomCenter\":\n style.transform += \"translate(-50%, -100%)\";\n break;\n case \"bottomLeft\":\n style.transform += \"translate(0,-100%)\";\n break;\n case \"bottomRight\":\n style.transform += \"translate(-100%,-100%)\";\n break;\n case \"middleCenter\":\n style.transform += \"translate(-50%,-50%)\";\n break;\n case \"middleLeft\":\n style.transform += \"translate(0,-50%)\";\n break;\n case \"middleRight\":\n style.transform += \"translate(-100%,-50%)\";\n break;\n case \"topCenter\":\n style.transform += \"translate(-50%,0)\";\n break;\n case \"topRight\":\n style.transform += \"translate(-100%,0)\";\n break;\n }\n },\n dimensions(node, style) {\n const parent = node[$getSubformParent]();\n let width = node.w;\n const height = node.h;\n if (parent.layout && parent.layout.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let w;\n if (colSpan === -1) {\n w = extra.columnWidths\n .slice(extra.currentColumn)\n .reduce((a, x) => a + x, 0);\n extra.currentColumn = 0;\n } else {\n w = extra.columnWidths\n .slice(extra.currentColumn, extra.currentColumn + colSpan)\n .reduce((a, x) => a + x, 0);\n extra.currentColumn =\n (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n }\n\n if (!isNaN(w)) {\n width = node.w = w;\n }\n }\n\n if (width !== \"\") {\n style.width = measureToString(width);\n } else {\n style.width = \"auto\";\n }\n\n if (height !== \"\") {\n style.height = measureToString(height);\n } else {\n style.height = \"auto\";\n }\n },\n position(node, style) {\n const parent = node[$getSubformParent]();\n if (parent && parent.layout && parent.layout !== \"position\") {\n // IRL, we've some x/y in tb layout.\n // Specs say x/y is only used in positioned layout.\n return;\n }\n\n style.position = \"absolute\";\n style.left = measureToString(node.x);\n style.top = measureToString(node.y);\n },\n rotate(node, style) {\n if (node.rotate) {\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n style.transform += `rotate(-${node.rotate}deg)`;\n style.transformOrigin = \"top left\";\n }\n },\n presence(node, style) {\n switch (node.presence) {\n case \"invisible\":\n style.visibility = \"hidden\";\n break;\n case \"hidden\":\n case \"inactive\":\n style.display = \"none\";\n break;\n }\n },\n hAlign(node, style) {\n if (node[$nodeName] === \"para\") {\n switch (node.hAlign) {\n case \"justifyAll\":\n style.textAlign = \"justify-all\";\n break;\n case \"radix\":\n // TODO: implement this correctly !\n style.textAlign = \"left\";\n break;\n default:\n style.textAlign = node.hAlign;\n }\n } else {\n switch (node.hAlign) {\n case \"left\":\n style.alignSelf = \"start\";\n break;\n case \"center\":\n style.alignSelf = \"center\";\n break;\n case \"right\":\n style.alignSelf = \"end\";\n break;\n }\n }\n },\n margin(node, style) {\n if (node.margin) {\n style.margin = node.margin[$toStyle]().margin;\n }\n },\n};\n\nfunction setMinMaxDimensions(node, style) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\") {\n if (node.minW > 0) {\n style.minWidth = measureToString(node.minW);\n }\n if (node.maxW > 0) {\n style.maxWidth = measureToString(node.maxW);\n }\n if (node.minH > 0) {\n style.minHeight = measureToString(node.minH);\n }\n if (node.maxH > 0) {\n style.maxHeight = measureToString(node.maxH);\n }\n }\n}\n\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\n const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder);\n if (typeof text === \"string\") {\n measure.addString(text);\n } else {\n text[$pushGlyphs](measure);\n }\n\n return measure.compute(width);\n}\n\nfunction layoutNode(node, availableSpace) {\n let height = null;\n let width = null;\n let isBroken = false;\n\n if ((!node.w || !node.h) && node.value) {\n let marginH = 0;\n let marginV = 0;\n if (node.margin) {\n marginH = node.margin.leftInset + node.margin.rightInset;\n marginV = node.margin.topInset + node.margin.bottomInset;\n }\n\n let lineHeight = null;\n let margin = null;\n if (node.para) {\n margin = Object.create(null);\n lineHeight = node.para.lineHeight === \"\" ? null : node.para.lineHeight;\n margin.top = node.para.spaceAbove === \"\" ? 0 : node.para.spaceAbove;\n margin.bottom = node.para.spaceBelow === \"\" ? 0 : node.para.spaceBelow;\n margin.left = node.para.marginLeft === \"\" ? 0 : node.para.marginLeft;\n margin.right = node.para.marginRight === \"\" ? 0 : node.para.marginRight;\n }\n\n let font = node.font;\n if (!font) {\n const root = node[$getTemplateRoot]();\n let parent = node[$getParent]();\n while (parent && parent !== root) {\n if (parent.font) {\n font = parent.font;\n break;\n }\n parent = parent[$getParent]();\n }\n }\n\n const maxWidth = (!node.w ? availableSpace.width : node.w) - marginH;\n const fontFinder = node[$globalData].fontFinder;\n if (\n node.value.exData &&\n node.value.exData[$content] &&\n node.value.exData.contentType === \"text/html\"\n ) {\n const res = layoutText(\n node.value.exData[$content],\n font,\n margin,\n lineHeight,\n fontFinder,\n maxWidth\n );\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n } else {\n const text = node.value[$text]();\n if (text) {\n const res = layoutText(\n text,\n font,\n margin,\n lineHeight,\n fontFinder,\n maxWidth\n );\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n }\n }\n\n if (width !== null && !node.w) {\n width += marginH;\n }\n\n if (height !== null && !node.h) {\n height += marginV;\n }\n }\n return { w: width, h: height, isBroken };\n}\n\nfunction computeBbox(node, html, availableSpace) {\n let bbox;\n if (node.w !== \"\" && node.h !== \"\") {\n bbox = [node.x, node.y, node.w, node.h];\n } else {\n if (!availableSpace) {\n return null;\n }\n let width = node.w;\n if (width === \"\") {\n if (node.maxW === 0) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\" && parent.w !== \"\") {\n width = 0;\n } else {\n width = node.minW;\n }\n } else {\n width = Math.min(node.maxW, availableSpace.width);\n }\n html.attributes.style.width = measureToString(width);\n }\n\n let height = node.h;\n if (height === \"\") {\n if (node.maxH === 0) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\" && parent.h !== \"\") {\n height = 0;\n } else {\n height = node.minH;\n }\n } else {\n height = Math.min(node.maxH, availableSpace.height);\n }\n html.attributes.style.height = measureToString(height);\n }\n\n bbox = [node.x, node.y, width, height];\n }\n return bbox;\n}\n\nfunction fixDimensions(node) {\n const parent = node[$getSubformParent]();\n if (parent.layout && parent.layout.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let width;\n if (colSpan === -1) {\n width = extra.columnWidths\n .slice(extra.currentColumn)\n .reduce((a, w) => a + w, 0);\n } else {\n width = extra.columnWidths\n .slice(extra.currentColumn, extra.currentColumn + colSpan)\n .reduce((a, w) => a + w, 0);\n }\n if (!isNaN(width)) {\n node.w = width;\n }\n }\n\n if (parent.layout && parent.layout !== \"position\") {\n // Useless in this context.\n node.x = node.y = 0;\n }\n\n if (node.layout === \"table\") {\n if (node.w === \"\" && Array.isArray(node.columnWidths)) {\n node.w = node.columnWidths.reduce((a, x) => a + x, 0);\n }\n }\n}\n\nfunction layoutClass(node) {\n switch (node.layout) {\n case \"position\":\n return \"xfaPosition\";\n case \"lr-tb\":\n return \"xfaLrTb\";\n case \"rl-row\":\n return \"xfaRlRow\";\n case \"rl-tb\":\n return \"xfaRlTb\";\n case \"row\":\n return \"xfaRow\";\n case \"table\":\n return \"xfaTable\";\n case \"tb\":\n return \"xfaTb\";\n default:\n return \"xfaPosition\";\n }\n}\n\nfunction toStyle(node, ...names) {\n const style = Object.create(null);\n for (const name of names) {\n const value = node[name];\n if (value === null) {\n continue;\n }\n if (converters.hasOwnProperty(name)) {\n converters[name](node, style);\n continue;\n }\n\n if (value instanceof XFAObject) {\n const newStyle = value[$toStyle]();\n if (newStyle) {\n Object.assign(style, newStyle);\n } else {\n warn(`(DEBUG) - XFA - style for ${name} not implemented yet`);\n }\n }\n }\n return style;\n}\n\nfunction createWrapper(node, html) {\n const { attributes } = html;\n const { style } = attributes;\n\n const wrapper = {\n name: \"div\",\n attributes: {\n class: [\"xfaWrapper\"],\n style: Object.create(null),\n },\n children: [],\n };\n\n attributes.class.push(\"xfaWrapped\");\n\n if (node.border) {\n const { widths, insets } = node.border[$extra];\n let width, height;\n let top = insets[0];\n let left = insets[3];\n const insetsH = insets[0] + insets[2];\n const insetsW = insets[1] + insets[3];\n switch (node.border.hand) {\n case \"even\":\n top -= widths[0] / 2;\n left -= widths[3] / 2;\n width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`;\n height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`;\n break;\n case \"left\":\n top -= widths[0];\n left -= widths[3];\n width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\n height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\n break;\n case \"right\":\n width = insetsW ? `calc(100% - ${insetsW}px)` : \"100%\";\n height = insetsH ? `calc(100% - ${insetsH}px)` : \"100%\";\n break;\n }\n const classNames = [\"xfaBorder\"];\n if (isPrintOnly(node.border)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const border = {\n name: \"div\",\n attributes: {\n class: classNames,\n style: {\n top: `${top}px`,\n left: `${left}px`,\n width,\n height,\n },\n },\n children: [],\n };\n\n for (const key of [\n \"border\",\n \"borderWidth\",\n \"borderColor\",\n \"borderRadius\",\n \"borderStyle\",\n ]) {\n if (style[key] !== undefined) {\n border.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n wrapper.children.push(border, html);\n } else {\n wrapper.children.push(html);\n }\n\n for (const key of [\n \"background\",\n \"backgroundClip\",\n \"top\",\n \"left\",\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\",\n \"transform\",\n \"transformOrigin\",\n \"visibility\",\n ]) {\n if (style[key] !== undefined) {\n wrapper.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n\n if (style.position === \"absolute\") {\n wrapper.attributes.style.position = \"absolute\";\n } else {\n wrapper.attributes.style.position = \"relative\";\n }\n delete style.position;\n\n if (style.alignSelf) {\n wrapper.attributes.style.alignSelf = style.alignSelf;\n delete style.alignSelf;\n }\n\n return wrapper;\n}\n\nfunction fixTextIndent(styles) {\n const indent = getMeasurement(styles.textIndent, \"0px\");\n if (indent >= 0) {\n return;\n }\n\n // If indent is negative then it's a hanging indent.\n const align = styles.textAlign === \"right\" ? \"right\" : \"left\";\n const name = \"padding\" + (align === \"left\" ? \"Left\" : \"Right\");\n const padding = getMeasurement(styles[name], \"0px\");\n styles[name] = `${padding - indent}px`;\n}\n\nfunction setAccess(node, classNames) {\n switch (node.access) {\n case \"nonInteractive\":\n classNames.push(\"xfaNonInteractive\");\n break;\n case \"readOnly\":\n classNames.push(\"xfaReadOnly\");\n break;\n case \"protected\":\n classNames.push(\"xfaDisabled\");\n break;\n }\n}\n\nfunction isPrintOnly(node) {\n return (\n node.relevant.length > 0 &&\n !node.relevant[0].excluded &&\n node.relevant[0].viewname === \"print\"\n );\n}\n\nfunction getCurrentPara(node) {\n const stack = node[$getTemplateRoot]()[$extra].paraStack;\n return stack.length ? stack[stack.length - 1] : null;\n}\n\nfunction setPara(node, nodeStyle, value) {\n if (value.attributes.class && value.attributes.class.includes(\"xfaRich\")) {\n if (nodeStyle) {\n if (node.h === \"\") {\n nodeStyle.height = \"auto\";\n }\n if (node.w === \"\") {\n nodeStyle.width = \"auto\";\n }\n }\n\n const para = getCurrentPara(node);\n if (para) {\n // By definition exData are external data so para\n // has no effect on it.\n const valueStyle = value.attributes.style;\n valueStyle.display = \"flex\";\n valueStyle.flexDirection = \"column\";\n switch (para.vAlign) {\n case \"top\":\n valueStyle.justifyContent = \"start\";\n break;\n case \"bottom\":\n valueStyle.justifyContent = \"end\";\n break;\n case \"middle\":\n valueStyle.justifyContent = \"center\";\n break;\n }\n\n const paraStyle = para[$toStyle]();\n for (const [key, val] of Object.entries(paraStyle)) {\n if (!(key in valueStyle)) {\n valueStyle[key] = val;\n }\n }\n }\n }\n}\n\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\n if (!fontFinder) {\n // The font cannot be found in the pdf so use the default one.\n delete style.fontFamily;\n return;\n }\n\n const name = stripQuotes(xfaFont.typeface);\n style.fontFamily = `\"${name}\"`;\n\n const typeface = fontFinder.find(name);\n if (typeface) {\n const { fontFamily } = typeface.regular.cssFontInfo;\n if (fontFamily !== name) {\n style.fontFamily = `\"${fontFamily}\"`;\n }\n\n const para = getCurrentPara(node);\n if (para && para.lineHeight !== \"\") {\n return;\n }\n\n if (style.lineHeight) {\n // Already something so don't overwrite.\n return;\n }\n\n const pdfFont = selectFont(xfaFont, typeface);\n if (pdfFont) {\n style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\n }\n }\n}\n\nfunction fixURL(str) {\n const absoluteUrl = createValidAbsoluteUrl(str, /* baseUrl = */ null, {\n addDefaultProtocol: true,\n tryConvertEncoding: true,\n });\n return absoluteUrl ? absoluteUrl.href : null;\n}\n\nexport {\n computeBbox,\n createWrapper,\n fixDimensions,\n fixTextIndent,\n fixURL,\n isPrintOnly,\n layoutClass,\n layoutNode,\n measureToString,\n setAccess,\n setFontFamily,\n setMinMaxDimensions,\n setPara,\n toStyle,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $globalData } from \"./xfa_object.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass FontFinder {\n constructor(pdfFonts) {\n this.fonts = new Map();\n this.cache = new Map();\n this.warned = new Set();\n this.defaultFont = null;\n this.add(pdfFonts);\n }\n\n add(pdfFonts, reallyMissingFonts = null) {\n for (const pdfFont of pdfFonts) {\n this.addPdfFont(pdfFont);\n }\n for (const pdfFont of this.fonts.values()) {\n if (!pdfFont.regular) {\n pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\n }\n }\n\n if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\n return;\n }\n const myriad = this.fonts.get(\"PdfJS-Fallback-PdfJS-XFA\");\n for (const missing of reallyMissingFonts) {\n this.fonts.set(missing, myriad);\n }\n }\n\n addPdfFont(pdfFont) {\n const cssFontInfo = pdfFont.cssFontInfo;\n const name = cssFontInfo.fontFamily;\n let font = this.fonts.get(name);\n if (!font) {\n font = Object.create(null);\n this.fonts.set(name, font);\n if (!this.defaultFont) {\n this.defaultFont = font;\n }\n }\n let property = \"\";\n const fontWeight = parseFloat(cssFontInfo.fontWeight);\n if (parseFloat(cssFontInfo.italicAngle) !== 0) {\n property = fontWeight >= 700 ? \"bolditalic\" : \"italic\";\n } else if (fontWeight >= 700) {\n property = \"bold\";\n }\n\n if (!property) {\n if (\n pdfFont.name.includes(\"Bold\") ||\n (pdfFont.psName && pdfFont.psName.includes(\"Bold\"))\n ) {\n property = \"bold\";\n }\n if (\n pdfFont.name.includes(\"Italic\") ||\n pdfFont.name.endsWith(\"It\") ||\n (pdfFont.psName &&\n (pdfFont.psName.includes(\"Italic\") || pdfFont.psName.endsWith(\"It\")))\n ) {\n property += \"italic\";\n }\n }\n\n if (!property) {\n property = \"regular\";\n }\n\n font[property] = pdfFont;\n }\n\n getDefault() {\n return this.defaultFont;\n }\n\n find(fontName, mustWarn = true) {\n let font = this.fonts.get(fontName) || this.cache.get(fontName);\n if (font) {\n return font;\n }\n\n const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi;\n let name = fontName.replace(pattern, \"\");\n font = this.fonts.get(name);\n if (font) {\n this.cache.set(fontName, font);\n return font;\n }\n name = name.toLowerCase();\n\n const maybe = [];\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n\n if (maybe.length === 0) {\n for (const [, pdfFont] of this.fonts.entries()) {\n if (\n pdfFont.regular.name &&\n pdfFont.regular.name\n .replace(pattern, \"\")\n .toLowerCase()\n .startsWith(name)\n ) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length === 0) {\n name = name.replace(/psmt|mt/gi, \"\");\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length === 0) {\n for (const pdfFont of this.fonts.values()) {\n if (\n pdfFont.regular.name &&\n pdfFont.regular.name\n .replace(pattern, \"\")\n .toLowerCase()\n .startsWith(name)\n ) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length >= 1) {\n if (maybe.length !== 1 && mustWarn) {\n warn(`XFA - Too many choices to guess the correct font: ${fontName}`);\n }\n this.cache.set(fontName, maybe[0]);\n return maybe[0];\n }\n\n if (mustWarn && !this.warned.has(fontName)) {\n this.warned.add(fontName);\n warn(`XFA - Cannot find the font: ${fontName}`);\n }\n return null;\n }\n}\n\nfunction selectFont(xfaFont, typeface) {\n if (xfaFont.posture === \"italic\") {\n if (xfaFont.weight === \"bold\") {\n return typeface.bolditalic;\n }\n return typeface.italic;\n } else if (xfaFont.weight === \"bold\") {\n return typeface.bold;\n }\n\n return typeface.regular;\n}\n\nfunction getMetrics(xfaFont, real = false) {\n let pdfFont = null;\n if (xfaFont) {\n const name = stripQuotes(xfaFont.typeface);\n const typeface = xfaFont[$globalData].fontFinder.find(name);\n pdfFont = selectFont(xfaFont, typeface);\n }\n\n if (!pdfFont) {\n return {\n lineHeight: 12,\n lineGap: 2,\n lineNoGap: 10,\n };\n }\n\n const size = xfaFont.size || 10;\n const lineHeight = pdfFont.lineHeight\n ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight)\n : 1.2;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n return {\n lineHeight: lineHeight * size,\n lineGap: lineGap * size,\n lineNoGap: Math.max(1, lineHeight - lineGap) * size,\n };\n}\n\nexport { FontFinder, getMetrics, selectFont };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { selectFont } from \"./fonts.js\";\n\nconst WIDTH_FACTOR = 1.02;\n\nclass FontInfo {\n constructor(xfaFont, margin, lineHeight, fontFinder) {\n this.lineHeight = lineHeight;\n this.paraMargin = margin || {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n\n if (!xfaFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n\n this.xfaFont = {\n typeface: xfaFont.typeface,\n posture: xfaFont.posture,\n weight: xfaFont.weight,\n size: xfaFont.size,\n letterSpacing: xfaFont.letterSpacing,\n };\n const typeface = fontFinder.find(xfaFont.typeface);\n if (!typeface) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n\n this.pdfFont = selectFont(xfaFont, typeface);\n\n if (!this.pdfFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n }\n }\n\n defaultFont(fontFinder) {\n // TODO: Add a default font based on Liberation.\n const font =\n fontFinder.find(\"Helvetica\", false) ||\n fontFinder.find(\"Myriad Pro\", false) ||\n fontFinder.find(\"Arial\", false) ||\n fontFinder.getDefault();\n if (font && font.regular) {\n const pdfFont = font.regular;\n const info = pdfFont.cssFontInfo;\n const xfaFont = {\n typeface: info.fontFamily,\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0,\n };\n return [pdfFont, xfaFont];\n }\n\n const xfaFont = {\n typeface: \"Courier\",\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0,\n };\n return [null, xfaFont];\n }\n}\n\nclass FontSelector {\n constructor(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fontFinder\n ) {\n this.fontFinder = fontFinder;\n this.stack = [\n new FontInfo(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fontFinder\n ),\n ];\n }\n\n pushData(xfaFont, margin, lineHeight) {\n const lastFont = this.stack[this.stack.length - 1];\n for (const name of [\n \"typeface\",\n \"posture\",\n \"weight\",\n \"size\",\n \"letterSpacing\",\n ]) {\n if (!xfaFont[name]) {\n xfaFont[name] = lastFont.xfaFont[name];\n }\n }\n\n for (const name of [\"top\", \"bottom\", \"left\", \"right\"]) {\n if (isNaN(margin[name])) {\n margin[name] = lastFont.paraMargin[name];\n }\n }\n\n const fontInfo = new FontInfo(\n xfaFont,\n margin,\n lineHeight || lastFont.lineHeight,\n this.fontFinder\n );\n if (!fontInfo.pdfFont) {\n fontInfo.pdfFont = lastFont.pdfFont;\n }\n\n this.stack.push(fontInfo);\n }\n\n popFont() {\n this.stack.pop();\n }\n\n topFont() {\n return this.stack[this.stack.length - 1];\n }\n}\n\n/**\n * Compute a text area dimensions based on font metrics.\n */\nclass TextMeasure {\n constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\n this.glyphs = [];\n this.fontSelector = new FontSelector(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fonts\n );\n this.extraHeight = 0;\n }\n\n pushData(xfaFont, margin, lineHeight) {\n this.fontSelector.pushData(xfaFont, margin, lineHeight);\n }\n\n popFont(xfaFont) {\n return this.fontSelector.popFont();\n }\n\n addPara() {\n const lastFont = this.fontSelector.topFont();\n this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\n }\n\n addString(str) {\n if (!str) {\n return;\n }\n\n const lastFont = this.fontSelector.topFont();\n const fontSize = lastFont.xfaFont.size;\n if (lastFont.pdfFont) {\n const letterSpacing = lastFont.xfaFont.letterSpacing;\n const pdfFont = lastFont.pdfFont;\n const fontLineHeight = pdfFont.lineHeight || 1.2;\n const lineHeight =\n lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n const noGap = fontLineHeight - lineGap;\n const firstLineHeight = Math.max(1, noGap) * fontSize;\n const scale = fontSize / 1000;\n const fallbackWidth =\n pdfFont.defaultWidth || pdfFont.charsToGlyphs(\" \")[0].width;\n\n for (const line of str.split(/[\\u2029\\n]/)) {\n const encodedLine = pdfFont.encodeString(line).join(\"\");\n const glyphs = pdfFont.charsToGlyphs(encodedLine);\n\n for (const glyph of glyphs) {\n const width = glyph.width || fallbackWidth;\n this.glyphs.push([\n width * scale + letterSpacing,\n lineHeight,\n firstLineHeight,\n glyph.unicode,\n false,\n ]);\n }\n\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n return;\n }\n\n // When we have no font in the pdf, just use the font size as default width.\n for (const line of str.split(/[\\u2029\\n]/)) {\n for (const char of line.split(\"\")) {\n this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\n }\n\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n }\n\n compute(maxWidth) {\n let lastSpacePos = -1,\n lastSpaceWidth = 0,\n width = 0,\n height = 0,\n currentLineWidth = 0,\n currentLineHeight = 0;\n let isBroken = false;\n let isFirstLine = true;\n\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] =\n this.glyphs[i];\n const isSpace = char === \" \";\n const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\n if (isEOL) {\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isFirstLine = false;\n continue;\n }\n\n if (isSpace) {\n if (currentLineWidth + glyphWidth > maxWidth) {\n // We can break here but the space is not taken into account.\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isBroken = true;\n isFirstLine = false;\n } else {\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n lastSpaceWidth = currentLineWidth;\n currentLineWidth += glyphWidth;\n lastSpacePos = i;\n }\n continue;\n }\n\n if (currentLineWidth + glyphWidth > maxWidth) {\n // We must break to the last white position (if available)\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n if (lastSpacePos !== -1) {\n i = lastSpacePos;\n width = Math.max(width, lastSpaceWidth);\n currentLineWidth = 0;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n } else {\n // Just break in the middle of the word\n width = Math.max(width, currentLineWidth);\n currentLineWidth = glyphWidth;\n }\n isBroken = true;\n isFirstLine = false;\n\n continue;\n }\n\n currentLineWidth += glyphWidth;\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n }\n\n width = Math.max(width, currentLineWidth);\n height += currentLineHeight + this.extraHeight;\n\n return { width: WIDTH_FACTOR * width, height, isBroken };\n }\n}\n\nexport { TextMeasure };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $getAttributes,\n $getChildren,\n $nodeName,\n $setValue,\n $toString,\n $uid,\n} from \"./xfa_object.js\";\n\nclass DataHandler {\n constructor(root, data) {\n this.data = data;\n this.dataset = root.datasets || null;\n }\n\n serialize(storage) {\n const stack = [[-1, this.data[$getChildren]()]];\n\n while (stack.length > 0) {\n const last = stack[stack.length - 1];\n const [i, children] = last;\n if (i + 1 === children.length) {\n stack.pop();\n continue;\n }\n\n const child = children[++last[0]];\n const storageEntry = storage.get(child[$uid]);\n if (storageEntry) {\n child[$setValue](storageEntry);\n } else {\n const attributes = child[$getAttributes]();\n for (const value of attributes.values()) {\n const entry = storage.get(value[$uid]);\n if (entry) {\n value[$setValue](entry);\n break;\n }\n }\n }\n\n const nodes = child[$getChildren]();\n if (nodes.length > 0) {\n stack.push([-1, nodes]);\n }\n }\n\n const buf = [\n `<xfa:datasets xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\">`,\n ];\n if (this.dataset) {\n // Dump nodes other than data: they can contains for example\n // some data for choice lists.\n for (const child of this.dataset[$getChildren]()) {\n if (child[$nodeName] !== \"data\") {\n child[$toString](buf);\n }\n }\n }\n this.data[$toString](buf);\n buf.push(\"</xfa:datasets>\");\n\n return buf.join(\"\");\n }\n}\n\nexport { DataHandler };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $clean,\n $content,\n $finalize,\n $globalData,\n $isCDATAXml,\n $nsAttributes,\n $onChild,\n $onText,\n $setId,\n} from \"./xfa_object.js\";\nimport { XMLParserBase, XMLParserErrorCode } from \"../xml_parser.js\";\nimport { Builder } from \"./builder.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass XFAParser extends XMLParserBase {\n constructor(rootNameSpace = null, richText = false) {\n super();\n this._builder = new Builder(rootNameSpace);\n this._stack = [];\n this._globalData = {\n usedTypefaces: new Set(),\n };\n this._ids = new Map();\n this._current = this._builder.buildRoot(this._ids);\n this._errorCode = XMLParserErrorCode.NoError;\n this._whiteRegex = /^\\s+$/;\n this._nbsps = /\\xa0+/g;\n this._richText = richText;\n }\n\n parse(data) {\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n\n this._current[$finalize]();\n\n return this._current.element;\n }\n\n onText(text) {\n // Normally by definition a &nbsp is unbreakable\n // but in real life Acrobat can break strings on &nbsp.\n text = text.replace(this._nbsps, match => match.slice(1) + \" \");\n if (this._richText || this._current[$acceptWhitespace]()) {\n this._current[$onText](text, this._richText);\n return;\n }\n\n if (this._whiteRegex.test(text)) {\n return;\n }\n this._current[$onText](text.trim());\n }\n\n onCdata(text) {\n this._current[$onText](text);\n }\n\n _mkAttributes(attributes, tagName) {\n // Transform attributes into an object and get out\n // namespaces information.\n let namespace = null;\n let prefixes = null;\n const attributeObj = Object.create({});\n for (const { name, value } of attributes) {\n if (name === \"xmlns\") {\n if (!namespace) {\n namespace = value;\n } else {\n warn(`XFA - multiple namespace definition in <${tagName}>`);\n }\n } else if (name.startsWith(\"xmlns:\")) {\n const prefix = name.substring(\"xmlns:\".length);\n if (!prefixes) {\n prefixes = [];\n }\n prefixes.push({ prefix, value });\n } else {\n const i = name.indexOf(\":\");\n if (i === -1) {\n attributeObj[name] = value;\n } else {\n // Attributes can have their own namespace.\n // For example in data, we can have <foo xfa:dataNode=\"dataGroup\"/>\n let nsAttrs = attributeObj[$nsAttributes];\n if (!nsAttrs) {\n nsAttrs = attributeObj[$nsAttributes] = Object.create(null);\n }\n const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\n let attrs = nsAttrs[ns];\n if (!attrs) {\n attrs = nsAttrs[ns] = Object.create(null);\n }\n attrs[attrName] = value;\n }\n }\n }\n\n return [namespace, prefixes, attributeObj];\n }\n\n _getNameAndPrefix(name, nsAgnostic) {\n const i = name.indexOf(\":\");\n if (i === -1) {\n return [name, null];\n }\n return [name.substring(i + 1), nsAgnostic ? \"\" : name.substring(0, i)];\n }\n\n onBeginElement(tagName, attributes, isEmpty) {\n const [namespace, prefixes, attributesObj] = this._mkAttributes(\n attributes,\n tagName\n );\n const [name, nsPrefix] = this._getNameAndPrefix(\n tagName,\n this._builder.isNsAgnostic()\n );\n const node = this._builder.build({\n nsPrefix,\n name,\n attributes: attributesObj,\n namespace,\n prefixes,\n });\n node[$globalData] = this._globalData;\n\n if (isEmpty) {\n // No children: just push the node into its parent.\n node[$finalize]();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n return;\n }\n\n this._stack.push(this._current);\n this._current = node;\n }\n\n onEndElement(name) {\n const node = this._current;\n if (node[$isCDATAXml]() && typeof node[$content] === \"string\") {\n const parser = new XFAParser();\n parser._globalData = this._globalData;\n const root = parser.parse(node[$content]);\n node[$content] = null;\n node[$onChild](root);\n }\n\n node[$finalize]();\n this._current = this._stack.pop();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { XFAParser };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $cleanup,\n $finalize,\n $ids,\n $isNsAgnostic,\n $nsAttributes,\n $onChild,\n $resolvePrototypes,\n $root,\n XFAObject,\n} from \"./xfa_object.js\";\nimport { NamespaceSetUp } from \"./setup.js\";\nimport { Template } from \"./template.js\";\nimport { UnknownNamespace } from \"./unknown.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass Root extends XFAObject {\n constructor(ids) {\n super(-1, \"root\", Object.create(null));\n this.element = null;\n this[$ids] = ids;\n }\n\n [$onChild](child) {\n this.element = child;\n return true;\n }\n\n [$finalize]() {\n super[$finalize]();\n if (this.element.template instanceof Template) {\n // Set the root element in $ids using a symbol in order\n // to avoid conflict with real IDs.\n this[$ids].set($root, this.element);\n\n this.element.template[$resolvePrototypes](this[$ids]);\n this.element.template[$ids] = this[$ids];\n }\n }\n}\n\nclass Empty extends XFAObject {\n constructor() {\n super(-1, \"\", Object.create(null));\n }\n\n [$onChild](_) {\n return false;\n }\n}\n\nclass Builder {\n constructor(rootNameSpace = null) {\n this._namespaceStack = [];\n this._nsAgnosticLevel = 0;\n\n // Each prefix has its own stack\n this._namespacePrefixes = new Map();\n this._namespaces = new Map();\n this._nextNsId = Math.max(\n ...Object.values(NamespaceIds).map(({ id }) => id)\n );\n this._currentNamespace =\n rootNameSpace || new UnknownNamespace(++this._nextNsId);\n }\n\n buildRoot(ids) {\n return new Root(ids);\n }\n\n build({ nsPrefix, name, attributes, namespace, prefixes }) {\n const hasNamespaceDef = namespace !== null;\n if (hasNamespaceDef) {\n // Define the current namespace to use.\n this._namespaceStack.push(this._currentNamespace);\n this._currentNamespace = this._searchNamespace(namespace);\n }\n\n if (prefixes) {\n // The xml node may have namespace prefix definitions\n this._addNamespacePrefix(prefixes);\n }\n\n if (attributes.hasOwnProperty($nsAttributes)) {\n // Only support xfa-data namespace.\n const dataTemplate = NamespaceSetUp.datasets;\n const nsAttrs = attributes[$nsAttributes];\n let xfaAttrs = null;\n for (const [ns, attrs] of Object.entries(nsAttrs)) {\n const nsToUse = this._getNamespaceToUse(ns);\n if (nsToUse === dataTemplate) {\n xfaAttrs = { xfa: attrs };\n break;\n }\n }\n if (xfaAttrs) {\n attributes[$nsAttributes] = xfaAttrs;\n } else {\n delete attributes[$nsAttributes];\n }\n }\n\n const namespaceToUse = this._getNamespaceToUse(nsPrefix);\n const node =\n (namespaceToUse && namespaceToUse[$buildXFAObject](name, attributes)) ||\n new Empty();\n\n if (node[$isNsAgnostic]()) {\n this._nsAgnosticLevel++;\n }\n\n // In case the node has some namespace things,\n // we must pop the different stacks.\n if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\n node[$cleanup] = {\n hasNamespace: hasNamespaceDef,\n prefixes,\n nsAgnostic: node[$isNsAgnostic](),\n };\n }\n\n return node;\n }\n\n isNsAgnostic() {\n return this._nsAgnosticLevel > 0;\n }\n\n _searchNamespace(nsName) {\n let ns = this._namespaces.get(nsName);\n if (ns) {\n return ns;\n }\n for (const [name, { check }] of Object.entries(NamespaceIds)) {\n if (check(nsName)) {\n ns = NamespaceSetUp[name];\n if (ns) {\n this._namespaces.set(nsName, ns);\n return ns;\n }\n // The namespace is known but not handled.\n break;\n }\n }\n\n ns = new UnknownNamespace(++this._nextNsId);\n this._namespaces.set(nsName, ns);\n return ns;\n }\n\n _addNamespacePrefix(prefixes) {\n for (const { prefix, value } of prefixes) {\n const namespace = this._searchNamespace(value);\n let prefixStack = this._namespacePrefixes.get(prefix);\n if (!prefixStack) {\n prefixStack = [];\n this._namespacePrefixes.set(prefix, prefixStack);\n }\n prefixStack.push(namespace);\n }\n }\n\n _getNamespaceToUse(prefix) {\n if (!prefix) {\n return this._currentNamespace;\n }\n const prefixStack = this._namespacePrefixes.get(prefix);\n if (prefixStack && prefixStack.length > 0) {\n return prefixStack[prefixStack.length - 1];\n }\n\n warn(`Unknown namespace prefix: ${prefix}.`);\n return null;\n }\n\n clean(data) {\n const { hasNamespace, prefixes, nsAgnostic } = data;\n if (hasNamespace) {\n this._currentNamespace = this._namespaceStack.pop();\n }\n if (prefixes) {\n prefixes.forEach(({ prefix }) => {\n this._namespacePrefixes.get(prefix).pop();\n });\n }\n if (nsAgnostic) {\n this._nsAgnosticLevel--;\n }\n }\n}\n\nexport { Builder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ConfigNamespace } from \"./config.js\";\nimport { ConnectionSetNamespace } from \"./connection_set.js\";\nimport { DatasetsNamespace } from \"./datasets.js\";\nimport { LocaleSetNamespace } from \"./locale_set.js\";\nimport { SignatureNamespace } from \"./signature.js\";\nimport { StylesheetNamespace } from \"./stylesheet.js\";\nimport { TemplateNamespace } from \"./template.js\";\nimport { XdpNamespace } from \"./xdp.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nconst NamespaceSetUp = {\n config: ConfigNamespace,\n connection: ConnectionSetNamespace,\n datasets: DatasetsNamespace,\n localeSet: LocaleSetNamespace,\n signature: SignatureNamespace,\n stylesheet: StylesheetNamespace,\n template: TemplateNamespace,\n xdp: XdpNamespace,\n xhtml: XhtmlNamespace,\n};\n\nexport { NamespaceSetUp };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $content,\n $finalize,\n ContentObject,\n IntegerObject,\n Option01,\n Option10,\n OptionObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\nimport { shadow, warn } from \"../../shared/util.js\";\n\nconst CONFIG_NS_ID = NamespaceIds.config.id;\n\nclass Acrobat extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat\", /* hasChildren = */ true);\n this.acrobat7 = null;\n this.autoSave = null;\n this.common = null;\n this.validate = null;\n this.validateApprovalSignatures = null;\n this.submitUrl = new XFAObjectArray();\n }\n}\n\nclass Acrobat7 extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat7\", /* hasChildren = */ true);\n this.dynamicRender = null;\n }\n}\n\nclass ADBE_JSConsole extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSConsole\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\n\nclass ADBE_JSDebugger extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSDebugger\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\n\nclass AddSilentPrint extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addSilentPrint\");\n }\n}\n\nclass AddViewerPreferences extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addViewerPreferences\");\n }\n}\n\nclass AdjustData extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adjustData\");\n }\n}\n\nclass AdobeExtensionLevel extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adobeExtensionLevel\", 0, n => n >= 1 && n <= 8);\n }\n}\n\nclass Agent extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"agent\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.common = new XFAObjectArray();\n }\n}\n\nclass AlwaysEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"alwaysEmbed\");\n }\n}\n\nclass Amd extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"amd\");\n }\n}\n\nclass Area extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"area\");\n this.level = getInteger({\n data: attributes.level,\n defaultValue: 0,\n validate: n => n >= 1 && n <= 3,\n });\n this.name = getStringOption(attributes.name, [\n \"\",\n \"barcode\",\n \"coreinit\",\n \"deviceDriver\",\n \"font\",\n \"general\",\n \"layout\",\n \"merge\",\n \"script\",\n \"signature\",\n \"sourceSet\",\n \"templateCache\",\n ]);\n }\n}\n\nclass Attributes extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"attributes\", [\"preserve\", \"delegate\", \"ignore\"]);\n }\n}\n\nclass AutoSave extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"autoSave\", [\"disabled\", \"enabled\"]);\n }\n}\n\nclass Base extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"base\");\n }\n}\n\nclass BatchOutput extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"batchOutput\");\n this.format = getStringOption(attributes.format, [\n \"none\",\n \"concat\",\n \"zip\",\n \"zipCompress\",\n ]);\n }\n}\n\nclass BehaviorOverride extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"behaviorOverride\");\n }\n\n [$finalize]() {\n this[$content] = new Map(\n this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x => x.includes(\":\"))\n .map(x => x.split(\":\", 2))\n );\n }\n}\n\nclass Cache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"cache\", /* hasChildren = */ true);\n this.templateCache = null;\n }\n}\n\nclass Change extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"change\");\n }\n}\n\nclass Common extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"common\", /* hasChildren = */ true);\n this.data = null;\n this.locale = null;\n this.localeSet = null;\n this.messaging = null;\n this.suppressBanner = null;\n this.template = null;\n this.validationMessaging = null;\n this.versionControl = null;\n this.log = new XFAObjectArray();\n }\n}\n\nclass Compress extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compress\");\n this.scope = getStringOption(attributes.scope, [\"imageOnly\", \"document\"]);\n }\n}\n\nclass CompressLogicalStructure extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressLogicalStructure\");\n }\n}\n\nclass CompressObjectStream extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressObjectStream\");\n }\n}\n\nclass Compression extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compression\", /* hasChildren = */ true);\n this.compressLogicalStructure = null;\n this.compressObjectStream = null;\n this.level = null;\n this.type = null;\n }\n}\n\nclass Config extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"config\", /* hasChildren = */ true);\n this.acrobat = null;\n this.present = null;\n this.trace = null;\n this.agent = new XFAObjectArray();\n }\n}\n\nclass Conformance extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"conformance\", [\"A\", \"B\"]);\n }\n}\n\nclass ContentCopy extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"contentCopy\");\n }\n}\n\nclass Copies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"copies\", 1, n => n >= 1);\n }\n}\n\nclass Creator extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"creator\");\n }\n}\n\nclass CurrentPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"currentPage\", 0, n => n >= 0);\n }\n}\n\nclass Data extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"data\", /* hasChildren = */ true);\n this.adjustData = null;\n this.attributes = null;\n this.incrementalLoad = null;\n this.outputXSL = null;\n this.range = null;\n this.record = null;\n this.startNode = null;\n this.uri = null;\n this.window = null;\n this.xsl = null;\n this.excludeNS = new XFAObjectArray();\n this.transform = new XFAObjectArray();\n }\n}\n\nclass Debug extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"debug\", /* hasChildren = */ true);\n this.uri = null;\n }\n}\n\nclass DefaultTypeface extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"defaultTypeface\");\n this.writingScript = getStringOption(attributes.writingScript, [\n \"*\",\n \"Arabic\",\n \"Cyrillic\",\n \"EastEuropeanRoman\",\n \"Greek\",\n \"Hebrew\",\n \"Japanese\",\n \"Korean\",\n \"Roman\",\n \"SimplifiedChinese\",\n \"Thai\",\n \"TraditionalChinese\",\n \"Vietnamese\",\n ]);\n }\n}\n\nclass Destination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"destination\", [\n \"pdf\",\n \"pcl\",\n \"ps\",\n \"webClient\",\n \"zpl\",\n ]);\n }\n}\n\nclass DocumentAssembly extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"documentAssembly\");\n }\n}\n\nclass Driver extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"driver\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass DuplexOption extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"duplexOption\", [\n \"simplex\",\n \"duplexFlipLongEdge\",\n \"duplexFlipShortEdge\",\n ]);\n }\n}\n\nclass DynamicRender extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"dynamicRender\", [\"forbidden\", \"required\"]);\n }\n}\n\nclass Embed extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"embed\");\n }\n}\n\nclass Encrypt extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encrypt\");\n }\n}\n\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryption\", /* hasChildren = */ true);\n this.encrypt = null;\n this.encryptionLevel = null;\n this.permissions = null;\n }\n}\n\nclass EncryptionLevel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryptionLevel\", [\"40bit\", \"128bit\"]);\n }\n}\n\nclass Enforce extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"enforce\");\n }\n}\n\nclass Equate extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equate\");\n\n this.force = getInteger({\n data: attributes.force,\n defaultValue: 1,\n validate: n => n === 0,\n });\n\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n }\n}\n\nclass EquateRange extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equateRange\");\n\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n this._unicodeRange = attributes.unicodeRange || \"\";\n }\n\n get unicodeRange() {\n const ranges = [];\n const unicodeRegex = /U\\+([0-9a-fA-F]+)/;\n const unicodeRange = this._unicodeRange;\n for (let range of unicodeRange\n .split(\",\")\n .map(x => x.trim())\n .filter(x => !!x)) {\n range = range.split(\"-\", 2).map(x => {\n const found = x.match(unicodeRegex);\n if (!found) {\n return 0;\n }\n return parseInt(found[1], 16);\n });\n if (range.length === 1) {\n range.push(range[0]);\n }\n ranges.push(range);\n }\n return shadow(this, \"unicodeRange\", ranges);\n }\n}\n\nclass Exclude extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"exclude\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(\n x =>\n x &&\n [\n \"calculate\",\n \"close\",\n \"enter\",\n \"exit\",\n \"initialize\",\n \"ready\",\n \"validate\",\n ].includes(x)\n );\n }\n}\n\nclass ExcludeNS extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"excludeNS\");\n }\n}\n\nclass FlipLabel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"flipLabel\", [\"usePrinterSetting\", \"on\", \"off\"]);\n }\n}\n\nclass FontInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"fontInfo\", /* hasChildren = */ true);\n this.embed = null;\n this.map = null;\n this.subsetBelow = null;\n this.alwaysEmbed = new XFAObjectArray();\n this.defaultTypeface = new XFAObjectArray();\n this.neverEmbed = new XFAObjectArray();\n }\n}\n\nclass FormFieldFilling extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"formFieldFilling\");\n }\n}\n\nclass GroupParent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"groupParent\");\n }\n}\n\nclass IfEmpty extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ifEmpty\", [\n \"dataValue\",\n \"dataGroup\",\n \"ignore\",\n \"remove\",\n ]);\n }\n}\n\nclass IncludeXDPContent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"includeXDPContent\");\n }\n}\n\nclass IncrementalLoad extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalLoad\", [\"none\", \"forwardOnly\"]);\n }\n}\n\nclass IncrementalMerge extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalMerge\");\n }\n}\n\nclass Interactive extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"interactive\");\n }\n}\n\nclass Jog extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"jog\", [\"usePrinterSetting\", \"none\", \"pageSet\"]);\n }\n}\n\nclass LabelPrinter extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"labelPrinter\", /* hasChildren = */ true);\n this.name = getStringOption(attributes.name, [\"zpl\", \"dpl\", \"ipl\", \"tcpl\"]);\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass Layout extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"layout\", [\"paginate\", \"panel\"]);\n }\n}\n\nclass Level extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"level\", 0, n => n > 0);\n }\n}\n\nclass Linearized extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"linearized\");\n }\n}\n\nclass Locale extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"locale\");\n }\n}\n\nclass LocaleSet extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"localeSet\");\n }\n}\n\nclass Log extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"log\", /* hasChildren = */ true);\n this.mode = null;\n this.threshold = null;\n this.to = null;\n this.uri = null;\n }\n}\n\n// Renamed in MapElement to avoid confusion with usual js Map.\nclass MapElement extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"map\", /* hasChildren = */ true);\n this.equate = new XFAObjectArray();\n this.equateRange = new XFAObjectArray();\n }\n}\n\nclass MediumInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mediumInfo\", /* hasChildren = */ true);\n this.map = null;\n }\n}\n\nclass Message extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"message\", /* hasChildren = */ true);\n this.msgId = null;\n this.severity = null;\n }\n}\n\nclass Messaging extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"messaging\", /* hasChildren = */ true);\n this.message = new XFAObjectArray();\n }\n}\n\nclass Mode extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mode\", [\"append\", \"overwrite\"]);\n }\n}\n\nclass ModifyAnnots extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"modifyAnnots\");\n }\n}\n\nclass MsgId extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"msgId\", 1, n => n >= 1);\n }\n}\n\nclass NameAttr extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"nameAttr\");\n }\n}\n\nclass NeverEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"neverEmbed\");\n }\n}\n\nclass NumberOfCopies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"numberOfCopies\", null, n => n >= 2 && n <= 5);\n }\n}\n\nclass OpenAction extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"openAction\", /* hasChildren = */ true);\n this.destination = null;\n }\n}\n\nclass Output extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"output\", /* hasChildren = */ true);\n this.to = null;\n this.type = null;\n this.uri = null;\n }\n}\n\nclass OutputBin extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputBin\");\n }\n}\n\nclass OutputXSL extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputXSL\", /* hasChildren = */ true);\n this.uri = null;\n }\n}\n\nclass Overprint extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"overprint\", [\"none\", \"both\", \"draw\", \"field\"]);\n }\n}\n\nclass Packets extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"packets\");\n }\n\n [$finalize]() {\n if (this[$content] === \"*\") {\n return;\n }\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x =>\n [\"config\", \"datasets\", \"template\", \"xfdf\", \"xslt\"].includes(x)\n );\n }\n}\n\nclass PageOffset extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageOffset\");\n this.x = getInteger({\n data: attributes.x,\n defaultValue: \"useXDCSetting\",\n validate: n => true,\n });\n this.y = getInteger({\n data: attributes.y,\n defaultValue: \"useXDCSetting\",\n validate: n => true,\n });\n }\n}\n\nclass PageRange extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageRange\");\n }\n\n [$finalize]() {\n const numbers = this[$content]\n .trim()\n .split(/\\s+/)\n .map(x => parseInt(x, 10));\n const ranges = [];\n for (let i = 0, ii = numbers.length; i < ii; i += 2) {\n ranges.push(numbers.slice(i, i + 2));\n }\n this[$content] = ranges;\n }\n}\n\nclass Pagination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pagination\", [\n \"simplex\",\n \"duplexShortEdge\",\n \"duplexLongEdge\",\n ]);\n }\n}\n\nclass PaginationOverride extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"paginationOverride\", [\n \"none\",\n \"forceDuplex\",\n \"forceDuplexLongEdge\",\n \"forceDuplexShortEdge\",\n \"forceSimplex\",\n ]);\n }\n}\n\nclass Part extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"part\", 1, n => false);\n }\n}\n\nclass Pcl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pcl\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.pageOffset = null;\n this.staple = null;\n this.xdc = null;\n }\n}\n\nclass Pdf extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdf\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.adobeExtensionLevel = null;\n this.batchOutput = null;\n this.compression = null;\n this.creator = null;\n this.encryption = null;\n this.fontInfo = null;\n this.interactive = null;\n this.linearized = null;\n this.openAction = null;\n this.pdfa = null;\n this.producer = null;\n this.renderPolicy = null;\n this.scriptModel = null;\n this.silentPrint = null;\n this.submitFormat = null;\n this.tagged = null;\n this.version = null;\n this.viewerPreferences = null;\n this.xdc = null;\n }\n}\n\nclass Pdfa extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdfa\", /* hasChildren = */ true);\n this.amd = null;\n this.conformance = null;\n this.includeXDPContent = null;\n this.part = null;\n }\n}\n\nclass Permissions extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"permissions\", /* hasChildren = */ true);\n this.accessibleContent = null;\n this.change = null;\n this.contentCopy = null;\n this.documentAssembly = null;\n this.formFieldFilling = null;\n this.modifyAnnots = null;\n this.plaintextMetadata = null;\n this.print = null;\n this.printHighQuality = null;\n }\n}\n\nclass PickTrayByPDFSize extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pickTrayByPDFSize\");\n }\n}\n\nclass Picture extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"picture\");\n }\n\n // TODO: check the validity of the picture clause.\n // See page 1150 in the spec.\n}\n\nclass PlaintextMetadata extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"plaintextMetadata\");\n }\n}\n\nclass Presence extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"presence\", [\n \"preserve\",\n \"dissolve\",\n \"dissolveStructure\",\n \"ignore\",\n \"remove\",\n ]);\n }\n}\n\nclass Present extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"present\", /* hasChildren = */ true);\n this.behaviorOverride = null;\n this.cache = null;\n this.common = null;\n this.copies = null;\n this.destination = null;\n this.incrementalMerge = null;\n this.layout = null;\n this.output = null;\n this.overprint = null;\n this.pagination = null;\n this.paginationOverride = null;\n this.script = null;\n this.validate = null;\n this.xdp = null;\n this.driver = new XFAObjectArray();\n this.labelPrinter = new XFAObjectArray();\n this.pcl = new XFAObjectArray();\n this.pdf = new XFAObjectArray();\n this.ps = new XFAObjectArray();\n this.submitUrl = new XFAObjectArray();\n this.webClient = new XFAObjectArray();\n this.zpl = new XFAObjectArray();\n }\n}\n\nclass Print extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"print\");\n }\n}\n\nclass PrintHighQuality extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printHighQuality\");\n }\n}\n\nclass PrintScaling extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printScaling\", [\"appdefault\", \"noScaling\"]);\n }\n}\n\nclass PrinterName extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printerName\");\n }\n}\n\nclass Producer extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"producer\");\n }\n}\n\nclass Ps extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ps\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.staple = null;\n this.xdc = null;\n }\n}\n\nclass Range extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"range\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s*,\\s*/, 2)\n .map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10)))\n .filter(range => range.every(x => !isNaN(x)))\n .map(range => {\n if (range.length === 1) {\n range.push(range[0]);\n }\n return range;\n });\n }\n}\n\nclass Record extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"record\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim();\n const n = parseInt(this[$content], 10);\n if (!isNaN(n) && n >= 0) {\n this[$content] = n;\n }\n }\n}\n\nclass Relevant extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"relevant\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/);\n }\n}\n\nclass Rename extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"rename\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim();\n // String must be a XFA name: same as XML one except that there\n // is no colon.\n if (\n this[$content].toLowerCase().startsWith(\"xml\") ||\n this[$content].match(new RegExp(\"[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*\", \"u\"))\n ) {\n warn(\"XFA - Rename: invalid XFA name\");\n }\n }\n}\n\nclass RenderPolicy extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"renderPolicy\", [\"server\", \"client\"]);\n }\n}\n\nclass RunScripts extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"runScripts\", [\"both\", \"client\", \"none\", \"server\"]);\n }\n}\n\nclass Script extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"script\", /* hasChildren = */ true);\n this.currentPage = null;\n this.exclude = null;\n this.runScripts = null;\n }\n}\n\nclass ScriptModel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"scriptModel\", [\"XFA\", \"none\"]);\n }\n}\n\nclass Severity extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"severity\", [\n \"ignore\",\n \"error\",\n \"information\",\n \"trace\",\n \"warning\",\n ]);\n }\n}\n\nclass SilentPrint extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"silentPrint\", /* hasChildren = */ true);\n this.addSilentPrint = null;\n this.printerName = null;\n }\n}\n\nclass Staple extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"staple\");\n this.mode = getStringOption(attributes.mode, [\n \"usePrinterSetting\",\n \"on\",\n \"off\",\n ]);\n }\n}\n\nclass StartNode extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startNode\");\n }\n}\n\nclass StartPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startPage\", 0, n => true);\n }\n}\n\nclass SubmitFormat extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitFormat\", [\n \"html\",\n \"delegate\",\n \"fdf\",\n \"xml\",\n \"pdf\",\n ]);\n }\n}\n\nclass SubmitUrl extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitUrl\");\n }\n}\n\nclass SubsetBelow extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"subsetBelow\", 100, n => n >= 0 && n <= 100);\n }\n}\n\nclass SuppressBanner extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"suppressBanner\");\n }\n}\n\nclass Tagged extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"tagged\");\n }\n}\n\nclass Template extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"template\", /* hasChildren = */ true);\n this.base = null;\n this.relevant = null;\n this.startPage = null;\n this.uri = null;\n this.xsl = null;\n }\n}\n\nclass Threshold extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"threshold\", [\n \"trace\",\n \"error\",\n \"information\",\n \"warning\",\n ]);\n }\n}\n\nclass To extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"to\", [\n \"null\",\n \"memory\",\n \"stderr\",\n \"stdout\",\n \"system\",\n \"uri\",\n ]);\n }\n}\n\nclass TemplateCache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"templateCache\");\n this.maxEntries = getInteger({\n data: attributes.maxEntries,\n defaultValue: 5,\n validate: n => n >= 0,\n });\n }\n}\n\nclass Trace extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"trace\", /* hasChildren = */ true);\n this.area = new XFAObjectArray();\n }\n}\n\nclass Transform extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"transform\", /* hasChildren = */ true);\n this.groupParent = null;\n this.ifEmpty = null;\n this.nameAttr = null;\n this.picture = null;\n this.presence = null;\n this.rename = null;\n this.whitespace = null;\n }\n}\n\nclass Type extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"type\", [\n \"none\",\n \"ascii85\",\n \"asciiHex\",\n \"ccittfax\",\n \"flate\",\n \"lzw\",\n \"runLength\",\n \"native\",\n \"xdp\",\n \"mergedXDP\",\n ]);\n }\n}\n\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"uri\");\n }\n}\n\nclass Validate extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validate\", [\n \"preSubmit\",\n \"prePrint\",\n \"preExecute\",\n \"preSave\",\n ]);\n }\n}\n\nclass ValidateApprovalSignatures extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validateApprovalSignatures\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x => [\"docReady\", \"postSign\"].includes(x));\n }\n}\n\nclass ValidationMessaging extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validationMessaging\", [\n \"allMessagesIndividually\",\n \"allMessagesTogether\",\n \"firstMessageOnly\",\n \"noMessages\",\n ]);\n }\n}\n\nclass Version extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"version\", [\"1.7\", \"1.6\", \"1.5\", \"1.4\", \"1.3\", \"1.2\"]);\n }\n}\n\nclass VersionControl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"VersionControl\");\n this.outputBelow = getStringOption(attributes.outputBelow, [\n \"warn\",\n \"error\",\n \"update\",\n ]);\n this.sourceAbove = getStringOption(attributes.sourceAbove, [\n \"warn\",\n \"error\",\n ]);\n this.sourceBelow = getStringOption(attributes.sourceBelow, [\n \"update\",\n \"maintain\",\n ]);\n }\n}\n\nclass ViewerPreferences extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"viewerPreferences\", /* hasChildren = */ true);\n this.ADBE_JSConsole = null;\n this.ADBE_JSDebugger = null;\n this.addViewerPreferences = null;\n this.duplexOption = null;\n this.enforce = null;\n this.numberOfCopies = null;\n this.pageRange = null;\n this.pickTrayByPDFSize = null;\n this.printScaling = null;\n }\n}\n\nclass WebClient extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"webClient\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass Whitespace extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"whitespace\", [\n \"preserve\",\n \"ltrim\",\n \"normalize\",\n \"rtrim\",\n \"trim\",\n ]);\n }\n}\n\nclass Window extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"window\");\n }\n\n [$finalize]() {\n const pair = this[$content]\n .trim()\n .split(/\\s*,\\s*/, 2)\n .map(x => parseInt(x, 10));\n if (pair.some(x => isNaN(x))) {\n this[$content] = [0, 0];\n return;\n }\n if (pair.length === 1) {\n pair.push(pair[0]);\n }\n this[$content] = pair;\n }\n}\n\nclass Xdc extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdc\", /* hasChildren = */ true);\n this.uri = new XFAObjectArray();\n this.xsl = new XFAObjectArray();\n }\n}\n\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdp\", /* hasChildren = */ true);\n this.packets = null;\n }\n}\n\nclass Xsl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xsl\", /* hasChildren = */ true);\n this.debug = null;\n this.uri = null;\n }\n}\n\nclass Zpl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"zpl\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass ConfigNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConfigNamespace.hasOwnProperty(name)) {\n return ConfigNamespace[name](attributes);\n }\n return undefined;\n }\n\n static acrobat(attrs) {\n return new Acrobat(attrs);\n }\n\n static acrobat7(attrs) {\n return new Acrobat7(attrs);\n }\n\n static ADBE_JSConsole(attrs) {\n return new ADBE_JSConsole(attrs);\n }\n\n static ADBE_JSDebugger(attrs) {\n return new ADBE_JSDebugger(attrs);\n }\n\n static addSilentPrint(attrs) {\n return new AddSilentPrint(attrs);\n }\n\n static addViewerPreferences(attrs) {\n return new AddViewerPreferences(attrs);\n }\n\n static adjustData(attrs) {\n return new AdjustData(attrs);\n }\n\n static adobeExtensionLevel(attrs) {\n return new AdobeExtensionLevel(attrs);\n }\n\n static agent(attrs) {\n return new Agent(attrs);\n }\n\n static alwaysEmbed(attrs) {\n return new AlwaysEmbed(attrs);\n }\n\n static amd(attrs) {\n return new Amd(attrs);\n }\n\n static area(attrs) {\n return new Area(attrs);\n }\n\n static attributes(attrs) {\n return new Attributes(attrs);\n }\n\n static autoSave(attrs) {\n return new AutoSave(attrs);\n }\n\n static base(attrs) {\n return new Base(attrs);\n }\n\n static batchOutput(attrs) {\n return new BatchOutput(attrs);\n }\n\n static behaviorOverride(attrs) {\n return new BehaviorOverride(attrs);\n }\n\n static cache(attrs) {\n return new Cache(attrs);\n }\n\n static change(attrs) {\n return new Change(attrs);\n }\n\n static common(attrs) {\n return new Common(attrs);\n }\n\n static compress(attrs) {\n return new Compress(attrs);\n }\n\n static compressLogicalStructure(attrs) {\n return new CompressLogicalStructure(attrs);\n }\n\n static compressObjectStream(attrs) {\n return new CompressObjectStream(attrs);\n }\n\n static compression(attrs) {\n return new Compression(attrs);\n }\n\n static config(attrs) {\n return new Config(attrs);\n }\n\n static conformance(attrs) {\n return new Conformance(attrs);\n }\n\n static contentCopy(attrs) {\n return new ContentCopy(attrs);\n }\n\n static copies(attrs) {\n return new Copies(attrs);\n }\n\n static creator(attrs) {\n return new Creator(attrs);\n }\n\n static currentPage(attrs) {\n return new CurrentPage(attrs);\n }\n\n static data(attrs) {\n return new Data(attrs);\n }\n\n static debug(attrs) {\n return new Debug(attrs);\n }\n\n static defaultTypeface(attrs) {\n return new DefaultTypeface(attrs);\n }\n\n static destination(attrs) {\n return new Destination(attrs);\n }\n\n static documentAssembly(attrs) {\n return new DocumentAssembly(attrs);\n }\n\n static driver(attrs) {\n return new Driver(attrs);\n }\n\n static duplexOption(attrs) {\n return new DuplexOption(attrs);\n }\n\n static dynamicRender(attrs) {\n return new DynamicRender(attrs);\n }\n\n static embed(attrs) {\n return new Embed(attrs);\n }\n\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n\n static encryptionLevel(attrs) {\n return new EncryptionLevel(attrs);\n }\n\n static enforce(attrs) {\n return new Enforce(attrs);\n }\n\n static equate(attrs) {\n return new Equate(attrs);\n }\n\n static equateRange(attrs) {\n return new EquateRange(attrs);\n }\n\n static exclude(attrs) {\n return new Exclude(attrs);\n }\n\n static excludeNS(attrs) {\n return new ExcludeNS(attrs);\n }\n\n static flipLabel(attrs) {\n return new FlipLabel(attrs);\n }\n\n static fontInfo(attrs) {\n return new FontInfo(attrs);\n }\n\n static formFieldFilling(attrs) {\n return new FormFieldFilling(attrs);\n }\n\n static groupParent(attrs) {\n return new GroupParent(attrs);\n }\n\n static ifEmpty(attrs) {\n return new IfEmpty(attrs);\n }\n\n static includeXDPContent(attrs) {\n return new IncludeXDPContent(attrs);\n }\n\n static incrementalLoad(attrs) {\n return new IncrementalLoad(attrs);\n }\n\n static incrementalMerge(attrs) {\n return new IncrementalMerge(attrs);\n }\n\n static interactive(attrs) {\n return new Interactive(attrs);\n }\n\n static jog(attrs) {\n return new Jog(attrs);\n }\n\n static labelPrinter(attrs) {\n return new LabelPrinter(attrs);\n }\n\n static layout(attrs) {\n return new Layout(attrs);\n }\n\n static level(attrs) {\n return new Level(attrs);\n }\n\n static linearized(attrs) {\n return new Linearized(attrs);\n }\n\n static locale(attrs) {\n return new Locale(attrs);\n }\n\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n\n static log(attrs) {\n return new Log(attrs);\n }\n\n static map(attrs) {\n return new MapElement(attrs);\n }\n\n static mediumInfo(attrs) {\n return new MediumInfo(attrs);\n }\n\n static message(attrs) {\n return new Message(attrs);\n }\n\n static messaging(attrs) {\n return new Messaging(attrs);\n }\n\n static mode(attrs) {\n return new Mode(attrs);\n }\n\n static modifyAnnots(attrs) {\n return new ModifyAnnots(attrs);\n }\n\n static msgId(attrs) {\n return new MsgId(attrs);\n }\n\n static nameAttr(attrs) {\n return new NameAttr(attrs);\n }\n\n static neverEmbed(attrs) {\n return new NeverEmbed(attrs);\n }\n\n static numberOfCopies(attrs) {\n return new NumberOfCopies(attrs);\n }\n\n static openAction(attrs) {\n return new OpenAction(attrs);\n }\n\n static output(attrs) {\n return new Output(attrs);\n }\n\n static outputBin(attrs) {\n return new OutputBin(attrs);\n }\n\n static outputXSL(attrs) {\n return new OutputXSL(attrs);\n }\n\n static overprint(attrs) {\n return new Overprint(attrs);\n }\n\n static packets(attrs) {\n return new Packets(attrs);\n }\n\n static pageOffset(attrs) {\n return new PageOffset(attrs);\n }\n\n static pageRange(attrs) {\n return new PageRange(attrs);\n }\n\n static pagination(attrs) {\n return new Pagination(attrs);\n }\n\n static paginationOverride(attrs) {\n return new PaginationOverride(attrs);\n }\n\n static part(attrs) {\n return new Part(attrs);\n }\n\n static pcl(attrs) {\n return new Pcl(attrs);\n }\n\n static pdf(attrs) {\n return new Pdf(attrs);\n }\n\n static pdfa(attrs) {\n return new Pdfa(attrs);\n }\n\n static permissions(attrs) {\n return new Permissions(attrs);\n }\n\n static pickTrayByPDFSize(attrs) {\n return new PickTrayByPDFSize(attrs);\n }\n\n static picture(attrs) {\n return new Picture(attrs);\n }\n\n static plaintextMetadata(attrs) {\n return new PlaintextMetadata(attrs);\n }\n\n static presence(attrs) {\n return new Presence(attrs);\n }\n\n static present(attrs) {\n return new Present(attrs);\n }\n\n static print(attrs) {\n return new Print(attrs);\n }\n\n static printHighQuality(attrs) {\n return new PrintHighQuality(attrs);\n }\n\n static printScaling(attrs) {\n return new PrintScaling(attrs);\n }\n\n static printerName(attrs) {\n return new PrinterName(attrs);\n }\n\n static producer(attrs) {\n return new Producer(attrs);\n }\n\n static ps(attrs) {\n return new Ps(attrs);\n }\n\n static range(attrs) {\n return new Range(attrs);\n }\n\n static record(attrs) {\n return new Record(attrs);\n }\n\n static relevant(attrs) {\n return new Relevant(attrs);\n }\n\n static rename(attrs) {\n return new Rename(attrs);\n }\n\n static renderPolicy(attrs) {\n return new RenderPolicy(attrs);\n }\n\n static runScripts(attrs) {\n return new RunScripts(attrs);\n }\n\n static script(attrs) {\n return new Script(attrs);\n }\n\n static scriptModel(attrs) {\n return new ScriptModel(attrs);\n }\n\n static severity(attrs) {\n return new Severity(attrs);\n }\n\n static silentPrint(attrs) {\n return new SilentPrint(attrs);\n }\n\n static staple(attrs) {\n return new Staple(attrs);\n }\n\n static startNode(attrs) {\n return new StartNode(attrs);\n }\n\n static startPage(attrs) {\n return new StartPage(attrs);\n }\n\n static submitFormat(attrs) {\n return new SubmitFormat(attrs);\n }\n\n static submitUrl(attrs) {\n return new SubmitUrl(attrs);\n }\n\n static subsetBelow(attrs) {\n return new SubsetBelow(attrs);\n }\n\n static suppressBanner(attrs) {\n return new SuppressBanner(attrs);\n }\n\n static tagged(attrs) {\n return new Tagged(attrs);\n }\n\n static template(attrs) {\n return new Template(attrs);\n }\n\n static templateCache(attrs) {\n return new TemplateCache(attrs);\n }\n\n static threshold(attrs) {\n return new Threshold(attrs);\n }\n\n static to(attrs) {\n return new To(attrs);\n }\n\n static trace(attrs) {\n return new Trace(attrs);\n }\n\n static transform(attrs) {\n return new Transform(attrs);\n }\n\n static type(attrs) {\n return new Type(attrs);\n }\n\n static uri(attrs) {\n return new Uri(attrs);\n }\n\n static validate(attrs) {\n return new Validate(attrs);\n }\n\n static validateApprovalSignatures(attrs) {\n return new ValidateApprovalSignatures(attrs);\n }\n\n static validationMessaging(attrs) {\n return new ValidationMessaging(attrs);\n }\n\n static version(attrs) {\n return new Version(attrs);\n }\n\n static versionControl(attrs) {\n return new VersionControl(attrs);\n }\n\n static viewerPreferences(attrs) {\n return new ViewerPreferences(attrs);\n }\n\n static webClient(attrs) {\n return new WebClient(attrs);\n }\n\n static whitespace(attrs) {\n return new Whitespace(attrs);\n }\n\n static window(attrs) {\n return new Window(attrs);\n }\n\n static xdc(attrs) {\n return new Xdc(attrs);\n }\n\n static xdp(attrs) {\n return new Xdp(attrs);\n }\n\n static xsl(attrs) {\n return new Xsl(attrs);\n }\n\n static zpl(attrs) {\n return new Zpl(attrs);\n }\n}\n\nexport { ConfigNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { StringObject, XFAObject, XFAObjectArray } from \"./xfa_object.js\";\n\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\n\nclass ConnectionSet extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"connectionSet\", /* hasChildren = */ true);\n this.wsdlConnection = new XFAObjectArray();\n this.xmlConnection = new XFAObjectArray();\n this.xsdConnection = new XFAObjectArray();\n }\n}\n\nclass EffectiveInputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveInputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass EffectiveOutputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveOutputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Operation extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"operation\");\n this.id = attributes.id || \"\";\n this.input = attributes.input || \"\";\n this.name = attributes.name || \"\";\n this.output = attributes.output || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass RootElement extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"rootElement\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SoapAction extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAction\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SoapAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"uri\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass WsdlAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass WsdlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.effectiveInputPolicy = null;\n this.effectiveOutputPolicy = null;\n this.operation = null;\n this.soapAction = null;\n this.soapAddress = null;\n this.wsdlAddress = null;\n }\n}\n\nclass XmlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xmlConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.uri = null;\n }\n}\n\nclass XsdConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xsdConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.rootElement = null;\n this.uri = null;\n }\n}\n\nclass ConnectionSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConnectionSetNamespace.hasOwnProperty(name)) {\n return ConnectionSetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static connectionSet(attrs) {\n return new ConnectionSet(attrs);\n }\n\n static effectiveInputPolicy(attrs) {\n return new EffectiveInputPolicy(attrs);\n }\n\n static effectiveOutputPolicy(attrs) {\n return new EffectiveOutputPolicy(attrs);\n }\n\n static operation(attrs) {\n return new Operation(attrs);\n }\n\n static rootElement(attrs) {\n return new RootElement(attrs);\n }\n\n static soapAction(attrs) {\n return new SoapAction(attrs);\n }\n\n static soapAddress(attrs) {\n return new SoapAddress(attrs);\n }\n\n static uri(attrs) {\n return new Uri(attrs);\n }\n\n static wsdlAddress(attrs) {\n return new WsdlAddress(attrs);\n }\n\n static wsdlConnection(attrs) {\n return new WsdlConnection(attrs);\n }\n\n static xmlConnection(attrs) {\n return new XmlConnection(attrs);\n }\n\n static xsdConnection(attrs) {\n return new XsdConnection(attrs);\n }\n}\n\nexport { ConnectionSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $isNsAgnostic,\n $namespaceId,\n $nodeName,\n $onChild,\n XFAObject,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\n\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\n\nclass Data extends XmlObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"data\", attributes);\n }\n\n [$isNsAgnostic]() {\n return true;\n }\n}\n\nclass Datasets extends XFAObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"datasets\", /* hasChildren = */ true);\n this.data = null;\n this.Signature = null;\n }\n\n [$onChild](child) {\n const name = child[$nodeName];\n if (\n (name === \"data\" && child[$namespaceId] === DATASETS_NS_ID) ||\n (name === \"Signature\" &&\n child[$namespaceId] === NamespaceIds.signature.id)\n ) {\n this[name] = child;\n }\n this[$appendChild](child);\n }\n}\n\nclass DatasetsNamespace {\n static [$buildXFAObject](name, attributes) {\n if (DatasetsNamespace.hasOwnProperty(name)) {\n return DatasetsNamespace[name](attributes);\n }\n return undefined;\n }\n\n static datasets(attributes) {\n return new Datasets(attributes);\n }\n\n static data(attributes) {\n return new Data(attributes);\n }\n}\n\nexport { DatasetsNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n ContentObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\n\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\n\nclass CalendarSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"calendarSymbols\", /* hasChildren = */ true);\n this.name = \"gregorian\";\n this.dayNames = new XFAObjectArray(2);\n this.eraNames = null;\n this.meridiemNames = null;\n this.monthNames = new XFAObjectArray(2);\n }\n}\n\nclass CurrencySymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbol\");\n this.name = getStringOption(attributes.name, [\n \"symbol\",\n \"isoname\",\n \"decimal\",\n ]);\n }\n}\n\nclass CurrencySymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbols\", /* hasChildren = */ true);\n this.currencySymbol = new XFAObjectArray(3);\n }\n}\n\nclass DatePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass DatePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePatterns\", /* hasChildren = */ true);\n this.datePattern = new XFAObjectArray(4);\n }\n}\n\nclass DateTimeSymbols extends ContentObject {\n // TODO: spec unclear about the format of the array.\n\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dateTimeSymbols\");\n }\n}\n\nclass Day extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"day\");\n }\n}\n\nclass DayNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dayNames\", /* hasChildren = */ true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.day = new XFAObjectArray(7);\n }\n}\n\nclass Era extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"era\");\n }\n}\n\nclass EraNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"eraNames\", /* hasChildren = */ true);\n this.era = new XFAObjectArray(2);\n }\n}\n\nclass Locale extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"locale\", /* hasChildren = */ true);\n this.desc = attributes.desc || \"\";\n this.name = \"isoname\";\n this.calendarSymbols = null;\n this.currencySymbols = null;\n this.datePatterns = null;\n this.dateTimeSymbols = null;\n this.numberPatterns = null;\n this.numberSymbols = null;\n this.timePatterns = null;\n this.typeFaces = null;\n }\n}\n\nclass LocaleSet extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"localeSet\", /* hasChildren = */ true);\n this.locale = new XFAObjectArray();\n }\n}\n\nclass Meridiem extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiem\");\n }\n}\n\nclass MeridiemNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiemNames\", /* hasChildren = */ true);\n this.meridiem = new XFAObjectArray(2);\n }\n}\n\nclass Month extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"month\");\n }\n}\n\nclass MonthNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"monthNames\", /* hasChildren = */ true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.month = new XFAObjectArray(12);\n }\n}\n\nclass NumberPattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass NumberPatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPatterns\", /* hasChildren = */ true);\n this.numberPattern = new XFAObjectArray(4);\n }\n}\n\nclass NumberSymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbol\");\n this.name = getStringOption(attributes.name, [\n \"decimal\",\n \"grouping\",\n \"percent\",\n \"minus\",\n \"zero\",\n ]);\n }\n}\n\nclass NumberSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbols\", /* hasChildren = */ true);\n this.numberSymbol = new XFAObjectArray(5);\n }\n}\n\nclass TimePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass TimePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePatterns\", /* hasChildren = */ true);\n this.timePattern = new XFAObjectArray(4);\n }\n}\n\nclass TypeFace extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFace\", /* hasChildren = */ true);\n this.name = attributes.name | \"\";\n }\n}\n\nclass TypeFaces extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFaces\", /* hasChildren = */ true);\n this.typeFace = new XFAObjectArray();\n }\n}\n\nclass LocaleSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (LocaleSetNamespace.hasOwnProperty(name)) {\n return LocaleSetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static calendarSymbols(attrs) {\n return new CalendarSymbols(attrs);\n }\n\n static currencySymbol(attrs) {\n return new CurrencySymbol(attrs);\n }\n\n static currencySymbols(attrs) {\n return new CurrencySymbols(attrs);\n }\n\n static datePattern(attrs) {\n return new DatePattern(attrs);\n }\n\n static datePatterns(attrs) {\n return new DatePatterns(attrs);\n }\n\n static dateTimeSymbols(attrs) {\n return new DateTimeSymbols(attrs);\n }\n\n static day(attrs) {\n return new Day(attrs);\n }\n\n static dayNames(attrs) {\n return new DayNames(attrs);\n }\n\n static era(attrs) {\n return new Era(attrs);\n }\n\n static eraNames(attrs) {\n return new EraNames(attrs);\n }\n\n static locale(attrs) {\n return new Locale(attrs);\n }\n\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n\n static meridiem(attrs) {\n return new Meridiem(attrs);\n }\n\n static meridiemNames(attrs) {\n return new MeridiemNames(attrs);\n }\n\n static month(attrs) {\n return new Month(attrs);\n }\n\n static monthNames(attrs) {\n return new MonthNames(attrs);\n }\n\n static numberPattern(attrs) {\n return new NumberPattern(attrs);\n }\n\n static numberPatterns(attrs) {\n return new NumberPatterns(attrs);\n }\n\n static numberSymbol(attrs) {\n return new NumberSymbol(attrs);\n }\n\n static numberSymbols(attrs) {\n return new NumberSymbols(attrs);\n }\n\n static timePattern(attrs) {\n return new TimePattern(attrs);\n }\n\n static timePatterns(attrs) {\n return new TimePatterns(attrs);\n }\n\n static typeFace(attrs) {\n return new TypeFace(attrs);\n }\n\n static typeFaces(attrs) {\n return new TypeFaces(attrs);\n }\n}\n\nexport { LocaleSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\n\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(SIGNATURE_NS_ID, \"signature\", /* hasChildren = */ true);\n }\n}\n\nclass SignatureNamespace {\n static [$buildXFAObject](name, attributes) {\n if (SignatureNamespace.hasOwnProperty(name)) {\n return SignatureNamespace[name](attributes);\n }\n return undefined;\n }\n\n static signature(attributes) {\n return new Signature(attributes);\n }\n}\n\nexport { SignatureNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\n\nclass Stylesheet extends XFAObject {\n constructor(attributes) {\n super(STYLESHEET_NS_ID, \"stylesheet\", /* hasChildren = */ true);\n }\n}\n\nclass StylesheetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (StylesheetNamespace.hasOwnProperty(name)) {\n return StylesheetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static stylesheet(attributes) {\n return new Stylesheet(attributes);\n }\n}\n\nexport { StylesheetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $namespaceId,\n $nodeName,\n $onChildCheck,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\n\nconst XDP_NS_ID = NamespaceIds.xdp.id;\n\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(XDP_NS_ID, \"xdp\", /* hasChildren = */ true);\n this.uuid = attributes.uuid || \"\";\n this.timeStamp = attributes.timeStamp || \"\";\n this.config = null;\n this.connectionSet = null;\n this.datasets = null;\n this.localeSet = null;\n this.stylesheet = new XFAObjectArray();\n this.template = null;\n }\n\n [$onChildCheck](child) {\n const ns = NamespaceIds[child[$nodeName]];\n return ns && child[$namespaceId] === ns.id;\n }\n}\n\nclass XdpNamespace {\n static [$buildXFAObject](name, attributes) {\n if (XdpNamespace.hasOwnProperty(name)) {\n return XdpNamespace[name](attributes);\n }\n return undefined;\n }\n\n static xdp(attributes) {\n return new Xdp(attributes);\n }\n}\n\nexport { XdpNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $childrenToHTML,\n $clean,\n $content,\n $extra,\n $getChildren,\n $getParent,\n $globalData,\n $nodeName,\n $onText,\n $pushGlyphs,\n $text,\n $toHTML,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n fixTextIndent,\n fixURL,\n measureToString,\n setFontFamily,\n} from \"./html_utils.js\";\nimport { getMeasurement, HTMLResult, stripQuotes } from \"./utils.js\";\n\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\nconst $richText = Symbol();\n\nconst VALID_STYLES = new Set([\n \"color\",\n \"font\",\n \"font-family\",\n \"font-size\",\n \"font-stretch\",\n \"font-style\",\n \"font-weight\",\n \"margin\",\n \"margin-bottom\",\n \"margin-left\",\n \"margin-right\",\n \"margin-top\",\n \"letter-spacing\",\n \"line-height\",\n \"orphans\",\n \"page-break-after\",\n \"page-break-before\",\n \"page-break-inside\",\n \"tab-interval\",\n \"tab-stop\",\n \"text-align\",\n \"text-decoration\",\n \"text-indent\",\n \"vertical-align\",\n \"widows\",\n \"kerning-mode\",\n \"xfa-font-horizontal-scale\",\n \"xfa-font-vertical-scale\",\n \"xfa-spacerun\",\n \"xfa-tab-stops\",\n]);\n\nconst StyleMapping = new Map([\n [\"page-break-after\", \"breakAfter\"],\n [\"page-break-before\", \"breakBefore\"],\n [\"page-break-inside\", \"breakInside\"],\n [\"kerning-mode\", value => (value === \"none\" ? \"none\" : \"normal\")],\n [\n \"xfa-font-horizontal-scale\",\n value =>\n `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n ],\n [\n \"xfa-font-vertical-scale\",\n value =>\n `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n ],\n [\"xfa-spacerun\", \"\"],\n [\"xfa-tab-stops\", \"\"],\n [\n \"font-size\",\n (value, original) => {\n value = original.fontSize = getMeasurement(value);\n return measureToString(0.99 * value);\n },\n ],\n [\"letter-spacing\", value => measureToString(getMeasurement(value))],\n [\"line-height\", value => measureToString(getMeasurement(value))],\n [\"margin\", value => measureToString(getMeasurement(value))],\n [\"margin-bottom\", value => measureToString(getMeasurement(value))],\n [\"margin-left\", value => measureToString(getMeasurement(value))],\n [\"margin-right\", value => measureToString(getMeasurement(value))],\n [\"margin-top\", value => measureToString(getMeasurement(value))],\n [\"text-indent\", value => measureToString(getMeasurement(value))],\n [\"font-family\", value => value],\n [\"vertical-align\", value => measureToString(getMeasurement(value))],\n]);\n\nconst spacesRegExp = /\\s+/g;\nconst crlfRegExp = /[\\r\\n]+/g;\nconst crlfForRichTextRegExp = /\\r\\n?/g;\n\nfunction mapStyle(styleStr, node, richText) {\n const style = Object.create(null);\n if (!styleStr) {\n return style;\n }\n const original = Object.create(null);\n for (const [key, value] of styleStr.split(\";\").map(s => s.split(\":\", 2))) {\n const mapping = StyleMapping.get(key);\n if (mapping === \"\") {\n continue;\n }\n let newValue = value;\n if (mapping) {\n if (typeof mapping === \"string\") {\n newValue = mapping;\n } else {\n newValue = mapping(value, original);\n }\n }\n if (key.endsWith(\"scale\")) {\n if (style.transform) {\n style.transform = `${style[key]} ${newValue}`;\n } else {\n style.transform = newValue;\n }\n } else {\n style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] =\n newValue;\n }\n }\n\n if (style.fontFamily) {\n setFontFamily(\n {\n typeface: style.fontFamily,\n weight: style.fontWeight || \"normal\",\n posture: style.fontStyle || \"normal\",\n size: original.fontSize || 0,\n },\n node,\n node[$globalData].fontFinder,\n style\n );\n }\n\n if (\n richText &&\n style.verticalAlign &&\n style.verticalAlign !== \"0px\" &&\n style.fontSize\n ) {\n // A non-zero verticalAlign means that we've a sub/super-script and\n // consequently the font size must be decreased.\n // https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf#G11.2097514\n // And the two following factors to position the scripts have been\n // found here:\n // https://en.wikipedia.org/wiki/Subscript_and_superscript#Desktop_publishing\n const SUB_SUPER_SCRIPT_FACTOR = 0.583;\n const VERTICAL_FACTOR = 0.333;\n const fontSize = getMeasurement(style.fontSize);\n style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR);\n style.verticalAlign = measureToString(\n Math.sign(getMeasurement(style.verticalAlign)) *\n fontSize *\n VERTICAL_FACTOR\n );\n }\n\n fixTextIndent(style);\n return style;\n}\n\nfunction checkStyle(node) {\n if (!node.style) {\n return \"\";\n }\n\n // Remove any non-allowed keys.\n return node.style\n .trim()\n .split(/\\s*;\\s*/)\n .filter(s => !!s)\n .map(s => s.split(/\\s*:\\s*/, 2))\n .filter(([key, value]) => {\n if (key === \"font-family\") {\n node[$globalData].usedTypefaces.add(value);\n }\n return VALID_STYLES.has(key);\n })\n .map(kv => kv.join(\":\"))\n .join(\";\");\n}\n\nconst NoWhites = new Set([\"body\", \"html\"]);\n\nclass XhtmlObject extends XmlObject {\n constructor(attributes, name) {\n super(XHTML_NS_ID, name);\n this[$richText] = false;\n this.style = attributes.style || \"\";\n }\n\n [$clean](builder) {\n super[$clean](builder);\n this.style = checkStyle(this);\n }\n\n [$acceptWhitespace]() {\n return !NoWhites.has(this[$nodeName]);\n }\n\n [$onText](str, richText = false) {\n if (!richText) {\n str = str.replace(crlfRegExp, \"\");\n if (!this.style.includes(\"xfa-spacerun:yes\")) {\n str = str.replace(spacesRegExp, \" \");\n }\n } else {\n this[$richText] = true;\n }\n\n if (str) {\n this[$content] += str;\n }\n }\n\n [$pushGlyphs](measure, mustPop = true) {\n const xfaFont = Object.create(null);\n const margin = {\n top: NaN,\n bottom: NaN,\n left: NaN,\n right: NaN,\n };\n let lineHeight = null;\n for (const [key, value] of this.style\n .split(\";\")\n .map(s => s.split(\":\", 2))) {\n switch (key) {\n case \"font-family\":\n xfaFont.typeface = stripQuotes(value);\n break;\n case \"font-size\":\n xfaFont.size = getMeasurement(value);\n break;\n case \"font-weight\":\n xfaFont.weight = value;\n break;\n case \"font-style\":\n xfaFont.posture = value;\n break;\n case \"letter-spacing\":\n xfaFont.letterSpacing = getMeasurement(value);\n break;\n case \"margin\":\n const values = value.split(/ \\t/).map(x => getMeasurement(x));\n switch (values.length) {\n case 1:\n margin.top =\n margin.bottom =\n margin.left =\n margin.right =\n values[0];\n break;\n case 2:\n margin.top = margin.bottom = values[0];\n margin.left = margin.right = values[1];\n break;\n case 3:\n margin.top = values[0];\n margin.bottom = values[2];\n margin.left = margin.right = values[1];\n break;\n case 4:\n margin.top = values[0];\n margin.left = values[1];\n margin.bottom = values[2];\n margin.right = values[3];\n break;\n }\n break;\n case \"margin-top\":\n margin.top = getMeasurement(value);\n break;\n case \"margin-bottom\":\n margin.bottom = getMeasurement(value);\n break;\n case \"margin-left\":\n margin.left = getMeasurement(value);\n break;\n case \"margin-right\":\n margin.right = getMeasurement(value);\n break;\n case \"line-height\":\n lineHeight = getMeasurement(value);\n break;\n }\n }\n\n measure.pushData(xfaFont, margin, lineHeight);\n\n if (this[$content]) {\n measure.addString(this[$content]);\n } else {\n for (const child of this[$getChildren]()) {\n if (child[$nodeName] === \"#text\") {\n measure.addString(child[$content]);\n continue;\n }\n child[$pushGlyphs](measure);\n }\n }\n\n if (mustPop) {\n measure.popFont();\n }\n }\n\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children,\n };\n\n this[$childrenToHTML]({});\n\n if (children.length === 0 && !this[$content]) {\n return HTMLResult.EMPTY;\n }\n\n let value;\n if (this[$richText]) {\n value = this[$content]\n ? this[$content].replace(crlfForRichTextRegExp, \"\\n\")\n : undefined;\n } else {\n value = this[$content] || undefined;\n }\n\n return HTMLResult.success({\n name: this[$nodeName],\n attributes: {\n href: this.href,\n style: mapStyle(this.style, this, this[$richText]),\n },\n children,\n value,\n });\n }\n}\n\nclass A extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"a\");\n this.href = fixURL(attributes.href) || \"\";\n }\n}\n\nclass B extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"b\");\n }\n\n [$pushGlyphs](measure) {\n measure.pushFont({ weight: \"bold\" });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\n\nclass Body extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"body\");\n }\n\n [$toHTML](availableSpace) {\n const res = super[$toHTML](availableSpace);\n const { html } = res;\n if (!html) {\n return HTMLResult.EMPTY;\n }\n html.name = \"div\";\n html.attributes.class = [\"xfaRich\"];\n return res;\n }\n}\n\nclass Br extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"br\");\n }\n\n [$text]() {\n return \"\\n\";\n }\n\n [$pushGlyphs](measure) {\n measure.addString(\"\\n\");\n }\n\n [$toHTML](availableSpace) {\n return HTMLResult.success({\n name: \"br\",\n });\n }\n}\n\nclass Html extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"html\");\n }\n\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children,\n };\n\n this[$childrenToHTML]({});\n if (children.length === 0) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {},\n },\n value: this[$content] || \"\",\n });\n }\n\n if (children.length === 1) {\n const child = children[0];\n if (child.attributes && child.attributes.class.includes(\"xfaRich\")) {\n return HTMLResult.success(child);\n }\n }\n\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {},\n },\n children,\n });\n }\n}\n\nclass I extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"i\");\n }\n\n [$pushGlyphs](measure) {\n measure.pushFont({ posture: \"italic\" });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\n\nclass Li extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"li\");\n }\n}\n\nclass Ol extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ol\");\n }\n}\n\nclass P extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"p\");\n }\n\n [$pushGlyphs](measure) {\n super[$pushGlyphs](measure, /* mustPop = */ false);\n measure.addString(\"\\n\");\n measure.addPara();\n measure.popFont();\n }\n\n [$text]() {\n const siblings = this[$getParent]()[$getChildren]();\n if (siblings[siblings.length - 1] === this) {\n return super[$text]();\n }\n return super[$text]() + \"\\n\";\n }\n}\n\nclass Span extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"span\");\n }\n}\n\nclass Sub extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sub\");\n }\n}\n\nclass Sup extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sup\");\n }\n}\n\nclass Ul extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ul\");\n }\n}\n\nclass XhtmlNamespace {\n static [$buildXFAObject](name, attributes) {\n if (XhtmlNamespace.hasOwnProperty(name)) {\n return XhtmlNamespace[name](attributes);\n }\n return undefined;\n }\n\n static a(attributes) {\n return new A(attributes);\n }\n\n static b(attributes) {\n return new B(attributes);\n }\n\n static body(attributes) {\n return new Body(attributes);\n }\n\n static br(attributes) {\n return new Br(attributes);\n }\n\n static html(attributes) {\n return new Html(attributes);\n }\n\n static i(attributes) {\n return new I(attributes);\n }\n\n static li(attributes) {\n return new Li(attributes);\n }\n\n static ol(attributes) {\n return new Ol(attributes);\n }\n\n static p(attributes) {\n return new P(attributes);\n }\n\n static span(attributes) {\n return new Span(attributes);\n }\n\n static sub(attributes) {\n return new Sub(attributes);\n }\n\n static sup(attributes) {\n return new Sup(attributes);\n }\n\n static ul(attributes) {\n return new Ul(attributes);\n }\n}\n\nexport { XhtmlNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject } from \"./namespaces.js\";\nimport { XmlObject } from \"./xfa_object.js\";\n\nclass UnknownNamespace {\n constructor(nsId) {\n this.namespaceId = nsId;\n }\n\n [$buildXFAObject](name, attributes) {\n return new XmlObject(this.namespaceId, name, attributes);\n }\n}\n\nexport { UnknownNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FormatError,\n info,\n InvalidPDFException,\n warn,\n} from \"../shared/util.js\";\nimport { CIRCULAR_REF, Cmd, Dict, isCmd, Ref, RefSet } from \"./primitives.js\";\nimport {\n DocStats,\n MissingDataException,\n ParserEOFException,\n XRefEntryException,\n XRefParseException,\n} from \"./core_utils.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { CipherTransformFactory } from \"./crypto.js\";\n\nclass XRef {\n constructor(stream, pdfManager) {\n this.stream = stream;\n this.pdfManager = pdfManager;\n this.entries = [];\n this.xrefstms = Object.create(null);\n this._cacheMap = new Map(); // Prepare the XRef cache.\n this._pendingRefs = new RefSet();\n this.stats = new DocStats(pdfManager.msgHandler);\n this._newRefNum = null;\n }\n\n getNewRef() {\n if (this._newRefNum === null) {\n this._newRefNum = this.entries.length;\n }\n return Ref.get(this._newRefNum++, 0);\n }\n\n resetNewRef() {\n this._newRefNum = null;\n }\n\n setStartXRef(startXRef) {\n // Store the starting positions of xref tables as we process them\n // so we can recover from missing data errors\n this.startXRefQueue = [startXRef];\n }\n\n parse(recoveryMode = false) {\n let trailerDict;\n if (!recoveryMode) {\n trailerDict = this.readXRef();\n } else {\n warn(\"Indexing all PDF objects\");\n trailerDict = this.indexObjects();\n }\n trailerDict.assignXref(this);\n this.trailer = trailerDict;\n\n let encrypt;\n try {\n encrypt = trailerDict.get(\"Encrypt\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n }\n if (encrypt instanceof Dict) {\n const ids = trailerDict.get(\"ID\");\n const fileId = ids && ids.length ? ids[0] : \"\";\n // The 'Encrypt' dictionary itself should not be encrypted, and by\n // setting `suppressEncryption` we can prevent an infinite loop inside\n // of `XRef_fetchUncompressed` if the dictionary contains indirect\n // objects (fixes issue7665.pdf).\n encrypt.suppressEncryption = true;\n this.encrypt = new CipherTransformFactory(\n encrypt,\n fileId,\n this.pdfManager.password\n );\n }\n\n // Get the root dictionary (catalog) object, and do some basic validation.\n let root;\n try {\n root = trailerDict.get(\"Root\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n }\n if (root instanceof Dict) {\n try {\n const pages = root.get(\"Pages\");\n if (pages instanceof Dict) {\n this.root = root;\n return;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Pages\" reference: \"${ex}\".`);\n }\n }\n\n if (!recoveryMode) {\n throw new XRefParseException();\n }\n // Even recovery failed, there's nothing more we can do here.\n throw new InvalidPDFException(\"Invalid Root reference.\");\n }\n\n processXRefTable(parser) {\n if (!(\"tableState\" in this)) {\n // Stores state of the table as we process it so we can resume\n // from middle of table in case of missing data error\n this.tableState = {\n entryNum: 0,\n streamPos: parser.lexer.stream.pos,\n parserBuf1: parser.buf1,\n parserBuf2: parser.buf2,\n };\n }\n\n const obj = this.readXRefTable(parser);\n\n // Sanity check\n if (!isCmd(obj, \"trailer\")) {\n throw new FormatError(\n \"Invalid XRef table: could not find trailer dictionary\"\n );\n }\n // Read trailer dictionary, e.g.\n // trailer\n // << /Size 22\n // /Root 20R\n // /Info 10R\n // /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]\n // >>\n // The parser goes through the entire stream << ... >> and provides\n // a getter interface for the key-value table\n let dict = parser.getObj();\n\n // The pdflib PDF generator can generate a nested trailer dictionary\n if (!(dict instanceof Dict) && dict.dict) {\n dict = dict.dict;\n }\n if (!(dict instanceof Dict)) {\n throw new FormatError(\n \"Invalid XRef table: could not parse trailer dictionary\"\n );\n }\n delete this.tableState;\n\n return dict;\n }\n\n readXRefTable(parser) {\n // Example of cross-reference table:\n // xref\n // 0 1 <-- subsection header (first obj #, obj count)\n // 0000000000 65535 f <-- actual object (offset, generation #, f/n)\n // 23 2 <-- subsection header ... and so on ...\n // 0000025518 00002 n\n // 0000025635 00000 n\n // trailer\n // ...\n\n const stream = parser.lexer.stream;\n const tableState = this.tableState;\n stream.pos = tableState.streamPos;\n parser.buf1 = tableState.parserBuf1;\n parser.buf2 = tableState.parserBuf2;\n\n // Outer loop is over subsection headers\n let obj;\n\n while (true) {\n if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n if (isCmd((obj = parser.getObj()), \"trailer\")) {\n break;\n }\n tableState.firstEntryNum = obj;\n tableState.entryCount = parser.getObj();\n }\n\n let first = tableState.firstEntryNum;\n const count = tableState.entryCount;\n if (!Number.isInteger(first) || !Number.isInteger(count)) {\n throw new FormatError(\n \"Invalid XRef table: wrong types in subsection header\"\n );\n }\n // Inner loop is over objects themselves\n for (let i = tableState.entryNum; i < count; i++) {\n tableState.streamPos = stream.pos;\n tableState.entryNum = i;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n\n const entry = {};\n entry.offset = parser.getObj();\n entry.gen = parser.getObj();\n const type = parser.getObj();\n\n if (type instanceof Cmd) {\n switch (type.cmd) {\n case \"f\":\n entry.free = true;\n break;\n case \"n\":\n entry.uncompressed = true;\n break;\n }\n }\n\n // Validate entry obj\n if (\n !Number.isInteger(entry.offset) ||\n !Number.isInteger(entry.gen) ||\n !(entry.free || entry.uncompressed)\n ) {\n throw new FormatError(\n `Invalid entry in XRef subsection: ${first}, ${count}`\n );\n }\n\n // The first xref table entry, i.e. obj 0, should be free. Attempting\n // to adjust an incorrect first obj # (fixes issue 3248 and 7229).\n if (i === 0 && entry.free && first === 1) {\n first = 0;\n }\n\n if (!this.entries[i + first]) {\n this.entries[i + first] = entry;\n }\n }\n\n tableState.entryNum = 0;\n tableState.streamPos = stream.pos;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n delete tableState.firstEntryNum;\n delete tableState.entryCount;\n }\n\n // Sanity check: as per spec, first object must be free\n if (this.entries[0] && !this.entries[0].free) {\n throw new FormatError(\"Invalid XRef table: unexpected first object\");\n }\n return obj;\n }\n\n processXRefStream(stream) {\n if (!(\"streamState\" in this)) {\n // Stores state of the stream as we process it so we can resume\n // from middle of stream in case of missing data error\n const streamParameters = stream.dict;\n const byteWidths = streamParameters.get(\"W\");\n let range = streamParameters.get(\"Index\");\n if (!range) {\n range = [0, streamParameters.get(\"Size\")];\n }\n\n this.streamState = {\n entryRanges: range,\n byteWidths,\n entryNum: 0,\n streamPos: stream.pos,\n };\n }\n this.readXRefStream(stream);\n delete this.streamState;\n\n return stream.dict;\n }\n\n readXRefStream(stream) {\n const streamState = this.streamState;\n stream.pos = streamState.streamPos;\n\n const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] =\n streamState.byteWidths;\n\n const entryRanges = streamState.entryRanges;\n while (entryRanges.length > 0) {\n const [first, n] = entryRanges;\n\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n }\n if (\n !Number.isInteger(typeFieldWidth) ||\n !Number.isInteger(offsetFieldWidth) ||\n !Number.isInteger(generationFieldWidth)\n ) {\n throw new FormatError(\n `Invalid XRef entry fields length: ${first}, ${n}`\n );\n }\n for (let i = streamState.entryNum; i < n; ++i) {\n streamState.entryNum = i;\n streamState.streamPos = stream.pos;\n\n let type = 0,\n offset = 0,\n generation = 0;\n for (let j = 0; j < typeFieldWidth; ++j) {\n const typeByte = stream.getByte();\n if (typeByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'type'.\");\n }\n type = (type << 8) | typeByte;\n }\n // if type field is absent, its default value is 1\n if (typeFieldWidth === 0) {\n type = 1;\n }\n for (let j = 0; j < offsetFieldWidth; ++j) {\n const offsetByte = stream.getByte();\n if (offsetByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'offset'.\");\n }\n offset = (offset << 8) | offsetByte;\n }\n for (let j = 0; j < generationFieldWidth; ++j) {\n const generationByte = stream.getByte();\n if (generationByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'generation'.\");\n }\n generation = (generation << 8) | generationByte;\n }\n const entry = {};\n entry.offset = offset;\n entry.gen = generation;\n switch (type) {\n case 0:\n entry.free = true;\n break;\n case 1:\n entry.uncompressed = true;\n break;\n case 2:\n break;\n default:\n throw new FormatError(`Invalid XRef entry type: ${type}`);\n }\n if (!this.entries[first + i]) {\n this.entries[first + i] = entry;\n }\n }\n\n streamState.entryNum = 0;\n streamState.streamPos = stream.pos;\n entryRanges.splice(0, 2);\n }\n }\n\n indexObjects() {\n // Simple scan through the PDF content to find objects,\n // trailers and XRef streams.\n const TAB = 0x9,\n LF = 0xa,\n CR = 0xd,\n SPACE = 0x20;\n const PERCENT = 0x25,\n LT = 0x3c;\n\n function readToken(data, offset) {\n let token = \"\",\n ch = data[offset];\n while (ch !== LF && ch !== CR && ch !== LT) {\n if (++offset >= data.length) {\n break;\n }\n token += String.fromCharCode(ch);\n ch = data[offset];\n }\n return token;\n }\n function skipUntil(data, offset, what) {\n const length = what.length,\n dataLength = data.length;\n let skipped = 0;\n // finding byte sequence\n while (offset < dataLength) {\n let i = 0;\n while (i < length && data[offset + i] === what[i]) {\n ++i;\n }\n if (i >= length) {\n break; // sequence found\n }\n offset++;\n skipped++;\n }\n return skipped;\n }\n const objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n const endobjRegExp = /\\bendobj[\\b\\s]$/;\n const nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n const CHECK_CONTENT_LENGTH = 25;\n\n const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n const startxrefBytes = new Uint8Array([\n 115, 116, 97, 114, 116, 120, 114, 101, 102,\n ]);\n const objBytes = new Uint8Array([111, 98, 106]);\n const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n\n // Clear out any existing entries, since they may be bogus.\n this.entries.length = 0;\n this._cacheMap.clear();\n\n const stream = this.stream;\n stream.pos = 0;\n const buffer = stream.getBytes(),\n length = buffer.length;\n let position = stream.start;\n const trailers = [],\n xrefStms = [];\n while (position < length) {\n let ch = buffer[position];\n if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n ++position;\n continue;\n }\n if (ch === PERCENT) {\n // %-comment\n do {\n ++position;\n if (position >= length) {\n break;\n }\n ch = buffer[position];\n } while (ch !== LF && ch !== CR);\n continue;\n }\n const token = readToken(buffer, position);\n let m;\n if (\n token.startsWith(\"xref\") &&\n (token.length === 4 || /\\s/.test(token[4]))\n ) {\n position += skipUntil(buffer, position, trailerBytes);\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else if ((m = objRegExp.exec(token))) {\n const num = m[1] | 0,\n gen = m[2] | 0;\n\n let contentLength,\n startPos = position + token.length,\n updateEntries = false;\n if (!this.entries[num]) {\n updateEntries = true;\n } else if (this.entries[num].gen === gen) {\n // Before overwriting an existing entry, ensure that the new one won't\n // cause *immediate* errors when it's accessed (fixes issue13783.pdf).\n try {\n const parser = new Parser({\n lexer: new Lexer(stream.makeSubStream(startPos)),\n });\n parser.getObj();\n updateEntries = true;\n } catch (ex) {\n if (ex instanceof ParserEOFException) {\n warn(`indexObjects -- checking object (${token}): \"${ex}\".`);\n } else {\n // The error may come from the `Parser`-instance being initialized\n // without an `XRef`-instance (we don't have a usable one yet).\n updateEntries = true;\n }\n }\n }\n if (updateEntries) {\n this.entries[num] = {\n offset: position - stream.start,\n gen,\n uncompressed: true,\n };\n }\n\n // Find the next \"obj\" string, rather than \"endobj\", to ensure that\n // we won't skip over a new 'obj' operator in corrupt files where\n // 'endobj' operators are missing (fixes issue9105_reduced.pdf).\n while (startPos < buffer.length) {\n const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n contentLength = endPos - position;\n\n const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n const tokenStr = bytesToString(buffer.subarray(checkPos, endPos));\n\n // Check if the current object ends with an 'endobj' operator.\n if (endobjRegExp.test(tokenStr)) {\n break;\n } else {\n // Check if an \"obj\" occurrence is actually a new object,\n // i.e. the current object is missing the 'endobj' operator.\n const objToken = nestedObjRegExp.exec(tokenStr);\n\n if (objToken && objToken[1]) {\n warn(\n 'indexObjects: Found new \"obj\" inside of another \"obj\", ' +\n 'caused by missing \"endobj\" -- trying to recover.'\n );\n contentLength -= objToken[1].length;\n break;\n }\n }\n startPos = endPos;\n }\n const content = buffer.subarray(position, position + contentLength);\n\n // checking XRef stream suspect\n // (it shall have '/XRef' and next char is not a letter)\n const xrefTagOffset = skipUntil(content, 0, xrefBytes);\n if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n xrefStms.push(position - stream.start);\n this.xrefstms[position - stream.start] = 1; // Avoid recursion\n }\n\n position += contentLength;\n } else if (\n token.startsWith(\"trailer\") &&\n (token.length === 7 || /\\s/.test(token[7]))\n ) {\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else {\n position += token.length + 1;\n }\n }\n // reading XRef streams\n for (let i = 0, ii = xrefStms.length; i < ii; ++i) {\n this.startXRefQueue.push(xrefStms[i]);\n this.readXRef(/* recoveryMode */ true);\n }\n // finding main trailer\n let trailerDict;\n for (let i = 0, ii = trailers.length; i < ii; ++i) {\n stream.pos = trailers[i];\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n recoveryMode: true,\n });\n const obj = parser.getObj();\n if (!isCmd(obj, \"trailer\")) {\n continue;\n }\n // read the trailer dictionary\n const dict = parser.getObj();\n if (!(dict instanceof Dict)) {\n continue;\n }\n // Do some basic validation of the trailer/root dictionary candidate.\n try {\n const rootDict = dict.get(\"Root\");\n if (!(rootDict instanceof Dict)) {\n continue;\n }\n const pagesDict = rootDict.get(\"Pages\");\n if (!(pagesDict instanceof Dict)) {\n continue;\n }\n const pagesCount = pagesDict.get(\"Count\");\n if (!Number.isInteger(pagesCount)) {\n continue;\n }\n // The top-level /Pages dictionary isn't obviously corrupt.\n } catch (ex) {\n continue;\n }\n // taking the first one with 'ID'\n if (dict.has(\"ID\")) {\n return dict;\n }\n // The current dictionary is a candidate, but continue searching.\n trailerDict = dict;\n }\n // No trailer with 'ID', taking last one (if exists).\n if (trailerDict) {\n return trailerDict;\n }\n // No trailer dictionary found, taking the \"top\"-dictionary (if exists).\n if (this.topDict) {\n return this.topDict;\n }\n // nothing helps\n throw new InvalidPDFException(\"Invalid PDF structure.\");\n }\n\n readXRef(recoveryMode = false) {\n const stream = this.stream;\n // Keep track of already parsed XRef tables, to prevent an infinite loop\n // when parsing corrupt PDF files where e.g. the /Prev entries create a\n // circular dependency between tables (fixes bug1393476.pdf).\n const startXRefParsedCache = new Set();\n\n try {\n while (this.startXRefQueue.length) {\n const startXRef = this.startXRefQueue[0];\n\n if (startXRefParsedCache.has(startXRef)) {\n warn(\"readXRef - skipping XRef table since it was already parsed.\");\n this.startXRefQueue.shift();\n continue;\n }\n startXRefParsedCache.add(startXRef);\n\n stream.pos = startXRef + stream.start;\n\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n let obj = parser.getObj();\n let dict;\n\n // Get dictionary\n if (isCmd(obj, \"xref\")) {\n // Parse end-of-file XRef\n dict = this.processXRefTable(parser);\n if (!this.topDict) {\n this.topDict = dict;\n }\n\n // Recursively get other XRefs 'XRefStm', if any\n obj = dict.get(\"XRefStm\");\n if (Number.isInteger(obj)) {\n const pos = obj;\n // ignore previously loaded xref streams\n // (possible infinite recursion)\n if (!(pos in this.xrefstms)) {\n this.xrefstms[pos] = 1;\n this.startXRefQueue.push(pos);\n }\n }\n } else if (Number.isInteger(obj)) {\n // Parse in-stream XRef\n if (\n !Number.isInteger(parser.getObj()) ||\n !isCmd(parser.getObj(), \"obj\") ||\n !((obj = parser.getObj()) instanceof BaseStream)\n ) {\n throw new FormatError(\"Invalid XRef stream\");\n }\n dict = this.processXRefStream(obj);\n if (!this.topDict) {\n this.topDict = dict;\n }\n if (!dict) {\n throw new FormatError(\"Failed to read XRef stream\");\n }\n } else {\n throw new FormatError(\"Invalid XRef stream header\");\n }\n\n // Recursively get previous dictionary, if any\n obj = dict.get(\"Prev\");\n if (Number.isInteger(obj)) {\n this.startXRefQueue.push(obj);\n } else if (obj instanceof Ref) {\n // The spec says Prev must not be a reference, i.e. \"/Prev NNN\"\n // This is a fallback for non-compliant PDFs, i.e. \"/Prev NNN 0 R\"\n this.startXRefQueue.push(obj.num);\n }\n\n this.startXRefQueue.shift();\n }\n\n return this.topDict;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n info(\"(while reading XRef): \" + e);\n\n this.startXRefQueue.shift();\n }\n\n if (recoveryMode) {\n return undefined;\n }\n throw new XRefParseException();\n }\n\n getEntry(i) {\n const xrefEntry = this.entries[i];\n if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n return xrefEntry;\n }\n return null;\n }\n\n fetchIfRef(obj, suppressEncryption = false) {\n if (obj instanceof Ref) {\n return this.fetch(obj, suppressEncryption);\n }\n return obj;\n }\n\n fetch(ref, suppressEncryption = false) {\n if (!(ref instanceof Ref)) {\n throw new Error(\"ref object is not a reference\");\n }\n const num = ref.num;\n\n // The XRef cache is populated with objects which are obtained through\n // `Parser.getObj`, and indirectly via `Lexer.getObj`. Neither of these\n // methods should ever return `undefined` (note the `assert` calls below).\n const cacheEntry = this._cacheMap.get(num);\n if (cacheEntry !== undefined) {\n // In documents with Object Streams, it's possible that cached `Dict`s\n // have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\n if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n cacheEntry.objId = ref.toString();\n }\n return cacheEntry;\n }\n let xrefEntry = this.getEntry(num);\n\n if (xrefEntry === null) {\n // The referenced entry can be free.\n this._cacheMap.set(num, xrefEntry);\n return xrefEntry;\n }\n // Prevent circular references, in corrupt PDF documents, from hanging the\n // worker-thread. This relies, implicitly, on the parsing being synchronous.\n if (this._pendingRefs.has(ref)) {\n this._pendingRefs.remove(ref);\n\n warn(`Ignoring circular reference: ${ref}.`);\n return CIRCULAR_REF;\n }\n this._pendingRefs.put(ref);\n\n try {\n if (xrefEntry.uncompressed) {\n xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n } else {\n xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n }\n this._pendingRefs.remove(ref);\n } catch (ex) {\n this._pendingRefs.remove(ref);\n throw ex;\n }\n if (xrefEntry instanceof Dict) {\n xrefEntry.objId = ref.toString();\n } else if (xrefEntry instanceof BaseStream) {\n xrefEntry.dict.objId = ref.toString();\n }\n return xrefEntry;\n }\n\n fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n const gen = ref.gen;\n let num = ref.num;\n if (xrefEntry.gen !== gen) {\n throw new XRefEntryException(`Inconsistent generation in XRef: ${ref}`);\n }\n const stream = this.stream.makeSubStream(\n xrefEntry.offset + this.stream.start\n );\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n\n if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (obj3.cmd !== \"obj\") {\n // some bad PDFs use \"obj1234\" and really mean 1234\n if (obj3.cmd.startsWith(\"obj\")) {\n num = parseInt(obj3.cmd.substring(3), 10);\n if (!Number.isNaN(num)) {\n return num;\n }\n }\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (this.encrypt && !suppressEncryption) {\n xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n } else {\n xrefEntry = parser.getObj();\n }\n if (!(xrefEntry instanceof BaseStream)) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n xrefEntry !== undefined,\n 'fetchUncompressed: The \"xrefEntry\" cannot be undefined.'\n );\n }\n this._cacheMap.set(num, xrefEntry);\n }\n return xrefEntry;\n }\n\n fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n const tableOffset = xrefEntry.offset;\n const stream = this.fetch(Ref.get(tableOffset, 0));\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"bad ObjStm stream\");\n }\n const first = stream.dict.get(\"First\");\n const n = stream.dict.get(\"N\");\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(\"invalid first and n parameters for ObjStm stream\");\n }\n let parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n const nums = new Array(n);\n const offsets = new Array(n);\n // read the object numbers to populate cache\n for (let i = 0; i < n; ++i) {\n const num = parser.getObj();\n if (!Number.isInteger(num)) {\n throw new FormatError(\n `invalid object number in the ObjStm stream: ${num}`\n );\n }\n const offset = parser.getObj();\n if (!Number.isInteger(offset)) {\n throw new FormatError(\n `invalid object offset in the ObjStm stream: ${offset}`\n );\n }\n nums[i] = num;\n offsets[i] = offset;\n }\n\n const start = (stream.start || 0) + first;\n const entries = new Array(n);\n // read stream objects for cache\n for (let i = 0; i < n; ++i) {\n const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined;\n if (length < 0) {\n throw new FormatError(\"Invalid offset in the ObjStm stream.\");\n }\n parser = new Parser({\n lexer: new Lexer(\n stream.makeSubStream(start + offsets[i], length, stream.dict)\n ),\n xref: this,\n allowStreams: true,\n });\n\n const obj = parser.getObj();\n entries[i] = obj;\n if (obj instanceof BaseStream) {\n continue;\n }\n const num = nums[i],\n entry = this.entries[num];\n if (entry && entry.offset === tableOffset && entry.gen === i) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n obj !== undefined,\n 'fetchCompressed: The \"obj\" cannot be undefined.'\n );\n }\n this._cacheMap.set(num, obj);\n }\n }\n xrefEntry = entries[xrefEntry.gen];\n if (xrefEntry === undefined) {\n throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n }\n return xrefEntry;\n }\n\n async fetchIfRefAsync(obj, suppressEncryption) {\n if (obj instanceof Ref) {\n return this.fetchAsync(obj, suppressEncryption);\n }\n return obj;\n }\n\n async fetchAsync(ref, suppressEncryption) {\n try {\n return this.fetch(ref, suppressEncryption);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.pdfManager.requestRange(ex.begin, ex.end);\n return this.fetchAsync(ref, suppressEncryption);\n }\n }\n\n getCatalogObj() {\n return this.root;\n }\n}\n\nexport { XRef };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n PasswordException,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n unreachable(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this._createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = createPromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason),\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\n\n /**\n * @private\n */\n _createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: createPromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n }\n\n /**\n * @private\n */\n _processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(\n streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n );\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n /**\n * @private\n */\n async _deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall && streamController.startCall.promise,\n streamController.pullCall && streamController.pullCall.promise,\n streamController.cancelCall && streamController.cancelCall.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from \"../shared/util.js\";\n\n/** @implements {IPDFStream} */\nclass PDFWorkerStream {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this._contentLength = null;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFWorkerStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFWorkerStreamReader {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n this._contentLength = null;\n this._isRangeSupported = false;\n this._isStreamingSupported = false;\n\n const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n this._reader = readableStream.getReader();\n\n this._headersReady = this._msgHandler\n .sendWithPromise(\"ReaderHeadersReady\")\n .then(data => {\n this._isStreamingSupported = data.isStreamingSupported;\n this._isRangeSupported = data.isRangeSupported;\n this._contentLength = data.contentLength;\n });\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n async read() {\n const { value, done } = await this._reader.read();\n if (done) {\n return { value: undefined, done: true };\n }\n // `value` is wrapped into Uint8Array, we need to\n // unwrap it to ArrayBuffer for further processing.\n return { value: value.buffer, done: false };\n }\n\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFWorkerStreamRangeReader {\n constructor(begin, end, msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n begin,\n end,\n });\n this._reader = readableStream.getReader();\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n const { value, done } = await this._reader.read();\n if (done) {\n return { value: undefined, done: true };\n }\n return { value: value.buffer, done: false };\n }\n\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\nexport { PDFWorkerStream };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__w_pdfjs_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__w_pdfjs_require__.o(definition, key) && !__w_pdfjs_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__w_pdfjs_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__w_pdfjs_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WorkerMessageHandler } from \"./core/worker.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nexport { WorkerMessageHandler };\n"],"names":["WorkerTask","constructor","name","terminated","_capability","createPromiseCapability","finished","promise","finish","resolve","terminate","ensureNotTerminated","Error","WorkerMessageHandler","setup","handler","port","testMessageProcessed","on","wphSetupTest","data","send","Uint8Array","wphConfigure","setVerbosityLevel","verbosity","wphSetupDoc","createDocumentHandler","docParams","pdfManager","cancelXHRs","WorkerTasks","getVerbosityLevel","apiVersion","workerVersion","enumerableProperties","property","push","length","join","ReadableStream","partialMsg","isNodeJS","docId","docBaseUrl","workerHandlerName","MessageHandler","startWorkerTask","task","finishWorkerTask","i","indexOf","splice","loadDocument","recoveryMode","ensureDoc","isPureXfa","Promise","all","loadXfaFonts","catch","reason","then","loadXfaImages","numPages","fingerprints","htmlForXfa","getPdfManager","evaluatorOptions","enableXfa","pdfManagerCapability","newPdfManager","source","LocalPdfManager","password","ex","reject","pdfStream","cachedChunks","PDFWorkerStream","fullRequest","getFullReader","headersReady","isRangeSupported","disableAutoFetch","isStreamingSupported","NetworkPdfManager","msgHandler","contentLength","rangeChunkSize","sendProgressiveData","loaded","flushChunks","pdfFile","arraysToBytes","warn","readPromise","readChunk","value","done","arrayByteLength","total","Math","max","read","e","cancelAllRequests","setupDoc","onSuccess","doc","pdfInfo","onFailure","PasswordException","code","sendWithPromise","updatePassword","pdfManagerReady","InvalidPDFException","MissingPDFException","UnexpectedResponseException","UnknownErrorException","message","toString","XRefParseException","requestLoadedStream","onLoadedStream","maxImageSize","disableFontFace","ignoreErrors","isEvalSupported","fontExtraProperties","useSystemFonts","cMapUrl","standardFontDataUrl","AbortException","stream","bytes","byteLength","wphSetupGetPage","getPage","pageIndex","page","ensure","rotate","ref","userUnit","view","wphSetupGetPageIndex","pageRef","Ref","get","num","gen","ensureCatalog","wphSetupGetDestinations","wphSetupGetDestination","id","wphSetupGetPageLabels","wphSetupGetPageLayout","wphSetupGetPageMode","wphSetupGetAttachments","wphSetupGetJavaScript","wphSetupGetDocJSActions","wphSetupGetOutline","wphSetupGetMetadata","wphSetupGetMarkInfo","wphSetupGetData","intent","getAnnotationsData","annotationStorage","filename","promises","serializeXfaData","save","finally","acroForm","acroFormRef","xref","startXRef","newRefs","xfaData","refs","filter","x","reduce","a","b","concat","xfa","Dict","xfaDatasetsRef","hasXfaDatasetsEntry","Array","isArray","ii","getNewRef","newXrefInfo","Object","create","trailer","infoObj","xrefInfo","forEach","key","stringToPDFString","rootRef","getRaw","encryptRef","newRef","infoRef","info","fileIds","resetNewRef","incrementalUpdate","originalData","hasXfa","wphSetupRenderPage","sink","start","VerbosityLevel","INFOS","Date","now","getOperatorList","cacheKey","operatorListInfo","close","featureId","UNSUPPORTED_FEATURES","errorOperatorList","error","wphExtractText","extractTextContent","includeMarkedContent","combineTextItems","wphGetStructTree","fontFallback","wphCleanup","cleanup","wphTerminate","waitOn","cleanupPromise","clearGlobalCaches","destroy","wphReady","initializeFromPort","isMessagePort","maybePort","postMessage","window","self","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","RenderingIntentFlag","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","NONE","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","level","Number","isInteger","msg","console","log","unreachable","assert","cond","isSameOrigin","baseUrl","otherUrl","base","URL","origin","other","_isValidProtocol","url","protocol","createValidAbsoluteUrl","options","addDefaultProtocol","startsWith","dots","match","tryConvertEncoding","stringToUTF8String","absoluteUrl","shadow","obj","prop","defineProperty","enumerable","configurable","writable","BaseException","BaseExceptionClosure","prototype","details","status","FormatError","bytesToString","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","chunkEnd","min","chunk","subarray","stringToBytes","str","charCodeAt","arr","resultLength","pos","item","itemLength","set","string32","objectSize","keys","objectFromMap","map","isLittleEndian","buffer8","view32","Uint32Array","buffer","IsLittleEndianCached","Function","IsEvalSupportedCached","hexNumbers","n","padStart","Util","makeHexColor","r","g","m1","m2","applyTransform","p","m","xt","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","p2","slice","p3","p4","inverseTransform","apply3dTransform","v","singularValueDecompose2dScale","transpose","c","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","compare","orderedX","sort","orderedY","result","bezierBoundingBox","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t","t1","t2","b2ac","sqrtb2ac","abs","j","mt","jlen","PDFStringTranslateTable","encoding","decoder","TextDecoder","fatal","decode","charAt","escapeString","replace","isAscii","test","stringToUTF16BEString","buf","char","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayBuffer","isArrayEqual","arr1","arr2","getModificationDate","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","capability","isSettled","process","versions","nw","electron","type","CIRCULAR_REF","Symbol","EOF","Name","NameClosure","nameCache","nameValue","_clearCache","Cmd","CmdClosure","cmdCache","cmd","cmdValue","nonSerializable","nonSerializableClosure","_map","objId","suppressEncryption","__nonSerializable__","assignXref","newXref","size","key1","key2","key3","fetch","getAsync","fetchAsync","getArray","getKeys","getRawValues","values","has","callback","empty","emptyDict","merge","dictArray","mergeSubDicts","mergedDict","properties","Map","dict","entries","subDict","clear","RefClosure","refCache","refValue","RefSet","parent","_set","Set","put","add","remove","delete","RefSetCache","putAlias","aliasRef","isName","isCmd","isDict","isRefsEqual","v1","v2","clearPrimitiveCaches","parseDocBaseUrl","href","BasePdfManager","_docId","_password","_docBaseUrl","args","pdfDocument","ensureXRef","catalog","manuallyTriggered","requestRange","begin","end","Stream","PDFDocument","_loadedStreamPromise","pdfNetworkStream","streamManager","ChunkedStreamManager","getStream","MissingDataException","requestAllChunks","onReceiveData","abort","ChunkedStream","chunkSize","manager","_loadedChunks","numChunks","ceil","progressiveDataLength","lastSuccessfulEnsureByteChunk","getMissingChunks","chunks","numChunksLoaded","isDataLoaded","beginChunk","floor","endChunk","curChunk","onReceiveProgressiveData","position","ensureByte","ensureRange","nextEmptyChunk","hasChunk","getByte","getBytes","forceClamped","strEnd","Uint8ClampedArray","getByteRange","makeSubStream","ChunkedStreamSubstream","missingChunks","subStream","getBaseStreams","currRequestId","_chunksNeededByRequest","_requestsByChunk","_promisesByRequest","aborted","_loadedStreamCapability","sendRequest","rangeReader","getRangeReader","onProgress","bind","chunkData","_requestChunks","requestId","chunksNeeded","chunksToRequest","requestIds","groupedChunksToRequest","groupChunks","groupedChunk","getBeginChunk","getEndChunk","requestRanges","ranges","range","includes","groupedChunks","prevChunk","isProgressive","loadedRequests","lastChunk","onError","err","getLookupTableFactory","initializer","lookup","getArrayLookupTableFactory","ParserEOFException","XRefEntryException","DocStats","_handler","_streamTypes","_fontTypes","_send","streamTypes","fontTypes","addStreamType","addFontType","getInheritableProperty","stopWhenFound","visited","ROMAN_NUMBER_MAP","toRomanNumerals","number","lowerCase","romanBuf","romanStr","toLowerCase","log2","readInt8","offset","readUint16","readUint32","isWhiteSpace","ch","parseXFAPath","path","positionPattern","split","component","parseInt","escapePDFName","substring","_collectJS","entry","list","parents","element","js","BaseStream","getString","collectActions","eventType","actions","additionalActionsDicts","additionalActions","action","actionDict","Action","XMLEntities","encodeToXmlString","codePointAt","entity","toUpperCase","validateCSSFont","cssFontInfo","DEFAULT_CSS_FONT_OBLIQUE","DEFAULT_CSS_FONT_WEIGHT","CSS_FONT_WEIGHT_VALUES","fontFamily","fontWeight","italicAngle","ident","weight","angle","parseFloat","isNaN","recoverJsURL","URL_OPEN_METHODS","regex","RegExp","jsUrl","exec","newWindow","isEmpty","peekByte","peekedByte","peekBytes","getUint16","b0","b1","getInt32","b2","b3","skip","reset","moveStart","arrayBuffer","StringStream","NullStream","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","Page","pageDict","globalIdFactory","fontCache","builtInCMapCache","standardFontDataCache","globalImageCache","nonBlendModesSet","xfaFactory","resourcesPromise","idCounters","_localIdFactory","createObjId","getPageObjId","_getInheritableProperty","content","resources","_getBoundingBox","bbox","box","mediaBox","cropBox","_onSubStreamError","getContentStream","StreamsSequenceStream","getBoundingBox","partialEvaluator","PartialEvaluator","idFactory","_parsedAnnotations","annotations","newRefsPromises","annotation","mustBePrinted","loadResources","objectLoader","ObjectLoader","load","contentStreamPromise","dataPromises","pageListPromise","contentStream","opList","OperatorList","transparency","hasBlendModes","operatorList","pageOpList","flush","totalLength","renderForms","intentAny","intentDisplay","intentPrint","opListPromises","mustBeViewed","opLists","addOp","addOpList","getTextContent","viewBox","getStructTree","structTreeRoot","structTree","serializable","_parseStructTree","tree","StructTreePage","parse","annotationsData","viewable","printable","annots","parsedAnnotations","annotationPromises","annotationRef","AnnotationFactory","jsActions","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","PDF_HEADER_VERSION_REGEXP","find","signature","limit","backwards","signatureLength","scanBytes","scanLength","signatureEnd","arg","XRef","_pagePromises","_version","_globalIdFactory","getDocId","createFontId","Catalog","version","linearization","Linearization","step","startXRefLength","found","checkHeader","MAX_PDF_VERSION_LENGTH","parseStartXRef","setStartXRef","hasActualNumPages","getNumPages","_hasOnlyDocumentSignatures","fields","recursionDepth","RECURSION_LIMIT","every","field","fetchIfRef","isSignature","isInvisible","template","datasets","config","connectionSet","localeSet","stylesheet","_","hasOwnProperty","needsRendering","formInfo","hasAcroForm","XFAFactory","isValid","getPages","xfaImagesDict","xfaImages","setImages","fontRes","assign","pdfFonts","initialState","clone","fonts","fontName","descriptor","handleSetFont","missingFonts","setFonts","reallyMissingFonts","missing","getXfaFontName","fontInfo","getXfaFontDict","appendFonts","serializeData","hasFields","hasSignatures","sigFlags","hasOnlyDocumentSignatures","documentInfo","docInfo","PDFFormatVersion","Language","lang","EncryptFilterName","encrypt","filterName","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","collection","IsSignaturesPresent","infoDict","customValue","Custom","validate","hexString","hash","hex","idArray","hashOriginal","hashModified","calculateMD5","_getLinearizationPage","objectNumberFirst","pageKidsCountCache","pageIndexCache","getPageDict","cachedPromise","pageFirst","checkFirstPage","checkLastPage","setActualNumPages","pagesTree","getAllPageDicts","reasonAll","_collectFieldObjects","fieldRef","partName","getFieldObject","kids","kid","fieldObjects","allFields","fieldPromises","allPromises","hasJSActions","_parseHasJSActions","catalogJsActions","some","fieldObject","object","calculationOrderIds","calculationOrder","ids","getXFAFontMap","factors","MyriadProRegularFactors","baseWidths","LiberationSansRegularWidths","baseMapping","LiberationSansRegularMapping","metrics","MyriadProRegularMetrics","MyriadProBoldFactors","LiberationSansBoldWidths","LiberationSansBoldMapping","MyriadProBoldMetrics","MyriadProItalicFactors","LiberationSansItalicWidths","LiberationSansItalicMapping","MyriadProItalicMetrics","MyriadProBoldItalicFactors","LiberationSansBoldItalicWidths","LiberationSansBoldItalicMapping","MyriadProBoldItalicMetrics","ArialMT","Arial","CalibriRegularFactors","CalibriRegularMetrics","CalibriBoldFactors","CalibriBoldMetrics","CalibriItalicFactors","CalibriItalicMetrics","CalibriBoldItalicFactors","CalibriBoldItalicMetrics","SegoeuiRegularFactors","SegoeuiRegularMetrics","SegoeuiBoldFactors","SegoeuiBoldMetrics","SegoeuiItalicFactors","SegoeuiItalicMetrics","SegoeuiBoldItalicFactors","SegoeuiBoldItalicMetrics","Helvetica","HelveticaRegularFactors","HelveticaRegularMetrics","HelveticaBoldFactors","HelveticaBoldMetrics","HelveticaItalicFactors","HelveticaItalicMetrics","HelveticaBoldItalicFactors","HelveticaBoldItalicMetrics","normalizeFontName","fontMap","getXfaFontWidths","rescaledBaseWidths","w","currentCode","currentArray","newWidths","unicode","glyphIndex","charUnicode","index","unicode1","unicode2","widths","systemInfo","lineHeight","lineGap","SEAC_ANALYSIS_ENABLED","FontFlags","FixedPitch","Serif","Symbolic","Script","Nonsymbolic","Italic","AllCap","SmallCap","ForceBold","MacStandardGlyphOrdering","getFontType","subtype","isStandardFont","recoverGlyphName","glyphsUnicodeMap","getUnicodeForGlyph","type1FontGlyphMapping","builtInEncoding","glyphNames","charCodeToGlyphId","glyphId","charCode","baseEncoding","isSymbolicFont","flags","isInternalFont","baseEncodingName","getEncoding","StandardEncoding","differences","glyphName","getGlyphsUnicode","standardGlyphName","ExpertEncoding","MacExpertEncoding","MacRomanEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","encodingName","getDingbatsGlyphsUnicode","getSpecialPUASymbols","mapSpecialUnicodeValues","nameLen","hexStr","UnicodeRanges","getUnicodeRangeFor","isRTLRangeFor","getNormalizedUnicodes","reverseIfRtl","chars","charsLength","SpecialCharRegExp","CategoryCache","getCharUnicodeCategory","cachedCategory","groups","category","isWhitespace","isZeroWidthDiacritic","isInvisibleFormatMark","clearUnicodeCaches","collectFields","_getPageIndex","_create","parameters","LinkAnnotation","TextAnnotation","fieldType","TextWidgetAnnotation","ButtonWidgetAnnotation","ChoiceWidgetAnnotation","SignatureWidgetAnnotation","WidgetAnnotation","PopupAnnotation","FreeTextAnnotation","LineAnnotation","SquareAnnotation","CircleAnnotation","PolylineAnnotation","PolygonAnnotation","CaretAnnotation","InkAnnotation","HighlightAnnotation","UnderlineAnnotation","SquigglyAnnotation","StrikeOutAnnotation","StampAnnotation","FileAttachmentAnnotation","Annotation","annotDict","fetchIfRefAsync","getRgbColor","color","defaultColor","rgbColor","ColorSpace","singletons","gray","getRgbItem","rgb","cmyk","getQuadPoints","quadPoints","quadPointsLists","jj","y","quadPointsList","minX","maxX","minY","maxY","mX","MX","mY","MY","quadPoint","MAX_VALUE","MIN_VALUE","getTransformMatrix","matrix","xRatio","yRatio","params","setTitle","setContents","setModificationDate","setFlags","setRectangle","setColor","setBorderStyle","setAppearance","setBorderAndBackgroundColors","_streams","appearance","annotationFlags","borderStyle","backgroundColor","borderColor","contentsObj","_contents","hasAppearance","modificationDate","hasOwnCanvas","kidIds","fieldName","_constructFieldName","_fallbackFontDict","_hasFlag","flag","_isViewable","_isPrintable","storageEntry","hidden","print","_parseStringHelper","dir","bidi","title","_title","contents","hasFlag","mk","AnnotationBorderStyle","dictType","setWidth","setStyle","setDashArray","array","setHorizontalCornerRadius","setVerticalCornerRadius","appearanceStates","normalAppearanceState","as","evaluator","isUsingOwnCanvas","appearanceDict","fallbackFontDict","strokeColor","fillColor","unshift","loopDict","width","style","dashArray","horizontalCornerRadius","verticalCornerRadius","maxWidth","maxHeight","forceStyle","allZeros","validNumber","radius","MarkupAnnotation","rawIRT","inReplyTo","rt","replyType","titleObj","creationDate","setCreationDate","hasPopup","richText","getRichTextAsHtml","_setDefaultAppearance","extra","blendMode","strokeAlpha","fillAlpha","pointsCallback","pointsArray","points","formDict","appearanceStreamDict","appearanceStream","gsDict","stateDict","annotationType","fieldValue","_decodeFormValue","defaultFieldValue","alternativeText","defaultAppearance","_defaultAppearance","defaultAppearanceData","parseDefaultAppearance","localResources","acroFormResources","appearanceResources","_fieldResources","mergedResources","fieldFlags","readOnly","hasFieldFlag","formValue","_hasText","_getAppearance","AP","originalTransform","newTransform","createCipherTransform","encryptString","_getSaveFieldResources","bufferOriginal","writeDict","bufferNew","isPassword","trim","lineCount","multiLine","defaultPadding","hPadding","totalHeight","totalWidth","_getFontData","fontSize","_computeFontSize","descent","vPadding","alignment","textAlignment","_getMultilineAppearance","encodedString","encodeString","comb","_getCombAppearance","renderedText","_renderText","_getTextWidth","text","charsToGlyphs","glyph","height","roundWithTwoDigits","LINE_FACTOR","textWidth","lines","cachedLines","line","encoded","glyphs","positions","getCharPositions","isTooBig","fsize","cache","_splitLine","numberOfLines","round","fontColor","createDefaultAppearance","shift","toFixed","localFont","acroFormFont","subFontDict","subResourcesDict","maximumLength","maxLen","combWidth","renderedComb","padding","scale","lastSpacePosInStringStart","lastSpacePosInStringEnd","lastSpacePos","startChunk","currentWidth","glyphWidth","defaultValue","multiline","charLimit","editable","checkedAppearance","uncheckedAppearance","checkBox","radioButton","pushButton","isTooltipOnly","_processCheckBox","_processRadioButton","_processPushButton","exportValue","buttonValue","savedAppearance","_saveCheckbox","_saveRadioButton","parentBuffer","parentTransform","_getDefaultCheckedAppearance","FONT_RATIO","xShift","yShift","customAppearance","normalAppearance","asValue","yes","exportValues","otherYes","fieldParent","fieldParentValue","parseDestDictionary","destDict","resultObj","option","isOptionArray","displayValue","combo","multiSelect","numItems","multipleSelection","items","DEFAULT_ICON_SIZE","state","stateModel","parentItem","parentSubtype","parentType","rawParent","parentId","parentRect","parentFlags","lineCoordinates","from","interiorColor","borderWidth","borderAdjust","controlPointsDistance","tan","xMid","yMid","xOffset","yOffset","vertices","rawVertices","Infinity","vertex","inkLists","rawInkLists","inkList","dy","xEnd","file","FileSpec","DefaultAppearanceEvaluator","EvaluatorPreprocessor","operation","fn","savedStatesDepth","colorCmd","resizeRgbImage","src","dest","w1","h1","w2","h2","alpha01","COMPONENTS","newIndex","oldIndex","xScaled","Uint16Array","w1Scanline","py","numComps","getRgb","srcOffset","destOffset","getRgbBuffer","count","bits","getOutputLength","inputLength","isPassthrough","isDefaultDecode","decodeMap","bpc","fillRgb","originalWidth","originalHeight","actualHeight","comps","rgbBuf","numComponentColors","needsResizing","allColors","colorMap","destPos","rgbPos","usesZeroToOneRange","_cache","localColorSpaceCache","parsedColorSpace","csName","csRef","getCached","localColorSpace","getByRef","getByName","parseAsync","cs","pdfFunctionFactory","_parse","cachedColorSpace","PatternCS","colorSpaces","resourcesCS","mode","baseCS","whitePoint","blackPoint","gamma","CalGrayCS","CalRGBCS","alt","altCS","hiVal","IndexedCS","tintFn","AlternateCS","LabCS","DeviceGrayCS","DeviceRgbCS","DeviceCmykCS","tmpBuf","Float32Array","baseNumComps","baseBuf","scaled","tinted","highVal","outputDelta","lookupPos","q","DeviceCmykCSClosure","convertToRgb","srcScale","k","CalGrayCSClosure","A","AG","G","L","YW","val","XW","ZW","XB","YB","ZB","CalRGBCSClosure","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","matrixProduct","convertToFlat","sourceWhitePoint","LMS","convertToD65","D65X","D65Y","D65Z","sRGBTransferFunction","adjustToRange","decodeL","compensateBlackPoint","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","normalizeWhitePointToFlat","XYZ_In","LMS_Flat","normalizeWhitePointToD65","LMS_D65","B","AGR","GR","BGG","GG","CGB","GB","MXA","MXB","MXC","Y","MYA","MYB","MYC","Z","MZA","MZB","MZC","XYZ","XYZ_Black","XYZ_D65","SRGB","LabCSClosure","fn_g","high1","low2","high2","maxVal","Ls","bs","amin","amax","bmin","bmax","M","N","DefaultPartialEvaluatorOptions","freeze","PatternType","TILING","SHADING","TEXT_CHUNK_BATCH_SIZE","deferred","normalizeBlendMode","parsingArray","maybeBM","TimeSlotManager","TIME_SLOT_DURATION_MS","CHECK_TIME_EVERY","check","checked","endTime","parsingType3Font","_fetchBuiltInCMapBound","fetchBuiltInCMap","_pdfFunctionFactory","PDFFunctionFactory","newOptions","newEvaluator","processed","nodes","node","graphicStates","graphicState","bm","xObjects","xObject","xResources","cachedData","response","ok","statusText","cMapData","compressionType","fetchStandardFontData","standardFontNameToFileName","getFontNameToFileMap","buildFormXObject","xobj","optionalContent","groupOptions","parseMarkedContentProps","group","isolated","knockout","groupSubtype","colorSpace","parseColorSpace","backdrop","_sendImgData","imgData","cacheGlobally","transfers","buildPaintImageXObject","image","isInline","localImageCache","imageRef","h","imageMask","interpolate","bitStrideLength","imgArray","PDFImage","createMask","imageIsFromDecodeStream","DecodeStream","inverseDecode","cached","softMask","mask","SMALL_IMAGE_DIMENSIONS","imageObj","res","createImageData","shouldCache","addDependency","buildImage","addByteSize","addPageIndex","setData","byteSize","handleSMask","stateManager","smaskContent","smaskOptions","transferObj","isPDFFunction","transferFn","transferMap","tmp","handleTransferFunction","tr","transferArray","transferMaps","numFns","numEffectfulFns","handleTilingType","pattern","patternDict","localTilingPatternCache","tilingOpList","patternResources","operatorListIR","getIR","tilingPatternIR","getTilingPatternIR","addDependencies","dependencies","fontArgs","fontRef","loadFont","translated","isType3Font","loadType3Data","type3Dependencies","TranslatedFont","loadedName","ErrorFont","handleText","isAddToPathSet","textRenderingMode","fillColorSpace","buildFontPaths","ensureStateFont","gState","localGStateCache","gStateRef","isSimpleGState","gStateObj","gStateKeys","errorFont","type3FontRefs","fontCapability","preEvaluatedFont","preEvaluateFont","fontRefIsRef","fontID","fontAliases","aliasFontRef","translateFont","translatedFont","fontType","stats","fontFile3","buildPath","parsingText","lastIndex","fnArray","opArgs","argsArray","parseShading","shading","localShadingPatternCache","Pattern","patternIR","handleColorN","patterns","patternName","pop","rawPattern","localTilingPattern","typeNum","_parseVisibilityExpression","nestingCounter","currentResult","MAX_NESTING","operator","raw","nestedResult","contentProperties","optionalContentType","expression","optionalContentGroups","groupIds","ocg","policy","EvalState","LocalImageCache","LocalColorSpaceCache","LocalGStateCache","LocalTilingPatternCache","xobjs","StateManager","preprocessor","timeSlotManager","closePendingRestoreOPS","argument","promiseBody","next","ready","stop","isValidName","localImage","resolveXObject","rejectXObject","globalImage","getData","combinedGlyphs","arrLength","arrItem","strokeColorSpace","shadingRes","patternId","localGStateObj","resolveGState","rejectGState","extGState","seenStyles","TextState","NormalizedUnicodes","textContent","styles","textContentItem","initialized","vertical","prevTransform","textAdvanceScale","spaceInFlowMin","spaceInFlowMax","trackingSpaceMin","negativeSpaceMax","hasEOL","TRACKING_SPACE_FACTOR","NEGATIVE_SPACE_FACTOR","SPACE_IN_FLOW_MIN_FACTOR","SPACE_IN_FLOW_MAX_FACTOR","showSpacedTextBuffer","emptyXObjectCache","emptyGStateCache","textState","getCurrentTextTransform","tsm","textHScale","textRise","isCharBBox","fontMatrix","glyphHeight","ctm","textMatrix","ensureTextContentItem","fallbackName","ascent","trm","hypot","scaleLineX","textLineMatrix","scaleCtmX","updateAdvanceScale","scaleFactor","runBidiTransform","textChunk","bidiResult","applyInverseRotation","compareWithLastPosition","currentTransform","posX","posY","shiftedX","shiftedY","lastPosX","lastPosY","advanceY","advanceX","textOrientation","sign","appendEOL","flushTextContentItem","addFakeSpaces","buildTextContentItem","extraSpacing","charSpacing","translateTextMatrix","vmetric","scaledDim","wordSpacing","glyphUnicode","transf","enqueueChunk","batch","enqueue","fontNameArg","fontSizeArg","leading","translateTextLineMatrix","carriageReturn","setTextLineMatrix","spaceFactor","elements","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","desiredSize","gStateFont","tag","mcid","extractDataStructures","baseDict","cidToGidBytes","toUnicodePromise","readToUnicode","toUnicode","composite","cidSystemInfo","registry","ordering","supplement","cidToGidMap","diffEncoding","defaultEncoding","isNonsymbolicFont","hasEncoding","buildToUnicode","builtToUnicode","readCidToGidMap","_simpleFontToUnicode","forceGlyphs","charcode","codeStr","fromCodePoint","hasIncludedToUnicodeMap","fallbackToUnicode","ToUnicodeMap","cMap","builtInCMap","IdentityCMap","ucs2CMapName","ucs2CMap","CMapFactory","useCMap","cid","ucs2","IdentityToUnicodeMap","firstChar","lastChar","cmapObj","cmap","getMap","token","glyphsData","glyphID","extractWidths","glyphsWidths","defaultWidth","glyphsVMetrics","defaultVMetrics","vmetrics","baseFontName","getBaseFontMetrics","buildCharCodeToWidth","isMonospace","firstWidth","isSerifFont","fontNameWoStyle","getSerifFonts","search","monospace","stdFontMap","getStdFontMap","lookupName","Metrics","getMetrics","glyphWidths","widthsByGlyphName","df","MurmurHash3_64","update","diffLength","diffBuf","diffEntry","uint8array","bufferLength","widthsBuf","compositeWidths","subWidthsBuf","hexdigest","getSymbolsFonts","isSimulatedFlags","xHeight","capHeight","standardFontName","getStandardFontName","newProperties","Font","baseFont","fontNameStr","baseFontStr","fontFile","length1","length2","length3","glyphScaleFactors","subtypeEntry","fixedPitch","scaleFactors","cidEncoding","fontChar","renderer","hasBuiltPath","getPathJs","accent","_evaluatorOptions","type3Loaded","sent","exportData","fallback","glyphCacheValues","type3Evaluator","loadCharProcsPromise","charProcs","fontResources","charProcOperatorList","isEmptyBBox","glyphStream","_removeType3ColorOperators","dummyOperatorList","_bbox","charBBox","gStateKey","stateStack","old","prev","f","opMap","getOPMap","numArgs","variableArgs","J","ri","gs","Q","cm","l","re","S","s","W","BT","ET","Tc","Tw","Tz","TL","Tf","Tr","Ts","Td","TD","Tm","Tj","TJ","d0","d1","CS","SC","SCN","sc","scn","RG","rg","sh","BI","ID","EI","Do","MP","BMC","BDC","EMC","BX","EX","BM","BD","true","fa","fal","fals","false","nu","nul","null","MAX_INVALID_PATH_OPS","parser","Parser","lexer","Lexer","nonProcessedArgs","_numInvalidPathOPS","getObj","opSpec","argsLength","preprocessCommand","BUILT_IN_CMAPS","MAX_MAP_RANGE","CMap","codespaceRanges","numCodespaceRanges","addCodespaceRange","low","high","mapCidRange","dstLow","mapBfRange","lastByte","nextCharCode","mapBfRangeToArray","mapOne","dst","contains","charCodeOf","readCharCode","out","nn","codespaceRange","kk","getCharCodeLength","isIdentityCMap","BinaryCMapReader","BinaryCMapReaderClosure","hexToInt","hexToStr","addHex","incHex","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","readByte","readNumber","last","readSigned","readHex","readHexNumber","stack","sp","bufferSize","readHexSigned","readString","len","extend","header","sequence","dataSize","ucs2DataSize","subitemsCount","CMapFactoryClosure","strToInt","expectString","expectInt","parseBfChar","parseBfRange","parseCidChar","parseCidRange","parseCodespaceRange","parseWMode","parseCMapName","parseCMap","previous","embeddedUseCMap","objLoop","extendCMap","createBuiltInCMap","useCodespaceRanges","parsedCMap","MAX_LENGTH_TO_CACHE","MAX_ADLER32_LENGTH","computeAdler32","bytesLength","allowStreams","imageCache","refill","buf1","buf2","tryShift","cipherTransform","makeInlineImage","makeStream","decryptString","findDefaultInlineStreamEnd","I","SPACE","LF","CR","NUL","startPos","maybeEIPos","followingBytes","knownCommands","nextObj","peekObj","endOffset","findDCTDecodeInlineStreamEnd","foundEOI","markerLength","inlineStreamSkipEI","findASCII85DecodeInlineStreamEnd","TILDE","GT","tildePos","maybeEI","findASCIIHexDecodeInlineStreamEnd","dictLength","beginInlineImagePos","filterZero","imageStream","imageBytes","initialStreamPos","dictBytes","cacheEntry","createStream","_findStreamLength","SCAN_BLOCK_LENGTH","skipToNextLine","nextChar","ENDSTREAM_SIGNATURE","actualLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","maybeLength","makeFilter","filterArray","paramsArray","xrefStats","PredictorStream","FlateStream","earlyChange","LZWStream","JpegStream","JpxStream","Ascii85Stream","AsciiHexStream","CCITTFaxStream","RunLengthStream","Jbig2Stream","specialChars","toHexDigit","_hexStringNumWarn","currentChar","peekChar","getNumber","eNotation","divideBy","baseValue","powerValue","powerValueSign","currentDigit","numParen","charBuffered","getName","previousCh","_hexStringWarn","MAX_HEX_STRING_NUM_WARN","getHexString","isFirstHex","firstDigit","secondDigit","comment","nextCh","knownCommandFound","possibleCommand","streamPos","getInt","linDict","allowZeroValue","getHints","hints","hintsLength","hint","obj1","obj2","obj3","endFirst","mainXRefEntriesOffset","input","readBlock","TILDA_CHAR","Z_LOWER_CHAR","eof","ensureBuffer","emptyBuffer","maybeMinBufferLength","_rawMinBufferLength","minBufferLength","requested","buffer2","bufEnd","streams","_onError","newLength","baseStreamsBuf","baseStreams","UPSTREAM_BLOCK_SIZE","maxDecodeLength","digit","ccittFaxDecoder","CCITTFaxDecoder","EndOfLine","EncodedByteAlign","Columns","Rows","EndOfBlock","BlackIs1","readNextChar","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoline","byteAlign","columns","rows","eoblock","black","codingLine","refLine","codingPos","row","nextLine2D","inputBits","inputBuf","outputBits","rowsDone","code1","_lookBits","_eatBits","refPos","blackPixels","code2","code3","_getTwoDimCode","_addPixels","_getBlackCode","_getWhiteCode","_addPixelsNeg","gotEOL","a1","_findTableCode","table","limitValue","codeLenCodeMap","Int32Array","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","cmf","flg","codeSize","codeBuf","getBits","getCode","codes","codeLen","codeVal","generateHuffmanTable","lengths","hdr","blockLen","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","what","repeatLength","dist","jbig2Image","Jbig2Image","globalsStream","globals","parseChunks","dataLength","Jbig2Error","ContextCache","getContexts","Int8Array","DecodingContext","ArithmeticDecoder","contextCache","decodeInteger","procedure","contexts","readBits","bit","readBit","decodeIAID","codeLength","SegmentTypes","CodingTemplates","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodeBitmapTemplate0","decodingContext","bitmap","contextLabel","pixel","row1","row2","OLD_PIXEL_MASK","decodeBitmap","mmr","templateIndex","prediction","at","Reader","decodeMMRBitmap","useskip","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","pseudoPixelContext","ltp","i0","j0","sltp","decodeRefinement","referenceBitmap","offsetX","offsetY","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceHeight","decodeSymbolDictionary","huffman","refinement","symbols","numberOfNewSymbols","numberOfExportedSymbols","huffmanTables","refinementTemplateIndex","refinementAt","huffmanInput","newSymbols","currentHeight","symbolCodeLength","tableB1","symbolWidths","getStandardTable","deltaHeight","tableDeltaHeight","firstSymbol","deltaWidth","tableDeltaWidth","numberOfInstances","decodeTextRegion","symbolId","rdx","rdy","symbol","bitmapSize","tableBitmapSize","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMin","xMax","bitmapWidth","symbolBitmap","exportedSymbols","currentFlag","totalSymbolsLength","runLength","defaultPixelValue","numberOfSymbolInstances","stripSize","inputSymbols","transposed","dsOffset","referenceCorner","combinationOperator","logStripSize","stripT","tableDeltaT","firstS","deltaT","deltaFirstS","tableFirstS","currentS","currentT","symbolIDTable","applyRefinement","symbolWidth","symbolHeight","rdw","rdh","offsetT","offsetS","s2","symbolRow","deltaS","tableDeltaS","decodePatternDictionary","patternWidth","patternHeight","maxPatternIndex","collectiveWidth","patternBitmap","decodeHalftoneRegion","regionWidth","regionHeight","enableSkip","gridWidth","gridHeight","gridOffsetX","gridOffsetY","gridVectorX","gridVectorY","regionBitmap","numberOfPatterns","pattern0","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","patternRow","regionRow","regionX","regionY","readSegmentHeader","segmentHeader","segmentType","typeName","deferredNonRetain","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","pageAssociation","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","RegionSegmentInformationFieldLength","genericRegionMmr","searchPatternLength","searchPattern","headerEnd","readSegments","segments","segment","randomAccess","processSegment","visitor","atLength","dictionary","dictionaryFlags","huffmanDHSelector","huffmanDWSelector","bitmapSizeSelector","aggregationInstancesSelector","bitmapCodingContextUsed","bitmapCodingContextRetained","refinementTemplate","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","huffmanFS","huffmanDS","huffmanDT","huffmanRefinementDW","huffmanRefinementDH","huffmanRefinementDX","huffmanRefinementDY","huffmanRefinementSizeSelector","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","lossless","requiresBuffer","combinationOperatorOverride","callbackName","processSegments","parseJbig2Chunks","SimpleSegmentVisitor","parseJbig2","numberOfPages","currentPageInfo","bitPacked","onPageInformation","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","arguments","onSymbolDictionary","currentSegment","referredSegments","getSymbolDictionaryHuffmanTables","customTables","referredSymbols","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","onImmediateHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","decodeTablesSegment","HuffmanLine","lineData","isOOB","rangeLow","prefixLength","rangeLength","prefixCode","isLowerRange","HuffmanTreeNode","children","isLeaf","buildTree","decodeNode","reader","htOffset","HuffmanTable","prefixCodesDone","assignPrefixCodes","rootNode","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","standardTablesCache","currentByte","numBits","getCustomHuffmanTable","currentIndex","numberOfSymbols","runCodesTable","repeatedLength","numberOfRepeats","customIndex","tableAggregateInstances","endOfBlock","lookForEOFLimit","QeTable","qe","nmps","nlps","switchFlag","bp","dataEnd","chigh","clow","byteIn","ct","cx_index","cx_mps","qeTableIcx","qeIcx","jpegOptions","decodeTransform","colorTransform","decodeArr","forceRGB","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","JpegImage","drawWidth","drawHeight","isSourcePDF","JpegError","DNLMarkerError","scanLines","EOIMarkerError","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","getBlockBufferOffset","col","blocksPerLine","decodeScan","frame","components","resetInterval","spectralStart","spectralEnd","successivePrev","successive","parseDNLMarker","mcusPerLine","progressive","startOffset","bitsData","bitsCount","nextByte","maybeScanLines","blockRow","precision","decodeHuffman","receive","receiveAndExtend","decodeBaseline","blockOffset","huffmanTableDC","diff","blockData","pred","rs","huffmanTableAC","z","decodeDCFirst","decodeDCSuccessive","eobrun","decodeACFirst","successiveACState","successiveACNextValue","decodeACSuccessive","offsetZ","decodeMcu","mcu","mcuRow","mcuCol","blockCol","decodeBlock","componentsLength","decodeFn","fileMarker","mcuExpected","blocksPerColumn","mcusPerColumn","mcuToRead","findNextFileMarker","invalid","marker","quantizeAndInverse","blockBufferOffset","qt","quantizationTable","v0","v3","v4","v5","v6","v7","p0","p5","p6","p7","buildComponentData","computationBuffer","Int16Array","currentPos","maxPos","newPos","currentMarker","newMarker","_decodeTransform","_colorTransform","dnlScanLines","readDataBlock","prepareComponents","samplesPerLine","maxH","maxV","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","markerLoop","appData","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","extended","sofScanLines","componentIds","componentsCount","componentId","qId","quantizationId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","componentIndex","tableSpec","successiveApproximation","nextFileMarker","output","scaleX","scaleY","numComponents","_getLinearizedBlockData","componentScaleX","componentScaleY","blocksPerScanline","xScaleBlockOffset","mask3LSB","lastComponentScaleX","_isColorConversionNeeded","_convertYccToRgb","Cb","Cr","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","rgbData","grayColor","jpxImage","JpxImage","tileCount","tiles","tileComponents","tileWidth","tileHeight","tileLeft","left","tileTop","top","srcPosition","dataPosition","imgRowSize","tileRowSize","rowBytes","JpxError","SubbandsGainLog2","LL","LH","HL","HH","failOnCorruptedImage","head","parseCodestream","headerSize","lbox","tbox","jumpDataLength","method","colorspace","headerType","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","context","doNotRecover","sqcd","spqcds","spqcdSize","scalarExpounded","tile","mainHeader","siz","XTsiz","YTsiz","XTOsiz","YTOsiz","isSigned","XRsiz","YRsiz","calculateComponentDimensions","SIZ","calculateTileGrids","QCC","COC","qcd","noQuantization","guardBits","spqcd","epsilon","mu","SPqcds","QCD","currentTile","qcc","cqcc","cod","scod","entropyCoderWithCustomPrecincts","sopMarkerUsed","ephMarkerUsed","progressionOrder","layersCount","multipleComponentTransform","decompositionLevelsCount","xcb","ycb","blockStyle","selectiveArithmeticCodingBypass","resetContextProbabilities","terminationOnEachCodingPass","verticallyStripe","predictableTermination","segmentationSymbolUsed","reversibleTransformation","precinctsSizes","precinctsSize","PPx","PPy","unsupported","COD","partIndex","partsCount","initializeTile","buildPackets","parseTilePackets","transformComponents","numXtiles","numYtiles","tx0","ty0","tx1","ty1","tileComponent","tcx0","tcy0","tcx1","tcy1","getBlocksDimensions","codOrCoc","codingStyleParameters","xcb_","ycb_","buildPrecincts","resolution","dimensions","precinctWidth","precinctHeight","isZeroRes","resLevel","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","trx1","trx0","numprecinctshigh","try1","try0","numprecincts","precinctParameters","buildCodeblocks","subband","codeblockWidth","codeblockHeight","cbx0","tbx0","cby0","tby0","cbx1","tbx1","cby1","tby1","codeblocks","precincts","codeblock","precinctNumber","cbx","cby","tbx0_","tby0_","tbx1_","tby1_","pi","pj","subbandType","Lblock","precinct","cbxMin","cbxMax","cbyMin","cbyMax","codeblockParameters","numcodeblockwide","numcodeblockhigh","createPacket","layerNumber","precinctCodeblocks","subbands","LayerResolutionComponentPositionIterator","tileIndex","codingStyleDefaultParameters","maxDecompositionLevelsCount","nextPacket","JpxImage_nextPacket","resolutions","packet","ResolutionLayerComponentPositionIterator","ResolutionPositionComponentLayerIterator","maxNumPrecinctsInLevel","maxNumPrecincts","PositionComponentResolutionLayerIterator","getPrecinctSizesInImageScale","precinctsIterationSizes","px","maxNumHigh","maxNumWide","sizeInImageScale","getPrecinctIndexIfExist","ComponentPositionResolutionLayerIterator","pxIndex","pyIndex","precinctIterationSizes","minWidth","minHeight","startPrecinctRowIndex","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","widthCurrentResolution","heightCurrentResolution","blocksDimensions","bscale","resolutionSubbands","packetsIterator","skipNextBit","skipMarkerIfEqual","skipBytes","alignToByte","readCodingpasses","queue","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","valueReady","zeroBitPlanesTree","included","inclusionTree","InclusionTree","TagTree","nextLevel","incrementValue","zeroBitPlanes","codingpasses","codingpassesLog2","codedDataLength","packetItem","copyCoefficients","coefficients","levelWidth","levelHeight","delta","mb","reversible","right","bottom","blockWidth","blockHeight","bitModel","BitModel","currentCodingpassType","dataItem","encodedData","setDecoder","runSignificancePropagationPass","runMagnitudeRefinementPass","runCleanupPass","checkSegmentationSymbol","coefficentsSign","magnitude","coefficentsMagnitude","bitsDecoded","magnitudeCorrection","nb","interleave","levelOffset","transformTile","quantizationParameters","ReversibleTransform","IrreversibleTransform","subbandCoefficients","gainLog2","calculate","resultImages","transformedTiles","tile0","fourComponents","y0items","y1items","y2items","y3items","component0","qcdOrQcc","levelsLength","levels","currentLevel","stopValue","propagateValues","levelIndex","currentValue","BitModelClosure","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","contextLabelTable","coefficientCount","neighborsSignificance","processingFlags","setNeighborsSignificance","column","labels","processedInverseMask","processedMask","firstMagnitudeBitMask","i1","decision","decodeSignBit","contribution","sign0","sign1","significance1","decoded","horizontalContribution","width4","index0","indexNext","significance","oneRowDown","twoRowsDown","threeRowsDown","iNext","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","Transform","u0","ll","iterate","j1","j2","hl_lh_hh","llWidth","llHeight","llItems","u","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","current","alpha","beta","K_","bitsCached","maxLzwDictionarySize","lzwState","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","lastCode","blockSize","decodedSizeDelta","estimatedDecodedSize","prevCode","decodedLength","currentBufferLength","hasPrev","predictor","readBlockTiff","readBlockPng","colors","pixBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","prevRow","up","upLeft","pa","pb","pc","repeatHeader","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","adjustWidths","adjustToUnicode","amend","amendFallbackToUnicode","Glyph","originalCharCode","operatorListId","isSpace","isInFont","matchesForCache","int16","writeSignedInt16","signedInt16","int32","string16","safeString16","isTrueTypeFile","isTrueTypeCollectionFile","isOpenTypeFile","isType1File","isCFFFile","getFontFileType","fileType","fileSubtype","applyStandardFontGlyphMap","glyphMap","buildToFontChar","toFontChar","convertCidString","shouldThrow","adjustMapping","hasGlyph","newGlyphZeroId","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","fontCharCode","getRanges","numGlyphs","fontGetRangesSort","codeIndices","createCmapTable","numTables","bmpLength","trailingRangesCount","segCount","searchParams","OpenTypeFileBuilder","getSearchParams","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","bias","contiguous","startCode","format314","rangeShift","format31012","header31012","validateOS2Table","os2","selection","usWinAscent","createOS2Table","charstrings","override","unitsPerEm","yMax","yMin","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","ascentScaled","typoAscent","typoDescent","winAscent","winDescent","createPostTable","createPostscriptName","createNameTable","proto","strings","stringsUnicode","strBufUnicode","names","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","psName","mimetype","missingFile","_charsCache","_glyphCache","baseName","serifFonts","namePart","fallbackToSystemFont","cff","CFFFont","Type1Font","convert","checkAndRepair","isOpenType","seacMap","FontRendererFactory","extraProperties","exportDataProperties","nonStdFontMap","getNonStdFontMap","isMappedToStandardFont","fontBasicMetricsMap","getFontBasicMetrics","bold","italic","isNarrow","remeasure","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","unicodeCharCode","VALID_TABLES","readTables","tables","hhea","hmtx","maxp","post","readTableEntry","checksum","previousPosition","readOpenTypeHeader","ttf","searchRange","entrySelector","readTrueTypeCollectionHeader","ttc","ttcTag","majorVersion","minorVersion","numFonts","offsetTable","dsigTag","dsigLength","dsigOffset","readTrueTypeCollectionData","fontNameParts","fallbackData","potentialHeader","potentialTables","readNameTable","nameEntry","part","readCmapTable","platformId","encodingId","mappings","hasShortCmap","potentialTable","canBreak","useTable","correctlySorted","nextBytes","nextPlatformId","format","subHeaderKeys","maxSubHeaderKey","subHeaderKey","subHeaders","entryCount","idDelta","idRangePos","segIndex","offsetsCount","offsetIndex","rangeOffset","offsets","sanitizeMetrics","headTable","dupFirstEntry","caretOffset","numOfMetrics","macStyle","numOfSidebearings","numMissing","sanitizeGlyph","sourceStart","sourceEnd","destStart","hintsValid","glyphProfile","sizeOfInstructions","glyf","contoursCount","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","xLength","yLength","xyLength","repeat","glyphDataLength","sanitizeHead","locaLength","indexToLocFormat","numGlyphsPlusOne","sanitizeGlyphLocations","loca","isGlyphLocationsLong","maxSizeOfInstructions","itemSize","itemDecode","itemEncode","fontItemDecodeLong","fontItemEncodeLong","fontItemDecode","fontItemEncode","numGlyphsOut","locaDataSize","locaData","oldGlyfData","oldGlyfDataLength","newGlyfData","locaEntries","missingGlyphs","writeOffset","simpleGlyph","firstEntryLength","readPostScriptTable","propertiesObj","maxpNumGlyphs","valid","glyphNameIndexes","customNames","stringLength","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","records","NAME_RECORD_LENGTH","platform","language","record","nameIndex","TTOpsStackDeltas","sanitizeTTProgram","ttContext","funcId","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","inFDEF","ifLevel","inELSE","op","functionsUsed","functionsStackDeltas","newStackLength","functionsDefined","stackTop","stackDelta","NaN","foldTTTable","checkInvalidFunctions","maxFunctionDefs","sanitizeTTPrograms","fpgm","prep","cvt","cvtData","ttcData","cffFile","isTrueType","isComposite","GlyfTable","glyfTable","locaTable","isLocationLong","write","advanceWidth","lsb","maxZones","glyphsInfo","metricsOverride","isCidToGidMapEmpty","cmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","cmapMappingsLength","forcePostTable","unicodeOrCharCode","glyphZeroId","newMapping","CFFParser","duplicateFirstGlyph","compiler","CFFCompiler","compile","namePrototype","builder","tableTag","addTable","toArray","mapping","getGlyphMapping","newCharCodeToGlyphId","hasGlyphId","getCharCodes","charCodes","createCharCode","seacs","charset","getCharset","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","baseFontCharCode","accentFontCharCode","fontFieldsHmtx","cffWidths","charstring","spaceWidth","possibleSpaceReplacements","_charToGlyph","widthCode","buffers","currentBuf","hasCurrentBufErrors","getCharCode","charCodeLength","MAX_SUBR_NESTING","CFFStandardStrings","NUM_STANDARD_CFF_STRINGS","CFFParserClosure","CharstringValidationData","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackFn","stack_div","seacAnalysisEnabled","CFF","parseHeader","parseIndex","endPos","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","parseDict","topDict","createDict","CFFTopDict","parseNameIndex","parseStringIndex","parsePrivateDict","isCIDFont","hasName","charStringOffset","charStringIndex","fontBBox","fdArrayIndex","dictRaw","fontDict","fdArray","parseCharsets","fdSelect","parseFDSelect","parseEncoding","charStringsAndSeacs","parseCharStrings","charStrings","localSubrIndex","privateDict","subrsIndex","hdrSize","offSize","CFFHeader","parseOperand","parseFloatOperand","operands","cffIndex","CFFIndex","offsetSize","offsetStart","offsetEnd","CFFStrings","Type","cffDict","pair","setByKey","parseCharString","callDepth","stackSize","validationCommand","subrNumber","hasVStems","firstStackClearing","localSubrToUse","privateDictToUse","fdIndex","getFDIndex","nominalWidth","emptyPrivateDictionary","parentDict","CFFPrivateDict","privateOffset","removeByName","privateDictEnd","dictData","subrsOffset","relativeOffset","CFFCharset","CFFCharsetPredefinedTypes","ISO_ADOBE","ISOAdobeCharset","EXPERT","ExpertCharset","EXPERT_SUBSET","ExpertSubsetCharset","predefined","readSupplement","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","CFFEncoding","CFFFDSelect","glyphZero","getSID","objects","CFFDict","keyToNameMap","nameToKeyMap","defaults","types","opcodes","order","valueLength","setByName","createTables","layout","CFFTopDictClosure","CFFPrivateDictClosure","CFFOffsetTracker","isTracking","track","location","setEntryLocation","dataOffset","offset1","offset2","offset3","offset4","CFFCompiler_add","compileHeader","compileNameIndex","xuid","compiled","compileTopDicts","topDictTracker","trackers","compileStringIndex","compileIndex","compileEncoding","compileCharset","compileCharStrings","compileFDSelect","fontDictTrackers","compilePrivateDicts","encodeNumber","encodeInteger","encodeFloat","EncodeFloatRegExp","nibbles","sanitizedName","dicts","removeCidKeys","fontDictTracker","fontDictData","compileDict","privateDictTracker","privateDictData","outputLength","subrs","offsetTracker","compileGlobalSubrIndex","writeByteArray","charStringsIndex","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","compileTypedArray","lastFD","currentFD","numRanges","lastOffset","Courier","ZapfDingbats","ArialNarrow","ArialBlack","CourierNew","CourierNewPSMT","TimesNewRoman","TimesNewRomanPS","TimesNewRomanPSMT","Calibri","CenturyGothic","ComicSansMS","LucidaConsole","NuptialScript","SegoeUISymbol","Wingdings","Albertus","Aldus","Alexandria","Algerian","Antiqua","Apex","Arno","Aster","Aurora","Baskerville","Bell","Bembo","Benguiat","Bodoni","Bookman","Calisto","Calvert","Capitals","Cambria","Cartier","Caslon","Catull","Centaur","Chaparral","Cheltenham","Clarendon","Clearface","Cochin","Colonna","Constantia","Corona","Ecotype","Egyptienne","Elephant","Excelsior","Fairfield","Folkard","Footlight","FreeSerif","Garamond","Gentium","Georgia","Gloucester","Granjon","Heather","Hercules","Hiroshige","Imprint","Janson","Joanna","Korinna","Lexicon","LiberationSerif","Literaturnaya","Lucida","Melior","Memphis","Miller","Minion","Modern","Palatino","Perpetua","Plantin","Playbill","Renault","Requiem","Rockwell","Roman","Sabon","Scala","Seagull","Sistina","Souvenir","STIX","Sylfaen","Times","Trajan","Utopia","Versailles","Wanted","Weiss","Windsor","XITS","Dingbats","_createBuiltInEncoding","charsets","getUint32","getInt16","getInt8","getFloat214","getSubroutineBias","numSubrs","parseCmap","idOffset","parseCff","gsubrs","isCFFCIDFont","parseGlyfTable","lookupCmap","compileGlyf","cmds","quadraticCurveTo","xa","ya","numberOfContours","arg1","arg2","scale01","scale10","subglyph","endPtsOfContours","instructionLength","numberOfPoints","startPoint","contour","compileCharString","charStringCode","bezierCurveTo","stems","stackClean","xb","yb","subrCode","subrsBias","achar","bchar","glyphNameMap","gsubrsBias","NOOP","CompiledFont","compiledGlyphs","compiledCharCodeToGlyphId","compileGlyph","compileGlyphImpl","TrueTypeCompiled","Type2Compiled","cffInfo","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","H","P","R","T","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","o","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","Idieresis","eacute","abreve","uhungarumlaut","ecaron","Ydieresis","divide","Yacute","Acircumflex","aacute","Ucircumflex","yacute","scommaaccent","ecircumflex","Uring","Udieresis","aogonek","Uacute","uogonek","Edieresis","Dcroat","commaaccent","copyright","Emacron","ccaron","aring","Ncommaaccent","lacute","agrave","Tcommaaccent","Cacute","atilde","Edotaccent","scaron","scedilla","iacute","lozenge","Rcaron","Gcommaaccent","ucircumflex","acircumflex","Amacron","rcaron","ccedilla","Zdotaccent","Thorn","Omacron","Racute","Sacute","dcaron","Umacron","uring","threesuperior","Ograve","Agrave","Abreve","multiply","uacute","Tcaron","partialdiff","ydieresis","Nacute","icircumflex","Ecircumflex","adieresis","edieresis","cacute","nacute","umacron","Ncaron","Iacute","plusminus","brokenbar","registered","Gbreve","Idotaccent","summation","Egrave","racute","omacron","Zacute","Zcaron","greaterequal","Eth","Ccedilla","lcommaaccent","tcaron","eogonek","Uogonek","Aacute","Adieresis","egrave","zacute","iogonek","Oacute","oacute","amacron","sacute","idieresis","Ocircumflex","Ugrave","Delta","thorn","twosuperior","Odieresis","igrave","ohungarumlaut","Eogonek","dcroat","threequarters","Scedilla","lcaron","Kcommaaccent","Lacute","trademark","edotaccent","Igrave","Imacron","Lcaron","onehalf","lessequal","ocircumflex","ntilde","Uhungarumlaut","Eacute","emacron","gbreve","onequarter","Scaron","Scommaaccent","Ohungarumlaut","degree","ograve","Ccaron","ugrave","radical","Dcaron","rcommaaccent","Ntilde","otilde","Rcommaaccent","Lcommaaccent","Atilde","Aogonek","Aring","Otilde","zdotaccent","Ecaron","Iogonek","kcommaaccent","minus","Icircumflex","ncaron","tcommaaccent","logicalnot","odieresis","udieresis","notequal","gcommaaccent","eth","zcaron","ncommaaccent","onesuperior","imacron","Euro","universal","existential","suchthat","asteriskmath","congruent","Alpha","Beta","Chi","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","therefore","perpendicular","radicalex","chi","phi","eta","iota","phi1","kappa","lambda","omicron","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","similar","Upsilon1","minute","infinity","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","proportional","equivalence","approxequal","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","notelement","gradient","registerserif","copyrightserif","trademarkserif","product","dotmath","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","angleleft","registersans","copyrightsans","trademarksans","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt","apple","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","ON_CURVE_POINT","X_SHORT_VECTOR","Y_SHORT_VECTOR","REPEAT_FLAG","X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR","Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR","OVERLAP_SIMPLE","ARG_1_AND_2_ARE_WORDS","ARGS_ARE_XY_VALUES","WE_HAVE_A_SCALE","MORE_COMPONENTS","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_INSTRUCTIONS","DataView","byteOffset","getSize","totalSize","ArrayBuffer","setUint32","setUint16","locaIndex","simple","composites","GlyphHeader","CompositeGlyph","SimpleGlyph","spos","factor","xMiddle","setInt16","Contour","xCoordinates","yCoordinates","contours","instructions","endPt","numberOfPt","getUint8","allXCoordinates","pointFlags","endPtsOfContoursIndex","lastCoordinate","lastX","lastY","setUint8","argument1","argument2","writeInt16","writeInt32","writeData","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","sfnt","entriesCount","entrySize","maxPower2","tablesNames","tableName","tableOffsets","paddedLength","quad","findBlock","streamBytes","startIndex","streamBytesLength","getHeaderBlock","suggestedLength","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","getEexecBlock","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","eexecBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","headerBlockParser","Type1Parser","extractFontHeader","eexecBlock","eexecBlockParser","extractFontProgram","type2Charstrings","getType2Charstrings","getType2Subrs","wrap","getSeacs","charstringsLen","type1Charstrings","type1Subrs","type2Subrs","charsetArray","privateData","subrIndex","HINTING_ENABLED","Type1CharString","Type1CharStringClosure","COMMAND_MAP","hstem","vstem","vmoveto","rlineto","hlineto","vlineto","rrcurveto","callsubr","flex","drop","endchar","rmoveto","hmoveto","vhcurveto","hvcurveto","flexing","wx","sbx","executeCommand","asb","sby","num2","num1","flexArgs","howManyArgs","command","keepStack","stackLength","Type1ParserClosure","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","isHexDigit","decrypt","discardNumber","c1","c2","decrypted","decryptAscii","digit1","digit2","isSpecial","encrypted","isBinary","readNumberArray","getToken","readInt","readBoolean","prevChar","readCharStrings","lenIV","program","blueArray","charString","charStringObject","encodingArg","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","RadialAxialShading","MeshShading","DummyShading","BaseShading","SMALL_NUMBER","coordsArr","shadingType","t0","domainArr","extendStart","extendEnd","extendArr","r1","r2","distance","fnObj","createFromArray","NUMBER_OF_SAMPLES","colorStops","ratio","cssColor","background","r0","MeshStreamReader","tmpCompsBuf","csNumComps","tmpCsCompsBuf","colorFn","hasData","align","readFlag","bitsPerFlag","readCoordinate","bitsPerCoordinate","yi","readComponents","ci","getB","getBClosure","buildB","lut","t_","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","TRIANGLE_DENSITY","coords","figures","decodeContext","patchMesh","_decodeType4Shading","verticesPerRow","_decodeType5Shading","_decodeType6Shading","_decodeType7Shading","_updateBounds","_buildFigureFromPatch","_packData","operators","ps","verticesLeft","coord","tmp1","tmp2","tmp3","tmp4","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","splitYBy","figureCoords","figureColors","cl","cr","c0","c3","bRow","bCol","newColor","coordsPacked","xy","colorsPacked","xstep","ystep","paintType","tilingType","cachedFunction","parsedFunction","PDFFunction","parseArray","fnRef","localFunction","_localFunctionCache","LocalFunctionCache","toNumberArray","getSampleArray","outputSize","bps","sampleMul","strBytes","strIdx","constructSampled","constructInterpolated","constructStiched","constructPostScript","toMultiArray","xmin","xmax","ymin","ymax","domain","inputSize","encode","samples","constructSampledFn","cubeVertices","cubeN","Float64Array","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","constructInterpolatedFn","fnRefs","fns","constructStichedFn","constructStichedFromIRClip","dmin","dmax","rmin","rmax","PostScriptLexer","PostScriptParser","PostScriptCompiler","numOutputs","numInputs","PostScriptEvaluator","MAX_CACHE_SIZE","cache_available","constructPostScriptFn","cachedValue","execute","stackIndex","bound","fnDict","PostScriptStack","MAX_STACK_SIZE","initialStack","call","copy","roll","counter","atan","cos","LN10","sin","PostScriptCompilerClosure","AstNode","visit","AstArgument","visitArgument","AstLiteral","visitLiteral","AstBinaryOperation","visitBinaryOperation","AstMin","visitMin","AstVariable","visitVariable","AstVariableDefinition","variable","visitVariableDefinition","ExpressionBuilderVisitor","parts","literal","definition","buildAddOperation","buildMulOperation","buildSubOperation","buildMinOperation","lastRegister","ast1","ast2","tmpVar","instruction","statementBuilder","expr","nextToken","accept","expect","PostScriptTokenTypes","LBRACE","parseBlock","RBRACE","NUMBER","OPERATOR","parseCondition","conditionLocation","IF","jumpLocation","endOfTrue","IFELSE","PostScriptToken","opCache","getOperator","opValue","BaseLocalCache","_onlyRefs","onlyRefs","_nameRefMap","_imageMap","_imageCache","GlobalImageCache","NUM_PAGES_THRESHOLD","MIN_IMAGES_TO_CACHE","MAX_BYTE_SIZE","_refCache","_byteSize","imageData","_cacheLimitReached","pageIndexSet","onlyData","baseTypes","arabicTypes","isOdd","isEven","findUnequal","setValues","reverseValues","temp","createBidiText","isLTR","startLevel","strLength","numBidi","charType","sor","eor","lastType","before","after","highestLevel","lowestOddLevel","SEED","MASK_HIGH","MASK_LOW","seed","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hex1","hex2","addState","parentState","checkFn","iterateFn","processFn","handlePaintSolidColorImageMask","iFirstSave","iFirstPIMXO","InitialState","iterateInlineImageGroup","iCurr","foundInlineImageGroup","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","curr","iFirstTransform","iFirstPIIXO","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","kind","iterateImageMaskGroup","foundImageMaskGroup","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","isSameImage","iTransform","transformArgs","firstPIMXOArg0","firstTransformArg0","firstTransformArg1","firstTransformArg2","firstTransformArg3","iPIMXO","images","maskParams","iterateImageGroup","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iterateShowTextGroup","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","NullOptimizer","_optimize","QueueOptimizer","lastProcessed","CHUNK_SIZE","CHUNK_SIZE_ABOUT","streamSink","_streamSink","optimizer","_totalLength","_resolved","_transfers","decodeAndClamp","addend","coefficient","resizeImageMask","isMask","matte","needsDecode","decodeCoefficients","decodeAddends","isIndexed","maskDict","smaskData","maskData","computedLength","haveFullData","decodeBuffer","getComponents","bufferPos","rowComps","loop1End","loop2End","remainingBits","fillOpacity","rgbaBuf","alphaBuf","sw","fillGrayBuffer","opacity","imageOffset","maskOffset","undoPreblend","matteRgb","matteR","matteG","matteB","forceRGBA","getImageBytes","newArray","imageLength","maybeUndoPreblend","fetchDestination","_catDict","getCatalogObj","toplevelPagesDict","_actualNumPages","metadata","streamRef","encryptMetadata","MetadataParser","markInfo","_readMarkInfo","Marked","UserProperties","Suspects","_readStructTreeRoot","root","StructTreeRoot","init","pagesObj","documentOutline","_readDocumentOutline","blackColor","outlineDict","outlineItem","unsafeUrl","permissions","_readPermissions","optionalContentConfig","defaultConfig","groupsData","groupRefs","groupRef","_readOptionalContentConfig","contentGroupRefs","parseOnOff","onParsed","parseOrder","nestedLevels","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","MAX_NESTED_LEVELS","nestedName","creator","baseState","off","_pagesCount","destinations","_readDests","dests","NameTree","getAll","getDestination","allDest","pageLabels","_readPageLabels","prefix","numberTree","NumberTree","nums","currentLabel","labelDict","st","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","charBuf","pageLayout","pageMode","viewerPreferences","prefs","prefValue","openAction","attachments","nameTree","fs","_collectJavaScript","appendIfJavaScriptDict","jsDict","translatedFonts","nodesToVisit","visitedNodes","pagesRef","currentPageIndex","currentNode","posInKids","addPageDict","addPageError","queueItem","kidObj","getPageIndex","cachedPageIndex","pagesBeforeRef","kidRef","parentRef","kidPromises","actionType","actionName","include","resetForm","urlDict","remoteDest","JSON","stringify","namedAction","jsAction","jsURL","NameOrNumberTree","_type","kidsOrEntries","loopCount","MAX_LEVELS","limits","currentKey","pickPlatformItem","description","contentAvailable","_filename","contentRef","fileObj","_repair","SimpleXMLParser","lowerCaseName","xmlDocument","parseFromString","_metadataMap","_data","d2","d3","_getSequence","nodeName","childNodes","_parseArray","hasChildNodes","seqNode","rdf","documentElement","firstChild","nextSibling","desc","parsedData","rawData","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","isWhitespaceString","XMLParserBase","_resolveEntities","onResolveEntity","_parseContent","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","parsed","_parseProcessingInstruction","attrStart","parseXml","ch2","onEndElement","onPi","onComment","onCdata","q2","complexDoctype","doctypeContent","onDoctype","isClosed","onBeginElement","onText","SimpleDOMNode","nodeValue","parentNode","child","searchNode","paths","siblingPos","dump","attribute","hasAttributes","_currentFragment","_stack","_errorCode","_hasAttributes","_lowerCaseName","lastElement","MAX_DEPTH","StructElementType","PAGE_CONTENT","STREAM_CONTENT","OBJECT","ELEMENT","rootDict","roleMap","readRoleMap","roleMapDict","StructElementNode","parseKids","role","nameObj","pageObjId","objRef","parseKid","StructElement","kidDict","refObjId","parentTree","parentArray","addNode","addTopLevelNode","nodeToSerializable","kidElement","mayHaveChildren","addChildren","rawValue","refSet","_walk","nodesToRevisit","pendingRequests","foundMissingData","writeValue","writeStream","string","writeArray","numberToString","roundedValue","writeInt","writeString","computeMD5","filesize","time","md5Buffer","md5BufferLen","writeXFADataForAcroform","xml","updateXFA","oldXfa","newXfa","refForXrefTable","baseOffset","xrefTableData","indexes","maxOffset","md5","sizes","structSize","tableLength","bufferLen","footer","objOffset","ARCFourCipher","keyLength","encryptBlock","decryptBlock","calculateMD5Closure","h0","h3","padded","rotateArg","Word64","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","not","lowAdd","highAdd","copyTo","calculateSHA256","calculateSHA256Closure","rotr","maj","sigmaPrime","littleSigma","littleSigmaPrime","h4","h5","h6","h7","calculateSHA512","calculateSHA512Closure","mode384","calculateSHA384","NullCipher","AESBaseCipher","_s","_inv_s","_mix","_mixCol","bufferPosition","_expandKey","cipherKey","_decrypt","_keySize","_cyclesOfRepetition","s0","s1","s3","_encrypt","_decryptBlock2","finalize","sourceLength","iv","plain","_key","lastBlock","psLen","cipher","AES128Cipher","_rcon","rcon","t3","t4","AES256Cipher","PDF17","checkOwnerPassword","ownerValidationSalt","userBytes","ownerPassword","hashData","checkUserPassword","userValidationSalt","userPassword","getOwnerKey","ownerKeySalt","ownerEncryption","getUserKey","userKeySalt","userEncryption","PDF20","PDF20Closure","calculatePDF20Hash","combinedLength","combinedArray","remainder","concatBytes","CipherTransform","stringCipherConstructor","streamCipherConstructor","StringCipherConstructor","StreamCipherConstructor","DecryptStream","cipherTransformDecryptStream","strLen","pad","crypto","getRandomValues","random","CipherTransformFactory","CipherTransformFactoryClosure","defaultPasswordBytes","createEncryptionKey20","revision","uBytes","perms","passwordLength","pdfAlgorithm","prepareKeyData","fileId","hashDataSize","keyLengthInBytes","encryptionKey","checkData","derivedKey","decodeUserPassword","identityName","buildObjectKey","isAes","buildCipherConstructor","cf","cryptFilter","cfm","cipherTransformFactoryBuildCipherConstructorNone","cipherTransformFactoryBuildCipherConstructorV2","cipherTransformFactoryBuildCipherConstructorAESV2","cipherTransformFactoryBuildCipherConstructorAESV3","algorithm","cfDict","streamCryptoName","handlerDict","fileIdBytes","passwordBytes","decodedPassword","stmf","strf","eff","cipherConstructor","buildCipherCipherConstructor","nextChunk","hasMoreData","XFAParser","_createDocument","binder","Binder","form","dataHandler","DataHandler","$globalData","_createPagesHelper","iterator","$toPages","nextIteration","setTimeout","_createPages","pages","dims","fontFinder","FontFinder","typeface","usedTypefaces","stripQuotes","storage","serialize","rc","XhtmlNamespace","$nodeName","newRoot","body","$appendChild","$toHTML","success","html","class","attr","$text","$acceptWhitespace","$addHTML","$childrenToHTML","$clean","$cleanPage","$cleanup","$clone","$consumed","$content","$data","$dump","$extra","$finalize","$flushHTML","$getAttributeIt","$getAttributes","$getAvailableSpace","$getChildrenByClass","$getChildrenByName","$getChildrenByNameIt","$getDataValue","$getExtra","$getRealChildrenByNameIt","$getChildren","$getContainedChildren","$getNextPage","$getSubformParent","$getParent","$getTemplateRoot","$hasSettableValue","$ids","$indexOf","$insertAt","$isCDATAXml","$isBindable","$isDataValue","$isDescendent","$isNsAgnostic","$isSplittable","$isThereMoreWidth","$isTransparent","$isUsable","$lastAttribute","$namespaceId","$nsAttributes","$onChild","$onChildCheck","$onText","$pushGlyphs","$popPara","$pushPara","$removeChild","$root","$resolvePrototypes","$searchNode","$setId","$setSetAttributes","$setValue","$tabIndex","$toString","$toStyle","$uid","_applyPrototype","_attributes","_attributeNames","_children","_cloneAttribute","_dataValue","_defaultValue","_filteredChildrenGenerator","_getPrototype","_getUnsetAttributes","_hasChildren","_max","_options","_parent","_resolvePrototypesHelper","_setAttributes","_validator","uid","NS_DATASETS","NamespaceIds","XFAObject","nsId","hasChildren","XFAObjectArray","para","paraStack","clean","getPrototypeOf","getOwnPropertyNames","dumped","HTMLResult","EMPTY","availableSpace","failingNode","generator","protoAttributes","allAttr","setAttr","ancestors","use","usehref","somExpression","endsWith","protoProto","newAncestors","unsetAttrName","protoValue","$symbol","getOwnPropertySymbols","clonedChild","allTransparent","XFAAttribute","XmlObject","dataNode","tagName","utf8TagName","utf8Name","skipConsumed","xhtml","hasNS","$ns","$name","ContentObject","OptionObject","getKeyword","StringObject","IntegerObject","validator","getInteger","Option01","Option10","dimConverters","pt","mm","in","measurementPattern","getFloat","getStringOption","getMeasurement","def","valueStr","unit","conv","getRatio","den","getRelevant","excluded","viewname","getColor","getBBox","FAILURE","breakNode","isBreak","$buildXFAObject","ns","pdf","sourceSet","xdc","xdp","xfdf","xmpmeta","namePattern","indexPattern","dot","dotDot","dotHash","dotBracket","dotParen","shortcuts","host","dataWindow","event","somCache","WeakMap","parseExpression","dotDotAllowed","noExpr","cacheName","formCalc","container","useCache","isQualified","isFinite","acc","createNodes","createDataNode","createText","Text","emptyMerge","_isConsumeData","_mergeMode","_isMatchTemplate","_bindElement","_bindValue","formNode","picture","Field","ui","choiceList","open","_findDataByNameToConsume","isValue","global","_setProperties","target","connection","setProperty","targetNodes","targetNode","targetParent","SetProperty","BindItems","attrs","Reflect","construct","_bindItems","bindItems","Items","labelRef","valueRef","labelNodes","labelNode","valueNodes","valueNode","label","_bindOccurrences","matches","baseClone","occur","_createOccurrences","initial","currentNumber","nodeClone","_getOccurInfo","_setAndBind","uselessNodes","mergeMode","dataChildren","dataChild","TEMPLATE_NS_ID","SVG_NS","MAX_ATTEMPTS_FOR_LRTB_LAYOUT","MAX_EMPTY_PAGES","DEFAULT_TAB_INDEX","HEADING_PATTERN","MIMES","IMAGES_HEADERS","getBorderDims","border","borderExtra","insets","hasMargin","margin","topInset","rightInset","bottomInset","leftInset","_setValue","templateNode","Value","getContainedChildren","SubformSet","setTabIndex","traversal","applyAssist","assist","assistTitle","ariaRole","ariaLevel","ariaLabel","speak","toolTip","valueToHtml","setFirstUnsplittable","firstUnsplittable","noLayoutFailure","unsetFirstUnsplittable","handleBreak","targetType","currentPageArea","currentContentArea","PageArea","startNew","ContentArea","pageArea","nextPageArea","contentAreas","contentArea","indexForCurrent","indexForTarget","handleOverflow","extraNode","saved","savedMethod","AppearanceFilter","Arc","circular","hand","startAngle","sweepAngle","edge","Edge","edgeStyle","presence","strokeWidth","measureToString","thickness","arc","xmlns","overflow","cx","cy","rx","ry","largeArc","vectorEffect","preserveAspectRatio","svg","display","Area","colSpan","relevant","extras","area","draw","exObject","exclGroup","subform","subformSet","toStyle","isPrintOnly","xfaName","Assist","Barcode","charEncoding","dataColumnCount","dataPrep","dataRowCount","endChar","errorCorrectionLevel","moduleHeight","moduleWidth","printCheckDigit","rowColumnRatio","startChar","textLocation","truncate","upsMode","wideNarrowRatio","Bind","Bookend","leader","BooleanElement","Border","break","corner","edges","defaultEdge","edgeStyles","cornerStyles","borderRadius","Break","afterTarget","beforeTarget","bookendLeader","bookendTrailer","overflowLeader","overflowTarget","overflowTrailer","BreakAfter","script","BreakBefore","Button","highlight","grandpa","htmlButton","activity","fixURL","Calculate","Caption","placement","reserve","layoutNode","savedReserve","setPara","Certificate","Certificates","credentialServerPolicy","urlPolicy","encryption","issuers","keyUsage","oids","signing","subjectDNs","CheckButton","mark","shape","className","groupId","exportedValue","fieldId","dataId","ExclGroup","xfaOn","xfaOff","ChoiceList","commitOn","textEntry","optionStyle","displayedIndex","saveIndex","displayed","selected","selectAttributes","multiple","Color","cSpace","Comb","numberOfCells","Connect","usage","classNames","Corner","inverted","DateElement","DateTime","DateTimeEdit","hScrollPolicy","picker","Decimal","fracDigits","leadDigits","DefaultUi","Desc","boolean","dateTime","decimal","exData","float","integer","DigestMethod","DigestMethods","digestMethod","Draw","anchorType","hAlign","locale","maxW","minH","minW","caption","keep","fixDimensions","savedW","savedH","isBroken","checkDimensions","setMinMaxDimensions","computeBbox","createWrapper","cap","linecap","Encoding","Encodings","Encrypt","certificate","EncryptData","manifest","Encryption","EncryptionMethod","EncryptionMethods","encryptionMethod","Event","listen","encryptData","signData","submit","ExData","contentType","maxLength","rid","transferEncoding","ExObject","archive","classId","codeBase","codeType","access","accessKey","connect","attempt","numberInLine","_isSplittable","flushHTML","addHTML","getAvailableSpace","setAccess","prevHeight","isSplittable","columnWidths","currentColumn","layoutClass","isLrTb","maxRun","marginH","marginV","Execute","executeType","runAt","Extras","Ui","TextEdit","textEdit","checkButton","borderDims","uiW","uiH","lineNoGap","tabindex","aElement","button","imageEdit","htmlValue","maxChars","numericEdit","captionHeight","inputHeight","Fill","linear","radial","solid","stipple","ggrandpa","propName","altPropName","Rectangle","Filter","addRevocationInfo","appearanceFilter","certificates","digestMethods","encryptionMethods","lockDocument","mdp","reasons","timeStamp","Float","baselineShift","fontHorizontalScale","fontVerticalScale","kerningMode","letterSpacing","lineThrough","lineThroughPeriod","overline","overlinePeriod","posture","underline","underlinePeriod","backgroundClip","verticalAlign","fontKerning","textDecoration","textDecorationStyle","fontStyle","setFontFamily","Format","Handler","Hyphenation","excludeAllCaps","excludeInitialCap","hyphenate","pushCharacterCount","remainCharacterCount","wordCharacterCount","Image","aspect","atob","blob","Blob","objectFit","createObjectURL","ImageEdit","Integer","Issuers","Keep","intact","KeyUsage","crlSign","dataEncipherment","decipherOnly","digitalSignature","encipherOnly","keyAgreement","keyCertSign","keyEncipherment","nonRepudiation","Line","slope","Linear","startColor","endColor","LockDocument","Manifest","Margin","Mdp","signatureType","Medium","imagingBBox","long","orientation","short","stock","trayIn","trayOut","Message","NumericEdit","Occur","originalMin","PageSet","Template","Oid","Oids","oid","Overflow","addLeader","addTrailer","blankOrNotBlank","initialNumber","numbered","oddOrEven","pagePosition","medium","numberOfUse","relation","duplexImposition","pageSet","pageSetIndex","pageNumber","parity","Para","marginLeft","marginRight","orphans","preserve","radixOffset","spaceAbove","spaceBelow","tabDefault","tabStops","textIndent","vAlign","widows","hyphenation","paddingLeft","paddingight","paddingTop","paddingBottom","fixTextIndent","tabSize","hyphenatation","PasswordEdit","passwordChar","Picture","Proto","barcode","bookend","breakAfter","breakBefore","dateTimeEdit","defaultUi","passwordEdit","subjectDN","traverse","variables","Radial","Reason","Reasons","cornerStyle","RefElement","binding","SignData","Signature","Signing","Solid","Speak","disable","priority","Stipple","rate","bgColor","Subform","allowMacro","restoreState","scope","afterBreakAfter","savedNoLayoutFailure","overflowExtra","overflowNode","SubjectDN","delimiter","kv","SubjectDNs","Submit","embedPDF","textEncoding","xdpContent","baseProfile","pageAreas","mainHtml","breakBeforeTarget","pageAreaParent","targetPageArea","hasSomething","hasSomethingCounter","htmlContentAreas","findIndex","allowRichText","vScrollPolicy","Time","TimeStamp","server","ToolTip","Traversal","Traverse","Validate","formatTest","nullTest","scriptTest","valueName","Variables","TemplateNamespace","createLine","htmlFromFailing","getTransformedBBox","centerX","centerY","ERROR","converters","transformOrigin","visibility","textAlign","alignSelf","layoutText","xfaFont","measure","TextMeasure","addString","compute","newStyle","wrapper","insetsH","insetsW","indent","getCurrentPara","nodeStyle","valueStyle","flexDirection","justifyContent","paraStyle","regular","pdfFont","selectFont","defaultFont","addPdfFont","bolditalic","myriad","getDefault","mustWarn","maybe","family","real","WIDTH_FACTOR","FontInfo","paraMargin","FontSelector","defaultXfaFont","defaultParaMargin","defaultLineHeight","pushData","lastFont","popFont","topFont","fontSelector","extraHeight","addPara","fontLineHeight","noGap","firstLineHeight","fallbackWidth","encodedLine","lastSpaceWidth","currentLineWidth","currentLineHeight","isFirstLine","isEOL","dataset","rootNameSpace","_builder","Builder","_globalData","_ids","_current","buildRoot","_whiteRegex","_nbsps","_richText","_mkAttributes","namespace","prefixes","attributeObj","nsAttrs","_getNameAndPrefix","nsAgnostic","attributesObj","nsPrefix","isNsAgnostic","build","Root","Empty","_namespaceStack","_nsAgnosticLevel","_namespacePrefixes","_namespaces","_nextNsId","_currentNamespace","UnknownNamespace","hasNamespaceDef","_searchNamespace","_addNamespacePrefix","dataTemplate","NamespaceSetUp","xfaAttrs","nsToUse","_getNamespaceToUse","namespaceToUse","hasNamespace","nsName","prefixStack","ConfigNamespace","ConnectionSetNamespace","DatasetsNamespace","LocaleSetNamespace","SignatureNamespace","StylesheetNamespace","XdpNamespace","CONFIG_NS_ID","Acrobat","acrobat7","autoSave","common","validateApprovalSignatures","submitUrl","Acrobat7","dynamicRender","ADBE_JSConsole","ADBE_JSDebugger","AddSilentPrint","AddViewerPreferences","AdjustData","AdobeExtensionLevel","Agent","AlwaysEmbed","Amd","Attributes","AutoSave","Base","BatchOutput","BehaviorOverride","Cache","templateCache","Change","Common","messaging","suppressBanner","validationMessaging","versionControl","Compress","CompressLogicalStructure","CompressObjectStream","Compression","compressLogicalStructure","compressObjectStream","Config","acrobat","present","trace","agent","Conformance","ContentCopy","Copies","Creator","CurrentPage","Data","adjustData","incrementalLoad","outputXSL","startNode","uri","xsl","excludeNS","Debug","DefaultTypeface","writingScript","Destination","DocumentAssembly","Driver","DuplexOption","DynamicRender","Embed","encryptionLevel","EncryptionLevel","Enforce","Equate","force","to","EquateRange","_unicodeRange","unicodeRange","unicodeRegex","Exclude","ExcludeNS","FlipLabel","embed","subsetBelow","alwaysEmbed","defaultTypeface","neverEmbed","FormFieldFilling","GroupParent","IfEmpty","IncludeXDPContent","IncrementalLoad","IncrementalMerge","Interactive","Jog","LabelPrinter","batchOutput","flipLabel","Layout","Level","Linearized","Locale","LocaleSet","Log","threshold","MapElement","equate","equateRange","MediumInfo","msgId","severity","Messaging","Mode","ModifyAnnots","MsgId","NameAttr","NeverEmbed","NumberOfCopies","OpenAction","destination","Output","OutputBin","OutputXSL","Overprint","Packets","PageOffset","PageRange","numbers","Pagination","PaginationOverride","Part","Pcl","jog","mediumInfo","outputBin","pageOffset","staple","Pdf","adobeExtensionLevel","compression","interactive","linearized","pdfa","producer","renderPolicy","scriptModel","silentPrint","submitFormat","tagged","Pdfa","amd","conformance","includeXDPContent","Permissions","accessibleContent","change","contentCopy","documentAssembly","formFieldFilling","modifyAnnots","plaintextMetadata","printHighQuality","PickTrayByPDFSize","PlaintextMetadata","Presence","Present","behaviorOverride","copies","incrementalMerge","overprint","pagination","paginationOverride","driver","labelPrinter","pcl","webClient","zpl","Print","PrintHighQuality","PrintScaling","PrinterName","Producer","Ps","Range","Record","Relevant","Rename","RenderPolicy","RunScripts","currentPage","exclude","runScripts","ScriptModel","Severity","SilentPrint","addSilentPrint","printerName","Staple","StartNode","StartPage","SubmitFormat","SubmitUrl","SubsetBelow","SuppressBanner","Tagged","startPage","Threshold","To","TemplateCache","maxEntries","Trace","groupParent","ifEmpty","nameAttr","rename","whitespace","Uri","ValidateApprovalSignatures","ValidationMessaging","Version","VersionControl","outputBelow","sourceAbove","sourceBelow","ViewerPreferences","addViewerPreferences","duplexOption","enforce","numberOfCopies","pageRange","pickTrayByPDFSize","printScaling","WebClient","Whitespace","Window","Xdc","Xdp","packets","Xsl","debug","Zpl","compress","CONNECTION_SET_NS_ID","ConnectionSet","wsdlConnection","xmlConnection","xsdConnection","EffectiveInputPolicy","EffectiveOutputPolicy","Operation","RootElement","SoapAction","SoapAddress","WsdlAddress","WsdlConnection","dataDescription","effectiveInputPolicy","effectiveOutputPolicy","soapAction","soapAddress","wsdlAddress","XmlConnection","XsdConnection","rootElement","DATASETS_NS_ID","Datasets","LOCALE_SET_NS_ID","CalendarSymbols","dayNames","eraNames","meridiemNames","monthNames","CurrencySymbol","CurrencySymbols","currencySymbol","DatePattern","DatePatterns","datePattern","DateTimeSymbols","Day","DayNames","abbr","day","Era","EraNames","era","calendarSymbols","currencySymbols","datePatterns","dateTimeSymbols","numberPatterns","numberSymbols","timePatterns","typeFaces","Meridiem","MeridiemNames","meridiem","Month","MonthNames","month","NumberPattern","NumberPatterns","numberPattern","NumberSymbol","NumberSymbols","numberSymbol","TimePattern","TimePatterns","timePattern","TypeFace","TypeFaces","typeFace","SIGNATURE_NS_ID","STYLESHEET_NS_ID","Stylesheet","XDP_NS_ID","uuid","XHTML_NS_ID","$richText","VALID_STYLES","StyleMapping","original","spacesRegExp","crlfRegExp","crlfForRichTextRegExp","mapStyle","styleStr","newValue","replaceAll","SUB_SUPER_SCRIPT_FACTOR","VERTICAL_FACTOR","checkStyle","NoWhites","XhtmlObject","mustPop","pushFont","Body","Br","Html","Li","Ol","siblings","Span","Sub","Sup","Ul","br","li","ol","span","sub","sup","ul","namespaceId","xrefstms","_cacheMap","_pendingRefs","_newRefNum","startXRefQueue","trailerDict","readXRef","indexObjects","processXRefTable","tableState","entryNum","parserBuf1","parserBuf2","readXRefTable","firstEntryNum","free","uncompressed","processXRefStream","streamParameters","byteWidths","streamState","entryRanges","readXRefStream","typeFieldWidth","offsetFieldWidth","generationFieldWidth","generation","typeByte","offsetByte","generationByte","TAB","PERCENT","LT","readToken","skipUntil","skipped","objRegExp","endobjRegExp","nestedObjRegExp","CHECK_CONTENT_LENGTH","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailers","xrefStms","updateEntries","checkPos","tokenStr","objToken","xrefTagOffset","pagesDict","pagesCount","startXRefParsedCache","getEntry","xrefEntry","fetchUncompressed","fetchCompressed","tableOffset","CallbackKind","DATA","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","_processStreamMessage","cbSourceName","cbTargetName","_createStreamSink","addEventListener","ah","sendWithStream","queueingStrategy","controller","startCapability","startCall","pullCall","cancelCall","pull","pullCapability","cancel","cancelCapability","isCancelled","lastDesiredSize","sinkCapability","onPull","onCancel","streamController","_deleteStreamController","allSettled","removeEventListener","_msgHandler","_contentLength","_fullRequestReader","_rangeRequestReaders","PDFWorkerStreamReader","PDFWorkerStreamRangeReader","_isRangeSupported","_isStreamingSupported","readableStream","_reader","getReader","_headersReady","pdfjsVersion","pdfjsBuild"],"sourceRoot":""} \ No newline at end of file
diff --git a/js/pdfjs/web/locale/dsb/viewer.properties b/js/pdfjs/web/locale/dsb/viewer.properties
index 00fe873..1a0e9ab 100644
--- a/js/pdfjs/web/locale/dsb/viewer.properties
+++ b/js/pdfjs/web/locale/dsb/viewer.properties
@@ -64,7 +64,7 @@ cursor_hand_tool_label=Rucny rěd
scroll_page.title=Kulanje boka wužywaś
scroll_page_label=Kulanje boka
scroll_vertical.title=Wertikalne suwanje wužywaś
-scroll_vertical_label=Wertikalnje suwanje
+scroll_vertical_label=Wertikalne suwanje
scroll_horizontal.title=Horicontalne suwanje wužywaś
scroll_horizontal_label=Horicontalne suwanje
scroll_wrapped.title=Pózlažke suwanje wužywaś
diff --git a/js/pdfjs/web/locale/en-US/viewer.properties b/js/pdfjs/web/locale/en-US/viewer.properties
index dc54ed3..2eb5a8d 100644
--- a/js/pdfjs/web/locale/en-US/viewer.properties
+++ b/js/pdfjs/web/locale/en-US/viewer.properties
@@ -168,9 +168,10 @@ find_previous.title=Find the previous occurrence of the phrase
find_previous_label=Previous
find_next.title=Find the next occurrence of the phrase
find_next_label=Next
-find_highlight=Highlight all
-find_match_case_label=Match case
-find_entire_word_label=Whole words
+find_highlight=Highlight All
+find_match_case_label=Match Case
+find_match_diacritics_label=Match Diacritics
+find_entire_word_label=Whole Words
find_reached_top=Reached top of document, continued from bottom
find_reached_bottom=Reached end of document, continued from top
# LOCALIZATION NOTE (find_match_count): The supported plural forms are
diff --git a/js/pdfjs/web/locale/ga-IE/viewer.properties b/js/pdfjs/web/locale/ga-IE/viewer.properties
index 723ddd0..e82e55b 100644
--- a/js/pdfjs/web/locale/ga-IE/viewer.properties
+++ b/js/pdfjs/web/locale/ga-IE/viewer.properties
@@ -61,6 +61,8 @@ cursor_text_select_tool_label=Uirlis Roghnaithe Téacs
cursor_hand_tool.title=Cumasaigh an Uirlis Láimhe
cursor_hand_tool_label=Uirlis Láimhe
+
+
# Document properties dialog box
document_properties.title=Airíonna na Cáipéise…
document_properties_label=Airíonna na Cáipéise…
@@ -85,6 +87,14 @@ document_properties_creator=Cruthaitheoir:
document_properties_producer=Cruthaitheoir an PDF:
document_properties_version=Leagan PDF:
document_properties_page_count=Líon Leathanach:
+# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
+# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
+# the size, respectively their unit of measurement and orientation, of the (current) page.
+# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
+# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
+# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
+# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
+# the document; usually called "Fast Web View" in English locales of Adobe software.
document_properties_close=Dún
print_progress_message=Cáipéis á hullmhú le priontáil…
@@ -107,6 +117,7 @@ thumbs_label=Mionsamhlacha
findbar.title=Aimsigh sa Cháipéis
findbar_label=Aimsigh
+# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
@@ -124,8 +135,18 @@ find_next.title=Aimsigh an chéad sampla eile den nath sin
find_next_label=Ar aghaidh
find_highlight=Aibhsigh uile
find_match_case_label=Cásíogair
+find_entire_word_label=Focail iomlána
find_reached_top=Ag barr na cáipéise, ag leanúint ón mbun
find_reached_bottom=Ag bun na cáipéise, ag leanúint ón mbarr
+# LOCALIZATION NOTE (find_match_count): The supported plural forms are
+# [one|two|few|many|other], with [other] as the default value.
+# "{{current}}" and "{{total}}" will be replaced by a number representing the
+# index of the currently active find result, respectively a number representing
+# the total number of matches in the document.
+find_match_count={[ plural(total) ]}
+# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
+# [zero|one|two|few|many|other], with [other] as the default value.
+# "{{limit}}" will be replaced by a numerical value.
find_not_found=Frása gan aimsiú
# Error panel labels
@@ -156,11 +177,15 @@ page_scale_actual=Fíormhéid
# numerical scale value.
page_scale_percent={{scale}}%
+# Loading indicator messages
loading_error=Tharla earráid agus an cháipéis PDF á lódáil.
invalid_file_error=Comhad neamhbhailí nó truaillithe PDF.
missing_file_error=Comhad PDF ar iarraidh.
unexpected_response_error=Freagra ón bhfreastalaí nach rabhthas ag súil leis.
+# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
+# replaced by the modification date, and time, of the annotation.
+
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
diff --git a/js/pdfjs/web/locale/hr/viewer.properties b/js/pdfjs/web/locale/hr/viewer.properties
index 395a975..1ccf441 100644
--- a/js/pdfjs/web/locale/hr/viewer.properties
+++ b/js/pdfjs/web/locale/hr/viewer.properties
@@ -76,8 +76,8 @@ spread_even.title=Izradi duplerice koje počinju s parnim stranicama
spread_even_label=Parne duplerice
# Document properties dialog box
-document_properties.title=Svojstva dokumenta...
-document_properties_label=Svojstva dokumenta...
+document_properties.title=Svojstva dokumenta …
+document_properties_label=Svojstva dokumenta …
document_properties_file_name=Naziv datoteke:
document_properties_file_size=Veličina datoteke:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
diff --git a/js/pdfjs/web/locale/hsb/viewer.properties b/js/pdfjs/web/locale/hsb/viewer.properties
index d797ac7..24ce8a6 100644
--- a/js/pdfjs/web/locale/hsb/viewer.properties
+++ b/js/pdfjs/web/locale/hsb/viewer.properties
@@ -64,7 +64,7 @@ cursor_hand_tool_label=Ručny nastroj
scroll_page.title=Kulenje strony wužiwać
scroll_page_label=Kulenje strony
scroll_vertical.title=Wertikalne suwanje wužiwać
-scroll_vertical_label=Wertikalnje suwanje
+scroll_vertical_label=Wertikalne suwanje
scroll_horizontal.title=Horicontalne suwanje wužiwać
scroll_horizontal_label=Horicontalne suwanje
scroll_wrapped.title=Postupne suwanje wužiwać
diff --git a/js/pdfjs/web/locale/hye/viewer.properties b/js/pdfjs/web/locale/hye/viewer.properties
index fb7bd7a..6af5982 100644
--- a/js/pdfjs/web/locale/hye/viewer.properties
+++ b/js/pdfjs/web/locale/hye/viewer.properties
@@ -61,6 +61,8 @@ cursor_text_select_tool_label=Գրուածք ընտրելու գործիք
cursor_hand_tool.title=Միացնել ձեռքի գործիքը
cursor_hand_tool_label=Ձեռքի գործիք
+scroll_page.title=Աւգտագործել էջի ոլորում
+scroll_page_label=Էջի ոլորում
scroll_vertical.title=Աւգտագործել ուղղահայեաց ոլորում
scroll_vertical_label=Ուղղահայեաց ոլորում
scroll_horizontal.title=Աւգտագործել հորիզոնական ոլորում
@@ -149,6 +151,8 @@ findbar.title=Գտնել փաստաթղթում
findbar_label=Որոնում
additional_layers=Լրացուցիչ շերտեր
+# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
+page_landmark=Էջ {{page}}
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
@@ -174,7 +178,7 @@ find_reached_bottom=Հասել էք փաստաթղթի վերջին, շարու
# "{{current}}" and "{{total}}" will be replaced by a number representing the
# index of the currently active find result, respectively a number representing
# the total number of matches in the document.
-find_match_count={[ հոգնակի(ընդհանուր) ]}
+find_match_count={[ plural(total) ]}
find_match_count[one]={{current}} {{total}}-ի համընկնումից
find_match_count[two]={{current}} {{total}}-ի համընկնումներից
find_match_count[few]={{current}} {{total}}-ի համընկնումներից
@@ -183,7 +187,7 @@ find_match_count[other]={{current}} {{total}}-ի համընկնումներից
# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
# [zero|one|two|few|many|other], with [other] as the default value.
# "{{limit}}" will be replaced by a numerical value.
-find_match_count_limit={[ հոգնակի (սահմանը) ]}
+find_match_count_limit={[ plural(limit) ]}
find_match_count_limit[zero]=Աւելին քան {{limit}} համընկնումները
find_match_count_limit[one]=Աւելին քան {{limit}} համընկնումը
find_match_count_limit[two]=Աւելին քան {{limit}} համընկնումները
@@ -220,6 +224,8 @@ page_scale_actual=Իրական չափը
# numerical scale value.
page_scale_percent={{scale}}%
+# Loading indicator messages
+loading=Բեռնում…
loading_error=PDF նիշքը բացելիս սխալ է տեղի ունեցել։
invalid_file_error=Սխալ կամ վնասուած PDF նիշք։
missing_file_error=PDF նիշքը բացակաիւմ է։
diff --git a/js/pdfjs/web/locale/is/viewer.properties b/js/pdfjs/web/locale/is/viewer.properties
index fdff9f8..f1a7b3f 100644
--- a/js/pdfjs/web/locale/is/viewer.properties
+++ b/js/pdfjs/web/locale/is/viewer.properties
@@ -28,10 +28,10 @@ of_pages=af {{pagesCount}}
# respectively a number representing the total number of pages in the document.
page_of_pages=({{pageNumber}} af {{pagesCount}})
-zoom_out.title=Minnka
-zoom_out_label=Minnka
-zoom_in.title=Stækka
-zoom_in_label=Stækka
+zoom_out.title=Minnka aðdrátt
+zoom_out_label=Minnka aðdrátt
+zoom_in.title=Auka aðdrátt
+zoom_in_label=Auka aðdrátt
zoom.title=Aðdráttur
presentation_mode.title=Skipta yfir á kynningarham
presentation_mode_label=Kynningarhamur
@@ -61,10 +61,14 @@ cursor_text_select_tool_label=Textavalsáhald
cursor_hand_tool.title=Virkja handarverkfæri
cursor_hand_tool_label=Handarverkfæri
+scroll_page.title=Nota síðuskrun
+scroll_page_label=Síðuskrun
scroll_vertical.title=Nota lóðrétt skrun
scroll_vertical_label=Lóðrétt skrun
scroll_horizontal.title=Nota lárétt skrun
scroll_horizontal_label=Lárétt skrun
+scroll_wrapped.title=Nota línuskipt síðuskrun
+scroll_wrapped_label=Línuskipt síðuskrun
spread_none.title=Ekki taka þátt í dreifingu síðna
spread_none_label=Engin dreifing
@@ -116,6 +120,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}
document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software.
+document_properties_linearized=Fljótleg vefskoðun:
document_properties_linearized_yes=Já
document_properties_linearized_no=Nei
document_properties_close=Loka
@@ -129,17 +134,25 @@ print_progress_close=Hætta við
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=Víxla hliðslá
-toggle_sidebar_label=Víxla hliðslá
+toggle_sidebar.title=Víxla hliðarspjaldi af/á
+toggle_sidebar_notification2.title=Víxla hliðarslá (skjal inniheldur yfirlit/viðhengi/lög)
+toggle_sidebar_label=Víxla hliðarspjaldi af/á
document_outline.title=Sýna yfirlit skjals (tvísmelltu til að opna/loka öllum hlutum)
document_outline_label=Efnisskipan skjals
attachments.title=Sýna viðhengi
attachments_label=Viðhengi
+layers.title=Birta lög (tvísmelltu til að endurstilla öll lög í sjálfgefna stöðu)
+layers_label=Lög
thumbs.title=Sýna smámyndir
thumbs_label=Smámyndir
+current_outline_item.title=Finna núverandi atriði efnisskipunar
+current_outline_item_label=Núverandi atriði efnisskipunar
findbar.title=Leita í skjali
findbar_label=Leita
+additional_layers=Viðbótarlög
+# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
+page_landmark=Síða {{page}}
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
@@ -211,11 +224,17 @@ page_scale_actual=Raunstærð
# numerical scale value.
page_scale_percent={{scale}}%
+# Loading indicator messages
+loading=Hleður…
loading_error=Villa kom upp við að hlaða inn PDF.
invalid_file_error=Ógild eða skemmd PDF skrá.
missing_file_error=Vantar PDF skrá.
unexpected_response_error=Óvænt svar frá netþjóni.
+# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
+# replaced by the modification date, and time, of the annotation.
+annotation_date_string={{date}}, {{time}}
+
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
diff --git a/js/pdfjs/web/locale/it/viewer.properties b/js/pdfjs/web/locale/it/viewer.properties
index fa8bc0d..6db5f12 100644
--- a/js/pdfjs/web/locale/it/viewer.properties
+++ b/js/pdfjs/web/locale/it/viewer.properties
@@ -140,6 +140,7 @@ find_next_label = Successivo
find_highlight = Evidenzia
find_match_case_label = Maiuscole/minuscole
find_entire_word_label = Parole intere
+find_match_diacritics_label = Segni diacritici
find_reached_top = Raggiunto l’inizio della pagina, continua dalla fine
find_reached_bottom = Raggiunta la fine della pagina, continua dall’inizio
find_match_count = {[ plural(total) ]}
diff --git a/js/pdfjs/web/locale/ko/viewer.properties b/js/pdfjs/web/locale/ko/viewer.properties
index 19720e5..e9c9494 100644
--- a/js/pdfjs/web/locale/ko/viewer.properties
+++ b/js/pdfjs/web/locale/ko/viewer.properties
@@ -41,7 +41,7 @@ print.title=인쇄
print_label=인쇄
download.title=다운로드
download_label=다운로드
-bookmark.title=현재 보기 (복사 또는 새 창에 열기)
+bookmark.title=현재 보기 (복사 또는 새 창에서 열기)
bookmark_label=현재 보기
# Secondary toolbar and context menu
diff --git a/js/pdfjs/web/locale/sat/viewer.properties b/js/pdfjs/web/locale/sat/viewer.properties
index 3f38d5a..53d75f2 100644
--- a/js/pdfjs/web/locale/sat/viewer.properties
+++ b/js/pdfjs/web/locale/sat/viewer.properties
@@ -14,7 +14,7 @@
# Main toolbar buttons (tooltips and alt text for images)
previous.title=पा़हिलाक् साहटा
-next.title=इना़ तायोम साहटा
+next.title=ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ ᱥᱟᱦᱴᱟ
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
@@ -128,7 +128,7 @@ rendering_error=साहटा एम जोहोक मित् भुल
page_scale_width=साहटा ओसार
page_scale_fit=साहटा खाप
page_scale_auto=आच् आच् ते हुडिञ ला़टु तेयार
-page_scale_actual=ठिक माराङ तेत्
+page_scale_actual=ᱴᱷᱤᱠ ᱢᱟᱨᱟᱝ ᱛᱮᱫ
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
diff --git a/js/pdfjs/web/locale/szl/viewer.properties b/js/pdfjs/web/locale/szl/viewer.properties
index 5980b6c..1af405d 100644
--- a/js/pdfjs/web/locale/szl/viewer.properties
+++ b/js/pdfjs/web/locale/szl/viewer.properties
@@ -189,7 +189,7 @@ find_match_count_limit[two]=Wiyncyj jak {{limit}}, co pasujōm
find_match_count_limit[few]=Wiyncyj jak {{limit}}, co pasujōm
find_match_count_limit[many]=Wiyncyj jak {{limit}}, co pasujōm
find_match_count_limit[other]=Wiyncyj jak {{limit}}, co pasujōm
-find_not_found=Fraza niy ma znodniynto
+find_not_found=Fraza niy znaleziōno
# Error panel labels
error_more_info=Wiyncyj informacyji
@@ -242,5 +242,3 @@ password_cancel=Pociep
printing_not_supported=Pozōr: Ta przeglōndarka niy cołkiym ôbsuguje durk.
printing_not_ready=Pozōr: Tyn PDF niy ma za tela zaladowany do durku.
web_fonts_disabled=Necowe fōnty sōm zastawiōne: niy idzie użyć wkludzōnych fōntōw PDF.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
diff --git a/js/pdfjs/web/locale/tg/viewer.properties b/js/pdfjs/web/locale/tg/viewer.properties
index 95967e3..24ab96e 100644
--- a/js/pdfjs/web/locale/tg/viewer.properties
+++ b/js/pdfjs/web/locale/tg/viewer.properties
@@ -67,6 +67,8 @@ document_properties_page_size_name_legal=Ҳуқуқӣ
document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software.
+document_properties_linearized_yes=Ҳа
+document_properties_close=Пӯшидан
print_progress_message=Омодасозии ҳуҷҷат барои чоп…
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
@@ -79,7 +81,6 @@ print_progress_close=Бекор кардан
# tooltips)
toggle_sidebar.title=Фаъол кардани навори ҷонибӣ
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
@@ -105,6 +106,7 @@ find_match_count_limit[other]=Зиёда аз {{limit}} мувофиқат
# Error panel labels
error_more_info=Маълумоти бештар
+error_close=Пӯшидан
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
@@ -122,8 +124,6 @@ page_scale_auto=Андозаи худкор
# numerical scale value.
# Loading indicator messages
-
-# Loading indicator messages
invalid_file_error=Файли PDF нодуруст ё вайроншуда мебошад.
missing_file_error=Файли PDF ғоиб аст.
@@ -137,6 +137,3 @@ missing_file_error=Файли PDF ғоиб аст.
password_label=Барои кушодани ин файли PDF ниҳонвожаро ворид кунед.
password_cancel=Бекор кардан
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-
diff --git a/js/pdfjs/web/viewer.css b/js/pdfjs/web/viewer.css
index c5f0bcb..6633fd9 100644
--- a/js/pdfjs/web/viewer.css
+++ b/js/pdfjs/web/viewer.css
@@ -962,8 +962,6 @@
html {
height: 100%;
width: 100%;
- /* Font size is needed to make the activity bar the correct size. */
- font-size: 10px;
}
body {
@@ -1319,7 +1317,7 @@ html[dir="rtl"] #outerContainer.sidebarOpen #loadingBar {
.findbar.wrapContainers > div {
clear: both;
}
-.findbar.wrapContainers > div#findbarMessageContainer {
+.findbar.wrapContainers > div.findbarMessageContainer {
height: auto;
}
html[dir="ltr"] .findbar {
@@ -1378,7 +1376,7 @@ html[dir="rtl"] .findbar .splitToolbarButton > .findNext {
}
.findbar label:hover,
-.findbar input:focus + label {
+.findbar input:focus-visible + label {
color: var(--toggled-btn-color);
background-color: var(--button-hover-color);
}
@@ -1510,6 +1508,8 @@ html[dir="ltr"] .doorHangerRight:before {
#findMsg {
color: rgba(251, 0, 0, 1);
}
+
+#findResultsCount:empty,
#findMsg:empty {
display: none;
}
@@ -1572,12 +1572,12 @@ html[dir="rtl"] .splitToolbarButton > .toolbarButton {
}
.overlayButton:hover,
-.overlayButton:focus {
+.overlayButton:focus-visible {
background-color: var(--overlay-button-hover-bg-color);
}
.overlayButton:hover > span,
-.overlayButton:focus > span {
+.overlayButton:focus-visible > span {
color: var(--overlay-button-hover-color);
}
@@ -1599,10 +1599,10 @@ html[dir="rtl"] .splitToolbarButton > .toolbarButton {
}
.splitToolbarButton > .toolbarButton:hover,
-.splitToolbarButton > .toolbarButton:focus,
+.splitToolbarButton > .toolbarButton:focus-visible,
.dropdownToolbarButton:hover,
.toolbarButton.textButton:hover,
-.toolbarButton.textButton:focus {
+.toolbarButton.textButton:focus-visible {
background-color: var(--button-hover-color);
z-index: 199;
}
@@ -1668,11 +1668,11 @@ html[dir="rtl"] #toolbarViewerLeft > .toolbarButton:first-child {
margin-right: 2px;
}
.toolbarButton:hover,
-.toolbarButton:focus {
+.toolbarButton:focus-visible {
background-color: var(--button-hover-color);
}
.secondaryToolbarButton:hover,
-.secondaryToolbarButton:focus {
+.secondaryToolbarButton:focus-visible {
background-color: var(--doorhanger-hover-bg-color);
color: var(--doorhanger-hover-color);
}
@@ -1736,7 +1736,7 @@ html[dir="rtl"] .dropdownToolbarButton > select {
padding-right: 4px;
}
.dropdownToolbarButton > select:hover,
-.dropdownToolbarButton > select:focus {
+.dropdownToolbarButton > select:focus-visible {
background-color: var(--button-hover-color);
color: var(--toggled-btn-color);
}
@@ -1778,7 +1778,7 @@ html[dir="rtl"] .dropdownToolbarButton > select {
}
.dropdownToolbarButton:hover::after,
-.dropdownToolbarButton:focus::after,
+.dropdownToolbarButton:focus-visible::after,
.dropdownToolbarButton:active::after {
background-color: var(--toolbar-icon-hover-bg-color);
}
@@ -1790,9 +1790,9 @@ html[dir="rtl"] .dropdownToolbarButton > select {
}
.toolbarButton:hover::before,
-.toolbarButton:focus::before,
+.toolbarButton:focus-visible::before,
.secondaryToolbarButton:hover::before,
-.secondaryToolbarButton:focus::before {
+.secondaryToolbarButton:focus-visible::before {
background-color: var(--toolbar-icon-hover-bg-color);
}
diff --git a/js/pdfjs/web/viewer.html b/js/pdfjs/web/viewer.html
index efbd583..273ccdc 100644
--- a/js/pdfjs/web/viewer.html
+++ b/js/pdfjs/web/viewer.html
@@ -102,17 +102,21 @@ See https://github.com/adobe-type-tools/cmap-resources
<div id="findbarOptionsOneContainer">
<input type="checkbox" id="findHighlightAll" class="toolbarField" tabindex="94">
- <label for="findHighlightAll" class="toolbarLabel" data-l10n-id="find_highlight">Highlight all</label>
+ <label for="findHighlightAll" class="toolbarLabel" data-l10n-id="find_highlight">Highlight All</label>
<input type="checkbox" id="findMatchCase" class="toolbarField" tabindex="95">
- <label for="findMatchCase" class="toolbarLabel" data-l10n-id="find_match_case_label">Match case</label>
+ <label for="findMatchCase" class="toolbarLabel" data-l10n-id="find_match_case_label">Match Case</label>
</div>
<div id="findbarOptionsTwoContainer">
- <input type="checkbox" id="findEntireWord" class="toolbarField" tabindex="96">
- <label for="findEntireWord" class="toolbarLabel" data-l10n-id="find_entire_word_label">Whole words</label>
- <span id="findResultsCount" class="toolbarLabel hidden"></span>
+ <input type="checkbox" id="findMatchDiacritics" class="toolbarField" tabindex="96">
+ <label for="findMatchDiacritics" class="toolbarLabel" data-l10n-id="find_match_diacritics_label">Match Diacritics</label>
+ <input type="checkbox" id="findEntireWord" class="toolbarField" tabindex="97">
+ <label for="findEntireWord" class="toolbarLabel" data-l10n-id="find_entire_word_label">Whole Words</label>
</div>
- <div id="findbarMessageContainer">
+ <div class="findbarMessageContainer">
+ <span id="findResultsCount" class="toolbarLabel"></span>
+ </div>
+ <div class="findbarMessageContainer">
<span id="findMsg" class="toolbarLabel"></span>
</div>
</div> <!-- findbar -->
diff --git a/js/pdfjs/web/viewer.js b/js/pdfjs/web/viewer.js
index 74f5384..ce67997 100644
--- a/js/pdfjs/web/viewer.js
+++ b/js/pdfjs/web/viewer.js
@@ -2,7 +2,7 @@
* @licstart The following is the entire license notice for the
* Javascript code in this page
*
- * Copyright 2021 Mozilla Foundation
+ * Copyright 2022 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,18 +36,11 @@ exports.compatibilityParams = exports.OptionKind = exports.AppOptions = void 0;
const compatibilityParams = Object.create(null);
exports.compatibilityParams = compatibilityParams;
{
- const userAgent = typeof navigator !== "undefined" && navigator.userAgent || "";
- const platform = typeof navigator !== "undefined" && navigator.platform || "";
- const maxTouchPoints = typeof navigator !== "undefined" && navigator.maxTouchPoints || 1;
+ const userAgent = navigator.userAgent || "";
+ const platform = navigator.platform || "";
+ const maxTouchPoints = navigator.maxTouchPoints || 1;
const isAndroid = /Android/.test(userAgent);
const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1;
- const isIOSChrome = /CriOS/.test(userAgent);
-
- (function checkOnBlobSupport() {
- if (isIOSChrome) {
- compatibilityParams.disableCreateObjectURL = true;
- }
- })();
(function checkCanvasSizeLimitation() {
if (isIOS || isAndroid) {
@@ -235,7 +228,7 @@ const defaultOptions = {
kind: OptionKind.VIEWER
};
defaultOptions.locale = {
- value: typeof navigator !== "undefined" ? navigator.language : "en-US",
+ value: navigator.language || "en-US",
kind: OptionKind.VIEWER
};
defaultOptions.sandboxBundleSrc = {
@@ -341,23 +334,23 @@ var _pdfjsLib = __webpack_require__(5);
var _pdf_cursor_tools = __webpack_require__(6);
-var _overlay_manager = __webpack_require__(8);
+var _pdf_link_service = __webpack_require__(8);
-var _password_prompt = __webpack_require__(9);
+var _overlay_manager = __webpack_require__(9);
-var _pdf_attachment_viewer = __webpack_require__(10);
+var _password_prompt = __webpack_require__(10);
-var _pdf_document_properties = __webpack_require__(12);
+var _pdf_attachment_viewer = __webpack_require__(11);
-var _pdf_find_bar = __webpack_require__(13);
+var _pdf_document_properties = __webpack_require__(13);
-var _pdf_find_controller = __webpack_require__(14);
+var _pdf_find_bar = __webpack_require__(14);
-var _pdf_history = __webpack_require__(16);
+var _pdf_find_controller = __webpack_require__(15);
-var _pdf_layer_viewer = __webpack_require__(17);
+var _pdf_history = __webpack_require__(17);
-var _pdf_link_service = __webpack_require__(18);
+var _pdf_layer_viewer = __webpack_require__(18);
var _pdf_outline_viewer = __webpack_require__(19);
@@ -507,8 +500,8 @@ const PDFViewerApplication = {
await this._initializeL10n();
- if (this.isViewerEmbedded && _app_options.AppOptions.get("externalLinkTarget") === _pdfjsLib.LinkTarget.NONE) {
- _app_options.AppOptions.set("externalLinkTarget", _pdfjsLib.LinkTarget.TOP);
+ if (this.isViewerEmbedded && _app_options.AppOptions.get("externalLinkTarget") === _pdf_link_service.LinkTarget.NONE) {
+ _app_options.AppOptions.set("externalLinkTarget", _pdf_link_service.LinkTarget.TOP);
}
await this._initializeViewerComponents();
@@ -670,16 +663,7 @@ const PDFViewerApplication = {
appConfig,
externalServices
} = this;
- let eventBus;
-
- if (appConfig.eventBus) {
- eventBus = appConfig.eventBus;
- } else if (externalServices.isInAutomation) {
- eventBus = new _event_utils.AutomationEventBus();
- } else {
- eventBus = new _event_utils.EventBus();
- }
-
+ const eventBus = externalServices.isInAutomation ? new _event_utils.AutomationEventBus() : new _event_utils.EventBus();
this.eventBus = eventBus;
this.overlayManager = new _overlay_manager.OverlayManager();
const pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();
@@ -848,7 +832,7 @@ const PDFViewerApplication = {
},
get supportsFullscreen() {
- return (0, _pdfjsLib.shadow)(this, "supportsFullscreen", document.fullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled);
+ return (0, _pdfjsLib.shadow)(this, "supportsFullscreen", document.fullscreenEnabled);
},
get supportsIntegratedFind() {
@@ -1172,6 +1156,12 @@ const PDFViewerApplication = {
this._unblockDocumentLoadEvent();
this._otherError(message, moreInfo);
+
+ this.eventBus.dispatch("documenterror", {
+ source: this,
+ message,
+ reason: moreInfo?.message ?? null
+ });
},
_otherError(message, moreInfo = null) {
@@ -2182,12 +2172,9 @@ let validateFileURL;
return;
}
- const {
- origin,
- protocol
- } = new URL(file, window.location.href);
+ const fileOrigin = new URL(file, window.location.href).origin;
- if (origin !== viewerOrigin && protocol !== "blob:") {
+ if (fileOrigin !== viewerOrigin) {
throw new Error("file origin does not match viewer's");
}
} catch (ex) {
@@ -2505,29 +2492,16 @@ let webViewerFileInputChange, webViewerOpenFile;
}
const file = evt.fileInput.files[0];
+ let url = URL.createObjectURL(file);
- if (!_app_options.compatibilityParams.disableCreateObjectURL) {
- let url = URL.createObjectURL(file);
-
- if (file.name) {
- url = {
- url,
- originalUrl: file.name
- };
- }
-
- PDFViewerApplication.open(url);
- } else {
- PDFViewerApplication.setTitleUsingUrl(file.name);
- const fileReader = new FileReader();
-
- fileReader.onload = function webViewerChangeFileReaderOnload(event) {
- const buffer = event.target.result;
- PDFViewerApplication.open(new Uint8Array(buffer));
+ if (file.name) {
+ url = {
+ url,
+ originalUrl: file.name
};
-
- fileReader.readAsArrayBuffer(file);
}
+
+ PDFViewerApplication.open(url);
};
webViewerOpenFile = function (evt) {
@@ -2637,7 +2611,8 @@ function webViewerFindFromUrlHash(evt) {
caseSensitive: false,
entireWord: false,
highlightAll: true,
- findPrevious: false
+ findPrevious: false,
+ matchDiacritics: true
});
}
@@ -2727,11 +2702,12 @@ function webViewerWheel(evt) {
return;
}
- const previousScale = pdfViewer.currentScale;
+ const deltaMode = evt.deltaMode;
const delta = (0, _ui_utils.normalizeWheelEventDirection)(evt);
+ const previousScale = pdfViewer.currentScale;
let ticks = 0;
- if (evt.deltaMode === WheelEvent.DOM_DELTA_LINE || evt.deltaMode === WheelEvent.DOM_DELTA_PAGE) {
+ if (deltaMode === WheelEvent.DOM_DELTA_LINE || deltaMode === WheelEvent.DOM_DELTA_PAGE) {
if (Math.abs(delta) >= 1) {
ticks = Math.sign(delta);
} else {
@@ -3108,14 +3084,13 @@ exports.PDFPrintServiceFactory = PDFPrintServiceFactory;
Object.defineProperty(exports, "__esModule", ({
value: true
}));
-exports.animationStarted = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = exports.RenderingStates = exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.DEFAULT_SCALE_VALUE = exports.DEFAULT_SCALE_DELTA = exports.DEFAULT_SCALE = exports.AutoPrintRegExp = void 0;
+exports.animationStarted = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = exports.RenderingStates = exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.OutputScale = exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.DEFAULT_SCALE_VALUE = exports.DEFAULT_SCALE_DELTA = exports.DEFAULT_SCALE = exports.AutoPrintRegExp = void 0;
exports.apiPageLayoutToViewerModes = apiPageLayoutToViewerModes;
exports.apiPageModeToSidebarView = apiPageModeToSidebarView;
exports.approximateFraction = approximateFraction;
exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements;
exports.binarySearchFirstItem = binarySearchFirstItem;
exports.getActiveOrFocusedElement = getActiveOrFocusedElement;
-exports.getOutputScale = getOutputScale;
exports.getPageSizeInches = getPageSizeInches;
exports.getVisibleElements = getVisibleElements;
exports.isPortraitOrientation = isPortraitOrientation;
@@ -3126,6 +3101,7 @@ exports.noContextMenuHandler = noContextMenuHandler;
exports.normalizeWheelEventDelta = normalizeWheelEventDelta;
exports.normalizeWheelEventDirection = normalizeWheelEventDirection;
exports.parseQueryString = parseQueryString;
+exports.removeNullCharacters = removeNullCharacters;
exports.roundToDivide = roundToDivide;
exports.scrollIntoView = scrollIntoView;
exports.watchScroll = watchScroll;
@@ -3200,17 +3176,21 @@ exports.SpreadMode = SpreadMode;
const AutoPrintRegExp = /\bprint\s*\(/;
exports.AutoPrintRegExp = AutoPrintRegExp;
-function getOutputScale(ctx) {
- const devicePixelRatio = window.devicePixelRatio || 1;
- const backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;
- const pixelRatio = devicePixelRatio / backingStoreRatio;
- return {
- sx: pixelRatio,
- sy: pixelRatio,
- scaled: pixelRatio !== 1
- };
+class OutputScale {
+ constructor() {
+ const pixelRatio = window.devicePixelRatio || 1;
+ this.sx = pixelRatio;
+ this.sy = pixelRatio;
+ }
+
+ get scaled() {
+ return this.sx !== 1 || this.sy !== 1;
+ }
+
}
+exports.OutputScale = OutputScale;
+
function scrollIntoView(element, spot, scrollMatches = false) {
let parent = element.offsetParent;
@@ -3296,8 +3276,24 @@ function parseQueryString(query) {
return params;
}
-function binarySearchFirstItem(items, condition) {
- let minIndex = 0;
+const NullCharactersRegExp = /\x00/g;
+const InvisibleCharactersRegExp = /[\x01-\x1F]/g;
+
+function removeNullCharacters(str, replaceInvisible = false) {
+ if (typeof str !== "string") {
+ console.error(`The argument must be a string.`);
+ return str;
+ }
+
+ if (replaceInvisible) {
+ str = str.replace(InvisibleCharactersRegExp, " ");
+ }
+
+ return str.replace(NullCharactersRegExp, "");
+}
+
+function binarySearchFirstItem(items, condition, start = 0) {
+ let minIndex = start;
let maxIndex = items.length - 1;
if (maxIndex < 0 || !condition(items[maxIndex])) {
@@ -4135,6 +4131,539 @@ exports.GrabToPan = GrabToPan;
/***/ }),
/* 8 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.SimpleLinkService = exports.PDFLinkService = exports.LinkTarget = void 0;
+
+var _ui_utils = __webpack_require__(3);
+
+const DEFAULT_LINK_REL = "noopener noreferrer nofollow";
+const LinkTarget = {
+ NONE: 0,
+ SELF: 1,
+ BLANK: 2,
+ PARENT: 3,
+ TOP: 4
+};
+exports.LinkTarget = LinkTarget;
+
+function addLinkAttributes(link, {
+ url,
+ target,
+ rel,
+ enabled = true
+} = {}) {
+ if (!url || typeof url !== "string") {
+ throw new Error('A valid "url" parameter must provided.');
+ }
+
+ const urlNullRemoved = (0, _ui_utils.removeNullCharacters)(url);
+
+ if (enabled) {
+ link.href = link.title = urlNullRemoved;
+ } else {
+ link.href = "";
+ link.title = `Disabled: ${urlNullRemoved}`;
+
+ link.onclick = () => {
+ return false;
+ };
+ }
+
+ let targetStr = "";
+
+ switch (target) {
+ case LinkTarget.NONE:
+ break;
+
+ case LinkTarget.SELF:
+ targetStr = "_self";
+ break;
+
+ case LinkTarget.BLANK:
+ targetStr = "_blank";
+ break;
+
+ case LinkTarget.PARENT:
+ targetStr = "_parent";
+ break;
+
+ case LinkTarget.TOP:
+ targetStr = "_top";
+ break;
+ }
+
+ link.target = targetStr;
+ link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL;
+}
+
+class PDFLinkService {
+ #pagesRefCache = new Map();
+
+ constructor({
+ eventBus,
+ externalLinkTarget = null,
+ externalLinkRel = null,
+ ignoreDestinationZoom = false
+ } = {}) {
+ this.eventBus = eventBus;
+ this.externalLinkTarget = externalLinkTarget;
+ this.externalLinkRel = externalLinkRel;
+ this.externalLinkEnabled = true;
+ this._ignoreDestinationZoom = ignoreDestinationZoom;
+ this.baseUrl = null;
+ this.pdfDocument = null;
+ this.pdfViewer = null;
+ this.pdfHistory = null;
+ }
+
+ setDocument(pdfDocument, baseUrl = null) {
+ this.baseUrl = baseUrl;
+ this.pdfDocument = pdfDocument;
+ this.#pagesRefCache.clear();
+ }
+
+ setViewer(pdfViewer) {
+ this.pdfViewer = pdfViewer;
+ }
+
+ setHistory(pdfHistory) {
+ this.pdfHistory = pdfHistory;
+ }
+
+ get pagesCount() {
+ return this.pdfDocument ? this.pdfDocument.numPages : 0;
+ }
+
+ get page() {
+ return this.pdfViewer.currentPageNumber;
+ }
+
+ set page(value) {
+ this.pdfViewer.currentPageNumber = value;
+ }
+
+ get rotation() {
+ return this.pdfViewer.pagesRotation;
+ }
+
+ set rotation(value) {
+ this.pdfViewer.pagesRotation = value;
+ }
+
+ #goToDestinationHelper(rawDest, namedDest = null, explicitDest) {
+ const destRef = explicitDest[0];
+ let pageNumber;
+
+ if (typeof destRef === "object" && destRef !== null) {
+ pageNumber = this._cachedPageNumber(destRef);
+
+ if (!pageNumber) {
+ this.pdfDocument.getPageIndex(destRef).then(pageIndex => {
+ this.cachePageRef(pageIndex + 1, destRef);
+ this.#goToDestinationHelper(rawDest, namedDest, explicitDest);
+ }).catch(() => {
+ console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid page reference, for dest="${rawDest}".`);
+ });
+ return;
+ }
+ } else if (Number.isInteger(destRef)) {
+ pageNumber = destRef + 1;
+ } else {
+ console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid destination reference, for dest="${rawDest}".`);
+ return;
+ }
+
+ if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {
+ console.error(`PDFLinkService.#goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`);
+ return;
+ }
+
+ if (this.pdfHistory) {
+ this.pdfHistory.pushCurrentPosition();
+ this.pdfHistory.push({
+ namedDest,
+ explicitDest,
+ pageNumber
+ });
+ }
+
+ this.pdfViewer.scrollPageIntoView({
+ pageNumber,
+ destArray: explicitDest,
+ ignoreDestinationZoom: this._ignoreDestinationZoom
+ });
+ }
+
+ async goToDestination(dest) {
+ if (!this.pdfDocument) {
+ return;
+ }
+
+ let namedDest, explicitDest;
+
+ if (typeof dest === "string") {
+ namedDest = dest;
+ explicitDest = await this.pdfDocument.getDestination(dest);
+ } else {
+ namedDest = null;
+ explicitDest = await dest;
+ }
+
+ if (!Array.isArray(explicitDest)) {
+ console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination array, for dest="${dest}".`);
+ return;
+ }
+
+ this.#goToDestinationHelper(dest, namedDest, explicitDest);
+ }
+
+ goToPage(val) {
+ if (!this.pdfDocument) {
+ return;
+ }
+
+ const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0;
+
+ if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
+ console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`);
+ return;
+ }
+
+ if (this.pdfHistory) {
+ this.pdfHistory.pushCurrentPosition();
+ this.pdfHistory.pushPage(pageNumber);
+ }
+
+ this.pdfViewer.scrollPageIntoView({
+ pageNumber
+ });
+ }
+
+ addLinkAttributes(link, url, newWindow = false) {
+ addLinkAttributes(link, {
+ url,
+ target: newWindow ? LinkTarget.BLANK : this.externalLinkTarget,
+ rel: this.externalLinkRel,
+ enabled: this.externalLinkEnabled
+ });
+ }
+
+ getDestinationHash(dest) {
+ if (typeof dest === "string") {
+ if (dest.length > 0) {
+ return this.getAnchorUrl("#" + escape(dest));
+ }
+ } else if (Array.isArray(dest)) {
+ const str = JSON.stringify(dest);
+
+ if (str.length > 0) {
+ return this.getAnchorUrl("#" + escape(str));
+ }
+ }
+
+ return this.getAnchorUrl("");
+ }
+
+ getAnchorUrl(anchor) {
+ return (this.baseUrl || "") + anchor;
+ }
+
+ setHash(hash) {
+ if (!this.pdfDocument) {
+ return;
+ }
+
+ let pageNumber, dest;
+
+ if (hash.includes("=")) {
+ const params = (0, _ui_utils.parseQueryString)(hash);
+
+ if (params.has("search")) {
+ this.eventBus.dispatch("findfromurlhash", {
+ source: this,
+ query: params.get("search").replace(/"/g, ""),
+ phraseSearch: params.get("phrase") === "true"
+ });
+ }
+
+ if (params.has("page")) {
+ pageNumber = params.get("page") | 0 || 1;
+ }
+
+ if (params.has("zoom")) {
+ const zoomArgs = params.get("zoom").split(",");
+ const zoomArg = zoomArgs[0];
+ const zoomArgNumber = parseFloat(zoomArg);
+
+ if (!zoomArg.includes("Fit")) {
+ dest = [null, {
+ name: "XYZ"
+ }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg];
+ } else {
+ if (zoomArg === "Fit" || zoomArg === "FitB") {
+ dest = [null, {
+ name: zoomArg
+ }];
+ } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") {
+ dest = [null, {
+ name: zoomArg
+ }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null];
+ } else if (zoomArg === "FitR") {
+ if (zoomArgs.length !== 5) {
+ console.error('PDFLinkService.setHash: Not enough parameters for "FitR".');
+ } else {
+ dest = [null, {
+ name: zoomArg
+ }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0];
+ }
+ } else {
+ console.error(`PDFLinkService.setHash: "${zoomArg}" is not a valid zoom value.`);
+ }
+ }
+ }
+
+ if (dest) {
+ this.pdfViewer.scrollPageIntoView({
+ pageNumber: pageNumber || this.page,
+ destArray: dest,
+ allowNegativeOffset: true
+ });
+ } else if (pageNumber) {
+ this.page = pageNumber;
+ }
+
+ if (params.has("pagemode")) {
+ this.eventBus.dispatch("pagemode", {
+ source: this,
+ mode: params.get("pagemode")
+ });
+ }
+
+ if (params.has("nameddest")) {
+ this.goToDestination(params.get("nameddest"));
+ }
+ } else {
+ dest = unescape(hash);
+
+ try {
+ dest = JSON.parse(dest);
+
+ if (!Array.isArray(dest)) {
+ dest = dest.toString();
+ }
+ } catch (ex) {}
+
+ if (typeof dest === "string" || PDFLinkService.#isValidExplicitDestination(dest)) {
+ this.goToDestination(dest);
+ return;
+ }
+
+ console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not a valid destination.`);
+ }
+ }
+
+ executeNamedAction(action) {
+ switch (action) {
+ case "GoBack":
+ this.pdfHistory?.back();
+ break;
+
+ case "GoForward":
+ this.pdfHistory?.forward();
+ break;
+
+ case "NextPage":
+ this.pdfViewer.nextPage();
+ break;
+
+ case "PrevPage":
+ this.pdfViewer.previousPage();
+ break;
+
+ case "LastPage":
+ this.page = this.pagesCount;
+ break;
+
+ case "FirstPage":
+ this.page = 1;
+ break;
+
+ default:
+ break;
+ }
+
+ this.eventBus.dispatch("namedaction", {
+ source: this,
+ action
+ });
+ }
+
+ cachePageRef(pageNum, pageRef) {
+ if (!pageRef) {
+ return;
+ }
+
+ const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
+ this.#pagesRefCache.set(refStr, pageNum);
+ }
+
+ _cachedPageNumber(pageRef) {
+ if (!pageRef) {
+ return null;
+ }
+
+ const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
+ return this.#pagesRefCache.get(refStr) || null;
+ }
+
+ isPageVisible(pageNumber) {
+ return this.pdfViewer.isPageVisible(pageNumber);
+ }
+
+ isPageCached(pageNumber) {
+ return this.pdfViewer.isPageCached(pageNumber);
+ }
+
+ static #isValidExplicitDestination(dest) {
+ if (!Array.isArray(dest)) {
+ return false;
+ }
+
+ const destLength = dest.length;
+
+ if (destLength < 2) {
+ return false;
+ }
+
+ const page = dest[0];
+
+ if (!(typeof page === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) {
+ return false;
+ }
+
+ const zoom = dest[1];
+
+ if (!(typeof zoom === "object" && typeof zoom.name === "string")) {
+ return false;
+ }
+
+ let allowNull = true;
+
+ switch (zoom.name) {
+ case "XYZ":
+ if (destLength !== 5) {
+ return false;
+ }
+
+ break;
+
+ case "Fit":
+ case "FitB":
+ return destLength === 2;
+
+ case "FitH":
+ case "FitBH":
+ case "FitV":
+ case "FitBV":
+ if (destLength !== 3) {
+ return false;
+ }
+
+ break;
+
+ case "FitR":
+ if (destLength !== 6) {
+ return false;
+ }
+
+ allowNull = false;
+ break;
+
+ default:
+ return false;
+ }
+
+ for (let i = 2; i < destLength; i++) {
+ const param = dest[i];
+
+ if (!(typeof param === "number" || allowNull && param === null)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+}
+
+exports.PDFLinkService = PDFLinkService;
+
+class SimpleLinkService {
+ constructor() {
+ this.externalLinkEnabled = true;
+ }
+
+ get pagesCount() {
+ return 0;
+ }
+
+ get page() {
+ return 0;
+ }
+
+ set page(value) {}
+
+ get rotation() {
+ return 0;
+ }
+
+ set rotation(value) {}
+
+ async goToDestination(dest) {}
+
+ goToPage(val) {}
+
+ addLinkAttributes(link, url, newWindow = false) {
+ addLinkAttributes(link, {
+ url,
+ enabled: this.externalLinkEnabled
+ });
+ }
+
+ getDestinationHash(dest) {
+ return "#";
+ }
+
+ getAnchorUrl(hash) {
+ return "#";
+ }
+
+ setHash(hash) {}
+
+ executeNamedAction(action) {}
+
+ cachePageRef(pageNum, pageRef) {}
+
+ isPageVisible(pageNumber) {
+ return true;
+ }
+
+ isPageCached(pageNumber) {
+ return true;
+ }
+
+}
+
+exports.SimpleLinkService = SimpleLinkService;
+
+/***/ }),
+/* 9 */
/***/ ((__unused_webpack_module, exports) => {
@@ -4244,7 +4773,7 @@ class OverlayManager {
exports.OverlayManager = OverlayManager;
/***/ }),
-/* 9 */
+/* 10 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -4269,14 +4798,14 @@ class PasswordPrompt {
this._isViewerEmbedded = isViewerEmbedded;
this.updateCallback = null;
this.reason = null;
- this.submitButton.addEventListener("click", this.verify.bind(this));
- this.cancelButton.addEventListener("click", this.close.bind(this));
+ this.submitButton.addEventListener("click", this.#verify.bind(this));
+ this.cancelButton.addEventListener("click", this.#cancel.bind(this));
this.input.addEventListener("keydown", e => {
if (e.keyCode === 13) {
- this.verify();
+ this.#verify();
}
});
- this.overlayManager.register(this.overlayName, this.container, this.close.bind(this), true);
+ this.overlayManager.register(this.overlayName, this.container, this.#cancel.bind(this), true);
}
async open() {
@@ -4290,13 +4819,12 @@ class PasswordPrompt {
this.label.textContent = await this.l10n.get(`password_${passwordIncorrect ? "invalid" : "label"}`);
}
- close() {
- this.overlayManager.close(this.overlayName).then(() => {
- this.input.value = "";
- });
+ async close() {
+ await this.overlayManager.close(this.overlayName);
+ this.input.value = "";
}
- verify() {
+ #verify() {
const password = this.input.value;
if (password?.length > 0) {
@@ -4305,6 +4833,11 @@ class PasswordPrompt {
}
}
+ #cancel() {
+ this.close();
+ this.updateCallback(new Error("PasswordPrompt cancelled."));
+ }
+
setUpdateCallback(updateCallback, reason) {
this.updateCallback = updateCallback;
this.reason = reason;
@@ -4315,7 +4848,7 @@ class PasswordPrompt {
exports.PasswordPrompt = PasswordPrompt;
/***/ }),
-/* 10 */
+/* 11 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -4327,7 +4860,7 @@ exports.PDFAttachmentViewer = void 0;
var _pdfjsLib = __webpack_require__(5);
-var _base_tree_viewer = __webpack_require__(11);
+var _base_tree_viewer = __webpack_require__(12);
class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
constructor(options) {
@@ -4470,7 +5003,7 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
exports.PDFAttachmentViewer = PDFAttachmentViewer;
/***/ }),
-/* 11 */
+/* 12 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -4480,7 +5013,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.BaseTreeViewer = void 0;
-var _pdfjsLib = __webpack_require__(5);
+var _ui_utils = __webpack_require__(3);
const TREEITEM_OFFSET_TOP = -100;
const TREEITEM_SELECTED_CLASS = "selected";
@@ -4513,7 +5046,7 @@ class BaseTreeViewer {
}
_normalizeTextContent(str) {
- return (0, _pdfjsLib.removeNullCharacters)(str, true) || "\u2013";
+ return (0, _ui_utils.removeNullCharacters)(str, true) || "\u2013";
}
_addToggleButton(div, hidden = false) {
@@ -4604,7 +5137,7 @@ class BaseTreeViewer {
exports.BaseTreeViewer = BaseTreeViewer;
/***/ }),
-/* 12 */
+/* 13 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -4876,7 +5409,7 @@ class PDFDocumentProperties {
exports.PDFDocumentProperties = PDFDocumentProperties;
/***/ }),
-/* 13 */
+/* 14 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -4886,7 +5419,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.PDFFindBar = void 0;
-var _pdf_find_controller = __webpack_require__(14);
+var _pdf_find_controller = __webpack_require__(15);
const MATCHES_COUNT_LIMIT = 1000;
@@ -4898,6 +5431,7 @@ class PDFFindBar {
this.findField = options.findField;
this.highlightAll = options.highlightAllCheckbox;
this.caseSensitive = options.caseSensitiveCheckbox;
+ this.matchDiacritics = options.matchDiacriticsCheckbox;
this.entireWord = options.entireWordCheckbox;
this.findMsg = options.findMsg;
this.findResultsCount = options.findResultsCount;
@@ -4940,6 +5474,9 @@ class PDFFindBar {
this.entireWord.addEventListener("click", () => {
this.dispatchEvent("entirewordchange");
});
+ this.matchDiacritics.addEventListener("click", () => {
+ this.dispatchEvent("diacriticmatchingchange");
+ });
this.eventBus._on("resize", this._adjustWidth.bind(this));
}
@@ -4957,7 +5494,8 @@ class PDFFindBar {
caseSensitive: this.caseSensitive.checked,
entireWord: this.entireWord.checked,
highlightAll: this.highlightAll.checked,
- findPrevious: findPrev
+ findPrevious: findPrev,
+ matchDiacritics: this.matchDiacritics.checked
});
}
@@ -5016,7 +5554,6 @@ class PDFFindBar {
matchCountMsg.then(msg => {
this.findResultsCount.textContent = msg;
- this.findResultsCount.classList.toggle("hidden", !total);
this._adjustWidth();
});
@@ -5077,7 +5614,7 @@ class PDFFindBar {
exports.PDFFindBar = PDFFindBar;
/***/ }),
-/* 14 */
+/* 15 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -5087,11 +5624,11 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.PDFFindController = exports.FindState = void 0;
-var _pdfjsLib = __webpack_require__(5);
+var _ui_utils = __webpack_require__(3);
-var _pdf_find_utils = __webpack_require__(15);
+var _pdfjsLib = __webpack_require__(5);
-var _ui_utils = __webpack_require__(3);
+var _pdf_find_utils = __webpack_require__(16);
const FindState = {
FOUND: 0,
@@ -5117,51 +5654,117 @@ const CHARACTERS_TO_NORMALIZE = {
"\u00BD": "1/2",
"\u00BE": "3/4"
};
+const DIACRITICS_EXCEPTION = new Set([0x3099, 0x309a, 0x094d, 0x09cd, 0x0a4d, 0x0acd, 0x0b4d, 0x0bcd, 0x0c4d, 0x0ccd, 0x0d3b, 0x0d3c, 0x0d4d, 0x0dca, 0x0e3a, 0x0eba, 0x0f84, 0x1039, 0x103a, 0x1714, 0x1734, 0x17d2, 0x1a60, 0x1b44, 0x1baa, 0x1bab, 0x1bf2, 0x1bf3, 0x2d7f, 0xa806, 0xa82c, 0xa8c4, 0xa953, 0xa9c0, 0xaaf6, 0xabed, 0x0c56, 0x0f71, 0x0f72, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f80, 0x0f74]);
+const DIACRITICS_EXCEPTION_STR = [...DIACRITICS_EXCEPTION.values()].map(x => String.fromCharCode(x)).join("");
+const DIACRITICS_REG_EXP = /\p{M}+/gu;
+const SPECIAL_CHARS_REG_EXP = /([.*+?^${}()|[\]\\])|(\p{P})|(\s+)|(\p{M})|(\p{L})/gu;
+const NOT_DIACRITIC_FROM_END_REG_EXP = /([^\p{M}])\p{M}*$/u;
+const NOT_DIACRITIC_FROM_START_REG_EXP = /^\p{M}*([^\p{M}])/u;
let normalizationRegex = null;
function normalize(text) {
if (!normalizationRegex) {
const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join("");
- normalizationRegex = new RegExp(`[${replace}]`, "g");
+ normalizationRegex = new RegExp(`([${replace}])|(\\p{M}+(?:-\\n)?)|(\\S-\\n)|(\\n)`, "gum");
}
- let diffs = null;
- const normalizedText = text.replace(normalizationRegex, function (ch, index) {
- const normalizedCh = CHARACTERS_TO_NORMALIZE[ch],
- diff = normalizedCh.length - ch.length;
+ const rawDiacriticsPositions = [];
+ let m;
+
+ while ((m = DIACRITICS_REG_EXP.exec(text)) !== null) {
+ rawDiacriticsPositions.push([m[0].length, m.index]);
+ }
+
+ let normalized = text.normalize("NFD");
+ const positions = [[0, 0]];
+ let k = 0;
+ let shift = 0;
+ let shiftOrigin = 0;
+ let eol = 0;
+ let hasDiacritics = false;
+ normalized = normalized.replace(normalizationRegex, (match, p1, p2, p3, p4, i) => {
+ i -= shiftOrigin;
+
+ if (p1) {
+ const replacement = CHARACTERS_TO_NORMALIZE[match];
+ const jj = replacement.length;
+
+ for (let j = 1; j < jj; j++) {
+ positions.push([i - shift + j, shift - j]);
+ }
+
+ shift -= jj - 1;
+ return replacement;
+ }
+
+ if (p2) {
+ const hasTrailingDashEOL = p2.endsWith("\n");
+ const len = hasTrailingDashEOL ? p2.length - 2 : p2.length;
+ hasDiacritics = true;
+ let jj = len;
- if (diff !== 0) {
- (diffs ||= []).push([index, diff]);
+ if (i + eol === rawDiacriticsPositions[k]?.[1]) {
+ jj -= rawDiacriticsPositions[k][0];
+ ++k;
+ }
+
+ for (let j = 1; j < jj + 1; j++) {
+ positions.push([i - 1 - shift + j, shift - j]);
+ }
+
+ shift -= jj;
+ shiftOrigin += jj;
+
+ if (hasTrailingDashEOL) {
+ i += len - 1;
+ positions.push([i - shift + 1, 1 + shift]);
+ shift += 1;
+ shiftOrigin += 1;
+ eol += 1;
+ return p2.slice(0, len);
+ }
+
+ return p2;
+ }
+
+ if (p3) {
+ positions.push([i - shift + 1, 1 + shift]);
+ shift += 1;
+ shiftOrigin += 1;
+ eol += 1;
+ return p3.charAt(0);
}
- return normalizedCh;
+ positions.push([i - shift + 1, shift - 1]);
+ shift -= 1;
+ shiftOrigin += 1;
+ eol += 1;
+ return " ";
});
- return [normalizedText, diffs];
+ positions.push([normalized.length, shift]);
+ return [normalized, positions, hasDiacritics];
}
-function getOriginalIndex(matchIndex, diffs = null) {
+function getOriginalIndex(diffs, pos, len) {
if (!diffs) {
- return matchIndex;
+ return [pos, len];
}
- let totalDiff = 0;
+ const start = pos;
+ const end = pos + len;
+ let i = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= start);
- for (const [index, diff] of diffs) {
- const currentIndex = index + totalDiff;
-
- if (currentIndex >= matchIndex) {
- break;
- }
+ if (diffs[i][0] > start) {
+ --i;
+ }
- if (currentIndex + diff > matchIndex) {
- totalDiff += matchIndex - currentIndex;
- break;
- }
+ let j = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= end, i);
- totalDiff += diff;
+ if (diffs[j][0] > end) {
+ --j;
}
- return matchIndex - totalDiff;
+ return [start + diffs[i][1], len + diffs[j][1] - diffs[i][1]];
}
class PDFFindController {
@@ -5326,6 +5929,7 @@ class PDFFindController {
this._extractTextPromises = [];
this._pageContents = [];
this._pageDiffs = [];
+ this._hasDiacritics = [];
this._matchesCountTotal = 0;
this._pagesToSearch = null;
this._pendingFindMatches = new Set();
@@ -5368,65 +5972,23 @@ class PDFFindController {
return true;
}
- _prepareMatches(matchesWithLength, matches, matchesLength) {
- function isSubTerm(currentIndex) {
- const currentElem = matchesWithLength[currentIndex];
- const nextElem = matchesWithLength[currentIndex + 1];
-
- if (currentIndex < matchesWithLength.length - 1 && currentElem.match === nextElem.match) {
- currentElem.skipped = true;
- return true;
- }
-
- for (let i = currentIndex - 1; i >= 0; i--) {
- const prevElem = matchesWithLength[i];
-
- if (prevElem.skipped) {
- continue;
- }
-
- if (prevElem.match + prevElem.matchLength < currentElem.match) {
- break;
- }
-
- if (prevElem.match + prevElem.matchLength >= currentElem.match + currentElem.matchLength) {
- currentElem.skipped = true;
- return true;
- }
- }
-
- return false;
- }
-
- matchesWithLength.sort(function (a, b) {
- return a.match === b.match ? a.matchLength - b.matchLength : a.match - b.match;
- });
-
- for (let i = 0, len = matchesWithLength.length; i < len; i++) {
- if (isSubTerm(i)) {
- continue;
- }
-
- matches.push(matchesWithLength[i].match);
- matchesLength.push(matchesWithLength[i].matchLength);
- }
- }
-
_isEntireWord(content, startIdx, length) {
- if (startIdx > 0) {
+ let match = content.slice(0, startIdx).match(NOT_DIACRITIC_FROM_END_REG_EXP);
+
+ if (match) {
const first = content.charCodeAt(startIdx);
- const limit = content.charCodeAt(startIdx - 1);
+ const limit = match[1].charCodeAt(0);
if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) {
return false;
}
}
- const endIdx = startIdx + length - 1;
+ match = content.slice(startIdx + length).match(NOT_DIACRITIC_FROM_START_REG_EXP);
- if (endIdx < content.length - 1) {
- const last = content.charCodeAt(endIdx);
- const limit = content.charCodeAt(endIdx + 1);
+ if (match) {
+ const last = content.charCodeAt(startIdx + length - 1);
+ const limit = match[1].charCodeAt(0);
if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(limit)) {
return false;
@@ -5436,96 +5998,114 @@ class PDFFindController {
return true;
}
- _calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord) {
+ _calculateRegExpMatch(query, entireWord, pageIndex, pageContent) {
const matches = [],
matchesLength = [];
- const queryLen = query.length;
- let matchIdx = -queryLen;
+ const diffs = this._pageDiffs[pageIndex];
+ let match;
- while (true) {
- matchIdx = pageContent.indexOf(query, matchIdx + queryLen);
-
- if (matchIdx === -1) {
- break;
- }
-
- if (entireWord && !this._isEntireWord(pageContent, matchIdx, queryLen)) {
+ while ((match = query.exec(pageContent)) !== null) {
+ if (entireWord && !this._isEntireWord(pageContent, match.index, match[0].length)) {
continue;
}
- const originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs),
- matchEnd = matchIdx + queryLen - 1,
- originalQueryLen = getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1;
- matches.push(originalMatchIdx);
- matchesLength.push(originalQueryLen);
+ const [matchPos, matchLen] = getOriginalIndex(diffs, match.index, match[0].length);
+
+ if (matchLen) {
+ matches.push(matchPos);
+ matchesLength.push(matchLen);
+ }
}
this._pageMatches[pageIndex] = matches;
this._pageMatchesLength[pageIndex] = matchesLength;
}
- _calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord) {
- const matchesWithLength = [];
- const queryArray = query.match(/\S+/g);
+ _convertToRegExpString(query, hasDiacritics) {
+ const {
+ matchDiacritics
+ } = this._state;
+ let isUnicode = false;
+ query = query.replace(SPECIAL_CHARS_REG_EXP, (match, p1, p2, p3, p4, p5) => {
+ if (p1) {
+ return `[ ]*\\${p1}[ ]*`;
+ }
- for (let i = 0, len = queryArray.length; i < len; i++) {
- const subquery = queryArray[i];
- const subqueryLen = subquery.length;
- let matchIdx = -subqueryLen;
+ if (p2) {
+ return `[ ]*${p2}[ ]*`;
+ }
- while (true) {
- matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen);
+ if (p3) {
+ return "[ ]+";
+ }
- if (matchIdx === -1) {
- break;
- }
+ if (matchDiacritics) {
+ return p4 || p5;
+ }
- if (entireWord && !this._isEntireWord(pageContent, matchIdx, subqueryLen)) {
- continue;
- }
+ if (p4) {
+ return DIACRITICS_EXCEPTION.has(p4.charCodeAt(0)) ? p4 : "";
+ }
- const originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs),
- matchEnd = matchIdx + subqueryLen - 1,
- originalQueryLen = getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1;
- matchesWithLength.push({
- match: originalMatchIdx,
- matchLength: originalQueryLen,
- skipped: false
- });
+ if (hasDiacritics) {
+ isUnicode = true;
+ return `${p5}\\p{M}*`;
}
+
+ return p5;
+ });
+ const trailingSpaces = "[ ]*";
+
+ if (query.endsWith(trailingSpaces)) {
+ query = query.slice(0, query.length - trailingSpaces.length);
}
- this._pageMatchesLength[pageIndex] = [];
- this._pageMatches[pageIndex] = [];
+ if (matchDiacritics) {
+ if (hasDiacritics) {
+ isUnicode = true;
+ query = `${query}(?=[${DIACRITICS_EXCEPTION_STR}]|[^\\p{M}]|$)`;
+ }
+ }
- this._prepareMatches(matchesWithLength, this._pageMatches[pageIndex], this._pageMatchesLength[pageIndex]);
+ return [isUnicode, query];
}
_calculateMatch(pageIndex) {
- let pageContent = this._pageContents[pageIndex];
- const pageDiffs = this._pageDiffs[pageIndex];
let query = this._query;
- const {
- caseSensitive,
- entireWord,
- phraseSearch
- } = this._state;
if (query.length === 0) {
return;
}
- if (!caseSensitive) {
- pageContent = pageContent.toLowerCase();
- query = query.toLowerCase();
- }
+ const {
+ caseSensitive,
+ entireWord,
+ phraseSearch
+ } = this._state;
+ const pageContent = this._pageContents[pageIndex];
+ const hasDiacritics = this._hasDiacritics[pageIndex];
+ let isUnicode = false;
if (phraseSearch) {
- this._calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord);
+ [isUnicode, query] = this._convertToRegExpString(query, hasDiacritics);
} else {
- this._calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord);
+ const match = query.match(/\S+/g);
+
+ if (match) {
+ query = match.sort().reverse().map(q => {
+ const [isUnicodePart, queryPart] = this._convertToRegExpString(q, hasDiacritics);
+
+ isUnicode ||= isUnicodePart;
+ return `(${queryPart})`;
+ }).join("|");
+ }
}
+ const flags = `g${isUnicode ? "u" : ""}${caseSensitive ? "" : "i"}`;
+ query = new RegExp(query, flags);
+
+ this._calculateRegExpMatch(query, entireWord, pageIndex, pageContent);
+
if (this._state.highlightAll) {
this._updatePage(pageIndex);
}
@@ -5557,23 +6137,26 @@ class PDFFindController {
this._extractTextPromises[i] = extractTextCapability.promise;
promise = promise.then(() => {
return this._pdfDocument.getPage(i + 1).then(pdfPage => {
- return pdfPage.getTextContent({
- normalizeWhitespace: true
- });
+ return pdfPage.getTextContent();
}).then(textContent => {
const textItems = textContent.items;
const strBuf = [];
for (let j = 0, jj = textItems.length; j < jj; j++) {
strBuf.push(textItems[j].str);
+
+ if (textItems[j].hasEOL) {
+ strBuf.push("\n");
+ }
}
- [this._pageContents[i], this._pageDiffs[i]] = normalize(strBuf.join(""));
+ [this._pageContents[i], this._pageDiffs[i], this._hasDiacritics[i]] = normalize(strBuf.join(""));
extractTextCapability.resolve(i);
}, reason => {
console.error(`Unable to get text content for page ${i + 1}`, reason);
this._pageContents[i] = "";
this._pageDiffs[i] = null;
+ this._hasDiacritics[i] = false;
extractTextCapability.resolve(i);
});
});
@@ -5820,7 +6403,7 @@ class PDFFindController {
exports.PDFFindController = PDFFindController;
/***/ }),
-/* 15 */
+/* 16 */
/***/ ((__unused_webpack_module, exports) => {
@@ -5915,7 +6498,7 @@ function getCharacterType(charCode) {
}
/***/ }),
-/* 16 */
+/* 17 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -6529,7 +7112,7 @@ function isDestArraysEqual(firstDest, secondDest) {
}
/***/ }),
-/* 17 */
+/* 18 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -6539,7 +7122,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.PDFLayerViewer = void 0;
-var _base_tree_viewer = __webpack_require__(11);
+var _base_tree_viewer = __webpack_require__(12);
class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer {
constructor(options) {
@@ -6713,481 +7296,6 @@ class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer {
exports.PDFLayerViewer = PDFLayerViewer;
/***/ }),
-/* 18 */
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
- value: true
-}));
-exports.SimpleLinkService = exports.PDFLinkService = void 0;
-
-var _pdfjsLib = __webpack_require__(5);
-
-var _ui_utils = __webpack_require__(3);
-
-class PDFLinkService {
- constructor({
- eventBus,
- externalLinkTarget = null,
- externalLinkRel = null,
- ignoreDestinationZoom = false
- } = {}) {
- this.eventBus = eventBus;
- this.externalLinkTarget = externalLinkTarget;
- this.externalLinkRel = externalLinkRel;
- this.externalLinkEnabled = true;
- this._ignoreDestinationZoom = ignoreDestinationZoom;
- this.baseUrl = null;
- this.pdfDocument = null;
- this.pdfViewer = null;
- this.pdfHistory = null;
- this._pagesRefCache = null;
- }
-
- setDocument(pdfDocument, baseUrl = null) {
- this.baseUrl = baseUrl;
- this.pdfDocument = pdfDocument;
- this._pagesRefCache = Object.create(null);
- }
-
- setViewer(pdfViewer) {
- this.pdfViewer = pdfViewer;
- }
-
- setHistory(pdfHistory) {
- this.pdfHistory = pdfHistory;
- }
-
- get pagesCount() {
- return this.pdfDocument ? this.pdfDocument.numPages : 0;
- }
-
- get page() {
- return this.pdfViewer.currentPageNumber;
- }
-
- set page(value) {
- this.pdfViewer.currentPageNumber = value;
- }
-
- get rotation() {
- return this.pdfViewer.pagesRotation;
- }
-
- set rotation(value) {
- this.pdfViewer.pagesRotation = value;
- }
-
- _goToDestinationHelper(rawDest, namedDest = null, explicitDest) {
- const destRef = explicitDest[0];
- let pageNumber;
-
- if (typeof destRef === "object" && destRef !== null) {
- pageNumber = this._cachedPageNumber(destRef);
-
- if (!pageNumber) {
- this.pdfDocument.getPageIndex(destRef).then(pageIndex => {
- this.cachePageRef(pageIndex + 1, destRef);
-
- this._goToDestinationHelper(rawDest, namedDest, explicitDest);
- }).catch(() => {
- console.error(`PDFLinkService._goToDestinationHelper: "${destRef}" is not ` + `a valid page reference, for dest="${rawDest}".`);
- });
- return;
- }
- } else if (Number.isInteger(destRef)) {
- pageNumber = destRef + 1;
- } else {
- console.error(`PDFLinkService._goToDestinationHelper: "${destRef}" is not ` + `a valid destination reference, for dest="${rawDest}".`);
- return;
- }
-
- if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {
- console.error(`PDFLinkService._goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`);
- return;
- }
-
- if (this.pdfHistory) {
- this.pdfHistory.pushCurrentPosition();
- this.pdfHistory.push({
- namedDest,
- explicitDest,
- pageNumber
- });
- }
-
- this.pdfViewer.scrollPageIntoView({
- pageNumber,
- destArray: explicitDest,
- ignoreDestinationZoom: this._ignoreDestinationZoom
- });
- }
-
- async goToDestination(dest) {
- if (!this.pdfDocument) {
- return;
- }
-
- let namedDest, explicitDest;
-
- if (typeof dest === "string") {
- namedDest = dest;
- explicitDest = await this.pdfDocument.getDestination(dest);
- } else {
- namedDest = null;
- explicitDest = await dest;
- }
-
- if (!Array.isArray(explicitDest)) {
- console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination array, for dest="${dest}".`);
- return;
- }
-
- this._goToDestinationHelper(dest, namedDest, explicitDest);
- }
-
- goToPage(val) {
- if (!this.pdfDocument) {
- return;
- }
-
- const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0;
-
- if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
- console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`);
- return;
- }
-
- if (this.pdfHistory) {
- this.pdfHistory.pushCurrentPosition();
- this.pdfHistory.pushPage(pageNumber);
- }
-
- this.pdfViewer.scrollPageIntoView({
- pageNumber
- });
- }
-
- addLinkAttributes(link, url, newWindow = false) {
- (0, _pdfjsLib.addLinkAttributes)(link, {
- url,
- target: newWindow ? _pdfjsLib.LinkTarget.BLANK : this.externalLinkTarget,
- rel: this.externalLinkRel,
- enabled: this.externalLinkEnabled
- });
- }
-
- getDestinationHash(dest) {
- if (typeof dest === "string") {
- if (dest.length > 0) {
- return this.getAnchorUrl("#" + escape(dest));
- }
- } else if (Array.isArray(dest)) {
- const str = JSON.stringify(dest);
-
- if (str.length > 0) {
- return this.getAnchorUrl("#" + escape(str));
- }
- }
-
- return this.getAnchorUrl("");
- }
-
- getAnchorUrl(anchor) {
- return (this.baseUrl || "") + anchor;
- }
-
- setHash(hash) {
- if (!this.pdfDocument) {
- return;
- }
-
- let pageNumber, dest;
-
- if (hash.includes("=")) {
- const params = (0, _ui_utils.parseQueryString)(hash);
-
- if (params.has("search")) {
- this.eventBus.dispatch("findfromurlhash", {
- source: this,
- query: params.get("search").replace(/"/g, ""),
- phraseSearch: params.get("phrase") === "true"
- });
- }
-
- if (params.has("page")) {
- pageNumber = params.get("page") | 0 || 1;
- }
-
- if (params.has("zoom")) {
- const zoomArgs = params.get("zoom").split(",");
- const zoomArg = zoomArgs[0];
- const zoomArgNumber = parseFloat(zoomArg);
-
- if (!zoomArg.includes("Fit")) {
- dest = [null, {
- name: "XYZ"
- }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg];
- } else {
- if (zoomArg === "Fit" || zoomArg === "FitB") {
- dest = [null, {
- name: zoomArg
- }];
- } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") {
- dest = [null, {
- name: zoomArg
- }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null];
- } else if (zoomArg === "FitR") {
- if (zoomArgs.length !== 5) {
- console.error('PDFLinkService.setHash: Not enough parameters for "FitR".');
- } else {
- dest = [null, {
- name: zoomArg
- }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0];
- }
- } else {
- console.error(`PDFLinkService.setHash: "${zoomArg}" is not ` + "a valid zoom value.");
- }
- }
- }
-
- if (dest) {
- this.pdfViewer.scrollPageIntoView({
- pageNumber: pageNumber || this.page,
- destArray: dest,
- allowNegativeOffset: true
- });
- } else if (pageNumber) {
- this.page = pageNumber;
- }
-
- if (params.has("pagemode")) {
- this.eventBus.dispatch("pagemode", {
- source: this,
- mode: params.get("pagemode")
- });
- }
-
- if (params.has("nameddest")) {
- this.goToDestination(params.get("nameddest"));
- }
- } else {
- dest = unescape(hash);
-
- try {
- dest = JSON.parse(dest);
-
- if (!Array.isArray(dest)) {
- dest = dest.toString();
- }
- } catch (ex) {}
-
- if (typeof dest === "string" || isValidExplicitDestination(dest)) {
- this.goToDestination(dest);
- return;
- }
-
- console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not ` + "a valid destination.");
- }
- }
-
- executeNamedAction(action) {
- switch (action) {
- case "GoBack":
- this.pdfHistory?.back();
- break;
-
- case "GoForward":
- this.pdfHistory?.forward();
- break;
-
- case "NextPage":
- this.pdfViewer.nextPage();
- break;
-
- case "PrevPage":
- this.pdfViewer.previousPage();
- break;
-
- case "LastPage":
- this.page = this.pagesCount;
- break;
-
- case "FirstPage":
- this.page = 1;
- break;
-
- default:
- break;
- }
-
- this.eventBus.dispatch("namedaction", {
- source: this,
- action
- });
- }
-
- cachePageRef(pageNum, pageRef) {
- if (!pageRef) {
- return;
- }
-
- const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
- this._pagesRefCache[refStr] = pageNum;
- }
-
- _cachedPageNumber(pageRef) {
- if (!pageRef) {
- return null;
- }
-
- const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
- return this._pagesRefCache?.[refStr] || null;
- }
-
- isPageVisible(pageNumber) {
- return this.pdfViewer.isPageVisible(pageNumber);
- }
-
- isPageCached(pageNumber) {
- return this.pdfViewer.isPageCached(pageNumber);
- }
-
-}
-
-exports.PDFLinkService = PDFLinkService;
-
-function isValidExplicitDestination(dest) {
- if (!Array.isArray(dest)) {
- return false;
- }
-
- const destLength = dest.length;
-
- if (destLength < 2) {
- return false;
- }
-
- const page = dest[0];
-
- if (!(typeof page === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) {
- return false;
- }
-
- const zoom = dest[1];
-
- if (!(typeof zoom === "object" && typeof zoom.name === "string")) {
- return false;
- }
-
- let allowNull = true;
-
- switch (zoom.name) {
- case "XYZ":
- if (destLength !== 5) {
- return false;
- }
-
- break;
-
- case "Fit":
- case "FitB":
- return destLength === 2;
-
- case "FitH":
- case "FitBH":
- case "FitV":
- case "FitBV":
- if (destLength !== 3) {
- return false;
- }
-
- break;
-
- case "FitR":
- if (destLength !== 6) {
- return false;
- }
-
- allowNull = false;
- break;
-
- default:
- return false;
- }
-
- for (let i = 2; i < destLength; i++) {
- const param = dest[i];
-
- if (!(typeof param === "number" || allowNull && param === null)) {
- return false;
- }
- }
-
- return true;
-}
-
-class SimpleLinkService {
- constructor() {
- this.externalLinkEnabled = true;
- }
-
- get pagesCount() {
- return 0;
- }
-
- get page() {
- return 0;
- }
-
- set page(value) {}
-
- get rotation() {
- return 0;
- }
-
- set rotation(value) {}
-
- async goToDestination(dest) {}
-
- goToPage(val) {}
-
- addLinkAttributes(link, url, newWindow = false) {
- (0, _pdfjsLib.addLinkAttributes)(link, {
- url,
- enabled: this.externalLinkEnabled
- });
- }
-
- getDestinationHash(dest) {
- return "#";
- }
-
- getAnchorUrl(hash) {
- return "#";
- }
-
- setHash(hash) {}
-
- executeNamedAction(action) {}
-
- cachePageRef(pageNum, pageRef) {}
-
- isPageVisible(pageNumber) {
- return true;
- }
-
- isPageCached(pageNumber) {
- return true;
- }
-
-}
-
-exports.SimpleLinkService = SimpleLinkService;
-
-/***/ }),
/* 19 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -7198,7 +7306,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.PDFOutlineViewer = void 0;
-var _base_tree_viewer = __webpack_require__(11);
+var _base_tree_viewer = __webpack_require__(12);
var _pdfjsLib = __webpack_require__(5);
@@ -7562,26 +7670,14 @@ class PDFPresentationMode {
}
request() {
- if (this.switchInProgress || this.active || !this.pdfViewer.pagesCount) {
- return false;
- }
-
- this._addFullscreenChangeListeners();
-
- this._setSwitchInProgress();
-
- this._notifyStateChange();
-
- if (this.container.requestFullscreen) {
- this.container.requestFullscreen();
- } else if (this.container.mozRequestFullScreen) {
- this.container.mozRequestFullScreen();
- } else if (this.container.webkitRequestFullscreen) {
- this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
- } else {
+ if (this.switchInProgress || this.active || !this.pdfViewer.pagesCount || !this.container.requestFullscreen) {
return false;
}
+ this.#addFullscreenChangeListeners();
+ this.#setSwitchInProgress();
+ this.#notifyStateChange();
+ this.container.requestFullscreen();
this.args = {
pageNumber: this.pdfViewer.currentPageNumber,
scaleValue: this.pdfViewer.currentScaleValue,
@@ -7591,7 +7687,7 @@ class PDFPresentationMode {
return true;
}
- _mouseWheel(evt) {
+ #mouseWheel(evt) {
if (!this.active) {
return;
}
@@ -7606,16 +7702,14 @@ class PDFPresentationMode {
}
if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) {
- this._resetMouseScrollState();
+ this.#resetMouseScrollState();
}
this.mouseScrollDelta += delta;
if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {
const totalDelta = this.mouseScrollDelta;
-
- this._resetMouseScrollState();
-
+ this.#resetMouseScrollState();
const success = totalDelta > 0 ? this.pdfViewer.previousPage() : this.pdfViewer.nextPage();
if (success) {
@@ -7624,11 +7718,7 @@ class PDFPresentationMode {
}
}
- get isFullscreen() {
- return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen);
- }
-
- _notifyStateChange() {
+ #notifyStateChange() {
let state = _ui_utils.PresentationModeState.NORMAL;
if (this.switchInProgress) {
@@ -7643,34 +7733,29 @@ class PDFPresentationMode {
});
}
- _setSwitchInProgress() {
+ #setSwitchInProgress() {
if (this.switchInProgress) {
clearTimeout(this.switchInProgress);
}
this.switchInProgress = setTimeout(() => {
- this._removeFullscreenChangeListeners();
-
+ this.#removeFullscreenChangeListeners();
delete this.switchInProgress;
-
- this._notifyStateChange();
+ this.#notifyStateChange();
}, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS);
}
- _resetSwitchInProgress() {
+ #resetSwitchInProgress() {
if (this.switchInProgress) {
clearTimeout(this.switchInProgress);
delete this.switchInProgress;
}
}
- _enter() {
+ #enter() {
this.active = true;
-
- this._resetSwitchInProgress();
-
- this._notifyStateChange();
-
+ this.#resetSwitchInProgress();
+ this.#notifyStateChange();
this.container.classList.add(ACTIVE_SELECTOR);
setTimeout(() => {
this.pdfViewer.scrollMode = _ui_utils.ScrollMode.PAGE;
@@ -7678,42 +7763,32 @@ class PDFPresentationMode {
this.pdfViewer.currentPageNumber = this.args.pageNumber;
this.pdfViewer.currentScaleValue = "page-fit";
}, 0);
-
- this._addWindowListeners();
-
- this._showControls();
-
+ this.#addWindowListeners();
+ this.#showControls();
this.contextMenuOpen = false;
window.getSelection().removeAllRanges();
}
- _exit() {
+ #exit() {
const pageNumber = this.pdfViewer.currentPageNumber;
this.container.classList.remove(ACTIVE_SELECTOR);
setTimeout(() => {
this.active = false;
-
- this._removeFullscreenChangeListeners();
-
- this._notifyStateChange();
-
+ this.#removeFullscreenChangeListeners();
+ this.#notifyStateChange();
this.pdfViewer.scrollMode = this.args.scrollMode;
this.pdfViewer.spreadMode = this.args.spreadMode;
this.pdfViewer.currentScaleValue = this.args.scaleValue;
this.pdfViewer.currentPageNumber = pageNumber;
this.args = null;
}, 0);
-
- this._removeWindowListeners();
-
- this._hideControls();
-
- this._resetMouseScrollState();
-
+ this.#removeWindowListeners();
+ this.#hideControls();
+ this.#resetMouseScrollState();
this.contextMenuOpen = false;
}
- _mouseDown(evt) {
+ #mouseDown(evt) {
if (this.contextMenuOpen) {
this.contextMenuOpen = false;
evt.preventDefault();
@@ -7735,11 +7810,11 @@ class PDFPresentationMode {
}
}
- _contextMenu() {
+ #contextMenu() {
this.contextMenuOpen = true;
}
- _showControls() {
+ #showControls() {
if (this.controlsTimeout) {
clearTimeout(this.controlsTimeout);
} else {
@@ -7752,7 +7827,7 @@ class PDFPresentationMode {
}, DELAY_BEFORE_HIDING_CONTROLS);
}
- _hideControls() {
+ #hideControls() {
if (!this.controlsTimeout) {
return;
}
@@ -7762,12 +7837,12 @@ class PDFPresentationMode {
delete this.controlsTimeout;
}
- _resetMouseScrollState() {
+ #resetMouseScrollState() {
this.mouseScrollTimeStamp = 0;
this.mouseScrollDelta = 0;
}
- _touchSwipe(evt) {
+ #touchSwipe(evt) {
if (!this.active) {
return;
}
@@ -7823,13 +7898,13 @@ class PDFPresentationMode {
}
}
- _addWindowListeners() {
- this.showControlsBind = this._showControls.bind(this);
- this.mouseDownBind = this._mouseDown.bind(this);
- this.mouseWheelBind = this._mouseWheel.bind(this);
- this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this);
- this.contextMenuBind = this._contextMenu.bind(this);
- this.touchSwipeBind = this._touchSwipe.bind(this);
+ #addWindowListeners() {
+ this.showControlsBind = this.#showControls.bind(this);
+ this.mouseDownBind = this.#mouseDown.bind(this);
+ this.mouseWheelBind = this.#mouseWheel.bind(this);
+ this.resetMouseScrollStateBind = this.#resetMouseScrollState.bind(this);
+ this.contextMenuBind = this.#contextMenu.bind(this);
+ this.touchSwipeBind = this.#touchSwipe.bind(this);
window.addEventListener("mousemove", this.showControlsBind);
window.addEventListener("mousedown", this.mouseDownBind);
window.addEventListener("wheel", this.mouseWheelBind, {
@@ -7842,7 +7917,7 @@ class PDFPresentationMode {
window.addEventListener("touchend", this.touchSwipeBind);
}
- _removeWindowListeners() {
+ #removeWindowListeners() {
window.removeEventListener("mousemove", this.showControlsBind);
window.removeEventListener("mousedown", this.mouseDownBind);
window.removeEventListener("wheel", this.mouseWheelBind, {
@@ -7861,25 +7936,21 @@ class PDFPresentationMode {
delete this.touchSwipeBind;
}
- _fullscreenChange() {
- if (this.isFullscreen) {
- this._enter();
+ #fullscreenChange() {
+ if (document.fullscreenElement) {
+ this.#enter();
} else {
- this._exit();
+ this.#exit();
}
}
- _addFullscreenChangeListeners() {
- this.fullscreenChangeBind = this._fullscreenChange.bind(this);
+ #addFullscreenChangeListeners() {
+ this.fullscreenChangeBind = this.#fullscreenChange.bind(this);
window.addEventListener("fullscreenchange", this.fullscreenChangeBind);
- window.addEventListener("mozfullscreenchange", this.fullscreenChangeBind);
- window.addEventListener("webkitfullscreenchange", this.fullscreenChangeBind);
}
- _removeFullscreenChangeListeners() {
+ #removeFullscreenChangeListeners() {
window.removeEventListener("fullscreenchange", this.fullscreenChangeBind);
- window.removeEventListener("mozfullscreenchange", this.fullscreenChangeBind);
- window.removeEventListener("webkitfullscreenchange", this.fullscreenChangeBind);
delete this.fullscreenChangeBind;
}
@@ -9501,7 +9572,7 @@ class PDFThumbnailView {
const ctx = canvas.getContext("2d", {
alpha: false
});
- const outputScale = (0, _ui_utils.getOutputScale)(ctx);
+ const outputScale = new _ui_utils.OutputScale();
canvas.width = upscaleFactor * this.canvasWidth * outputScale.sx | 0;
canvas.height = upscaleFactor * this.canvasHeight * outputScale.sy | 0;
const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null;
@@ -9774,7 +9845,7 @@ var _pdf_page_view = __webpack_require__(31);
var _pdf_rendering_queue = __webpack_require__(21);
-var _pdf_link_service = __webpack_require__(18);
+var _pdf_link_service = __webpack_require__(8);
var _struct_tree_layer_builder = __webpack_require__(32);
@@ -9789,7 +9860,7 @@ const ENABLE_PERMISSIONS_CLASS = "enablePermissions";
const PagesCountLimit = {
FORCE_SCROLL_MODE_PAGE: 15000,
FORCE_LAZY_PAGE_INIT: 7500,
- PAUSE_EAGER_PAGE_INIT: 500
+ PAUSE_EAGER_PAGE_INIT: 250
};
exports.PagesCountLimit = PagesCountLimit;
@@ -9865,13 +9936,14 @@ class BaseViewer {
#enablePermissions = false;
#previousContainerHeight = 0;
#scrollModePageState = null;
+ #onVisibilityChange = null;
constructor(options) {
if (this.constructor === BaseViewer) {
throw new Error("Cannot initialize BaseViewer.");
}
- const viewerVersion = '2.12.313';
+ const viewerVersion = '2.13.216';
if (_pdfjsLib.version !== viewerVersion) {
throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version "${viewerVersion}".`);
@@ -10133,11 +10205,24 @@ class BaseViewer {
}
#onePageRenderedOrForceFetch() {
- if (!this.container.offsetParent || this._getVisiblePages().views.length === 0) {
+ if (document.visibilityState === "hidden" || !this.container.offsetParent || this._getVisiblePages().views.length === 0) {
return Promise.resolve();
}
- return this._onePageRenderedCapability.promise;
+ const visibilityChangePromise = new Promise(resolve => {
+ this.#onVisibilityChange = () => {
+ if (document.visibilityState !== "hidden") {
+ return;
+ }
+
+ resolve();
+ document.removeEventListener("visibilitychange", this.#onVisibilityChange);
+ this.#onVisibilityChange = null;
+ };
+
+ document.addEventListener("visibilitychange", this.#onVisibilityChange);
+ });
+ return Promise.race([this._onePageRenderedCapability.promise, visibilityChangePromise]);
}
setDocument(pdfDocument) {
@@ -10211,6 +10296,11 @@ class BaseViewer {
this.eventBus._off("pagerendered", this._onAfterDraw);
this._onAfterDraw = null;
+
+ if (this.#onVisibilityChange) {
+ document.removeEventListener("visibilitychange", this.#onVisibilityChange);
+ this.#onVisibilityChange = null;
+ }
};
this.eventBus._on("pagerendered", this._onAfterDraw);
@@ -10399,6 +10489,11 @@ class BaseViewer {
this._onAfterDraw = null;
}
+ if (this.#onVisibilityChange) {
+ document.removeEventListener("visibilitychange", this.#onVisibilityChange);
+ this.#onVisibilityChange = null;
+ }
+
this.viewer.textContent = "";
this._updateScrollMode();
@@ -10996,7 +11091,7 @@ class BaseViewer {
pageView.setPdfPage(pdfPage);
}
- if (!this.linkService._cachedPageNumber(pdfPage.ref)) {
+ if (!this.linkService._cachedPageNumber?.(pdfPage.ref)) {
this.linkService.cachePageRef(pageView.id, pdfPage.ref);
}
@@ -12306,7 +12401,6 @@ class PDFPageView {
return finishPaintTask(null).then(() => {
if (textLayer) {
const readableStream = pdfPage.streamTextContent({
- normalizeWhitespace: true,
includeMarkedContent: true
});
textLayer.setTextContentStream(readableStream);
@@ -12403,8 +12497,7 @@ class PDFPageView {
const ctx = canvas.getContext("2d", {
alpha: false
});
- const outputScale = (0, _ui_utils.getOutputScale)(ctx);
- this.outputScale = outputScale;
+ const outputScale = this.outputScale = new _ui_utils.OutputScale();
if (this.useOnlyCssZoom) {
const actualSizeViewport = viewport.clone({
@@ -12412,7 +12505,6 @@ class PDFPageView {
});
outputScale.sx *= actualSizeViewport.width / viewport.width;
outputScale.sy *= actualSizeViewport.height / viewport.height;
- outputScale.scaled = true;
}
if (this.maxCanvasPixels > 0) {
@@ -12422,7 +12514,6 @@ class PDFPageView {
if (outputScale.sx > maxScale || outputScale.sy > maxScale) {
outputScale.sx = maxScale;
outputScale.sy = maxScale;
- outputScale.scaled = true;
this.hasRestrictedScaling = true;
} else {
this.hasRestrictedScaling = false;
@@ -12436,7 +12527,7 @@ class PDFPageView {
canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + "px";
canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + "px";
this.paintedViewportMap.set(canvas, viewport);
- const transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0];
+ const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null;
const renderContext = {
canvasContext: ctx,
transform,
@@ -12484,7 +12575,7 @@ class PDFPageView {
annotationMode: this.#annotationMode
}).then(opList => {
ensureNotCancelled();
- const svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs, _app_options.compatibilityParams.disableCreateObjectURL);
+ const svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs);
return svgGfx.getSVG(opList, actualSizeViewport).then(svg => {
ensureNotCancelled();
this.svg = svg;
@@ -14071,8 +14162,6 @@ exports.DownloadManager = void 0;
var _pdfjsLib = __webpack_require__(5);
-var _app_options = __webpack_require__(1);
-
;
function download(blobUrl, filename) {
@@ -14109,7 +14198,9 @@ class DownloadManager {
}
downloadData(data, filename, contentType) {
- const blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, _app_options.compatibilityParams.disableCreateObjectURL);
+ const blobUrl = URL.createObjectURL(new Blob([data], {
+ type: contentType
+ }));
download(blobUrl, filename);
}
@@ -14117,7 +14208,7 @@ class DownloadManager {
const isPdfData = (0, _pdfjsLib.isPdfFile)(filename);
const contentType = isPdfData ? "application/pdf" : "";
- if (isPdfData && !_app_options.compatibilityParams.disableCreateObjectURL) {
+ if (isPdfData) {
let blobUrl = this._openBlobUrls.get(element);
if (!blobUrl) {
@@ -14147,11 +14238,6 @@ class DownloadManager {
}
download(blob, url, filename, sourceEventType = "download") {
- if (_app_options.compatibilityParams.disableCreateObjectURL) {
- this.downloadUrl(url, filename);
- return;
- }
-
const blobUrl = URL.createObjectURL(blob);
download(blobUrl, filename);
}
@@ -15089,7 +15175,7 @@ class GenericScripting {
async dispatchEventInSandbox(event) {
const sandbox = await this._ready;
- sandbox.dispatchEvent(event);
+ setTimeout(() => sandbox.dispatchEvent(event), 0);
}
async destroySandbox() {
@@ -15116,8 +15202,6 @@ var _pdfjsLib = __webpack_require__(5);
var _app = __webpack_require__(2);
-var _app_options = __webpack_require__(1);
-
var _print_utils = __webpack_require__(46);
let activeService = null;
@@ -15237,7 +15321,7 @@ PDFPrintService.prototype = {
const img = document.createElement("img");
const scratchCanvas = this.scratchCanvas;
- if ("toBlob" in scratchCanvas && !_app_options.compatibilityParams.disableCreateObjectURL) {
+ if ("toBlob" in scratchCanvas) {
scratchCanvas.toBlob(function (blob) {
img.src = URL.createObjectURL(blob);
});
@@ -15413,7 +15497,7 @@ exports.getXfaHtmlForPrinting = getXfaHtmlForPrinting;
var _pdfjsLib = __webpack_require__(5);
-var _pdf_link_service = __webpack_require__(18);
+var _pdf_link_service = __webpack_require__(8);
var _xfa_layer_builder = __webpack_require__(35);
@@ -15494,8 +15578,8 @@ var _app_options = __webpack_require__(1);
var _app = __webpack_require__(2);
-const pdfjsVersion = '2.12.313';
-const pdfjsBuild = 'a2ae56f39';
+const pdfjsVersion = '2.13.216';
+const pdfjsBuild = '399a0ec60';
window.PDFViewerApplication = _app.PDFViewerApplication;
window.PDFViewerApplicationOptions = _app_options.AppOptions;
;
@@ -15522,7 +15606,6 @@ function getViewerConfiguration() {
appContainer: document.body,
mainContainer: document.getElementById("viewerContainer"),
viewerContainer: document.getElementById("viewer"),
- eventBus: null,
toolbar: {
container: document.getElementById("toolbarViewer"),
numPages: document.getElementById("numPages"),
@@ -15589,6 +15672,7 @@ function getViewerConfiguration() {
findField: document.getElementById("findInput"),
highlightAllCheckbox: document.getElementById("findHighlightAll"),
caseSensitiveCheckbox: document.getElementById("findMatchCase"),
+ matchDiacriticsCheckbox: document.getElementById("findMatchDiacritics"),
entireWordCheckbox: document.getElementById("findEntireWord"),
findMsg: document.getElementById("findMsg"),
findResultsCount: document.getElementById("findResultsCount"),
diff --git a/js/pdfjs/web/viewer.js.map b/js/pdfjs/web/viewer.js.map
index 69bb686..04b0581 100644
--- a/js/pdfjs/web/viewer.js.map
+++ b/js/pdfjs/web/viewer.js.map
@@ -1 +1 @@
-{"version":3,"file":"viewer.js","mappings":"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","sources":["webpack://pdf.js/web/app_options.js","webpack://pdf.js/web/app.js","webpack://pdf.js/web/ui_utils.js","webpack://pdf.js/web/event_utils.js","webpack://pdf.js/web/pdfjs.js","webpack://pdf.js/web/pdf_cursor_tools.js","webpack://pdf.js/web/grab_to_pan.js","webpack://pdf.js/web/overlay_manager.js","webpack://pdf.js/web/password_prompt.js","webpack://pdf.js/web/pdf_attachment_viewer.js","webpack://pdf.js/web/base_tree_viewer.js","webpack://pdf.js/web/pdf_document_properties.js","webpack://pdf.js/web/pdf_find_bar.js","webpack://pdf.js/web/pdf_find_controller.js","webpack://pdf.js/web/pdf_find_utils.js","webpack://pdf.js/web/pdf_history.js","webpack://pdf.js/web/pdf_layer_viewer.js","webpack://pdf.js/web/pdf_link_service.js","webpack://pdf.js/web/pdf_outline_viewer.js","webpack://pdf.js/web/pdf_presentation_mode.js","webpack://pdf.js/web/pdf_rendering_queue.js","webpack://pdf.js/web/pdf_scripting_manager.js","webpack://pdf.js/web/pdf_sidebar.js","webpack://pdf.js/web/pdf_sidebar_resizer.js","webpack://pdf.js/web/pdf_thumbnail_viewer.js","webpack://pdf.js/web/pdf_thumbnail_view.js","webpack://pdf.js/web/pdf_viewer.js","webpack://pdf.js/web/base_viewer.js","webpack://pdf.js/web/annotation_layer_builder.js","webpack://pdf.js/web/l10n_utils.js","webpack://pdf.js/web/pdf_page_view.js","webpack://pdf.js/web/struct_tree_layer_builder.js","webpack://pdf.js/web/text_highlighter.js","webpack://pdf.js/web/text_layer_builder.js","webpack://pdf.js/web/xfa_layer_builder.js","webpack://pdf.js/web/secondary_toolbar.js","webpack://pdf.js/web/toolbar.js","webpack://pdf.js/web/view_history.js","webpack://pdf.js/web/genericcom.js","webpack://pdf.js/web/preferences.js","webpack://pdf.js/web/download_manager.js","webpack://pdf.js/web/genericl10n.js","webpack://pdf.js/external/webL10n/l10n.js","webpack://pdf.js/web/generic_scripting.js","webpack://pdf.js/web/pdf_print_service.js","webpack://pdf.js/web/print_utils.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/web/viewer.js"],"sourcesContent":["/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst compatibilityParams = Object.create(null);\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const userAgent =\n (typeof navigator !== \"undefined\" && navigator.userAgent) || \"\";\n const platform =\n (typeof navigator !== \"undefined\" && navigator.platform) || \"\";\n const maxTouchPoints =\n (typeof navigator !== \"undefined\" && navigator.maxTouchPoints) || 1;\n\n const isAndroid = /Android/.test(userAgent);\n const isIOS =\n /\\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) ||\n (platform === \"MacIntel\" && maxTouchPoints > 1);\n const isIOSChrome = /CriOS/.test(userAgent);\n\n // Disables URL.createObjectURL() usage in some environments.\n // Support: Chrome on iOS\n (function checkOnBlobSupport() {\n // Sometimes Chrome on iOS loses data created with createObjectURL(),\n // see issue 8081.\n if (isIOSChrome) {\n compatibilityParams.disableCreateObjectURL = true;\n }\n })();\n\n // Limit canvas size to 5 mega-pixels on mobile.\n // Support: Android, iOS\n (function checkCanvasSizeLimitation() {\n if (isIOS || isAndroid) {\n compatibilityParams.maxCanvasPixels = 5242880;\n }\n })();\n}\n\nconst OptionKind = {\n VIEWER: 0x02,\n API: 0x04,\n WORKER: 0x08,\n PREFERENCE: 0x80,\n};\n\n/**\n * NOTE: These options are used to generate the `default_preferences.json` file,\n * see `OptionKind.PREFERENCE`, hence the values below must use only\n * primitive types and cannot rely on any imported types.\n */\nconst defaultOptions = {\n annotationMode: {\n /** @type {number} */\n value: 2,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n cursorToolOnLoad: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n defaultUrl: {\n /** @type {string} */\n value: \"compressed.tracemonkey-pldi-09.pdf\",\n kind: OptionKind.VIEWER,\n },\n defaultZoomValue: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n disableHistory: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER,\n },\n disablePageLabels: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePermissions: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePrintAutoRotate: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enableScripting: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\"),\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n externalLinkRel: {\n /** @type {string} */\n value: \"noopener noreferrer nofollow\",\n kind: OptionKind.VIEWER,\n },\n externalLinkTarget: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n historyUpdateUrl: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n ignoreDestinationZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n imageResourcesPath: {\n /** @type {string} */\n value: \"./images/\",\n kind: OptionKind.VIEWER,\n },\n maxCanvasPixels: {\n /** @type {number} */\n value: 16777216,\n compatibility: compatibilityParams.maxCanvasPixels,\n kind: OptionKind.VIEWER,\n },\n pdfBugEnabled: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\"),\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n printResolution: {\n /** @type {number} */\n value: 150,\n kind: OptionKind.VIEWER,\n },\n renderer: {\n /** @type {string} */\n value: \"canvas\",\n kind: OptionKind.VIEWER,\n },\n sidebarViewOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n scrollModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n spreadModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n textLayerMode: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n useOnlyCssZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewerCssTheme: {\n /** @type {number} */\n value: typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\") ? 2 : 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewOnLoad: {\n /** @type {boolean} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n\n cMapPacked: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n cMapUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/bcmaps/\"\n : \"../web/cmaps/\",\n kind: OptionKind.API,\n },\n disableAutoFetch: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableFontFace: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableRange: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableStream: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n docBaseUrl: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.API,\n },\n enableXfa: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n fontExtraProperties: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n isEvalSupported: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n maxImageSize: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.API,\n },\n pdfBug: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n standardFontDataUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/standard_fonts/\"\n : \"../web/standard_fonts/\",\n kind: OptionKind.API,\n },\n verbosity: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.API,\n },\n\n workerPort: {\n /** @type {Object} */\n value: null,\n kind: OptionKind.WORKER,\n },\n workerSrc: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../src/worker_loader.js\"\n : \"../build/pdf.worker.js\",\n kind: OptionKind.WORKER,\n },\n};\nif (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n) {\n defaultOptions.disablePreferences = {\n /** @type {boolean} */\n value: typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\"),\n kind: OptionKind.VIEWER,\n };\n defaultOptions.locale = {\n /** @type {string} */\n value: typeof navigator !== \"undefined\" ? navigator.language : \"en-US\",\n kind: OptionKind.VIEWER,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../build/dev-sandbox/pdf.sandbox.js\"\n : \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n\n defaultOptions.renderer.kind += OptionKind.PREFERENCE;\n} else if (PDFJSDev.test(\"CHROME\")) {\n defaultOptions.disableTelemetry = {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value: \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n}\n\nconst userOptions = Object.create(null);\n\nclass AppOptions {\n constructor() {\n throw new Error(\"Cannot initialize AppOptions.\");\n }\n\n static get(name) {\n const userOption = userOptions[name];\n if (userOption !== undefined) {\n return userOption;\n }\n const defaultOption = defaultOptions[name];\n if (defaultOption !== undefined) {\n return defaultOption.compatibility ?? defaultOption.value;\n }\n return undefined;\n }\n\n static getAll(kind = null) {\n const options = Object.create(null);\n for (const name in defaultOptions) {\n const defaultOption = defaultOptions[name];\n if (kind) {\n if ((kind & defaultOption.kind) === 0) {\n continue;\n }\n if (kind === OptionKind.PREFERENCE) {\n const value = defaultOption.value,\n valueType = typeof value;\n\n if (\n valueType === \"boolean\" ||\n valueType === \"string\" ||\n (valueType === \"number\" && Number.isInteger(value))\n ) {\n options[name] = value;\n continue;\n }\n throw new Error(`Invalid type for preference: ${name}`);\n }\n }\n const userOption = userOptions[name];\n options[name] =\n userOption !== undefined\n ? userOption\n : defaultOption.compatibility ?? defaultOption.value;\n }\n return options;\n }\n\n static set(name, value) {\n userOptions[name] = value;\n }\n\n static setAll(options) {\n for (const name in options) {\n userOptions[name] = options[name];\n }\n }\n\n static remove(name) {\n delete userOptions[name];\n }\n\n /**\n * @ignore\n */\n static _hasUserOptions() {\n return Object.keys(userOptions).length > 0;\n }\n}\n\nexport { AppOptions, compatibilityParams, OptionKind };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals PDFBug, Stats */\n\nimport {\n animationStarted,\n apiPageLayoutToViewerModes,\n apiPageModeToSidebarView,\n AutoPrintRegExp,\n DEFAULT_SCALE_VALUE,\n getActiveOrFocusedElement,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n noContextMenuHandler,\n normalizeWheelEventDirection,\n parseQueryString,\n ProgressBar,\n RendererType,\n RenderingStates,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport { AppOptions, compatibilityParams, OptionKind } from \"./app_options.js\";\nimport { AutomationEventBus, EventBus } from \"./event_utils.js\";\nimport {\n build,\n createPromiseCapability,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n GlobalWorkerOptions,\n InvalidPDFException,\n isPdfFile,\n LinkTarget,\n loadScript,\n MissingPDFException,\n OPS,\n PDFWorker,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n version,\n} from \"pdfjs-lib\";\nimport { CursorTool, PDFCursorTools } from \"./pdf_cursor_tools.js\";\nimport { OverlayManager } from \"./overlay_manager.js\";\nimport { PasswordPrompt } from \"./password_prompt.js\";\nimport { PDFAttachmentViewer } from \"./pdf_attachment_viewer.js\";\nimport { PDFDocumentProperties } from \"./pdf_document_properties.js\";\nimport { PDFFindBar } from \"./pdf_find_bar.js\";\nimport { PDFFindController } from \"./pdf_find_controller.js\";\nimport { PDFHistory } from \"./pdf_history.js\";\nimport { PDFLayerViewer } from \"./pdf_layer_viewer.js\";\nimport { PDFLinkService } from \"./pdf_link_service.js\";\nimport { PDFOutlineViewer } from \"./pdf_outline_viewer.js\";\nimport { PDFPresentationMode } from \"./pdf_presentation_mode.js\";\nimport { PDFRenderingQueue } from \"./pdf_rendering_queue.js\";\nimport { PDFScriptingManager } from \"./pdf_scripting_manager.js\";\nimport { PDFSidebar } from \"./pdf_sidebar.js\";\nimport { PDFSidebarResizer } from \"./pdf_sidebar_resizer.js\";\nimport { PDFThumbnailViewer } from \"./pdf_thumbnail_viewer.js\";\nimport { PDFViewer } from \"./pdf_viewer.js\";\nimport { SecondaryToolbar } from \"./secondary_toolbar.js\";\nimport { Toolbar } from \"./toolbar.js\";\nimport { ViewHistory } from \"./view_history.js\";\n\nconst DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; // ms\nconst FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms\nconst WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; // ms\n\nconst ViewOnLoad = {\n UNKNOWN: -1,\n PREVIOUS: 0, // Default value.\n INITIAL: 1,\n};\n\nconst ViewerCssTheme = {\n AUTOMATIC: 0, // Default value.\n LIGHT: 1,\n DARK: 2,\n};\n\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_VERSIONS = [\n \"1.0\",\n \"1.1\",\n \"1.2\",\n \"1.3\",\n \"1.4\",\n \"1.5\",\n \"1.6\",\n \"1.7\",\n \"1.8\",\n \"1.9\",\n \"2.0\",\n \"2.1\",\n \"2.2\",\n \"2.3\",\n];\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_GENERATORS = [\n \"acrobat distiller\",\n \"acrobat pdfwriter\",\n \"adobe livecycle\",\n \"adobe pdf library\",\n \"adobe photoshop\",\n \"ghostscript\",\n \"tcpdf\",\n \"cairo\",\n \"dvipdfm\",\n \"dvips\",\n \"pdftex\",\n \"pdfkit\",\n \"itext\",\n \"prince\",\n \"quarkxpress\",\n \"mac os x\",\n \"microsoft\",\n \"openoffice\",\n \"oracle\",\n \"luradocument\",\n \"pdf-xchange\",\n \"antenna house\",\n \"aspose.cells\",\n \"fpdf\",\n];\n\nclass DefaultExternalServices {\n constructor() {\n throw new Error(\"Cannot initialize DefaultExternalServices.\");\n }\n\n static updateFindControlState(data) {}\n\n static updateFindMatchesCount(data) {}\n\n static initPassiveLoading(callbacks) {}\n\n static async fallback(data) {}\n\n static reportTelemetry(data) {}\n\n static createDownloadManager(options) {\n throw new Error(\"Not implemented: createDownloadManager\");\n }\n\n static createPreferences() {\n throw new Error(\"Not implemented: createPreferences\");\n }\n\n static createL10n(options) {\n throw new Error(\"Not implemented: createL10n\");\n }\n\n static createScripting(options) {\n throw new Error(\"Not implemented: createScripting\");\n }\n\n static get supportsIntegratedFind() {\n return shadow(this, \"supportsIntegratedFind\", false);\n }\n\n static get supportsDocumentFonts() {\n return shadow(this, \"supportsDocumentFonts\", true);\n }\n\n static get supportedMouseWheelZoomModifierKeys() {\n return shadow(this, \"supportedMouseWheelZoomModifierKeys\", {\n ctrlKey: true,\n metaKey: true,\n });\n }\n\n static get isInAutomation() {\n return shadow(this, \"isInAutomation\", false);\n }\n}\n\nconst PDFViewerApplication = {\n initialBookmark: document.location.hash.substring(1),\n _initializedCapability: createPromiseCapability(),\n _fellback: false,\n appConfig: null,\n pdfDocument: null,\n pdfLoadingTask: null,\n printService: null,\n /** @type {PDFViewer} */\n pdfViewer: null,\n /** @type {PDFThumbnailViewer} */\n pdfThumbnailViewer: null,\n /** @type {PDFRenderingQueue} */\n pdfRenderingQueue: null,\n /** @type {PDFPresentationMode} */\n pdfPresentationMode: null,\n /** @type {PDFDocumentProperties} */\n pdfDocumentProperties: null,\n /** @type {PDFLinkService} */\n pdfLinkService: null,\n /** @type {PDFHistory} */\n pdfHistory: null,\n /** @type {PDFSidebar} */\n pdfSidebar: null,\n /** @type {PDFSidebarResizer} */\n pdfSidebarResizer: null,\n /** @type {PDFOutlineViewer} */\n pdfOutlineViewer: null,\n /** @type {PDFAttachmentViewer} */\n pdfAttachmentViewer: null,\n /** @type {PDFLayerViewer} */\n pdfLayerViewer: null,\n /** @type {PDFCursorTools} */\n pdfCursorTools: null,\n /** @type {PDFScriptingManager} */\n pdfScriptingManager: null,\n /** @type {ViewHistory} */\n store: null,\n /** @type {DownloadManager} */\n downloadManager: null,\n /** @type {OverlayManager} */\n overlayManager: null,\n /** @type {Preferences} */\n preferences: null,\n /** @type {Toolbar} */\n toolbar: null,\n /** @type {SecondaryToolbar} */\n secondaryToolbar: null,\n /** @type {EventBus} */\n eventBus: null,\n /** @type {IL10n} */\n l10n: null,\n isInitialViewSet: false,\n downloadComplete: false,\n isViewerEmbedded: window.parent !== window,\n url: \"\",\n baseUrl: \"\",\n _downloadUrl: \"\",\n externalServices: DefaultExternalServices,\n _boundEvents: Object.create(null),\n documentInfo: null,\n metadata: null,\n _contentDispositionFilename: null,\n _contentLength: null,\n _saveInProgress: false,\n _docStats: null,\n _wheelUnusedTicks: 0,\n _idleCallbacks: new Set(),\n\n // Called once when the document is loaded.\n async initialize(appConfig) {\n this.preferences = this.externalServices.createPreferences();\n this.appConfig = appConfig;\n\n await this._readPreferences();\n await this._parseHashParameters();\n this._forceCssTheme();\n await this._initializeL10n();\n\n if (\n this.isViewerEmbedded &&\n AppOptions.get(\"externalLinkTarget\") === LinkTarget.NONE\n ) {\n // Prevent external links from \"replacing\" the viewer,\n // when it's embedded in e.g. an <iframe> or an <object>.\n AppOptions.set(\"externalLinkTarget\", LinkTarget.TOP);\n }\n await this._initializeViewerComponents();\n\n // Bind the various event handlers *after* the viewer has been\n // initialized, to prevent errors if an event arrives too soon.\n this.bindEvents();\n this.bindWindowEvents();\n\n // We can start UI localization now.\n const appContainer = appConfig.appContainer || document.documentElement;\n this.l10n.translate(appContainer).then(() => {\n // Dispatch the 'localized' event on the `eventBus` once the viewer\n // has been fully initialized and translated.\n this.eventBus.dispatch(\"localized\", { source: this });\n });\n\n this._initializedCapability.resolve();\n },\n\n /**\n * @private\n */\n async _readPreferences() {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n ) {\n if (AppOptions.get(\"disablePreferences\")) {\n // Give custom implementations of the default viewer a simpler way to\n // opt-out of having the `Preferences` override existing `AppOptions`.\n return;\n }\n if (AppOptions._hasUserOptions()) {\n console.warn(\n \"_readPreferences: The Preferences may override manually set AppOptions; \" +\n 'please use the \"disablePreferences\"-option in order to prevent that.'\n );\n }\n }\n try {\n AppOptions.setAll(await this.preferences.getAll());\n } catch (reason) {\n console.error(`_readPreferences: \"${reason?.message}\".`);\n }\n },\n\n /**\n * Potentially parse special debugging flags in the hash section of the URL.\n * @private\n */\n async _parseHashParameters() {\n if (!AppOptions.get(\"pdfBugEnabled\")) {\n return;\n }\n const hash = document.location.hash.substring(1);\n if (!hash) {\n return;\n }\n const params = parseQueryString(hash),\n waitOn = [];\n\n if (params.get(\"disableworker\") === \"true\") {\n waitOn.push(loadFakeWorker());\n }\n if (params.has(\"disablerange\")) {\n AppOptions.set(\"disableRange\", params.get(\"disablerange\") === \"true\");\n }\n if (params.has(\"disablestream\")) {\n AppOptions.set(\"disableStream\", params.get(\"disablestream\") === \"true\");\n }\n if (params.has(\"disableautofetch\")) {\n AppOptions.set(\n \"disableAutoFetch\",\n params.get(\"disableautofetch\") === \"true\"\n );\n }\n if (params.has(\"disablefontface\")) {\n AppOptions.set(\n \"disableFontFace\",\n params.get(\"disablefontface\") === \"true\"\n );\n }\n if (params.has(\"disablehistory\")) {\n AppOptions.set(\"disableHistory\", params.get(\"disablehistory\") === \"true\");\n }\n if (params.has(\"verbosity\")) {\n AppOptions.set(\"verbosity\", params.get(\"verbosity\") | 0);\n }\n if (params.has(\"textlayer\")) {\n switch (params.get(\"textlayer\")) {\n case \"off\":\n AppOptions.set(\"textLayerMode\", TextLayerMode.DISABLE);\n break;\n case \"visible\":\n case \"shadow\":\n case \"hover\":\n const viewer = this.appConfig.viewerContainer;\n viewer.classList.add(`textLayer-${params.get(\"textlayer\")}`);\n break;\n }\n }\n if (params.has(\"pdfbug\")) {\n AppOptions.set(\"pdfBug\", true);\n AppOptions.set(\"fontExtraProperties\", true);\n\n const enabled = params.get(\"pdfbug\").split(\",\");\n waitOn.push(initPDFBug(enabled));\n }\n // It is not possible to change locale for the (various) extension builds.\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")) &&\n params.has(\"locale\")\n ) {\n AppOptions.set(\"locale\", params.get(\"locale\"));\n }\n\n if (waitOn.length === 0) {\n return;\n }\n try {\n await Promise.all(waitOn);\n } catch (reason) {\n console.error(`_parseHashParameters: \"${reason.message}\".`);\n }\n },\n\n /**\n * @private\n */\n async _initializeL10n() {\n this.l10n = this.externalServices.createL10n(\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n ? { locale: AppOptions.get(\"locale\") }\n : null\n );\n const dir = await this.l10n.getDirection();\n document.getElementsByTagName(\"html\")[0].dir = dir;\n },\n\n /**\n * @private\n */\n _forceCssTheme() {\n const cssTheme = AppOptions.get(\"viewerCssTheme\");\n if (\n cssTheme === ViewerCssTheme.AUTOMATIC ||\n !Object.values(ViewerCssTheme).includes(cssTheme)\n ) {\n return;\n }\n try {\n const styleSheet = document.styleSheets[0];\n const cssRules = styleSheet?.cssRules || [];\n for (let i = 0, ii = cssRules.length; i < ii; i++) {\n const rule = cssRules[i];\n if (\n rule instanceof CSSMediaRule &&\n rule.media?.[0] === \"(prefers-color-scheme: dark)\"\n ) {\n if (cssTheme === ViewerCssTheme.LIGHT) {\n styleSheet.deleteRule(i);\n return;\n }\n // cssTheme === ViewerCssTheme.DARK\n const darkRules =\n /^@media \\(prefers-color-scheme: dark\\) {\\n\\s*([\\w\\s-.,:;/\\\\{}()]+)\\n}$/.exec(\n rule.cssText\n );\n if (darkRules?.[1]) {\n styleSheet.deleteRule(i);\n styleSheet.insertRule(darkRules[1], i);\n }\n return;\n }\n }\n } catch (reason) {\n console.error(`_forceCssTheme: \"${reason?.message}\".`);\n }\n },\n\n /**\n * @private\n */\n async _initializeViewerComponents() {\n const { appConfig, externalServices } = this;\n\n let eventBus;\n if (appConfig.eventBus) {\n eventBus = appConfig.eventBus;\n } else if (externalServices.isInAutomation) {\n eventBus = new AutomationEventBus();\n } else {\n eventBus = new EventBus();\n }\n this.eventBus = eventBus;\n\n this.overlayManager = new OverlayManager();\n\n const pdfRenderingQueue = new PDFRenderingQueue();\n pdfRenderingQueue.onIdle = this._cleanup.bind(this);\n this.pdfRenderingQueue = pdfRenderingQueue;\n\n const pdfLinkService = new PDFLinkService({\n eventBus,\n externalLinkTarget: AppOptions.get(\"externalLinkTarget\"),\n externalLinkRel: AppOptions.get(\"externalLinkRel\"),\n ignoreDestinationZoom: AppOptions.get(\"ignoreDestinationZoom\"),\n });\n this.pdfLinkService = pdfLinkService;\n\n const downloadManager = externalServices.createDownloadManager();\n this.downloadManager = downloadManager;\n\n const findController = new PDFFindController({\n linkService: pdfLinkService,\n eventBus,\n });\n this.findController = findController;\n\n const pdfScriptingManager = new PDFScriptingManager({\n eventBus,\n sandboxBundleSrc:\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC || CHROME\")\n ? AppOptions.get(\"sandboxBundleSrc\")\n : null,\n scriptingFactory: externalServices,\n docPropertiesLookup: this._scriptingDocProperties.bind(this),\n });\n this.pdfScriptingManager = pdfScriptingManager;\n\n const container = appConfig.mainContainer;\n const viewer = appConfig.viewerContainer;\n this.pdfViewer = new PDFViewer({\n container,\n viewer,\n eventBus,\n renderingQueue: pdfRenderingQueue,\n linkService: pdfLinkService,\n downloadManager,\n findController,\n scriptingManager:\n AppOptions.get(\"enableScripting\") && pdfScriptingManager,\n renderer: AppOptions.get(\"renderer\"),\n l10n: this.l10n,\n textLayerMode: AppOptions.get(\"textLayerMode\"),\n annotationMode: AppOptions.get(\"annotationMode\"),\n imageResourcesPath: AppOptions.get(\"imageResourcesPath\"),\n enablePrintAutoRotate: AppOptions.get(\"enablePrintAutoRotate\"),\n useOnlyCssZoom: AppOptions.get(\"useOnlyCssZoom\"),\n maxCanvasPixels: AppOptions.get(\"maxCanvasPixels\"),\n enablePermissions: AppOptions.get(\"enablePermissions\"),\n });\n pdfRenderingQueue.setViewer(this.pdfViewer);\n pdfLinkService.setViewer(this.pdfViewer);\n pdfScriptingManager.setViewer(this.pdfViewer);\n\n this.pdfThumbnailViewer = new PDFThumbnailViewer({\n container: appConfig.sidebar.thumbnailView,\n eventBus,\n renderingQueue: pdfRenderingQueue,\n linkService: pdfLinkService,\n l10n: this.l10n,\n });\n pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);\n\n // The browsing history is only enabled when the viewer is standalone,\n // i.e. not when it is embedded in a web page.\n if (!this.isViewerEmbedded && !AppOptions.get(\"disableHistory\")) {\n this.pdfHistory = new PDFHistory({\n linkService: pdfLinkService,\n eventBus,\n });\n pdfLinkService.setHistory(this.pdfHistory);\n }\n\n if (!this.supportsIntegratedFind) {\n this.findBar = new PDFFindBar(appConfig.findBar, eventBus, this.l10n);\n }\n\n this.pdfDocumentProperties = new PDFDocumentProperties(\n appConfig.documentProperties,\n this.overlayManager,\n eventBus,\n this.l10n\n );\n\n this.pdfCursorTools = new PDFCursorTools({\n container,\n eventBus,\n cursorToolOnLoad: AppOptions.get(\"cursorToolOnLoad\"),\n });\n\n this.toolbar = new Toolbar(appConfig.toolbar, eventBus, this.l10n);\n\n this.secondaryToolbar = new SecondaryToolbar(\n appConfig.secondaryToolbar,\n container,\n eventBus\n );\n\n if (this.supportsFullscreen) {\n this.pdfPresentationMode = new PDFPresentationMode({\n container,\n pdfViewer: this.pdfViewer,\n eventBus,\n });\n }\n\n this.passwordPrompt = new PasswordPrompt(\n appConfig.passwordOverlay,\n this.overlayManager,\n this.l10n,\n this.isViewerEmbedded\n );\n\n this.pdfOutlineViewer = new PDFOutlineViewer({\n container: appConfig.sidebar.outlineView,\n eventBus,\n linkService: pdfLinkService,\n });\n\n this.pdfAttachmentViewer = new PDFAttachmentViewer({\n container: appConfig.sidebar.attachmentsView,\n eventBus,\n downloadManager,\n });\n\n this.pdfLayerViewer = new PDFLayerViewer({\n container: appConfig.sidebar.layersView,\n eventBus,\n l10n: this.l10n,\n });\n\n this.pdfSidebar = new PDFSidebar({\n elements: appConfig.sidebar,\n pdfViewer: this.pdfViewer,\n pdfThumbnailViewer: this.pdfThumbnailViewer,\n eventBus,\n l10n: this.l10n,\n });\n this.pdfSidebar.onToggled = this.forceRendering.bind(this);\n\n this.pdfSidebarResizer = new PDFSidebarResizer(\n appConfig.sidebarResizer,\n eventBus,\n this.l10n\n );\n },\n\n run(config) {\n this.initialize(config).then(webViewerInitialized);\n },\n\n get initialized() {\n return this._initializedCapability.settled;\n },\n\n get initializedPromise() {\n return this._initializedCapability.promise;\n },\n\n zoomIn(steps) {\n if (this.pdfViewer.isInPresentationMode) {\n return;\n }\n this.pdfViewer.increaseScale(steps);\n },\n\n zoomOut(steps) {\n if (this.pdfViewer.isInPresentationMode) {\n return;\n }\n this.pdfViewer.decreaseScale(steps);\n },\n\n zoomReset() {\n if (this.pdfViewer.isInPresentationMode) {\n return;\n }\n this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\n },\n\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n },\n\n get page() {\n return this.pdfViewer.currentPageNumber;\n },\n\n set page(val) {\n this.pdfViewer.currentPageNumber = val;\n },\n\n get supportsPrinting() {\n return PDFPrintServiceFactory.instance.supportsPrinting;\n },\n\n get supportsFullscreen() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return shadow(this, \"supportsFullscreen\", document.fullscreenEnabled);\n }\n return shadow(\n this,\n \"supportsFullscreen\",\n document.fullscreenEnabled ||\n document.mozFullScreenEnabled ||\n document.webkitFullscreenEnabled\n );\n },\n\n get supportsIntegratedFind() {\n return this.externalServices.supportsIntegratedFind;\n },\n\n get supportsDocumentFonts() {\n return this.externalServices.supportsDocumentFonts;\n },\n\n get loadingBar() {\n const bar = new ProgressBar(\"#loadingBar\");\n return shadow(this, \"loadingBar\", bar);\n },\n\n get supportedMouseWheelZoomModifierKeys() {\n return this.externalServices.supportedMouseWheelZoomModifierKeys;\n },\n\n initPassiveLoading() {\n if (\n typeof PDFJSDev === \"undefined\" ||\n !PDFJSDev.test(\"MOZCENTRAL || CHROME\")\n ) {\n throw new Error(\"Not implemented: initPassiveLoading\");\n }\n this.externalServices.initPassiveLoading({\n onOpenWithTransport: (url, length, transport) => {\n this.open(url, { length, range: transport });\n },\n onOpenWithData: (data, contentDispositionFilename) => {\n if (isPdfFile(contentDispositionFilename)) {\n this._contentDispositionFilename = contentDispositionFilename;\n }\n this.open(data);\n },\n onOpenWithURL: (url, length, originalUrl) => {\n const file = originalUrl !== undefined ? { url, originalUrl } : url;\n const args = length !== undefined ? { length } : null;\n\n this.open(file, args);\n },\n onError: err => {\n this.l10n.get(\"loading_error\").then(msg => {\n this._documentError(msg, err);\n });\n },\n onProgress: (loaded, total) => {\n this.progress(loaded / total);\n },\n });\n },\n\n setTitleUsingUrl(url = \"\", downloadUrl = null) {\n this.url = url;\n this.baseUrl = url.split(\"#\")[0];\n if (downloadUrl) {\n this._downloadUrl =\n downloadUrl === url ? this.baseUrl : downloadUrl.split(\"#\")[0];\n }\n let title = getPdfFilenameFromUrl(url, \"\");\n if (!title) {\n try {\n title = decodeURIComponent(getFilenameFromUrl(url)) || url;\n } catch (ex) {\n // decodeURIComponent may throw URIError,\n // fall back to using the unprocessed url in that case\n title = url;\n }\n }\n this.setTitle(title);\n },\n\n setTitle(title) {\n if (this.isViewerEmbedded) {\n // Embedded PDF viewers should not be changing their parent page's title.\n return;\n }\n document.title = title;\n },\n\n get _docFilename() {\n // Use `this.url` instead of `this.baseUrl` to perform filename detection\n // based on the reference fragment as ultimate fallback if needed.\n return this._contentDispositionFilename || getPdfFilenameFromUrl(this.url);\n },\n\n /**\n * @private\n */\n _hideViewBookmark() {\n // URL does not reflect proper document location - hiding some buttons.\n const { toolbar, secondaryToolbar } = this.appConfig;\n toolbar.viewBookmark.hidden = true;\n secondaryToolbar.viewBookmarkButton.hidden = true;\n },\n\n /**\n * @private\n */\n _cancelIdleCallbacks() {\n if (!this._idleCallbacks.size) {\n return;\n }\n for (const callback of this._idleCallbacks) {\n window.cancelIdleCallback(callback);\n }\n this._idleCallbacks.clear();\n },\n\n /**\n * Closes opened PDF document.\n * @returns {Promise} - Returns the promise, which is resolved when all\n * destruction is completed.\n */\n async close() {\n this._unblockDocumentLoadEvent();\n this._hideViewBookmark();\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n const { container } = this.appConfig.errorWrapper;\n container.hidden = true;\n }\n\n if (!this.pdfLoadingTask) {\n return;\n }\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n this.pdfDocument?.annotationStorage.size > 0 &&\n this._annotationStorageModified\n ) {\n try {\n // Trigger saving, to prevent data loss in forms; see issue 12257.\n await this.save({ sourceEventType: \"save\" });\n } catch (reason) {\n // Ignoring errors, to ensure that document closing won't break.\n }\n }\n const promises = [];\n\n promises.push(this.pdfLoadingTask.destroy());\n this.pdfLoadingTask = null;\n\n if (this.pdfDocument) {\n this.pdfDocument = null;\n\n this.pdfThumbnailViewer.setDocument(null);\n this.pdfViewer.setDocument(null);\n this.pdfLinkService.setDocument(null);\n this.pdfDocumentProperties.setDocument(null);\n }\n this.pdfLinkService.externalLinkEnabled = true;\n this._fellback = false;\n this.store = null;\n this.isInitialViewSet = false;\n this.downloadComplete = false;\n this.url = \"\";\n this.baseUrl = \"\";\n this._downloadUrl = \"\";\n this.documentInfo = null;\n this.metadata = null;\n this._contentDispositionFilename = null;\n this._contentLength = null;\n this._saveInProgress = false;\n this._docStats = null;\n\n this._cancelIdleCallbacks();\n promises.push(this.pdfScriptingManager.destroyPromise);\n\n this.pdfSidebar.reset();\n this.pdfOutlineViewer.reset();\n this.pdfAttachmentViewer.reset();\n this.pdfLayerViewer.reset();\n\n this.pdfHistory?.reset();\n this.findBar?.reset();\n this.toolbar.reset();\n this.secondaryToolbar.reset();\n\n if (typeof PDFBug !== \"undefined\") {\n PDFBug.cleanup();\n }\n await Promise.all(promises);\n },\n\n /**\n * Opens PDF document specified by URL or array with additional arguments.\n * @param {string|TypedArray|ArrayBuffer} file - PDF location or binary data.\n * @param {Object} [args] - Additional arguments for the getDocument call,\n * e.g. HTTP headers ('httpHeaders') or alternative\n * data transport ('range').\n * @returns {Promise} - Returns the promise, which is resolved when document\n * is opened.\n */\n async open(file, args) {\n if (this.pdfLoadingTask) {\n // We need to destroy already opened document.\n await this.close();\n }\n // Set the necessary global worker parameters, using the available options.\n const workerParameters = AppOptions.getAll(OptionKind.WORKER);\n for (const key in workerParameters) {\n GlobalWorkerOptions[key] = workerParameters[key];\n }\n\n const parameters = Object.create(null);\n if (typeof file === \"string\") {\n // URL\n this.setTitleUsingUrl(file, /* downloadUrl = */ file);\n parameters.url = file;\n } else if (file && \"byteLength\" in file) {\n // ArrayBuffer\n parameters.data = file;\n } else if (file.url && file.originalUrl) {\n this.setTitleUsingUrl(file.originalUrl, /* downloadUrl = */ file.url);\n parameters.url = file.url;\n }\n // Set the necessary API parameters, using the available options.\n const apiParameters = AppOptions.getAll(OptionKind.API);\n for (const key in apiParameters) {\n let value = apiParameters[key];\n\n if (key === \"docBaseUrl\" && !value) {\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n value = document.URL.split(\"#\")[0];\n } else if (PDFJSDev.test(\"MOZCENTRAL || CHROME\")) {\n value = this.baseUrl;\n }\n }\n parameters[key] = value;\n }\n // Finally, update the API parameters with the arguments (if they exist).\n if (args) {\n for (const key in args) {\n parameters[key] = args[key];\n }\n }\n\n const loadingTask = getDocument(parameters);\n this.pdfLoadingTask = loadingTask;\n\n loadingTask.onPassword = (updateCallback, reason) => {\n this.pdfLinkService.externalLinkEnabled = false;\n this.passwordPrompt.setUpdateCallback(updateCallback, reason);\n this.passwordPrompt.open();\n };\n\n loadingTask.onProgress = ({ loaded, total }) => {\n this.progress(loaded / total);\n };\n\n // Listen for unsupported features to trigger the fallback UI.\n loadingTask.onUnsupportedFeature = this.fallback.bind(this);\n\n return loadingTask.promise.then(\n pdfDocument => {\n this.load(pdfDocument);\n },\n reason => {\n if (loadingTask !== this.pdfLoadingTask) {\n return undefined; // Ignore errors for previously opened PDF files.\n }\n\n let key = \"loading_error\";\n if (reason instanceof InvalidPDFException) {\n key = \"invalid_file_error\";\n } else if (reason instanceof MissingPDFException) {\n key = \"missing_file_error\";\n } else if (reason instanceof UnexpectedResponseException) {\n key = \"unexpected_response_error\";\n }\n return this.l10n.get(key).then(msg => {\n this._documentError(msg, { message: reason?.message });\n throw reason;\n });\n }\n );\n },\n\n /**\n * @private\n */\n _ensureDownloadComplete() {\n if (this.pdfDocument && this.downloadComplete) {\n return;\n }\n throw new Error(\"PDF document not downloaded.\");\n },\n\n async download({ sourceEventType = \"download\" } = {}) {\n const url = this._downloadUrl,\n filename = this._docFilename;\n try {\n this._ensureDownloadComplete();\n\n const data = await this.pdfDocument.getData();\n const blob = new Blob([data], { type: \"application/pdf\" });\n\n await this.downloadManager.download(blob, url, filename, sourceEventType);\n } catch (reason) {\n // When the PDF document isn't ready, or the PDF file is still\n // downloading, simply download using the URL.\n await this.downloadManager.downloadUrl(url, filename);\n }\n },\n\n async save({ sourceEventType = \"download\" } = {}) {\n if (this._saveInProgress) {\n return;\n }\n this._saveInProgress = true;\n await this.pdfScriptingManager.dispatchWillSave();\n\n const url = this._downloadUrl,\n filename = this._docFilename;\n try {\n this._ensureDownloadComplete();\n\n const data = await this.pdfDocument.saveDocument();\n const blob = new Blob([data], { type: \"application/pdf\" });\n\n await this.downloadManager.download(blob, url, filename, sourceEventType);\n } catch (reason) {\n // When the PDF document isn't ready, or the PDF file is still\n // downloading, simply fallback to a \"regular\" download.\n console.error(`Error when saving the document: ${reason.message}`);\n await this.download({ sourceEventType });\n } finally {\n await this.pdfScriptingManager.dispatchDidSave();\n this._saveInProgress = false;\n }\n },\n\n downloadOrSave(options) {\n if (this.pdfDocument?.annotationStorage.size > 0) {\n this.save(options);\n } else {\n this.download(options);\n }\n },\n\n fallback(featureId) {\n this.externalServices.reportTelemetry({\n type: \"unsupportedFeature\",\n featureId,\n });\n\n // Only trigger the fallback once so we don't spam the user with messages\n // for one PDF.\n if (this._fellback) {\n return;\n }\n this._fellback = true;\n\n this.externalServices\n .fallback({\n featureId,\n url: this.baseUrl,\n })\n .then(download => {\n if (!download) {\n return;\n }\n this.download({ sourceEventType: \"download\" });\n });\n },\n\n /**\n * Show the error box; used for errors affecting loading and/or parsing of\n * the entire PDF document.\n */\n _documentError(message, moreInfo = null) {\n this._unblockDocumentLoadEvent();\n\n this._otherError(message, moreInfo);\n },\n\n /**\n * Show the error box; used for errors affecting e.g. only a single page.\n *\n * @param {string} message - A message that is human readable.\n * @param {Object} [moreInfo] - Further information about the error that is\n * more technical. Should have a 'message' and\n * optionally a 'stack' property.\n */\n _otherError(message, moreInfo = null) {\n const moreInfoText = [\n this.l10n.get(\"error_version_info\", {\n version: version || \"?\",\n build: build || \"?\",\n }),\n ];\n if (moreInfo) {\n moreInfoText.push(\n this.l10n.get(\"error_message\", { message: moreInfo.message })\n );\n if (moreInfo.stack) {\n moreInfoText.push(\n this.l10n.get(\"error_stack\", { stack: moreInfo.stack })\n );\n } else {\n if (moreInfo.filename) {\n moreInfoText.push(\n this.l10n.get(\"error_file\", { file: moreInfo.filename })\n );\n }\n if (moreInfo.lineNumber) {\n moreInfoText.push(\n this.l10n.get(\"error_line\", { line: moreInfo.lineNumber })\n );\n }\n }\n }\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n const errorWrapperConfig = this.appConfig.errorWrapper;\n const errorWrapper = errorWrapperConfig.container;\n errorWrapper.hidden = false;\n\n const errorMessage = errorWrapperConfig.errorMessage;\n errorMessage.textContent = message;\n\n const closeButton = errorWrapperConfig.closeButton;\n closeButton.onclick = function () {\n errorWrapper.hidden = true;\n };\n\n const errorMoreInfo = errorWrapperConfig.errorMoreInfo;\n const moreInfoButton = errorWrapperConfig.moreInfoButton;\n const lessInfoButton = errorWrapperConfig.lessInfoButton;\n moreInfoButton.onclick = function () {\n errorMoreInfo.hidden = false;\n moreInfoButton.hidden = true;\n lessInfoButton.hidden = false;\n errorMoreInfo.style.height = errorMoreInfo.scrollHeight + \"px\";\n };\n lessInfoButton.onclick = function () {\n errorMoreInfo.hidden = true;\n moreInfoButton.hidden = false;\n lessInfoButton.hidden = true;\n };\n moreInfoButton.oncontextmenu = noContextMenuHandler;\n lessInfoButton.oncontextmenu = noContextMenuHandler;\n closeButton.oncontextmenu = noContextMenuHandler;\n moreInfoButton.hidden = false;\n lessInfoButton.hidden = true;\n Promise.all(moreInfoText).then(parts => {\n errorMoreInfo.value = parts.join(\"\\n\");\n });\n } else {\n Promise.all(moreInfoText).then(parts => {\n console.error(message + \"\\n\" + parts.join(\"\\n\"));\n });\n this.fallback();\n }\n },\n\n progress(level) {\n if (this.downloadComplete) {\n // Don't accidentally show the loading bar again when the entire file has\n // already been fetched (only an issue when disableAutoFetch is enabled).\n return;\n }\n const percent = Math.round(level * 100);\n // When we transition from full request to range requests, it's possible\n // that we discard some of the loaded data. This can cause the loading\n // bar to move backwards. So prevent this by only updating the bar if it\n // increases.\n if (percent > this.loadingBar.percent || isNaN(percent)) {\n this.loadingBar.percent = percent;\n\n // When disableAutoFetch is enabled, it's not uncommon for the entire file\n // to never be fetched (depends on e.g. the file structure). In this case\n // the loading bar will not be completely filled, nor will it be hidden.\n // To prevent displaying a partially filled loading bar permanently, we\n // hide it when no data has been loaded during a certain amount of time.\n const disableAutoFetch = this.pdfDocument\n ? this.pdfDocument.loadingParams.disableAutoFetch\n : AppOptions.get(\"disableAutoFetch\");\n\n if (disableAutoFetch && percent) {\n if (this.disableAutoFetchLoadingBarTimeout) {\n clearTimeout(this.disableAutoFetchLoadingBarTimeout);\n this.disableAutoFetchLoadingBarTimeout = null;\n }\n this.loadingBar.show();\n\n this.disableAutoFetchLoadingBarTimeout = setTimeout(() => {\n this.loadingBar.hide();\n this.disableAutoFetchLoadingBarTimeout = null;\n }, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT);\n }\n }\n },\n\n load(pdfDocument) {\n this.pdfDocument = pdfDocument;\n\n pdfDocument.getDownloadInfo().then(({ length }) => {\n this._contentLength = length; // Ensure that the correct length is used.\n this.downloadComplete = true;\n this.loadingBar.hide();\n\n firstPagePromise.then(() => {\n this.eventBus.dispatch(\"documentloaded\", { source: this });\n });\n });\n\n // Since the `setInitialView` call below depends on this being resolved,\n // fetch it early to avoid delaying initial rendering of the PDF document.\n const pageLayoutPromise = pdfDocument.getPageLayout().catch(function () {\n /* Avoid breaking initial rendering; ignoring errors. */\n });\n const pageModePromise = pdfDocument.getPageMode().catch(function () {\n /* Avoid breaking initial rendering; ignoring errors. */\n });\n const openActionPromise = pdfDocument.getOpenAction().catch(function () {\n /* Avoid breaking initial rendering; ignoring errors. */\n });\n\n this.toolbar.setPagesCount(pdfDocument.numPages, false);\n this.secondaryToolbar.setPagesCount(pdfDocument.numPages);\n\n let baseDocumentUrl;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n baseDocumentUrl = null;\n } else if (PDFJSDev.test(\"MOZCENTRAL\")) {\n baseDocumentUrl = this.baseUrl;\n } else if (PDFJSDev.test(\"CHROME\")) {\n baseDocumentUrl = location.href.split(\"#\")[0];\n }\n this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl);\n this.pdfDocumentProperties.setDocument(pdfDocument, this.url);\n\n const pdfViewer = this.pdfViewer;\n pdfViewer.setDocument(pdfDocument);\n const { firstPagePromise, onePageRendered, pagesPromise } = pdfViewer;\n\n const pdfThumbnailViewer = this.pdfThumbnailViewer;\n pdfThumbnailViewer.setDocument(pdfDocument);\n\n const storedPromise = (this.store = new ViewHistory(\n pdfDocument.fingerprints[0]\n ))\n .getMultiple({\n page: null,\n zoom: DEFAULT_SCALE_VALUE,\n scrollLeft: \"0\",\n scrollTop: \"0\",\n rotation: null,\n sidebarView: SidebarView.UNKNOWN,\n scrollMode: ScrollMode.UNKNOWN,\n spreadMode: SpreadMode.UNKNOWN,\n })\n .catch(() => {\n /* Unable to read from storage; ignoring errors. */\n return Object.create(null);\n });\n\n firstPagePromise.then(pdfPage => {\n this.loadingBar.setWidth(this.appConfig.viewerContainer);\n this._initializeAnnotationStorageCallbacks(pdfDocument);\n\n Promise.all([\n animationStarted,\n storedPromise,\n pageLayoutPromise,\n pageModePromise,\n openActionPromise,\n ])\n .then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => {\n const viewOnLoad = AppOptions.get(\"viewOnLoad\");\n\n this._initializePdfHistory({\n fingerprint: pdfDocument.fingerprints[0],\n viewOnLoad,\n initialDest: openAction?.dest,\n });\n const initialBookmark = this.initialBookmark;\n\n // Initialize the default values, from user preferences.\n const zoom = AppOptions.get(\"defaultZoomValue\");\n let hash = zoom ? `zoom=${zoom}` : null;\n\n let rotation = null;\n let sidebarView = AppOptions.get(\"sidebarViewOnLoad\");\n let scrollMode = AppOptions.get(\"scrollModeOnLoad\");\n let spreadMode = AppOptions.get(\"spreadModeOnLoad\");\n\n if (stored.page && viewOnLoad !== ViewOnLoad.INITIAL) {\n hash =\n `page=${stored.page}&zoom=${zoom || stored.zoom},` +\n `${stored.scrollLeft},${stored.scrollTop}`;\n\n rotation = parseInt(stored.rotation, 10);\n // Always let user preference take precedence over the view history.\n if (sidebarView === SidebarView.UNKNOWN) {\n sidebarView = stored.sidebarView | 0;\n }\n if (scrollMode === ScrollMode.UNKNOWN) {\n scrollMode = stored.scrollMode | 0;\n }\n if (spreadMode === SpreadMode.UNKNOWN) {\n spreadMode = stored.spreadMode | 0;\n }\n }\n // Always let the user preference/view history take precedence.\n if (pageMode && sidebarView === SidebarView.UNKNOWN) {\n sidebarView = apiPageModeToSidebarView(pageMode);\n }\n if (\n pageLayout &&\n scrollMode === ScrollMode.UNKNOWN &&\n spreadMode === SpreadMode.UNKNOWN\n ) {\n const modes = apiPageLayoutToViewerModes(pageLayout);\n // TODO: Try to improve page-switching when using the mouse-wheel\n // and/or arrow-keys before allowing the document to control this.\n // scrollMode = modes.scrollMode;\n spreadMode = modes.spreadMode;\n }\n\n this.setInitialView(hash, {\n rotation,\n sidebarView,\n scrollMode,\n spreadMode,\n });\n this.eventBus.dispatch(\"documentinit\", { source: this });\n // Make all navigation keys work on document load,\n // unless the viewer is embedded in a web page.\n if (!this.isViewerEmbedded) {\n pdfViewer.focus();\n }\n\n // For documents with different page sizes, once all pages are\n // resolved, ensure that the correct location becomes visible on load.\n // (To reduce the risk, in very large and/or slow loading documents,\n // that the location changes *after* the user has started interacting\n // with the viewer, wait for either `pagesPromise` or a timeout.)\n await Promise.race([\n pagesPromise,\n new Promise(resolve => {\n setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT);\n }),\n ]);\n if (!initialBookmark && !hash) {\n return;\n }\n if (pdfViewer.hasEqualPageSizes) {\n return;\n }\n this.initialBookmark = initialBookmark;\n\n // eslint-disable-next-line no-self-assign\n pdfViewer.currentScaleValue = pdfViewer.currentScaleValue;\n // Re-apply the initial document location.\n this.setInitialView(hash);\n })\n .catch(() => {\n // Ensure that the document is always completely initialized,\n // even if there are any errors thrown above.\n this.setInitialView();\n })\n .then(function () {\n // At this point, rendering of the initial page(s) should always have\n // started (and may even have completed).\n // To prevent any future issues, e.g. the document being completely\n // blank on load, always trigger rendering here.\n pdfViewer.update();\n });\n });\n\n pagesPromise.then(\n () => {\n this._unblockDocumentLoadEvent();\n\n this._initializeAutoPrint(pdfDocument, openActionPromise);\n },\n reason => {\n this.l10n.get(\"loading_error\").then(msg => {\n this._documentError(msg, { message: reason?.message });\n });\n }\n );\n\n onePageRendered.then(data => {\n this.externalServices.reportTelemetry({\n type: \"pageInfo\",\n timestamp: data.timestamp,\n });\n\n pdfDocument.getOutline().then(outline => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the outline resolved.\n }\n this.pdfOutlineViewer.render({ outline, pdfDocument });\n });\n pdfDocument.getAttachments().then(attachments => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the attachments resolved.\n }\n this.pdfAttachmentViewer.render({ attachments });\n });\n // Ensure that the layers accurately reflects the current state in the\n // viewer itself, rather than the default state provided by the API.\n pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the layers resolved.\n }\n this.pdfLayerViewer.render({ optionalContentConfig, pdfDocument });\n });\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n \"requestIdleCallback\" in window\n ) {\n const callback = window.requestIdleCallback(\n () => {\n this._collectTelemetry(pdfDocument);\n this._idleCallbacks.delete(callback);\n },\n { timeout: 1000 }\n );\n this._idleCallbacks.add(callback);\n }\n });\n\n this._initializePageLabels(pdfDocument);\n this._initializeMetadata(pdfDocument);\n },\n\n /**\n * @private\n */\n async _scriptingDocProperties(pdfDocument) {\n if (!this.documentInfo) {\n // It should be *extremely* rare for metadata to not have been resolved\n // when this code runs, but ensure that we handle that case here.\n await new Promise(resolve => {\n this.eventBus._on(\"metadataloaded\", resolve, { once: true });\n });\n if (pdfDocument !== this.pdfDocument) {\n return null; // The document was closed while the metadata resolved.\n }\n }\n if (!this._contentLength) {\n // Always waiting for the entire PDF document to be loaded will, most\n // likely, delay sandbox-creation too much in the general case for all\n // PDF documents which are not provided as binary data to the API.\n // Hence we'll simply have to trust that the `contentLength` (as provided\n // by the server), when it exists, is accurate enough here.\n await new Promise(resolve => {\n this.eventBus._on(\"documentloaded\", resolve, { once: true });\n });\n if (pdfDocument !== this.pdfDocument) {\n return null; // The document was closed while the downloadInfo resolved.\n }\n }\n\n return {\n ...this.documentInfo,\n baseURL: this.baseUrl,\n filesize: this._contentLength,\n filename: this._docFilename,\n metadata: this.metadata?.getRaw(),\n authors: this.metadata?.get(\"dc:creator\"),\n numPages: this.pagesCount,\n URL: this.url,\n };\n },\n\n /**\n * A place to fetch data for telemetry after one page is rendered and the\n * viewer is idle.\n * @private\n */\n async _collectTelemetry(pdfDocument) {\n const markInfo = await this.pdfDocument.getMarkInfo();\n if (pdfDocument !== this.pdfDocument) {\n return; // Document was closed while waiting for mark info.\n }\n const tagged = markInfo?.Marked || false;\n this.externalServices.reportTelemetry({\n type: \"tagged\",\n tagged,\n });\n },\n\n /**\n * @private\n */\n async _initializeAutoPrint(pdfDocument, openActionPromise) {\n const [openAction, javaScript] = await Promise.all([\n openActionPromise,\n !this.pdfViewer.enableScripting ? pdfDocument.getJavaScript() : null,\n ]);\n\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the auto print data resolved.\n }\n let triggerAutoPrint = false;\n\n if (openAction?.action === \"Print\") {\n triggerAutoPrint = true;\n }\n if (javaScript) {\n javaScript.some(js => {\n if (!js) {\n // Don't warn/fallback for empty JavaScript actions.\n return false;\n }\n console.warn(\"Warning: JavaScript support is not enabled\");\n this.fallback(UNSUPPORTED_FEATURES.javaScript);\n return true;\n });\n\n if (!triggerAutoPrint) {\n // Hack to support auto printing.\n for (const js of javaScript) {\n if (js && AutoPrintRegExp.test(js)) {\n triggerAutoPrint = true;\n break;\n }\n }\n }\n }\n\n if (triggerAutoPrint) {\n this.triggerPrinting();\n }\n },\n\n /**\n * @private\n */\n async _initializeMetadata(pdfDocument) {\n const { info, metadata, contentDispositionFilename, contentLength } =\n await pdfDocument.getMetadata();\n\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the metadata resolved.\n }\n this.documentInfo = info;\n this.metadata = metadata;\n this._contentDispositionFilename ??= contentDispositionFilename;\n this._contentLength ??= contentLength; // See `getDownloadInfo`-call above.\n\n // Provides some basic debug information\n console.log(\n `PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` +\n `${(info.Producer || \"-\").trim()} / ${(info.Creator || \"-\").trim()}] ` +\n `(PDF.js: ${version || \"-\"})`\n );\n let pdfTitle = info?.Title;\n\n const metadataTitle = metadata?.get(\"dc:title\");\n if (metadataTitle) {\n // Ghostscript can produce invalid 'dc:title' Metadata entries:\n // - The title may be \"Untitled\" (fixes bug 1031612).\n // - The title may contain incorrectly encoded characters, which thus\n // looks broken, hence we ignore the Metadata entry when it\n // contains characters from the Specials Unicode block\n // (fixes bug 1605526).\n if (\n metadataTitle !== \"Untitled\" &&\n !/[\\uFFF0-\\uFFFF]/g.test(metadataTitle)\n ) {\n pdfTitle = metadataTitle;\n }\n }\n if (pdfTitle) {\n this.setTitle(\n `${pdfTitle} - ${contentDispositionFilename || document.title}`\n );\n } else if (contentDispositionFilename) {\n this.setTitle(contentDispositionFilename);\n }\n\n if (\n info.IsXFAPresent &&\n !info.IsAcroFormPresent &&\n !pdfDocument.isPureXfa\n ) {\n if (pdfDocument.loadingParams.enableXfa) {\n console.warn(\"Warning: XFA Foreground documents are not supported\");\n } else {\n console.warn(\"Warning: XFA support is not enabled\");\n }\n this.fallback(UNSUPPORTED_FEATURES.forms);\n } else if (\n (info.IsAcroFormPresent || info.IsXFAPresent) &&\n !this.pdfViewer.renderForms\n ) {\n console.warn(\"Warning: Interactive form support is not enabled\");\n this.fallback(UNSUPPORTED_FEATURES.forms);\n }\n\n if (info.IsSignaturesPresent) {\n console.warn(\"Warning: Digital signatures validation is not supported\");\n this.fallback(UNSUPPORTED_FEATURES.signatures);\n }\n\n // Telemetry labels must be C++ variable friendly.\n let versionId = \"other\";\n if (KNOWN_VERSIONS.includes(info.PDFFormatVersion)) {\n versionId = `v${info.PDFFormatVersion.replace(\".\", \"_\")}`;\n }\n let generatorId = \"other\";\n if (info.Producer) {\n const producer = info.Producer.toLowerCase();\n KNOWN_GENERATORS.some(function (generator) {\n if (!producer.includes(generator)) {\n return false;\n }\n generatorId = generator.replace(/[ .-]/g, \"_\");\n return true;\n });\n }\n let formType = null;\n if (info.IsXFAPresent) {\n formType = \"xfa\";\n } else if (info.IsAcroFormPresent) {\n formType = \"acroform\";\n }\n this.externalServices.reportTelemetry({\n type: \"documentInfo\",\n version: versionId,\n generator: generatorId,\n formType,\n });\n\n this.eventBus.dispatch(\"metadataloaded\", { source: this });\n },\n\n /**\n * @private\n */\n async _initializePageLabels(pdfDocument) {\n const labels = await pdfDocument.getPageLabels();\n\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the page labels resolved.\n }\n if (!labels || AppOptions.get(\"disablePageLabels\")) {\n return;\n }\n const numLabels = labels.length;\n // Ignore page labels that correspond to standard page numbering,\n // or page labels that are all empty.\n let standardLabels = 0,\n emptyLabels = 0;\n for (let i = 0; i < numLabels; i++) {\n const label = labels[i];\n if (label === (i + 1).toString()) {\n standardLabels++;\n } else if (label === \"\") {\n emptyLabels++;\n } else {\n break;\n }\n }\n if (standardLabels >= numLabels || emptyLabels >= numLabels) {\n return;\n }\n const { pdfViewer, pdfThumbnailViewer, toolbar } = this;\n\n pdfViewer.setPageLabels(labels);\n pdfThumbnailViewer.setPageLabels(labels);\n\n // Changing toolbar page display to use labels and we need to set\n // the label of the current page.\n toolbar.setPagesCount(numLabels, true);\n toolbar.setPageNumber(\n pdfViewer.currentPageNumber,\n pdfViewer.currentPageLabel\n );\n },\n\n /**\n * @private\n */\n _initializePdfHistory({ fingerprint, viewOnLoad, initialDest = null }) {\n if (!this.pdfHistory) {\n return;\n }\n this.pdfHistory.initialize({\n fingerprint,\n resetHistory: viewOnLoad === ViewOnLoad.INITIAL,\n updateUrl: AppOptions.get(\"historyUpdateUrl\"),\n });\n\n if (this.pdfHistory.initialBookmark) {\n this.initialBookmark = this.pdfHistory.initialBookmark;\n\n this.initialRotation = this.pdfHistory.initialRotation;\n }\n\n // Always let the browser history/document hash take precedence.\n if (\n initialDest &&\n !this.initialBookmark &&\n viewOnLoad === ViewOnLoad.UNKNOWN\n ) {\n this.initialBookmark = JSON.stringify(initialDest);\n // TODO: Re-factor the `PDFHistory` initialization to remove this hack\n // that's currently necessary to prevent weird initial history state.\n this.pdfHistory.push({ explicitDest: initialDest, pageNumber: null });\n }\n },\n\n /**\n * @private\n */\n _initializeAnnotationStorageCallbacks(pdfDocument) {\n if (pdfDocument !== this.pdfDocument) {\n return;\n }\n const { annotationStorage } = pdfDocument;\n\n annotationStorage.onSetModified = () => {\n window.addEventListener(\"beforeunload\", beforeUnload);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n this._annotationStorageModified = true;\n }\n };\n annotationStorage.onResetModified = () => {\n window.removeEventListener(\"beforeunload\", beforeUnload);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n delete this._annotationStorageModified;\n }\n };\n },\n\n setInitialView(\n storedHash,\n { rotation, sidebarView, scrollMode, spreadMode } = {}\n ) {\n const setRotation = angle => {\n if (isValidRotation(angle)) {\n this.pdfViewer.pagesRotation = angle;\n }\n };\n const setViewerModes = (scroll, spread) => {\n if (isValidScrollMode(scroll)) {\n this.pdfViewer.scrollMode = scroll;\n }\n if (isValidSpreadMode(spread)) {\n this.pdfViewer.spreadMode = spread;\n }\n };\n this.isInitialViewSet = true;\n this.pdfSidebar.setInitialView(sidebarView);\n\n setViewerModes(scrollMode, spreadMode);\n\n if (this.initialBookmark) {\n setRotation(this.initialRotation);\n delete this.initialRotation;\n\n this.pdfLinkService.setHash(this.initialBookmark);\n this.initialBookmark = null;\n } else if (storedHash) {\n setRotation(rotation);\n\n this.pdfLinkService.setHash(storedHash);\n }\n\n // Ensure that the correct page number is displayed in the UI,\n // even if the active page didn't change during document load.\n this.toolbar.setPageNumber(\n this.pdfViewer.currentPageNumber,\n this.pdfViewer.currentPageLabel\n );\n this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber);\n\n if (!this.pdfViewer.currentScaleValue) {\n // Scale was not initialized: invalid bookmark or scale was not specified.\n // Setting the default one.\n this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\n }\n },\n\n /**\n * @private\n */\n _cleanup() {\n if (!this.pdfDocument) {\n return; // run cleanup when document is loaded\n }\n this.pdfViewer.cleanup();\n this.pdfThumbnailViewer.cleanup();\n\n // We don't want to remove fonts used by active page SVGs.\n this.pdfDocument.cleanup(\n /* keepLoadedFonts = */ this.pdfViewer.renderer === RendererType.SVG\n );\n },\n\n forceRendering() {\n this.pdfRenderingQueue.printing = !!this.printService;\n this.pdfRenderingQueue.isThumbnailViewEnabled =\n this.pdfSidebar.isThumbnailViewVisible;\n this.pdfRenderingQueue.renderHighestPriority();\n },\n\n beforePrint() {\n // Given that the \"beforeprint\" browser event is synchronous, we\n // unfortunately cannot await the scripting event dispatching here.\n this.pdfScriptingManager.dispatchWillPrint();\n\n if (this.printService) {\n // There is no way to suppress beforePrint/afterPrint events,\n // but PDFPrintService may generate double events -- this will ignore\n // the second event that will be coming from native window.print().\n return;\n }\n\n if (!this.supportsPrinting) {\n this.l10n.get(\"printing_not_supported\").then(msg => {\n this._otherError(msg);\n });\n return;\n }\n\n // The beforePrint is a sync method and we need to know layout before\n // returning from this method. Ensure that we can get sizes of the pages.\n if (!this.pdfViewer.pageViewsReady) {\n this.l10n.get(\"printing_not_ready\").then(msg => {\n // eslint-disable-next-line no-alert\n window.alert(msg);\n });\n return;\n }\n\n const pagesOverview = this.pdfViewer.getPagesOverview();\n const printContainer = this.appConfig.printContainer;\n const printResolution = AppOptions.get(\"printResolution\");\n const optionalContentConfigPromise =\n this.pdfViewer.optionalContentConfigPromise;\n\n const printService = PDFPrintServiceFactory.instance.createPrintService(\n this.pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise,\n this.l10n\n );\n this.printService = printService;\n this.forceRendering();\n\n printService.layout();\n\n this.externalServices.reportTelemetry({\n type: \"print\",\n });\n },\n\n afterPrint() {\n // Given that the \"afterprint\" browser event is synchronous, we\n // unfortunately cannot await the scripting event dispatching here.\n this.pdfScriptingManager.dispatchDidPrint();\n\n if (this.printService) {\n this.printService.destroy();\n this.printService = null;\n\n this.pdfDocument?.annotationStorage.resetModified();\n }\n this.forceRendering();\n },\n\n rotatePages(delta) {\n this.pdfViewer.pagesRotation += delta;\n // Note that the thumbnail viewer is updated, and rendering is triggered,\n // in the 'rotationchanging' event handler.\n },\n\n requestPresentationMode() {\n this.pdfPresentationMode?.request();\n },\n\n triggerPrinting() {\n if (!this.supportsPrinting) {\n return;\n }\n window.print();\n },\n\n bindEvents() {\n const { eventBus, _boundEvents } = this;\n\n _boundEvents.beforePrint = this.beforePrint.bind(this);\n _boundEvents.afterPrint = this.afterPrint.bind(this);\n\n eventBus._on(\"resize\", webViewerResize);\n eventBus._on(\"hashchange\", webViewerHashchange);\n eventBus._on(\"beforeprint\", _boundEvents.beforePrint);\n eventBus._on(\"afterprint\", _boundEvents.afterPrint);\n eventBus._on(\"pagerendered\", webViewerPageRendered);\n eventBus._on(\"updateviewarea\", webViewerUpdateViewarea);\n eventBus._on(\"pagechanging\", webViewerPageChanging);\n eventBus._on(\"scalechanging\", webViewerScaleChanging);\n eventBus._on(\"rotationchanging\", webViewerRotationChanging);\n eventBus._on(\"sidebarviewchanged\", webViewerSidebarViewChanged);\n eventBus._on(\"pagemode\", webViewerPageMode);\n eventBus._on(\"namedaction\", webViewerNamedAction);\n eventBus._on(\"presentationmodechanged\", webViewerPresentationModeChanged);\n eventBus._on(\"presentationmode\", webViewerPresentationMode);\n eventBus._on(\"print\", webViewerPrint);\n eventBus._on(\"download\", webViewerDownload);\n eventBus._on(\"save\", webViewerSave);\n eventBus._on(\"firstpage\", webViewerFirstPage);\n eventBus._on(\"lastpage\", webViewerLastPage);\n eventBus._on(\"nextpage\", webViewerNextPage);\n eventBus._on(\"previouspage\", webViewerPreviousPage);\n eventBus._on(\"zoomin\", webViewerZoomIn);\n eventBus._on(\"zoomout\", webViewerZoomOut);\n eventBus._on(\"zoomreset\", webViewerZoomReset);\n eventBus._on(\"pagenumberchanged\", webViewerPageNumberChanged);\n eventBus._on(\"scalechanged\", webViewerScaleChanged);\n eventBus._on(\"rotatecw\", webViewerRotateCw);\n eventBus._on(\"rotateccw\", webViewerRotateCcw);\n eventBus._on(\"optionalcontentconfig\", webViewerOptionalContentConfig);\n eventBus._on(\"switchscrollmode\", webViewerSwitchScrollMode);\n eventBus._on(\"scrollmodechanged\", webViewerScrollModeChanged);\n eventBus._on(\"switchspreadmode\", webViewerSwitchSpreadMode);\n eventBus._on(\"spreadmodechanged\", webViewerSpreadModeChanged);\n eventBus._on(\"documentproperties\", webViewerDocumentProperties);\n eventBus._on(\"findfromurlhash\", webViewerFindFromUrlHash);\n eventBus._on(\"updatefindmatchescount\", webViewerUpdateFindMatchesCount);\n eventBus._on(\"updatefindcontrolstate\", webViewerUpdateFindControlState);\n\n if (AppOptions.get(\"pdfBug\")) {\n _boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug;\n\n eventBus._on(\"pagerendered\", _boundEvents.reportPageStatsPDFBug);\n eventBus._on(\"pagechanging\", _boundEvents.reportPageStatsPDFBug);\n }\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n eventBus._on(\"fileinputchange\", webViewerFileInputChange);\n eventBus._on(\"openfile\", webViewerOpenFile);\n }\n },\n\n bindWindowEvents() {\n const { eventBus, _boundEvents } = this;\n\n _boundEvents.windowResize = () => {\n eventBus.dispatch(\"resize\", { source: window });\n };\n _boundEvents.windowHashChange = () => {\n eventBus.dispatch(\"hashchange\", {\n source: window,\n hash: document.location.hash.substring(1),\n });\n };\n _boundEvents.windowBeforePrint = () => {\n eventBus.dispatch(\"beforeprint\", { source: window });\n };\n _boundEvents.windowAfterPrint = () => {\n eventBus.dispatch(\"afterprint\", { source: window });\n };\n _boundEvents.windowUpdateFromSandbox = event => {\n eventBus.dispatch(\"updatefromsandbox\", {\n source: window,\n detail: event.detail,\n });\n };\n\n window.addEventListener(\"visibilitychange\", webViewerVisibilityChange);\n window.addEventListener(\"wheel\", webViewerWheel, { passive: false });\n window.addEventListener(\"touchstart\", webViewerTouchStart, {\n passive: false,\n });\n window.addEventListener(\"click\", webViewerClick);\n window.addEventListener(\"keydown\", webViewerKeyDown);\n window.addEventListener(\"resize\", _boundEvents.windowResize);\n window.addEventListener(\"hashchange\", _boundEvents.windowHashChange);\n window.addEventListener(\"beforeprint\", _boundEvents.windowBeforePrint);\n window.addEventListener(\"afterprint\", _boundEvents.windowAfterPrint);\n window.addEventListener(\n \"updatefromsandbox\",\n _boundEvents.windowUpdateFromSandbox\n );\n },\n\n unbindEvents() {\n const { eventBus, _boundEvents } = this;\n\n eventBus._off(\"resize\", webViewerResize);\n eventBus._off(\"hashchange\", webViewerHashchange);\n eventBus._off(\"beforeprint\", _boundEvents.beforePrint);\n eventBus._off(\"afterprint\", _boundEvents.afterPrint);\n eventBus._off(\"pagerendered\", webViewerPageRendered);\n eventBus._off(\"updateviewarea\", webViewerUpdateViewarea);\n eventBus._off(\"pagechanging\", webViewerPageChanging);\n eventBus._off(\"scalechanging\", webViewerScaleChanging);\n eventBus._off(\"rotationchanging\", webViewerRotationChanging);\n eventBus._off(\"sidebarviewchanged\", webViewerSidebarViewChanged);\n eventBus._off(\"pagemode\", webViewerPageMode);\n eventBus._off(\"namedaction\", webViewerNamedAction);\n eventBus._off(\"presentationmodechanged\", webViewerPresentationModeChanged);\n eventBus._off(\"presentationmode\", webViewerPresentationMode);\n eventBus._off(\"print\", webViewerPrint);\n eventBus._off(\"download\", webViewerDownload);\n eventBus._off(\"save\", webViewerSave);\n eventBus._off(\"firstpage\", webViewerFirstPage);\n eventBus._off(\"lastpage\", webViewerLastPage);\n eventBus._off(\"nextpage\", webViewerNextPage);\n eventBus._off(\"previouspage\", webViewerPreviousPage);\n eventBus._off(\"zoomin\", webViewerZoomIn);\n eventBus._off(\"zoomout\", webViewerZoomOut);\n eventBus._off(\"zoomreset\", webViewerZoomReset);\n eventBus._off(\"pagenumberchanged\", webViewerPageNumberChanged);\n eventBus._off(\"scalechanged\", webViewerScaleChanged);\n eventBus._off(\"rotatecw\", webViewerRotateCw);\n eventBus._off(\"rotateccw\", webViewerRotateCcw);\n eventBus._off(\"optionalcontentconfig\", webViewerOptionalContentConfig);\n eventBus._off(\"switchscrollmode\", webViewerSwitchScrollMode);\n eventBus._off(\"scrollmodechanged\", webViewerScrollModeChanged);\n eventBus._off(\"switchspreadmode\", webViewerSwitchSpreadMode);\n eventBus._off(\"spreadmodechanged\", webViewerSpreadModeChanged);\n eventBus._off(\"documentproperties\", webViewerDocumentProperties);\n eventBus._off(\"findfromurlhash\", webViewerFindFromUrlHash);\n eventBus._off(\"updatefindmatchescount\", webViewerUpdateFindMatchesCount);\n eventBus._off(\"updatefindcontrolstate\", webViewerUpdateFindControlState);\n\n if (_boundEvents.reportPageStatsPDFBug) {\n eventBus._off(\"pagerendered\", _boundEvents.reportPageStatsPDFBug);\n eventBus._off(\"pagechanging\", _boundEvents.reportPageStatsPDFBug);\n\n _boundEvents.reportPageStatsPDFBug = null;\n }\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n eventBus._off(\"fileinputchange\", webViewerFileInputChange);\n eventBus._off(\"openfile\", webViewerOpenFile);\n }\n\n _boundEvents.beforePrint = null;\n _boundEvents.afterPrint = null;\n },\n\n unbindWindowEvents() {\n const { _boundEvents } = this;\n\n window.removeEventListener(\"visibilitychange\", webViewerVisibilityChange);\n window.removeEventListener(\"wheel\", webViewerWheel, { passive: false });\n window.removeEventListener(\"touchstart\", webViewerTouchStart, {\n passive: false,\n });\n window.removeEventListener(\"click\", webViewerClick);\n window.removeEventListener(\"keydown\", webViewerKeyDown);\n window.removeEventListener(\"resize\", _boundEvents.windowResize);\n window.removeEventListener(\"hashchange\", _boundEvents.windowHashChange);\n window.removeEventListener(\"beforeprint\", _boundEvents.windowBeforePrint);\n window.removeEventListener(\"afterprint\", _boundEvents.windowAfterPrint);\n window.removeEventListener(\n \"updatefromsandbox\",\n _boundEvents.windowUpdateFromSandbox\n );\n\n _boundEvents.windowResize = null;\n _boundEvents.windowHashChange = null;\n _boundEvents.windowBeforePrint = null;\n _boundEvents.windowAfterPrint = null;\n _boundEvents.windowUpdateFromSandbox = null;\n },\n\n accumulateWheelTicks(ticks) {\n // If the scroll direction changed, reset the accumulated wheel ticks.\n if (\n (this._wheelUnusedTicks > 0 && ticks < 0) ||\n (this._wheelUnusedTicks < 0 && ticks > 0)\n ) {\n this._wheelUnusedTicks = 0;\n }\n this._wheelUnusedTicks += ticks;\n const wholeTicks =\n Math.sign(this._wheelUnusedTicks) *\n Math.floor(Math.abs(this._wheelUnusedTicks));\n this._wheelUnusedTicks -= wholeTicks;\n return wholeTicks;\n },\n\n /**\n * Should be called *after* all pages have loaded, or if an error occurred,\n * to unblock the \"load\" event; see https://bugzilla.mozilla.org/show_bug.cgi?id=1618553\n * @private\n */\n _unblockDocumentLoadEvent() {\n if (document.blockUnblockOnload) {\n document.blockUnblockOnload(false);\n }\n // Ensure that this method is only ever run once.\n this._unblockDocumentLoadEvent = () => {};\n },\n\n /**\n * @ignore\n */\n _reportDocumentStatsTelemetry() {\n const { stats } = this.pdfDocument;\n if (stats !== this._docStats) {\n this._docStats = stats;\n\n this.externalServices.reportTelemetry({\n type: \"documentStats\",\n stats,\n });\n }\n },\n\n /**\n * Used together with the integration-tests, to enable awaiting full\n * initialization of the scripting/sandbox.\n */\n get scriptingReady() {\n return this.pdfScriptingManager.ready;\n },\n};\n\nlet validateFileURL;\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const HOSTED_VIEWER_ORIGINS = [\n \"null\",\n \"http://mozilla.github.io\",\n \"https://mozilla.github.io\",\n ];\n validateFileURL = function (file) {\n if (file === undefined) {\n return;\n }\n try {\n const viewerOrigin = new URL(window.location.href).origin || \"null\";\n if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) {\n // Hosted or local viewer, allow for any file locations\n return;\n }\n const { origin, protocol } = new URL(file, window.location.href);\n // Removing of the following line will not guarantee that the viewer will\n // start accepting URLs from foreign origin -- CORS headers on the remote\n // server must be properly configured.\n // IE10 / IE11 does not include an origin in `blob:`-URLs. So don't block\n // any blob:-URL. The browser's same-origin policy will block requests to\n // blob:-URLs from other origins, so this is safe.\n if (origin !== viewerOrigin && protocol !== \"blob:\") {\n throw new Error(\"file origin does not match viewer's\");\n }\n } catch (ex) {\n PDFViewerApplication.l10n.get(\"loading_error\").then(msg => {\n PDFViewerApplication._documentError(msg, { message: ex?.message });\n });\n throw ex;\n }\n };\n}\n\nasync function loadFakeWorker() {\n if (!GlobalWorkerOptions.workerSrc) {\n GlobalWorkerOptions.workerSrc = AppOptions.get(\"workerSrc\");\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n window.pdfjsWorker = await import(\"pdfjs/core/worker.js\");\n return;\n }\n await loadScript(PDFWorker.workerSrc);\n}\n\nasync function initPDFBug(enabledTabs) {\n const { debuggerScriptPath, mainContainer } = PDFViewerApplication.appConfig;\n await loadScript(debuggerScriptPath);\n PDFBug.init({ OPS }, mainContainer, enabledTabs);\n}\n\nfunction reportPageStatsPDFBug({ pageNumber }) {\n if (typeof Stats === \"undefined\" || !Stats.enabled) {\n return;\n }\n const pageView = PDFViewerApplication.pdfViewer.getPageView(\n /* index = */ pageNumber - 1\n );\n const pageStats = pageView?.pdfPage?.stats;\n if (!pageStats) {\n return;\n }\n Stats.add(pageNumber, pageStats);\n}\n\nfunction webViewerInitialized() {\n const appConfig = PDFViewerApplication.appConfig;\n let file;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const queryString = document.location.search.substring(1);\n const params = parseQueryString(queryString);\n file = params.get(\"file\") ?? AppOptions.get(\"defaultUrl\");\n validateFileURL(file);\n } else if (PDFJSDev.test(\"MOZCENTRAL\")) {\n file = window.location.href;\n } else if (PDFJSDev.test(\"CHROME\")) {\n file = AppOptions.get(\"defaultUrl\");\n }\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const fileInput = document.createElement(\"input\");\n fileInput.id = appConfig.openFileInputName;\n fileInput.className = \"fileInput\";\n fileInput.setAttribute(\"type\", \"file\");\n fileInput.oncontextmenu = noContextMenuHandler;\n document.body.appendChild(fileInput);\n\n if (\n !window.File ||\n !window.FileReader ||\n !window.FileList ||\n !window.Blob\n ) {\n appConfig.toolbar.openFile.hidden = true;\n appConfig.secondaryToolbar.openFileButton.hidden = true;\n } else {\n fileInput.value = null;\n }\n\n fileInput.addEventListener(\"change\", function (evt) {\n const files = evt.target.files;\n if (!files || files.length === 0) {\n return;\n }\n PDFViewerApplication.eventBus.dispatch(\"fileinputchange\", {\n source: this,\n fileInput: evt.target,\n });\n });\n\n // Enable dragging-and-dropping a new PDF file onto the viewerContainer.\n appConfig.mainContainer.addEventListener(\"dragover\", function (evt) {\n evt.preventDefault();\n\n evt.dataTransfer.dropEffect = \"move\";\n });\n appConfig.mainContainer.addEventListener(\"drop\", function (evt) {\n evt.preventDefault();\n\n const files = evt.dataTransfer.files;\n if (!files || files.length === 0) {\n return;\n }\n PDFViewerApplication.eventBus.dispatch(\"fileinputchange\", {\n source: this,\n fileInput: evt.dataTransfer,\n });\n });\n } else {\n appConfig.toolbar.openFile.hidden = true;\n appConfig.secondaryToolbar.openFileButton.hidden = true;\n }\n\n if (!PDFViewerApplication.supportsDocumentFonts) {\n AppOptions.set(\"disableFontFace\", true);\n PDFViewerApplication.l10n.get(\"web_fonts_disabled\").then(msg => {\n console.warn(msg);\n });\n }\n\n if (!PDFViewerApplication.supportsPrinting) {\n appConfig.toolbar.print.classList.add(\"hidden\");\n appConfig.secondaryToolbar.printButton.classList.add(\"hidden\");\n }\n\n if (!PDFViewerApplication.supportsFullscreen) {\n appConfig.toolbar.presentationModeButton.classList.add(\"hidden\");\n appConfig.secondaryToolbar.presentationModeButton.classList.add(\"hidden\");\n }\n\n if (PDFViewerApplication.supportsIntegratedFind) {\n appConfig.toolbar.viewFind.classList.add(\"hidden\");\n }\n\n appConfig.mainContainer.addEventListener(\n \"transitionend\",\n function (evt) {\n if (evt.target === /* mainContainer */ this) {\n PDFViewerApplication.eventBus.dispatch(\"resize\", { source: this });\n }\n },\n true\n );\n\n try {\n webViewerOpenFileViaURL(file);\n } catch (reason) {\n PDFViewerApplication.l10n.get(\"loading_error\").then(msg => {\n PDFViewerApplication._documentError(msg, reason);\n });\n }\n}\n\nfunction webViewerOpenFileViaURL(file) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (file) {\n PDFViewerApplication.open(file);\n } else {\n PDFViewerApplication._hideViewBookmark();\n }\n } else if (PDFJSDev.test(\"MOZCENTRAL || CHROME\")) {\n PDFViewerApplication.setTitleUsingUrl(file, /* downloadUrl = */ file);\n PDFViewerApplication.initPassiveLoading();\n } else {\n if (file) {\n throw new Error(\"Not implemented: webViewerOpenFileViaURL\");\n } else {\n PDFViewerApplication._hideViewBookmark();\n }\n }\n}\n\nfunction webViewerPageRendered({ pageNumber, error }) {\n // If the page is still visible when it has finished rendering,\n // ensure that the page number input loading indicator is hidden.\n if (pageNumber === PDFViewerApplication.page) {\n PDFViewerApplication.toolbar.updateLoadingIndicatorState(false);\n }\n\n // Use the rendered page to set the corresponding thumbnail image.\n if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {\n const pageView = PDFViewerApplication.pdfViewer.getPageView(\n /* index = */ pageNumber - 1\n );\n const thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(\n /* index = */ pageNumber - 1\n );\n if (pageView && thumbnailView) {\n thumbnailView.setImage(pageView);\n }\n }\n\n if (error) {\n PDFViewerApplication.l10n.get(\"rendering_error\").then(msg => {\n PDFViewerApplication._otherError(msg, error);\n });\n }\n\n // It is a good time to report stream and font types.\n PDFViewerApplication._reportDocumentStatsTelemetry();\n}\n\nfunction webViewerPageMode({ mode }) {\n // Handle the 'pagemode' hash parameter, see also `PDFLinkService_setHash`.\n let view;\n switch (mode) {\n case \"thumbs\":\n view = SidebarView.THUMBS;\n break;\n case \"bookmarks\":\n case \"outline\": // non-standard\n view = SidebarView.OUTLINE;\n break;\n case \"attachments\": // non-standard\n view = SidebarView.ATTACHMENTS;\n break;\n case \"layers\": // non-standard\n view = SidebarView.LAYERS;\n break;\n case \"none\":\n view = SidebarView.NONE;\n break;\n default:\n console.error('Invalid \"pagemode\" hash parameter: ' + mode);\n return;\n }\n PDFViewerApplication.pdfSidebar.switchView(view, /* forceOpen = */ true);\n}\n\nfunction webViewerNamedAction(evt) {\n // Processing a couple of named actions that might be useful, see also\n // `PDFLinkService.executeNamedAction`.\n switch (evt.action) {\n case \"GoToPage\":\n PDFViewerApplication.appConfig.toolbar.pageNumber.select();\n break;\n\n case \"Find\":\n if (!PDFViewerApplication.supportsIntegratedFind) {\n PDFViewerApplication.findBar.toggle();\n }\n break;\n\n case \"Print\":\n PDFViewerApplication.triggerPrinting();\n break;\n\n case \"SaveAs\":\n webViewerSave();\n break;\n }\n}\n\nfunction webViewerPresentationModeChanged(evt) {\n PDFViewerApplication.pdfViewer.presentationModeState = evt.state;\n}\n\nfunction webViewerSidebarViewChanged(evt) {\n PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled =\n PDFViewerApplication.pdfSidebar.isThumbnailViewVisible;\n\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store?.set(\"sidebarView\", evt.view).catch(() => {\n // Unable to write to storage.\n });\n }\n}\n\nfunction webViewerUpdateViewarea(evt) {\n const location = evt.location;\n\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store\n ?.setMultiple({\n page: location.pageNumber,\n zoom: location.scale,\n scrollLeft: location.left,\n scrollTop: location.top,\n rotation: location.rotation,\n })\n .catch(() => {\n // Unable to write to storage.\n });\n }\n const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(\n location.pdfOpenParams\n );\n PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href;\n PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href =\n href;\n\n // Show/hide the loading indicator in the page number input element.\n const currentPage = PDFViewerApplication.pdfViewer.getPageView(\n /* index = */ PDFViewerApplication.page - 1\n );\n const loading = currentPage?.renderingState !== RenderingStates.FINISHED;\n PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading);\n}\n\nfunction webViewerScrollModeChanged(evt) {\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store?.set(\"scrollMode\", evt.mode).catch(() => {\n // Unable to write to storage.\n });\n }\n}\n\nfunction webViewerSpreadModeChanged(evt) {\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store?.set(\"spreadMode\", evt.mode).catch(() => {\n // Unable to write to storage.\n });\n }\n}\n\nfunction webViewerResize() {\n const { pdfDocument, pdfViewer } = PDFViewerApplication;\n if (!pdfDocument) {\n return;\n }\n const currentScaleValue = pdfViewer.currentScaleValue;\n if (\n currentScaleValue === \"auto\" ||\n currentScaleValue === \"page-fit\" ||\n currentScaleValue === \"page-width\"\n ) {\n // Note: the scale is constant for 'page-actual'.\n pdfViewer.currentScaleValue = currentScaleValue;\n }\n pdfViewer.update();\n}\n\nfunction webViewerHashchange(evt) {\n const hash = evt.hash;\n if (!hash) {\n return;\n }\n if (!PDFViewerApplication.isInitialViewSet) {\n PDFViewerApplication.initialBookmark = hash;\n } else if (!PDFViewerApplication.pdfHistory?.popStateInProgress) {\n PDFViewerApplication.pdfLinkService.setHash(hash);\n }\n}\n\nlet webViewerFileInputChange, webViewerOpenFile;\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n webViewerFileInputChange = function (evt) {\n if (PDFViewerApplication.pdfViewer?.isInPresentationMode) {\n return; // Opening a new PDF file isn't supported in Presentation Mode.\n }\n const file = evt.fileInput.files[0];\n\n if (!compatibilityParams.disableCreateObjectURL) {\n let url = URL.createObjectURL(file);\n if (file.name) {\n url = { url, originalUrl: file.name };\n }\n PDFViewerApplication.open(url);\n } else {\n PDFViewerApplication.setTitleUsingUrl(file.name);\n // Read the local file into a Uint8Array.\n const fileReader = new FileReader();\n fileReader.onload = function webViewerChangeFileReaderOnload(event) {\n const buffer = event.target.result;\n PDFViewerApplication.open(new Uint8Array(buffer));\n };\n fileReader.readAsArrayBuffer(file);\n }\n };\n\n webViewerOpenFile = function (evt) {\n const openFileInputName = PDFViewerApplication.appConfig.openFileInputName;\n document.getElementById(openFileInputName).click();\n };\n}\n\nfunction webViewerPresentationMode() {\n PDFViewerApplication.requestPresentationMode();\n}\nfunction webViewerPrint() {\n PDFViewerApplication.triggerPrinting();\n}\nfunction webViewerDownload() {\n PDFViewerApplication.downloadOrSave({ sourceEventType: \"download\" });\n}\nfunction webViewerSave() {\n PDFViewerApplication.downloadOrSave({ sourceEventType: \"save\" });\n}\nfunction webViewerFirstPage() {\n if (PDFViewerApplication.pdfDocument) {\n PDFViewerApplication.page = 1;\n }\n}\nfunction webViewerLastPage() {\n if (PDFViewerApplication.pdfDocument) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n }\n}\nfunction webViewerNextPage() {\n PDFViewerApplication.pdfViewer.nextPage();\n}\nfunction webViewerPreviousPage() {\n PDFViewerApplication.pdfViewer.previousPage();\n}\nfunction webViewerZoomIn() {\n PDFViewerApplication.zoomIn();\n}\nfunction webViewerZoomOut() {\n PDFViewerApplication.zoomOut();\n}\nfunction webViewerZoomReset() {\n PDFViewerApplication.zoomReset();\n}\nfunction webViewerPageNumberChanged(evt) {\n const pdfViewer = PDFViewerApplication.pdfViewer;\n // Note that for `<input type=\"number\">` HTML elements, an empty string will\n // be returned for non-number inputs; hence we simply do nothing in that case.\n if (evt.value !== \"\") {\n PDFViewerApplication.pdfLinkService.goToPage(evt.value);\n }\n\n // Ensure that the page number input displays the correct value, even if the\n // value entered by the user was invalid (e.g. a floating point number).\n if (\n evt.value !== pdfViewer.currentPageNumber.toString() &&\n evt.value !== pdfViewer.currentPageLabel\n ) {\n PDFViewerApplication.toolbar.setPageNumber(\n pdfViewer.currentPageNumber,\n pdfViewer.currentPageLabel\n );\n }\n}\nfunction webViewerScaleChanged(evt) {\n PDFViewerApplication.pdfViewer.currentScaleValue = evt.value;\n}\nfunction webViewerRotateCw() {\n PDFViewerApplication.rotatePages(90);\n}\nfunction webViewerRotateCcw() {\n PDFViewerApplication.rotatePages(-90);\n}\nfunction webViewerOptionalContentConfig(evt) {\n PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise;\n}\nfunction webViewerSwitchScrollMode(evt) {\n PDFViewerApplication.pdfViewer.scrollMode = evt.mode;\n}\nfunction webViewerSwitchSpreadMode(evt) {\n PDFViewerApplication.pdfViewer.spreadMode = evt.mode;\n}\nfunction webViewerDocumentProperties() {\n PDFViewerApplication.pdfDocumentProperties.open();\n}\n\nfunction webViewerFindFromUrlHash(evt) {\n PDFViewerApplication.eventBus.dispatch(\"find\", {\n source: evt.source,\n type: \"\",\n query: evt.query,\n phraseSearch: evt.phraseSearch,\n caseSensitive: false,\n entireWord: false,\n highlightAll: true,\n findPrevious: false,\n });\n}\n\nfunction webViewerUpdateFindMatchesCount({ matchesCount }) {\n if (PDFViewerApplication.supportsIntegratedFind) {\n PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount);\n } else {\n PDFViewerApplication.findBar.updateResultsCount(matchesCount);\n }\n}\n\nfunction webViewerUpdateFindControlState({\n state,\n previous,\n matchesCount,\n rawQuery,\n}) {\n if (PDFViewerApplication.supportsIntegratedFind) {\n PDFViewerApplication.externalServices.updateFindControlState({\n result: state,\n findPrevious: previous,\n matchesCount,\n rawQuery,\n });\n } else {\n PDFViewerApplication.findBar.updateUIState(state, previous, matchesCount);\n }\n}\n\nfunction webViewerScaleChanging(evt) {\n PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale);\n\n PDFViewerApplication.pdfViewer.update();\n}\n\nfunction webViewerRotationChanging(evt) {\n PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation;\n\n PDFViewerApplication.forceRendering();\n // Ensure that the active page doesn't change during rotation.\n PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber;\n}\n\nfunction webViewerPageChanging({ pageNumber, pageLabel }) {\n PDFViewerApplication.toolbar.setPageNumber(pageNumber, pageLabel);\n PDFViewerApplication.secondaryToolbar.setPageNumber(pageNumber);\n\n if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {\n PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(pageNumber);\n }\n}\n\nfunction webViewerVisibilityChange(evt) {\n if (document.visibilityState === \"visible\") {\n // Ignore mouse wheel zooming during tab switches (bug 1503412).\n setZoomDisabledTimeout();\n }\n}\n\nlet zoomDisabledTimeout = null;\nfunction setZoomDisabledTimeout() {\n if (zoomDisabledTimeout) {\n clearTimeout(zoomDisabledTimeout);\n }\n zoomDisabledTimeout = setTimeout(function () {\n zoomDisabledTimeout = null;\n }, WHEEL_ZOOM_DISABLED_TIMEOUT);\n}\n\nfunction webViewerWheel(evt) {\n const { pdfViewer, supportedMouseWheelZoomModifierKeys } =\n PDFViewerApplication;\n\n if (pdfViewer.isInPresentationMode) {\n return;\n }\n\n if (\n (evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey) ||\n (evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey)\n ) {\n // Only zoom the pages, not the entire viewer.\n evt.preventDefault();\n // NOTE: this check must be placed *after* preventDefault.\n if (zoomDisabledTimeout || document.visibilityState === \"hidden\") {\n return;\n }\n\n const previousScale = pdfViewer.currentScale;\n\n const delta = normalizeWheelEventDirection(evt);\n let ticks = 0;\n if (\n evt.deltaMode === WheelEvent.DOM_DELTA_LINE ||\n evt.deltaMode === WheelEvent.DOM_DELTA_PAGE\n ) {\n // For line-based devices, use one tick per event, because different\n // OSs have different defaults for the number lines. But we generally\n // want one \"clicky\" roll of the wheel (which produces one event) to\n // adjust the zoom by one step.\n if (Math.abs(delta) >= 1) {\n ticks = Math.sign(delta);\n } else {\n // If we're getting fractional lines (I can't think of a scenario\n // this might actually happen), be safe and use the accumulator.\n ticks = PDFViewerApplication.accumulateWheelTicks(delta);\n }\n } else {\n // pixel-based devices\n const PIXELS_PER_LINE_SCALE = 30;\n ticks = PDFViewerApplication.accumulateWheelTicks(\n delta / PIXELS_PER_LINE_SCALE\n );\n }\n\n if (ticks < 0) {\n PDFViewerApplication.zoomOut(-ticks);\n } else if (ticks > 0) {\n PDFViewerApplication.zoomIn(ticks);\n }\n\n const currentScale = pdfViewer.currentScale;\n if (previousScale !== currentScale) {\n // After scaling the page via zoomIn/zoomOut, the position of the upper-\n // left corner is restored. When the mouse wheel is used, the position\n // under the cursor should be restored instead.\n const scaleCorrectionFactor = currentScale / previousScale - 1;\n const rect = pdfViewer.container.getBoundingClientRect();\n const dx = evt.clientX - rect.left;\n const dy = evt.clientY - rect.top;\n pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor;\n pdfViewer.container.scrollTop += dy * scaleCorrectionFactor;\n }\n } else {\n setZoomDisabledTimeout();\n }\n}\n\nfunction webViewerTouchStart(evt) {\n if (evt.touches.length > 1) {\n // Disable touch-based zooming, because the entire UI bits gets zoomed and\n // that doesn't look great. If we do want to have a good touch-based\n // zooming experience, we need to implement smooth zoom capability (probably\n // using a CSS transform for faster visual response, followed by async\n // re-rendering at the final zoom level) and do gesture detection on the\n // touchmove events to drive it. Or if we want to settle for a less good\n // experience we can make the touchmove events drive the existing step-zoom\n // behaviour that the ctrl+mousewheel path takes.\n evt.preventDefault();\n }\n}\n\nfunction webViewerClick(evt) {\n if (!PDFViewerApplication.secondaryToolbar.isOpen) {\n return;\n }\n const appConfig = PDFViewerApplication.appConfig;\n if (\n PDFViewerApplication.pdfViewer.containsElement(evt.target) ||\n (appConfig.toolbar.container.contains(evt.target) &&\n evt.target !== appConfig.secondaryToolbar.toggleButton)\n ) {\n PDFViewerApplication.secondaryToolbar.close();\n }\n}\n\nfunction webViewerKeyDown(evt) {\n if (PDFViewerApplication.overlayManager.active) {\n return;\n }\n const { eventBus, pdfViewer } = PDFViewerApplication;\n const isViewerInPresentationMode = pdfViewer.isInPresentationMode;\n\n let handled = false,\n ensureViewerFocused = false;\n const cmd =\n (evt.ctrlKey ? 1 : 0) |\n (evt.altKey ? 2 : 0) |\n (evt.shiftKey ? 4 : 0) |\n (evt.metaKey ? 8 : 0);\n\n // First, handle the key bindings that are independent whether an input\n // control is selected or not.\n if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {\n // either CTRL or META key with optional SHIFT.\n switch (evt.keyCode) {\n case 70: // f\n if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) {\n PDFViewerApplication.findBar.open();\n handled = true;\n }\n break;\n case 71: // g\n if (!PDFViewerApplication.supportsIntegratedFind) {\n const { state } = PDFViewerApplication.findController;\n if (state) {\n const eventState = Object.assign(Object.create(null), state, {\n source: window,\n type: \"again\",\n findPrevious: cmd === 5 || cmd === 12,\n });\n eventBus.dispatch(\"find\", eventState);\n }\n handled = true;\n }\n break;\n case 61: // FF/Mac '='\n case 107: // FF '+' and '='\n case 187: // Chrome '+'\n case 171: // FF with German keyboard\n if (!isViewerInPresentationMode) {\n PDFViewerApplication.zoomIn();\n }\n handled = true;\n break;\n case 173: // FF/Mac '-'\n case 109: // FF '-'\n case 189: // Chrome '-'\n if (!isViewerInPresentationMode) {\n PDFViewerApplication.zoomOut();\n }\n handled = true;\n break;\n case 48: // '0'\n case 96: // '0' on Numpad of Swedish keyboard\n if (!isViewerInPresentationMode) {\n // keeping it unhandled (to restore page zoom to 100%)\n setTimeout(function () {\n // ... and resetting the scale after browser adjusts its scale\n PDFViewerApplication.zoomReset();\n });\n handled = false;\n }\n break;\n\n case 38: // up arrow\n if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\n PDFViewerApplication.page = 1;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n case 40: // down arrow\n if (\n isViewerInPresentationMode ||\n PDFViewerApplication.page < PDFViewerApplication.pagesCount\n ) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n }\n }\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC || CHROME\")) {\n // CTRL or META without shift\n if (cmd === 1 || cmd === 8) {\n switch (evt.keyCode) {\n case 83: // s\n eventBus.dispatch(\"download\", { source: window });\n handled = true;\n break;\n\n case 79: // o\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n eventBus.dispatch(\"openfile\", { source: window });\n handled = true;\n }\n break;\n }\n }\n }\n\n // CTRL+ALT or Option+Command\n if (cmd === 3 || cmd === 10) {\n switch (evt.keyCode) {\n case 80: // p\n PDFViewerApplication.requestPresentationMode();\n handled = true;\n break;\n case 71: // g\n // focuses input#pageNumber field\n PDFViewerApplication.appConfig.toolbar.pageNumber.select();\n handled = true;\n break;\n }\n }\n\n if (handled) {\n if (ensureViewerFocused && !isViewerInPresentationMode) {\n pdfViewer.focus();\n }\n evt.preventDefault();\n return;\n }\n\n // Some shortcuts should not get handled if a control/input element\n // is selected.\n const curElement = getActiveOrFocusedElement();\n const curElementTagName = curElement?.tagName.toUpperCase();\n if (\n curElementTagName === \"INPUT\" ||\n curElementTagName === \"TEXTAREA\" ||\n curElementTagName === \"SELECT\" ||\n curElement?.isContentEditable\n ) {\n // Make sure that the secondary toolbar is closed when Escape is pressed.\n if (evt.keyCode !== /* Esc = */ 27) {\n return;\n }\n }\n\n // No control key pressed at all.\n if (cmd === 0) {\n let turnPage = 0,\n turnOnlyIfPageFit = false;\n switch (evt.keyCode) {\n case 38: // up arrow\n case 33: // pg up\n // vertical scrolling using arrow/pg keys\n if (pdfViewer.isVerticalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n turnPage = -1;\n break;\n case 8: // backspace\n if (!isViewerInPresentationMode) {\n turnOnlyIfPageFit = true;\n }\n turnPage = -1;\n break;\n case 37: // left arrow\n // horizontal scrolling using arrow keys\n if (pdfViewer.isHorizontalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n /* falls through */\n case 75: // 'k'\n case 80: // 'p'\n turnPage = -1;\n break;\n case 27: // esc key\n if (PDFViewerApplication.secondaryToolbar.isOpen) {\n PDFViewerApplication.secondaryToolbar.close();\n handled = true;\n }\n if (\n !PDFViewerApplication.supportsIntegratedFind &&\n PDFViewerApplication.findBar.opened\n ) {\n PDFViewerApplication.findBar.close();\n handled = true;\n }\n break;\n case 40: // down arrow\n case 34: // pg down\n // vertical scrolling using arrow/pg keys\n if (pdfViewer.isVerticalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n turnPage = 1;\n break;\n case 13: // enter key\n case 32: // spacebar\n if (!isViewerInPresentationMode) {\n turnOnlyIfPageFit = true;\n }\n turnPage = 1;\n break;\n case 39: // right arrow\n // horizontal scrolling using arrow keys\n if (pdfViewer.isHorizontalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n /* falls through */\n case 74: // 'j'\n case 78: // 'n'\n turnPage = 1;\n break;\n\n case 36: // home\n if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\n PDFViewerApplication.page = 1;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n case 35: // end\n if (\n isViewerInPresentationMode ||\n PDFViewerApplication.page < PDFViewerApplication.pagesCount\n ) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n\n case 83: // 's'\n PDFViewerApplication.pdfCursorTools.switchTool(CursorTool.SELECT);\n break;\n case 72: // 'h'\n PDFViewerApplication.pdfCursorTools.switchTool(CursorTool.HAND);\n break;\n\n case 82: // 'r'\n PDFViewerApplication.rotatePages(90);\n break;\n\n case 115: // F4\n PDFViewerApplication.pdfSidebar.toggle();\n break;\n }\n\n if (\n turnPage !== 0 &&\n (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === \"page-fit\")\n ) {\n if (turnPage > 0) {\n pdfViewer.nextPage();\n } else {\n pdfViewer.previousPage();\n }\n handled = true;\n }\n }\n\n // shift-key\n if (cmd === 4) {\n switch (evt.keyCode) {\n case 13: // enter key\n case 32: // spacebar\n if (\n !isViewerInPresentationMode &&\n pdfViewer.currentScaleValue !== \"page-fit\"\n ) {\n break;\n }\n pdfViewer.previousPage();\n\n handled = true;\n break;\n\n case 82: // 'r'\n PDFViewerApplication.rotatePages(-90);\n break;\n }\n }\n\n if (!handled && !isViewerInPresentationMode) {\n // 33=Page Up 34=Page Down 35=End 36=Home\n // 37=Left 38=Up 39=Right 40=Down\n // 32=Spacebar\n if (\n (evt.keyCode >= 33 && evt.keyCode <= 40) ||\n (evt.keyCode === 32 && curElementTagName !== \"BUTTON\")\n ) {\n ensureViewerFocused = true;\n }\n }\n\n if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) {\n // The page container is not focused, but a page navigation key has been\n // pressed. Change the focus to the viewer container to make sure that\n // navigation by keyboard works as expected.\n pdfViewer.focus();\n }\n\n if (handled) {\n evt.preventDefault();\n }\n}\n\nfunction beforeUnload(evt) {\n evt.preventDefault();\n evt.returnValue = \"\";\n return false;\n}\n\n/* Abstract factory for the print service. */\nconst PDFPrintServiceFactory = {\n instance: {\n supportsPrinting: false,\n createPrintService() {\n throw new Error(\"Not implemented: createPrintService\");\n },\n },\n};\n\nexport {\n DefaultExternalServices,\n PDFPrintServiceFactory,\n PDFViewerApplication,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst DEFAULT_SCALE_VALUE = \"auto\";\nconst DEFAULT_SCALE = 1.0;\nconst DEFAULT_SCALE_DELTA = 1.1;\nconst MIN_SCALE = 0.1;\nconst MAX_SCALE = 10.0;\nconst UNKNOWN_SCALE = 0;\nconst MAX_AUTO_SCALE = 1.25;\nconst SCROLLBAR_PADDING = 40;\nconst VERTICAL_PADDING = 5;\n\nconst LOADINGBAR_END_OFFSET_VAR = \"--loadingBar-end-offset\";\n\nconst RenderingStates = {\n INITIAL: 0,\n RUNNING: 1,\n PAUSED: 2,\n FINISHED: 3,\n};\n\nconst PresentationModeState = {\n UNKNOWN: 0,\n NORMAL: 1,\n CHANGING: 2,\n FULLSCREEN: 3,\n};\n\nconst SidebarView = {\n UNKNOWN: -1,\n NONE: 0,\n THUMBS: 1, // Default value.\n OUTLINE: 2,\n ATTACHMENTS: 3,\n LAYERS: 4,\n};\n\nconst RendererType = {\n CANVAS: \"canvas\",\n SVG: \"svg\",\n};\n\nconst TextLayerMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_ENHANCE: 2,\n};\n\nconst ScrollMode = {\n UNKNOWN: -1,\n VERTICAL: 0, // Default value.\n HORIZONTAL: 1,\n WRAPPED: 2,\n PAGE: 3,\n};\n\nconst SpreadMode = {\n UNKNOWN: -1,\n NONE: 0, // Default value.\n ODD: 1,\n EVEN: 2,\n};\n\n// Used by `PDFViewerApplication`, and by the API unit-tests.\nconst AutoPrintRegExp = /\\bprint\\s*\\(/;\n\n/**\n * Returns scale factor for the canvas. It makes sense for the HiDPI displays.\n * @returns {Object} The object with horizontal (sx) and vertical (sy)\n * scales. The scaled property is set to false if scaling is\n * not required, true otherwise.\n */\nfunction getOutputScale(ctx) {\n const devicePixelRatio = window.devicePixelRatio || 1;\n const backingStoreRatio =\n ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.backingStorePixelRatio ||\n 1;\n const pixelRatio = devicePixelRatio / backingStoreRatio;\n return {\n sx: pixelRatio,\n sy: pixelRatio,\n scaled: pixelRatio !== 1,\n };\n}\n\n/**\n * Scrolls specified element into view of its parent.\n * @param {Object} element - The element to be visible.\n * @param {Object} spot - An object with optional top and left properties,\n * specifying the offset from the top left edge.\n * @param {boolean} [scrollMatches] - When scrolling search results into view,\n * ignore elements that either: Contains marked content identifiers,\n * or have the CSS-rule `overflow: hidden;` set. The default value is `false`.\n */\nfunction scrollIntoView(element, spot, scrollMatches = false) {\n // Assuming offsetParent is available (it's not available when viewer is in\n // hidden iframe or object). We have to scroll: if the offsetParent is not set\n // producing the error. See also animationStarted.\n let parent = element.offsetParent;\n if (!parent) {\n console.error(\"offsetParent is not set -- cannot scroll\");\n return;\n }\n let offsetY = element.offsetTop + element.clientTop;\n let offsetX = element.offsetLeft + element.clientLeft;\n while (\n (parent.clientHeight === parent.scrollHeight &&\n parent.clientWidth === parent.scrollWidth) ||\n (scrollMatches &&\n (parent.classList.contains(\"markedContent\") ||\n getComputedStyle(parent).overflow === \"hidden\"))\n ) {\n offsetY += parent.offsetTop;\n offsetX += parent.offsetLeft;\n\n parent = parent.offsetParent;\n if (!parent) {\n return; // no need to scroll\n }\n }\n if (spot) {\n if (spot.top !== undefined) {\n offsetY += spot.top;\n }\n if (spot.left !== undefined) {\n offsetX += spot.left;\n parent.scrollLeft = offsetX;\n }\n }\n parent.scrollTop = offsetY;\n}\n\n/**\n * Helper function to start monitoring the scroll event and converting them into\n * PDF.js friendly one: with scroll debounce and scroll direction.\n */\nfunction watchScroll(viewAreaElement, callback) {\n const debounceScroll = function (evt) {\n if (rAF) {\n return;\n }\n // schedule an invocation of scroll for next animation frame.\n rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {\n rAF = null;\n\n const currentX = viewAreaElement.scrollLeft;\n const lastX = state.lastX;\n if (currentX !== lastX) {\n state.right = currentX > lastX;\n }\n state.lastX = currentX;\n const currentY = viewAreaElement.scrollTop;\n const lastY = state.lastY;\n if (currentY !== lastY) {\n state.down = currentY > lastY;\n }\n state.lastY = currentY;\n callback(state);\n });\n };\n\n const state = {\n right: true,\n down: true,\n lastX: viewAreaElement.scrollLeft,\n lastY: viewAreaElement.scrollTop,\n _eventHandler: debounceScroll,\n };\n\n let rAF = null;\n viewAreaElement.addEventListener(\"scroll\", debounceScroll, true);\n return state;\n}\n\n/**\n * Helper function to parse query string (e.g. ?param1=value&param2=...).\n * @param {string}\n * @returns {Map}\n */\nfunction parseQueryString(query) {\n const params = new Map();\n for (const [key, value] of new URLSearchParams(query)) {\n params.set(key.toLowerCase(), value);\n }\n return params;\n}\n\n/**\n * Use binary search to find the index of the first item in a given array which\n * passes a given condition. The items are expected to be sorted in the sense\n * that if the condition is true for one item in the array, then it is also true\n * for all following items.\n *\n * @returns {number} Index of the first array element to pass the test,\n * or |items.length| if no such element exists.\n */\nfunction binarySearchFirstItem(items, condition) {\n let minIndex = 0;\n let maxIndex = items.length - 1;\n\n if (maxIndex < 0 || !condition(items[maxIndex])) {\n return items.length;\n }\n if (condition(items[minIndex])) {\n return minIndex;\n }\n\n while (minIndex < maxIndex) {\n const currentIndex = (minIndex + maxIndex) >> 1;\n const currentItem = items[currentIndex];\n if (condition(currentItem)) {\n maxIndex = currentIndex;\n } else {\n minIndex = currentIndex + 1;\n }\n }\n return minIndex; /* === maxIndex */\n}\n\n/**\n * Approximates float number as a fraction using Farey sequence (max order\n * of 8).\n * @param {number} x - Positive float number.\n * @returns {Array} Estimated fraction: the first array item is a numerator,\n * the second one is a denominator.\n */\nfunction approximateFraction(x) {\n // Fast paths for int numbers or their inversions.\n if (Math.floor(x) === x) {\n return [x, 1];\n }\n const xinv = 1 / x;\n const limit = 8;\n if (xinv > limit) {\n return [1, limit];\n } else if (Math.floor(xinv) === xinv) {\n return [1, xinv];\n }\n\n const x_ = x > 1 ? xinv : x;\n // a/b and c/d are neighbours in Farey sequence.\n let a = 0,\n b = 1,\n c = 1,\n d = 1;\n // Limiting search to order 8.\n while (true) {\n // Generating next term in sequence (order of q).\n const p = a + c,\n q = b + d;\n if (q > limit) {\n break;\n }\n if (x_ <= p / q) {\n c = p;\n d = q;\n } else {\n a = p;\n b = q;\n }\n }\n let result;\n // Select closest of the neighbours to x.\n if (x_ - a / b < c / d - x_) {\n result = x_ === x ? [a, b] : [b, a];\n } else {\n result = x_ === x ? [c, d] : [d, c];\n }\n return result;\n}\n\nfunction roundToDivide(x, div) {\n const r = x % div;\n return r === 0 ? x : Math.round(x - r + div);\n}\n\n/**\n * @typedef {Object} GetPageSizeInchesParameters\n * @property {number[]} view\n * @property {number} userUnit\n * @property {number} rotate\n */\n\n/**\n * @typedef {Object} PageSize\n * @property {number} width - In inches.\n * @property {number} height - In inches.\n */\n\n/**\n * Gets the size of the specified page, converted from PDF units to inches.\n * @param {GetPageSizeInchesParameters} params\n * @returns {PageSize}\n */\nfunction getPageSizeInches({ view, userUnit, rotate }) {\n const [x1, y1, x2, y2] = view;\n // We need to take the page rotation into account as well.\n const changeOrientation = rotate % 180 !== 0;\n\n const width = ((x2 - x1) / 72) * userUnit;\n const height = ((y2 - y1) / 72) * userUnit;\n\n return {\n width: changeOrientation ? height : width,\n height: changeOrientation ? width : height,\n };\n}\n\n/**\n * Helper function for getVisibleElements.\n *\n * @param {number} index - initial guess at the first visible element\n * @param {Array} views - array of pages, into which `index` is an index\n * @param {number} top - the top of the scroll pane\n * @returns {number} less than or equal to `index` that is definitely at or\n * before the first visible element in `views`, but not by too much. (Usually,\n * this will be the first element in the first partially visible row in\n * `views`, although sometimes it goes back one row further.)\n */\nfunction backtrackBeforeAllVisibleElements(index, views, top) {\n // binarySearchFirstItem's assumption is that the input is ordered, with only\n // one index where the conditions flips from false to true: [false ...,\n // true...]. With vertical scrolling and spreads, it is possible to have\n // [false ..., true, false, true ...]. With wrapped scrolling we can have a\n // similar sequence, with many more mixed true and false in the middle.\n //\n // So there is no guarantee that the binary search yields the index of the\n // first visible element. It could have been any of the other visible elements\n // that were preceded by a hidden element.\n\n // Of course, if either this element or the previous (hidden) element is also\n // the first element, there's nothing to worry about.\n if (index < 2) {\n return index;\n }\n\n // That aside, the possible cases are represented below.\n //\n // **** = fully hidden\n // A*B* = mix of partially visible and/or hidden pages\n // CDEF = fully visible\n //\n // (1) Binary search could have returned A, in which case we can stop.\n // (2) Binary search could also have returned B, in which case we need to\n // check the whole row.\n // (3) Binary search could also have returned C, in which case we need to\n // check the whole previous row.\n //\n // There's one other possibility:\n //\n // **** = fully hidden\n // ABCD = mix of fully and/or partially visible pages\n //\n // (4) Binary search could only have returned A.\n\n // Initially assume that we need to find the beginning of the current row\n // (case 1, 2, or 4), which means finding a page that is above the current\n // page's top. If the found page is partially visible, we're definitely not in\n // case 3, and this assumption is correct.\n let elt = views[index].div;\n let pageTop = elt.offsetTop + elt.clientTop;\n\n if (pageTop >= top) {\n // The found page is fully visible, so we're actually either in case 3 or 4,\n // and unfortunately we can't tell the difference between them without\n // scanning the entire previous row, so we just conservatively assume that\n // we do need to backtrack to that row. In both cases, the previous page is\n // in the previous row, so use its top instead.\n elt = views[index - 1].div;\n pageTop = elt.offsetTop + elt.clientTop;\n }\n\n // Now we backtrack to the first page that still has its bottom below\n // `pageTop`, which is the top of a page in the first visible row (unless\n // we're in case 4, in which case it's the row before that).\n // `index` is found by binary search, so the page at `index - 1` is\n // invisible and we can start looking for potentially visible pages from\n // `index - 2`. (However, if this loop terminates on its first iteration,\n // which is the case when pages are stacked vertically, `index` should remain\n // unchanged, so we use a distinct loop variable.)\n for (let i = index - 2; i >= 0; --i) {\n elt = views[i].div;\n if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) {\n // We have reached the previous row, so stop now.\n // This loop is expected to terminate relatively quickly because the\n // number of pages per row is expected to be small.\n break;\n }\n index = i;\n }\n return index;\n}\n\n/**\n * @typedef {Object} GetVisibleElementsParameters\n * @property {HTMLElement} scrollEl - A container that can possibly scroll.\n * @property {Array} views - Objects with a `div` property that contains an\n * HTMLElement, which should all be descendants of `scrollEl` satisfying the\n * relevant layout assumptions.\n * @property {boolean} sortByVisibility - If `true`, the returned elements are\n * sorted in descending order of the percent of their padding box that is\n * visible. The default value is `false`.\n * @property {boolean} horizontal - If `true`, the elements are assumed to be\n * laid out horizontally instead of vertically. The default value is `false`.\n * @property {boolean} rtl - If `true`, the `scrollEl` container is assumed to\n * be in right-to-left mode. The default value is `false`.\n */\n\n/**\n * Generic helper to find out what elements are visible within a scroll pane.\n *\n * Well, pretty generic. There are some assumptions placed on the elements\n * referenced by `views`:\n * - If `horizontal`, no left of any earlier element is to the right of the\n * left of any later element.\n * - Otherwise, `views` can be split into contiguous rows where, within a row,\n * no top of any element is below the bottom of any other element, and\n * between rows, no bottom of any element in an earlier row is below the\n * top of any element in a later row.\n *\n * (Here, top, left, etc. all refer to the padding edge of the element in\n * question. For pages, that ends up being equivalent to the bounding box of the\n * rendering canvas. Earlier and later refer to index in `views`, not page\n * layout.)\n *\n * @param {GetVisibleElementsParameters}\n * @returns {Object} `{ first, last, views: [{ id, x, y, view, percent }] }`\n */\nfunction getVisibleElements({\n scrollEl,\n views,\n sortByVisibility = false,\n horizontal = false,\n rtl = false,\n}) {\n const top = scrollEl.scrollTop,\n bottom = top + scrollEl.clientHeight;\n const left = scrollEl.scrollLeft,\n right = left + scrollEl.clientWidth;\n\n // Throughout this \"generic\" function, comments will assume we're working with\n // PDF document pages, which is the most important and complex case. In this\n // case, the visible elements we're actually interested is the page canvas,\n // which is contained in a wrapper which adds no padding/border/margin, which\n // is itself contained in `view.div` which adds no padding (but does add a\n // border). So, as specified in this function's doc comment, this function\n // does all of its work on the padding edge of the provided views, starting at\n // offsetLeft/Top (which includes margin) and adding clientLeft/Top (which is\n // the border). Adding clientWidth/Height gets us the bottom-right corner of\n // the padding edge.\n function isElementBottomAfterViewTop(view) {\n const element = view.div;\n const elementBottom =\n element.offsetTop + element.clientTop + element.clientHeight;\n return elementBottom > top;\n }\n function isElementNextAfterViewHorizontally(view) {\n const element = view.div;\n const elementLeft = element.offsetLeft + element.clientLeft;\n const elementRight = elementLeft + element.clientWidth;\n return rtl ? elementLeft < right : elementRight > left;\n }\n\n const visible = [],\n ids = new Set(),\n numViews = views.length;\n let firstVisibleElementInd = binarySearchFirstItem(\n views,\n horizontal\n ? isElementNextAfterViewHorizontally\n : isElementBottomAfterViewTop\n );\n\n // Please note the return value of the `binarySearchFirstItem` function when\n // no valid element is found (hence the `firstVisibleElementInd` check below).\n if (\n firstVisibleElementInd > 0 &&\n firstVisibleElementInd < numViews &&\n !horizontal\n ) {\n // In wrapped scrolling (or vertical scrolling with spreads), with some page\n // sizes, isElementBottomAfterViewTop doesn't satisfy the binary search\n // condition: there can be pages with bottoms above the view top between\n // pages with bottoms below. This function detects and corrects that error;\n // see it for more comments.\n firstVisibleElementInd = backtrackBeforeAllVisibleElements(\n firstVisibleElementInd,\n views,\n top\n );\n }\n\n // lastEdge acts as a cutoff for us to stop looping, because we know all\n // subsequent pages will be hidden.\n //\n // When using wrapped scrolling or vertical scrolling with spreads, we can't\n // simply stop the first time we reach a page below the bottom of the view;\n // the tops of subsequent pages on the same row could still be visible. In\n // horizontal scrolling, we don't have that issue, so we can stop as soon as\n // we pass `right`, without needing the code below that handles the -1 case.\n let lastEdge = horizontal ? right : -1;\n\n for (let i = firstVisibleElementInd; i < numViews; i++) {\n const view = views[i],\n element = view.div;\n const currentWidth = element.offsetLeft + element.clientLeft;\n const currentHeight = element.offsetTop + element.clientTop;\n const viewWidth = element.clientWidth,\n viewHeight = element.clientHeight;\n const viewRight = currentWidth + viewWidth;\n const viewBottom = currentHeight + viewHeight;\n\n if (lastEdge === -1) {\n // As commented above, this is only needed in non-horizontal cases.\n // Setting lastEdge to the bottom of the first page that is partially\n // visible ensures that the next page fully below lastEdge is on the\n // next row, which has to be fully hidden along with all subsequent rows.\n if (viewBottom >= bottom) {\n lastEdge = viewBottom;\n }\n } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {\n break;\n }\n\n if (\n viewBottom <= top ||\n currentHeight >= bottom ||\n viewRight <= left ||\n currentWidth >= right\n ) {\n continue;\n }\n\n const hiddenHeight =\n Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);\n const hiddenWidth =\n Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);\n\n const fractionHeight = (viewHeight - hiddenHeight) / viewHeight,\n fractionWidth = (viewWidth - hiddenWidth) / viewWidth;\n const percent = (fractionHeight * fractionWidth * 100) | 0;\n\n visible.push({\n id: view.id,\n x: currentWidth,\n y: currentHeight,\n view,\n percent,\n widthPercent: (fractionWidth * 100) | 0,\n });\n ids.add(view.id);\n }\n\n const first = visible[0],\n last = visible[visible.length - 1];\n\n if (sortByVisibility) {\n visible.sort(function (a, b) {\n const pc = a.percent - b.percent;\n if (Math.abs(pc) > 0.001) {\n return -pc;\n }\n return a.id - b.id; // ensure stability\n });\n }\n return { first, last, views: visible, ids };\n}\n\n/**\n * Event handler to suppress context menu.\n */\nfunction noContextMenuHandler(evt) {\n evt.preventDefault();\n}\n\nfunction normalizeWheelEventDirection(evt) {\n let delta = Math.hypot(evt.deltaX, evt.deltaY);\n const angle = Math.atan2(evt.deltaY, evt.deltaX);\n if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {\n // All that is left-up oriented has to change the sign.\n delta = -delta;\n }\n return delta;\n}\n\nfunction normalizeWheelEventDelta(evt) {\n let delta = normalizeWheelEventDirection(evt);\n\n const MOUSE_DOM_DELTA_PIXEL_MODE = 0;\n const MOUSE_DOM_DELTA_LINE_MODE = 1;\n const MOUSE_PIXELS_PER_LINE = 30;\n const MOUSE_LINES_PER_PAGE = 30;\n\n // Converts delta to per-page units\n if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) {\n delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;\n } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) {\n delta /= MOUSE_LINES_PER_PAGE;\n }\n return delta;\n}\n\nfunction isValidRotation(angle) {\n return Number.isInteger(angle) && angle % 90 === 0;\n}\n\nfunction isValidScrollMode(mode) {\n return (\n Number.isInteger(mode) &&\n Object.values(ScrollMode).includes(mode) &&\n mode !== ScrollMode.UNKNOWN\n );\n}\n\nfunction isValidSpreadMode(mode) {\n return (\n Number.isInteger(mode) &&\n Object.values(SpreadMode).includes(mode) &&\n mode !== SpreadMode.UNKNOWN\n );\n}\n\nfunction isPortraitOrientation(size) {\n return size.width <= size.height;\n}\n\n/**\n * Promise that is resolved when DOM window becomes visible.\n */\nconst animationStarted = new Promise(function (resolve) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"LIB\") &&\n typeof window === \"undefined\"\n ) {\n // Prevent \"ReferenceError: window is not defined\" errors when running the\n // unit-tests in Node.js environments.\n setTimeout(resolve, 20);\n return;\n }\n window.requestAnimationFrame(resolve);\n});\n\nfunction clamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\n\nclass ProgressBar {\n constructor(id, { height, width, units } = {}) {\n this.visible = true;\n\n // Fetch the sub-elements for later.\n this.div = document.querySelector(id + \" .progress\");\n // Get the loading bar element, so it can be resized to fit the viewer.\n this.bar = this.div.parentNode;\n\n // Get options, with sensible defaults.\n this.height = height || 100;\n this.width = width || 100;\n this.units = units || \"%\";\n\n // Initialize heights.\n this.div.style.height = this.height + this.units;\n this.percent = 0;\n }\n\n _updateBar() {\n if (this._indeterminate) {\n this.div.classList.add(\"indeterminate\");\n this.div.style.width = this.width + this.units;\n return;\n }\n\n this.div.classList.remove(\"indeterminate\");\n const progressSize = (this.width * this._percent) / 100;\n this.div.style.width = progressSize + this.units;\n }\n\n get percent() {\n return this._percent;\n }\n\n set percent(val) {\n this._indeterminate = isNaN(val);\n this._percent = clamp(val, 0, 100);\n this._updateBar();\n }\n\n setWidth(viewer) {\n if (!viewer) {\n return;\n }\n const container = viewer.parentNode;\n const scrollbarWidth = container.offsetWidth - viewer.offsetWidth;\n if (scrollbarWidth > 0) {\n const doc = document.documentElement;\n doc.style.setProperty(LOADINGBAR_END_OFFSET_VAR, `${scrollbarWidth}px`);\n }\n }\n\n hide() {\n if (!this.visible) {\n return;\n }\n this.visible = false;\n this.bar.classList.add(\"hidden\");\n }\n\n show() {\n if (this.visible) {\n return;\n }\n this.visible = true;\n this.bar.classList.remove(\"hidden\");\n }\n}\n\n/**\n * Get the active or focused element in current DOM.\n *\n * Recursively search for the truly active or focused element in case there are\n * shadow DOMs.\n *\n * @returns {Element} the truly active or focused element.\n */\nfunction getActiveOrFocusedElement() {\n let curRoot = document;\n let curActiveOrFocused =\n curRoot.activeElement || curRoot.querySelector(\":focus\");\n\n while (curActiveOrFocused?.shadowRoot) {\n curRoot = curActiveOrFocused.shadowRoot;\n curActiveOrFocused =\n curRoot.activeElement || curRoot.querySelector(\":focus\");\n }\n\n return curActiveOrFocused;\n}\n\n/**\n * Converts API PageLayout values to the format used by `BaseViewer`.\n * NOTE: This is supported to the extent that the viewer implements the\n * necessary Scroll/Spread modes (since SinglePage, TwoPageLeft,\n * and TwoPageRight all suggests using non-continuous scrolling).\n * @param {string} mode - The API PageLayout value.\n * @returns {Object}\n */\nfunction apiPageLayoutToViewerModes(layout) {\n let scrollMode = ScrollMode.VERTICAL,\n spreadMode = SpreadMode.NONE;\n\n switch (layout) {\n case \"SinglePage\":\n scrollMode = ScrollMode.PAGE;\n break;\n case \"OneColumn\":\n break;\n case \"TwoPageLeft\":\n scrollMode = ScrollMode.PAGE;\n /* falls through */\n case \"TwoColumnLeft\":\n spreadMode = SpreadMode.ODD;\n break;\n case \"TwoPageRight\":\n scrollMode = ScrollMode.PAGE;\n /* falls through */\n case \"TwoColumnRight\":\n spreadMode = SpreadMode.EVEN;\n break;\n }\n return { scrollMode, spreadMode };\n}\n\n/**\n * Converts API PageMode values to the format used by `PDFSidebar`.\n * NOTE: There's also a \"FullScreen\" parameter which is not possible to support,\n * since the Fullscreen API used in browsers requires that entering\n * fullscreen mode only occurs as a result of a user-initiated event.\n * @param {string} mode - The API PageMode value.\n * @returns {number} A value from {SidebarView}.\n */\nfunction apiPageModeToSidebarView(mode) {\n switch (mode) {\n case \"UseNone\":\n return SidebarView.NONE;\n case \"UseThumbs\":\n return SidebarView.THUMBS;\n case \"UseOutlines\":\n return SidebarView.OUTLINE;\n case \"UseAttachments\":\n return SidebarView.ATTACHMENTS;\n case \"UseOC\":\n return SidebarView.LAYERS;\n }\n return SidebarView.NONE; // Default value.\n}\n\nexport {\n animationStarted,\n apiPageLayoutToViewerModes,\n apiPageModeToSidebarView,\n approximateFraction,\n AutoPrintRegExp,\n backtrackBeforeAllVisibleElements, // only exported for testing\n binarySearchFirstItem,\n DEFAULT_SCALE,\n DEFAULT_SCALE_DELTA,\n DEFAULT_SCALE_VALUE,\n getActiveOrFocusedElement,\n getOutputScale,\n getPageSizeInches,\n getVisibleElements,\n isPortraitOrientation,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n MAX_AUTO_SCALE,\n MAX_SCALE,\n MIN_SCALE,\n noContextMenuHandler,\n normalizeWheelEventDelta,\n normalizeWheelEventDirection,\n parseQueryString,\n PresentationModeState,\n ProgressBar,\n RendererType,\n RenderingStates,\n roundToDivide,\n SCROLLBAR_PADDING,\n scrollIntoView,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n UNKNOWN_SCALE,\n VERTICAL_PADDING,\n watchScroll,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst WaitOnType = {\n EVENT: \"event\",\n TIMEOUT: \"timeout\",\n};\n\n/**\n * @typedef {Object} WaitOnEventOrTimeoutParameters\n * @property {Object} target - The event target, can for example be:\n * `window`, `document`, a DOM element, or an {EventBus} instance.\n * @property {string} name - The name of the event.\n * @property {number} delay - The delay, in milliseconds, after which the\n * timeout occurs (if the event wasn't already dispatched).\n */\n\n/**\n * Allows waiting for an event or a timeout, whichever occurs first.\n * Can be used to ensure that an action always occurs, even when an event\n * arrives late or not at all.\n *\n * @param {WaitOnEventOrTimeoutParameters}\n * @returns {Promise} A promise that is resolved with a {WaitOnType} value.\n */\nfunction waitOnEventOrTimeout({ target, name, delay = 0 }) {\n return new Promise(function (resolve, reject) {\n if (\n typeof target !== \"object\" ||\n !(name && typeof name === \"string\") ||\n !(Number.isInteger(delay) && delay >= 0)\n ) {\n throw new Error(\"waitOnEventOrTimeout - invalid parameters.\");\n }\n\n function handler(type) {\n if (target instanceof EventBus) {\n target._off(name, eventHandler);\n } else {\n target.removeEventListener(name, eventHandler);\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n resolve(type);\n }\n\n const eventHandler = handler.bind(null, WaitOnType.EVENT);\n if (target instanceof EventBus) {\n target._on(name, eventHandler);\n } else {\n target.addEventListener(name, eventHandler);\n }\n\n const timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT);\n const timeout = setTimeout(timeoutHandler, delay);\n });\n}\n\n/**\n * Simple event bus for an application. Listeners are attached using the `on`\n * and `off` methods. To raise an event, the `dispatch` method shall be used.\n */\nclass EventBus {\n constructor() {\n this._listeners = Object.create(null);\n }\n\n /**\n * @param {string} eventName\n * @param {function} listener\n * @param {Object} [options]\n */\n on(eventName, listener, options = null) {\n this._on(eventName, listener, {\n external: true,\n once: options?.once,\n });\n }\n\n /**\n * @param {string} eventName\n * @param {function} listener\n * @param {Object} [options]\n */\n off(eventName, listener, options = null) {\n this._off(eventName, listener, {\n external: true,\n once: options?.once,\n });\n }\n\n /**\n * @param {string} eventName\n * @param {Object} data\n */\n dispatch(eventName, data) {\n const eventListeners = this._listeners[eventName];\n if (!eventListeners || eventListeners.length === 0) {\n return;\n }\n let externalListeners;\n // Making copy of the listeners array in case if it will be modified\n // during dispatch.\n for (const { listener, external, once } of eventListeners.slice(0)) {\n if (once) {\n this._off(eventName, listener);\n }\n if (external) {\n (externalListeners ||= []).push(listener);\n continue;\n }\n listener(data);\n }\n // Dispatch any \"external\" listeners *after* the internal ones, to give the\n // viewer components time to handle events and update their state first.\n if (externalListeners) {\n for (const listener of externalListeners) {\n listener(data);\n }\n externalListeners = null;\n }\n }\n\n /**\n * @ignore\n */\n _on(eventName, listener, options = null) {\n const eventListeners = (this._listeners[eventName] ||= []);\n eventListeners.push({\n listener,\n external: options?.external === true,\n once: options?.once === true,\n });\n }\n\n /**\n * @ignore\n */\n _off(eventName, listener, options = null) {\n const eventListeners = this._listeners[eventName];\n if (!eventListeners) {\n return;\n }\n for (let i = 0, ii = eventListeners.length; i < ii; i++) {\n if (eventListeners[i].listener === listener) {\n eventListeners.splice(i, 1);\n return;\n }\n }\n }\n}\n\n/**\n * NOTE: Only used to support various PDF viewer tests in `mozilla-central`.\n */\nclass AutomationEventBus extends EventBus {\n dispatch(eventName, data) {\n if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: AutomationEventBus.dispatch\");\n }\n super.dispatch(eventName, data);\n\n const details = Object.create(null);\n if (data) {\n for (const key in data) {\n const value = data[key];\n if (key === \"source\") {\n if (value === window || value === document) {\n return; // No need to re-dispatch (already) global events.\n }\n continue; // Ignore the `source` property.\n }\n details[key] = value;\n }\n }\n const event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventName, true, true, details);\n document.dispatchEvent(event);\n }\n}\n\nexport { AutomationEventBus, EventBus, waitOnEventOrTimeout, WaitOnType };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals module, __non_webpack_require__ */\n\n\"use strict\";\n\nlet pdfjsLib;\nif (typeof window !== \"undefined\" && window[\"pdfjs-dist/build/pdf\"]) {\n pdfjsLib = window[\"pdfjs-dist/build/pdf\"];\n} else {\n pdfjsLib = __non_webpack_require__(\"../build/pdf.js\");\n}\nmodule.exports = pdfjsLib;\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { GrabToPan } from \"./grab_to_pan.js\";\nimport { PresentationModeState } from \"./ui_utils.js\";\n\nconst CursorTool = {\n SELECT: 0, // The default value.\n HAND: 1,\n ZOOM: 2,\n};\n\n/**\n * @typedef {Object} PDFCursorToolsOptions\n * @property {HTMLDivElement} container - The document container.\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} [cursorToolOnLoad] - The cursor tool that will be enabled\n * on load; the constants from {CursorTool} should be used. The default value\n * is `CursorTool.SELECT`.\n */\n\nclass PDFCursorTools {\n /**\n * @param {PDFCursorToolsOptions} options\n */\n constructor({ container, eventBus, cursorToolOnLoad = CursorTool.SELECT }) {\n this.container = container;\n this.eventBus = eventBus;\n\n this.active = CursorTool.SELECT;\n this.activeBeforePresentationMode = null;\n\n this.handTool = new GrabToPan({\n element: this.container,\n });\n\n this._addEventListeners();\n\n // Defer the initial `switchTool` call, to give other viewer components\n // time to initialize *and* register 'cursortoolchanged' event listeners.\n Promise.resolve().then(() => {\n this.switchTool(cursorToolOnLoad);\n });\n }\n\n /**\n * @type {number} One of the values in {CursorTool}.\n */\n get activeTool() {\n return this.active;\n }\n\n /**\n * NOTE: This method is ignored while Presentation Mode is active.\n * @param {number} tool - The cursor mode that should be switched to,\n * must be one of the values in {CursorTool}.\n */\n switchTool(tool) {\n if (this.activeBeforePresentationMode !== null) {\n return; // Cursor tools cannot be used in Presentation Mode.\n }\n if (tool === this.active) {\n return; // The requested tool is already active.\n }\n\n const disableActiveTool = () => {\n switch (this.active) {\n case CursorTool.SELECT:\n break;\n case CursorTool.HAND:\n this.handTool.deactivate();\n break;\n case CursorTool.ZOOM:\n /* falls through */\n }\n };\n\n // Enable the new cursor tool.\n switch (tool) {\n case CursorTool.SELECT:\n disableActiveTool();\n break;\n case CursorTool.HAND:\n disableActiveTool();\n this.handTool.activate();\n break;\n case CursorTool.ZOOM:\n /* falls through */\n default:\n console.error(`switchTool: \"${tool}\" is an unsupported value.`);\n return;\n }\n // Update the active tool *after* it has been validated above,\n // in order to prevent setting it to an invalid state.\n this.active = tool;\n\n this._dispatchEvent();\n }\n\n /**\n * @private\n */\n _dispatchEvent() {\n this.eventBus.dispatch(\"cursortoolchanged\", {\n source: this,\n tool: this.active,\n });\n }\n\n /**\n * @private\n */\n _addEventListeners() {\n this.eventBus._on(\"switchcursortool\", evt => {\n this.switchTool(evt.tool);\n });\n\n this.eventBus._on(\"presentationmodechanged\", evt => {\n switch (evt.state) {\n case PresentationModeState.FULLSCREEN: {\n const previouslyActive = this.active;\n\n this.switchTool(CursorTool.SELECT);\n this.activeBeforePresentationMode = previouslyActive;\n break;\n }\n case PresentationModeState.NORMAL: {\n const previouslyActive = this.activeBeforePresentationMode;\n\n this.activeBeforePresentationMode = null;\n this.switchTool(previouslyActive);\n break;\n }\n }\n });\n }\n}\n\nexport { CursorTool, PDFCursorTools };\n","/* Copyright 2013 Rob Wu <rob@robwu.nl>\n * https://github.com/Rob--W/grab-to-pan.js\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Class name of element which can be grabbed.\nconst CSS_CLASS_GRAB = \"grab-to-pan-grab\";\n\nclass GrabToPan {\n /**\n * Construct a GrabToPan instance for a given HTML element.\n * @param {Element} options.element\n * @param {function} [options.ignoreTarget] - See `ignoreTarget(node)`.\n * @param {function(boolean)} [options.onActiveChanged] - Called when\n * grab-to-pan is (de)activated. The first argument is a boolean that\n * shows whether grab-to-pan is activated.\n */\n constructor(options) {\n this.element = options.element;\n this.document = options.element.ownerDocument;\n if (typeof options.ignoreTarget === \"function\") {\n this.ignoreTarget = options.ignoreTarget;\n }\n this.onActiveChanged = options.onActiveChanged;\n\n // Bind the contexts to ensure that `this` always points to\n // the GrabToPan instance.\n this.activate = this.activate.bind(this);\n this.deactivate = this.deactivate.bind(this);\n this.toggle = this.toggle.bind(this);\n this._onMouseDown = this.#onMouseDown.bind(this);\n this._onMouseMove = this.#onMouseMove.bind(this);\n this._endPan = this.#endPan.bind(this);\n\n // This overlay will be inserted in the document when the mouse moves during\n // a grab operation, to ensure that the cursor has the desired appearance.\n const overlay = (this.overlay = document.createElement(\"div\"));\n overlay.className = \"grab-to-pan-grabbing\";\n }\n\n /**\n * Bind a mousedown event to the element to enable grab-detection.\n */\n activate() {\n if (!this.active) {\n this.active = true;\n this.element.addEventListener(\"mousedown\", this._onMouseDown, true);\n this.element.classList.add(CSS_CLASS_GRAB);\n\n this.onActiveChanged?.(true);\n }\n }\n\n /**\n * Removes all events. Any pending pan session is immediately stopped.\n */\n deactivate() {\n if (this.active) {\n this.active = false;\n this.element.removeEventListener(\"mousedown\", this._onMouseDown, true);\n this._endPan();\n this.element.classList.remove(CSS_CLASS_GRAB);\n\n this.onActiveChanged?.(false);\n }\n }\n\n toggle() {\n if (this.active) {\n this.deactivate();\n } else {\n this.activate();\n }\n }\n\n /**\n * Whether to not pan if the target element is clicked.\n * Override this method to change the default behaviour.\n *\n * @param {Element} node - The target of the event.\n * @returns {boolean} Whether to not react to the click event.\n */\n ignoreTarget(node) {\n // Check whether the clicked element is, a child of, an input element/link.\n return node.matches(\n \"a[href], a[href] *, input, textarea, button, button *, select, option\"\n );\n }\n\n #onMouseDown(event) {\n if (event.button !== 0 || this.ignoreTarget(event.target)) {\n return;\n }\n if (event.originalTarget) {\n try {\n // eslint-disable-next-line no-unused-expressions\n event.originalTarget.tagName;\n } catch (e) {\n // Mozilla-specific: element is a scrollbar (XUL element)\n return;\n }\n }\n\n this.scrollLeftStart = this.element.scrollLeft;\n this.scrollTopStart = this.element.scrollTop;\n this.clientXStart = event.clientX;\n this.clientYStart = event.clientY;\n this.document.addEventListener(\"mousemove\", this._onMouseMove, true);\n this.document.addEventListener(\"mouseup\", this._endPan, true);\n // When a scroll event occurs before a mousemove, assume that the user\n // dragged a scrollbar (necessary for Opera Presto, Safari and IE)\n // (not needed for Chrome/Firefox)\n this.element.addEventListener(\"scroll\", this._endPan, true);\n event.preventDefault();\n event.stopPropagation();\n\n const focusedElement = document.activeElement;\n if (focusedElement && !focusedElement.contains(event.target)) {\n focusedElement.blur();\n }\n }\n\n #onMouseMove(event) {\n this.element.removeEventListener(\"scroll\", this._endPan, true);\n if (!(event.buttons & 1)) {\n // The left mouse button is released.\n this._endPan();\n return;\n }\n const xDiff = event.clientX - this.clientXStart;\n const yDiff = event.clientY - this.clientYStart;\n const scrollTop = this.scrollTopStart - yDiff;\n const scrollLeft = this.scrollLeftStart - xDiff;\n if (this.element.scrollTo) {\n this.element.scrollTo({\n top: scrollTop,\n left: scrollLeft,\n behavior: \"instant\",\n });\n } else {\n this.element.scrollTop = scrollTop;\n this.element.scrollLeft = scrollLeft;\n }\n if (!this.overlay.parentNode) {\n document.body.appendChild(this.overlay);\n }\n }\n\n #endPan() {\n this.element.removeEventListener(\"scroll\", this._endPan, true);\n this.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n this.document.removeEventListener(\"mouseup\", this._endPan, true);\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.overlay.remove();\n }\n}\n\nexport { GrabToPan };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass OverlayManager {\n constructor() {\n this._overlays = {};\n this._active = null;\n this._keyDownBound = this._keyDown.bind(this);\n }\n\n get active() {\n return this._active;\n }\n\n /**\n * @param {string} name - The name of the overlay that is registered.\n * @param {HTMLDivElement} element - The overlay's DOM element.\n * @param {function} [callerCloseMethod] - The method that, if present, calls\n * `OverlayManager.close` from the object registering the\n * overlay. Access to this method is necessary in order to\n * run cleanup code when e.g. the overlay is force closed.\n * The default is `null`.\n * @param {boolean} [canForceClose] - Indicates if opening the overlay closes\n * an active overlay. The default is `false`.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * registered.\n */\n async register(\n name,\n element,\n callerCloseMethod = null,\n canForceClose = false\n ) {\n let container;\n if (!name || !element || !(container = element.parentNode)) {\n throw new Error(\"Not enough parameters.\");\n } else if (this._overlays[name]) {\n throw new Error(\"The overlay is already registered.\");\n }\n this._overlays[name] = {\n element,\n container,\n callerCloseMethod,\n canForceClose,\n };\n }\n\n /**\n * @param {string} name - The name of the overlay that is unregistered.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * unregistered.\n */\n async unregister(name) {\n if (!this._overlays[name]) {\n throw new Error(\"The overlay does not exist.\");\n } else if (this._active === name) {\n throw new Error(\"The overlay cannot be removed while it is active.\");\n }\n delete this._overlays[name];\n }\n\n /**\n * @param {string} name - The name of the overlay that should be opened.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * opened.\n */\n async open(name) {\n if (!this._overlays[name]) {\n throw new Error(\"The overlay does not exist.\");\n } else if (this._active) {\n if (this._overlays[name].canForceClose) {\n this._closeThroughCaller();\n } else if (this._active === name) {\n throw new Error(\"The overlay is already active.\");\n } else {\n throw new Error(\"Another overlay is currently active.\");\n }\n }\n this._active = name;\n this._overlays[this._active].element.classList.remove(\"hidden\");\n this._overlays[this._active].container.classList.remove(\"hidden\");\n\n window.addEventListener(\"keydown\", this._keyDownBound);\n }\n\n /**\n * @param {string} name - The name of the overlay that should be closed.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * closed.\n */\n async close(name) {\n if (!this._overlays[name]) {\n throw new Error(\"The overlay does not exist.\");\n } else if (!this._active) {\n throw new Error(\"The overlay is currently not active.\");\n } else if (this._active !== name) {\n throw new Error(\"Another overlay is currently active.\");\n }\n this._overlays[this._active].container.classList.add(\"hidden\");\n this._overlays[this._active].element.classList.add(\"hidden\");\n this._active = null;\n\n window.removeEventListener(\"keydown\", this._keyDownBound);\n }\n\n /**\n * @private\n */\n _keyDown(evt) {\n if (this._active && evt.keyCode === /* Esc = */ 27) {\n this._closeThroughCaller();\n evt.preventDefault();\n }\n }\n\n /**\n * @private\n */\n _closeThroughCaller() {\n if (this._overlays[this._active].callerCloseMethod) {\n this._overlays[this._active].callerCloseMethod();\n }\n if (this._active) {\n this.close(this._active);\n }\n }\n}\n\nexport { OverlayManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PasswordResponses } from \"pdfjs-lib\";\n\n/**\n * @typedef {Object} PasswordPromptOptions\n * @property {string} overlayName - Name of the overlay for the overlay manager.\n * @property {HTMLDivElement} container - Div container for the overlay.\n * @property {HTMLParagraphElement} label - Label containing instructions for\n * entering the password.\n * @property {HTMLInputElement} input - Input field for entering the password.\n * @property {HTMLButtonElement} submitButton - Button for submitting the\n * password.\n * @property {HTMLButtonElement} cancelButton - Button for cancelling password\n * entry.\n */\n\nclass PasswordPrompt {\n /**\n * @param {PasswordPromptOptions} options\n * @param {OverlayManager} overlayManager - Manager for the viewer overlays.\n * @param {IL10n} l10n - Localization service.\n * @param {boolean} [isViewerEmbedded] - If the viewer is embedded, in e.g.\n * an <iframe> or an <object>. The default value is `false`.\n */\n constructor(options, overlayManager, l10n, isViewerEmbedded = false) {\n this.overlayName = options.overlayName;\n this.container = options.container;\n this.label = options.label;\n this.input = options.input;\n this.submitButton = options.submitButton;\n this.cancelButton = options.cancelButton;\n this.overlayManager = overlayManager;\n this.l10n = l10n;\n this._isViewerEmbedded = isViewerEmbedded;\n\n this.updateCallback = null;\n this.reason = null;\n\n // Attach the event listeners.\n this.submitButton.addEventListener(\"click\", this.verify.bind(this));\n this.cancelButton.addEventListener(\"click\", this.close.bind(this));\n this.input.addEventListener(\"keydown\", e => {\n if (e.keyCode === /* Enter = */ 13) {\n this.verify();\n }\n });\n\n this.overlayManager.register(\n this.overlayName,\n this.container,\n this.close.bind(this),\n true\n );\n }\n\n async open() {\n await this.overlayManager.open(this.overlayName);\n\n const passwordIncorrect =\n this.reason === PasswordResponses.INCORRECT_PASSWORD;\n\n if (!this._isViewerEmbedded || passwordIncorrect) {\n this.input.focus();\n }\n this.label.textContent = await this.l10n.get(\n `password_${passwordIncorrect ? \"invalid\" : \"label\"}`\n );\n }\n\n close() {\n this.overlayManager.close(this.overlayName).then(() => {\n this.input.value = \"\";\n });\n }\n\n verify() {\n const password = this.input.value;\n if (password?.length > 0) {\n this.close();\n this.updateCallback(password);\n }\n }\n\n setUpdateCallback(updateCallback, reason) {\n this.updateCallback = updateCallback;\n this.reason = reason;\n }\n}\n\nexport { PasswordPrompt };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createPromiseCapability, getFilenameFromUrl } from \"pdfjs-lib\";\nimport { BaseTreeViewer } from \"./base_tree_viewer.js\";\n\n/**\n * @typedef {Object} PDFAttachmentViewerOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {DownloadManager} downloadManager - The download manager.\n */\n\n/**\n * @typedef {Object} PDFAttachmentViewerRenderParameters\n * @property {Object|null} attachments - A lookup table of attachment objects.\n */\n\nclass PDFAttachmentViewer extends BaseTreeViewer {\n /**\n * @param {PDFAttachmentViewerOptions} options\n */\n constructor(options) {\n super(options);\n this.downloadManager = options.downloadManager;\n\n this.eventBus._on(\n \"fileattachmentannotation\",\n this._appendAttachment.bind(this)\n );\n }\n\n reset(keepRenderedCapability = false) {\n super.reset();\n this._attachments = null;\n\n if (!keepRenderedCapability) {\n // The only situation in which the `_renderedCapability` should *not* be\n // replaced is when appending FileAttachment annotations.\n this._renderedCapability = createPromiseCapability();\n }\n if (this._pendingDispatchEvent) {\n clearTimeout(this._pendingDispatchEvent);\n }\n this._pendingDispatchEvent = null;\n }\n\n /**\n * @private\n */\n _dispatchEvent(attachmentsCount) {\n this._renderedCapability.resolve();\n\n if (this._pendingDispatchEvent) {\n clearTimeout(this._pendingDispatchEvent);\n this._pendingDispatchEvent = null;\n }\n if (attachmentsCount === 0) {\n // Delay the event when no \"regular\" attachments exist, to allow time for\n // parsing of any FileAttachment annotations that may be present on the\n // *initially* rendered page; this reduces the likelihood of temporarily\n // disabling the attachmentsView when the `PDFSidebar` handles the event.\n this._pendingDispatchEvent = setTimeout(() => {\n this.eventBus.dispatch(\"attachmentsloaded\", {\n source: this,\n attachmentsCount: 0,\n });\n this._pendingDispatchEvent = null;\n });\n return;\n }\n\n this.eventBus.dispatch(\"attachmentsloaded\", {\n source: this,\n attachmentsCount,\n });\n }\n\n /**\n * @private\n */\n _bindLink(element, { content, filename }) {\n element.onclick = () => {\n this.downloadManager.openOrDownloadData(element, content, filename);\n return false;\n };\n }\n\n /**\n * @param {PDFAttachmentViewerRenderParameters} params\n */\n render({ attachments, keepRenderedCapability = false }) {\n if (this._attachments) {\n this.reset(keepRenderedCapability);\n }\n this._attachments = attachments || null;\n\n if (!attachments) {\n this._dispatchEvent(/* attachmentsCount = */ 0);\n return;\n }\n const names = Object.keys(attachments).sort(function (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase());\n });\n\n const fragment = document.createDocumentFragment();\n let attachmentsCount = 0;\n for (const name of names) {\n const item = attachments[name];\n const content = item.content,\n filename = getFilenameFromUrl(item.filename);\n\n const div = document.createElement(\"div\");\n div.className = \"treeItem\";\n\n const element = document.createElement(\"a\");\n this._bindLink(element, { content, filename });\n element.textContent = this._normalizeTextContent(filename);\n\n div.appendChild(element);\n\n fragment.appendChild(div);\n attachmentsCount++;\n }\n\n this._finishRendering(fragment, attachmentsCount);\n }\n\n /**\n * Used to append FileAttachment annotations to the sidebar.\n * @private\n */\n _appendAttachment({ id, filename, content }) {\n const renderedPromise = this._renderedCapability.promise;\n\n renderedPromise.then(() => {\n if (renderedPromise !== this._renderedCapability.promise) {\n return; // The FileAttachment annotation belongs to a previous document.\n }\n let attachments = this._attachments;\n\n if (!attachments) {\n attachments = Object.create(null);\n } else {\n for (const name in attachments) {\n if (id === name) {\n return; // Ignore the new attachment if it already exists.\n }\n }\n }\n attachments[id] = {\n filename,\n content,\n };\n this.render({\n attachments,\n keepRenderedCapability: true,\n });\n });\n }\n}\n\nexport { PDFAttachmentViewer };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { removeNullCharacters } from \"pdfjs-lib\";\n\nconst TREEITEM_OFFSET_TOP = -100; // px\nconst TREEITEM_SELECTED_CLASS = \"selected\";\n\nclass BaseTreeViewer {\n constructor(options) {\n if (this.constructor === BaseTreeViewer) {\n throw new Error(\"Cannot initialize BaseTreeViewer.\");\n }\n this.container = options.container;\n this.eventBus = options.eventBus;\n\n this.reset();\n }\n\n reset() {\n this._pdfDocument = null;\n this._lastToggleIsShow = true;\n this._currentTreeItem = null;\n\n // Remove the tree from the DOM.\n this.container.textContent = \"\";\n // Ensure that the left (right in RTL locales) margin is always reset,\n // to prevent incorrect tree alignment if a new document is opened.\n this.container.classList.remove(\"treeWithDeepNesting\");\n }\n\n /**\n * @private\n */\n _dispatchEvent(count) {\n throw new Error(\"Not implemented: _dispatchEvent\");\n }\n\n /**\n * @private\n */\n _bindLink(element, params) {\n throw new Error(\"Not implemented: _bindLink\");\n }\n\n /**\n * @private\n */\n _normalizeTextContent(str) {\n // Chars in range [0x01-0x1F] will be replaced with a white space\n // and 0x00 by \"\".\n return (\n removeNullCharacters(str, /* replaceInvisible */ true) ||\n /* en dash = */ \"\\u2013\"\n );\n }\n\n /**\n * Prepend a button before a tree item which allows the user to collapse or\n * expand all tree items at that level; see `_toggleTreeItem`.\n * @private\n */\n _addToggleButton(div, hidden = false) {\n const toggler = document.createElement(\"div\");\n toggler.className = \"treeItemToggler\";\n if (hidden) {\n toggler.classList.add(\"treeItemsHidden\");\n }\n toggler.onclick = evt => {\n evt.stopPropagation();\n toggler.classList.toggle(\"treeItemsHidden\");\n\n if (evt.shiftKey) {\n const shouldShowAll = !toggler.classList.contains(\"treeItemsHidden\");\n this._toggleTreeItem(div, shouldShowAll);\n }\n };\n div.insertBefore(toggler, div.firstChild);\n }\n\n /**\n * Collapse or expand the subtree of a tree item.\n *\n * @param {Element} root - the root of the item (sub)tree.\n * @param {boolean} show - whether to show the item (sub)tree. If false,\n * the item subtree rooted at `root` will be collapsed.\n * @private\n */\n _toggleTreeItem(root, show = false) {\n this._lastToggleIsShow = show;\n for (const toggler of root.querySelectorAll(\".treeItemToggler\")) {\n toggler.classList.toggle(\"treeItemsHidden\", !show);\n }\n }\n\n /**\n * Collapse or expand all subtrees of the `container`.\n * @private\n */\n _toggleAllTreeItems() {\n this._toggleTreeItem(this.container, !this._lastToggleIsShow);\n }\n\n /**\n * @private\n */\n _finishRendering(fragment, count, hasAnyNesting = false) {\n if (hasAnyNesting) {\n this.container.classList.add(\"treeWithDeepNesting\");\n\n this._lastToggleIsShow = !fragment.querySelector(\".treeItemsHidden\");\n }\n this.container.appendChild(fragment);\n\n this._dispatchEvent(count);\n }\n\n render(params) {\n throw new Error(\"Not implemented: render\");\n }\n\n /**\n * @private\n */\n _updateCurrentTreeItem(treeItem = null) {\n if (this._currentTreeItem) {\n // Ensure that the current treeItem-selection is always removed.\n this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS);\n this._currentTreeItem = null;\n }\n if (treeItem) {\n treeItem.classList.add(TREEITEM_SELECTED_CLASS);\n this._currentTreeItem = treeItem;\n }\n }\n\n /**\n * @private\n */\n _scrollToCurrentTreeItem(treeItem) {\n if (!treeItem) {\n return;\n }\n // Ensure that the treeItem is *fully* expanded, such that it will first of\n // all be visible and secondly that scrolling it into view works correctly.\n let currentNode = treeItem.parentNode;\n while (currentNode && currentNode !== this.container) {\n if (currentNode.classList.contains(\"treeItem\")) {\n const toggler = currentNode.firstElementChild;\n toggler?.classList.remove(\"treeItemsHidden\");\n }\n currentNode = currentNode.parentNode;\n }\n this._updateCurrentTreeItem(treeItem);\n\n this.container.scrollTo(\n treeItem.offsetLeft,\n treeItem.offsetTop + TREEITEM_OFFSET_TOP\n );\n }\n}\n\nexport { BaseTreeViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createPromiseCapability,\n getPdfFilenameFromUrl,\n PDFDateString,\n} from \"pdfjs-lib\";\nimport { getPageSizeInches, isPortraitOrientation } from \"./ui_utils.js\";\n\nconst DEFAULT_FIELD_CONTENT = \"-\";\n\n// See https://en.wikibooks.org/wiki/Lentis/Conversion_to_the_Metric_Standard_in_the_United_States\nconst NON_METRIC_LOCALES = [\"en-us\", \"en-lr\", \"my\"];\n\n// Should use the format: `width x height`, in portrait orientation.\n// See https://en.wikipedia.org/wiki/Paper_size\nconst US_PAGE_NAMES = {\n \"8.5x11\": \"Letter\",\n \"8.5x14\": \"Legal\",\n};\nconst METRIC_PAGE_NAMES = {\n \"297x420\": \"A3\",\n \"210x297\": \"A4\",\n};\n\nfunction getPageName(size, isPortrait, pageNames) {\n const width = isPortrait ? size.width : size.height;\n const height = isPortrait ? size.height : size.width;\n\n return pageNames[`${width}x${height}`];\n}\n\n/**\n * @typedef {Object} PDFDocumentPropertiesOptions\n * @property {string} overlayName - Name/identifier for the overlay.\n * @property {Object} fields - Names and elements of the overlay's fields.\n * @property {HTMLDivElement} container - Div container for the overlay.\n * @property {HTMLButtonElement} closeButton - Button for closing the overlay.\n */\n\nclass PDFDocumentProperties {\n /**\n * @param {PDFDocumentPropertiesOptions} options\n * @param {OverlayManager} overlayManager - Manager for the viewer overlays.\n * @param {EventBus} eventBus - The application event bus.\n * @param {IL10n} l10n - Localization service.\n */\n constructor(\n { overlayName, fields, container, closeButton },\n overlayManager,\n eventBus,\n l10n\n ) {\n this.overlayName = overlayName;\n this.fields = fields;\n this.container = container;\n this.overlayManager = overlayManager;\n this.l10n = l10n;\n\n this._reset();\n // Bind the event listener for the Close button.\n closeButton.addEventListener(\"click\", this.close.bind(this));\n\n this.overlayManager.register(\n this.overlayName,\n this.container,\n this.close.bind(this)\n );\n\n eventBus._on(\"pagechanging\", evt => {\n this._currentPageNumber = evt.pageNumber;\n });\n eventBus._on(\"rotationchanging\", evt => {\n this._pagesRotation = evt.pagesRotation;\n });\n\n this._isNonMetricLocale = true; // The default viewer locale is 'en-us'.\n l10n.getLanguage().then(locale => {\n this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale);\n });\n }\n\n /**\n * Open the document properties overlay.\n */\n async open() {\n const freezeFieldData = data => {\n Object.defineProperty(this, \"fieldData\", {\n value: Object.freeze(data),\n writable: false,\n enumerable: true,\n configurable: true,\n });\n };\n\n await Promise.all([\n this.overlayManager.open(this.overlayName),\n this._dataAvailableCapability.promise,\n ]);\n const currentPageNumber = this._currentPageNumber;\n const pagesRotation = this._pagesRotation;\n\n // If the document properties were previously fetched (for this PDF file),\n // just update the dialog immediately to avoid redundant lookups.\n if (\n this.fieldData &&\n currentPageNumber === this.fieldData._currentPageNumber &&\n pagesRotation === this.fieldData._pagesRotation\n ) {\n this._updateUI();\n return;\n }\n\n // Get the document properties.\n const {\n info,\n /* metadata, */\n contentDispositionFilename,\n contentLength,\n } = await this.pdfDocument.getMetadata();\n\n const [\n fileName,\n fileSize,\n creationDate,\n modificationDate,\n pageSize,\n isLinearized,\n ] = await Promise.all([\n contentDispositionFilename || getPdfFilenameFromUrl(this.url),\n this._parseFileSize(contentLength),\n this._parseDate(info.CreationDate),\n this._parseDate(info.ModDate),\n this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {\n return this._parsePageSize(getPageSizeInches(pdfPage), pagesRotation);\n }),\n this._parseLinearization(info.IsLinearized),\n ]);\n\n freezeFieldData({\n fileName,\n fileSize,\n title: info.Title,\n author: info.Author,\n subject: info.Subject,\n keywords: info.Keywords,\n creationDate,\n modificationDate,\n creator: info.Creator,\n producer: info.Producer,\n version: info.PDFFormatVersion,\n pageCount: this.pdfDocument.numPages,\n pageSize,\n linearized: isLinearized,\n _currentPageNumber: currentPageNumber,\n _pagesRotation: pagesRotation,\n });\n this._updateUI();\n\n // Get the correct fileSize, since it may not have been available\n // or could potentially be wrong.\n const { length } = await this.pdfDocument.getDownloadInfo();\n if (contentLength === length) {\n return; // The fileSize has already been correctly set.\n }\n const data = Object.assign(Object.create(null), this.fieldData);\n data.fileSize = await this._parseFileSize(length);\n\n freezeFieldData(data);\n this._updateUI();\n }\n\n /**\n * Close the document properties overlay.\n */\n close() {\n this.overlayManager.close(this.overlayName);\n }\n\n /**\n * Set a reference to the PDF document and the URL in order\n * to populate the overlay fields with the document properties.\n * Note that the overlay will contain no information if this method\n * is not called.\n *\n * @param {PDFDocumentProxy} pdfDocument - A reference to the PDF document.\n * @param {string} url - The URL of the document.\n */\n setDocument(pdfDocument, url = null) {\n if (this.pdfDocument) {\n this._reset();\n this._updateUI(true);\n }\n if (!pdfDocument) {\n return;\n }\n this.pdfDocument = pdfDocument;\n this.url = url;\n\n this._dataAvailableCapability.resolve();\n }\n\n /**\n * @private\n */\n _reset() {\n this.pdfDocument = null;\n this.url = null;\n\n delete this.fieldData;\n this._dataAvailableCapability = createPromiseCapability();\n this._currentPageNumber = 1;\n this._pagesRotation = 0;\n }\n\n /**\n * Always updates all of the dialog fields, to prevent inconsistent UI state.\n * NOTE: If the contents of a particular field is neither a non-empty string,\n * nor a number, it will fall back to `DEFAULT_FIELD_CONTENT`.\n * @private\n */\n _updateUI(reset = false) {\n if (reset || !this.fieldData) {\n for (const id in this.fields) {\n this.fields[id].textContent = DEFAULT_FIELD_CONTENT;\n }\n return;\n }\n if (this.overlayManager.active !== this.overlayName) {\n // Don't bother updating the dialog if has already been closed,\n // since it will be updated the next time `this.open` is called.\n return;\n }\n for (const id in this.fields) {\n const content = this.fieldData[id];\n this.fields[id].textContent =\n content || content === 0 ? content : DEFAULT_FIELD_CONTENT;\n }\n }\n\n /**\n * @private\n */\n async _parseFileSize(fileSize = 0) {\n const kb = fileSize / 1024,\n mb = kb / 1024;\n if (!kb) {\n return undefined;\n }\n return this.l10n.get(`document_properties_${mb >= 1 ? \"mb\" : \"kb\"}`, {\n size_mb: mb >= 1 && (+mb.toPrecision(3)).toLocaleString(),\n size_kb: mb < 1 && (+kb.toPrecision(3)).toLocaleString(),\n size_b: fileSize.toLocaleString(),\n });\n }\n\n /**\n * @private\n */\n async _parsePageSize(pageSizeInches, pagesRotation) {\n if (!pageSizeInches) {\n return undefined;\n }\n // Take the viewer rotation into account as well; compare with Adobe Reader.\n if (pagesRotation % 180 !== 0) {\n pageSizeInches = {\n width: pageSizeInches.height,\n height: pageSizeInches.width,\n };\n }\n const isPortrait = isPortraitOrientation(pageSizeInches);\n\n let sizeInches = {\n width: Math.round(pageSizeInches.width * 100) / 100,\n height: Math.round(pageSizeInches.height * 100) / 100,\n };\n // 1in == 25.4mm; no need to round to 2 decimals for millimeters.\n let sizeMillimeters = {\n width: Math.round(pageSizeInches.width * 25.4 * 10) / 10,\n height: Math.round(pageSizeInches.height * 25.4 * 10) / 10,\n };\n\n let rawName =\n getPageName(sizeInches, isPortrait, US_PAGE_NAMES) ||\n getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES);\n\n if (\n !rawName &&\n !(\n Number.isInteger(sizeMillimeters.width) &&\n Number.isInteger(sizeMillimeters.height)\n )\n ) {\n // Attempt to improve the page name detection by falling back to fuzzy\n // matching of the metric dimensions, to account for e.g. rounding errors\n // and/or PDF files that define the page sizes in an imprecise manner.\n const exactMillimeters = {\n width: pageSizeInches.width * 25.4,\n height: pageSizeInches.height * 25.4,\n };\n const intMillimeters = {\n width: Math.round(sizeMillimeters.width),\n height: Math.round(sizeMillimeters.height),\n };\n\n // Try to avoid false positives, by only considering \"small\" differences.\n if (\n Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 &&\n Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1\n ) {\n rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);\n if (rawName) {\n // Update *both* sizes, computed above, to ensure that the displayed\n // dimensions always correspond to the detected page name.\n sizeInches = {\n width: Math.round((intMillimeters.width / 25.4) * 100) / 100,\n height: Math.round((intMillimeters.height / 25.4) * 100) / 100,\n };\n sizeMillimeters = intMillimeters;\n }\n }\n }\n\n const [{ width, height }, unit, name, orientation] = await Promise.all([\n this._isNonMetricLocale ? sizeInches : sizeMillimeters,\n this.l10n.get(\n `document_properties_page_size_unit_${\n this._isNonMetricLocale ? \"inches\" : \"millimeters\"\n }`\n ),\n rawName &&\n this.l10n.get(\n `document_properties_page_size_name_${rawName.toLowerCase()}`\n ),\n this.l10n.get(\n `document_properties_page_size_orientation_${\n isPortrait ? \"portrait\" : \"landscape\"\n }`\n ),\n ]);\n\n return this.l10n.get(\n `document_properties_page_size_dimension_${name ? \"name_\" : \"\"}string`,\n {\n width: width.toLocaleString(),\n height: height.toLocaleString(),\n unit,\n name,\n orientation,\n }\n );\n }\n\n /**\n * @private\n */\n async _parseDate(inputDate) {\n const dateObject = PDFDateString.toDateObject(inputDate);\n if (!dateObject) {\n return undefined;\n }\n return this.l10n.get(\"document_properties_date_string\", {\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString(),\n });\n }\n\n /**\n * @private\n */\n _parseLinearization(isLinearized) {\n return this.l10n.get(\n `document_properties_linearized_${isLinearized ? \"yes\" : \"no\"}`\n );\n }\n}\n\nexport { PDFDocumentProperties };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FindState } from \"./pdf_find_controller.js\";\n\nconst MATCHES_COUNT_LIMIT = 1000;\n\n/**\n * Creates a \"search bar\" given a set of DOM elements that act as controls\n * for searching or for setting search preferences in the UI. This object\n * also sets up the appropriate events for the controls. Actual searching\n * is done by PDFFindController.\n */\nclass PDFFindBar {\n constructor(options, eventBus, l10n) {\n this.opened = false;\n\n this.bar = options.bar;\n this.toggleButton = options.toggleButton;\n this.findField = options.findField;\n this.highlightAll = options.highlightAllCheckbox;\n this.caseSensitive = options.caseSensitiveCheckbox;\n this.entireWord = options.entireWordCheckbox;\n this.findMsg = options.findMsg;\n this.findResultsCount = options.findResultsCount;\n this.findPreviousButton = options.findPreviousButton;\n this.findNextButton = options.findNextButton;\n this.eventBus = eventBus;\n this.l10n = l10n;\n\n // Add event listeners to the DOM elements.\n this.toggleButton.addEventListener(\"click\", () => {\n this.toggle();\n });\n\n this.findField.addEventListener(\"input\", () => {\n this.dispatchEvent(\"\");\n });\n\n this.bar.addEventListener(\"keydown\", e => {\n switch (e.keyCode) {\n case 13: // Enter\n if (e.target === this.findField) {\n this.dispatchEvent(\"again\", e.shiftKey);\n }\n break;\n case 27: // Escape\n this.close();\n break;\n }\n });\n\n this.findPreviousButton.addEventListener(\"click\", () => {\n this.dispatchEvent(\"again\", true);\n });\n\n this.findNextButton.addEventListener(\"click\", () => {\n this.dispatchEvent(\"again\", false);\n });\n\n this.highlightAll.addEventListener(\"click\", () => {\n this.dispatchEvent(\"highlightallchange\");\n });\n\n this.caseSensitive.addEventListener(\"click\", () => {\n this.dispatchEvent(\"casesensitivitychange\");\n });\n\n this.entireWord.addEventListener(\"click\", () => {\n this.dispatchEvent(\"entirewordchange\");\n });\n\n this.eventBus._on(\"resize\", this._adjustWidth.bind(this));\n }\n\n reset() {\n this.updateUIState();\n }\n\n dispatchEvent(type, findPrev = false) {\n this.eventBus.dispatch(\"find\", {\n source: this,\n type,\n query: this.findField.value,\n phraseSearch: true,\n caseSensitive: this.caseSensitive.checked,\n entireWord: this.entireWord.checked,\n highlightAll: this.highlightAll.checked,\n findPrevious: findPrev,\n });\n }\n\n updateUIState(state, previous, matchesCount) {\n let findMsg = Promise.resolve(\"\");\n let status = \"\";\n\n switch (state) {\n case FindState.FOUND:\n break;\n case FindState.PENDING:\n status = \"pending\";\n break;\n case FindState.NOT_FOUND:\n findMsg = this.l10n.get(\"find_not_found\");\n status = \"notFound\";\n break;\n case FindState.WRAPPED:\n findMsg = this.l10n.get(`find_reached_${previous ? \"top\" : \"bottom\"}`);\n break;\n }\n this.findField.setAttribute(\"data-status\", status);\n\n findMsg.then(msg => {\n this.findMsg.textContent = msg;\n this._adjustWidth();\n });\n\n this.updateResultsCount(matchesCount);\n }\n\n updateResultsCount({ current = 0, total = 0 } = {}) {\n const limit = MATCHES_COUNT_LIMIT;\n let matchCountMsg = Promise.resolve(\"\");\n\n if (total > 0) {\n if (total > limit) {\n let key = \"find_match_count_limit\";\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n // TODO: Remove this hard-coded `[other]` form once plural support has\n // been implemented in the mozilla-central specific `l10n.js` file.\n key += \"[other]\";\n }\n matchCountMsg = this.l10n.get(key, { limit });\n } else {\n let key = \"find_match_count\";\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n // TODO: Remove this hard-coded `[other]` form once plural support has\n // been implemented in the mozilla-central specific `l10n.js` file.\n key += \"[other]\";\n }\n matchCountMsg = this.l10n.get(key, { current, total });\n }\n }\n matchCountMsg.then(msg => {\n this.findResultsCount.textContent = msg;\n this.findResultsCount.classList.toggle(\"hidden\", !total);\n // Since `updateResultsCount` may be called from `PDFFindController`,\n // ensure that the width of the findbar is always updated correctly.\n this._adjustWidth();\n });\n }\n\n open() {\n if (!this.opened) {\n this.opened = true;\n this.toggleButton.classList.add(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.bar.classList.remove(\"hidden\");\n }\n this.findField.select();\n this.findField.focus();\n\n this._adjustWidth();\n }\n\n close() {\n if (!this.opened) {\n return;\n }\n this.opened = false;\n this.toggleButton.classList.remove(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.bar.classList.add(\"hidden\");\n\n this.eventBus.dispatch(\"findbarclose\", { source: this });\n }\n\n toggle() {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * @private\n */\n _adjustWidth() {\n if (!this.opened) {\n return;\n }\n\n // The find bar has an absolute position and thus the browser extends\n // its width to the maximum possible width once the find bar does not fit\n // entirely within the window anymore (and its elements are automatically\n // wrapped). Here we detect and fix that.\n this.bar.classList.remove(\"wrapContainers\");\n\n const findbarHeight = this.bar.clientHeight;\n const inputContainerHeight = this.bar.firstElementChild.clientHeight;\n\n if (findbarHeight > inputContainerHeight) {\n // The findbar is taller than the input container, which means that\n // the browser wrapped some of the elements. For a consistent look,\n // wrap all of them to adjust the width of the find bar.\n this.bar.classList.add(\"wrapContainers\");\n }\n }\n}\n\nexport { PDFFindBar };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { createPromiseCapability } from \"pdfjs-lib\";\nimport { getCharacterType } from \"./pdf_find_utils.js\";\nimport { scrollIntoView } from \"./ui_utils.js\";\n\nconst FindState = {\n FOUND: 0,\n NOT_FOUND: 1,\n WRAPPED: 2,\n PENDING: 3,\n};\n\nconst FIND_TIMEOUT = 250; // ms\nconst MATCH_SCROLL_OFFSET_TOP = -50; // px\nconst MATCH_SCROLL_OFFSET_LEFT = -400; // px\n\nconst CHARACTERS_TO_NORMALIZE = {\n \"\\u2010\": \"-\", // Hyphen\n \"\\u2018\": \"'\", // Left single quotation mark\n \"\\u2019\": \"'\", // Right single quotation mark\n \"\\u201A\": \"'\", // Single low-9 quotation mark\n \"\\u201B\": \"'\", // Single high-reversed-9 quotation mark\n \"\\u201C\": '\"', // Left double quotation mark\n \"\\u201D\": '\"', // Right double quotation mark\n \"\\u201E\": '\"', // Double low-9 quotation mark\n \"\\u201F\": '\"', // Double high-reversed-9 quotation mark\n \"\\u00BC\": \"1/4\", // Vulgar fraction one quarter\n \"\\u00BD\": \"1/2\", // Vulgar fraction one half\n \"\\u00BE\": \"3/4\", // Vulgar fraction three quarters\n};\n\nlet normalizationRegex = null;\nfunction normalize(text) {\n if (!normalizationRegex) {\n // Compile the regular expression for text normalization once.\n const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(\"\");\n normalizationRegex = new RegExp(`[${replace}]`, \"g\");\n }\n let diffs = null;\n const normalizedText = text.replace(normalizationRegex, function (ch, index) {\n const normalizedCh = CHARACTERS_TO_NORMALIZE[ch],\n diff = normalizedCh.length - ch.length;\n if (diff !== 0) {\n (diffs ||= []).push([index, diff]);\n }\n return normalizedCh;\n });\n\n return [normalizedText, diffs];\n}\n\n// Determine the original, non-normalized, match index such that highlighting of\n// search results is correct in the `textLayer` for strings containing e.g. \"½\"\n// characters; essentially \"inverting\" the result of the `normalize` function.\nfunction getOriginalIndex(matchIndex, diffs = null) {\n if (!diffs) {\n return matchIndex;\n }\n let totalDiff = 0;\n for (const [index, diff] of diffs) {\n const currentIndex = index + totalDiff;\n\n if (currentIndex >= matchIndex) {\n break;\n }\n if (currentIndex + diff > matchIndex) {\n totalDiff += matchIndex - currentIndex;\n break;\n }\n totalDiff += diff;\n }\n return matchIndex - totalDiff;\n}\n\n/**\n * @typedef {Object} PDFFindControllerOptions\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {EventBus} eventBus - The application event bus.\n */\n\n/**\n * Provides search functionality to find a given string in a PDF document.\n */\nclass PDFFindController {\n /**\n * @param {PDFFindControllerOptions} options\n */\n constructor({ linkService, eventBus }) {\n this._linkService = linkService;\n this._eventBus = eventBus;\n\n this._reset();\n eventBus._on(\"find\", this._onFind.bind(this));\n eventBus._on(\"findbarclose\", this._onFindBarClose.bind(this));\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n this.executeCommand = (cmd, state) => {\n console.error(\n \"Deprecated method `PDFFindController.executeCommand` called, \" +\n 'please dispatch a \"find\"-event using the EventBus instead.'\n );\n\n const eventState = Object.assign(Object.create(null), state, {\n type: cmd.substring(\"find\".length),\n });\n this._onFind(eventState);\n };\n }\n }\n\n get highlightMatches() {\n return this._highlightMatches;\n }\n\n get pageMatches() {\n return this._pageMatches;\n }\n\n get pageMatchesLength() {\n return this._pageMatchesLength;\n }\n\n get selected() {\n return this._selected;\n }\n\n get state() {\n return this._state;\n }\n\n /**\n * Set a reference to the PDF document in order to search it.\n * Note that searching is not possible if this method is not called.\n *\n * @param {PDFDocumentProxy} pdfDocument - The PDF document to search.\n */\n setDocument(pdfDocument) {\n if (this._pdfDocument) {\n this._reset();\n }\n if (!pdfDocument) {\n return;\n }\n this._pdfDocument = pdfDocument;\n this._firstPageCapability.resolve();\n }\n\n /**\n * @private\n */\n _onFind(state) {\n if (!state) {\n return;\n }\n const pdfDocument = this._pdfDocument;\n const { type } = state;\n\n if (this._state === null || this._shouldDirtyMatch(state)) {\n this._dirtyMatch = true;\n }\n this._state = state;\n if (type !== \"highlightallchange\") {\n this._updateUIState(FindState.PENDING);\n }\n\n this._firstPageCapability.promise.then(() => {\n // If the document was closed before searching began, or if the search\n // operation was relevant for a previously opened document, do nothing.\n if (\n !this._pdfDocument ||\n (pdfDocument && this._pdfDocument !== pdfDocument)\n ) {\n return;\n }\n this._extractText();\n\n const findbarClosed = !this._highlightMatches;\n const pendingTimeout = !!this._findTimeout;\n\n if (this._findTimeout) {\n clearTimeout(this._findTimeout);\n this._findTimeout = null;\n }\n if (!type) {\n // Trigger the find action with a small delay to avoid starting the\n // search when the user is still typing (saving resources).\n this._findTimeout = setTimeout(() => {\n this._nextMatch();\n this._findTimeout = null;\n }, FIND_TIMEOUT);\n } else if (this._dirtyMatch) {\n // Immediately trigger searching for non-'find' operations, when the\n // current state needs to be reset and matches re-calculated.\n this._nextMatch();\n } else if (type === \"again\") {\n this._nextMatch();\n\n // When the findbar was previously closed, and `highlightAll` is set,\n // ensure that the matches on all active pages are highlighted again.\n if (findbarClosed && this._state.highlightAll) {\n this._updateAllPages();\n }\n } else if (type === \"highlightallchange\") {\n // If there was a pending search operation, synchronously trigger a new\n // search *first* to ensure that the correct matches are highlighted.\n if (pendingTimeout) {\n this._nextMatch();\n } else {\n this._highlightMatches = true;\n }\n this._updateAllPages(); // Update the highlighting on all active pages.\n } else {\n this._nextMatch();\n }\n });\n }\n\n scrollMatchIntoView({\n element = null,\n selectedLeft = 0,\n pageIndex = -1,\n matchIndex = -1,\n }) {\n if (!this._scrollMatches || !element) {\n return;\n } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) {\n return;\n } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) {\n return;\n }\n this._scrollMatches = false; // Ensure that scrolling only happens once.\n\n const spot = {\n top: MATCH_SCROLL_OFFSET_TOP,\n left: selectedLeft + MATCH_SCROLL_OFFSET_LEFT,\n };\n scrollIntoView(element, spot, /* scrollMatches = */ true);\n }\n\n _reset() {\n this._highlightMatches = false;\n this._scrollMatches = false;\n this._pdfDocument = null;\n this._pageMatches = [];\n this._pageMatchesLength = [];\n this._state = null;\n // Currently selected match.\n this._selected = {\n pageIdx: -1,\n matchIdx: -1,\n };\n // Where the find algorithm currently is in the document.\n this._offset = {\n pageIdx: null,\n matchIdx: null,\n wrapped: false,\n };\n this._extractTextPromises = [];\n this._pageContents = []; // Stores the normalized text for each page.\n this._pageDiffs = [];\n this._matchesCountTotal = 0;\n this._pagesToSearch = null;\n this._pendingFindMatches = new Set();\n this._resumePageIdx = null;\n this._dirtyMatch = false;\n clearTimeout(this._findTimeout);\n this._findTimeout = null;\n\n this._firstPageCapability = createPromiseCapability();\n }\n\n /**\n * @type {string} The (current) normalized search query.\n */\n get _query() {\n if (this._state.query !== this._rawQuery) {\n this._rawQuery = this._state.query;\n [this._normalizedQuery] = normalize(this._state.query);\n }\n return this._normalizedQuery;\n }\n\n _shouldDirtyMatch(state) {\n // When the search query changes, regardless of the actual search command\n // used, always re-calculate matches to avoid errors (fixes bug 1030622).\n if (state.query !== this._state.query) {\n return true;\n }\n switch (state.type) {\n case \"again\":\n const pageNumber = this._selected.pageIdx + 1;\n const linkService = this._linkService;\n // Only treat a 'findagain' event as a new search operation when it's\n // *absolutely* certain that the currently selected match is no longer\n // visible, e.g. as a result of the user scrolling in the document.\n //\n // NOTE: If only a simple `this._linkService.page` check was used here,\n // there's a risk that consecutive 'findagain' operations could \"skip\"\n // over matches at the top/bottom of pages thus making them completely\n // inaccessible when there's multiple pages visible in the viewer.\n if (\n pageNumber >= 1 &&\n pageNumber <= linkService.pagesCount &&\n pageNumber !== linkService.page &&\n !linkService.isPageVisible(pageNumber)\n ) {\n return true;\n }\n return false;\n case \"highlightallchange\":\n return false;\n }\n return true;\n }\n\n /**\n * Helper for multi-term search that fills the `matchesWithLength` array\n * and handles cases where one search term includes another search term (for\n * example, \"tamed tame\" or \"this is\"). It looks for intersecting terms in\n * the `matches` and keeps elements with a longer match length.\n */\n _prepareMatches(matchesWithLength, matches, matchesLength) {\n function isSubTerm(currentIndex) {\n const currentElem = matchesWithLength[currentIndex];\n const nextElem = matchesWithLength[currentIndex + 1];\n\n // Check for cases like \"TAMEd TAME\".\n if (\n currentIndex < matchesWithLength.length - 1 &&\n currentElem.match === nextElem.match\n ) {\n currentElem.skipped = true;\n return true;\n }\n\n // Check for cases like \"thIS IS\".\n for (let i = currentIndex - 1; i >= 0; i--) {\n const prevElem = matchesWithLength[i];\n if (prevElem.skipped) {\n continue;\n }\n if (prevElem.match + prevElem.matchLength < currentElem.match) {\n break;\n }\n if (\n prevElem.match + prevElem.matchLength >=\n currentElem.match + currentElem.matchLength\n ) {\n currentElem.skipped = true;\n return true;\n }\n }\n return false;\n }\n\n // Sort the array of `{ match: <match>, matchLength: <matchLength> }`\n // objects on increasing index first and on the length otherwise.\n matchesWithLength.sort(function (a, b) {\n return a.match === b.match\n ? a.matchLength - b.matchLength\n : a.match - b.match;\n });\n for (let i = 0, len = matchesWithLength.length; i < len; i++) {\n if (isSubTerm(i)) {\n continue;\n }\n matches.push(matchesWithLength[i].match);\n matchesLength.push(matchesWithLength[i].matchLength);\n }\n }\n\n /**\n * Determine if the search query constitutes a \"whole word\", by comparing the\n * first/last character type with the preceding/following character type.\n */\n _isEntireWord(content, startIdx, length) {\n if (startIdx > 0) {\n const first = content.charCodeAt(startIdx);\n const limit = content.charCodeAt(startIdx - 1);\n if (getCharacterType(first) === getCharacterType(limit)) {\n return false;\n }\n }\n const endIdx = startIdx + length - 1;\n if (endIdx < content.length - 1) {\n const last = content.charCodeAt(endIdx);\n const limit = content.charCodeAt(endIdx + 1);\n if (getCharacterType(last) === getCharacterType(limit)) {\n return false;\n }\n }\n return true;\n }\n\n _calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord) {\n const matches = [],\n matchesLength = [];\n const queryLen = query.length;\n\n let matchIdx = -queryLen;\n while (true) {\n matchIdx = pageContent.indexOf(query, matchIdx + queryLen);\n if (matchIdx === -1) {\n break;\n }\n if (entireWord && !this._isEntireWord(pageContent, matchIdx, queryLen)) {\n continue;\n }\n const originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs),\n matchEnd = matchIdx + queryLen - 1,\n originalQueryLen =\n getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1;\n\n matches.push(originalMatchIdx);\n matchesLength.push(originalQueryLen);\n }\n this._pageMatches[pageIndex] = matches;\n this._pageMatchesLength[pageIndex] = matchesLength;\n }\n\n _calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord) {\n const matchesWithLength = [];\n\n // Divide the query into pieces and search for text in each piece.\n const queryArray = query.match(/\\S+/g);\n for (let i = 0, len = queryArray.length; i < len; i++) {\n const subquery = queryArray[i];\n const subqueryLen = subquery.length;\n\n let matchIdx = -subqueryLen;\n while (true) {\n matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen);\n if (matchIdx === -1) {\n break;\n }\n if (\n entireWord &&\n !this._isEntireWord(pageContent, matchIdx, subqueryLen)\n ) {\n continue;\n }\n const originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs),\n matchEnd = matchIdx + subqueryLen - 1,\n originalQueryLen =\n getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1;\n\n // Other searches do not, so we store the length.\n matchesWithLength.push({\n match: originalMatchIdx,\n matchLength: originalQueryLen,\n skipped: false,\n });\n }\n }\n\n // Prepare arrays for storing the matches.\n this._pageMatchesLength[pageIndex] = [];\n this._pageMatches[pageIndex] = [];\n\n // Sort `matchesWithLength`, remove intersecting terms and put the result\n // into the two arrays.\n this._prepareMatches(\n matchesWithLength,\n this._pageMatches[pageIndex],\n this._pageMatchesLength[pageIndex]\n );\n }\n\n _calculateMatch(pageIndex) {\n let pageContent = this._pageContents[pageIndex];\n const pageDiffs = this._pageDiffs[pageIndex];\n let query = this._query;\n const { caseSensitive, entireWord, phraseSearch } = this._state;\n\n if (query.length === 0) {\n // Do nothing: the matches should be wiped out already.\n return;\n }\n\n if (!caseSensitive) {\n pageContent = pageContent.toLowerCase();\n query = query.toLowerCase();\n }\n\n if (phraseSearch) {\n this._calculatePhraseMatch(\n query,\n pageIndex,\n pageContent,\n pageDiffs,\n entireWord\n );\n } else {\n this._calculateWordMatch(\n query,\n pageIndex,\n pageContent,\n pageDiffs,\n entireWord\n );\n }\n\n // When `highlightAll` is set, ensure that the matches on previously\n // rendered (and still active) pages are correctly highlighted.\n if (this._state.highlightAll) {\n this._updatePage(pageIndex);\n }\n if (this._resumePageIdx === pageIndex) {\n this._resumePageIdx = null;\n this._nextPageMatch();\n }\n\n // Update the match count.\n const pageMatchesCount = this._pageMatches[pageIndex].length;\n if (pageMatchesCount > 0) {\n this._matchesCountTotal += pageMatchesCount;\n this._updateUIResultsCount();\n }\n }\n\n _extractText() {\n // Perform text extraction once if this method is called multiple times.\n if (this._extractTextPromises.length > 0) {\n return;\n }\n\n let promise = Promise.resolve();\n for (let i = 0, ii = this._linkService.pagesCount; i < ii; i++) {\n const extractTextCapability = createPromiseCapability();\n this._extractTextPromises[i] = extractTextCapability.promise;\n\n promise = promise.then(() => {\n return this._pdfDocument\n .getPage(i + 1)\n .then(pdfPage => {\n return pdfPage.getTextContent({\n normalizeWhitespace: true,\n });\n })\n .then(\n textContent => {\n const textItems = textContent.items;\n const strBuf = [];\n\n for (let j = 0, jj = textItems.length; j < jj; j++) {\n strBuf.push(textItems[j].str);\n }\n\n // Store the normalized page content (text items) as one string.\n [this._pageContents[i], this._pageDiffs[i]] = normalize(\n strBuf.join(\"\")\n );\n extractTextCapability.resolve(i);\n },\n reason => {\n console.error(\n `Unable to get text content for page ${i + 1}`,\n reason\n );\n // Page error -- assuming no text content.\n this._pageContents[i] = \"\";\n this._pageDiffs[i] = null;\n extractTextCapability.resolve(i);\n }\n );\n });\n }\n }\n\n _updatePage(index) {\n if (this._scrollMatches && this._selected.pageIdx === index) {\n // If the page is selected, scroll the page into view, which triggers\n // rendering the page, which adds the text layer. Once the text layer\n // is built, it will attempt to scroll the selected match into view.\n this._linkService.page = index + 1;\n }\n\n this._eventBus.dispatch(\"updatetextlayermatches\", {\n source: this,\n pageIndex: index,\n });\n }\n\n _updateAllPages() {\n this._eventBus.dispatch(\"updatetextlayermatches\", {\n source: this,\n pageIndex: -1,\n });\n }\n\n _nextMatch() {\n const previous = this._state.findPrevious;\n const currentPageIndex = this._linkService.page - 1;\n const numPages = this._linkService.pagesCount;\n\n this._highlightMatches = true;\n\n if (this._dirtyMatch) {\n // Need to recalculate the matches, reset everything.\n this._dirtyMatch = false;\n this._selected.pageIdx = this._selected.matchIdx = -1;\n this._offset.pageIdx = currentPageIndex;\n this._offset.matchIdx = null;\n this._offset.wrapped = false;\n this._resumePageIdx = null;\n this._pageMatches.length = 0;\n this._pageMatchesLength.length = 0;\n this._matchesCountTotal = 0;\n\n this._updateAllPages(); // Wipe out any previously highlighted matches.\n\n for (let i = 0; i < numPages; i++) {\n // Start finding the matches as soon as the text is extracted.\n if (this._pendingFindMatches.has(i)) {\n continue;\n }\n this._pendingFindMatches.add(i);\n this._extractTextPromises[i].then(pageIdx => {\n this._pendingFindMatches.delete(pageIdx);\n this._calculateMatch(pageIdx);\n });\n }\n }\n\n // If there's no query there's no point in searching.\n if (this._query === \"\") {\n this._updateUIState(FindState.FOUND);\n return;\n }\n // If we're waiting on a page, we return since we can't do anything else.\n if (this._resumePageIdx) {\n return;\n }\n\n const offset = this._offset;\n // Keep track of how many pages we should maximally iterate through.\n this._pagesToSearch = numPages;\n // If there's already a `matchIdx` that means we are iterating through a\n // page's matches.\n if (offset.matchIdx !== null) {\n const numPageMatches = this._pageMatches[offset.pageIdx].length;\n if (\n (!previous && offset.matchIdx + 1 < numPageMatches) ||\n (previous && offset.matchIdx > 0)\n ) {\n // The simple case; we just have advance the matchIdx to select\n // the next match on the page.\n offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;\n this._updateMatch(/* found = */ true);\n return;\n }\n // We went beyond the current page's matches, so we advance to\n // the next page.\n this._advanceOffsetPage(previous);\n }\n // Start searching through the page.\n this._nextPageMatch();\n }\n\n _matchesReady(matches) {\n const offset = this._offset;\n const numMatches = matches.length;\n const previous = this._state.findPrevious;\n\n if (numMatches) {\n // There were matches for the page, so initialize `matchIdx`.\n offset.matchIdx = previous ? numMatches - 1 : 0;\n this._updateMatch(/* found = */ true);\n return true;\n }\n // No matches, so attempt to search the next page.\n this._advanceOffsetPage(previous);\n if (offset.wrapped) {\n offset.matchIdx = null;\n if (this._pagesToSearch < 0) {\n // No point in wrapping again, there were no matches.\n this._updateMatch(/* found = */ false);\n // While matches were not found, searching for a page\n // with matches should nevertheless halt.\n return true;\n }\n }\n // Matches were not found (and searching is not done).\n return false;\n }\n\n _nextPageMatch() {\n if (this._resumePageIdx !== null) {\n console.error(\"There can only be one pending page.\");\n }\n\n let matches = null;\n do {\n const pageIdx = this._offset.pageIdx;\n matches = this._pageMatches[pageIdx];\n if (!matches) {\n // The matches don't exist yet for processing by `_matchesReady`,\n // so set a resume point for when they do exist.\n this._resumePageIdx = pageIdx;\n break;\n }\n } while (!this._matchesReady(matches));\n }\n\n _advanceOffsetPage(previous) {\n const offset = this._offset;\n const numPages = this._linkService.pagesCount;\n offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;\n offset.matchIdx = null;\n\n this._pagesToSearch--;\n\n if (offset.pageIdx >= numPages || offset.pageIdx < 0) {\n offset.pageIdx = previous ? numPages - 1 : 0;\n offset.wrapped = true;\n }\n }\n\n _updateMatch(found = false) {\n let state = FindState.NOT_FOUND;\n const wrapped = this._offset.wrapped;\n this._offset.wrapped = false;\n\n if (found) {\n const previousPage = this._selected.pageIdx;\n this._selected.pageIdx = this._offset.pageIdx;\n this._selected.matchIdx = this._offset.matchIdx;\n state = wrapped ? FindState.WRAPPED : FindState.FOUND;\n\n // Update the currently selected page to wipe out any selected matches.\n if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {\n this._updatePage(previousPage);\n }\n }\n\n this._updateUIState(state, this._state.findPrevious);\n if (this._selected.pageIdx !== -1) {\n // Ensure that the match will be scrolled into view.\n this._scrollMatches = true;\n\n this._updatePage(this._selected.pageIdx);\n }\n }\n\n _onFindBarClose(evt) {\n const pdfDocument = this._pdfDocument;\n // Since searching is asynchronous, ensure that the removal of highlighted\n // matches (from the UI) is async too such that the 'updatetextlayermatches'\n // events will always be dispatched in the expected order.\n this._firstPageCapability.promise.then(() => {\n // Only update the UI if the document is open, and is the current one.\n if (\n !this._pdfDocument ||\n (pdfDocument && this._pdfDocument !== pdfDocument)\n ) {\n return;\n }\n // Ensure that a pending, not yet started, search operation is aborted.\n if (this._findTimeout) {\n clearTimeout(this._findTimeout);\n this._findTimeout = null;\n }\n // Abort any long running searches, to avoid a match being scrolled into\n // view *after* the findbar has been closed. In this case `this._offset`\n // will most likely differ from `this._selected`, hence we also ensure\n // that any new search operation will always start with a clean slate.\n if (this._resumePageIdx) {\n this._resumePageIdx = null;\n this._dirtyMatch = true;\n }\n // Avoid the UI being in a pending state when the findbar is re-opened.\n this._updateUIState(FindState.FOUND);\n\n this._highlightMatches = false;\n this._updateAllPages(); // Wipe out any previously highlighted matches.\n });\n }\n\n _requestMatchesCount() {\n const { pageIdx, matchIdx } = this._selected;\n let current = 0,\n total = this._matchesCountTotal;\n if (matchIdx !== -1) {\n for (let i = 0; i < pageIdx; i++) {\n current += this._pageMatches[i]?.length || 0;\n }\n current += matchIdx + 1;\n }\n // When searching starts, this method may be called before the `pageMatches`\n // have been counted (in `_calculateMatch`). Ensure that the UI won't show\n // temporarily broken state when the active find result doesn't make sense.\n if (current < 1 || current > total) {\n current = total = 0;\n }\n return { current, total };\n }\n\n _updateUIResultsCount() {\n this._eventBus.dispatch(\"updatefindmatchescount\", {\n source: this,\n matchesCount: this._requestMatchesCount(),\n });\n }\n\n _updateUIState(state, previous = false) {\n this._eventBus.dispatch(\"updatefindcontrolstate\", {\n source: this,\n state,\n previous,\n matchesCount: this._requestMatchesCount(),\n rawQuery: this._state?.query ?? null,\n });\n }\n}\n\nexport { FindState, PDFFindController };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst CharacterType = {\n SPACE: 0,\n ALPHA_LETTER: 1,\n PUNCT: 2,\n HAN_LETTER: 3,\n KATAKANA_LETTER: 4,\n HIRAGANA_LETTER: 5,\n HALFWIDTH_KATAKANA_LETTER: 6,\n THAI_LETTER: 7,\n};\n\nfunction isAlphabeticalScript(charCode) {\n return charCode < 0x2e80;\n}\n\nfunction isAscii(charCode) {\n return (charCode & 0xff80) === 0;\n}\n\nfunction isAsciiAlpha(charCode) {\n return (\n (charCode >= /* a = */ 0x61 && charCode <= /* z = */ 0x7a) ||\n (charCode >= /* A = */ 0x41 && charCode <= /* Z = */ 0x5a)\n );\n}\n\nfunction isAsciiDigit(charCode) {\n return charCode >= /* 0 = */ 0x30 && charCode <= /* 9 = */ 0x39;\n}\n\nfunction isAsciiSpace(charCode) {\n return (\n charCode === /* SPACE = */ 0x20 ||\n charCode === /* TAB = */ 0x09 ||\n charCode === /* CR = */ 0x0d ||\n charCode === /* LF = */ 0x0a\n );\n}\n\nfunction isHan(charCode) {\n return (\n (charCode >= 0x3400 && charCode <= 0x9fff) ||\n (charCode >= 0xf900 && charCode <= 0xfaff)\n );\n}\n\nfunction isKatakana(charCode) {\n return charCode >= 0x30a0 && charCode <= 0x30ff;\n}\n\nfunction isHiragana(charCode) {\n return charCode >= 0x3040 && charCode <= 0x309f;\n}\n\nfunction isHalfwidthKatakana(charCode) {\n return charCode >= 0xff60 && charCode <= 0xff9f;\n}\n\nfunction isThai(charCode) {\n return (charCode & 0xff80) === 0x0e00;\n}\n\n/**\n * This function is based on the word-break detection implemented in:\n * https://hg.mozilla.org/mozilla-central/file/tip/intl/lwbrk/WordBreaker.cpp\n */\nfunction getCharacterType(charCode) {\n if (isAlphabeticalScript(charCode)) {\n if (isAscii(charCode)) {\n if (isAsciiSpace(charCode)) {\n return CharacterType.SPACE;\n } else if (\n isAsciiAlpha(charCode) ||\n isAsciiDigit(charCode) ||\n charCode === /* UNDERSCORE = */ 0x5f\n ) {\n return CharacterType.ALPHA_LETTER;\n }\n return CharacterType.PUNCT;\n } else if (isThai(charCode)) {\n return CharacterType.THAI_LETTER;\n } else if (charCode === /* NBSP = */ 0xa0) {\n return CharacterType.SPACE;\n }\n return CharacterType.ALPHA_LETTER;\n }\n\n if (isHan(charCode)) {\n return CharacterType.HAN_LETTER;\n } else if (isKatakana(charCode)) {\n return CharacterType.KATAKANA_LETTER;\n } else if (isHiragana(charCode)) {\n return CharacterType.HIRAGANA_LETTER;\n } else if (isHalfwidthKatakana(charCode)) {\n return CharacterType.HALFWIDTH_KATAKANA_LETTER;\n }\n return CharacterType.ALPHA_LETTER;\n}\n\nexport { CharacterType, getCharacterType };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n isValidRotation,\n parseQueryString,\n PresentationModeState,\n} from \"./ui_utils.js\";\nimport { waitOnEventOrTimeout } from \"./event_utils.js\";\n\n// Heuristic value used when force-resetting `this._blockHashChange`.\nconst HASH_CHANGE_TIMEOUT = 1000; // milliseconds\n// Heuristic value used when adding the current position to the browser history.\nconst POSITION_UPDATED_THRESHOLD = 50;\n// Heuristic value used when adding a temporary position to the browser history.\nconst UPDATE_VIEWAREA_TIMEOUT = 1000; // milliseconds\n\n/**\n * @typedef {Object} PDFHistoryOptions\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {EventBus} eventBus - The application event bus.\n */\n\n/**\n * @typedef {Object} InitializeParameters\n * @property {string} fingerprint - The PDF document's unique fingerprint.\n * @property {boolean} [resetHistory] - Reset the browsing history.\n * @property {boolean} [updateUrl] - Attempt to update the document URL, with\n * the current hash, when pushing/replacing browser history entries.\n */\n\n/**\n * @typedef {Object} PushParameters\n * @property {string} [namedDest] - The named destination. If absent, a\n * stringified version of `explicitDest` is used.\n * @property {Array} explicitDest - The explicit destination array.\n * @property {number} pageNumber - The page to which the destination points.\n */\n\nfunction getCurrentHash() {\n return document.location.hash;\n}\n\nclass PDFHistory {\n /**\n * @param {PDFHistoryOptions} options\n */\n constructor({ linkService, eventBus }) {\n this.linkService = linkService;\n this.eventBus = eventBus;\n\n this._initialized = false;\n this._fingerprint = \"\";\n this.reset();\n\n this._boundEvents = null;\n this._isViewerInPresentationMode = false;\n // Ensure that we don't miss either a 'presentationmodechanged' or a\n // 'pagesinit' event, by registering the listeners immediately.\n this.eventBus._on(\"presentationmodechanged\", evt => {\n this._isViewerInPresentationMode =\n evt.state !== PresentationModeState.NORMAL;\n });\n this.eventBus._on(\"pagesinit\", () => {\n this._isPagesLoaded = false;\n\n this.eventBus._on(\n \"pagesloaded\",\n evt => {\n this._isPagesLoaded = !!evt.pagesCount;\n },\n { once: true }\n );\n });\n }\n\n /**\n * Initialize the history for the PDF document, using either the current\n * browser history entry or the document hash, whichever is present.\n * @param {InitializeParameters} params\n */\n initialize({ fingerprint, resetHistory = false, updateUrl = false }) {\n if (!fingerprint || typeof fingerprint !== \"string\") {\n console.error(\n 'PDFHistory.initialize: The \"fingerprint\" must be a non-empty string.'\n );\n return;\n }\n // Ensure that any old state is always reset upon initialization.\n if (this._initialized) {\n this.reset();\n }\n const reInitialized =\n this._fingerprint !== \"\" && this._fingerprint !== fingerprint;\n this._fingerprint = fingerprint;\n this._updateUrl = updateUrl === true;\n\n this._initialized = true;\n this._bindEvents();\n const state = window.history.state;\n\n this._popStateInProgress = false;\n this._blockHashChange = 0;\n this._currentHash = getCurrentHash();\n this._numPositionUpdates = 0;\n\n this._uid = this._maxUid = 0;\n this._destination = null;\n this._position = null;\n\n if (!this._isValidState(state, /* checkReload = */ true) || resetHistory) {\n const { hash, page, rotation } = this._parseCurrentHash(\n /* checkNameddest = */ true\n );\n\n if (!hash || reInitialized || resetHistory) {\n // Ensure that the browser history is reset on PDF document load.\n this._pushOrReplaceState(null, /* forceReplace = */ true);\n return;\n }\n // Ensure that the browser history is initialized correctly when\n // the document hash is present on PDF document load.\n this._pushOrReplaceState(\n { hash, page, rotation },\n /* forceReplace = */ true\n );\n return;\n }\n\n // The browser history contains a valid entry, ensure that the history is\n // initialized correctly on PDF document load.\n const destination = state.destination;\n this._updateInternalState(\n destination,\n state.uid,\n /* removeTemporary = */ true\n );\n\n if (destination.rotation !== undefined) {\n this._initialRotation = destination.rotation;\n }\n if (destination.dest) {\n this._initialBookmark = JSON.stringify(destination.dest);\n\n // If the history is updated, e.g. through the user changing the hash,\n // before the initial destination has become visible, then we do *not*\n // want to potentially add `this._position` to the browser history.\n this._destination.page = null;\n } else if (destination.hash) {\n this._initialBookmark = destination.hash;\n } else if (destination.page) {\n // Fallback case; shouldn't be necessary, but better safe than sorry.\n this._initialBookmark = `page=${destination.page}`;\n }\n }\n\n /**\n * Reset the current `PDFHistory` instance, and consequently prevent any\n * further updates and/or navigation of the browser history.\n */\n reset() {\n if (this._initialized) {\n this._pageHide(); // Simulate a 'pagehide' event when resetting.\n\n this._initialized = false;\n this._unbindEvents();\n }\n if (this._updateViewareaTimeout) {\n clearTimeout(this._updateViewareaTimeout);\n this._updateViewareaTimeout = null;\n }\n this._initialBookmark = null;\n this._initialRotation = null;\n }\n\n /**\n * Push an internal destination to the browser history.\n * @param {PushParameters}\n */\n push({ namedDest = null, explicitDest, pageNumber }) {\n if (!this._initialized) {\n return;\n }\n if (namedDest && typeof namedDest !== \"string\") {\n console.error(\n \"PDFHistory.push: \" +\n `\"${namedDest}\" is not a valid namedDest parameter.`\n );\n return;\n } else if (!Array.isArray(explicitDest)) {\n console.error(\n \"PDFHistory.push: \" +\n `\"${explicitDest}\" is not a valid explicitDest parameter.`\n );\n return;\n } else if (!this._isValidPage(pageNumber)) {\n // Allow an unset `pageNumber` if and only if the history is still empty;\n // please refer to the `this._destination.page = null;` comment above.\n if (pageNumber !== null || this._destination) {\n console.error(\n \"PDFHistory.push: \" +\n `\"${pageNumber}\" is not a valid pageNumber parameter.`\n );\n return;\n }\n }\n\n const hash = namedDest || JSON.stringify(explicitDest);\n if (!hash) {\n // The hash *should* never be undefined, but if that were to occur,\n // avoid any possible issues by not updating the browser history.\n return;\n }\n\n let forceReplace = false;\n if (\n this._destination &&\n (isDestHashesEqual(this._destination.hash, hash) ||\n isDestArraysEqual(this._destination.dest, explicitDest))\n ) {\n // When the new destination is identical to `this._destination`, and\n // its `page` is undefined, replace the current browser history entry.\n // NOTE: This can only occur if `this._destination` was set either:\n // - through the document hash being specified on load.\n // - through the user changing the hash of the document.\n if (this._destination.page) {\n return;\n }\n forceReplace = true;\n }\n if (this._popStateInProgress && !forceReplace) {\n return;\n }\n\n this._pushOrReplaceState(\n {\n dest: explicitDest,\n hash,\n page: pageNumber,\n rotation: this.linkService.rotation,\n },\n forceReplace\n );\n\n if (!this._popStateInProgress) {\n // Prevent the browser history from updating while the new destination is\n // being scrolled into view, to avoid potentially inconsistent state.\n this._popStateInProgress = true;\n // We defer the resetting of `this._popStateInProgress`, to account for\n // e.g. zooming occurring when the new destination is being navigated to.\n Promise.resolve().then(() => {\n this._popStateInProgress = false;\n });\n }\n }\n\n /**\n * Push a page to the browser history; generally the `push` method should be\n * used instead.\n * @param {number} pageNumber\n */\n pushPage(pageNumber) {\n if (!this._initialized) {\n return;\n }\n if (!this._isValidPage(pageNumber)) {\n console.error(\n `PDFHistory.pushPage: \"${pageNumber}\" is not a valid page number.`\n );\n return;\n }\n\n if (this._destination?.page === pageNumber) {\n // When the new page is identical to the one in `this._destination`, we\n // don't want to add a potential duplicate entry in the browser history.\n return;\n }\n if (this._popStateInProgress) {\n return;\n }\n\n this._pushOrReplaceState({\n // Simulate an internal destination, for `this._tryPushCurrentPosition`:\n dest: null,\n hash: `page=${pageNumber}`,\n page: pageNumber,\n rotation: this.linkService.rotation,\n });\n\n if (!this._popStateInProgress) {\n // Prevent the browser history from updating while the new page is\n // being scrolled into view, to avoid potentially inconsistent state.\n this._popStateInProgress = true;\n // We defer the resetting of `this._popStateInProgress`, to account for\n // e.g. zooming occurring when the new page is being navigated to.\n Promise.resolve().then(() => {\n this._popStateInProgress = false;\n });\n }\n }\n\n /**\n * Push the current position to the browser history.\n */\n pushCurrentPosition() {\n if (!this._initialized || this._popStateInProgress) {\n return;\n }\n this._tryPushCurrentPosition();\n }\n\n /**\n * Go back one step in the browser history.\n * NOTE: Avoids navigating away from the document, useful for \"named actions\".\n */\n back() {\n if (!this._initialized || this._popStateInProgress) {\n return;\n }\n const state = window.history.state;\n if (this._isValidState(state) && state.uid > 0) {\n window.history.back();\n }\n }\n\n /**\n * Go forward one step in the browser history.\n * NOTE: Avoids navigating away from the document, useful for \"named actions\".\n */\n forward() {\n if (!this._initialized || this._popStateInProgress) {\n return;\n }\n const state = window.history.state;\n if (this._isValidState(state) && state.uid < this._maxUid) {\n window.history.forward();\n }\n }\n\n /**\n * @type {boolean} Indicating if the user is currently moving through the\n * browser history, useful e.g. for skipping the next 'hashchange' event.\n */\n get popStateInProgress() {\n return (\n this._initialized &&\n (this._popStateInProgress || this._blockHashChange > 0)\n );\n }\n\n get initialBookmark() {\n return this._initialized ? this._initialBookmark : null;\n }\n\n get initialRotation() {\n return this._initialized ? this._initialRotation : null;\n }\n\n /**\n * @private\n */\n _pushOrReplaceState(destination, forceReplace = false) {\n const shouldReplace = forceReplace || !this._destination;\n const newState = {\n fingerprint: this._fingerprint,\n uid: shouldReplace ? this._uid : this._uid + 1,\n destination,\n };\n\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"CHROME\") &&\n window.history.state?.chromecomState\n ) {\n // history.state.chromecomState is managed by chromecom.js.\n newState.chromecomState = window.history.state.chromecomState;\n }\n this._updateInternalState(destination, newState.uid);\n\n let newUrl;\n if (this._updateUrl && destination?.hash) {\n const baseUrl = document.location.href.split(\"#\")[0];\n // Prevent errors in Firefox.\n if (!baseUrl.startsWith(\"file://\")) {\n newUrl = `${baseUrl}#${destination.hash}`;\n }\n }\n if (shouldReplace) {\n window.history.replaceState(newState, \"\", newUrl);\n } else {\n window.history.pushState(newState, \"\", newUrl);\n }\n\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"CHROME\") &&\n top === window\n ) {\n // eslint-disable-next-line no-undef\n chrome.runtime.sendMessage(\"showPageAction\");\n }\n }\n\n /**\n * @private\n */\n _tryPushCurrentPosition(temporary = false) {\n if (!this._position) {\n return;\n }\n let position = this._position;\n if (temporary) {\n position = Object.assign(Object.create(null), this._position);\n position.temporary = true;\n }\n\n if (!this._destination) {\n this._pushOrReplaceState(position);\n return;\n }\n if (this._destination.temporary) {\n // Always replace a previous *temporary* position.\n this._pushOrReplaceState(position, /* forceReplace = */ true);\n return;\n }\n if (this._destination.hash === position.hash) {\n return; // The current document position has not changed.\n }\n if (\n !this._destination.page &&\n (POSITION_UPDATED_THRESHOLD <= 0 ||\n this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)\n ) {\n // `this._destination` was set through the user changing the hash of\n // the document. Do not add `this._position` to the browser history,\n // to avoid \"flooding\" it with lots of (nearly) identical entries,\n // since we cannot ensure that the document position has changed.\n return;\n }\n\n let forceReplace = false;\n if (\n this._destination.page >= position.first &&\n this._destination.page <= position.page\n ) {\n // When the `page` of `this._destination` is still visible, do not\n // update the browsing history when `this._destination` either:\n // - contains an internal destination, since in this case we\n // cannot ensure that the document position has actually changed.\n // - was set through the user changing the hash of the document.\n if (this._destination.dest !== undefined || !this._destination.first) {\n return;\n }\n // To avoid \"flooding\" the browser history, replace the current entry.\n forceReplace = true;\n }\n this._pushOrReplaceState(position, forceReplace);\n }\n\n /**\n * @private\n */\n _isValidPage(val) {\n return (\n Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount\n );\n }\n\n /**\n * @private\n */\n _isValidState(state, checkReload = false) {\n if (!state) {\n return false;\n }\n if (state.fingerprint !== this._fingerprint) {\n if (checkReload) {\n // Potentially accept the history entry, even if the fingerprints don't\n // match, when the viewer was reloaded (see issue 6847).\n if (\n typeof state.fingerprint !== \"string\" ||\n state.fingerprint.length !== this._fingerprint.length\n ) {\n return false;\n }\n const [perfEntry] = performance.getEntriesByType(\"navigation\");\n if (perfEntry?.type !== \"reload\") {\n return false;\n }\n } else {\n // This should only occur in viewers with support for opening more than\n // one PDF document, e.g. the GENERIC viewer.\n return false;\n }\n }\n if (!Number.isInteger(state.uid) || state.uid < 0) {\n return false;\n }\n if (state.destination === null || typeof state.destination !== \"object\") {\n return false;\n }\n return true;\n }\n\n /**\n * @private\n */\n _updateInternalState(destination, uid, removeTemporary = false) {\n if (this._updateViewareaTimeout) {\n // When updating `this._destination`, make sure that we always wait for\n // the next 'updateviewarea' event before (potentially) attempting to\n // push the current position to the browser history.\n clearTimeout(this._updateViewareaTimeout);\n this._updateViewareaTimeout = null;\n }\n if (removeTemporary && destination?.temporary) {\n // When the `destination` comes from the browser history,\n // we no longer treat it as a *temporary* position.\n delete destination.temporary;\n }\n this._destination = destination;\n this._uid = uid;\n this._maxUid = Math.max(this._maxUid, uid);\n // This should always be reset when `this._destination` is updated.\n this._numPositionUpdates = 0;\n }\n\n /**\n * @private\n */\n _parseCurrentHash(checkNameddest = false) {\n const hash = unescape(getCurrentHash()).substring(1);\n const params = parseQueryString(hash);\n\n const nameddest = params.get(\"nameddest\") || \"\";\n let page = params.get(\"page\") | 0;\n\n if (!this._isValidPage(page) || (checkNameddest && nameddest.length > 0)) {\n page = null;\n }\n return { hash, page, rotation: this.linkService.rotation };\n }\n\n /**\n * @private\n */\n _updateViewarea({ location }) {\n if (this._updateViewareaTimeout) {\n clearTimeout(this._updateViewareaTimeout);\n this._updateViewareaTimeout = null;\n }\n\n this._position = {\n hash: this._isViewerInPresentationMode\n ? `page=${location.pageNumber}`\n : location.pdfOpenParams.substring(1),\n page: this.linkService.page,\n first: location.pageNumber,\n rotation: location.rotation,\n };\n\n if (this._popStateInProgress) {\n return;\n }\n\n if (\n POSITION_UPDATED_THRESHOLD > 0 &&\n this._isPagesLoaded &&\n this._destination &&\n !this._destination.page\n ) {\n // If the current destination was set through the user changing the hash\n // of the document, we will usually not try to push the current position\n // to the browser history; see `this._tryPushCurrentPosition()`.\n //\n // To prevent `this._tryPushCurrentPosition()` from effectively being\n // reduced to a no-op in this case, we will assume that the position\n // *did* in fact change if the 'updateviewarea' event was dispatched\n // more than `POSITION_UPDATED_THRESHOLD` times.\n this._numPositionUpdates++;\n }\n\n if (UPDATE_VIEWAREA_TIMEOUT > 0) {\n // When closing the browser, a 'pagehide' event will be dispatched which\n // *should* allow us to push the current position to the browser history.\n // In practice, it seems that the event is arriving too late in order for\n // the session history to be successfully updated.\n // (For additional details, please refer to the discussion in\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1153393.)\n //\n // To workaround this we attempt to *temporarily* add the current position\n // to the browser history only when the viewer is *idle*,\n // i.e. when scrolling and/or zooming does not occur.\n //\n // PLEASE NOTE: It's absolutely imperative that the browser history is\n // *not* updated too often, since that would render the viewer more or\n // less unusable. Hence the use of a timeout to delay the update until\n // the viewer has been idle for `UPDATE_VIEWAREA_TIMEOUT` milliseconds.\n this._updateViewareaTimeout = setTimeout(() => {\n if (!this._popStateInProgress) {\n this._tryPushCurrentPosition(/* temporary = */ true);\n }\n this._updateViewareaTimeout = null;\n }, UPDATE_VIEWAREA_TIMEOUT);\n }\n }\n\n /**\n * @private\n */\n _popState({ state }) {\n const newHash = getCurrentHash(),\n hashChanged = this._currentHash !== newHash;\n this._currentHash = newHash;\n\n if (\n (typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"CHROME\") &&\n state?.chromecomState &&\n !this._isValidState(state)) ||\n !state\n ) {\n // This case corresponds to the user changing the hash of the document.\n this._uid++;\n\n const { hash, page, rotation } = this._parseCurrentHash();\n this._pushOrReplaceState(\n { hash, page, rotation },\n /* forceReplace = */ true\n );\n return;\n }\n if (!this._isValidState(state)) {\n // This should only occur in viewers with support for opening more than\n // one PDF document, e.g. the GENERIC viewer.\n return;\n }\n\n // Prevent the browser history from updating until the new destination,\n // as stored in the browser history, has been scrolled into view.\n this._popStateInProgress = true;\n\n if (hashChanged) {\n // When the hash changed, implying that the 'popstate' event will be\n // followed by a 'hashchange' event, then we do *not* want to update the\n // browser history when handling the 'hashchange' event (in web/app.js)\n // since that would *overwrite* the new destination navigated to below.\n //\n // To avoid accidentally disabling all future user-initiated hash changes,\n // if there's e.g. another 'hashchange' listener that stops the event\n // propagation, we make sure to always force-reset `this._blockHashChange`\n // after `HASH_CHANGE_TIMEOUT` milliseconds have passed.\n this._blockHashChange++;\n waitOnEventOrTimeout({\n target: window,\n name: \"hashchange\",\n delay: HASH_CHANGE_TIMEOUT,\n }).then(() => {\n this._blockHashChange--;\n });\n }\n\n // Navigate to the new destination.\n const destination = state.destination;\n this._updateInternalState(\n destination,\n state.uid,\n /* removeTemporary = */ true\n );\n\n if (isValidRotation(destination.rotation)) {\n this.linkService.rotation = destination.rotation;\n }\n if (destination.dest) {\n this.linkService.goToDestination(destination.dest);\n } else if (destination.hash) {\n this.linkService.setHash(destination.hash);\n } else if (destination.page) {\n // Fallback case; shouldn't be necessary, but better safe than sorry.\n this.linkService.page = destination.page;\n }\n\n // Since `PDFLinkService.goToDestination` is asynchronous, we thus defer the\n // resetting of `this._popStateInProgress` slightly.\n Promise.resolve().then(() => {\n this._popStateInProgress = false;\n });\n }\n\n /**\n * @private\n */\n _pageHide() {\n // Attempt to push the `this._position` into the browser history when\n // navigating away from the document. This is *only* done if the history\n // is empty/temporary, since otherwise an existing browser history entry\n // will end up being overwritten (given that new entries cannot be pushed\n // into the browser history when the 'unload' event has already fired).\n if (!this._destination || this._destination.temporary) {\n this._tryPushCurrentPosition();\n }\n }\n\n /**\n * @private\n */\n _bindEvents() {\n if (this._boundEvents) {\n return; // The event listeners were already added.\n }\n this._boundEvents = {\n updateViewarea: this._updateViewarea.bind(this),\n popState: this._popState.bind(this),\n pageHide: this._pageHide.bind(this),\n };\n\n this.eventBus._on(\"updateviewarea\", this._boundEvents.updateViewarea);\n window.addEventListener(\"popstate\", this._boundEvents.popState);\n window.addEventListener(\"pagehide\", this._boundEvents.pageHide);\n }\n\n /**\n * @private\n */\n _unbindEvents() {\n if (!this._boundEvents) {\n return; // The event listeners were already removed.\n }\n this.eventBus._off(\"updateviewarea\", this._boundEvents.updateViewarea);\n window.removeEventListener(\"popstate\", this._boundEvents.popState);\n window.removeEventListener(\"pagehide\", this._boundEvents.pageHide);\n\n this._boundEvents = null;\n }\n}\n\nfunction isDestHashesEqual(destHash, pushHash) {\n if (typeof destHash !== \"string\" || typeof pushHash !== \"string\") {\n return false;\n }\n if (destHash === pushHash) {\n return true;\n }\n const nameddest = parseQueryString(destHash).get(\"nameddest\");\n if (nameddest === pushHash) {\n return true;\n }\n return false;\n}\n\nfunction isDestArraysEqual(firstDest, secondDest) {\n function isEntryEqual(first, second) {\n if (typeof first !== typeof second) {\n return false;\n }\n if (Array.isArray(first) || Array.isArray(second)) {\n return false;\n }\n if (first !== null && typeof first === \"object\" && second !== null) {\n if (Object.keys(first).length !== Object.keys(second).length) {\n return false;\n }\n for (const key in first) {\n if (!isEntryEqual(first[key], second[key])) {\n return false;\n }\n }\n return true;\n }\n return first === second || (Number.isNaN(first) && Number.isNaN(second));\n }\n\n if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {\n return false;\n }\n if (firstDest.length !== secondDest.length) {\n return false;\n }\n for (let i = 0, ii = firstDest.length; i < ii; i++) {\n if (!isEntryEqual(firstDest[i], secondDest[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport { isDestArraysEqual, isDestHashesEqual, PDFHistory };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseTreeViewer } from \"./base_tree_viewer.js\";\n\n/**\n * @typedef {Object} PDFLayerViewerOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IL10n} l10n - Localization service.\n */\n\n/**\n * @typedef {Object} PDFLayerViewerRenderParameters\n * @property {OptionalContentConfig|null} optionalContentConfig - An\n * {OptionalContentConfig} instance.\n * @property {PDFDocument} pdfDocument - A {PDFDocument} instance.\n */\n\nclass PDFLayerViewer extends BaseTreeViewer {\n constructor(options) {\n super(options);\n this.l10n = options.l10n;\n\n this.eventBus._on(\"resetlayers\", this._resetLayers.bind(this));\n this.eventBus._on(\"togglelayerstree\", this._toggleAllTreeItems.bind(this));\n }\n\n reset() {\n super.reset();\n this._optionalContentConfig = null;\n }\n\n /**\n * @private\n */\n _dispatchEvent(layersCount) {\n this.eventBus.dispatch(\"layersloaded\", {\n source: this,\n layersCount,\n });\n }\n\n /**\n * @private\n */\n _bindLink(element, { groupId, input }) {\n const setVisibility = () => {\n this._optionalContentConfig.setVisibility(groupId, input.checked);\n\n this.eventBus.dispatch(\"optionalcontentconfig\", {\n source: this,\n promise: Promise.resolve(this._optionalContentConfig),\n });\n };\n\n element.onclick = evt => {\n if (evt.target === input) {\n setVisibility();\n return true;\n } else if (evt.target !== element) {\n return true; // The target is the \"label\", which is handled above.\n }\n input.checked = !input.checked;\n setVisibility();\n return false;\n };\n }\n\n /**\n * @private\n */\n async _setNestedName(element, { name = null }) {\n if (typeof name === \"string\") {\n element.textContent = this._normalizeTextContent(name);\n return;\n }\n element.textContent = await this.l10n.get(\"additional_layers\");\n element.style.fontStyle = \"italic\";\n }\n\n /**\n * @private\n */\n _addToggleButton(div, { name = null }) {\n super._addToggleButton(div, /* hidden = */ name === null);\n }\n\n /**\n * @private\n */\n _toggleAllTreeItems() {\n if (!this._optionalContentConfig) {\n return;\n }\n super._toggleAllTreeItems();\n }\n\n /**\n * @param {PDFLayerViewerRenderParameters} params\n */\n render({ optionalContentConfig, pdfDocument }) {\n if (this._optionalContentConfig) {\n this.reset();\n }\n this._optionalContentConfig = optionalContentConfig || null;\n this._pdfDocument = pdfDocument || null;\n\n const groups = optionalContentConfig?.getOrder();\n if (!groups) {\n this._dispatchEvent(/* layersCount = */ 0);\n return;\n }\n\n const fragment = document.createDocumentFragment(),\n queue = [{ parent: fragment, groups }];\n let layersCount = 0,\n hasAnyNesting = false;\n while (queue.length > 0) {\n const levelData = queue.shift();\n for (const groupId of levelData.groups) {\n const div = document.createElement(\"div\");\n div.className = \"treeItem\";\n\n const element = document.createElement(\"a\");\n div.appendChild(element);\n\n if (typeof groupId === \"object\") {\n hasAnyNesting = true;\n this._addToggleButton(div, groupId);\n this._setNestedName(element, groupId);\n\n const itemsDiv = document.createElement(\"div\");\n itemsDiv.className = \"treeItems\";\n div.appendChild(itemsDiv);\n\n queue.push({ parent: itemsDiv, groups: groupId.order });\n } else {\n const group = optionalContentConfig.getGroup(groupId);\n\n const input = document.createElement(\"input\");\n this._bindLink(element, { groupId, input });\n input.type = \"checkbox\";\n input.id = groupId;\n input.checked = group.visible;\n\n const label = document.createElement(\"label\");\n label.setAttribute(\"for\", groupId);\n label.textContent = this._normalizeTextContent(group.name);\n\n element.appendChild(input);\n element.appendChild(label);\n\n layersCount++;\n }\n\n levelData.parent.appendChild(div);\n }\n }\n\n this._finishRendering(fragment, layersCount, hasAnyNesting);\n }\n\n /**\n * @private\n */\n async _resetLayers() {\n if (!this._optionalContentConfig) {\n return;\n }\n // Fetch the default optional content configuration...\n const optionalContentConfig =\n await this._pdfDocument.getOptionalContentConfig();\n\n this.eventBus.dispatch(\"optionalcontentconfig\", {\n source: this,\n promise: Promise.resolve(optionalContentConfig),\n });\n\n // ... and reset the sidebarView to the default state.\n this.render({\n optionalContentConfig,\n pdfDocument: this._pdfDocument,\n });\n }\n}\n\nexport { PDFLayerViewer };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { addLinkAttributes, LinkTarget } from \"pdfjs-lib\";\nimport { parseQueryString } from \"./ui_utils.js\";\n\n/**\n * @typedef {Object} PDFLinkServiceOptions\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} [externalLinkTarget] - Specifies the `target` attribute\n * for external links. Must use one of the values from {LinkTarget}.\n * Defaults to using no target.\n * @property {string} [externalLinkRel] - Specifies the `rel` attribute for\n * external links. Defaults to stripping the referrer.\n * @property {boolean} [ignoreDestinationZoom] - Ignores the zoom argument,\n * thus preserving the current zoom level in the viewer, when navigating\n * to internal destinations. The default value is `false`.\n */\n\n/**\n * Performs navigation functions inside PDF, such as opening specified page,\n * or destination.\n * @implements {IPDFLinkService}\n */\nclass PDFLinkService {\n /**\n * @param {PDFLinkServiceOptions} options\n */\n constructor({\n eventBus,\n externalLinkTarget = null,\n externalLinkRel = null,\n ignoreDestinationZoom = false,\n } = {}) {\n this.eventBus = eventBus;\n this.externalLinkTarget = externalLinkTarget;\n this.externalLinkRel = externalLinkRel;\n this.externalLinkEnabled = true;\n this._ignoreDestinationZoom = ignoreDestinationZoom;\n\n this.baseUrl = null;\n this.pdfDocument = null;\n this.pdfViewer = null;\n this.pdfHistory = null;\n\n this._pagesRefCache = null;\n }\n\n setDocument(pdfDocument, baseUrl = null) {\n this.baseUrl = baseUrl;\n this.pdfDocument = pdfDocument;\n this._pagesRefCache = Object.create(null);\n }\n\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n\n setHistory(pdfHistory) {\n this.pdfHistory = pdfHistory;\n }\n\n /**\n * @type {number}\n */\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n }\n\n /**\n * @type {number}\n */\n get page() {\n return this.pdfViewer.currentPageNumber;\n }\n\n /**\n * @param {number} value\n */\n set page(value) {\n this.pdfViewer.currentPageNumber = value;\n }\n\n /**\n * @type {number}\n */\n get rotation() {\n return this.pdfViewer.pagesRotation;\n }\n\n /**\n * @param {number} value\n */\n set rotation(value) {\n this.pdfViewer.pagesRotation = value;\n }\n\n /**\n * @private\n */\n _goToDestinationHelper(rawDest, namedDest = null, explicitDest) {\n // Dest array looks like that: <page-ref> </XYZ|/FitXXX> <args..>\n const destRef = explicitDest[0];\n let pageNumber;\n\n if (typeof destRef === \"object\" && destRef !== null) {\n pageNumber = this._cachedPageNumber(destRef);\n\n if (!pageNumber) {\n // Fetch the page reference if it's not yet available. This could\n // only occur during loading, before all pages have been resolved.\n this.pdfDocument\n .getPageIndex(destRef)\n .then(pageIndex => {\n this.cachePageRef(pageIndex + 1, destRef);\n this._goToDestinationHelper(rawDest, namedDest, explicitDest);\n })\n .catch(() => {\n console.error(\n `PDFLinkService._goToDestinationHelper: \"${destRef}\" is not ` +\n `a valid page reference, for dest=\"${rawDest}\".`\n );\n });\n return;\n }\n } else if (Number.isInteger(destRef)) {\n pageNumber = destRef + 1;\n } else {\n console.error(\n `PDFLinkService._goToDestinationHelper: \"${destRef}\" is not ` +\n `a valid destination reference, for dest=\"${rawDest}\".`\n );\n return;\n }\n if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {\n console.error(\n `PDFLinkService._goToDestinationHelper: \"${pageNumber}\" is not ` +\n `a valid page number, for dest=\"${rawDest}\".`\n );\n return;\n }\n\n if (this.pdfHistory) {\n // Update the browser history before scrolling the new destination into\n // view, to be able to accurately capture the current document position.\n this.pdfHistory.pushCurrentPosition();\n this.pdfHistory.push({ namedDest, explicitDest, pageNumber });\n }\n\n this.pdfViewer.scrollPageIntoView({\n pageNumber,\n destArray: explicitDest,\n ignoreDestinationZoom: this._ignoreDestinationZoom,\n });\n }\n\n /**\n * This method will, when available, also update the browser history.\n *\n * @param {string|Array} dest - The named, or explicit, PDF destination.\n */\n async goToDestination(dest) {\n if (!this.pdfDocument) {\n return;\n }\n let namedDest, explicitDest;\n if (typeof dest === \"string\") {\n namedDest = dest;\n explicitDest = await this.pdfDocument.getDestination(dest);\n } else {\n namedDest = null;\n explicitDest = await dest;\n }\n if (!Array.isArray(explicitDest)) {\n console.error(\n `PDFLinkService.goToDestination: \"${explicitDest}\" is not ` +\n `a valid destination array, for dest=\"${dest}\".`\n );\n return;\n }\n this._goToDestinationHelper(dest, namedDest, explicitDest);\n }\n\n /**\n * This method will, when available, also update the browser history.\n *\n * @param {number|string} val - The page number, or page label.\n */\n goToPage(val) {\n if (!this.pdfDocument) {\n return;\n }\n const pageNumber =\n (typeof val === \"string\" && this.pdfViewer.pageLabelToPageNumber(val)) ||\n val | 0;\n if (\n !(\n Number.isInteger(pageNumber) &&\n pageNumber > 0 &&\n pageNumber <= this.pagesCount\n )\n ) {\n console.error(`PDFLinkService.goToPage: \"${val}\" is not a valid page.`);\n return;\n }\n\n if (this.pdfHistory) {\n // Update the browser history before scrolling the new page into view,\n // to be able to accurately capture the current document position.\n this.pdfHistory.pushCurrentPosition();\n this.pdfHistory.pushPage(pageNumber);\n }\n\n this.pdfViewer.scrollPageIntoView({ pageNumber });\n }\n\n /**\n * Wrapper around the `addLinkAttributes`-function in the API.\n * @param {HTMLAnchorElement} link\n * @param {string} url\n * @param {boolean} [newWindow]\n */\n addLinkAttributes(link, url, newWindow = false) {\n addLinkAttributes(link, {\n url,\n target: newWindow ? LinkTarget.BLANK : this.externalLinkTarget,\n rel: this.externalLinkRel,\n enabled: this.externalLinkEnabled,\n });\n }\n\n /**\n * @param {string|Array} dest - The PDF destination object.\n * @returns {string} The hyperlink to the PDF object.\n */\n getDestinationHash(dest) {\n if (typeof dest === \"string\") {\n if (dest.length > 0) {\n return this.getAnchorUrl(\"#\" + escape(dest));\n }\n } else if (Array.isArray(dest)) {\n const str = JSON.stringify(dest);\n if (str.length > 0) {\n return this.getAnchorUrl(\"#\" + escape(str));\n }\n }\n return this.getAnchorUrl(\"\");\n }\n\n /**\n * Prefix the full url on anchor links to make sure that links are resolved\n * relative to the current URL instead of the one defined in <base href>.\n * @param {string} anchor - The anchor hash, including the #.\n * @returns {string} The hyperlink to the PDF object.\n */\n getAnchorUrl(anchor) {\n return (this.baseUrl || \"\") + anchor;\n }\n\n /**\n * @param {string} hash\n */\n setHash(hash) {\n if (!this.pdfDocument) {\n return;\n }\n let pageNumber, dest;\n if (hash.includes(\"=\")) {\n const params = parseQueryString(hash);\n if (params.has(\"search\")) {\n this.eventBus.dispatch(\"findfromurlhash\", {\n source: this,\n query: params.get(\"search\").replace(/\"/g, \"\"),\n phraseSearch: params.get(\"phrase\") === \"true\",\n });\n }\n // borrowing syntax from \"Parameters for Opening PDF Files\"\n if (params.has(\"page\")) {\n pageNumber = params.get(\"page\") | 0 || 1;\n }\n if (params.has(\"zoom\")) {\n // Build the destination array.\n const zoomArgs = params.get(\"zoom\").split(\",\"); // scale,left,top\n const zoomArg = zoomArgs[0];\n const zoomArgNumber = parseFloat(zoomArg);\n\n if (!zoomArg.includes(\"Fit\")) {\n // If the zoomArg is a number, it has to get divided by 100. If it's\n // a string, it should stay as it is.\n dest = [\n null,\n { name: \"XYZ\" },\n zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\n zoomArgs.length > 2 ? zoomArgs[2] | 0 : null,\n zoomArgNumber ? zoomArgNumber / 100 : zoomArg,\n ];\n } else {\n if (zoomArg === \"Fit\" || zoomArg === \"FitB\") {\n dest = [null, { name: zoomArg }];\n } else if (\n zoomArg === \"FitH\" ||\n zoomArg === \"FitBH\" ||\n zoomArg === \"FitV\" ||\n zoomArg === \"FitBV\"\n ) {\n dest = [\n null,\n { name: zoomArg },\n zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\n ];\n } else if (zoomArg === \"FitR\") {\n if (zoomArgs.length !== 5) {\n console.error(\n 'PDFLinkService.setHash: Not enough parameters for \"FitR\".'\n );\n } else {\n dest = [\n null,\n { name: zoomArg },\n zoomArgs[1] | 0,\n zoomArgs[2] | 0,\n zoomArgs[3] | 0,\n zoomArgs[4] | 0,\n ];\n }\n } else {\n console.error(\n `PDFLinkService.setHash: \"${zoomArg}\" is not ` +\n \"a valid zoom value.\"\n );\n }\n }\n }\n if (dest) {\n this.pdfViewer.scrollPageIntoView({\n pageNumber: pageNumber || this.page,\n destArray: dest,\n allowNegativeOffset: true,\n });\n } else if (pageNumber) {\n this.page = pageNumber; // simple page\n }\n if (params.has(\"pagemode\")) {\n this.eventBus.dispatch(\"pagemode\", {\n source: this,\n mode: params.get(\"pagemode\"),\n });\n }\n // Ensure that this parameter is *always* handled last, in order to\n // guarantee that it won't be overridden (e.g. by the \"page\" parameter).\n if (params.has(\"nameddest\")) {\n this.goToDestination(params.get(\"nameddest\"));\n }\n } else {\n // Named (or explicit) destination.\n dest = unescape(hash);\n try {\n dest = JSON.parse(dest);\n\n if (!Array.isArray(dest)) {\n // Avoid incorrectly rejecting a valid named destination, such as\n // e.g. \"4.3\" or \"true\", because `JSON.parse` converted its type.\n dest = dest.toString();\n }\n } catch (ex) {}\n\n if (typeof dest === \"string\" || isValidExplicitDestination(dest)) {\n this.goToDestination(dest);\n return;\n }\n console.error(\n `PDFLinkService.setHash: \"${unescape(hash)}\" is not ` +\n \"a valid destination.\"\n );\n }\n }\n\n /**\n * @param {string} action\n */\n executeNamedAction(action) {\n // See PDF reference, table 8.45 - Named action\n switch (action) {\n case \"GoBack\":\n this.pdfHistory?.back();\n break;\n\n case \"GoForward\":\n this.pdfHistory?.forward();\n break;\n\n case \"NextPage\":\n this.pdfViewer.nextPage();\n break;\n\n case \"PrevPage\":\n this.pdfViewer.previousPage();\n break;\n\n case \"LastPage\":\n this.page = this.pagesCount;\n break;\n\n case \"FirstPage\":\n this.page = 1;\n break;\n\n default:\n break; // No action according to spec\n }\n\n this.eventBus.dispatch(\"namedaction\", {\n source: this,\n action,\n });\n }\n\n /**\n * @param {number} pageNum - page number.\n * @param {Object} pageRef - reference to the page.\n */\n cachePageRef(pageNum, pageRef) {\n if (!pageRef) {\n return;\n }\n const refStr =\n pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;\n this._pagesRefCache[refStr] = pageNum;\n }\n\n /**\n * @private\n */\n _cachedPageNumber(pageRef) {\n if (!pageRef) {\n return null;\n }\n const refStr =\n pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;\n return this._pagesRefCache?.[refStr] || null;\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageVisible(pageNumber) {\n return this.pdfViewer.isPageVisible(pageNumber);\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageCached(pageNumber) {\n return this.pdfViewer.isPageCached(pageNumber);\n }\n}\n\nfunction isValidExplicitDestination(dest) {\n if (!Array.isArray(dest)) {\n return false;\n }\n const destLength = dest.length;\n if (destLength < 2) {\n return false;\n }\n const page = dest[0];\n if (\n !(\n typeof page === \"object\" &&\n Number.isInteger(page.num) &&\n Number.isInteger(page.gen)\n ) &&\n !(Number.isInteger(page) && page >= 0)\n ) {\n return false;\n }\n const zoom = dest[1];\n if (!(typeof zoom === \"object\" && typeof zoom.name === \"string\")) {\n return false;\n }\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (destLength !== 5) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return destLength === 2;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (destLength !== 3) {\n return false;\n }\n break;\n case \"FitR\":\n if (destLength !== 6) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (let i = 2; i < destLength; i++) {\n const param = dest[i];\n if (!(typeof param === \"number\" || (allowNull && param === null))) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * @implements {IPDFLinkService}\n */\nclass SimpleLinkService {\n constructor() {\n this.externalLinkEnabled = true;\n }\n\n /**\n * @type {number}\n */\n get pagesCount() {\n return 0;\n }\n\n /**\n * @type {number}\n */\n get page() {\n return 0;\n }\n\n /**\n * @param {number} value\n */\n set page(value) {}\n\n /**\n * @type {number}\n */\n get rotation() {\n return 0;\n }\n\n /**\n * @param {number} value\n */\n set rotation(value) {}\n\n /**\n * @param {string|Array} dest - The named, or explicit, PDF destination.\n */\n async goToDestination(dest) {}\n\n /**\n * @param {number|string} val - The page number, or page label.\n */\n goToPage(val) {}\n\n /**\n * @param {HTMLAnchorElement} link\n * @param {string} url\n * @param {boolean} [newWindow]\n */\n addLinkAttributes(link, url, newWindow = false) {\n addLinkAttributes(link, { url, enabled: this.externalLinkEnabled });\n }\n\n /**\n * @param dest - The PDF destination object.\n * @returns {string} The hyperlink to the PDF object.\n */\n getDestinationHash(dest) {\n return \"#\";\n }\n\n /**\n * @param hash - The PDF parameters/hash.\n * @returns {string} The hyperlink to the PDF object.\n */\n getAnchorUrl(hash) {\n return \"#\";\n }\n\n /**\n * @param {string} hash\n */\n setHash(hash) {}\n\n /**\n * @param {string} action\n */\n executeNamedAction(action) {}\n\n /**\n * @param {number} pageNum - page number.\n * @param {Object} pageRef - reference to the page.\n */\n cachePageRef(pageNum, pageRef) {}\n\n /**\n * @param {number} pageNumber\n */\n isPageVisible(pageNumber) {\n return true;\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageCached(pageNumber) {\n return true;\n }\n}\n\nexport { PDFLinkService, SimpleLinkService };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseTreeViewer } from \"./base_tree_viewer.js\";\nimport { createPromiseCapability } from \"pdfjs-lib\";\nimport { SidebarView } from \"./ui_utils.js\";\n\n/**\n * @typedef {Object} PDFOutlineViewerOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {EventBus} eventBus - The application event bus.\n */\n\n/**\n * @typedef {Object} PDFOutlineViewerRenderParameters\n * @property {Array|null} outline - An array of outline objects.\n * @property {PDFDocument} pdfDocument - A {PDFDocument} instance.\n */\n\nclass PDFOutlineViewer extends BaseTreeViewer {\n /**\n * @param {PDFOutlineViewerOptions} options\n */\n constructor(options) {\n super(options);\n this.linkService = options.linkService;\n\n this.eventBus._on(\"toggleoutlinetree\", this._toggleAllTreeItems.bind(this));\n this.eventBus._on(\n \"currentoutlineitem\",\n this._currentOutlineItem.bind(this)\n );\n\n this.eventBus._on(\"pagechanging\", evt => {\n this._currentPageNumber = evt.pageNumber;\n });\n this.eventBus._on(\"pagesloaded\", evt => {\n this._isPagesLoaded = !!evt.pagesCount;\n\n // If the capability is still pending, see the `_dispatchEvent`-method,\n // we know that the `currentOutlineItem`-button can be enabled here.\n if (\n this._currentOutlineItemCapability &&\n !this._currentOutlineItemCapability.settled\n ) {\n this._currentOutlineItemCapability.resolve(\n /* enabled = */ this._isPagesLoaded\n );\n }\n });\n this.eventBus._on(\"sidebarviewchanged\", evt => {\n this._sidebarView = evt.view;\n });\n }\n\n reset() {\n super.reset();\n this._outline = null;\n\n this._pageNumberToDestHashCapability = null;\n this._currentPageNumber = 1;\n this._isPagesLoaded = null;\n\n if (\n this._currentOutlineItemCapability &&\n !this._currentOutlineItemCapability.settled\n ) {\n this._currentOutlineItemCapability.resolve(/* enabled = */ false);\n }\n this._currentOutlineItemCapability = null;\n }\n\n /**\n * @private\n */\n _dispatchEvent(outlineCount) {\n this._currentOutlineItemCapability = createPromiseCapability();\n if (\n outlineCount === 0 ||\n this._pdfDocument?.loadingParams.disableAutoFetch\n ) {\n this._currentOutlineItemCapability.resolve(/* enabled = */ false);\n } else if (this._isPagesLoaded !== null) {\n this._currentOutlineItemCapability.resolve(\n /* enabled = */ this._isPagesLoaded\n );\n }\n\n this.eventBus.dispatch(\"outlineloaded\", {\n source: this,\n outlineCount,\n currentOutlineItemPromise: this._currentOutlineItemCapability.promise,\n });\n }\n\n /**\n * @private\n */\n _bindLink(element, { url, newWindow, dest }) {\n const { linkService } = this;\n\n if (url) {\n linkService.addLinkAttributes(element, url, newWindow);\n return;\n }\n\n element.href = linkService.getDestinationHash(dest);\n element.onclick = evt => {\n this._updateCurrentTreeItem(evt.target.parentNode);\n\n if (dest) {\n linkService.goToDestination(dest);\n }\n return false;\n };\n }\n\n /**\n * @private\n */\n _setStyles(element, { bold, italic }) {\n if (bold) {\n element.style.fontWeight = \"bold\";\n }\n if (italic) {\n element.style.fontStyle = \"italic\";\n }\n }\n\n /**\n * @private\n */\n _addToggleButton(div, { count, items }) {\n let hidden = false;\n if (count < 0) {\n let totalCount = items.length;\n if (totalCount > 0) {\n const queue = [...items];\n while (queue.length > 0) {\n const { count: nestedCount, items: nestedItems } = queue.shift();\n if (nestedCount > 0 && nestedItems.length > 0) {\n totalCount += nestedItems.length;\n queue.push(...nestedItems);\n }\n }\n }\n if (Math.abs(count) === totalCount) {\n hidden = true;\n }\n }\n super._addToggleButton(div, hidden);\n }\n\n /**\n * @private\n */\n _toggleAllTreeItems() {\n if (!this._outline) {\n return;\n }\n super._toggleAllTreeItems();\n }\n\n /**\n * @param {PDFOutlineViewerRenderParameters} params\n */\n render({ outline, pdfDocument }) {\n if (this._outline) {\n this.reset();\n }\n this._outline = outline || null;\n this._pdfDocument = pdfDocument || null;\n\n if (!outline) {\n this._dispatchEvent(/* outlineCount = */ 0);\n return;\n }\n\n const fragment = document.createDocumentFragment();\n const queue = [{ parent: fragment, items: outline }];\n let outlineCount = 0,\n hasAnyNesting = false;\n while (queue.length > 0) {\n const levelData = queue.shift();\n for (const item of levelData.items) {\n const div = document.createElement(\"div\");\n div.className = \"treeItem\";\n\n const element = document.createElement(\"a\");\n this._bindLink(element, item);\n this._setStyles(element, item);\n element.textContent = this._normalizeTextContent(item.title);\n\n div.appendChild(element);\n\n if (item.items.length > 0) {\n hasAnyNesting = true;\n this._addToggleButton(div, item);\n\n const itemsDiv = document.createElement(\"div\");\n itemsDiv.className = \"treeItems\";\n div.appendChild(itemsDiv);\n\n queue.push({ parent: itemsDiv, items: item.items });\n }\n\n levelData.parent.appendChild(div);\n outlineCount++;\n }\n }\n\n this._finishRendering(fragment, outlineCount, hasAnyNesting);\n }\n\n /**\n * Find/highlight the current outline item, corresponding to the active page.\n * @private\n */\n async _currentOutlineItem() {\n if (!this._isPagesLoaded) {\n throw new Error(\"_currentOutlineItem: All pages have not been loaded.\");\n }\n if (!this._outline || !this._pdfDocument) {\n return;\n }\n\n const pageNumberToDestHash = await this._getPageNumberToDestHash(\n this._pdfDocument\n );\n if (!pageNumberToDestHash) {\n return;\n }\n this._updateCurrentTreeItem(/* treeItem = */ null);\n\n if (this._sidebarView !== SidebarView.OUTLINE) {\n return; // The outline view is no longer visible, hence do nothing.\n }\n // When there is no destination on the current page, always check the\n // previous ones in (reverse) order.\n for (let i = this._currentPageNumber; i > 0; i--) {\n const destHash = pageNumberToDestHash.get(i);\n if (!destHash) {\n continue;\n }\n const linkElement = this.container.querySelector(`a[href=\"${destHash}\"]`);\n if (!linkElement) {\n continue;\n }\n this._scrollToCurrentTreeItem(linkElement.parentNode);\n break;\n }\n }\n\n /**\n * To (significantly) simplify the overall implementation, we will only\n * consider *one* destination per page when finding/highlighting the current\n * outline item (similar to e.g. Adobe Reader); more specifically, we choose\n * the *first* outline item at the *lowest* level of the outline tree.\n * @private\n */\n async _getPageNumberToDestHash(pdfDocument) {\n if (this._pageNumberToDestHashCapability) {\n return this._pageNumberToDestHashCapability.promise;\n }\n this._pageNumberToDestHashCapability = createPromiseCapability();\n\n const pageNumberToDestHash = new Map(),\n pageNumberNesting = new Map();\n const queue = [{ nesting: 0, items: this._outline }];\n while (queue.length > 0) {\n const levelData = queue.shift(),\n currentNesting = levelData.nesting;\n for (const { dest, items } of levelData.items) {\n let explicitDest, pageNumber;\n if (typeof dest === \"string\") {\n explicitDest = await pdfDocument.getDestination(dest);\n\n if (pdfDocument !== this._pdfDocument) {\n return null; // The document was closed while the data resolved.\n }\n } else {\n explicitDest = dest;\n }\n if (Array.isArray(explicitDest)) {\n const [destRef] = explicitDest;\n\n if (typeof destRef === \"object\" && destRef !== null) {\n pageNumber = this.linkService._cachedPageNumber(destRef);\n\n if (!pageNumber) {\n try {\n pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1;\n\n if (pdfDocument !== this._pdfDocument) {\n return null; // The document was closed while the data resolved.\n }\n this.linkService.cachePageRef(pageNumber, destRef);\n } catch (ex) {\n // Invalid page reference, ignore it and continue parsing.\n }\n }\n } else if (Number.isInteger(destRef)) {\n pageNumber = destRef + 1;\n }\n\n if (\n Number.isInteger(pageNumber) &&\n (!pageNumberToDestHash.has(pageNumber) ||\n currentNesting > pageNumberNesting.get(pageNumber))\n ) {\n const destHash = this.linkService.getDestinationHash(dest);\n pageNumberToDestHash.set(pageNumber, destHash);\n pageNumberNesting.set(pageNumber, currentNesting);\n }\n }\n\n if (items.length > 0) {\n queue.push({ nesting: currentNesting + 1, items });\n }\n }\n }\n\n this._pageNumberToDestHashCapability.resolve(\n pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null\n );\n return this._pageNumberToDestHashCapability.promise;\n }\n}\n\nexport { PDFOutlineViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n normalizeWheelEventDelta,\n PresentationModeState,\n ScrollMode,\n SpreadMode,\n} from \"./ui_utils.js\";\n\nconst DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500; // in ms\nconst DELAY_BEFORE_HIDING_CONTROLS = 3000; // in ms\nconst ACTIVE_SELECTOR = \"pdfPresentationMode\";\nconst CONTROLS_SELECTOR = \"pdfPresentationModeControls\";\nconst MOUSE_SCROLL_COOLDOWN_TIME = 50; // in ms\nconst PAGE_SWITCH_THRESHOLD = 0.1;\n\n// Number of CSS pixels for a movement to count as a swipe.\nconst SWIPE_MIN_DISTANCE_THRESHOLD = 50;\n\n// Swipe angle deviation from the x or y axis before it is not\n// considered a swipe in that direction any more.\nconst SWIPE_ANGLE_THRESHOLD = Math.PI / 6;\n\n/**\n * @typedef {Object} PDFPresentationModeOptions\n * @property {HTMLDivElement} container - The container for the viewer element.\n * @property {PDFViewer} pdfViewer - The document viewer.\n * @property {EventBus} eventBus - The application event bus.\n */\n\nclass PDFPresentationMode {\n /**\n * @param {PDFPresentationModeOptions} options\n */\n constructor({ container, pdfViewer, eventBus }) {\n this.container = container;\n this.pdfViewer = pdfViewer;\n this.eventBus = eventBus;\n\n this.active = false;\n this.args = null;\n this.contextMenuOpen = false;\n this.mouseScrollTimeStamp = 0;\n this.mouseScrollDelta = 0;\n this.touchSwipeState = null;\n }\n\n /**\n * Request the browser to enter fullscreen mode.\n * @returns {boolean} Indicating if the request was successful.\n */\n request() {\n if (this.switchInProgress || this.active || !this.pdfViewer.pagesCount) {\n return false;\n }\n this._addFullscreenChangeListeners();\n this._setSwitchInProgress();\n this._notifyStateChange();\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n if (this.container.requestFullscreen) {\n this.container.requestFullscreen();\n } else {\n return false;\n }\n } else {\n if (this.container.requestFullscreen) {\n this.container.requestFullscreen();\n } else if (this.container.mozRequestFullScreen) {\n this.container.mozRequestFullScreen();\n } else if (this.container.webkitRequestFullscreen) {\n this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n } else {\n return false;\n }\n }\n\n this.args = {\n pageNumber: this.pdfViewer.currentPageNumber,\n scaleValue: this.pdfViewer.currentScaleValue,\n scrollMode: this.pdfViewer.scrollMode,\n spreadMode: this.pdfViewer.spreadMode,\n };\n\n return true;\n }\n\n /**\n * @private\n */\n _mouseWheel(evt) {\n if (!this.active) {\n return;\n }\n\n evt.preventDefault();\n\n const delta = normalizeWheelEventDelta(evt);\n const currentTime = Date.now();\n const storedTime = this.mouseScrollTimeStamp;\n\n // If we've already switched page, avoid accidentally switching again.\n if (\n currentTime > storedTime &&\n currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME\n ) {\n return;\n }\n // If the scroll direction changed, reset the accumulated scroll delta.\n if (\n (this.mouseScrollDelta > 0 && delta < 0) ||\n (this.mouseScrollDelta < 0 && delta > 0)\n ) {\n this._resetMouseScrollState();\n }\n this.mouseScrollDelta += delta;\n\n if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {\n const totalDelta = this.mouseScrollDelta;\n this._resetMouseScrollState();\n const success =\n totalDelta > 0\n ? this.pdfViewer.previousPage()\n : this.pdfViewer.nextPage();\n if (success) {\n this.mouseScrollTimeStamp = currentTime;\n }\n }\n }\n\n get isFullscreen() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return !!document.fullscreenElement;\n }\n return !!(\n document.fullscreenElement ||\n document.mozFullScreen ||\n document.webkitIsFullScreen\n );\n }\n\n /**\n * @private\n */\n _notifyStateChange() {\n let state = PresentationModeState.NORMAL;\n if (this.switchInProgress) {\n state = PresentationModeState.CHANGING;\n } else if (this.active) {\n state = PresentationModeState.FULLSCREEN;\n }\n this.eventBus.dispatch(\"presentationmodechanged\", {\n source: this,\n state,\n });\n }\n\n /**\n * Used to initialize a timeout when requesting Presentation Mode,\n * i.e. when the browser is requested to enter fullscreen mode.\n * This timeout is used to prevent the current page from being scrolled\n * partially, or completely, out of view when entering Presentation Mode.\n * NOTE: This issue seems limited to certain zoom levels (e.g. page-width).\n *\n * @private\n */\n _setSwitchInProgress() {\n if (this.switchInProgress) {\n clearTimeout(this.switchInProgress);\n }\n this.switchInProgress = setTimeout(() => {\n this._removeFullscreenChangeListeners();\n delete this.switchInProgress;\n this._notifyStateChange();\n }, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS);\n }\n\n /**\n * @private\n */\n _resetSwitchInProgress() {\n if (this.switchInProgress) {\n clearTimeout(this.switchInProgress);\n delete this.switchInProgress;\n }\n }\n\n /**\n * @private\n */\n _enter() {\n this.active = true;\n this._resetSwitchInProgress();\n this._notifyStateChange();\n this.container.classList.add(ACTIVE_SELECTOR);\n\n // Ensure that the correct page is scrolled into view when entering\n // Presentation Mode, by waiting until fullscreen mode in enabled.\n setTimeout(() => {\n this.pdfViewer.scrollMode = ScrollMode.PAGE;\n this.pdfViewer.spreadMode = SpreadMode.NONE;\n this.pdfViewer.currentPageNumber = this.args.pageNumber;\n this.pdfViewer.currentScaleValue = \"page-fit\";\n }, 0);\n\n this._addWindowListeners();\n this._showControls();\n this.contextMenuOpen = false;\n\n // Text selection is disabled in Presentation Mode, thus it's not possible\n // for the user to deselect text that is selected (e.g. with \"Select all\")\n // when entering Presentation Mode, hence we remove any active selection.\n window.getSelection().removeAllRanges();\n }\n\n /**\n * @private\n */\n _exit() {\n const pageNumber = this.pdfViewer.currentPageNumber;\n this.container.classList.remove(ACTIVE_SELECTOR);\n\n // Ensure that the correct page is scrolled into view when exiting\n // Presentation Mode, by waiting until fullscreen mode is disabled.\n setTimeout(() => {\n this.active = false;\n this._removeFullscreenChangeListeners();\n this._notifyStateChange();\n\n this.pdfViewer.scrollMode = this.args.scrollMode;\n this.pdfViewer.spreadMode = this.args.spreadMode;\n this.pdfViewer.currentScaleValue = this.args.scaleValue;\n this.pdfViewer.currentPageNumber = pageNumber;\n this.args = null;\n }, 0);\n\n this._removeWindowListeners();\n this._hideControls();\n this._resetMouseScrollState();\n this.contextMenuOpen = false;\n }\n\n /**\n * @private\n */\n _mouseDown(evt) {\n if (this.contextMenuOpen) {\n this.contextMenuOpen = false;\n evt.preventDefault();\n return;\n }\n if (evt.button === 0) {\n // Enable clicking of links in presentation mode. Note: only links\n // pointing to destinations in the current PDF document work.\n const isInternalLink =\n evt.target.href && evt.target.classList.contains(\"internalLink\");\n if (!isInternalLink) {\n // Unless an internal link was clicked, advance one page.\n evt.preventDefault();\n\n if (evt.shiftKey) {\n this.pdfViewer.previousPage();\n } else {\n this.pdfViewer.nextPage();\n }\n }\n }\n }\n\n /**\n * @private\n */\n _contextMenu() {\n this.contextMenuOpen = true;\n }\n\n /**\n * @private\n */\n _showControls() {\n if (this.controlsTimeout) {\n clearTimeout(this.controlsTimeout);\n } else {\n this.container.classList.add(CONTROLS_SELECTOR);\n }\n this.controlsTimeout = setTimeout(() => {\n this.container.classList.remove(CONTROLS_SELECTOR);\n delete this.controlsTimeout;\n }, DELAY_BEFORE_HIDING_CONTROLS);\n }\n\n /**\n * @private\n */\n _hideControls() {\n if (!this.controlsTimeout) {\n return;\n }\n clearTimeout(this.controlsTimeout);\n this.container.classList.remove(CONTROLS_SELECTOR);\n delete this.controlsTimeout;\n }\n\n /**\n * Resets the properties used for tracking mouse scrolling events.\n *\n * @private\n */\n _resetMouseScrollState() {\n this.mouseScrollTimeStamp = 0;\n this.mouseScrollDelta = 0;\n }\n\n /**\n * @private\n */\n _touchSwipe(evt) {\n if (!this.active) {\n return;\n }\n if (evt.touches.length > 1) {\n // Multiple touch points detected; cancel the swipe.\n this.touchSwipeState = null;\n return;\n }\n\n switch (evt.type) {\n case \"touchstart\":\n this.touchSwipeState = {\n startX: evt.touches[0].pageX,\n startY: evt.touches[0].pageY,\n endX: evt.touches[0].pageX,\n endY: evt.touches[0].pageY,\n };\n break;\n case \"touchmove\":\n if (this.touchSwipeState === null) {\n return;\n }\n this.touchSwipeState.endX = evt.touches[0].pageX;\n this.touchSwipeState.endY = evt.touches[0].pageY;\n // Avoid the swipe from triggering browser gestures (Chrome in\n // particular has some sort of swipe gesture in fullscreen mode).\n evt.preventDefault();\n break;\n case \"touchend\":\n if (this.touchSwipeState === null) {\n return;\n }\n let delta = 0;\n const dx = this.touchSwipeState.endX - this.touchSwipeState.startX;\n const dy = this.touchSwipeState.endY - this.touchSwipeState.startY;\n const absAngle = Math.abs(Math.atan2(dy, dx));\n if (\n Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD &&\n (absAngle <= SWIPE_ANGLE_THRESHOLD ||\n absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)\n ) {\n // Horizontal swipe.\n delta = dx;\n } else if (\n Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD &&\n Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD\n ) {\n // Vertical swipe.\n delta = dy;\n }\n if (delta > 0) {\n this.pdfViewer.previousPage();\n } else if (delta < 0) {\n this.pdfViewer.nextPage();\n }\n break;\n }\n }\n\n /**\n * @private\n */\n _addWindowListeners() {\n this.showControlsBind = this._showControls.bind(this);\n this.mouseDownBind = this._mouseDown.bind(this);\n this.mouseWheelBind = this._mouseWheel.bind(this);\n this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this);\n this.contextMenuBind = this._contextMenu.bind(this);\n this.touchSwipeBind = this._touchSwipe.bind(this);\n\n window.addEventListener(\"mousemove\", this.showControlsBind);\n window.addEventListener(\"mousedown\", this.mouseDownBind);\n window.addEventListener(\"wheel\", this.mouseWheelBind, { passive: false });\n window.addEventListener(\"keydown\", this.resetMouseScrollStateBind);\n window.addEventListener(\"contextmenu\", this.contextMenuBind);\n window.addEventListener(\"touchstart\", this.touchSwipeBind);\n window.addEventListener(\"touchmove\", this.touchSwipeBind);\n window.addEventListener(\"touchend\", this.touchSwipeBind);\n }\n\n /**\n * @private\n */\n _removeWindowListeners() {\n window.removeEventListener(\"mousemove\", this.showControlsBind);\n window.removeEventListener(\"mousedown\", this.mouseDownBind);\n window.removeEventListener(\"wheel\", this.mouseWheelBind, {\n passive: false,\n });\n window.removeEventListener(\"keydown\", this.resetMouseScrollStateBind);\n window.removeEventListener(\"contextmenu\", this.contextMenuBind);\n window.removeEventListener(\"touchstart\", this.touchSwipeBind);\n window.removeEventListener(\"touchmove\", this.touchSwipeBind);\n window.removeEventListener(\"touchend\", this.touchSwipeBind);\n\n delete this.showControlsBind;\n delete this.mouseDownBind;\n delete this.mouseWheelBind;\n delete this.resetMouseScrollStateBind;\n delete this.contextMenuBind;\n delete this.touchSwipeBind;\n }\n\n /**\n * @private\n */\n _fullscreenChange() {\n if (this.isFullscreen) {\n this._enter();\n } else {\n this._exit();\n }\n }\n\n /**\n * @private\n */\n _addFullscreenChangeListeners() {\n this.fullscreenChangeBind = this._fullscreenChange.bind(this);\n\n window.addEventListener(\"fullscreenchange\", this.fullscreenChangeBind);\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n window.addEventListener(\"mozfullscreenchange\", this.fullscreenChangeBind);\n window.addEventListener(\n \"webkitfullscreenchange\",\n this.fullscreenChangeBind\n );\n }\n }\n\n /**\n * @private\n */\n _removeFullscreenChangeListeners() {\n window.removeEventListener(\"fullscreenchange\", this.fullscreenChangeBind);\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n window.removeEventListener(\n \"mozfullscreenchange\",\n this.fullscreenChangeBind\n );\n window.removeEventListener(\n \"webkitfullscreenchange\",\n this.fullscreenChangeBind\n );\n }\n\n delete this.fullscreenChangeBind;\n }\n}\n\nexport { PDFPresentationMode };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IRenderableView} IRenderableView */\n/** @typedef {import(\"./pdf_viewer\").PDFViewer} PDFViewer */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_thumbnail_viewer\").PDFThumbnailViewer} PDFThumbnailViewer */\n\nimport { RenderingCancelledException } from \"pdfjs-lib\";\nimport { RenderingStates } from \"./ui_utils.js\";\n\nconst CLEANUP_TIMEOUT = 30000;\n\n/**\n * Controls rendering of the views for pages and thumbnails.\n */\nclass PDFRenderingQueue {\n constructor() {\n this.pdfViewer = null;\n this.pdfThumbnailViewer = null;\n this.onIdle = null;\n this.highestPriorityPage = null;\n /** @type {number} */\n this.idleTimeout = null;\n this.printing = false;\n this.isThumbnailViewEnabled = false;\n }\n\n /**\n * @param {PDFViewer} pdfViewer\n */\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n\n /**\n * @param {PDFThumbnailViewer} pdfThumbnailViewer\n */\n setThumbnailViewer(pdfThumbnailViewer) {\n this.pdfThumbnailViewer = pdfThumbnailViewer;\n }\n\n /**\n * @param {IRenderableView} view\n * @returns {boolean}\n */\n isHighestPriority(view) {\n return this.highestPriorityPage === view.renderingId;\n }\n\n /**\n * @returns {boolean}\n */\n hasViewer() {\n return !!this.pdfViewer;\n }\n\n /**\n * @param {Object} currentlyVisiblePages\n */\n renderHighestPriority(currentlyVisiblePages) {\n if (this.idleTimeout) {\n clearTimeout(this.idleTimeout);\n this.idleTimeout = null;\n }\n\n // Pages have a higher priority than thumbnails, so check them first.\n if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {\n return;\n }\n // No pages needed rendering, so check thumbnails.\n if (\n this.isThumbnailViewEnabled &&\n this.pdfThumbnailViewer?.forceRendering()\n ) {\n return;\n }\n\n if (this.printing) {\n // If printing is currently ongoing do not reschedule cleanup.\n return;\n }\n\n if (this.onIdle) {\n this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);\n }\n }\n\n /**\n * @param {Object} visible\n * @param {Array} views\n * @param {boolean} scrolledDown\n * @param {boolean} [preRenderExtra]\n */\n getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) {\n /**\n * The state has changed. Figure out which page has the highest priority to\n * render next (if any).\n *\n * Priority:\n * 1. visible pages\n * 2. if last scrolled down, the page after the visible pages, or\n * if last scrolled up, the page before the visible pages\n */\n const visibleViews = visible.views,\n numVisible = visibleViews.length;\n\n if (numVisible === 0) {\n return null;\n }\n for (let i = 0; i < numVisible; i++) {\n const view = visibleViews[i].view;\n if (!this.isViewFinished(view)) {\n return view;\n }\n }\n const firstId = visible.first.id,\n lastId = visible.last.id;\n\n // All the visible views have rendered; try to handle any \"holes\" in the\n // page layout (can happen e.g. with spreadModes at higher zoom levels).\n if (lastId - firstId + 1 > numVisible) {\n const visibleIds = visible.ids;\n for (let i = 1, ii = lastId - firstId; i < ii; i++) {\n const holeId = scrolledDown ? firstId + i : lastId - i;\n if (visibleIds.has(holeId)) {\n continue;\n }\n const holeView = views[holeId - 1];\n if (!this.isViewFinished(holeView)) {\n return holeView;\n }\n }\n }\n\n // All the visible views have rendered; try to render next/previous page.\n // (IDs start at 1, so no need to add 1 when `scrolledDown === true`.)\n let preRenderIndex = scrolledDown ? lastId : firstId - 2;\n let preRenderView = views[preRenderIndex];\n\n if (preRenderView && !this.isViewFinished(preRenderView)) {\n return preRenderView;\n }\n if (preRenderExtra) {\n preRenderIndex += scrolledDown ? 1 : -1;\n preRenderView = views[preRenderIndex];\n\n if (preRenderView && !this.isViewFinished(preRenderView)) {\n return preRenderView;\n }\n }\n // Everything that needs to be rendered has been.\n return null;\n }\n\n /**\n * @param {IRenderableView} view\n * @returns {boolean}\n */\n isViewFinished(view) {\n return view.renderingState === RenderingStates.FINISHED;\n }\n\n /**\n * Render a page or thumbnail view. This calls the appropriate function\n * based on the views state. If the view is already rendered it will return\n * `false`.\n *\n * @param {IRenderableView} view\n */\n renderView(view) {\n switch (view.renderingState) {\n case RenderingStates.FINISHED:\n return false;\n case RenderingStates.PAUSED:\n this.highestPriorityPage = view.renderingId;\n view.resume();\n break;\n case RenderingStates.RUNNING:\n this.highestPriorityPage = view.renderingId;\n break;\n case RenderingStates.INITIAL:\n this.highestPriorityPage = view.renderingId;\n view\n .draw()\n .finally(() => {\n this.renderHighestPriority();\n })\n .catch(reason => {\n if (reason instanceof RenderingCancelledException) {\n return;\n }\n console.error(`renderView: \"${reason}\"`);\n });\n break;\n }\n return true;\n }\n}\n\nexport { PDFRenderingQueue };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n\nimport { apiPageLayoutToViewerModes, RenderingStates } from \"./ui_utils.js\";\nimport { createPromiseCapability, shadow } from \"pdfjs-lib\";\n\n/**\n * @typedef {Object} PDFScriptingManagerOptions\n * @property {EventBus} eventBus - The application event bus.\n * @property {string} sandboxBundleSrc - The path and filename of the scripting\n * bundle.\n * @property {Object} [scriptingFactory] - The factory that is used when\n * initializing scripting; must contain a `createScripting` method.\n * PLEASE NOTE: Primarily intended for the default viewer use-case.\n * @property {function} [docPropertiesLookup] - The function that is used to\n * lookup the necessary document properties.\n */\n\nclass PDFScriptingManager {\n /**\n * @param {PDFScriptingManagerOptions} options\n */\n constructor({\n eventBus,\n sandboxBundleSrc = null,\n scriptingFactory = null,\n docPropertiesLookup = null,\n }) {\n this._pdfDocument = null;\n this._pdfViewer = null;\n this._closeCapability = null;\n this._destroyCapability = null;\n\n this._scripting = null;\n this._mouseState = Object.create(null);\n this._ready = false;\n\n this._eventBus = eventBus;\n this._sandboxBundleSrc = sandboxBundleSrc;\n this._scriptingFactory = scriptingFactory;\n this._docPropertiesLookup = docPropertiesLookup;\n\n // The default viewer already handles adding/removing of DOM events,\n // hence limit this to only the viewer components.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"COMPONENTS\") &&\n !this._scriptingFactory\n ) {\n window.addEventListener(\"updatefromsandbox\", event => {\n this._eventBus.dispatch(\"updatefromsandbox\", {\n source: window,\n detail: event.detail,\n });\n });\n }\n }\n\n setViewer(pdfViewer) {\n this._pdfViewer = pdfViewer;\n }\n\n async setDocument(pdfDocument) {\n if (this._pdfDocument) {\n await this._destroyScripting();\n }\n this._pdfDocument = pdfDocument;\n\n if (!pdfDocument) {\n return;\n }\n const [objects, calculationOrder, docActions] = await Promise.all([\n pdfDocument.getFieldObjects(),\n pdfDocument.getCalculationOrderIds(),\n pdfDocument.getJSActions(),\n ]);\n\n if (!objects && !docActions) {\n // No FieldObjects or JavaScript actions were found in the document.\n await this._destroyScripting();\n return;\n }\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the data resolved.\n }\n try {\n this._scripting = this._createScripting();\n } catch (error) {\n console.error(`PDFScriptingManager.setDocument: \"${error?.message}\".`);\n\n await this._destroyScripting();\n return;\n }\n\n this._internalEvents.set(\"updatefromsandbox\", event => {\n if (event?.source !== window) {\n return;\n }\n this._updateFromSandbox(event.detail);\n });\n this._internalEvents.set(\"dispatcheventinsandbox\", event => {\n this._scripting?.dispatchEventInSandbox(event.detail);\n });\n\n this._internalEvents.set(\"pagechanging\", ({ pageNumber, previous }) => {\n if (pageNumber === previous) {\n return; // The current page didn't change.\n }\n this._dispatchPageClose(previous);\n this._dispatchPageOpen(pageNumber);\n });\n this._internalEvents.set(\"pagerendered\", ({ pageNumber }) => {\n if (!this._pageOpenPending.has(pageNumber)) {\n return; // No pending \"PageOpen\" event for the newly rendered page.\n }\n if (pageNumber !== this._pdfViewer.currentPageNumber) {\n return; // The newly rendered page is no longer the current one.\n }\n this._dispatchPageOpen(pageNumber);\n });\n this._internalEvents.set(\"pagesdestroy\", async event => {\n await this._dispatchPageClose(this._pdfViewer.currentPageNumber);\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"WillClose\",\n });\n\n this._closeCapability?.resolve();\n });\n\n this._domEvents.set(\"mousedown\", event => {\n this._mouseState.isDown = true;\n });\n this._domEvents.set(\"mouseup\", event => {\n this._mouseState.isDown = false;\n });\n\n for (const [name, listener] of this._internalEvents) {\n this._eventBus._on(name, listener);\n }\n for (const [name, listener] of this._domEvents) {\n window.addEventListener(name, listener);\n }\n\n try {\n const docProperties = await this._getDocProperties();\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the properties resolved.\n }\n\n await this._scripting.createSandbox({\n objects,\n calculationOrder,\n appInfo: {\n platform: navigator.platform,\n language: navigator.language,\n },\n docInfo: {\n ...docProperties,\n actions: docActions,\n },\n });\n\n this._eventBus.dispatch(\"sandboxcreated\", { source: this });\n } catch (error) {\n console.error(`PDFScriptingManager.setDocument: \"${error?.message}\".`);\n\n await this._destroyScripting();\n return;\n }\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"Open\",\n });\n await this._dispatchPageOpen(\n this._pdfViewer.currentPageNumber,\n /* initialize = */ true\n );\n\n // Defer this slightly, to ensure that scripting is *fully* initialized.\n Promise.resolve().then(() => {\n if (pdfDocument === this._pdfDocument) {\n this._ready = true;\n }\n });\n }\n\n async dispatchWillSave(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"WillSave\",\n });\n }\n\n async dispatchDidSave(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"DidSave\",\n });\n }\n\n async dispatchWillPrint(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"WillPrint\",\n });\n }\n\n async dispatchDidPrint(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"DidPrint\",\n });\n }\n\n get mouseState() {\n return this._mouseState;\n }\n\n get destroyPromise() {\n return this._destroyCapability?.promise || null;\n }\n\n get ready() {\n return this._ready;\n }\n\n /**\n * @private\n */\n get _internalEvents() {\n return shadow(this, \"_internalEvents\", new Map());\n }\n\n /**\n * @private\n */\n get _domEvents() {\n return shadow(this, \"_domEvents\", new Map());\n }\n\n /**\n * @private\n */\n get _pageOpenPending() {\n return shadow(this, \"_pageOpenPending\", new Set());\n }\n\n /**\n * @private\n */\n get _visitedPages() {\n return shadow(this, \"_visitedPages\", new Map());\n }\n\n /**\n * @private\n */\n async _updateFromSandbox(detail) {\n // Ignore some events, see below, that don't make sense in PresentationMode.\n const isInPresentationMode =\n this._pdfViewer.isInPresentationMode ||\n this._pdfViewer.isChangingPresentationMode;\n\n const { id, siblings, command, value } = detail;\n if (!id) {\n switch (command) {\n case \"clear\":\n console.clear();\n break;\n case \"error\":\n console.error(value);\n break;\n case \"layout\":\n if (isInPresentationMode) {\n return;\n }\n const modes = apiPageLayoutToViewerModes(value);\n this._pdfViewer.spreadMode = modes.spreadMode;\n break;\n case \"page-num\":\n this._pdfViewer.currentPageNumber = value + 1;\n break;\n case \"print\":\n await this._pdfViewer.pagesPromise;\n this._eventBus.dispatch(\"print\", { source: this });\n break;\n case \"println\":\n console.log(value);\n break;\n case \"zoom\":\n if (isInPresentationMode) {\n return;\n }\n this._pdfViewer.currentScaleValue = value;\n break;\n case \"SaveAs\":\n this._eventBus.dispatch(\"save\", { source: this });\n break;\n case \"FirstPage\":\n this._pdfViewer.currentPageNumber = 1;\n break;\n case \"LastPage\":\n this._pdfViewer.currentPageNumber = this._pdfViewer.pagesCount;\n break;\n case \"NextPage\":\n this._pdfViewer.nextPage();\n break;\n case \"PrevPage\":\n this._pdfViewer.previousPage();\n break;\n case \"ZoomViewIn\":\n if (isInPresentationMode) {\n return;\n }\n this._pdfViewer.increaseScale();\n break;\n case \"ZoomViewOut\":\n if (isInPresentationMode) {\n return;\n }\n this._pdfViewer.decreaseScale();\n break;\n }\n return;\n }\n\n if (isInPresentationMode) {\n if (detail.focus) {\n return;\n }\n }\n delete detail.id;\n delete detail.siblings;\n\n const ids = siblings ? [id, ...siblings] : [id];\n for (const elementId of ids) {\n const element = document.getElementById(elementId);\n if (element) {\n element.dispatchEvent(new CustomEvent(\"updatefromsandbox\", { detail }));\n } else {\n // The element hasn't been rendered yet, use the AnnotationStorage.\n this._pdfDocument?.annotationStorage.setValue(elementId, detail);\n }\n }\n }\n\n /**\n * @private\n */\n async _dispatchPageOpen(pageNumber, initialize = false) {\n const pdfDocument = this._pdfDocument,\n visitedPages = this._visitedPages;\n\n if (initialize) {\n this._closeCapability = createPromiseCapability();\n }\n if (!this._closeCapability) {\n return; // Scripting isn't fully initialized yet.\n }\n const pageView = this._pdfViewer.getPageView(/* index = */ pageNumber - 1);\n\n if (pageView?.renderingState !== RenderingStates.FINISHED) {\n this._pageOpenPending.add(pageNumber);\n return; // Wait for the page to finish rendering.\n }\n this._pageOpenPending.delete(pageNumber);\n\n const actionsPromise = (async () => {\n // Avoid sending, and thus serializing, the `actions` data more than once.\n const actions = await (!visitedPages.has(pageNumber)\n ? pageView.pdfPage?.getJSActions()\n : null);\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the actions resolved.\n }\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"page\",\n name: \"PageOpen\",\n pageNumber,\n actions,\n });\n })();\n visitedPages.set(pageNumber, actionsPromise);\n }\n\n /**\n * @private\n */\n async _dispatchPageClose(pageNumber) {\n const pdfDocument = this._pdfDocument,\n visitedPages = this._visitedPages;\n\n if (!this._closeCapability) {\n return; // Scripting isn't fully initialized yet.\n }\n if (this._pageOpenPending.has(pageNumber)) {\n return; // The page is still rendering; no \"PageOpen\" event dispatched.\n }\n const actionsPromise = visitedPages.get(pageNumber);\n if (!actionsPromise) {\n return; // The \"PageClose\" event must be preceded by a \"PageOpen\" event.\n }\n visitedPages.set(pageNumber, null);\n\n // Ensure that the \"PageOpen\" event is dispatched first.\n await actionsPromise;\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the actions resolved.\n }\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"page\",\n name: \"PageClose\",\n pageNumber,\n });\n }\n\n /**\n * @returns {Promise<Object>} A promise that is resolved with an {Object}\n * containing the necessary document properties; please find the expected\n * format in `PDFViewerApplication._scriptingDocProperties`.\n * @private\n */\n async _getDocProperties() {\n if (this._docPropertiesLookup) {\n return this._docPropertiesLookup(this._pdfDocument);\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"COMPONENTS\")) {\n const { docPropertiesLookup } = require(\"./generic_scripting.js\");\n\n return docPropertiesLookup(this._pdfDocument);\n }\n throw new Error(\"_getDocProperties: Unable to lookup properties.\");\n }\n\n /**\n * @private\n */\n _createScripting() {\n this._destroyCapability = createPromiseCapability();\n\n if (this._scripting) {\n throw new Error(\"_createScripting: Scripting already exists.\");\n }\n if (this._scriptingFactory) {\n return this._scriptingFactory.createScripting({\n sandboxBundleSrc: this._sandboxBundleSrc,\n });\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"COMPONENTS\")) {\n const { GenericScripting } = require(\"./generic_scripting.js\");\n\n return new GenericScripting(this._sandboxBundleSrc);\n }\n throw new Error(\"_createScripting: Cannot create scripting.\");\n }\n\n /**\n * @private\n */\n async _destroyScripting() {\n if (!this._scripting) {\n this._pdfDocument = null;\n\n this._destroyCapability?.resolve();\n return;\n }\n if (this._closeCapability) {\n await Promise.race([\n this._closeCapability.promise,\n new Promise(resolve => {\n // Avoid the scripting/sandbox-destruction hanging indefinitely.\n setTimeout(resolve, 1000);\n }),\n ]).catch(reason => {\n // Ignore any errors, to ensure that the sandbox is always destroyed.\n });\n this._closeCapability = null;\n }\n this._pdfDocument = null;\n\n try {\n await this._scripting.destroySandbox();\n } catch (ex) {}\n\n for (const [name, listener] of this._internalEvents) {\n this._eventBus._off(name, listener);\n }\n this._internalEvents.clear();\n\n for (const [name, listener] of this._domEvents) {\n window.removeEventListener(name, listener);\n }\n this._domEvents.clear();\n\n this._pageOpenPending.clear();\n this._visitedPages.clear();\n\n this._scripting = null;\n delete this._mouseState.isDown;\n this._ready = false;\n\n this._destroyCapability?.resolve();\n }\n}\n\nexport { PDFScriptingManager };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n PresentationModeState,\n RenderingStates,\n SidebarView,\n} from \"./ui_utils.js\";\n\nconst UI_NOTIFICATION_CLASS = \"pdfSidebarNotification\";\n\n/**\n * @typedef {Object} PDFSidebarOptions\n * @property {PDFSidebarElements} elements - The DOM elements.\n * @property {PDFViewer} pdfViewer - The document viewer.\n * @property {PDFThumbnailViewer} pdfThumbnailViewer - The thumbnail viewer.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IL10n} l10n - The localization service.\n */\n\n/**\n * @typedef {Object} PDFSidebarElements\n * @property {HTMLDivElement} outerContainer - The outer container\n * (encasing both the viewer and sidebar elements).\n * @property {HTMLDivElement} viewerContainer - The viewer container\n * (in which the viewer element is placed).\n * @property {HTMLButtonElement} toggleButton - The button used for\n * opening/closing the sidebar.\n * @property {HTMLButtonElement} thumbnailButton - The button used to show\n * the thumbnail view.\n * @property {HTMLButtonElement} outlineButton - The button used to show\n * the outline view.\n * @property {HTMLButtonElement} attachmentsButton - The button used to show\n * the attachments view.\n * @property {HTMLButtonElement} layersButton - The button used to show\n * the layers view.\n * @property {HTMLDivElement} thumbnailView - The container in which\n * the thumbnails are placed.\n * @property {HTMLDivElement} outlineView - The container in which\n * the outline is placed.\n * @property {HTMLDivElement} attachmentsView - The container in which\n * the attachments are placed.\n * @property {HTMLDivElement} layersView - The container in which\n * the layers are placed.\n * @property {HTMLDivElement} outlineOptionsContainer - The container in which\n * the outline view-specific option button(s) are placed.\n * @property {HTMLButtonElement} currentOutlineItemButton - The button used to\n * find the current outline item.\n */\n\nclass PDFSidebar {\n /**\n * @param {PDFSidebarOptions} options\n */\n constructor({ elements, pdfViewer, pdfThumbnailViewer, eventBus, l10n }) {\n this.isOpen = false;\n this.active = SidebarView.THUMBS;\n this.isInitialViewSet = false;\n\n /**\n * Callback used when the sidebar has been opened/closed, to ensure that\n * the viewers (PDFViewer/PDFThumbnailViewer) are updated correctly.\n */\n this.onToggled = null;\n\n this.pdfViewer = pdfViewer;\n this.pdfThumbnailViewer = pdfThumbnailViewer;\n\n this.outerContainer = elements.outerContainer;\n this.viewerContainer = elements.viewerContainer;\n this.toggleButton = elements.toggleButton;\n\n this.thumbnailButton = elements.thumbnailButton;\n this.outlineButton = elements.outlineButton;\n this.attachmentsButton = elements.attachmentsButton;\n this.layersButton = elements.layersButton;\n\n this.thumbnailView = elements.thumbnailView;\n this.outlineView = elements.outlineView;\n this.attachmentsView = elements.attachmentsView;\n this.layersView = elements.layersView;\n\n this._outlineOptionsContainer = elements.outlineOptionsContainer;\n this._currentOutlineItemButton = elements.currentOutlineItemButton;\n\n this.eventBus = eventBus;\n this.l10n = l10n;\n\n this._addEventListeners();\n }\n\n reset() {\n this.isInitialViewSet = false;\n\n this._hideUINotification(/* reset = */ true);\n this.switchView(SidebarView.THUMBS);\n\n this.outlineButton.disabled = false;\n this.attachmentsButton.disabled = false;\n this.layersButton.disabled = false;\n this._currentOutlineItemButton.disabled = true;\n }\n\n /**\n * @type {number} One of the values in {SidebarView}.\n */\n get visibleView() {\n return this.isOpen ? this.active : SidebarView.NONE;\n }\n\n get isThumbnailViewVisible() {\n return this.isOpen && this.active === SidebarView.THUMBS;\n }\n\n get isOutlineViewVisible() {\n return this.isOpen && this.active === SidebarView.OUTLINE;\n }\n\n get isAttachmentsViewVisible() {\n return this.isOpen && this.active === SidebarView.ATTACHMENTS;\n }\n\n get isLayersViewVisible() {\n return this.isOpen && this.active === SidebarView.LAYERS;\n }\n\n /**\n * @param {number} view - The sidebar view that should become visible,\n * must be one of the values in {SidebarView}.\n */\n setInitialView(view = SidebarView.NONE) {\n if (this.isInitialViewSet) {\n return;\n }\n this.isInitialViewSet = true;\n\n // If the user has already manually opened the sidebar, immediately closing\n // it would be bad UX; also ignore the \"unknown\" sidebar view value.\n if (view === SidebarView.NONE || view === SidebarView.UNKNOWN) {\n this._dispatchEvent();\n return;\n }\n // Prevent dispatching two back-to-back `sidebarviewchanged` events,\n // since `this._switchView` dispatched the event if the view changed.\n if (!this._switchView(view, /* forceOpen */ true)) {\n this._dispatchEvent();\n }\n }\n\n /**\n * @param {number} view - The sidebar view that should be switched to,\n * must be one of the values in {SidebarView}.\n * @param {boolean} [forceOpen] - Ensure that the sidebar is open.\n * The default value is `false`.\n */\n switchView(view, forceOpen = false) {\n this._switchView(view, forceOpen);\n }\n\n /**\n * @returns {boolean} Indicating if `this._dispatchEvent` was called.\n * @private\n */\n _switchView(view, forceOpen = false) {\n const isViewChanged = view !== this.active;\n let shouldForceRendering = false;\n\n switch (view) {\n case SidebarView.NONE:\n if (this.isOpen) {\n this.close();\n return true; // Closing will trigger rendering and dispatch the event.\n }\n return false;\n case SidebarView.THUMBS:\n if (this.isOpen && isViewChanged) {\n shouldForceRendering = true;\n }\n break;\n case SidebarView.OUTLINE:\n if (this.outlineButton.disabled) {\n return false;\n }\n break;\n case SidebarView.ATTACHMENTS:\n if (this.attachmentsButton.disabled) {\n return false;\n }\n break;\n case SidebarView.LAYERS:\n if (this.layersButton.disabled) {\n return false;\n }\n break;\n default:\n console.error(`PDFSidebar._switchView: \"${view}\" is not a valid view.`);\n return false;\n }\n // Update the active view *after* it has been validated above,\n // in order to prevent setting it to an invalid state.\n this.active = view;\n\n // Update the CSS classes, for all buttons...\n this.thumbnailButton.classList.toggle(\n \"toggled\",\n view === SidebarView.THUMBS\n );\n this.outlineButton.classList.toggle(\n \"toggled\",\n view === SidebarView.OUTLINE\n );\n this.attachmentsButton.classList.toggle(\n \"toggled\",\n view === SidebarView.ATTACHMENTS\n );\n this.layersButton.classList.toggle(\"toggled\", view === SidebarView.LAYERS);\n // ... and for all views.\n this.thumbnailView.classList.toggle(\"hidden\", view !== SidebarView.THUMBS);\n this.outlineView.classList.toggle(\"hidden\", view !== SidebarView.OUTLINE);\n this.attachmentsView.classList.toggle(\n \"hidden\",\n view !== SidebarView.ATTACHMENTS\n );\n this.layersView.classList.toggle(\"hidden\", view !== SidebarView.LAYERS);\n\n // Finally, update view-specific CSS classes.\n this._outlineOptionsContainer.classList.toggle(\n \"hidden\",\n view !== SidebarView.OUTLINE\n );\n\n if (forceOpen && !this.isOpen) {\n this.open();\n return true; // Opening will trigger rendering and dispatch the event.\n }\n if (shouldForceRendering) {\n this._updateThumbnailViewer();\n this._forceRendering();\n }\n if (isViewChanged) {\n this._dispatchEvent();\n }\n return isViewChanged;\n }\n\n open() {\n if (this.isOpen) {\n return;\n }\n this.isOpen = true;\n this.toggleButton.classList.add(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"true\");\n\n this.outerContainer.classList.add(\"sidebarMoving\", \"sidebarOpen\");\n\n if (this.active === SidebarView.THUMBS) {\n this._updateThumbnailViewer();\n }\n this._forceRendering();\n this._dispatchEvent();\n\n this._hideUINotification();\n }\n\n close() {\n if (!this.isOpen) {\n return;\n }\n this.isOpen = false;\n this.toggleButton.classList.remove(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"false\");\n\n this.outerContainer.classList.add(\"sidebarMoving\");\n this.outerContainer.classList.remove(\"sidebarOpen\");\n\n this._forceRendering();\n this._dispatchEvent();\n }\n\n toggle() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * @private\n */\n _dispatchEvent() {\n this.eventBus.dispatch(\"sidebarviewchanged\", {\n source: this,\n view: this.visibleView,\n });\n }\n\n /**\n * @private\n */\n _forceRendering() {\n if (this.onToggled) {\n this.onToggled();\n } else {\n // Fallback\n this.pdfViewer.forceRendering();\n this.pdfThumbnailViewer.forceRendering();\n }\n }\n\n /**\n * @private\n */\n _updateThumbnailViewer() {\n const { pdfViewer, pdfThumbnailViewer } = this;\n\n // Use the rendered pages to set the corresponding thumbnail images.\n const pagesCount = pdfViewer.pagesCount;\n for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) {\n const pageView = pdfViewer.getPageView(pageIndex);\n if (pageView?.renderingState === RenderingStates.FINISHED) {\n const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex);\n thumbnailView.setImage(pageView);\n }\n }\n pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);\n }\n\n /**\n * @private\n */\n _showUINotification() {\n this.l10n.get(\"toggle_sidebar_notification2.title\").then(msg => {\n this.toggleButton.title = msg;\n });\n\n if (!this.isOpen) {\n // Only show the notification on the `toggleButton` if the sidebar is\n // currently closed, to avoid unnecessarily bothering the user.\n this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);\n }\n }\n\n /**\n * @private\n */\n _hideUINotification(reset = false) {\n if (this.isOpen || reset) {\n // Only hide the notification on the `toggleButton` if the sidebar is\n // currently open, or when the current PDF document is being closed.\n this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);\n }\n\n if (reset) {\n this.l10n.get(\"toggle_sidebar.title\").then(msg => {\n this.toggleButton.title = msg;\n });\n }\n }\n\n /**\n * @private\n */\n _addEventListeners() {\n this.viewerContainer.addEventListener(\"transitionend\", evt => {\n if (evt.target === this.viewerContainer) {\n this.outerContainer.classList.remove(\"sidebarMoving\");\n }\n });\n\n this.toggleButton.addEventListener(\"click\", () => {\n this.toggle();\n });\n\n // Buttons for switching views.\n this.thumbnailButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.THUMBS);\n });\n\n this.outlineButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.OUTLINE);\n });\n this.outlineButton.addEventListener(\"dblclick\", () => {\n this.eventBus.dispatch(\"toggleoutlinetree\", { source: this });\n });\n\n this.attachmentsButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.ATTACHMENTS);\n });\n\n this.layersButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.LAYERS);\n });\n this.layersButton.addEventListener(\"dblclick\", () => {\n this.eventBus.dispatch(\"resetlayers\", { source: this });\n });\n\n // Buttons for view-specific options.\n this._currentOutlineItemButton.addEventListener(\"click\", () => {\n this.eventBus.dispatch(\"currentoutlineitem\", { source: this });\n });\n\n // Disable/enable views.\n const onTreeLoaded = (count, button, view) => {\n button.disabled = !count;\n\n if (count) {\n this._showUINotification();\n } else if (this.active === view) {\n // If the `view` was opened by the user during document load,\n // switch away from it if it turns out to be empty.\n this.switchView(SidebarView.THUMBS);\n }\n };\n\n this.eventBus._on(\"outlineloaded\", evt => {\n onTreeLoaded(evt.outlineCount, this.outlineButton, SidebarView.OUTLINE);\n\n evt.currentOutlineItemPromise.then(enabled => {\n if (!this.isInitialViewSet) {\n return;\n }\n this._currentOutlineItemButton.disabled = !enabled;\n });\n });\n\n this.eventBus._on(\"attachmentsloaded\", evt => {\n onTreeLoaded(\n evt.attachmentsCount,\n this.attachmentsButton,\n SidebarView.ATTACHMENTS\n );\n });\n\n this.eventBus._on(\"layersloaded\", evt => {\n onTreeLoaded(evt.layersCount, this.layersButton, SidebarView.LAYERS);\n });\n\n // Update the thumbnailViewer, if visible, when exiting presentation mode.\n this.eventBus._on(\"presentationmodechanged\", evt => {\n if (\n evt.state === PresentationModeState.NORMAL &&\n this.isThumbnailViewVisible\n ) {\n this._updateThumbnailViewer();\n }\n });\n }\n}\n\nexport { PDFSidebar };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst SIDEBAR_WIDTH_VAR = \"--sidebar-width\";\nconst SIDEBAR_MIN_WIDTH = 200; // pixels\nconst SIDEBAR_RESIZING_CLASS = \"sidebarResizing\";\n\n/**\n * @typedef {Object} PDFSidebarResizerOptions\n * @property {HTMLDivElement} outerContainer - The outer container\n * (encasing both the viewer and sidebar elements).\n * @property {HTMLDivElement} resizer - The DOM element that can be dragged in\n * order to adjust the width of the sidebar.\n */\n\nclass PDFSidebarResizer {\n /**\n * @param {PDFSidebarResizerOptions} options\n * @param {EventBus} eventBus - The application event bus.\n * @param {IL10n} l10n - Localization service.\n */\n constructor(options, eventBus, l10n) {\n this.isRTL = false;\n this.sidebarOpen = false;\n this.doc = document.documentElement;\n this._width = null;\n this._outerContainerWidth = null;\n this._boundEvents = Object.create(null);\n\n this.outerContainer = options.outerContainer;\n this.resizer = options.resizer;\n this.eventBus = eventBus;\n\n l10n.getDirection().then(dir => {\n this.isRTL = dir === \"rtl\";\n });\n this._addEventListeners();\n }\n\n /**\n * @type {number}\n */\n get outerContainerWidth() {\n return (this._outerContainerWidth ||= this.outerContainer.clientWidth);\n }\n\n /**\n * @private\n * returns {boolean} Indicating if the sidebar width was updated.\n */\n _updateWidth(width = 0) {\n // Prevent the sidebar from becoming too narrow, or from occupying more\n // than half of the available viewer width.\n const maxWidth = Math.floor(this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < SIDEBAR_MIN_WIDTH) {\n width = SIDEBAR_MIN_WIDTH;\n }\n // Only update the UI when the sidebar width did in fact change.\n if (width === this._width) {\n return false;\n }\n this._width = width;\n this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`);\n return true;\n }\n\n /**\n * @private\n */\n _mouseMove(evt) {\n let width = evt.clientX;\n // For sidebar resizing to work correctly in RTL mode, invert the width.\n if (this.isRTL) {\n width = this.outerContainerWidth - width;\n }\n this._updateWidth(width);\n }\n\n /**\n * @private\n */\n _mouseUp(evt) {\n // Re-enable the `transition-duration` rules when sidebar resizing ends...\n this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\n // ... and ensure that rendering will always be triggered.\n this.eventBus.dispatch(\"resize\", { source: this });\n\n const _boundEvents = this._boundEvents;\n window.removeEventListener(\"mousemove\", _boundEvents.mouseMove);\n window.removeEventListener(\"mouseup\", _boundEvents.mouseUp);\n }\n\n /**\n * @private\n */\n _addEventListeners() {\n const _boundEvents = this._boundEvents;\n _boundEvents.mouseMove = this._mouseMove.bind(this);\n _boundEvents.mouseUp = this._mouseUp.bind(this);\n\n this.resizer.addEventListener(\"mousedown\", evt => {\n if (evt.button !== 0) {\n return;\n }\n // Disable the `transition-duration` rules when sidebar resizing begins,\n // in order to improve responsiveness and to avoid visual glitches.\n this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\n\n window.addEventListener(\"mousemove\", _boundEvents.mouseMove);\n window.addEventListener(\"mouseup\", _boundEvents.mouseUp);\n });\n\n this.eventBus._on(\"sidebarviewchanged\", evt => {\n this.sidebarOpen = !!evt?.view;\n });\n\n this.eventBus._on(\"resize\", evt => {\n // When the *entire* viewer is resized, such that it becomes narrower,\n // ensure that the sidebar doesn't end up being too wide.\n if (evt?.source !== window) {\n return;\n }\n // Always reset the cached width when the viewer is resized.\n this._outerContainerWidth = null;\n\n if (!this._width) {\n // The sidebar hasn't been resized, hence no need to adjust its width.\n return;\n }\n // NOTE: If the sidebar is closed, we don't need to worry about\n // visual glitches nor ensure that rendering is triggered.\n if (!this.sidebarOpen) {\n this._updateWidth(this._width);\n return;\n }\n this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\n const updated = this._updateWidth(this._width);\n\n Promise.resolve().then(() => {\n this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\n // Trigger rendering if the sidebar width changed, to avoid\n // depending on the order in which 'resize' events are handled.\n if (updated) {\n this.eventBus.dispatch(\"resize\", { source: this });\n }\n });\n });\n }\n}\n\nexport { PDFSidebarResizer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_rendering_queue\").PDFRenderingQueue} PDFRenderingQueue */\n\nimport {\n getVisibleElements,\n isValidRotation,\n RenderingStates,\n scrollIntoView,\n watchScroll,\n} from \"./ui_utils.js\";\nimport { PDFThumbnailView, TempImageFactory } from \"./pdf_thumbnail_view.js\";\n\nconst THUMBNAIL_SCROLL_MARGIN = -19;\nconst THUMBNAIL_SELECTED_CLASS = \"selected\";\n\n/**\n * @typedef {Object} PDFThumbnailViewerOptions\n * @property {HTMLDivElement} container - The container for the thumbnail\n * elements.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {IL10n} l10n - Localization service.\n */\n\n/**\n * Viewer control to display thumbnails for pages in a PDF document.\n */\nclass PDFThumbnailViewer {\n /**\n * @param {PDFThumbnailViewerOptions} options\n */\n constructor({ container, eventBus, linkService, renderingQueue, l10n }) {\n this.container = container;\n this.linkService = linkService;\n this.renderingQueue = renderingQueue;\n this.l10n = l10n;\n\n this.scroll = watchScroll(this.container, this._scrollUpdated.bind(this));\n this._resetView();\n\n eventBus._on(\"optionalcontentconfigchanged\", () => {\n // Ensure that the thumbnails always render with the *default* optional\n // content configuration.\n this._setImageDisabled = true;\n });\n }\n\n /**\n * @private\n */\n _scrollUpdated() {\n this.renderingQueue.renderHighestPriority();\n }\n\n getThumbnail(index) {\n return this._thumbnails[index];\n }\n\n /**\n * @private\n */\n _getVisibleThumbs() {\n return getVisibleElements({\n scrollEl: this.container,\n views: this._thumbnails,\n });\n }\n\n scrollThumbnailIntoView(pageNumber) {\n if (!this.pdfDocument) {\n return;\n }\n const thumbnailView = this._thumbnails[pageNumber - 1];\n\n if (!thumbnailView) {\n console.error('scrollThumbnailIntoView: Invalid \"pageNumber\" parameter.');\n return;\n }\n\n if (pageNumber !== this._currentPageNumber) {\n const prevThumbnailView = this._thumbnails[this._currentPageNumber - 1];\n // Remove the highlight from the previous thumbnail...\n prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS);\n // ... and add the highlight to the new thumbnail.\n thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);\n }\n const { first, last, views } = this._getVisibleThumbs();\n\n // If the thumbnail isn't currently visible, scroll it into view.\n if (views.length > 0) {\n let shouldScroll = false;\n if (pageNumber <= first.id || pageNumber >= last.id) {\n shouldScroll = true;\n } else {\n for (const { id, percent } of views) {\n if (id !== pageNumber) {\n continue;\n }\n shouldScroll = percent < 100;\n break;\n }\n }\n if (shouldScroll) {\n scrollIntoView(thumbnailView.div, { top: THUMBNAIL_SCROLL_MARGIN });\n }\n }\n\n this._currentPageNumber = pageNumber;\n }\n\n get pagesRotation() {\n return this._pagesRotation;\n }\n\n set pagesRotation(rotation) {\n if (!isValidRotation(rotation)) {\n throw new Error(\"Invalid thumbnails rotation angle.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n if (this._pagesRotation === rotation) {\n return; // The rotation didn't change.\n }\n this._pagesRotation = rotation;\n\n const updateArgs = { rotation };\n for (const thumbnail of this._thumbnails) {\n thumbnail.update(updateArgs);\n }\n }\n\n cleanup() {\n for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {\n if (\n this._thumbnails[i] &&\n this._thumbnails[i].renderingState !== RenderingStates.FINISHED\n ) {\n this._thumbnails[i].reset();\n }\n }\n TempImageFactory.destroyCanvas();\n }\n\n /**\n * @private\n */\n _resetView() {\n this._thumbnails = [];\n this._currentPageNumber = 1;\n this._pageLabels = null;\n this._pagesRotation = 0;\n this._optionalContentConfigPromise = null;\n this._setImageDisabled = false;\n\n // Remove the thumbnails from the DOM.\n this.container.textContent = \"\";\n }\n\n /**\n * @param {PDFDocumentProxy} pdfDocument\n */\n setDocument(pdfDocument) {\n if (this.pdfDocument) {\n this._cancelRendering();\n this._resetView();\n }\n\n this.pdfDocument = pdfDocument;\n if (!pdfDocument) {\n return;\n }\n const firstPagePromise = pdfDocument.getPage(1);\n const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();\n\n firstPagePromise\n .then(firstPdfPage => {\n this._optionalContentConfigPromise = optionalContentConfigPromise;\n\n const pagesCount = pdfDocument.numPages;\n const viewport = firstPdfPage.getViewport({ scale: 1 });\n const checkSetImageDisabled = () => {\n return this._setImageDisabled;\n };\n\n for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {\n const thumbnail = new PDFThumbnailView({\n container: this.container,\n id: pageNum,\n defaultViewport: viewport.clone(),\n optionalContentConfigPromise,\n linkService: this.linkService,\n renderingQueue: this.renderingQueue,\n checkSetImageDisabled,\n l10n: this.l10n,\n });\n this._thumbnails.push(thumbnail);\n }\n // Set the first `pdfPage` immediately, since it's already loaded,\n // rather than having to repeat the `PDFDocumentProxy.getPage` call in\n // the `this.#ensurePdfPageLoaded` method before rendering can start.\n const firstThumbnailView = this._thumbnails[0];\n if (firstThumbnailView) {\n firstThumbnailView.setPdfPage(firstPdfPage);\n }\n\n // Ensure that the current thumbnail is always highlighted on load.\n const thumbnailView = this._thumbnails[this._currentPageNumber - 1];\n thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);\n })\n .catch(reason => {\n console.error(\"Unable to initialize thumbnail viewer\", reason);\n });\n }\n\n /**\n * @private\n */\n _cancelRendering() {\n for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {\n if (this._thumbnails[i]) {\n this._thumbnails[i].cancelRendering();\n }\n }\n }\n\n /**\n * @param {Array|null} labels\n */\n setPageLabels(labels) {\n if (!this.pdfDocument) {\n return;\n }\n if (!labels) {\n this._pageLabels = null;\n } else if (\n !(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)\n ) {\n this._pageLabels = null;\n console.error(\"PDFThumbnailViewer_setPageLabels: Invalid page labels.\");\n } else {\n this._pageLabels = labels;\n }\n // Update all the `PDFThumbnailView` instances.\n for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {\n this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null);\n }\n }\n\n /**\n * @param {PDFThumbnailView} thumbView\n * @returns {Promise<PDFPageProxy | null>}\n */\n async #ensurePdfPageLoaded(thumbView) {\n if (thumbView.pdfPage) {\n return thumbView.pdfPage;\n }\n try {\n const pdfPage = await this.pdfDocument.getPage(thumbView.id);\n if (!thumbView.pdfPage) {\n thumbView.setPdfPage(pdfPage);\n }\n return pdfPage;\n } catch (reason) {\n console.error(\"Unable to get page for thumb view\", reason);\n return null; // Page error -- there is nothing that can be done.\n }\n }\n\n #getScrollAhead(visible) {\n if (visible.first?.id === 1) {\n return true;\n } else if (visible.last?.id === this._thumbnails.length) {\n return false;\n }\n return this.scroll.down;\n }\n\n forceRendering() {\n const visibleThumbs = this._getVisibleThumbs();\n const scrollAhead = this.#getScrollAhead(visibleThumbs);\n const thumbView = this.renderingQueue.getHighestPriority(\n visibleThumbs,\n this._thumbnails,\n scrollAhead\n );\n if (thumbView) {\n this.#ensurePdfPageLoaded(thumbView).then(() => {\n this.renderingQueue.renderView(thumbView);\n });\n return true;\n }\n return false;\n }\n}\n\nexport { PDFThumbnailViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n/** @typedef {import(\"./interfaces\").IRenderableView} IRenderableView */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_rendering_queue\").PDFRenderingQueue} PDFRenderingQueue */\n\nimport { getOutputScale, RenderingStates } from \"./ui_utils.js\";\nimport { RenderingCancelledException } from \"pdfjs-lib\";\n\nconst DRAW_UPSCALE_FACTOR = 2; // See comment in `PDFThumbnailView.draw` below.\nconst MAX_NUM_SCALING_STEPS = 3;\nconst THUMBNAIL_CANVAS_BORDER_WIDTH = 1; // px\nconst THUMBNAIL_WIDTH = 98; // px\n\n/**\n * @typedef {Object} PDFThumbnailViewOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {number} id - The thumbnail's unique ID (normally its number).\n * @property {PageViewport} defaultViewport - The page viewport.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that is resolved with an {@link OptionalContentConfig} instance.\n * The default value is `null`.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {function} checkSetImageDisabled\n * @property {IL10n} l10n - Localization service.\n */\n\nclass TempImageFactory {\n static #tempCanvas = null;\n\n static getCanvas(width, height) {\n const tempCanvas = (this.#tempCanvas ||= document.createElement(\"canvas\"));\n tempCanvas.width = width;\n tempCanvas.height = height;\n\n // Since this is a temporary canvas, we need to fill it with a white\n // background ourselves. `_getPageDrawContext` uses CSS rules for this.\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n tempCanvas.mozOpaque = true;\n }\n\n const ctx = tempCanvas.getContext(\"2d\", { alpha: false });\n ctx.save();\n ctx.fillStyle = \"rgb(255, 255, 255)\";\n ctx.fillRect(0, 0, width, height);\n ctx.restore();\n return [tempCanvas, tempCanvas.getContext(\"2d\")];\n }\n\n static destroyCanvas() {\n const tempCanvas = this.#tempCanvas;\n if (tempCanvas) {\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n tempCanvas.width = 0;\n tempCanvas.height = 0;\n }\n this.#tempCanvas = null;\n }\n}\n\n/**\n * @implements {IRenderableView}\n */\nclass PDFThumbnailView {\n /**\n * @param {PDFThumbnailViewOptions} options\n */\n constructor({\n container,\n id,\n defaultViewport,\n optionalContentConfigPromise,\n linkService,\n renderingQueue,\n checkSetImageDisabled,\n l10n,\n }) {\n this.id = id;\n this.renderingId = \"thumbnail\" + id;\n this.pageLabel = null;\n\n this.pdfPage = null;\n this.rotation = 0;\n this.viewport = defaultViewport;\n this.pdfPageRotate = defaultViewport.rotation;\n this._optionalContentConfigPromise = optionalContentConfigPromise || null;\n\n this.linkService = linkService;\n this.renderingQueue = renderingQueue;\n\n this.renderTask = null;\n this.renderingState = RenderingStates.INITIAL;\n this.resume = null;\n this._checkSetImageDisabled =\n checkSetImageDisabled ||\n function () {\n return false;\n };\n\n const pageWidth = this.viewport.width,\n pageHeight = this.viewport.height,\n pageRatio = pageWidth / pageHeight;\n\n this.canvasWidth = THUMBNAIL_WIDTH;\n this.canvasHeight = (this.canvasWidth / pageRatio) | 0;\n this.scale = this.canvasWidth / pageWidth;\n\n this.l10n = l10n;\n\n const anchor = document.createElement(\"a\");\n anchor.href = linkService.getAnchorUrl(\"#page=\" + id);\n this._thumbPageTitle.then(msg => {\n anchor.title = msg;\n });\n anchor.onclick = function () {\n linkService.goToPage(id);\n return false;\n };\n this.anchor = anchor;\n\n const div = document.createElement(\"div\");\n div.className = \"thumbnail\";\n div.setAttribute(\"data-page-number\", this.id);\n this.div = div;\n\n const ring = document.createElement(\"div\");\n ring.className = \"thumbnailSelectionRing\";\n const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;\n ring.style.width = this.canvasWidth + borderAdjustment + \"px\";\n ring.style.height = this.canvasHeight + borderAdjustment + \"px\";\n this.ring = ring;\n\n div.appendChild(ring);\n anchor.appendChild(div);\n container.appendChild(anchor);\n }\n\n setPdfPage(pdfPage) {\n this.pdfPage = pdfPage;\n this.pdfPageRotate = pdfPage.rotate;\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = pdfPage.getViewport({ scale: 1, rotation: totalRotation });\n this.reset();\n }\n\n reset() {\n this.cancelRendering();\n this.renderingState = RenderingStates.INITIAL;\n\n const pageWidth = this.viewport.width,\n pageHeight = this.viewport.height,\n pageRatio = pageWidth / pageHeight;\n\n this.canvasHeight = (this.canvasWidth / pageRatio) | 0;\n this.scale = this.canvasWidth / pageWidth;\n\n this.div.removeAttribute(\"data-loaded\");\n const ring = this.ring;\n ring.textContent = \"\"; // Remove the thumbnail from the DOM.\n const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;\n ring.style.width = this.canvasWidth + borderAdjustment + \"px\";\n ring.style.height = this.canvasHeight + borderAdjustment + \"px\";\n\n if (this.canvas) {\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this.canvas.width = 0;\n this.canvas.height = 0;\n delete this.canvas;\n }\n if (this.image) {\n this.image.removeAttribute(\"src\");\n delete this.image;\n }\n }\n\n update({ rotation = null }) {\n if (typeof rotation === \"number\") {\n this.rotation = rotation; // The rotation may be zero.\n }\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = this.viewport.clone({\n scale: 1,\n rotation: totalRotation,\n });\n this.reset();\n }\n\n /**\n * PLEASE NOTE: Most likely you want to use the `this.reset()` method,\n * rather than calling this one directly.\n */\n cancelRendering() {\n if (this.renderTask) {\n this.renderTask.cancel();\n this.renderTask = null;\n }\n this.resume = null;\n }\n\n /**\n * @private\n */\n _getPageDrawContext(upscaleFactor = 1) {\n // Keep the no-thumbnail outline visible, i.e. `data-loaded === false`,\n // until rendering/image conversion is complete, to avoid display issues.\n const canvas = document.createElement(\"canvas\");\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n canvas.mozOpaque = true;\n }\n const ctx = canvas.getContext(\"2d\", { alpha: false });\n const outputScale = getOutputScale(ctx);\n\n canvas.width = (upscaleFactor * this.canvasWidth * outputScale.sx) | 0;\n canvas.height = (upscaleFactor * this.canvasHeight * outputScale.sy) | 0;\n\n const transform = outputScale.scaled\n ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0]\n : null;\n\n return { ctx, canvas, transform };\n }\n\n /**\n * @private\n */\n _convertCanvasToImage(canvas) {\n if (this.renderingState !== RenderingStates.FINISHED) {\n throw new Error(\"_convertCanvasToImage: Rendering has not finished.\");\n }\n const reducedCanvas = this._reduceImage(canvas);\n\n const image = document.createElement(\"img\");\n image.className = \"thumbnailImage\";\n this._thumbPageCanvas.then(msg => {\n image.setAttribute(\"aria-label\", msg);\n });\n image.style.width = this.canvasWidth + \"px\";\n image.style.height = this.canvasHeight + \"px\";\n\n image.src = reducedCanvas.toDataURL();\n this.image = image;\n\n this.div.setAttribute(\"data-loaded\", true);\n this.ring.appendChild(image);\n\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n reducedCanvas.width = 0;\n reducedCanvas.height = 0;\n }\n\n draw() {\n if (this.renderingState !== RenderingStates.INITIAL) {\n console.error(\"Must be in new state before drawing\");\n return Promise.resolve();\n }\n const { pdfPage } = this;\n\n if (!pdfPage) {\n this.renderingState = RenderingStates.FINISHED;\n return Promise.reject(new Error(\"pdfPage is not loaded\"));\n }\n\n this.renderingState = RenderingStates.RUNNING;\n\n const finishRenderTask = async (error = null) => {\n // The renderTask may have been replaced by a new one, so only remove\n // the reference to the renderTask if it matches the one that is\n // triggering this callback.\n if (renderTask === this.renderTask) {\n this.renderTask = null;\n }\n\n if (error instanceof RenderingCancelledException) {\n return;\n }\n this.renderingState = RenderingStates.FINISHED;\n this._convertCanvasToImage(canvas);\n\n if (error) {\n throw error;\n }\n };\n\n // Render the thumbnail at a larger size and downsize the canvas (similar\n // to `setImage`), to improve consistency between thumbnails created by\n // the `draw` and `setImage` methods (fixes issue 8233).\n // NOTE: To primarily avoid increasing memory usage too much, but also to\n // reduce downsizing overhead, we purposely limit the up-scaling factor.\n const { ctx, canvas, transform } =\n this._getPageDrawContext(DRAW_UPSCALE_FACTOR);\n const drawViewport = this.viewport.clone({\n scale: DRAW_UPSCALE_FACTOR * this.scale,\n });\n const renderContinueCallback = cont => {\n if (!this.renderingQueue.isHighestPriority(this)) {\n this.renderingState = RenderingStates.PAUSED;\n this.resume = () => {\n this.renderingState = RenderingStates.RUNNING;\n cont();\n };\n return;\n }\n cont();\n };\n\n const renderContext = {\n canvasContext: ctx,\n transform,\n viewport: drawViewport,\n optionalContentConfigPromise: this._optionalContentConfigPromise,\n };\n const renderTask = (this.renderTask = pdfPage.render(renderContext));\n renderTask.onContinue = renderContinueCallback;\n\n const resultPromise = renderTask.promise.then(\n function () {\n return finishRenderTask(null);\n },\n function (error) {\n return finishRenderTask(error);\n }\n );\n resultPromise.finally(() => {\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvas.width = 0;\n canvas.height = 0;\n\n // Only trigger cleanup, once rendering has finished, when the current\n // pageView is *not* cached on the `BaseViewer`-instance.\n const pageCached = this.linkService.isPageCached(this.id);\n if (!pageCached) {\n this.pdfPage?.cleanup();\n }\n });\n\n return resultPromise;\n }\n\n setImage(pageView) {\n if (this._checkSetImageDisabled()) {\n return;\n }\n if (this.renderingState !== RenderingStates.INITIAL) {\n return;\n }\n const { canvas, pdfPage } = pageView;\n if (!canvas) {\n return;\n }\n if (!this.pdfPage) {\n this.setPdfPage(pdfPage);\n }\n this.renderingState = RenderingStates.FINISHED;\n this._convertCanvasToImage(canvas);\n }\n\n /**\n * @private\n */\n _reduceImage(img) {\n const { ctx, canvas } = this._getPageDrawContext();\n\n if (img.width <= 2 * canvas.width) {\n ctx.drawImage(\n img,\n 0,\n 0,\n img.width,\n img.height,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n return canvas;\n }\n // drawImage does an awful job of rescaling the image, doing it gradually.\n let reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS;\n let reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS;\n const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(\n reducedWidth,\n reducedHeight\n );\n\n while (reducedWidth > img.width || reducedHeight > img.height) {\n reducedWidth >>= 1;\n reducedHeight >>= 1;\n }\n reducedImageCtx.drawImage(\n img,\n 0,\n 0,\n img.width,\n img.height,\n 0,\n 0,\n reducedWidth,\n reducedHeight\n );\n while (reducedWidth > 2 * canvas.width) {\n reducedImageCtx.drawImage(\n reducedImage,\n 0,\n 0,\n reducedWidth,\n reducedHeight,\n 0,\n 0,\n reducedWidth >> 1,\n reducedHeight >> 1\n );\n reducedWidth >>= 1;\n reducedHeight >>= 1;\n }\n ctx.drawImage(\n reducedImage,\n 0,\n 0,\n reducedWidth,\n reducedHeight,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n return canvas;\n }\n\n get _thumbPageTitle() {\n return this.l10n.get(\"thumb_page_title\", {\n page: this.pageLabel ?? this.id,\n });\n }\n\n get _thumbPageCanvas() {\n return this.l10n.get(\"thumb_page_canvas\", {\n page: this.pageLabel ?? this.id,\n });\n }\n\n /**\n * @param {string|null} label\n */\n setPageLabel(label) {\n this.pageLabel = typeof label === \"string\" ? label : null;\n\n this._thumbPageTitle.then(msg => {\n this.anchor.title = msg;\n });\n\n if (this.renderingState !== RenderingStates.FINISHED) {\n return;\n }\n\n this._thumbPageCanvas.then(msg => {\n this.image?.setAttribute(\"aria-label\", msg);\n });\n }\n}\n\nexport { PDFThumbnailView, TempImageFactory };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ScrollMode, SpreadMode } from \"./ui_utils.js\";\nimport { BaseViewer } from \"./base_viewer.js\";\n\nclass PDFViewer extends BaseViewer {}\n\nclass PDFSinglePageViewer extends BaseViewer {\n _resetView() {\n super._resetView();\n this._scrollMode = ScrollMode.PAGE;\n this._spreadMode = SpreadMode.NONE;\n }\n\n // eslint-disable-next-line accessor-pairs\n set scrollMode(mode) {}\n\n _updateScrollMode() {}\n\n // eslint-disable-next-line accessor-pairs\n set spreadMode(mode) {}\n\n _updateSpreadMode() {}\n}\n\nexport { PDFSinglePageViewer, PDFViewer };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFAnnotationLayerFactory} IPDFAnnotationLayerFactory */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFStructTreeLayerFactory} IPDFStructTreeLayerFactory */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFTextLayerFactory} IPDFTextLayerFactory */\n/** @typedef {import(\"./interfaces\").IPDFXfaLayerFactory} IPDFXfaLayerFactory */\n\nimport {\n AnnotationMode,\n createPromiseCapability,\n PermissionFlag,\n PixelsPerInch,\n version,\n} from \"pdfjs-lib\";\nimport {\n DEFAULT_SCALE,\n DEFAULT_SCALE_DELTA,\n DEFAULT_SCALE_VALUE,\n getVisibleElements,\n isPortraitOrientation,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n MAX_AUTO_SCALE,\n MAX_SCALE,\n MIN_SCALE,\n PresentationModeState,\n RendererType,\n RenderingStates,\n SCROLLBAR_PADDING,\n scrollIntoView,\n ScrollMode,\n SpreadMode,\n TextLayerMode,\n UNKNOWN_SCALE,\n VERTICAL_PADDING,\n watchScroll,\n} from \"./ui_utils.js\";\nimport { AnnotationLayerBuilder } from \"./annotation_layer_builder.js\";\nimport { NullL10n } from \"./l10n_utils.js\";\nimport { PDFPageView } from \"./pdf_page_view.js\";\nimport { PDFRenderingQueue } from \"./pdf_rendering_queue.js\";\nimport { SimpleLinkService } from \"./pdf_link_service.js\";\nimport { StructTreeLayerBuilder } from \"./struct_tree_layer_builder.js\";\nimport { TextHighlighter } from \"./text_highlighter.js\";\nimport { TextLayerBuilder } from \"./text_layer_builder.js\";\nimport { XfaLayerBuilder } from \"./xfa_layer_builder.js\";\n\nconst DEFAULT_CACHE_SIZE = 10;\nconst ENABLE_PERMISSIONS_CLASS = \"enablePermissions\";\n\nconst PagesCountLimit = {\n FORCE_SCROLL_MODE_PAGE: 15000,\n FORCE_LAZY_PAGE_INIT: 7500,\n PAUSE_EAGER_PAGE_INIT: 500,\n};\n\n/**\n * @typedef {Object} PDFViewerOptions\n * @property {HTMLDivElement} container - The container for the viewer element.\n * @property {HTMLDivElement} [viewer] - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {IDownloadManager} [downloadManager] - The download manager\n * component.\n * @property {PDFFindController} [findController] - The find controller\n * component.\n * @property {PDFScriptingManager} [scriptingManager] - The scripting manager\n * component.\n * @property {PDFRenderingQueue} [renderingQueue] - The rendering queue object.\n * @property {boolean} [removePageBorders] - Removes the border shadow around\n * the pages. The default value is `false`.\n * @property {number} [textLayerMode] - Controls if the text layer used for\n * selection and searching is created, and if the improved text selection\n * behaviour is enabled. The constants from {TextLayerMode} should be used.\n * The default value is `TextLayerMode.ENABLE`.\n * @property {number} [annotationMode] - Controls if the annotation layer is\n * created, and if interactive form elements or `AnnotationStorage`-data are\n * being rendered. The constants from {@link AnnotationMode} should be used;\n * see also {@link RenderParameters} and {@link GetOperatorListParameters}.\n * The default value is `AnnotationMode.ENABLE_FORMS`.\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * mainly for annotation icons. Include trailing slash.\n * @property {boolean} [enablePrintAutoRotate] - Enables automatic rotation of\n * landscape pages upon printing. The default is `false`.\n * @property {string} renderer - 'canvas' or 'svg'. The default is 'canvas'.\n * @property {boolean} [useOnlyCssZoom] - Enables CSS only zooming. The default\n * value is `false`.\n * @property {number} [maxCanvasPixels] - The maximum supported canvas size in\n * total pixels, i.e. width * height. Use -1 for no limit. The default value\n * is 4096 * 4096 (16 mega-pixels).\n * @property {IL10n} l10n - Localization service.\n * @property {boolean} [enablePermissions] - Enables PDF document permissions,\n * when they exist. The default value is `false`.\n */\n\nclass PDFPageViewBuffer {\n // Here we rely on the fact that `Set`s preserve the insertion order.\n #buf = new Set();\n\n #size = 0;\n\n constructor(size) {\n this.#size = size;\n }\n\n push(view) {\n const buf = this.#buf;\n if (buf.has(view)) {\n buf.delete(view); // Move the view to the \"end\" of the buffer.\n }\n buf.add(view);\n\n if (buf.size > this.#size) {\n this.#destroyFirstView();\n }\n }\n\n /**\n * After calling resize, the size of the buffer will be `newSize`.\n * The optional parameter `idsToKeep` is, if present, a Set of page-ids to\n * push to the back of the buffer, delaying their destruction. The size of\n * `idsToKeep` has no impact on the final size of the buffer; if `idsToKeep`\n * is larger than `newSize`, some of those pages will be destroyed anyway.\n */\n resize(newSize, idsToKeep = null) {\n this.#size = newSize;\n\n const buf = this.#buf;\n if (idsToKeep) {\n const ii = buf.size;\n let i = 1;\n for (const view of buf) {\n if (idsToKeep.has(view.id)) {\n buf.delete(view); // Move the view to the \"end\" of the buffer.\n buf.add(view);\n }\n if (++i > ii) {\n break;\n }\n }\n }\n\n while (buf.size > this.#size) {\n this.#destroyFirstView();\n }\n }\n\n has(view) {\n return this.#buf.has(view);\n }\n\n [Symbol.iterator]() {\n return this.#buf.keys();\n }\n\n #destroyFirstView() {\n const firstView = this.#buf.keys().next().value;\n\n firstView?.destroy();\n this.#buf.delete(firstView);\n }\n}\n\n/**\n * Simple viewer control to display PDF content/pages.\n *\n * @implements {IPDFAnnotationLayerFactory}\n * @implements {IPDFStructTreeLayerFactory}\n * @implements {IPDFTextLayerFactory}\n * @implements {IPDFXfaLayerFactory}\n */\nclass BaseViewer {\n #buffer = null;\n\n #annotationMode = AnnotationMode.ENABLE_FORMS;\n\n #previousAnnotationMode = null;\n\n #enablePermissions = false;\n\n #previousContainerHeight = 0;\n\n #scrollModePageState = null;\n\n /**\n * @param {PDFViewerOptions} options\n */\n constructor(options) {\n if (this.constructor === BaseViewer) {\n throw new Error(\"Cannot initialize BaseViewer.\");\n }\n const viewerVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n if (version !== viewerVersion) {\n throw new Error(\n `The API version \"${version}\" does not match the Viewer version \"${viewerVersion}\".`\n );\n }\n this.container = options.container;\n this.viewer = options.viewer || options.container.firstElementChild;\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n ) {\n if (\n !(\n this.container?.tagName.toUpperCase() === \"DIV\" &&\n this.viewer?.tagName.toUpperCase() === \"DIV\"\n )\n ) {\n throw new Error(\"Invalid `container` and/or `viewer` option.\");\n }\n\n if (\n this.container.offsetParent &&\n getComputedStyle(this.container).position !== \"absolute\"\n ) {\n throw new Error(\"The `container` must be absolutely positioned.\");\n }\n }\n this.eventBus = options.eventBus;\n this.linkService = options.linkService || new SimpleLinkService();\n this.downloadManager = options.downloadManager || null;\n this.findController = options.findController || null;\n this._scriptingManager = options.scriptingManager || null;\n this.removePageBorders = options.removePageBorders || false;\n this.textLayerMode = options.textLayerMode ?? TextLayerMode.ENABLE;\n this.#annotationMode =\n options.annotationMode ?? AnnotationMode.ENABLE_FORMS;\n this.imageResourcesPath = options.imageResourcesPath || \"\";\n this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;\n this.renderer = options.renderer || RendererType.CANVAS;\n this.useOnlyCssZoom = options.useOnlyCssZoom || false;\n this.maxCanvasPixels = options.maxCanvasPixels;\n this.l10n = options.l10n || NullL10n;\n this.#enablePermissions = options.enablePermissions || false;\n\n this.defaultRenderingQueue = !options.renderingQueue;\n if (this.defaultRenderingQueue) {\n // Custom rendering queue is not specified, using default one\n this.renderingQueue = new PDFRenderingQueue();\n this.renderingQueue.setViewer(this);\n } else {\n this.renderingQueue = options.renderingQueue;\n }\n this._doc = document.documentElement;\n\n this.scroll = watchScroll(this.container, this._scrollUpdate.bind(this));\n this.presentationModeState = PresentationModeState.UNKNOWN;\n this._onBeforeDraw = this._onAfterDraw = null;\n this._resetView();\n\n if (this.removePageBorders) {\n this.viewer.classList.add(\"removePageBorders\");\n }\n // Defer the dispatching of this event, to give other viewer components\n // time to initialize *and* register 'baseviewerinit' event listeners.\n Promise.resolve().then(() => {\n this.eventBus.dispatch(\"baseviewerinit\", { source: this });\n });\n }\n\n get pagesCount() {\n return this._pages.length;\n }\n\n getPageView(index) {\n return this._pages[index];\n }\n\n /**\n * @type {boolean} - True if all {PDFPageView} objects are initialized.\n */\n get pageViewsReady() {\n if (!this._pagesCapability.settled) {\n return false;\n }\n // Prevent printing errors when 'disableAutoFetch' is set, by ensuring\n // that *all* pages have in fact been completely loaded.\n return this._pages.every(function (pageView) {\n return pageView?.pdfPage;\n });\n }\n\n /**\n * @type {boolean}\n */\n get renderForms() {\n return this.#annotationMode === AnnotationMode.ENABLE_FORMS;\n }\n\n /**\n * @type {boolean}\n */\n get enableScripting() {\n return !!this._scriptingManager;\n }\n\n /**\n * @type {number}\n */\n get currentPageNumber() {\n return this._currentPageNumber;\n }\n\n /**\n * @param {number} val - The page number.\n */\n set currentPageNumber(val) {\n if (!Number.isInteger(val)) {\n throw new Error(\"Invalid page number.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n // The intent can be to just reset a scroll position and/or scale.\n if (!this._setCurrentPageNumber(val, /* resetCurrentPageView = */ true)) {\n console.error(`currentPageNumber: \"${val}\" is not a valid page.`);\n }\n }\n\n /**\n * @returns {boolean} Whether the pageNumber is valid (within bounds).\n * @private\n */\n _setCurrentPageNumber(val, resetCurrentPageView = false) {\n if (this._currentPageNumber === val) {\n if (resetCurrentPageView) {\n this._resetCurrentPageView();\n }\n return true;\n }\n\n if (!(0 < val && val <= this.pagesCount)) {\n return false;\n }\n const previous = this._currentPageNumber;\n this._currentPageNumber = val;\n\n this.eventBus.dispatch(\"pagechanging\", {\n source: this,\n pageNumber: val,\n pageLabel: this._pageLabels?.[val - 1] ?? null,\n previous,\n });\n\n if (resetCurrentPageView) {\n this._resetCurrentPageView();\n }\n return true;\n }\n\n /**\n * @type {string|null} Returns the current page label, or `null` if no page\n * labels exist.\n */\n get currentPageLabel() {\n return this._pageLabels?.[this._currentPageNumber - 1] ?? null;\n }\n\n /**\n * @param {string} val - The page label.\n */\n set currentPageLabel(val) {\n if (!this.pdfDocument) {\n return;\n }\n let page = val | 0; // Fallback page number.\n if (this._pageLabels) {\n const i = this._pageLabels.indexOf(val);\n if (i >= 0) {\n page = i + 1;\n }\n }\n // The intent can be to just reset a scroll position and/or scale.\n if (!this._setCurrentPageNumber(page, /* resetCurrentPageView = */ true)) {\n console.error(`currentPageLabel: \"${val}\" is not a valid page.`);\n }\n }\n\n /**\n * @type {number}\n */\n get currentScale() {\n return this._currentScale !== UNKNOWN_SCALE\n ? this._currentScale\n : DEFAULT_SCALE;\n }\n\n /**\n * @param {number} val - Scale of the pages in percents.\n */\n set currentScale(val) {\n if (isNaN(val)) {\n throw new Error(\"Invalid numeric scale.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n this._setScale(val, false);\n }\n\n /**\n * @type {string}\n */\n get currentScaleValue() {\n return this._currentScaleValue;\n }\n\n /**\n * @param val - The scale of the pages (in percent or predefined value).\n */\n set currentScaleValue(val) {\n if (!this.pdfDocument) {\n return;\n }\n this._setScale(val, false);\n }\n\n /**\n * @type {number}\n */\n get pagesRotation() {\n return this._pagesRotation;\n }\n\n /**\n * @param {number} rotation - The rotation of the pages (0, 90, 180, 270).\n */\n set pagesRotation(rotation) {\n if (!isValidRotation(rotation)) {\n throw new Error(\"Invalid pages rotation angle.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n // Normalize the rotation, by clamping it to the [0, 360) range.\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n if (this._pagesRotation === rotation) {\n return; // The rotation didn't change.\n }\n this._pagesRotation = rotation;\n\n const pageNumber = this._currentPageNumber;\n\n const updateArgs = { rotation };\n for (const pageView of this._pages) {\n pageView.update(updateArgs);\n }\n // Prevent errors in case the rotation changes *before* the scale has been\n // set to a non-default value.\n if (this._currentScaleValue) {\n this._setScale(this._currentScaleValue, true);\n }\n\n this.eventBus.dispatch(\"rotationchanging\", {\n source: this,\n pagesRotation: rotation,\n pageNumber,\n });\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n }\n\n get firstPagePromise() {\n return this.pdfDocument ? this._firstPageCapability.promise : null;\n }\n\n get onePageRendered() {\n return this.pdfDocument ? this._onePageRenderedCapability.promise : null;\n }\n\n get pagesPromise() {\n return this.pdfDocument ? this._pagesCapability.promise : null;\n }\n\n /**\n * Currently only *some* permissions are supported.\n */\n #initializePermissions(permissions) {\n if (!permissions) {\n return;\n }\n\n if (!permissions.includes(PermissionFlag.COPY)) {\n this.viewer.classList.add(ENABLE_PERMISSIONS_CLASS);\n }\n\n if (\n !permissions.includes(PermissionFlag.MODIFY_ANNOTATIONS) &&\n !permissions.includes(PermissionFlag.FILL_INTERACTIVE_FORMS)\n ) {\n if (this.#annotationMode === AnnotationMode.ENABLE_FORMS) {\n this.#previousAnnotationMode = this.#annotationMode; // Allow resetting.\n this.#annotationMode = AnnotationMode.ENABLE;\n }\n }\n }\n\n #onePageRenderedOrForceFetch() {\n // Unless the viewer *and* its pages are visible, rendering won't start and\n // `this._onePageRenderedCapability` thus won't be resolved.\n // To ensure that automatic printing, on document load, still works even in\n // those cases we force-allow fetching of all pages when:\n // - The viewer is hidden in the DOM, e.g. in a `display: none` <iframe>\n // element; fixes bug 1618621.\n // - The viewer is visible, but none of the pages are (e.g. if the\n // viewer is very small); fixes bug 1618955.\n if (\n !this.container.offsetParent ||\n this._getVisiblePages().views.length === 0\n ) {\n return Promise.resolve();\n }\n return this._onePageRenderedCapability.promise;\n }\n\n /**\n * @param {PDFDocumentProxy} pdfDocument\n */\n setDocument(pdfDocument) {\n if (this.pdfDocument) {\n this.eventBus.dispatch(\"pagesdestroy\", { source: this });\n\n this._cancelRendering();\n this._resetView();\n\n if (this.findController) {\n this.findController.setDocument(null);\n }\n if (this._scriptingManager) {\n this._scriptingManager.setDocument(null);\n }\n }\n\n this.pdfDocument = pdfDocument;\n if (!pdfDocument) {\n return;\n }\n const isPureXfa = pdfDocument.isPureXfa;\n const pagesCount = pdfDocument.numPages;\n const firstPagePromise = pdfDocument.getPage(1);\n // Rendering (potentially) depends on this, hence fetching it immediately.\n const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();\n const permissionsPromise = this.#enablePermissions\n ? pdfDocument.getPermissions()\n : Promise.resolve();\n\n // Given that browsers don't handle huge amounts of DOM-elements very well,\n // enforce usage of PAGE-scrolling when loading *very* long/large documents.\n if (pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {\n console.warn(\n \"Forcing PAGE-scrolling for performance reasons, given the length of the document.\"\n );\n const mode = (this._scrollMode = ScrollMode.PAGE);\n this.eventBus.dispatch(\"scrollmodechanged\", { source: this, mode });\n }\n\n this._pagesCapability.promise.then(\n () => {\n this.eventBus.dispatch(\"pagesloaded\", { source: this, pagesCount });\n },\n () => {\n /* Prevent \"Uncaught (in promise)\"-messages in the console. */\n }\n );\n\n this._onBeforeDraw = evt => {\n const pageView = this._pages[evt.pageNumber - 1];\n if (!pageView) {\n return;\n }\n // Add the page to the buffer at the start of drawing. That way it can be\n // evicted from the buffer and destroyed even if we pause its rendering.\n this.#buffer.push(pageView);\n };\n this.eventBus._on(\"pagerender\", this._onBeforeDraw);\n\n this._onAfterDraw = evt => {\n if (evt.cssTransform || this._onePageRenderedCapability.settled) {\n return;\n }\n this._onePageRenderedCapability.resolve({ timestamp: evt.timestamp });\n\n this.eventBus._off(\"pagerendered\", this._onAfterDraw);\n this._onAfterDraw = null;\n };\n this.eventBus._on(\"pagerendered\", this._onAfterDraw);\n\n // Fetch a single page so we can get a viewport that will be the default\n // viewport for all pages\n Promise.all([firstPagePromise, permissionsPromise])\n .then(([firstPdfPage, permissions]) => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the first page resolved.\n }\n this._firstPageCapability.resolve(firstPdfPage);\n this._optionalContentConfigPromise = optionalContentConfigPromise;\n this.#initializePermissions(permissions);\n\n const viewerElement =\n this._scrollMode === ScrollMode.PAGE ? null : this.viewer;\n const scale = this.currentScale;\n const viewport = firstPdfPage.getViewport({\n scale: scale * PixelsPerInch.PDF_TO_CSS_UNITS,\n });\n const textLayerFactory =\n this.textLayerMode !== TextLayerMode.DISABLE && !isPureXfa\n ? this\n : null;\n const annotationLayerFactory =\n this.#annotationMode !== AnnotationMode.DISABLE ? this : null;\n const xfaLayerFactory = isPureXfa ? this : null;\n\n for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {\n const pageView = new PDFPageView({\n container: viewerElement,\n eventBus: this.eventBus,\n id: pageNum,\n scale,\n defaultViewport: viewport.clone(),\n optionalContentConfigPromise,\n renderingQueue: this.renderingQueue,\n textLayerFactory,\n textLayerMode: this.textLayerMode,\n annotationLayerFactory,\n annotationMode: this.#annotationMode,\n xfaLayerFactory,\n textHighlighterFactory: this,\n structTreeLayerFactory: this,\n imageResourcesPath: this.imageResourcesPath,\n renderer: this.renderer,\n useOnlyCssZoom: this.useOnlyCssZoom,\n maxCanvasPixels: this.maxCanvasPixels,\n l10n: this.l10n,\n });\n this._pages.push(pageView);\n }\n // Set the first `pdfPage` immediately, since it's already loaded,\n // rather than having to repeat the `PDFDocumentProxy.getPage` call in\n // the `this.#ensurePdfPageLoaded` method before rendering can start.\n const firstPageView = this._pages[0];\n if (firstPageView) {\n firstPageView.setPdfPage(firstPdfPage);\n this.linkService.cachePageRef(1, firstPdfPage.ref);\n }\n\n if (this._scrollMode === ScrollMode.PAGE) {\n // Ensure that the current page becomes visible on document load.\n this.#ensurePageViewVisible();\n } else if (this._spreadMode !== SpreadMode.NONE) {\n this._updateSpreadMode();\n }\n\n // Fetch all the pages since the viewport is needed before printing\n // starts to create the correct size canvas. Wait until one page is\n // rendered so we don't tie up too many resources early on.\n this.#onePageRenderedOrForceFetch().then(async () => {\n if (this.findController) {\n this.findController.setDocument(pdfDocument); // Enable searching.\n }\n if (this._scriptingManager) {\n this._scriptingManager.setDocument(pdfDocument); // Enable scripting.\n }\n\n // In addition to 'disableAutoFetch' being set, also attempt to reduce\n // resource usage when loading *very* long/large documents.\n if (\n pdfDocument.loadingParams.disableAutoFetch ||\n pagesCount > PagesCountLimit.FORCE_LAZY_PAGE_INIT\n ) {\n // XXX: Printing is semi-broken with auto fetch disabled.\n this._pagesCapability.resolve();\n return;\n }\n let getPagesLeft = pagesCount - 1; // The first page was already loaded.\n\n if (getPagesLeft <= 0) {\n this._pagesCapability.resolve();\n return;\n }\n for (let pageNum = 2; pageNum <= pagesCount; ++pageNum) {\n const promise = pdfDocument.getPage(pageNum).then(\n pdfPage => {\n const pageView = this._pages[pageNum - 1];\n if (!pageView.pdfPage) {\n pageView.setPdfPage(pdfPage);\n }\n this.linkService.cachePageRef(pageNum, pdfPage.ref);\n if (--getPagesLeft === 0) {\n this._pagesCapability.resolve();\n }\n },\n reason => {\n console.error(\n `Unable to get page ${pageNum} to initialize viewer`,\n reason\n );\n if (--getPagesLeft === 0) {\n this._pagesCapability.resolve();\n }\n }\n );\n\n if (pageNum % PagesCountLimit.PAUSE_EAGER_PAGE_INIT === 0) {\n await promise;\n }\n }\n });\n\n this.eventBus.dispatch(\"pagesinit\", { source: this });\n\n pdfDocument.getMetadata().then(({ info }) => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the metadata resolved.\n }\n if (info.Language) {\n this.viewer.lang = info.Language;\n }\n });\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n })\n .catch(reason => {\n console.error(\"Unable to initialize viewer\", reason);\n\n this._pagesCapability.reject(reason);\n });\n }\n\n /**\n * @param {Array|null} labels\n */\n setPageLabels(labels) {\n if (!this.pdfDocument) {\n return;\n }\n if (!labels) {\n this._pageLabels = null;\n } else if (\n !(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)\n ) {\n this._pageLabels = null;\n console.error(`setPageLabels: Invalid page labels.`);\n } else {\n this._pageLabels = labels;\n }\n // Update all the `PDFPageView` instances.\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null);\n }\n }\n\n _resetView() {\n this._pages = [];\n this._currentPageNumber = 1;\n this._currentScale = UNKNOWN_SCALE;\n this._currentScaleValue = null;\n this._pageLabels = null;\n this.#buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);\n this._location = null;\n this._pagesRotation = 0;\n this._optionalContentConfigPromise = null;\n this._firstPageCapability = createPromiseCapability();\n this._onePageRenderedCapability = createPromiseCapability();\n this._pagesCapability = createPromiseCapability();\n this._scrollMode = ScrollMode.VERTICAL;\n this._previousScrollMode = ScrollMode.UNKNOWN;\n this._spreadMode = SpreadMode.NONE;\n\n this.#scrollModePageState = {\n previousPageNumber: 1,\n scrollDown: true,\n pages: [],\n };\n\n if (this._onBeforeDraw) {\n this.eventBus._off(\"pagerender\", this._onBeforeDraw);\n this._onBeforeDraw = null;\n }\n if (this._onAfterDraw) {\n this.eventBus._off(\"pagerendered\", this._onAfterDraw);\n this._onAfterDraw = null;\n }\n // Remove the pages from the DOM...\n this.viewer.textContent = \"\";\n // ... and reset the Scroll mode CSS class(es) afterwards.\n this._updateScrollMode();\n\n this.viewer.removeAttribute(\"lang\");\n // Reset all PDF document permissions.\n this.viewer.classList.remove(ENABLE_PERMISSIONS_CLASS);\n\n if (this.#previousAnnotationMode !== null) {\n this.#annotationMode = this.#previousAnnotationMode;\n this.#previousAnnotationMode = null;\n }\n }\n\n #ensurePageViewVisible() {\n if (this._scrollMode !== ScrollMode.PAGE) {\n throw new Error(\"#ensurePageViewVisible: Invalid scrollMode value.\");\n }\n const pageNumber = this._currentPageNumber,\n state = this.#scrollModePageState,\n viewer = this.viewer;\n\n // Temporarily remove all the pages from the DOM...\n viewer.textContent = \"\";\n // ... and clear out the active ones.\n state.pages.length = 0;\n\n if (this._spreadMode === SpreadMode.NONE) {\n // Finally, append the new page to the viewer.\n const pageView = this._pages[pageNumber - 1];\n\n if (this.isInPresentationMode) {\n const spread = document.createElement(\"div\");\n spread.className = \"spread\";\n const dummyPage = document.createElement(\"div\");\n dummyPage.className = \"dummyPage\";\n dummyPage.style.height = `${this.container.clientHeight}px`;\n\n spread.appendChild(dummyPage);\n spread.appendChild(pageView.div);\n viewer.appendChild(spread);\n } else {\n viewer.appendChild(pageView.div);\n }\n\n state.pages.push(pageView);\n } else {\n const pageIndexSet = new Set(),\n parity = this._spreadMode - 1;\n\n // Determine the pageIndices in the new spread.\n if (pageNumber % 2 !== parity) {\n // Left-hand side page.\n pageIndexSet.add(pageNumber - 1);\n pageIndexSet.add(pageNumber);\n } else {\n // Right-hand side page.\n pageIndexSet.add(pageNumber - 2);\n pageIndexSet.add(pageNumber - 1);\n }\n\n // Finally, append the new pages to the viewer and apply the spreadMode.\n let spread = null;\n for (const i of pageIndexSet) {\n const pageView = this._pages[i];\n if (!pageView) {\n continue;\n }\n if (spread === null) {\n spread = document.createElement(\"div\");\n spread.className = \"spread\";\n viewer.appendChild(spread);\n } else if (i % 2 === parity) {\n spread = spread.cloneNode(false);\n viewer.appendChild(spread);\n }\n spread.appendChild(pageView.div);\n\n state.pages.push(pageView);\n }\n }\n\n state.scrollDown = pageNumber >= state.previousPageNumber;\n state.previousPageNumber = pageNumber;\n }\n\n _scrollUpdate() {\n if (this.pagesCount === 0) {\n return;\n }\n this.update();\n }\n\n _scrollIntoView({ pageDiv, pageSpot = null, pageNumber = null }) {\n if (this._scrollMode === ScrollMode.PAGE) {\n if (pageNumber) {\n // Ensure that `this._currentPageNumber` is correct.\n this._setCurrentPageNumber(pageNumber);\n }\n this.#ensurePageViewVisible();\n // Ensure that rendering always occurs, to avoid showing a blank page,\n // even if the current position doesn't change when the page is scrolled.\n this.update();\n }\n\n if (!pageSpot && !this.isInPresentationMode) {\n const left = pageDiv.offsetLeft + pageDiv.clientLeft;\n const right = left + pageDiv.clientWidth;\n const { scrollLeft, clientWidth } = this.container;\n if (\n this._scrollMode === ScrollMode.HORIZONTAL ||\n left < scrollLeft ||\n right > scrollLeft + clientWidth\n ) {\n pageSpot = { left: 0, top: 0 };\n }\n }\n scrollIntoView(pageDiv, pageSpot);\n }\n\n /**\n * Prevent unnecessary re-rendering of all pages when the scale changes\n * only because of limited numerical precision.\n */\n #isSameScale(newScale) {\n if (\n this.isInPresentationMode &&\n this.container.clientHeight !== this.#previousContainerHeight\n ) {\n // Ensure that the current page remains centered vertically if/when\n // the window is resized while PresentationMode is active.\n return false;\n }\n return (\n newScale === this._currentScale ||\n Math.abs(newScale - this._currentScale) < 1e-15\n );\n }\n\n _setScaleUpdatePages(newScale, newValue, noScroll = false, preset = false) {\n this._currentScaleValue = newValue.toString();\n\n if (this.#isSameScale(newScale)) {\n if (preset) {\n this.eventBus.dispatch(\"scalechanging\", {\n source: this,\n scale: newScale,\n presetValue: newValue,\n });\n }\n return;\n }\n\n this._doc.style.setProperty(\"--zoom-factor\", newScale);\n this._doc.style.setProperty(\n \"--viewport-scale-factor\",\n newScale * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n\n const updateArgs = { scale: newScale };\n for (const pageView of this._pages) {\n pageView.update(updateArgs);\n }\n this._currentScale = newScale;\n\n if (!noScroll) {\n let page = this._currentPageNumber,\n dest;\n if (\n this._location &&\n !(this.isInPresentationMode || this.isChangingPresentationMode)\n ) {\n page = this._location.pageNumber;\n dest = [\n null,\n { name: \"XYZ\" },\n this._location.left,\n this._location.top,\n null,\n ];\n }\n this.scrollPageIntoView({\n pageNumber: page,\n destArray: dest,\n allowNegativeOffset: true,\n });\n }\n\n this.eventBus.dispatch(\"scalechanging\", {\n source: this,\n scale: newScale,\n presetValue: preset ? newValue : undefined,\n });\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n\n this.#previousContainerHeight = this.container.clientHeight;\n }\n\n /**\n * @private\n */\n get _pageWidthScaleFactor() {\n if (\n this._spreadMode !== SpreadMode.NONE &&\n this._scrollMode !== ScrollMode.HORIZONTAL\n ) {\n return 2;\n }\n return 1;\n }\n\n _setScale(value, noScroll = false) {\n let scale = parseFloat(value);\n\n if (scale > 0) {\n this._setScaleUpdatePages(scale, value, noScroll, /* preset = */ false);\n } else {\n const currentPage = this._pages[this._currentPageNumber - 1];\n if (!currentPage) {\n return;\n }\n let hPadding = SCROLLBAR_PADDING,\n vPadding = VERTICAL_PADDING;\n\n if (this.isInPresentationMode) {\n hPadding = vPadding = 4;\n } else if (this.removePageBorders) {\n hPadding = vPadding = 0;\n }\n if (this._scrollMode === ScrollMode.HORIZONTAL) {\n [hPadding, vPadding] = [vPadding, hPadding]; // Swap the padding values.\n }\n const pageWidthScale =\n (((this.container.clientWidth - hPadding) / currentPage.width) *\n currentPage.scale) /\n this._pageWidthScaleFactor;\n const pageHeightScale =\n ((this.container.clientHeight - vPadding) / currentPage.height) *\n currentPage.scale;\n switch (value) {\n case \"page-actual\":\n scale = 1;\n break;\n case \"page-width\":\n scale = pageWidthScale;\n break;\n case \"page-height\":\n scale = pageHeightScale;\n break;\n case \"page-fit\":\n scale = Math.min(pageWidthScale, pageHeightScale);\n break;\n case \"auto\":\n // For pages in landscape mode, fit the page height to the viewer\n // *unless* the page would thus become too wide to fit horizontally.\n const horizontalScale = isPortraitOrientation(currentPage)\n ? pageWidthScale\n : Math.min(pageHeightScale, pageWidthScale);\n scale = Math.min(MAX_AUTO_SCALE, horizontalScale);\n break;\n default:\n console.error(`_setScale: \"${value}\" is an unknown zoom value.`);\n return;\n }\n this._setScaleUpdatePages(scale, value, noScroll, /* preset = */ true);\n }\n }\n\n /**\n * Refreshes page view: scrolls to the current page and updates the scale.\n * @private\n */\n _resetCurrentPageView() {\n if (this.isInPresentationMode) {\n // Fixes the case when PDF has different page sizes.\n this._setScale(this._currentScaleValue, true);\n }\n\n const pageView = this._pages[this._currentPageNumber - 1];\n this._scrollIntoView({ pageDiv: pageView.div });\n }\n\n /**\n * @param {string} label - The page label.\n * @returns {number|null} The page number corresponding to the page label,\n * or `null` when no page labels exist and/or the input is invalid.\n */\n pageLabelToPageNumber(label) {\n if (!this._pageLabels) {\n return null;\n }\n const i = this._pageLabels.indexOf(label);\n if (i < 0) {\n return null;\n }\n return i + 1;\n }\n\n /**\n * @typedef ScrollPageIntoViewParameters\n * @property {number} pageNumber - The page number.\n * @property {Array} [destArray] - The original PDF destination array, in the\n * format: <page-ref> </XYZ|/FitXXX> <args..>\n * @property {boolean} [allowNegativeOffset] - Allow negative page offsets.\n * The default value is `false`.\n * @property {boolean} [ignoreDestinationZoom] - Ignore the zoom argument in\n * the destination array. The default value is `false`.\n */\n\n /**\n * Scrolls page into view.\n * @param {ScrollPageIntoViewParameters} params\n */\n scrollPageIntoView({\n pageNumber,\n destArray = null,\n allowNegativeOffset = false,\n ignoreDestinationZoom = false,\n }) {\n if (!this.pdfDocument) {\n return;\n }\n const pageView =\n Number.isInteger(pageNumber) && this._pages[pageNumber - 1];\n if (!pageView) {\n console.error(\n `scrollPageIntoView: \"${pageNumber}\" is not a valid pageNumber parameter.`\n );\n return;\n }\n\n if (this.isInPresentationMode || !destArray) {\n this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView = */ true);\n return;\n }\n let x = 0,\n y = 0;\n let width = 0,\n height = 0,\n widthScale,\n heightScale;\n const changeOrientation = pageView.rotation % 180 !== 0;\n const pageWidth =\n (changeOrientation ? pageView.height : pageView.width) /\n pageView.scale /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n const pageHeight =\n (changeOrientation ? pageView.width : pageView.height) /\n pageView.scale /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n let scale = 0;\n switch (destArray[1].name) {\n case \"XYZ\":\n x = destArray[2];\n y = destArray[3];\n scale = destArray[4];\n // If x and/or y coordinates are not supplied, default to\n // _top_ left of the page (not the obvious bottom left,\n // since aligning the bottom of the intended page with the\n // top of the window is rarely helpful).\n x = x !== null ? x : 0;\n y = y !== null ? y : pageHeight;\n break;\n case \"Fit\":\n case \"FitB\":\n scale = \"page-fit\";\n break;\n case \"FitH\":\n case \"FitBH\":\n y = destArray[2];\n scale = \"page-width\";\n // According to the PDF spec, section 12.3.2.2, a `null` value in the\n // parameter should maintain the position relative to the new page.\n if (y === null && this._location) {\n x = this._location.left;\n y = this._location.top;\n } else if (typeof y !== \"number\" || y < 0) {\n // The \"top\" value isn't optional, according to the spec, however some\n // bad PDF generators will pretend that it is (fixes bug 1663390).\n y = pageHeight;\n }\n break;\n case \"FitV\":\n case \"FitBV\":\n x = destArray[2];\n width = pageWidth;\n height = pageHeight;\n scale = \"page-height\";\n break;\n case \"FitR\":\n x = destArray[2];\n y = destArray[3];\n width = destArray[4] - x;\n height = destArray[5] - y;\n const hPadding = this.removePageBorders ? 0 : SCROLLBAR_PADDING;\n const vPadding = this.removePageBorders ? 0 : VERTICAL_PADDING;\n\n widthScale =\n (this.container.clientWidth - hPadding) /\n width /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n heightScale =\n (this.container.clientHeight - vPadding) /\n height /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));\n break;\n default:\n console.error(\n `scrollPageIntoView: \"${destArray[1].name}\" is not a valid destination type.`\n );\n return;\n }\n\n if (!ignoreDestinationZoom) {\n if (scale && scale !== this._currentScale) {\n this.currentScaleValue = scale;\n } else if (this._currentScale === UNKNOWN_SCALE) {\n this.currentScaleValue = DEFAULT_SCALE_VALUE;\n }\n }\n\n if (scale === \"page-fit\" && !destArray[4]) {\n this._scrollIntoView({\n pageDiv: pageView.div,\n pageNumber,\n });\n return;\n }\n\n const boundingRect = [\n pageView.viewport.convertToViewportPoint(x, y),\n pageView.viewport.convertToViewportPoint(x + width, y + height),\n ];\n let left = Math.min(boundingRect[0][0], boundingRect[1][0]);\n let top = Math.min(boundingRect[0][1], boundingRect[1][1]);\n\n if (!allowNegativeOffset) {\n // Some bad PDF generators will create destinations with e.g. top values\n // that exceeds the page height. Ensure that offsets are not negative,\n // to prevent a previous page from becoming visible (fixes bug 874482).\n left = Math.max(left, 0);\n top = Math.max(top, 0);\n }\n this._scrollIntoView({\n pageDiv: pageView.div,\n pageSpot: { left, top },\n pageNumber,\n });\n }\n\n _updateLocation(firstPage) {\n const currentScale = this._currentScale;\n const currentScaleValue = this._currentScaleValue;\n const normalizedScaleValue =\n parseFloat(currentScaleValue) === currentScale\n ? Math.round(currentScale * 10000) / 100\n : currentScaleValue;\n\n const pageNumber = firstPage.id;\n let pdfOpenParams = \"#page=\" + pageNumber;\n pdfOpenParams += \"&zoom=\" + normalizedScaleValue;\n const currentPageView = this._pages[pageNumber - 1];\n const container = this.container;\n const topLeft = currentPageView.getPagePoint(\n container.scrollLeft - firstPage.x,\n container.scrollTop - firstPage.y\n );\n const intLeft = Math.round(topLeft[0]);\n const intTop = Math.round(topLeft[1]);\n pdfOpenParams += \",\" + intLeft + \",\" + intTop;\n\n this._location = {\n pageNumber,\n scale: normalizedScaleValue,\n top: intTop,\n left: intLeft,\n rotation: this._pagesRotation,\n pdfOpenParams,\n };\n }\n\n update() {\n const visible = this._getVisiblePages();\n const visiblePages = visible.views,\n numVisiblePages = visiblePages.length;\n\n if (numVisiblePages === 0) {\n return;\n }\n const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);\n this.#buffer.resize(newCacheSize, visible.ids);\n\n this.renderingQueue.renderHighestPriority(visible);\n\n if (!this.isInPresentationMode) {\n const isSimpleLayout =\n this._spreadMode === SpreadMode.NONE &&\n (this._scrollMode === ScrollMode.PAGE ||\n this._scrollMode === ScrollMode.VERTICAL);\n let currentId = this._currentPageNumber;\n let stillFullyVisible = false;\n\n for (const page of visiblePages) {\n if (page.percent < 100) {\n break;\n }\n if (page.id === currentId && isSimpleLayout) {\n stillFullyVisible = true;\n break;\n }\n }\n if (!stillFullyVisible) {\n currentId = visiblePages[0].id;\n }\n this._setCurrentPageNumber(currentId);\n }\n\n this._updateLocation(visible.first);\n this.eventBus.dispatch(\"updateviewarea\", {\n source: this,\n location: this._location,\n });\n }\n\n containsElement(element) {\n return this.container.contains(element);\n }\n\n focus() {\n this.container.focus();\n }\n\n get _isContainerRtl() {\n return getComputedStyle(this.container).direction === \"rtl\";\n }\n\n get isInPresentationMode() {\n return this.presentationModeState === PresentationModeState.FULLSCREEN;\n }\n\n get isChangingPresentationMode() {\n return this.presentationModeState === PresentationModeState.CHANGING;\n }\n\n get isHorizontalScrollbarEnabled() {\n return this.isInPresentationMode\n ? false\n : this.container.scrollWidth > this.container.clientWidth;\n }\n\n get isVerticalScrollbarEnabled() {\n return this.isInPresentationMode\n ? false\n : this.container.scrollHeight > this.container.clientHeight;\n }\n\n /**\n * Helper method for `this._getVisiblePages`. Should only ever be used when\n * the viewer can only display a single page at a time, for example:\n * - When PresentationMode is active.\n */\n _getCurrentVisiblePage() {\n if (!this.pagesCount) {\n return { views: [] };\n }\n const pageView = this._pages[this._currentPageNumber - 1];\n // NOTE: Compute the `x` and `y` properties of the current view,\n // since `this._updateLocation` depends of them being available.\n const element = pageView.div;\n\n const view = {\n id: pageView.id,\n x: element.offsetLeft + element.clientLeft,\n y: element.offsetTop + element.clientTop,\n view: pageView,\n };\n const ids = new Set([pageView.id]);\n\n return { first: view, last: view, views: [view], ids };\n }\n\n _getVisiblePages() {\n if (this.isInPresentationMode) {\n // The algorithm in `getVisibleElements` doesn't work in all browsers and\n // configurations (e.g. Chrome) when PresentationMode is active.\n return this._getCurrentVisiblePage();\n }\n const views =\n this._scrollMode === ScrollMode.PAGE\n ? this.#scrollModePageState.pages\n : this._pages,\n horizontal = this._scrollMode === ScrollMode.HORIZONTAL,\n rtl = horizontal && this._isContainerRtl;\n\n return getVisibleElements({\n scrollEl: this.container,\n views,\n sortByVisibility: true,\n horizontal,\n rtl,\n });\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageVisible(pageNumber) {\n if (!this.pdfDocument) {\n return false;\n }\n if (\n !(\n Number.isInteger(pageNumber) &&\n pageNumber > 0 &&\n pageNumber <= this.pagesCount\n )\n ) {\n console.error(`isPageVisible: \"${pageNumber}\" is not a valid page.`);\n return false;\n }\n return this._getVisiblePages().ids.has(pageNumber);\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageCached(pageNumber) {\n if (!this.pdfDocument) {\n return false;\n }\n if (\n !(\n Number.isInteger(pageNumber) &&\n pageNumber > 0 &&\n pageNumber <= this.pagesCount\n )\n ) {\n console.error(`isPageCached: \"${pageNumber}\" is not a valid page.`);\n return false;\n }\n const pageView = this._pages[pageNumber - 1];\n return this.#buffer.has(pageView);\n }\n\n cleanup() {\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n if (\n this._pages[i] &&\n this._pages[i].renderingState !== RenderingStates.FINISHED\n ) {\n this._pages[i].reset();\n }\n }\n }\n\n /**\n * @private\n */\n _cancelRendering() {\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n if (this._pages[i]) {\n this._pages[i].cancelRendering();\n }\n }\n }\n\n /**\n * @param {PDFPageView} pageView\n * @returns {Promise<PDFPageProxy | null>}\n */\n async #ensurePdfPageLoaded(pageView) {\n if (pageView.pdfPage) {\n return pageView.pdfPage;\n }\n try {\n const pdfPage = await this.pdfDocument.getPage(pageView.id);\n if (!pageView.pdfPage) {\n pageView.setPdfPage(pdfPage);\n }\n if (!this.linkService._cachedPageNumber(pdfPage.ref)) {\n this.linkService.cachePageRef(pageView.id, pdfPage.ref);\n }\n return pdfPage;\n } catch (reason) {\n console.error(\"Unable to get page for page view\", reason);\n return null; // Page error -- there is nothing that can be done.\n }\n }\n\n #getScrollAhead(visible) {\n if (visible.first?.id === 1) {\n return true;\n } else if (visible.last?.id === this.pagesCount) {\n return false;\n }\n switch (this._scrollMode) {\n case ScrollMode.PAGE:\n return this.#scrollModePageState.scrollDown;\n case ScrollMode.HORIZONTAL:\n return this.scroll.right;\n }\n return this.scroll.down;\n }\n\n /**\n * Only show the `loadingIcon`-spinner on visible pages (see issue 14242).\n */\n #toggleLoadingIconSpinner(visibleIds) {\n for (const id of visibleIds) {\n const pageView = this._pages[id - 1];\n pageView?.toggleLoadingIconSpinner(/* viewVisible = */ true);\n }\n for (const pageView of this.#buffer) {\n if (visibleIds.has(pageView.id)) {\n // Handled above, since the \"buffer\" may not contain all visible pages.\n continue;\n }\n pageView.toggleLoadingIconSpinner(/* viewVisible = */ false);\n }\n }\n\n forceRendering(currentlyVisiblePages) {\n const visiblePages = currentlyVisiblePages || this._getVisiblePages();\n const scrollAhead = this.#getScrollAhead(visiblePages);\n const preRenderExtra =\n this._spreadMode !== SpreadMode.NONE &&\n this._scrollMode !== ScrollMode.HORIZONTAL;\n\n const pageView = this.renderingQueue.getHighestPriority(\n visiblePages,\n this._pages,\n scrollAhead,\n preRenderExtra\n );\n this.#toggleLoadingIconSpinner(visiblePages.ids);\n\n if (pageView) {\n this.#ensurePdfPageLoaded(pageView).then(() => {\n this.renderingQueue.renderView(pageView);\n });\n return true;\n }\n return false;\n }\n\n /**\n * @param {HTMLDivElement} textLayerDiv\n * @param {number} pageIndex\n * @param {PageViewport} viewport\n * @param {boolean} enhanceTextSelection\n * @param {EventBus} eventBus\n * @param {TextHighlighter} highlighter\n * @returns {TextLayerBuilder}\n */\n createTextLayerBuilder(\n textLayerDiv,\n pageIndex,\n viewport,\n enhanceTextSelection = false,\n eventBus,\n highlighter\n ) {\n return new TextLayerBuilder({\n textLayerDiv,\n eventBus,\n pageIndex,\n viewport,\n enhanceTextSelection: this.isInPresentationMode\n ? false\n : enhanceTextSelection,\n highlighter,\n });\n }\n\n /**\n * @param {number} pageIndex\n * @param {EventBus} eventBus\n * @returns {TextHighlighter}\n */\n createTextHighlighter(pageIndex, eventBus) {\n return new TextHighlighter({\n eventBus,\n pageIndex,\n findController: this.isInPresentationMode ? null : this.findController,\n });\n }\n\n /**\n * @param {HTMLDivElement} pageDiv\n * @param {PDFPageProxy} pdfPage\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n * data in forms.\n * @param {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @param {boolean} renderForms\n * @param {IL10n} l10n\n * @param {boolean} [enableScripting]\n * @param {Promise<boolean>} [hasJSActionsPromise]\n * @param {Object} [mouseState]\n * @param {Promise<Object<string, Array<Object>> | null>}\n * [fieldObjectsPromise]\n * @param {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n * @returns {AnnotationLayerBuilder}\n */\n createAnnotationLayerBuilder(\n pageDiv,\n pdfPage,\n annotationStorage = null,\n imageResourcesPath = \"\",\n renderForms = true,\n l10n = NullL10n,\n enableScripting = null,\n hasJSActionsPromise = null,\n mouseState = null,\n fieldObjectsPromise = null,\n annotationCanvasMap = null\n ) {\n return new AnnotationLayerBuilder({\n pageDiv,\n pdfPage,\n annotationStorage:\n annotationStorage || this.pdfDocument?.annotationStorage,\n imageResourcesPath,\n renderForms,\n linkService: this.linkService,\n downloadManager: this.downloadManager,\n l10n,\n enableScripting: enableScripting ?? this.enableScripting,\n hasJSActionsPromise:\n hasJSActionsPromise || this.pdfDocument?.hasJSActions(),\n fieldObjectsPromise:\n fieldObjectsPromise || this.pdfDocument?.getFieldObjects(),\n mouseState: mouseState || this._scriptingManager?.mouseState,\n annotationCanvasMap,\n });\n }\n\n /**\n * @param {HTMLDivElement} pageDiv\n * @param {PDFPageProxy} pdfPage\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n * data in forms.\n * @returns {XfaLayerBuilder}\n */\n createXfaLayerBuilder(pageDiv, pdfPage, annotationStorage = null) {\n return new XfaLayerBuilder({\n pageDiv,\n pdfPage,\n annotationStorage:\n annotationStorage || this.pdfDocument?.annotationStorage,\n linkService: this.linkService,\n });\n }\n\n /**\n * @param {PDFPageProxy} pdfPage\n * @returns {StructTreeLayerBuilder}\n */\n createStructTreeLayerBuilder(pdfPage) {\n return new StructTreeLayerBuilder({\n pdfPage,\n });\n }\n\n /**\n * @type {boolean} Whether all pages of the PDF document have identical\n * widths and heights.\n */\n get hasEqualPageSizes() {\n const firstPageView = this._pages[0];\n for (let i = 1, ii = this._pages.length; i < ii; ++i) {\n const pageView = this._pages[i];\n if (\n pageView.width !== firstPageView.width ||\n pageView.height !== firstPageView.height\n ) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Returns sizes of the pages.\n * @returns {Array} Array of objects with width/height/rotation fields.\n */\n getPagesOverview() {\n return this._pages.map(pageView => {\n const viewport = pageView.pdfPage.getViewport({ scale: 1 });\n\n if (!this.enablePrintAutoRotate || isPortraitOrientation(viewport)) {\n return {\n width: viewport.width,\n height: viewport.height,\n rotation: viewport.rotation,\n };\n }\n // Landscape orientation.\n return {\n width: viewport.height,\n height: viewport.width,\n rotation: (viewport.rotation - 90) % 360,\n };\n });\n }\n\n /**\n * @type {Promise<OptionalContentConfig | null>}\n */\n get optionalContentConfigPromise() {\n if (!this.pdfDocument) {\n return Promise.resolve(null);\n }\n if (!this._optionalContentConfigPromise) {\n // Prevent issues if the getter is accessed *before* the `onePageRendered`\n // promise has resolved; won't (normally) happen in the default viewer.\n return this.pdfDocument.getOptionalContentConfig();\n }\n return this._optionalContentConfigPromise;\n }\n\n /**\n * @param {Promise<OptionalContentConfig>} promise - A promise that is\n * resolved with an {@link OptionalContentConfig} instance.\n */\n set optionalContentConfigPromise(promise) {\n if (!(promise instanceof Promise)) {\n throw new Error(`Invalid optionalContentConfigPromise: ${promise}`);\n }\n if (!this.pdfDocument) {\n return;\n }\n if (!this._optionalContentConfigPromise) {\n // Ignore the setter *before* the `onePageRendered` promise has resolved,\n // since it'll be overwritten anyway; won't happen in the default viewer.\n return;\n }\n this._optionalContentConfigPromise = promise;\n\n const updateArgs = { optionalContentConfigPromise: promise };\n for (const pageView of this._pages) {\n pageView.update(updateArgs);\n }\n this.update();\n\n this.eventBus.dispatch(\"optionalcontentconfigchanged\", {\n source: this,\n promise,\n });\n }\n\n /**\n * @type {number} One of the values in {ScrollMode}.\n */\n get scrollMode() {\n return this._scrollMode;\n }\n\n /**\n * @param {number} mode - The direction in which the document pages should be\n * laid out within the scrolling container.\n * The constants from {ScrollMode} should be used.\n */\n set scrollMode(mode) {\n if (this._scrollMode === mode) {\n return; // The Scroll mode didn't change.\n }\n if (!isValidScrollMode(mode)) {\n throw new Error(`Invalid scroll mode: ${mode}`);\n }\n if (this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {\n return; // Disabled for performance reasons.\n }\n this._previousScrollMode = this._scrollMode;\n\n this._scrollMode = mode;\n this.eventBus.dispatch(\"scrollmodechanged\", { source: this, mode });\n\n this._updateScrollMode(/* pageNumber = */ this._currentPageNumber);\n }\n\n _updateScrollMode(pageNumber = null) {\n const scrollMode = this._scrollMode,\n viewer = this.viewer;\n\n viewer.classList.toggle(\n \"scrollHorizontal\",\n scrollMode === ScrollMode.HORIZONTAL\n );\n viewer.classList.toggle(\"scrollWrapped\", scrollMode === ScrollMode.WRAPPED);\n\n if (!this.pdfDocument || !pageNumber) {\n return;\n }\n\n if (scrollMode === ScrollMode.PAGE) {\n this.#ensurePageViewVisible();\n } else if (this._previousScrollMode === ScrollMode.PAGE) {\n // Ensure that the current spreadMode is still applied correctly when\n // the *previous* scrollMode was `ScrollMode.PAGE`.\n this._updateSpreadMode();\n }\n // Non-numeric scale values can be sensitive to the scroll orientation.\n // Call this before re-scrolling to the current page, to ensure that any\n // changes in scale don't move the current page.\n if (this._currentScaleValue && isNaN(this._currentScaleValue)) {\n this._setScale(this._currentScaleValue, true);\n }\n this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView = */ true);\n this.update();\n }\n\n /**\n * @type {number} One of the values in {SpreadMode}.\n */\n get spreadMode() {\n return this._spreadMode;\n }\n\n /**\n * @param {number} mode - Group the pages in spreads, starting with odd- or\n * even-number pages (unless `SpreadMode.NONE` is used).\n * The constants from {SpreadMode} should be used.\n */\n set spreadMode(mode) {\n if (this._spreadMode === mode) {\n return; // The Spread mode didn't change.\n }\n if (!isValidSpreadMode(mode)) {\n throw new Error(`Invalid spread mode: ${mode}`);\n }\n this._spreadMode = mode;\n this.eventBus.dispatch(\"spreadmodechanged\", { source: this, mode });\n\n this._updateSpreadMode(/* pageNumber = */ this._currentPageNumber);\n }\n\n _updateSpreadMode(pageNumber = null) {\n if (!this.pdfDocument) {\n return;\n }\n const viewer = this.viewer,\n pages = this._pages;\n\n if (this._scrollMode === ScrollMode.PAGE) {\n this.#ensurePageViewVisible();\n } else {\n // Temporarily remove all the pages from the DOM.\n viewer.textContent = \"\";\n\n if (this._spreadMode === SpreadMode.NONE) {\n for (let i = 0, ii = pages.length; i < ii; ++i) {\n viewer.appendChild(pages[i].div);\n }\n } else {\n const parity = this._spreadMode - 1;\n let spread = null;\n for (let i = 0, ii = pages.length; i < ii; ++i) {\n if (spread === null) {\n spread = document.createElement(\"div\");\n spread.className = \"spread\";\n viewer.appendChild(spread);\n } else if (i % 2 === parity) {\n spread = spread.cloneNode(false);\n viewer.appendChild(spread);\n }\n spread.appendChild(pages[i].div);\n }\n }\n }\n\n if (!pageNumber) {\n return;\n }\n // Non-numeric scale values can be sensitive to the scroll orientation.\n // Call this before re-scrolling to the current page, to ensure that any\n // changes in scale don't move the current page.\n if (this._currentScaleValue && isNaN(this._currentScaleValue)) {\n this._setScale(this._currentScaleValue, true);\n }\n this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView = */ true);\n this.update();\n }\n\n /**\n * @private\n */\n _getPageAdvance(currentPageNumber, previous = false) {\n switch (this._scrollMode) {\n case ScrollMode.WRAPPED: {\n const { views } = this._getVisiblePages(),\n pageLayout = new Map();\n\n // Determine the current (visible) page layout.\n for (const { id, y, percent, widthPercent } of views) {\n if (percent === 0 || widthPercent < 100) {\n continue;\n }\n let yArray = pageLayout.get(y);\n if (!yArray) {\n pageLayout.set(y, (yArray ||= []));\n }\n yArray.push(id);\n }\n // Find the row of the current page.\n for (const yArray of pageLayout.values()) {\n const currentIndex = yArray.indexOf(currentPageNumber);\n if (currentIndex === -1) {\n continue;\n }\n const numPages = yArray.length;\n if (numPages === 1) {\n break;\n }\n // Handle documents with varying page sizes.\n if (previous) {\n for (let i = currentIndex - 1, ii = 0; i >= ii; i--) {\n const currentId = yArray[i],\n expectedId = yArray[i + 1] - 1;\n if (currentId < expectedId) {\n return currentPageNumber - expectedId;\n }\n }\n } else {\n for (let i = currentIndex + 1, ii = numPages; i < ii; i++) {\n const currentId = yArray[i],\n expectedId = yArray[i - 1] + 1;\n if (currentId > expectedId) {\n return expectedId - currentPageNumber;\n }\n }\n }\n // The current row is \"complete\", advance to the previous/next one.\n if (previous) {\n const firstId = yArray[0];\n if (firstId < currentPageNumber) {\n return currentPageNumber - firstId + 1;\n }\n } else {\n const lastId = yArray[numPages - 1];\n if (lastId > currentPageNumber) {\n return lastId - currentPageNumber + 1;\n }\n }\n break;\n }\n break;\n }\n case ScrollMode.HORIZONTAL: {\n break;\n }\n case ScrollMode.PAGE:\n case ScrollMode.VERTICAL: {\n if (this._spreadMode === SpreadMode.NONE) {\n break; // Normal vertical scrolling.\n }\n const parity = this._spreadMode - 1;\n\n if (previous && currentPageNumber % 2 !== parity) {\n break; // Left-hand side page.\n } else if (!previous && currentPageNumber % 2 === parity) {\n break; // Right-hand side page.\n }\n const { views } = this._getVisiblePages(),\n expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1;\n\n for (const { id, percent, widthPercent } of views) {\n if (id !== expectedId) {\n continue;\n }\n if (percent > 0 && widthPercent === 100) {\n return 2;\n }\n break;\n }\n break;\n }\n }\n return 1;\n }\n\n /**\n * Go to the next page, taking scroll/spread-modes into account.\n * @returns {boolean} Whether navigation occured.\n */\n nextPage() {\n const currentPageNumber = this._currentPageNumber,\n pagesCount = this.pagesCount;\n\n if (currentPageNumber >= pagesCount) {\n return false;\n }\n const advance =\n this._getPageAdvance(currentPageNumber, /* previous = */ false) || 1;\n\n this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount);\n return true;\n }\n\n /**\n * Go to the previous page, taking scroll/spread-modes into account.\n * @returns {boolean} Whether navigation occured.\n */\n previousPage() {\n const currentPageNumber = this._currentPageNumber;\n\n if (currentPageNumber <= 1) {\n return false;\n }\n const advance =\n this._getPageAdvance(currentPageNumber, /* previous = */ true) || 1;\n\n this.currentPageNumber = Math.max(currentPageNumber - advance, 1);\n return true;\n }\n\n /**\n * Increase the current zoom level one, or more, times.\n * @param {number} [steps] - Defaults to zooming once.\n */\n increaseScale(steps = 1) {\n let newScale = this._currentScale;\n do {\n newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2);\n newScale = Math.ceil(newScale * 10) / 10;\n newScale = Math.min(MAX_SCALE, newScale);\n } while (--steps > 0 && newScale < MAX_SCALE);\n this.currentScaleValue = newScale;\n }\n\n /**\n * Decrease the current zoom level one, or more, times.\n * @param {number} [steps] - Defaults to zooming once.\n */\n decreaseScale(steps = 1) {\n let newScale = this._currentScale;\n do {\n newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2);\n newScale = Math.floor(newScale * 10) / 10;\n newScale = Math.max(MIN_SCALE, newScale);\n } while (--steps > 0 && newScale > MIN_SCALE);\n this.currentScaleValue = newScale;\n }\n}\n\nexport { BaseViewer, PagesCountLimit, PDFPageViewBuffer };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { AnnotationLayer } from \"pdfjs-lib\";\nimport { NullL10n } from \"./l10n_utils.js\";\n\n/**\n * @typedef {Object} AnnotationLayerBuilderOptions\n * @property {HTMLDivElement} pageDiv\n * @property {PDFPageProxy} pdfPage\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {IL10n} l10n - Localization service.\n * @property {boolean} [enableScripting]\n * @property {Promise<boolean>} [hasJSActionsPromise]\n * @property {Promise<Object<string, Array<Object>> | null>}\n * [fieldObjectsPromise]\n * @property {Object} [mouseState]\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n */\n\nclass AnnotationLayerBuilder {\n /**\n * @param {AnnotationLayerBuilderOptions} options\n */\n constructor({\n pageDiv,\n pdfPage,\n linkService,\n downloadManager,\n annotationStorage = null,\n imageResourcesPath = \"\",\n renderForms = true,\n l10n = NullL10n,\n enableScripting = false,\n hasJSActionsPromise = null,\n fieldObjectsPromise = null,\n mouseState = null,\n annotationCanvasMap = null,\n }) {\n this.pageDiv = pageDiv;\n this.pdfPage = pdfPage;\n this.linkService = linkService;\n this.downloadManager = downloadManager;\n this.imageResourcesPath = imageResourcesPath;\n this.renderForms = renderForms;\n this.l10n = l10n;\n this.annotationStorage = annotationStorage;\n this.enableScripting = enableScripting;\n this._hasJSActionsPromise = hasJSActionsPromise;\n this._fieldObjectsPromise = fieldObjectsPromise;\n this._mouseState = mouseState;\n this._annotationCanvasMap = annotationCanvasMap;\n\n this.div = null;\n this._cancelled = false;\n }\n\n /**\n * @param {PageViewport} viewport\n * @param {string} intent (default value is 'display')\n * @returns {Promise<void>} A promise that is resolved when rendering of the\n * annotations is complete.\n */\n async render(viewport, intent = \"display\") {\n const [annotations, hasJSActions = false, fieldObjects = null] =\n await Promise.all([\n this.pdfPage.getAnnotations({ intent }),\n this._hasJSActionsPromise,\n this._fieldObjectsPromise,\n ]);\n\n if (this._cancelled || annotations.length === 0) {\n return;\n }\n\n const parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: this.div,\n annotations,\n page: this.pdfPage,\n imageResourcesPath: this.imageResourcesPath,\n renderForms: this.renderForms,\n linkService: this.linkService,\n downloadManager: this.downloadManager,\n annotationStorage: this.annotationStorage,\n enableScripting: this.enableScripting,\n hasJSActions,\n fieldObjects,\n mouseState: this._mouseState,\n annotationCanvasMap: this._annotationCanvasMap,\n };\n\n if (this.div) {\n // If an annotationLayer already exists, refresh its children's\n // transformation matrices.\n AnnotationLayer.update(parameters);\n } else {\n // Create an annotation layer div and render the annotations\n // if there is at least one annotation.\n this.div = document.createElement(\"div\");\n this.div.className = \"annotationLayer\";\n this.pageDiv.appendChild(this.div);\n parameters.div = this.div;\n\n AnnotationLayer.render(parameters);\n this.l10n.translate(this.div);\n }\n }\n\n cancel() {\n this._cancelled = true;\n }\n\n hide() {\n if (!this.div) {\n return;\n }\n this.div.hidden = true;\n }\n}\n\nexport { AnnotationLayerBuilder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A subset of the l10n strings in the `l10n/en-US/viewer.properties` file.\n */\nconst DEFAULT_L10N_STRINGS = {\n of_pages: \"of {{pagesCount}}\",\n page_of_pages: \"({{pageNumber}} of {{pagesCount}})\",\n\n document_properties_kb: \"{{size_kb}} KB ({{size_b}} bytes)\",\n document_properties_mb: \"{{size_mb}} MB ({{size_b}} bytes)\",\n document_properties_date_string: \"{{date}}, {{time}}\",\n document_properties_page_size_unit_inches: \"in\",\n document_properties_page_size_unit_millimeters: \"mm\",\n document_properties_page_size_orientation_portrait: \"portrait\",\n document_properties_page_size_orientation_landscape: \"landscape\",\n document_properties_page_size_name_a3: \"A3\",\n document_properties_page_size_name_a4: \"A4\",\n document_properties_page_size_name_letter: \"Letter\",\n document_properties_page_size_name_legal: \"Legal\",\n document_properties_page_size_dimension_string:\n \"{{width}} × {{height}} {{unit}} ({{orientation}})\",\n document_properties_page_size_dimension_name_string:\n \"{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\",\n document_properties_linearized_yes: \"Yes\",\n document_properties_linearized_no: \"No\",\n\n print_progress_percent: \"{{progress}}%\",\n\n \"toggle_sidebar.title\": \"Toggle Sidebar\",\n \"toggle_sidebar_notification2.title\":\n \"Toggle Sidebar (document contains outline/attachments/layers)\",\n\n additional_layers: \"Additional Layers\",\n page_landmark: \"Page {{page}}\",\n thumb_page_title: \"Page {{page}}\",\n thumb_page_canvas: \"Thumbnail of Page {{page}}\",\n\n find_reached_top: \"Reached top of document, continued from bottom\",\n find_reached_bottom: \"Reached end of document, continued from top\",\n \"find_match_count[one]\": \"{{current}} of {{total}} match\",\n \"find_match_count[other]\": \"{{current}} of {{total}} matches\",\n \"find_match_count_limit[one]\": \"More than {{limit}} match\",\n \"find_match_count_limit[other]\": \"More than {{limit}} matches\",\n find_not_found: \"Phrase not found\",\n\n error_version_info: \"PDF.js v{{version}} (build: {{build}})\",\n error_message: \"Message: {{message}}\",\n error_stack: \"Stack: {{stack}}\",\n error_file: \"File: {{file}}\",\n error_line: \"Line: {{line}}\",\n rendering_error: \"An error occurred while rendering the page.\",\n\n page_scale_width: \"Page Width\",\n page_scale_fit: \"Page Fit\",\n page_scale_auto: \"Automatic Zoom\",\n page_scale_actual: \"Actual Size\",\n page_scale_percent: \"{{scale}}%\",\n\n loading: \"Loading…\",\n loading_error: \"An error occurred while loading the PDF.\",\n invalid_file_error: \"Invalid or corrupted PDF file.\",\n missing_file_error: \"Missing PDF file.\",\n unexpected_response_error: \"Unexpected server response.\",\n\n printing_not_supported:\n \"Warning: Printing is not fully supported by this browser.\",\n printing_not_ready: \"Warning: The PDF is not fully loaded for printing.\",\n web_fonts_disabled:\n \"Web fonts are disabled: unable to use embedded PDF fonts.\",\n};\n\nfunction getL10nFallback(key, args) {\n switch (key) {\n case \"find_match_count\":\n key = `find_match_count[${args.total === 1 ? \"one\" : \"other\"}]`;\n break;\n case \"find_match_count_limit\":\n key = `find_match_count_limit[${args.limit === 1 ? \"one\" : \"other\"}]`;\n break;\n }\n return DEFAULT_L10N_STRINGS[key] || \"\";\n}\n\nconst PARTIAL_LANG_CODES = {\n en: \"en-US\",\n es: \"es-ES\",\n fy: \"fy-NL\",\n ga: \"ga-IE\",\n gu: \"gu-IN\",\n hi: \"hi-IN\",\n hy: \"hy-AM\",\n nb: \"nb-NO\",\n ne: \"ne-NP\",\n nn: \"nn-NO\",\n pa: \"pa-IN\",\n pt: \"pt-PT\",\n sv: \"sv-SE\",\n zh: \"zh-CN\",\n};\n\n// Try to support \"incompletely\" specified language codes (see issue 13689).\nfunction fixupLangCode(langCode) {\n return PARTIAL_LANG_CODES[langCode?.toLowerCase()] || langCode;\n}\n\n// Replaces {{arguments}} with their values.\nfunction formatL10nValue(text, args) {\n if (!args) {\n return text;\n }\n return text.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (all, name) => {\n return name in args ? args[name] : \"{{\" + name + \"}}\";\n });\n}\n\n/**\n * No-op implementation of the localization service.\n * @implements {IL10n}\n */\nconst NullL10n = {\n async getLanguage() {\n return \"en-us\";\n },\n\n async getDirection() {\n return \"ltr\";\n },\n\n async get(key, args = null, fallback = getL10nFallback(key, args)) {\n return formatL10nValue(fallback, args);\n },\n\n async translate(element) {},\n};\n\nexport { fixupLangCode, getL10nFallback, NullL10n };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/optional_content_config\").OptionalContentConfig} OptionalContentConfig */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFAnnotationLayerFactory} IPDFAnnotationLayerFactory */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFStructTreeLayerFactory} IPDFStructTreeLayerFactory */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFTextLayerFactory} IPDFTextLayerFactory */\n/** @typedef {import(\"./interfaces\").IL10n} IPDFXfaLayerFactory */\n/** @typedef {import(\"./interfaces\").IRenderableView} IRenderableView */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_rendering_queue\").PDFRenderingQueue} PDFRenderingQueue */\n\nimport {\n AnnotationMode,\n createPromiseCapability,\n PixelsPerInch,\n RenderingCancelledException,\n SVGGraphics,\n} from \"pdfjs-lib\";\nimport {\n approximateFraction,\n DEFAULT_SCALE,\n getOutputScale,\n RendererType,\n RenderingStates,\n roundToDivide,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport { compatibilityParams } from \"./app_options.js\";\nimport { NullL10n } from \"./l10n_utils.js\";\n\n/**\n * @typedef {Object} PDFPageViewOptions\n * @property {HTMLDivElement} [container] - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} id - The page unique ID (normally its number).\n * @property {number} scale - The page scale display.\n * @property {PageViewport} defaultViewport - The page viewport.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that is resolved with an {@link OptionalContentConfig} instance.\n * The default value is `null`.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {IPDFTextLayerFactory} textLayerFactory\n * @property {number} [textLayerMode] - Controls if the text layer used for\n * selection and searching is created, and if the improved text selection\n * behaviour is enabled. The constants from {TextLayerMode} should be used.\n * The default value is `TextLayerMode.ENABLE`.\n * @property {number} [annotationMode] - Controls if the annotation layer is\n * created, and if interactive form elements or `AnnotationStorage`-data are\n * being rendered. The constants from {@link AnnotationMode} should be used;\n * see also {@link RenderParameters} and {@link GetOperatorListParameters}.\n * The default value is `AnnotationMode.ENABLE_FORMS`.\n * @property {IPDFAnnotationLayerFactory} annotationLayerFactory\n * @property {IPDFXfaLayerFactory} xfaLayerFactory\n * @property {IPDFStructTreeLayerFactory} structTreeLayerFactory\n * @property {Object} [textHighlighterFactory]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {string} renderer - 'canvas' or 'svg'. The default is 'canvas'.\n * @property {boolean} [useOnlyCssZoom] - Enables CSS only zooming. The default\n * value is `false`.\n * @property {number} [maxCanvasPixels] - The maximum supported canvas size in\n * total pixels, i.e. width * height. Use -1 for no limit. The default value\n * is 4096 * 4096 (16 mega-pixels).\n * @property {IL10n} l10n - Localization service.\n */\n\nconst MAX_CANVAS_PIXELS = compatibilityParams.maxCanvasPixels || 16777216;\n\n/**\n * @implements {IRenderableView}\n */\nclass PDFPageView {\n #annotationMode = AnnotationMode.ENABLE_FORMS;\n\n /**\n * @param {PDFPageViewOptions} options\n */\n constructor(options) {\n const container = options.container;\n const defaultViewport = options.defaultViewport;\n\n this.id = options.id;\n this.renderingId = \"page\" + this.id;\n\n this.pdfPage = null;\n this.pageLabel = null;\n this.rotation = 0;\n this.scale = options.scale || DEFAULT_SCALE;\n this.viewport = defaultViewport;\n this.pdfPageRotate = defaultViewport.rotation;\n this._optionalContentConfigPromise =\n options.optionalContentConfigPromise || null;\n this.hasRestrictedScaling = false;\n this.textLayerMode = options.textLayerMode ?? TextLayerMode.ENABLE;\n this.#annotationMode =\n options.annotationMode ?? AnnotationMode.ENABLE_FORMS;\n this.imageResourcesPath = options.imageResourcesPath || \"\";\n this.useOnlyCssZoom = options.useOnlyCssZoom || false;\n this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS;\n\n this.eventBus = options.eventBus;\n this.renderingQueue = options.renderingQueue;\n this.textLayerFactory = options.textLayerFactory;\n this.annotationLayerFactory = options.annotationLayerFactory;\n this.xfaLayerFactory = options.xfaLayerFactory;\n this.textHighlighter =\n options.textHighlighterFactory?.createTextHighlighter(\n this.id - 1,\n this.eventBus\n );\n this.structTreeLayerFactory = options.structTreeLayerFactory;\n this.renderer = options.renderer || RendererType.CANVAS;\n this.l10n = options.l10n || NullL10n;\n\n this.paintTask = null;\n this.paintedViewportMap = new WeakMap();\n this.renderingState = RenderingStates.INITIAL;\n this.resume = null;\n this._renderError = null;\n this._isStandalone = !this.renderingQueue?.hasViewer();\n\n this._annotationCanvasMap = null;\n\n this.annotationLayer = null;\n this.textLayer = null;\n this.zoomLayer = null;\n this.xfaLayer = null;\n this.structTreeLayer = null;\n\n const div = document.createElement(\"div\");\n div.className = \"page\";\n div.style.width = Math.floor(this.viewport.width) + \"px\";\n div.style.height = Math.floor(this.viewport.height) + \"px\";\n div.setAttribute(\"data-page-number\", this.id);\n div.setAttribute(\"role\", \"region\");\n this.l10n.get(\"page_landmark\", { page: this.id }).then(msg => {\n div.setAttribute(\"aria-label\", msg);\n });\n this.div = div;\n\n container?.appendChild(div);\n }\n\n setPdfPage(pdfPage) {\n this.pdfPage = pdfPage;\n this.pdfPageRotate = pdfPage.rotate;\n\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = pdfPage.getViewport({\n scale: this.scale * PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: totalRotation,\n });\n this.reset();\n }\n\n destroy() {\n this.reset();\n if (this.pdfPage) {\n this.pdfPage.cleanup();\n }\n }\n\n /**\n * @private\n */\n async _renderAnnotationLayer() {\n let error = null;\n try {\n await this.annotationLayer.render(this.viewport, \"display\");\n } catch (ex) {\n error = ex;\n } finally {\n this.eventBus.dispatch(\"annotationlayerrendered\", {\n source: this,\n pageNumber: this.id,\n error,\n });\n }\n }\n\n /**\n * @private\n */\n async _renderXfaLayer() {\n let error = null;\n try {\n const result = await this.xfaLayer.render(this.viewport, \"display\");\n if (this.textHighlighter) {\n this._buildXfaTextContentItems(result.textDivs);\n }\n } catch (ex) {\n error = ex;\n } finally {\n this.eventBus.dispatch(\"xfalayerrendered\", {\n source: this,\n pageNumber: this.id,\n error,\n });\n }\n }\n\n async _buildXfaTextContentItems(textDivs) {\n const text = await this.pdfPage.getTextContent();\n const items = [];\n for (const item of text.items) {\n items.push(item.str);\n }\n this.textHighlighter.setTextMapping(textDivs, items);\n this.textHighlighter.enable();\n }\n\n /**\n * @private\n */\n _resetZoomLayer(removeFromDOM = false) {\n if (!this.zoomLayer) {\n return;\n }\n const zoomLayerCanvas = this.zoomLayer.firstChild;\n this.paintedViewportMap.delete(zoomLayerCanvas);\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n zoomLayerCanvas.width = 0;\n zoomLayerCanvas.height = 0;\n\n if (removeFromDOM) {\n // Note: `ChildNode.remove` doesn't throw if the parent node is undefined.\n this.zoomLayer.remove();\n }\n this.zoomLayer = null;\n }\n\n reset({\n keepZoomLayer = false,\n keepAnnotationLayer = false,\n keepXfaLayer = false,\n } = {}) {\n this.cancelRendering({ keepAnnotationLayer, keepXfaLayer });\n this.renderingState = RenderingStates.INITIAL;\n\n const div = this.div;\n div.style.width = Math.floor(this.viewport.width) + \"px\";\n div.style.height = Math.floor(this.viewport.height) + \"px\";\n\n const childNodes = div.childNodes,\n zoomLayerNode = (keepZoomLayer && this.zoomLayer) || null,\n annotationLayerNode =\n (keepAnnotationLayer && this.annotationLayer?.div) || null,\n xfaLayerNode = (keepXfaLayer && this.xfaLayer?.div) || null;\n for (let i = childNodes.length - 1; i >= 0; i--) {\n const node = childNodes[i];\n switch (node) {\n case zoomLayerNode:\n case annotationLayerNode:\n case xfaLayerNode:\n continue;\n }\n node.remove();\n }\n div.removeAttribute(\"data-loaded\");\n\n if (annotationLayerNode) {\n // Hide the annotation layer until all elements are resized\n // so they are not displayed on the already resized page.\n this.annotationLayer.hide();\n }\n if (xfaLayerNode) {\n // Hide the XFA layer until all elements are resized\n // so they are not displayed on the already resized page.\n this.xfaLayer.hide();\n }\n\n if (!zoomLayerNode) {\n if (this.canvas) {\n this.paintedViewportMap.delete(this.canvas);\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this.canvas.width = 0;\n this.canvas.height = 0;\n delete this.canvas;\n }\n this._resetZoomLayer();\n }\n if (this.svg) {\n this.paintedViewportMap.delete(this.svg);\n delete this.svg;\n }\n\n this.loadingIconDiv = document.createElement(\"div\");\n this.loadingIconDiv.className = \"loadingIcon notVisible\";\n if (this._isStandalone) {\n this.toggleLoadingIconSpinner(/* viewVisible = */ true);\n }\n this.loadingIconDiv.setAttribute(\"role\", \"img\");\n this.l10n.get(\"loading\").then(msg => {\n this.loadingIconDiv?.setAttribute(\"aria-label\", msg);\n });\n div.appendChild(this.loadingIconDiv);\n }\n\n update({ scale = 0, rotation = null, optionalContentConfigPromise = null }) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n typeof arguments[0] !== \"object\"\n ) {\n console.error(\n \"PDFPageView.update called with separate parameters, please use an object instead.\"\n );\n\n this.update({\n scale: arguments[0],\n rotation: arguments[1],\n optionalContentConfigPromise: arguments[2],\n });\n return;\n }\n\n this.scale = scale || this.scale;\n if (typeof rotation === \"number\") {\n this.rotation = rotation; // The rotation may be zero.\n }\n if (optionalContentConfigPromise instanceof Promise) {\n this._optionalContentConfigPromise = optionalContentConfigPromise;\n }\n\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n const viewportScale = this.scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n this.viewport = this.viewport.clone({\n scale: viewportScale,\n rotation: totalRotation,\n });\n\n if (this._isStandalone) {\n const { style } = document.documentElement;\n style.setProperty(\"--zoom-factor\", this.scale);\n style.setProperty(\"--viewport-scale-factor\", viewportScale);\n }\n\n if (this.svg) {\n this.cssTransform({\n target: this.svg,\n redrawAnnotationLayer: true,\n redrawXfaLayer: true,\n });\n\n this.eventBus.dispatch(\"pagerendered\", {\n source: this,\n pageNumber: this.id,\n cssTransform: true,\n timestamp: performance.now(),\n error: this._renderError,\n });\n return;\n }\n\n let isScalingRestricted = false;\n if (this.canvas && this.maxCanvasPixels > 0) {\n const outputScale = this.outputScale;\n if (\n ((Math.floor(this.viewport.width) * outputScale.sx) | 0) *\n ((Math.floor(this.viewport.height) * outputScale.sy) | 0) >\n this.maxCanvasPixels\n ) {\n isScalingRestricted = true;\n }\n }\n\n if (this.canvas) {\n if (\n this.useOnlyCssZoom ||\n (this.hasRestrictedScaling && isScalingRestricted)\n ) {\n this.cssTransform({\n target: this.canvas,\n redrawAnnotationLayer: true,\n redrawXfaLayer: true,\n });\n\n this.eventBus.dispatch(\"pagerendered\", {\n source: this,\n pageNumber: this.id,\n cssTransform: true,\n timestamp: performance.now(),\n error: this._renderError,\n });\n return;\n }\n if (!this.zoomLayer && !this.canvas.hidden) {\n this.zoomLayer = this.canvas.parentNode;\n this.zoomLayer.style.position = \"absolute\";\n }\n }\n if (this.zoomLayer) {\n this.cssTransform({ target: this.zoomLayer.firstChild });\n }\n this.reset({\n keepZoomLayer: true,\n keepAnnotationLayer: true,\n keepXfaLayer: true,\n });\n }\n\n /**\n * PLEASE NOTE: Most likely you want to use the `this.reset()` method,\n * rather than calling this one directly.\n */\n cancelRendering({ keepAnnotationLayer = false, keepXfaLayer = false } = {}) {\n if (this.paintTask) {\n this.paintTask.cancel();\n this.paintTask = null;\n }\n this.resume = null;\n\n if (this.textLayer) {\n this.textLayer.cancel();\n this.textLayer = null;\n }\n if (\n this.annotationLayer &&\n (!keepAnnotationLayer || !this.annotationLayer.div)\n ) {\n this.annotationLayer.cancel();\n this.annotationLayer = null;\n this._annotationCanvasMap = null;\n }\n if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) {\n this.xfaLayer.cancel();\n this.xfaLayer = null;\n this.textHighlighter?.disable();\n }\n if (this._onTextLayerRendered) {\n this.eventBus._off(\"textlayerrendered\", this._onTextLayerRendered);\n this._onTextLayerRendered = null;\n }\n }\n\n cssTransform({\n target,\n redrawAnnotationLayer = false,\n redrawXfaLayer = false,\n }) {\n // Scale target (canvas or svg), its wrapper and page container.\n const width = this.viewport.width;\n const height = this.viewport.height;\n const div = this.div;\n target.style.width =\n target.parentNode.style.width =\n div.style.width =\n Math.floor(width) + \"px\";\n target.style.height =\n target.parentNode.style.height =\n div.style.height =\n Math.floor(height) + \"px\";\n // The canvas may have been originally rotated; rotate relative to that.\n const relativeRotation =\n this.viewport.rotation - this.paintedViewportMap.get(target).rotation;\n const absRotation = Math.abs(relativeRotation);\n let scaleX = 1,\n scaleY = 1;\n if (absRotation === 90 || absRotation === 270) {\n // Scale x and y because of the rotation.\n scaleX = height / width;\n scaleY = width / height;\n }\n target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`;\n\n if (this.textLayer) {\n // Rotating the text layer is more complicated since the divs inside the\n // the text layer are rotated.\n // TODO: This could probably be simplified by drawing the text layer in\n // one orientation and then rotating overall.\n const textLayerViewport = this.textLayer.viewport;\n const textRelativeRotation =\n this.viewport.rotation - textLayerViewport.rotation;\n const textAbsRotation = Math.abs(textRelativeRotation);\n let scale = width / textLayerViewport.width;\n if (textAbsRotation === 90 || textAbsRotation === 270) {\n scale = width / textLayerViewport.height;\n }\n const textLayerDiv = this.textLayer.textLayerDiv;\n let transX, transY;\n switch (textAbsRotation) {\n case 0:\n transX = transY = 0;\n break;\n case 90:\n transX = 0;\n transY = \"-\" + textLayerDiv.style.height;\n break;\n case 180:\n transX = \"-\" + textLayerDiv.style.width;\n transY = \"-\" + textLayerDiv.style.height;\n break;\n case 270:\n transX = \"-\" + textLayerDiv.style.width;\n transY = 0;\n break;\n default:\n console.error(\"Bad rotation value.\");\n break;\n }\n\n textLayerDiv.style.transform =\n `rotate(${textAbsRotation}deg) ` +\n `scale(${scale}) ` +\n `translate(${transX}, ${transY})`;\n textLayerDiv.style.transformOrigin = \"0% 0%\";\n }\n\n if (redrawAnnotationLayer && this.annotationLayer) {\n this._renderAnnotationLayer();\n }\n if (redrawXfaLayer && this.xfaLayer) {\n this._renderXfaLayer();\n }\n }\n\n get width() {\n return this.viewport.width;\n }\n\n get height() {\n return this.viewport.height;\n }\n\n getPagePoint(x, y) {\n return this.viewport.convertToPdfPoint(x, y);\n }\n\n /**\n * @ignore\n */\n toggleLoadingIconSpinner(viewVisible = false) {\n this.loadingIconDiv?.classList.toggle(\"notVisible\", !viewVisible);\n }\n\n draw() {\n if (this.renderingState !== RenderingStates.INITIAL) {\n console.error(\"Must be in new state before drawing\");\n this.reset(); // Ensure that we reset all state to prevent issues.\n }\n const { div, pdfPage } = this;\n\n if (!pdfPage) {\n this.renderingState = RenderingStates.FINISHED;\n\n if (this.loadingIconDiv) {\n this.loadingIconDiv.remove();\n delete this.loadingIconDiv;\n }\n return Promise.reject(new Error(\"pdfPage is not loaded\"));\n }\n\n this.renderingState = RenderingStates.RUNNING;\n\n // Wrap the canvas so that if it has a CSS transform for high DPI the\n // overflow will be hidden in Firefox.\n const canvasWrapper = document.createElement(\"div\");\n canvasWrapper.style.width = div.style.width;\n canvasWrapper.style.height = div.style.height;\n canvasWrapper.classList.add(\"canvasWrapper\");\n\n if (this.annotationLayer?.div) {\n // The annotation layer needs to stay on top.\n div.insertBefore(canvasWrapper, this.annotationLayer.div);\n } else {\n div.appendChild(canvasWrapper);\n }\n\n let textLayer = null;\n if (this.textLayerMode !== TextLayerMode.DISABLE && this.textLayerFactory) {\n const textLayerDiv = document.createElement(\"div\");\n textLayerDiv.className = \"textLayer\";\n textLayerDiv.style.width = canvasWrapper.style.width;\n textLayerDiv.style.height = canvasWrapper.style.height;\n if (this.annotationLayer?.div) {\n // The annotation layer needs to stay on top.\n div.insertBefore(textLayerDiv, this.annotationLayer.div);\n } else {\n div.appendChild(textLayerDiv);\n }\n\n textLayer = this.textLayerFactory.createTextLayerBuilder(\n textLayerDiv,\n this.id - 1,\n this.viewport,\n this.textLayerMode === TextLayerMode.ENABLE_ENHANCE,\n this.eventBus,\n this.textHighlighter\n );\n }\n this.textLayer = textLayer;\n\n if (\n this.#annotationMode !== AnnotationMode.DISABLE &&\n this.annotationLayerFactory\n ) {\n this._annotationCanvasMap ||= new Map();\n this.annotationLayer ||=\n this.annotationLayerFactory.createAnnotationLayerBuilder(\n div,\n pdfPage,\n /* annotationStorage = */ null,\n this.imageResourcesPath,\n this.#annotationMode === AnnotationMode.ENABLE_FORMS,\n this.l10n,\n /* enableScripting = */ null,\n /* hasJSActionsPromise = */ null,\n /* mouseState = */ null,\n /* fieldObjectsPromise = */ null,\n /* annotationCanvasMap */ this._annotationCanvasMap\n );\n }\n\n if (this.xfaLayer?.div) {\n // The xfa layer needs to stay on top.\n div.appendChild(this.xfaLayer.div);\n }\n\n let renderContinueCallback = null;\n if (this.renderingQueue) {\n renderContinueCallback = cont => {\n if (!this.renderingQueue.isHighestPriority(this)) {\n this.renderingState = RenderingStates.PAUSED;\n this.resume = () => {\n this.renderingState = RenderingStates.RUNNING;\n cont();\n };\n return;\n }\n cont();\n };\n }\n\n const finishPaintTask = async (error = null) => {\n // The paintTask may have been replaced by a new one, so only remove\n // the reference to the paintTask if it matches the one that is\n // triggering this callback.\n if (paintTask === this.paintTask) {\n this.paintTask = null;\n }\n\n if (error instanceof RenderingCancelledException) {\n this._renderError = null;\n return;\n }\n this._renderError = error;\n\n this.renderingState = RenderingStates.FINISHED;\n\n if (this.loadingIconDiv) {\n this.loadingIconDiv.remove();\n delete this.loadingIconDiv;\n }\n this._resetZoomLayer(/* removeFromDOM = */ true);\n\n this.eventBus.dispatch(\"pagerendered\", {\n source: this,\n pageNumber: this.id,\n cssTransform: false,\n timestamp: performance.now(),\n error: this._renderError,\n });\n\n if (error) {\n throw error;\n }\n };\n\n const paintTask =\n this.renderer === RendererType.SVG\n ? this.paintOnSvg(canvasWrapper)\n : this.paintOnCanvas(canvasWrapper);\n paintTask.onRenderContinue = renderContinueCallback;\n this.paintTask = paintTask;\n\n const resultPromise = paintTask.promise.then(\n () => {\n return finishPaintTask(null).then(() => {\n if (textLayer) {\n const readableStream = pdfPage.streamTextContent({\n normalizeWhitespace: true,\n includeMarkedContent: true,\n });\n textLayer.setTextContentStream(readableStream);\n textLayer.render();\n }\n\n if (this.annotationLayer) {\n this._renderAnnotationLayer();\n }\n });\n },\n function (reason) {\n return finishPaintTask(reason);\n }\n );\n\n if (this.xfaLayerFactory) {\n if (!this.xfaLayer) {\n this.xfaLayer = this.xfaLayerFactory.createXfaLayerBuilder(\n div,\n pdfPage,\n /* annotationStorage = */ null\n );\n }\n this._renderXfaLayer();\n }\n\n // The structure tree is currently only supported when the text layer is\n // enabled and a canvas is used for rendering.\n if (this.structTreeLayerFactory && this.textLayer && this.canvas) {\n // The structure tree must be generated after the text layer for the\n // aria-owns to work.\n this._onTextLayerRendered = event => {\n if (event.pageNumber !== this.id) {\n return;\n }\n this.eventBus._off(\"textlayerrendered\", this._onTextLayerRendered);\n this._onTextLayerRendered = null;\n\n if (!this.canvas) {\n return; // The canvas was removed, prevent errors below.\n }\n this.pdfPage.getStructTree().then(tree => {\n if (!tree) {\n return;\n }\n if (!this.canvas) {\n return; // The canvas was removed, prevent errors below.\n }\n const treeDom = this.structTreeLayer.render(tree);\n treeDom.classList.add(\"structTree\");\n this.canvas.appendChild(treeDom);\n });\n };\n this.eventBus._on(\"textlayerrendered\", this._onTextLayerRendered);\n this.structTreeLayer =\n this.structTreeLayerFactory.createStructTreeLayerBuilder(pdfPage);\n }\n\n div.setAttribute(\"data-loaded\", true);\n\n this.eventBus.dispatch(\"pagerender\", {\n source: this,\n pageNumber: this.id,\n });\n return resultPromise;\n }\n\n paintOnCanvas(canvasWrapper) {\n const renderCapability = createPromiseCapability();\n const result = {\n promise: renderCapability.promise,\n onRenderContinue(cont) {\n cont();\n },\n cancel() {\n renderTask.cancel();\n },\n };\n\n const viewport = this.viewport;\n const canvas = document.createElement(\"canvas\");\n\n // Keep the canvas hidden until the first draw callback, or until drawing\n // is complete when `!this.renderingQueue`, to prevent black flickering.\n canvas.hidden = true;\n let isCanvasHidden = true;\n const showCanvas = function () {\n if (isCanvasHidden) {\n canvas.hidden = false;\n isCanvasHidden = false;\n }\n };\n\n canvasWrapper.appendChild(canvas);\n this.canvas = canvas;\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n canvas.mozOpaque = true;\n }\n\n const ctx = canvas.getContext(\"2d\", { alpha: false });\n const outputScale = getOutputScale(ctx);\n this.outputScale = outputScale;\n\n if (this.useOnlyCssZoom) {\n const actualSizeViewport = viewport.clone({\n scale: PixelsPerInch.PDF_TO_CSS_UNITS,\n });\n // Use a scale that makes the canvas have the originally intended size\n // of the page.\n outputScale.sx *= actualSizeViewport.width / viewport.width;\n outputScale.sy *= actualSizeViewport.height / viewport.height;\n outputScale.scaled = true;\n }\n\n if (this.maxCanvasPixels > 0) {\n const pixelsInViewport = viewport.width * viewport.height;\n const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport);\n if (outputScale.sx > maxScale || outputScale.sy > maxScale) {\n outputScale.sx = maxScale;\n outputScale.sy = maxScale;\n outputScale.scaled = true;\n this.hasRestrictedScaling = true;\n } else {\n this.hasRestrictedScaling = false;\n }\n }\n\n const sfx = approximateFraction(outputScale.sx);\n const sfy = approximateFraction(outputScale.sy);\n canvas.width = roundToDivide(viewport.width * outputScale.sx, sfx[0]);\n canvas.height = roundToDivide(viewport.height * outputScale.sy, sfy[0]);\n canvas.style.width = roundToDivide(viewport.width, sfx[1]) + \"px\";\n canvas.style.height = roundToDivide(viewport.height, sfy[1]) + \"px\";\n\n // Add the viewport so it's known what it was originally drawn with.\n this.paintedViewportMap.set(canvas, viewport);\n\n // Rendering area\n const transform = !outputScale.scaled\n ? null\n : [outputScale.sx, 0, 0, outputScale.sy, 0, 0];\n const renderContext = {\n canvasContext: ctx,\n transform,\n viewport: this.viewport,\n annotationMode: this.#annotationMode,\n optionalContentConfigPromise: this._optionalContentConfigPromise,\n annotationCanvasMap: this._annotationCanvasMap,\n };\n const renderTask = this.pdfPage.render(renderContext);\n renderTask.onContinue = function (cont) {\n showCanvas();\n if (result.onRenderContinue) {\n result.onRenderContinue(cont);\n } else {\n cont();\n }\n };\n\n renderTask.promise.then(\n function () {\n showCanvas();\n renderCapability.resolve();\n },\n function (error) {\n showCanvas();\n renderCapability.reject(error);\n }\n );\n return result;\n }\n\n paintOnSvg(wrapper) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"MOZCENTRAL || CHROME\")\n ) {\n // Return a mock object, to prevent errors such as e.g.\n // \"TypeError: paintTask.promise is undefined\".\n return {\n promise: Promise.reject(new Error(\"SVG rendering is not supported.\")),\n onRenderContinue(cont) {},\n cancel() {},\n };\n }\n\n let cancelled = false;\n const ensureNotCancelled = () => {\n if (cancelled) {\n throw new RenderingCancelledException(\n `Rendering cancelled, page ${this.id}`,\n \"svg\"\n );\n }\n };\n\n const pdfPage = this.pdfPage;\n const actualSizeViewport = this.viewport.clone({\n scale: PixelsPerInch.PDF_TO_CSS_UNITS,\n });\n const promise = pdfPage\n .getOperatorList({\n annotationMode: this.#annotationMode,\n })\n .then(opList => {\n ensureNotCancelled();\n const svgGfx = new SVGGraphics(\n pdfPage.commonObjs,\n pdfPage.objs,\n /* forceDataSchema = */ compatibilityParams.disableCreateObjectURL\n );\n return svgGfx.getSVG(opList, actualSizeViewport).then(svg => {\n ensureNotCancelled();\n this.svg = svg;\n this.paintedViewportMap.set(svg, actualSizeViewport);\n\n svg.style.width = wrapper.style.width;\n svg.style.height = wrapper.style.height;\n this.renderingState = RenderingStates.FINISHED;\n wrapper.appendChild(svg);\n });\n });\n\n return {\n promise,\n onRenderContinue(cont) {\n cont();\n },\n cancel() {\n cancelled = true;\n },\n };\n }\n\n /**\n * @param {string|null} label\n */\n setPageLabel(label) {\n this.pageLabel = typeof label === \"string\" ? label : null;\n\n if (this.pageLabel !== null) {\n this.div.setAttribute(\"data-page-label\", this.pageLabel);\n } else {\n this.div.removeAttribute(\"data-page-label\");\n }\n }\n}\n\nexport { PDFPageView };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n\nconst PDF_ROLE_TO_HTML_ROLE = {\n // Document level structure types\n Document: null, // There's a \"document\" role, but it doesn't make sense here.\n DocumentFragment: null,\n // Grouping level structure types\n Part: \"group\",\n Sect: \"group\", // XXX: There's a \"section\" role, but it's abstract.\n Div: \"group\",\n Aside: \"note\",\n NonStruct: \"none\",\n // Block level structure types\n P: null,\n // H<n>,\n H: \"heading\",\n Title: null,\n FENote: \"note\",\n // Sub-block level structure type\n Sub: \"group\",\n // General inline level structure types\n Lbl: null,\n Span: null,\n Em: null,\n Strong: null,\n Link: \"link\",\n Annot: \"note\",\n Form: \"form\",\n // Ruby and Warichu structure types\n Ruby: null,\n RB: null,\n RT: null,\n RP: null,\n Warichu: null,\n WT: null,\n WP: null,\n // List standard structure types\n L: \"list\",\n LI: \"listitem\",\n LBody: null,\n // Table standard structure types\n Table: \"table\",\n TR: \"row\",\n TH: \"columnheader\",\n TD: \"cell\",\n THead: \"columnheader\",\n TBody: null,\n TFoot: null,\n // Standard structure type Caption\n Caption: null,\n // Standard structure type Figure\n Figure: \"figure\",\n // Standard structure type Formula\n Formula: null,\n // standard structure type Artifact\n Artifact: null,\n};\n\nconst HEADING_PATTERN = /^H(\\d+)$/;\n\n/**\n * @typedef {Object} StructTreeLayerBuilderOptions\n * @property {PDFPageProxy} pdfPage\n */\n\nclass StructTreeLayerBuilder {\n /**\n * @param {StructTreeLayerBuilderOptions} options\n */\n constructor({ pdfPage }) {\n this.pdfPage = pdfPage;\n }\n\n render(structTree) {\n return this._walk(structTree);\n }\n\n _setAttributes(structElement, htmlElement) {\n if (structElement.alt !== undefined) {\n htmlElement.setAttribute(\"aria-label\", structElement.alt);\n }\n if (structElement.id !== undefined) {\n htmlElement.setAttribute(\"aria-owns\", structElement.id);\n }\n if (structElement.lang !== undefined) {\n htmlElement.setAttribute(\"lang\", structElement.lang);\n }\n }\n\n _walk(node) {\n if (!node) {\n return null;\n }\n\n const element = document.createElement(\"span\");\n if (\"role\" in node) {\n const { role } = node;\n const match = role.match(HEADING_PATTERN);\n if (match) {\n element.setAttribute(\"role\", \"heading\");\n element.setAttribute(\"aria-level\", match[1]);\n } else if (PDF_ROLE_TO_HTML_ROLE[role]) {\n element.setAttribute(\"role\", PDF_ROLE_TO_HTML_ROLE[role]);\n }\n }\n\n this._setAttributes(node, element);\n\n if (node.children) {\n if (node.children.length === 1 && \"id\" in node.children[0]) {\n // Often there is only one content node so just set the values on the\n // parent node to avoid creating an extra span.\n this._setAttributes(node.children[0], element);\n } else {\n for (const kid of node.children) {\n element.appendChild(this._walk(kid));\n }\n }\n }\n return element;\n }\n}\n\nexport { StructTreeLayerBuilder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_find_controller\").PDFFindController} PDFFindController */\n\n/**\n * @typedef {Object} TextHighlighterOptions\n * @property {PDFFindController} findController\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} pageIndex - The page index.\n */\n\n/**\n * TextHighlighter handles highlighting matches from the FindController in\n * either the text layer or XFA layer depending on the type of document.\n */\nclass TextHighlighter {\n /**\n * @param {TextHighlighterOptions} options\n */\n constructor({ findController, eventBus, pageIndex }) {\n this.findController = findController;\n this.matches = [];\n this.eventBus = eventBus;\n this.pageIdx = pageIndex;\n this._onUpdateTextLayerMatches = null;\n this.textDivs = null;\n this.textContentItemsStr = null;\n this.enabled = false;\n }\n\n /**\n * Store two arrays that will map DOM nodes to text they should contain.\n * The arrays should be of equal length and the array element at each index\n * should correspond to the other. e.g.\n * `items[0] = \"<span>Item 0</span>\" and texts[0] = \"Item 0\";\n *\n * @param {Array<Node>} divs\n * @param {Array<string>} texts\n */\n setTextMapping(divs, texts) {\n this.textDivs = divs;\n this.textContentItemsStr = texts;\n }\n\n /**\n * Start listening for events to update the highlighter and check if there are\n * any current matches that need be highlighted.\n */\n enable() {\n if (!this.textDivs || !this.textContentItemsStr) {\n throw new Error(\"Text divs and strings have not been set.\");\n }\n if (this.enabled) {\n throw new Error(\"TextHighlighter is already enabled.\");\n }\n this.enabled = true;\n if (!this._onUpdateTextLayerMatches) {\n this._onUpdateTextLayerMatches = evt => {\n if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) {\n this._updateMatches();\n }\n };\n this.eventBus._on(\n \"updatetextlayermatches\",\n this._onUpdateTextLayerMatches\n );\n }\n this._updateMatches();\n }\n\n disable() {\n if (!this.enabled) {\n return;\n }\n this.enabled = false;\n if (this._onUpdateTextLayerMatches) {\n this.eventBus._off(\n \"updatetextlayermatches\",\n this._onUpdateTextLayerMatches\n );\n this._onUpdateTextLayerMatches = null;\n }\n }\n\n _convertMatches(matches, matchesLength) {\n // Early exit if there is nothing to convert.\n if (!matches) {\n return [];\n }\n const { textContentItemsStr } = this;\n\n let i = 0,\n iIndex = 0;\n const end = textContentItemsStr.length - 1;\n const result = [];\n\n for (let m = 0, mm = matches.length; m < mm; m++) {\n // Calculate the start position.\n let matchIdx = matches[m];\n\n // Loop over the divIdxs.\n while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) {\n iIndex += textContentItemsStr[i].length;\n i++;\n }\n\n if (i === textContentItemsStr.length) {\n console.error(\"Could not find a matching mapping\");\n }\n\n const match = {\n begin: {\n divIdx: i,\n offset: matchIdx - iIndex,\n },\n };\n\n // Calculate the end position.\n matchIdx += matchesLength[m];\n\n // Somewhat the same array as above, but use > instead of >= to get\n // the end position right.\n while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {\n iIndex += textContentItemsStr[i].length;\n i++;\n }\n\n match.end = {\n divIdx: i,\n offset: matchIdx - iIndex,\n };\n result.push(match);\n }\n return result;\n }\n\n _renderMatches(matches) {\n // Early exit if there is nothing to render.\n if (matches.length === 0) {\n return;\n }\n const { findController, pageIdx } = this;\n const { textContentItemsStr, textDivs } = this;\n\n const isSelectedPage = pageIdx === findController.selected.pageIdx;\n const selectedMatchIdx = findController.selected.matchIdx;\n const highlightAll = findController.state.highlightAll;\n let prevEnd = null;\n const infinity = {\n divIdx: -1,\n offset: undefined,\n };\n\n function beginText(begin, className) {\n const divIdx = begin.divIdx;\n textDivs[divIdx].textContent = \"\";\n return appendTextToDiv(divIdx, 0, begin.offset, className);\n }\n\n function appendTextToDiv(divIdx, fromOffset, toOffset, className) {\n let div = textDivs[divIdx];\n if (div.nodeType === Node.TEXT_NODE) {\n const span = document.createElement(\"span\");\n div.parentNode.insertBefore(span, div);\n span.appendChild(div);\n textDivs[divIdx] = span;\n div = span;\n }\n const content = textContentItemsStr[divIdx].substring(\n fromOffset,\n toOffset\n );\n const node = document.createTextNode(content);\n if (className) {\n const span = document.createElement(\"span\");\n span.className = `${className} appended`;\n span.appendChild(node);\n div.appendChild(span);\n return className.includes(\"selected\") ? span.offsetLeft : 0;\n }\n div.appendChild(node);\n return 0;\n }\n\n let i0 = selectedMatchIdx,\n i1 = i0 + 1;\n if (highlightAll) {\n i0 = 0;\n i1 = matches.length;\n } else if (!isSelectedPage) {\n // Not highlighting all and this isn't the selected page, so do nothing.\n return;\n }\n\n for (let i = i0; i < i1; i++) {\n const match = matches[i];\n const begin = match.begin;\n const end = match.end;\n const isSelected = isSelectedPage && i === selectedMatchIdx;\n const highlightSuffix = isSelected ? \" selected\" : \"\";\n let selectedLeft = 0;\n\n // Match inside new div.\n if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {\n // If there was a previous div, then add the text at the end.\n if (prevEnd !== null) {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n }\n // Clear the divs and set the content until the starting point.\n beginText(begin);\n } else {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);\n }\n\n if (begin.divIdx === end.divIdx) {\n selectedLeft = appendTextToDiv(\n begin.divIdx,\n begin.offset,\n end.offset,\n \"highlight\" + highlightSuffix\n );\n } else {\n selectedLeft = appendTextToDiv(\n begin.divIdx,\n begin.offset,\n infinity.offset,\n \"highlight begin\" + highlightSuffix\n );\n for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {\n textDivs[n0].className = \"highlight middle\" + highlightSuffix;\n }\n beginText(end, \"highlight end\" + highlightSuffix);\n }\n prevEnd = end;\n\n if (isSelected) {\n // Attempt to scroll the selected match into view.\n findController.scrollMatchIntoView({\n element: textDivs[begin.divIdx],\n selectedLeft,\n pageIndex: pageIdx,\n matchIndex: selectedMatchIdx,\n });\n }\n }\n\n if (prevEnd) {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n }\n }\n\n _updateMatches() {\n if (!this.enabled) {\n return;\n }\n const { findController, matches, pageIdx } = this;\n const { textContentItemsStr, textDivs } = this;\n let clearedUntilDivIdx = -1;\n\n // Clear all current matches.\n for (let i = 0, ii = matches.length; i < ii; i++) {\n const match = matches[i];\n const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);\n for (let n = begin, end = match.end.divIdx; n <= end; n++) {\n const div = textDivs[n];\n div.textContent = textContentItemsStr[n];\n div.className = \"\";\n }\n clearedUntilDivIdx = match.end.divIdx + 1;\n }\n\n if (!findController?.highlightMatches) {\n return;\n }\n // Convert the matches on the `findController` into the match format\n // used for the textLayer.\n const pageMatches = findController.pageMatches[pageIdx] || null;\n const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null;\n\n this.matches = this._convertMatches(pageMatches, pageMatchesLength);\n this._renderMatches(this.matches);\n }\n}\n\nexport { TextHighlighter };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./text_highlighter\").TextHighlighter} TextHighlighter */\n\nimport { renderTextLayer } from \"pdfjs-lib\";\n\nconst EXPAND_DIVS_TIMEOUT = 300; // ms\n\n/**\n * @typedef {Object} TextLayerBuilderOptions\n * @property {HTMLDivElement} textLayerDiv - The text layer container.\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} pageIndex - The page index.\n * @property {PageViewport} viewport - The viewport of the text layer.\n * @property {TextHighlighter} highlighter - Optional object that will handle\n * highlighting text from the find controller.\n * @property {boolean} enhanceTextSelection - Option to turn on improved\n * text selection.\n */\n\n/**\n * The text layer builder provides text selection functionality for the PDF.\n * It does this by creating overlay divs over the PDF's text. These divs\n * contain text that matches the PDF text they are overlaying.\n */\nclass TextLayerBuilder {\n constructor({\n textLayerDiv,\n eventBus,\n pageIndex,\n viewport,\n highlighter = null,\n enhanceTextSelection = false,\n }) {\n this.textLayerDiv = textLayerDiv;\n this.eventBus = eventBus;\n this.textContent = null;\n this.textContentItemsStr = [];\n this.textContentStream = null;\n this.renderingDone = false;\n this.pageNumber = pageIndex + 1;\n this.viewport = viewport;\n this.textDivs = [];\n this.textLayerRenderTask = null;\n this.highlighter = highlighter;\n this.enhanceTextSelection = enhanceTextSelection;\n\n this._bindMouse();\n }\n\n /**\n * @private\n */\n _finishRendering() {\n this.renderingDone = true;\n\n if (!this.enhanceTextSelection) {\n const endOfContent = document.createElement(\"div\");\n endOfContent.className = \"endOfContent\";\n this.textLayerDiv.appendChild(endOfContent);\n }\n\n this.eventBus.dispatch(\"textlayerrendered\", {\n source: this,\n pageNumber: this.pageNumber,\n numTextDivs: this.textDivs.length,\n });\n }\n\n /**\n * Renders the text layer.\n *\n * @param {number} [timeout] - Wait for a specified amount of milliseconds\n * before rendering.\n */\n render(timeout = 0) {\n if (!(this.textContent || this.textContentStream) || this.renderingDone) {\n return;\n }\n this.cancel();\n\n this.textDivs.length = 0;\n this.highlighter?.setTextMapping(this.textDivs, this.textContentItemsStr);\n\n const textLayerFrag = document.createDocumentFragment();\n this.textLayerRenderTask = renderTextLayer({\n textContent: this.textContent,\n textContentStream: this.textContentStream,\n container: textLayerFrag,\n viewport: this.viewport,\n textDivs: this.textDivs,\n textContentItemsStr: this.textContentItemsStr,\n timeout,\n enhanceTextSelection: this.enhanceTextSelection,\n });\n this.textLayerRenderTask.promise.then(\n () => {\n this.textLayerDiv.appendChild(textLayerFrag);\n this._finishRendering();\n this.highlighter?.enable();\n },\n function (reason) {\n // Cancelled or failed to render text layer; skipping errors.\n }\n );\n }\n\n /**\n * Cancel rendering of the text layer.\n */\n cancel() {\n if (this.textLayerRenderTask) {\n this.textLayerRenderTask.cancel();\n this.textLayerRenderTask = null;\n }\n this.highlighter?.disable();\n }\n\n setTextContentStream(readableStream) {\n this.cancel();\n this.textContentStream = readableStream;\n }\n\n setTextContent(textContent) {\n this.cancel();\n this.textContent = textContent;\n }\n\n /**\n * Improves text selection by adding an additional div where the mouse was\n * clicked. This reduces flickering of the content if the mouse is slowly\n * dragged up or down.\n *\n * @private\n */\n _bindMouse() {\n const div = this.textLayerDiv;\n let expandDivsTimer = null;\n\n div.addEventListener(\"mousedown\", evt => {\n if (this.enhanceTextSelection && this.textLayerRenderTask) {\n this.textLayerRenderTask.expandTextDivs(true);\n if (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) &&\n expandDivsTimer\n ) {\n clearTimeout(expandDivsTimer);\n expandDivsTimer = null;\n }\n return;\n }\n\n const end = div.querySelector(\".endOfContent\");\n if (!end) {\n return;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n // On non-Firefox browsers, the selection will feel better if the height\n // of the `endOfContent` div is adjusted to start at mouse click\n // location. This avoids flickering when the selection moves up.\n // However it does not work when selection is started on empty space.\n let adjustTop = evt.target !== div;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n adjustTop =\n adjustTop &&\n window\n .getComputedStyle(end)\n .getPropertyValue(\"-moz-user-select\") !== \"none\";\n }\n if (adjustTop) {\n const divBounds = div.getBoundingClientRect();\n const r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height);\n end.style.top = (r * 100).toFixed(2) + \"%\";\n }\n }\n end.classList.add(\"active\");\n });\n\n div.addEventListener(\"mouseup\", () => {\n if (this.enhanceTextSelection && this.textLayerRenderTask) {\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n expandDivsTimer = setTimeout(() => {\n if (this.textLayerRenderTask) {\n this.textLayerRenderTask.expandTextDivs(false);\n }\n expandDivsTimer = null;\n }, EXPAND_DIVS_TIMEOUT);\n } else {\n this.textLayerRenderTask.expandTextDivs(false);\n }\n return;\n }\n\n const end = div.querySelector(\".endOfContent\");\n if (!end) {\n return;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n end.style.top = \"\";\n }\n end.classList.remove(\"active\");\n });\n }\n}\n\nexport { TextLayerBuilder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaLayer } from \"pdfjs-lib\";\n\n/**\n * @typedef {Object} XfaLayerBuilderOptions\n * @property {HTMLDivElement} pageDiv\n * @property {PDFPageProxy} pdfPage\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {Object} [xfaHtml]\n */\n\nclass XfaLayerBuilder {\n /**\n * @param {XfaLayerBuilderOptions} options\n */\n constructor({\n pageDiv,\n pdfPage,\n annotationStorage = null,\n linkService,\n xfaHtml = null,\n }) {\n this.pageDiv = pageDiv;\n this.pdfPage = pdfPage;\n this.annotationStorage = annotationStorage;\n this.linkService = linkService;\n this.xfaHtml = xfaHtml;\n\n this.div = null;\n this._cancelled = false;\n }\n\n /**\n * @param {PageViewport} viewport\n * @param {string} intent (default value is 'display')\n * @returns {Promise<Object | void>} A promise that is resolved when rendering\n * of the XFA layer is complete. The first rendering will return an object\n * with a `textDivs` property that can be used with the TextHighlighter.\n */\n render(viewport, intent = \"display\") {\n if (intent === \"print\") {\n const parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: this.div,\n xfaHtml: this.xfaHtml,\n annotationStorage: this.annotationStorage,\n linkService: this.linkService,\n intent,\n };\n\n // Create an xfa layer div and render the form\n const div = document.createElement(\"div\");\n this.pageDiv.appendChild(div);\n parameters.div = div;\n\n const result = XfaLayer.render(parameters);\n return Promise.resolve(result);\n }\n\n // intent === \"display\"\n return this.pdfPage\n .getXfa()\n .then(xfaHtml => {\n if (this._cancelled || !xfaHtml) {\n return { textDivs: [] };\n }\n\n const parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: this.div,\n xfaHtml,\n annotationStorage: this.annotationStorage,\n linkService: this.linkService,\n intent,\n };\n\n if (this.div) {\n return XfaLayer.update(parameters);\n }\n // Create an xfa layer div and render the form\n this.div = document.createElement(\"div\");\n this.pageDiv.appendChild(this.div);\n parameters.div = this.div;\n return XfaLayer.render(parameters);\n })\n .catch(error => {\n console.error(error);\n });\n }\n\n cancel() {\n this._cancelled = true;\n }\n\n hide() {\n if (!this.div) {\n return;\n }\n this.div.hidden = true;\n }\n}\n\nexport { XfaLayerBuilder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SCROLLBAR_PADDING, ScrollMode, SpreadMode } from \"./ui_utils.js\";\nimport { CursorTool } from \"./pdf_cursor_tools.js\";\nimport { PagesCountLimit } from \"./base_viewer.js\";\n\n/**\n * @typedef {Object} SecondaryToolbarOptions\n * @property {HTMLDivElement} toolbar - Container for the secondary toolbar.\n * @property {HTMLButtonElement} toggleButton - Button to toggle the visibility\n * of the secondary toolbar.\n * @property {HTMLDivElement} toolbarButtonContainer - Container where all the\n * toolbar buttons are placed. The maximum height of the toolbar is controlled\n * dynamically by adjusting the 'max-height' CSS property of this DOM element.\n * @property {HTMLButtonElement} presentationModeButton - Button for entering\n * presentation mode.\n * @property {HTMLButtonElement} openFileButton - Button to open a file.\n * @property {HTMLButtonElement} printButton - Button to print the document.\n * @property {HTMLButtonElement} downloadButton - Button to download the\n * document.\n * @property {HTMLAnchorElement} viewBookmarkButton - Button to obtain a\n * bookmark link to the current location in the document.\n * @property {HTMLButtonElement} firstPageButton - Button to go to the first\n * page in the document.\n * @property {HTMLButtonElement} lastPageButton - Button to go to the last page\n * in the document.\n * @property {HTMLButtonElement} pageRotateCwButton - Button to rotate the pages\n * clockwise.\n * @property {HTMLButtonElement} pageRotateCcwButton - Button to rotate the\n * pages counterclockwise.\n * @property {HTMLButtonElement} cursorSelectToolButton - Button to enable the\n * select tool.\n * @property {HTMLButtonElement} cursorHandToolButton - Button to enable the\n * hand tool.\n * @property {HTMLButtonElement} documentPropertiesButton - Button for opening\n * the document properties dialog.\n */\n\nclass SecondaryToolbar {\n /**\n * @param {SecondaryToolbarOptions} options\n * @param {HTMLDivElement} mainContainer\n * @param {EventBus} eventBus\n */\n constructor(options, mainContainer, eventBus) {\n this.toolbar = options.toolbar;\n this.toggleButton = options.toggleButton;\n this.toolbarButtonContainer = options.toolbarButtonContainer;\n this.buttons = [\n {\n element: options.presentationModeButton,\n eventName: \"presentationmode\",\n close: true,\n },\n { element: options.openFileButton, eventName: \"openfile\", close: true },\n { element: options.printButton, eventName: \"print\", close: true },\n { element: options.downloadButton, eventName: \"download\", close: true },\n { element: options.viewBookmarkButton, eventName: null, close: true },\n { element: options.firstPageButton, eventName: \"firstpage\", close: true },\n { element: options.lastPageButton, eventName: \"lastpage\", close: true },\n {\n element: options.pageRotateCwButton,\n eventName: \"rotatecw\",\n close: false,\n },\n {\n element: options.pageRotateCcwButton,\n eventName: \"rotateccw\",\n close: false,\n },\n {\n element: options.cursorSelectToolButton,\n eventName: \"switchcursortool\",\n eventDetails: { tool: CursorTool.SELECT },\n close: true,\n },\n {\n element: options.cursorHandToolButton,\n eventName: \"switchcursortool\",\n eventDetails: { tool: CursorTool.HAND },\n close: true,\n },\n {\n element: options.scrollPageButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.PAGE },\n close: true,\n },\n {\n element: options.scrollVerticalButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.VERTICAL },\n close: true,\n },\n {\n element: options.scrollHorizontalButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.HORIZONTAL },\n close: true,\n },\n {\n element: options.scrollWrappedButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.WRAPPED },\n close: true,\n },\n {\n element: options.spreadNoneButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.NONE },\n close: true,\n },\n {\n element: options.spreadOddButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.ODD },\n close: true,\n },\n {\n element: options.spreadEvenButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.EVEN },\n close: true,\n },\n {\n element: options.documentPropertiesButton,\n eventName: \"documentproperties\",\n close: true,\n },\n ];\n this.items = {\n firstPage: options.firstPageButton,\n lastPage: options.lastPageButton,\n pageRotateCw: options.pageRotateCwButton,\n pageRotateCcw: options.pageRotateCcwButton,\n };\n\n this.mainContainer = mainContainer;\n this.eventBus = eventBus;\n\n this.opened = false;\n this.containerHeight = null;\n this.previousContainerHeight = null;\n\n this.reset();\n\n // Bind the event listeners for click, cursor tool, and scroll/spread mode\n // actions.\n this._bindClickListeners();\n this._bindCursorToolsListener(options);\n this._bindScrollModeListener(options);\n this._bindSpreadModeListener(options);\n\n // Bind the event listener for adjusting the 'max-height' of the toolbar.\n this.eventBus._on(\"resize\", this._setMaxHeight.bind(this));\n }\n\n /**\n * @type {boolean}\n */\n get isOpen() {\n return this.opened;\n }\n\n setPageNumber(pageNumber) {\n this.pageNumber = pageNumber;\n this._updateUIState();\n }\n\n setPagesCount(pagesCount) {\n this.pagesCount = pagesCount;\n this._updateUIState();\n }\n\n reset() {\n this.pageNumber = 0;\n this.pagesCount = 0;\n this._updateUIState();\n\n // Reset the Scroll/Spread buttons too, since they're document specific.\n this.eventBus.dispatch(\"secondarytoolbarreset\", { source: this });\n }\n\n _updateUIState() {\n this.items.firstPage.disabled = this.pageNumber <= 1;\n this.items.lastPage.disabled = this.pageNumber >= this.pagesCount;\n this.items.pageRotateCw.disabled = this.pagesCount === 0;\n this.items.pageRotateCcw.disabled = this.pagesCount === 0;\n }\n\n _bindClickListeners() {\n // Button to toggle the visibility of the secondary toolbar.\n this.toggleButton.addEventListener(\"click\", this.toggle.bind(this));\n\n // All items within the secondary toolbar.\n for (const { element, eventName, close, eventDetails } of this.buttons) {\n element.addEventListener(\"click\", evt => {\n if (eventName !== null) {\n const details = { source: this };\n for (const property in eventDetails) {\n details[property] = eventDetails[property];\n }\n this.eventBus.dispatch(eventName, details);\n }\n if (close) {\n this.close();\n }\n });\n }\n }\n\n _bindCursorToolsListener(buttons) {\n this.eventBus._on(\"cursortoolchanged\", function ({ tool }) {\n buttons.cursorSelectToolButton.classList.toggle(\n \"toggled\",\n tool === CursorTool.SELECT\n );\n buttons.cursorHandToolButton.classList.toggle(\n \"toggled\",\n tool === CursorTool.HAND\n );\n });\n }\n\n _bindScrollModeListener(buttons) {\n const scrollModeChanged = ({ mode }) => {\n buttons.scrollPageButton.classList.toggle(\n \"toggled\",\n mode === ScrollMode.PAGE\n );\n buttons.scrollVerticalButton.classList.toggle(\n \"toggled\",\n mode === ScrollMode.VERTICAL\n );\n buttons.scrollHorizontalButton.classList.toggle(\n \"toggled\",\n mode === ScrollMode.HORIZONTAL\n );\n buttons.scrollWrappedButton.classList.toggle(\n \"toggled\",\n mode === ScrollMode.WRAPPED\n );\n\n // Permanently *disable* the Scroll buttons when PAGE-scrolling is being\n // enforced for *very* long/large documents; please see the `BaseViewer`.\n const forceScrollModePage =\n this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE;\n buttons.scrollPageButton.disabled = forceScrollModePage;\n buttons.scrollVerticalButton.disabled = forceScrollModePage;\n buttons.scrollHorizontalButton.disabled = forceScrollModePage;\n buttons.scrollWrappedButton.disabled = forceScrollModePage;\n\n // Temporarily *disable* the Spread buttons when horizontal scrolling is\n // enabled, since the non-default Spread modes doesn't affect the layout.\n const isScrollModeHorizontal = mode === ScrollMode.HORIZONTAL;\n buttons.spreadNoneButton.disabled = isScrollModeHorizontal;\n buttons.spreadOddButton.disabled = isScrollModeHorizontal;\n buttons.spreadEvenButton.disabled = isScrollModeHorizontal;\n };\n this.eventBus._on(\"scrollmodechanged\", scrollModeChanged);\n\n this.eventBus._on(\"secondarytoolbarreset\", evt => {\n if (evt.source === this) {\n scrollModeChanged({ mode: ScrollMode.VERTICAL });\n }\n });\n }\n\n _bindSpreadModeListener(buttons) {\n function spreadModeChanged({ mode }) {\n buttons.spreadNoneButton.classList.toggle(\n \"toggled\",\n mode === SpreadMode.NONE\n );\n buttons.spreadOddButton.classList.toggle(\n \"toggled\",\n mode === SpreadMode.ODD\n );\n buttons.spreadEvenButton.classList.toggle(\n \"toggled\",\n mode === SpreadMode.EVEN\n );\n }\n this.eventBus._on(\"spreadmodechanged\", spreadModeChanged);\n\n this.eventBus._on(\"secondarytoolbarreset\", evt => {\n if (evt.source === this) {\n spreadModeChanged({ mode: SpreadMode.NONE });\n }\n });\n }\n\n open() {\n if (this.opened) {\n return;\n }\n this.opened = true;\n this._setMaxHeight();\n\n this.toggleButton.classList.add(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.toolbar.classList.remove(\"hidden\");\n }\n\n close() {\n if (!this.opened) {\n return;\n }\n this.opened = false;\n this.toolbar.classList.add(\"hidden\");\n this.toggleButton.classList.remove(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"false\");\n }\n\n toggle() {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * @private\n */\n _setMaxHeight() {\n if (!this.opened) {\n return; // Only adjust the 'max-height' if the toolbar is visible.\n }\n this.containerHeight = this.mainContainer.clientHeight;\n\n if (this.containerHeight === this.previousContainerHeight) {\n return;\n }\n this.toolbarButtonContainer.style.maxHeight = `${\n this.containerHeight - SCROLLBAR_PADDING\n }px`;\n\n this.previousContainerHeight = this.containerHeight;\n }\n}\n\nexport { SecondaryToolbar };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n animationStarted,\n DEFAULT_SCALE,\n DEFAULT_SCALE_VALUE,\n MAX_SCALE,\n MIN_SCALE,\n noContextMenuHandler,\n} from \"./ui_utils.js\";\n\nconst PAGE_NUMBER_LOADING_INDICATOR = \"visiblePageIsLoading\";\n\n/**\n * @typedef {Object} ToolbarOptions\n * @property {HTMLDivElement} container - Container for the secondary toolbar.\n * @property {HTMLSpanElement} numPages - Label that contains number of pages.\n * @property {HTMLInputElement} pageNumber - Control for display and user input\n * of the current page number.\n * @property {HTMLSelectElement} scaleSelect - Scale selection control.\n * Its width is adjusted, when necessary, on UI localization.\n * @property {HTMLOptionElement} customScaleOption - The item used to display\n * a non-predefined scale.\n * @property {HTMLButtonElement} previous - Button to go to the previous page.\n * @property {HTMLButtonElement} next - Button to go to the next page.\n * @property {HTMLButtonElement} zoomIn - Button to zoom in the pages.\n * @property {HTMLButtonElement} zoomOut - Button to zoom out the pages.\n * @property {HTMLButtonElement} viewFind - Button to open find bar.\n * @property {HTMLButtonElement} openFile - Button to open a new document.\n * @property {HTMLButtonElement} presentationModeButton - Button to switch to\n * presentation mode.\n * @property {HTMLButtonElement} download - Button to download the document.\n * @property {HTMLAnchorElement} viewBookmark - Button to obtain a bookmark link\n * to the current location in the document.\n */\n\nclass Toolbar {\n /**\n * @param {ToolbarOptions} options\n * @param {EventBus} eventBus\n * @param {IL10n} l10n - Localization service.\n */\n constructor(options, eventBus, l10n) {\n this.toolbar = options.container;\n this.eventBus = eventBus;\n this.l10n = l10n;\n this.buttons = [\n { element: options.previous, eventName: \"previouspage\" },\n { element: options.next, eventName: \"nextpage\" },\n { element: options.zoomIn, eventName: \"zoomin\" },\n { element: options.zoomOut, eventName: \"zoomout\" },\n { element: options.openFile, eventName: \"openfile\" },\n { element: options.print, eventName: \"print\" },\n {\n element: options.presentationModeButton,\n eventName: \"presentationmode\",\n },\n { element: options.download, eventName: \"download\" },\n { element: options.viewBookmark, eventName: null },\n ];\n this.items = {\n numPages: options.numPages,\n pageNumber: options.pageNumber,\n scaleSelect: options.scaleSelect,\n customScaleOption: options.customScaleOption,\n previous: options.previous,\n next: options.next,\n zoomIn: options.zoomIn,\n zoomOut: options.zoomOut,\n };\n\n this._wasLocalized = false;\n this.reset();\n\n // Bind the event listeners for click and various other actions.\n this._bindListeners();\n }\n\n setPageNumber(pageNumber, pageLabel) {\n this.pageNumber = pageNumber;\n this.pageLabel = pageLabel;\n this._updateUIState(false);\n }\n\n setPagesCount(pagesCount, hasPageLabels) {\n this.pagesCount = pagesCount;\n this.hasPageLabels = hasPageLabels;\n this._updateUIState(true);\n }\n\n setPageScale(pageScaleValue, pageScale) {\n this.pageScaleValue = (pageScaleValue || pageScale).toString();\n this.pageScale = pageScale;\n this._updateUIState(false);\n }\n\n reset() {\n this.pageNumber = 0;\n this.pageLabel = null;\n this.hasPageLabels = false;\n this.pagesCount = 0;\n this.pageScaleValue = DEFAULT_SCALE_VALUE;\n this.pageScale = DEFAULT_SCALE;\n this._updateUIState(true);\n this.updateLoadingIndicatorState();\n }\n\n _bindListeners() {\n const { pageNumber, scaleSelect } = this.items;\n const self = this;\n\n // The buttons within the toolbar.\n for (const { element, eventName } of this.buttons) {\n element.addEventListener(\"click\", evt => {\n if (eventName !== null) {\n this.eventBus.dispatch(eventName, { source: this });\n }\n });\n }\n // The non-button elements within the toolbar.\n pageNumber.addEventListener(\"click\", function () {\n this.select();\n });\n pageNumber.addEventListener(\"change\", function () {\n self.eventBus.dispatch(\"pagenumberchanged\", {\n source: self,\n value: this.value,\n });\n });\n\n scaleSelect.addEventListener(\"change\", function () {\n if (this.value === \"custom\") {\n return;\n }\n self.eventBus.dispatch(\"scalechanged\", {\n source: self,\n value: this.value,\n });\n });\n // Here we depend on browsers dispatching the \"click\" event *after* the\n // \"change\" event, when the <select>-element changes.\n scaleSelect.addEventListener(\"click\", function (evt) {\n const target = evt.target;\n // Remove focus when an <option>-element was *clicked*, to improve the UX\n // for mouse users (fixes bug 1300525 and issue 4923).\n if (\n this.value === self.pageScaleValue &&\n target.tagName.toUpperCase() === \"OPTION\"\n ) {\n this.blur();\n }\n });\n // Suppress context menus for some controls.\n scaleSelect.oncontextmenu = noContextMenuHandler;\n\n this.eventBus._on(\"localized\", () => {\n this._wasLocalized = true;\n this._adjustScaleWidth();\n this._updateUIState(true);\n });\n }\n\n _updateUIState(resetNumPages = false) {\n if (!this._wasLocalized) {\n // Don't update the UI state until we localize the toolbar.\n return;\n }\n const { pageNumber, pagesCount, pageScaleValue, pageScale, items } = this;\n\n if (resetNumPages) {\n if (this.hasPageLabels) {\n items.pageNumber.type = \"text\";\n } else {\n items.pageNumber.type = \"number\";\n this.l10n.get(\"of_pages\", { pagesCount }).then(msg => {\n items.numPages.textContent = msg;\n });\n }\n items.pageNumber.max = pagesCount;\n }\n\n if (this.hasPageLabels) {\n items.pageNumber.value = this.pageLabel;\n this.l10n.get(\"page_of_pages\", { pageNumber, pagesCount }).then(msg => {\n items.numPages.textContent = msg;\n });\n } else {\n items.pageNumber.value = pageNumber;\n }\n\n items.previous.disabled = pageNumber <= 1;\n items.next.disabled = pageNumber >= pagesCount;\n\n items.zoomOut.disabled = pageScale <= MIN_SCALE;\n items.zoomIn.disabled = pageScale >= MAX_SCALE;\n\n this.l10n\n .get(\"page_scale_percent\", { scale: Math.round(pageScale * 10000) / 100 })\n .then(msg => {\n let predefinedValueFound = false;\n for (const option of items.scaleSelect.options) {\n if (option.value !== pageScaleValue) {\n option.selected = false;\n continue;\n }\n option.selected = true;\n predefinedValueFound = true;\n }\n if (!predefinedValueFound) {\n items.customScaleOption.textContent = msg;\n items.customScaleOption.selected = true;\n }\n });\n }\n\n updateLoadingIndicatorState(loading = false) {\n const pageNumberInput = this.items.pageNumber;\n\n pageNumberInput.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading);\n }\n\n /**\n * Increase the width of the zoom dropdown DOM element if, and only if, it's\n * too narrow to fit the *longest* of the localized strings.\n * @private\n */\n async _adjustScaleWidth() {\n const { items, l10n } = this;\n\n const predefinedValuesPromise = Promise.all([\n l10n.get(\"page_scale_auto\"),\n l10n.get(\"page_scale_actual\"),\n l10n.get(\"page_scale_fit\"),\n l10n.get(\"page_scale_width\"),\n ]);\n\n const style = getComputedStyle(items.scaleSelect),\n scaleSelectContainerWidth = parseInt(\n style.getPropertyValue(\"--scale-select-container-width\"),\n 10\n ),\n scaleSelectOverflow = parseInt(\n style.getPropertyValue(\"--scale-select-overflow\"),\n 10\n );\n\n // The temporary canvas is used to measure text length in the DOM.\n let canvas = document.createElement(\"canvas\");\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n canvas.mozOpaque = true;\n }\n let ctx = canvas.getContext(\"2d\", { alpha: false });\n\n await animationStarted;\n ctx.font = `${style.fontSize} ${style.fontFamily}`;\n\n let maxWidth = 0;\n for (const predefinedValue of await predefinedValuesPromise) {\n const { width } = ctx.measureText(predefinedValue);\n if (width > maxWidth) {\n maxWidth = width;\n }\n }\n maxWidth += 2 * scaleSelectOverflow;\n\n if (maxWidth > scaleSelectContainerWidth) {\n const doc = document.documentElement;\n doc.style.setProperty(\"--scale-select-container-width\", `${maxWidth}px`);\n }\n // Zeroing the width and height cause Firefox to release graphics resources\n // immediately, which can greatly reduce memory consumption.\n canvas.width = 0;\n canvas.height = 0;\n canvas = ctx = null;\n }\n}\n\nexport { Toolbar };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20;\n\n/**\n * View History - This is a utility for saving various view parameters for\n * recently opened files.\n *\n * The way that the view parameters are stored depends on how PDF.js is built,\n * for 'gulp <flag>' the following cases exist:\n * - MOZCENTRAL - uses sessionStorage.\n * - GENERIC or CHROME - uses localStorage, if it is available.\n */\nclass ViewHistory {\n constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) {\n this.fingerprint = fingerprint;\n this.cacheSize = cacheSize;\n\n this._initializedPromise = this._readFromStorage().then(databaseStr => {\n const database = JSON.parse(databaseStr || \"{}\");\n let index = -1;\n if (!Array.isArray(database.files)) {\n database.files = [];\n } else {\n while (database.files.length >= this.cacheSize) {\n database.files.shift();\n }\n\n for (let i = 0, ii = database.files.length; i < ii; i++) {\n const branch = database.files[i];\n if (branch.fingerprint === this.fingerprint) {\n index = i;\n break;\n }\n }\n }\n if (index === -1) {\n index = database.files.push({ fingerprint: this.fingerprint }) - 1;\n }\n this.file = database.files[index];\n this.database = database;\n });\n }\n\n async _writeToStorage() {\n const databaseStr = JSON.stringify(this.database);\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n sessionStorage.setItem(\"pdfjs.history\", databaseStr);\n return;\n }\n localStorage.setItem(\"pdfjs.history\", databaseStr);\n }\n\n async _readFromStorage() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return sessionStorage.getItem(\"pdfjs.history\");\n }\n return localStorage.getItem(\"pdfjs.history\");\n }\n\n async set(name, val) {\n await this._initializedPromise;\n this.file[name] = val;\n return this._writeToStorage();\n }\n\n async setMultiple(properties) {\n await this._initializedPromise;\n for (const name in properties) {\n this.file[name] = properties[name];\n }\n return this._writeToStorage();\n }\n\n async get(name, defaultValue) {\n await this._initializedPromise;\n const val = this.file[name];\n return val !== undefined ? val : defaultValue;\n }\n\n async getMultiple(properties) {\n await this._initializedPromise;\n const values = Object.create(null);\n\n for (const name in properties) {\n const val = this.file[name];\n values[name] = val !== undefined ? val : properties[name];\n }\n return values;\n }\n}\n\nexport { ViewHistory };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DefaultExternalServices, PDFViewerApplication } from \"./app.js\";\nimport { BasePreferences } from \"./preferences.js\";\nimport { DownloadManager } from \"./download_manager.js\";\nimport { GenericL10n } from \"./genericl10n.js\";\nimport { GenericScripting } from \"./generic_scripting.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\n 'Module \"pdfjs-web/genericcom\" shall not be used outside ' +\n \"GENERIC build.\"\n );\n}\n\nconst GenericCom = {};\n\nclass GenericPreferences extends BasePreferences {\n async _writeToStorage(prefObj) {\n localStorage.setItem(\"pdfjs.preferences\", JSON.stringify(prefObj));\n }\n\n async _readFromStorage(prefObj) {\n return JSON.parse(localStorage.getItem(\"pdfjs.preferences\"));\n }\n}\n\nclass GenericExternalServices extends DefaultExternalServices {\n static createDownloadManager(options) {\n return new DownloadManager();\n }\n\n static createPreferences() {\n return new GenericPreferences();\n }\n\n static createL10n({ locale = \"en-US\" }) {\n return new GenericL10n(locale);\n }\n\n static createScripting({ sandboxBundleSrc }) {\n return new GenericScripting(sandboxBundleSrc);\n }\n}\nPDFViewerApplication.externalServices = GenericExternalServices;\n\nexport { GenericCom };\n","/* Copyright 2013 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppOptions, OptionKind } from \"./app_options.js\";\n\n/**\n * BasePreferences - Abstract base class for storing persistent settings.\n * Used for settings that should be applied to all opened documents,\n * or every time the viewer is loaded.\n */\nclass BasePreferences {\n constructor() {\n if (this.constructor === BasePreferences) {\n throw new Error(\"Cannot initialize BasePreferences.\");\n }\n Object.defineProperty(this, \"defaults\", {\n value: Object.freeze(\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? AppOptions.getAll(OptionKind.PREFERENCE)\n : PDFJSDev.eval(\"DEFAULT_PREFERENCES\")\n ),\n writable: false,\n enumerable: true,\n configurable: false,\n });\n this.prefs = Object.create(null);\n\n this._initializedPromise = this._readFromStorage(this.defaults).then(\n prefs => {\n for (const name in this.defaults) {\n const prefValue = prefs?.[name];\n // Ignore preferences whose types don't match the default values.\n if (typeof prefValue === typeof this.defaults[name]) {\n this.prefs[name] = prefValue;\n }\n }\n }\n );\n }\n\n /**\n * Stub function for writing preferences to storage.\n * @param {Object} prefObj The preferences that should be written to storage.\n * @returns {Promise} A promise that is resolved when the preference values\n * have been written.\n */\n async _writeToStorage(prefObj) {\n throw new Error(\"Not implemented: _writeToStorage\");\n }\n\n /**\n * Stub function for reading preferences from storage.\n * @param {Object} prefObj The preferences that should be read from storage.\n * @returns {Promise} A promise that is resolved with an {Object} containing\n * the preferences that have been read.\n */\n async _readFromStorage(prefObj) {\n throw new Error(\"Not implemented: _readFromStorage\");\n }\n\n /**\n * Reset the preferences to their default values and update storage.\n * @returns {Promise} A promise that is resolved when the preference values\n * have been reset.\n */\n async reset() {\n await this._initializedPromise;\n this.prefs = Object.create(null);\n return this._writeToStorage(this.defaults);\n }\n\n /**\n * Set the value of a preference.\n * @param {string} name The name of the preference that should be changed.\n * @param {boolean|number|string} value The new value of the preference.\n * @returns {Promise} A promise that is resolved when the value has been set,\n * provided that the preference exists and the types match.\n */\n async set(name, value) {\n await this._initializedPromise;\n const defaultValue = this.defaults[name];\n\n if (defaultValue === undefined) {\n throw new Error(`Set preference: \"${name}\" is undefined.`);\n } else if (value === undefined) {\n throw new Error(\"Set preference: no value is specified.\");\n }\n const valueType = typeof value;\n const defaultType = typeof defaultValue;\n\n if (valueType !== defaultType) {\n if (valueType === \"number\" && defaultType === \"string\") {\n value = value.toString();\n } else {\n throw new Error(\n `Set preference: \"${value}\" is a ${valueType}, expected a ${defaultType}.`\n );\n }\n } else {\n if (valueType === \"number\" && !Number.isInteger(value)) {\n throw new Error(`Set preference: \"${value}\" must be an integer.`);\n }\n }\n this.prefs[name] = value;\n return this._writeToStorage(this.prefs);\n }\n\n /**\n * Get the value of a preference.\n * @param {string} name The name of the preference whose value is requested.\n * @returns {Promise} A promise resolved with a {boolean|number|string}\n * containing the value of the preference.\n */\n async get(name) {\n await this._initializedPromise;\n const defaultValue = this.defaults[name],\n prefValue = this.prefs[name];\n\n if (defaultValue === undefined) {\n throw new Error(`Get preference: \"${name}\" is undefined.`);\n }\n return prefValue !== undefined ? prefValue : defaultValue;\n }\n\n /**\n * Get the values of all preferences.\n * @returns {Promise} A promise that is resolved with an {Object} containing\n * the values of all preferences.\n */\n async getAll() {\n await this._initializedPromise;\n const obj = Object.create(null);\n\n for (const name in this.defaults) {\n const prefValue = this.prefs[name];\n obj[name] = prefValue !== undefined ? prefValue : this.defaults[name];\n }\n return obj;\n }\n}\n\nexport { BasePreferences };\n","/* Copyright 2013 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n\nimport { createObjectURL, createValidAbsoluteUrl, isPdfFile } from \"pdfjs-lib\";\nimport { compatibilityParams } from \"./app_options.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"CHROME || GENERIC\")) {\n throw new Error(\n 'Module \"pdfjs-web/download_manager\" shall not be used ' +\n \"outside CHROME and GENERIC builds.\"\n );\n}\n\nfunction download(blobUrl, filename) {\n const a = document.createElement(\"a\");\n if (!a.click) {\n throw new Error('DownloadManager: \"a.click()\" is not supported.');\n }\n a.href = blobUrl;\n a.target = \"_parent\";\n // Use a.download if available. This increases the likelihood that\n // the file is downloaded instead of opened by another PDF plugin.\n if (\"download\" in a) {\n a.download = filename;\n }\n // <a> must be in the document for recent Firefox versions,\n // otherwise .click() is ignored.\n (document.body || document.documentElement).appendChild(a);\n a.click();\n a.remove();\n}\n\n/**\n * @implements {IDownloadManager}\n */\nclass DownloadManager {\n constructor() {\n this._openBlobUrls = new WeakMap();\n }\n\n downloadUrl(url, filename) {\n if (!createValidAbsoluteUrl(url, \"http://example.com\")) {\n console.error(`downloadUrl - not a valid URL: ${url}`);\n return; // restricted/invalid URL\n }\n download(url + \"#pdfjs.action=download\", filename);\n }\n\n downloadData(data, filename, contentType) {\n const blobUrl = createObjectURL(\n data,\n contentType,\n compatibilityParams.disableCreateObjectURL\n );\n download(blobUrl, filename);\n }\n\n /**\n * @returns {boolean} Indicating if the data was opened.\n */\n openOrDownloadData(element, data, filename) {\n const isPdfData = isPdfFile(filename);\n const contentType = isPdfData ? \"application/pdf\" : \"\";\n\n if (isPdfData && !compatibilityParams.disableCreateObjectURL) {\n let blobUrl = this._openBlobUrls.get(element);\n if (!blobUrl) {\n blobUrl = URL.createObjectURL(new Blob([data], { type: contentType }));\n this._openBlobUrls.set(element, blobUrl);\n }\n let viewerUrl;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // The current URL is the viewer, let's use it and append the file.\n viewerUrl = \"?file=\" + encodeURIComponent(blobUrl + \"#\" + filename);\n } else if (PDFJSDev.test(\"CHROME\")) {\n // In the Chrome extension, the URL is rewritten using the history API\n // in viewer.js, so an absolute URL must be generated.\n viewerUrl =\n // eslint-disable-next-line no-undef\n chrome.runtime.getURL(\"/content/web/viewer.html\") +\n \"?file=\" +\n encodeURIComponent(blobUrl + \"#\" + filename);\n }\n\n try {\n window.open(viewerUrl);\n return true;\n } catch (ex) {\n console.error(`openOrDownloadData: ${ex}`);\n // Release the `blobUrl`, since opening it failed, and fallback to\n // downloading the PDF file.\n URL.revokeObjectURL(blobUrl);\n this._openBlobUrls.delete(element);\n }\n }\n\n this.downloadData(data, filename, contentType);\n return false;\n }\n\n /**\n * @param sourceEventType {string} Used to signal what triggered the download.\n * The version of PDF.js integrated with Firefox uses this to to determine\n * which dialog to show. \"save\" triggers \"save as\" and \"download\" triggers\n * the \"open with\" dialog.\n */\n download(blob, url, filename, sourceEventType = \"download\") {\n if (compatibilityParams.disableCreateObjectURL) {\n // URL.createObjectURL is not supported\n this.downloadUrl(url, filename);\n return;\n }\n const blobUrl = URL.createObjectURL(blob);\n download(blobUrl, filename);\n }\n}\n\nexport { DownloadManager };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n\nimport \"../external/webL10n/l10n.js\";\nimport { fixupLangCode, getL10nFallback } from \"./l10n_utils.js\";\n\nconst webL10n = document.webL10n;\n\n/**\n * @implements {IL10n}\n */\nclass GenericL10n {\n constructor(lang) {\n this._lang = lang;\n this._ready = new Promise((resolve, reject) => {\n webL10n.setLanguage(fixupLangCode(lang), () => {\n resolve(webL10n);\n });\n });\n }\n\n async getLanguage() {\n const l10n = await this._ready;\n return l10n.getLanguage();\n }\n\n async getDirection() {\n const l10n = await this._ready;\n return l10n.getDirection();\n }\n\n async get(key, args = null, fallback = getL10nFallback(key, args)) {\n const l10n = await this._ready;\n return l10n.get(key, args, fallback);\n }\n\n async translate(element) {\n const l10n = await this._ready;\n return l10n.translate(element);\n }\n}\n\nexport { GenericL10n };\n","/**\n * Copyright (c) 2011-2013 Fabien Cazenave, Mozilla.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/*\n Additional modifications for PDF.js project:\n - Disables language initialization on page loading.\n - Disables document translation on page loading.\n - Removes consoleWarn and consoleLog and use console.log/warn directly.\n - Removes window._ assignment.\n - Remove compatibility code for OldIE.\n - Replaces `String.prototype.substr()` with `String.prototype.substring()`.\n - Removes `fireL10nReadyEvent` since the \"localized\" event it dispatches\n is unused and may clash with an identically named event in the viewer.\n*/\n\n/*jshint browser: true, devel: true, es5: true, globalstrict: true */\n'use strict';\n\ndocument.webL10n = (function(window, document, undefined) {\n var gL10nData = {};\n var gTextData = '';\n var gTextProp = 'textContent';\n var gLanguage = '';\n var gMacros = {};\n var gReadyState = 'loading';\n\n\n /**\n * Synchronously loading l10n resources significantly minimizes flickering\n * from displaying the app with non-localized strings and then updating the\n * strings. Although this will block all script execution on this page, we\n * expect that the l10n resources are available locally on flash-storage.\n *\n * As synchronous XHR is generally considered as a bad idea, we're still\n * loading l10n resources asynchronously -- but we keep this in a setting,\n * just in case... and applications using this library should hide their\n * content until the `localized' event happens.\n */\n\n var gAsyncResourceLoading = true; // read-only\n\n\n /**\n * DOM helpers for the so-called \"HTML API\".\n *\n * These functions are written for modern browsers. For old versions of IE,\n * they're overridden in the 'startup' section at the end of this file.\n */\n\n function getL10nResourceLinks() {\n return document.querySelectorAll('link[type=\"application/l10n\"]');\n }\n\n function getL10nDictionary() {\n var script = document.querySelector('script[type=\"application/l10n\"]');\n // TODO: support multiple and external JSON dictionaries\n return script ? JSON.parse(script.innerHTML) : null;\n }\n\n function getTranslatableChildren(element) {\n return element ? element.querySelectorAll('*[data-l10n-id]') : [];\n }\n\n function getL10nAttributes(element) {\n if (!element)\n return {};\n\n var l10nId = element.getAttribute('data-l10n-id');\n var l10nArgs = element.getAttribute('data-l10n-args');\n var args = {};\n if (l10nArgs) {\n try {\n args = JSON.parse(l10nArgs);\n } catch (e) {\n console.warn('could not parse arguments for #' + l10nId);\n }\n }\n return { id: l10nId, args: args };\n }\n\n function xhrLoadText(url, onSuccess, onFailure) {\n onSuccess = onSuccess || function _onSuccess(data) {};\n onFailure = onFailure || function _onFailure() {};\n\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, gAsyncResourceLoading);\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType('text/plain; charset=utf-8');\n }\n xhr.onreadystatechange = function() {\n if (xhr.readyState == 4) {\n if (xhr.status == 200 || xhr.status === 0) {\n onSuccess(xhr.responseText);\n } else {\n onFailure();\n }\n }\n };\n xhr.onerror = onFailure;\n xhr.ontimeout = onFailure;\n\n // in Firefox OS with the app:// protocol, trying to XHR a non-existing\n // URL will raise an exception here -- hence this ugly try...catch.\n try {\n xhr.send(null);\n } catch (e) {\n onFailure();\n }\n }\n\n\n /**\n * l10n resource parser:\n * - reads (async XHR) the l10n resource matching `lang';\n * - imports linked resources (synchronously) when specified;\n * - parses the text data (fills `gL10nData' and `gTextData');\n * - triggers success/failure callbacks when done.\n *\n * @param {string} href\n * URL of the l10n resource to parse.\n *\n * @param {string} lang\n * locale (language) to parse. Must be a lowercase string.\n *\n * @param {Function} successCallback\n * triggered when the l10n resource has been successfully parsed.\n *\n * @param {Function} failureCallback\n * triggered when the an error has occurred.\n *\n * @return {void}\n * uses the following global variables: gL10nData, gTextData, gTextProp.\n */\n\n function parseResource(href, lang, successCallback, failureCallback) {\n var baseURL = href.replace(/[^\\/]*$/, '') || './';\n\n // handle escaped characters (backslashes) in a string\n function evalString(text) {\n if (text.lastIndexOf('\\\\') < 0)\n return text;\n return text.replace(/\\\\\\\\/g, '\\\\')\n .replace(/\\\\n/g, '\\n')\n .replace(/\\\\r/g, '\\r')\n .replace(/\\\\t/g, '\\t')\n .replace(/\\\\b/g, '\\b')\n .replace(/\\\\f/g, '\\f')\n .replace(/\\\\{/g, '{')\n .replace(/\\\\}/g, '}')\n .replace(/\\\\\"/g, '\"')\n .replace(/\\\\'/g, \"'\");\n }\n\n // parse *.properties text data into an l10n dictionary\n // If gAsyncResourceLoading is false, then the callback will be called\n // synchronously. Otherwise it is called asynchronously.\n function parseProperties(text, parsedPropertiesCallback) {\n var dictionary = {};\n\n // token expressions\n var reBlank = /^\\s*|\\s*$/;\n var reComment = /^\\s*#|^\\s*$/;\n var reSection = /^\\s*\\[(.*)\\]\\s*$/;\n var reImport = /^\\s*@import\\s+url\\((.*)\\)\\s*$/i;\n var reSplit = /^([^=\\s]*)\\s*=\\s*(.+)$/; // TODO: escape EOLs with '\\'\n\n // parse the *.properties file into an associative array\n function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) {\n var entries = rawText.replace(reBlank, '').split(/[\\r\\n]+/);\n var currentLang = '*';\n var genericLang = lang.split('-', 1)[0];\n var skipLang = false;\n var match = '';\n\n function nextEntry() {\n // Use infinite loop instead of recursion to avoid reaching the\n // maximum recursion limit for content with many lines.\n while (true) {\n if (!entries.length) {\n parsedRawLinesCallback();\n return;\n }\n var line = entries.shift();\n\n // comment or blank line?\n if (reComment.test(line))\n continue;\n\n // the extended syntax supports [lang] sections and @import rules\n if (extendedSyntax) {\n match = reSection.exec(line);\n if (match) { // section start?\n // RFC 4646, section 4.4, \"All comparisons MUST be performed\n // in a case-insensitive manner.\"\n\n currentLang = match[1].toLowerCase();\n skipLang = (currentLang !== '*') &&\n (currentLang !== lang) && (currentLang !== genericLang);\n continue;\n } else if (skipLang) {\n continue;\n }\n match = reImport.exec(line);\n if (match) { // @import rule?\n loadImport(baseURL + match[1], nextEntry);\n return;\n }\n }\n\n // key-value pair\n var tmp = line.match(reSplit);\n if (tmp && tmp.length == 3) {\n dictionary[tmp[1]] = evalString(tmp[2]);\n }\n }\n }\n nextEntry();\n }\n\n // import another *.properties file\n function loadImport(url, callback) {\n xhrLoadText(url, function(content) {\n parseRawLines(content, false, callback); // don't allow recursive imports\n }, function () {\n console.warn(url + ' not found.');\n callback();\n });\n }\n\n // fill the dictionary\n parseRawLines(text, true, function() {\n parsedPropertiesCallback(dictionary);\n });\n }\n\n // load and parse l10n data (warning: global variables are used here)\n xhrLoadText(href, function(response) {\n gTextData += response; // mostly for debug\n\n // parse *.properties text data into an l10n dictionary\n parseProperties(response, function(data) {\n\n // find attribute descriptions, if any\n for (var key in data) {\n var id, prop, index = key.lastIndexOf('.');\n if (index > 0) { // an attribute has been specified\n id = key.substring(0, index);\n prop = key.substring(index + 1);\n } else { // no attribute: assuming text content by default\n id = key;\n prop = gTextProp;\n }\n if (!gL10nData[id]) {\n gL10nData[id] = {};\n }\n gL10nData[id][prop] = data[key];\n }\n\n // trigger callback\n if (successCallback) {\n successCallback();\n }\n });\n }, failureCallback);\n }\n\n // load and parse all resources for the specified locale\n function loadLocale(lang, callback) {\n // RFC 4646, section 2.1 states that language tags have to be treated as\n // case-insensitive. Convert to lowercase for case-insensitive comparisons.\n if (lang) {\n lang = lang.toLowerCase();\n }\n\n callback = callback || function _callback() {};\n\n clear();\n gLanguage = lang;\n\n // check all <link type=\"application/l10n\" href=\"...\" /> nodes\n // and load the resource files\n var langLinks = getL10nResourceLinks();\n var langCount = langLinks.length;\n if (langCount === 0) {\n // we might have a pre-compiled dictionary instead\n var dict = getL10nDictionary();\n if (dict && dict.locales && dict.default_locale) {\n console.log('using the embedded JSON directory, early way out');\n gL10nData = dict.locales[lang];\n if (!gL10nData) {\n var defaultLocale = dict.default_locale.toLowerCase();\n for (var anyCaseLang in dict.locales) {\n anyCaseLang = anyCaseLang.toLowerCase();\n if (anyCaseLang === lang) {\n gL10nData = dict.locales[lang];\n break;\n } else if (anyCaseLang === defaultLocale) {\n gL10nData = dict.locales[defaultLocale];\n }\n }\n }\n callback();\n } else {\n console.log('no resource to load, early way out');\n }\n // early way out\n gReadyState = 'complete';\n return;\n }\n\n // start the callback when all resources are loaded\n var onResourceLoaded = null;\n var gResourceCount = 0;\n onResourceLoaded = function() {\n gResourceCount++;\n if (gResourceCount >= langCount) {\n callback();\n gReadyState = 'complete';\n }\n };\n\n // load all resource files\n function L10nResourceLink(link) {\n var href = link.href;\n // Note: If |gAsyncResourceLoading| is false, then the following callbacks\n // are synchronously called.\n this.load = function(lang, callback) {\n parseResource(href, lang, callback, function() {\n console.warn(href + ' not found.');\n // lang not found, used default resource instead\n console.warn('\"' + lang + '\" resource not found');\n gLanguage = '';\n // Resource not loaded, but we still need to call the callback.\n callback();\n });\n };\n }\n\n for (var i = 0; i < langCount; i++) {\n var resource = new L10nResourceLink(langLinks[i]);\n resource.load(lang, onResourceLoaded);\n }\n }\n\n // clear all l10n data\n function clear() {\n gL10nData = {};\n gTextData = '';\n gLanguage = '';\n // TODO: clear all non predefined macros.\n // There's no such macro /yet/ but we're planning to have some...\n }\n\n\n /**\n * Get rules for plural forms (shared with JetPack), see:\n * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html\n * https://github.com/mozilla/addon-sdk/blob/master/python-lib/plural-rules-generator.p\n *\n * @param {string} lang\n * locale (language) used.\n *\n * @return {Function}\n * returns a function that gives the plural form name for a given integer:\n * var fun = getPluralRules('en');\n * fun(1) -> 'one'\n * fun(0) -> 'other'\n * fun(1000) -> 'other'.\n */\n\n function getPluralRules(lang) {\n var locales2rules = {\n 'af': 3,\n 'ak': 4,\n 'am': 4,\n 'ar': 1,\n 'asa': 3,\n 'az': 0,\n 'be': 11,\n 'bem': 3,\n 'bez': 3,\n 'bg': 3,\n 'bh': 4,\n 'bm': 0,\n 'bn': 3,\n 'bo': 0,\n 'br': 20,\n 'brx': 3,\n 'bs': 11,\n 'ca': 3,\n 'cgg': 3,\n 'chr': 3,\n 'cs': 12,\n 'cy': 17,\n 'da': 3,\n 'de': 3,\n 'dv': 3,\n 'dz': 0,\n 'ee': 3,\n 'el': 3,\n 'en': 3,\n 'eo': 3,\n 'es': 3,\n 'et': 3,\n 'eu': 3,\n 'fa': 0,\n 'ff': 5,\n 'fi': 3,\n 'fil': 4,\n 'fo': 3,\n 'fr': 5,\n 'fur': 3,\n 'fy': 3,\n 'ga': 8,\n 'gd': 24,\n 'gl': 3,\n 'gsw': 3,\n 'gu': 3,\n 'guw': 4,\n 'gv': 23,\n 'ha': 3,\n 'haw': 3,\n 'he': 2,\n 'hi': 4,\n 'hr': 11,\n 'hu': 0,\n 'id': 0,\n 'ig': 0,\n 'ii': 0,\n 'is': 3,\n 'it': 3,\n 'iu': 7,\n 'ja': 0,\n 'jmc': 3,\n 'jv': 0,\n 'ka': 0,\n 'kab': 5,\n 'kaj': 3,\n 'kcg': 3,\n 'kde': 0,\n 'kea': 0,\n 'kk': 3,\n 'kl': 3,\n 'km': 0,\n 'kn': 0,\n 'ko': 0,\n 'ksb': 3,\n 'ksh': 21,\n 'ku': 3,\n 'kw': 7,\n 'lag': 18,\n 'lb': 3,\n 'lg': 3,\n 'ln': 4,\n 'lo': 0,\n 'lt': 10,\n 'lv': 6,\n 'mas': 3,\n 'mg': 4,\n 'mk': 16,\n 'ml': 3,\n 'mn': 3,\n 'mo': 9,\n 'mr': 3,\n 'ms': 0,\n 'mt': 15,\n 'my': 0,\n 'nah': 3,\n 'naq': 7,\n 'nb': 3,\n 'nd': 3,\n 'ne': 3,\n 'nl': 3,\n 'nn': 3,\n 'no': 3,\n 'nr': 3,\n 'nso': 4,\n 'ny': 3,\n 'nyn': 3,\n 'om': 3,\n 'or': 3,\n 'pa': 3,\n 'pap': 3,\n 'pl': 13,\n 'ps': 3,\n 'pt': 3,\n 'rm': 3,\n 'ro': 9,\n 'rof': 3,\n 'ru': 11,\n 'rwk': 3,\n 'sah': 0,\n 'saq': 3,\n 'se': 7,\n 'seh': 3,\n 'ses': 0,\n 'sg': 0,\n 'sh': 11,\n 'shi': 19,\n 'sk': 12,\n 'sl': 14,\n 'sma': 7,\n 'smi': 7,\n 'smj': 7,\n 'smn': 7,\n 'sms': 7,\n 'sn': 3,\n 'so': 3,\n 'sq': 3,\n 'sr': 11,\n 'ss': 3,\n 'ssy': 3,\n 'st': 3,\n 'sv': 3,\n 'sw': 3,\n 'syr': 3,\n 'ta': 3,\n 'te': 3,\n 'teo': 3,\n 'th': 0,\n 'ti': 4,\n 'tig': 3,\n 'tk': 3,\n 'tl': 4,\n 'tn': 3,\n 'to': 0,\n 'tr': 0,\n 'ts': 3,\n 'tzm': 22,\n 'uk': 11,\n 'ur': 3,\n 've': 3,\n 'vi': 0,\n 'vun': 3,\n 'wa': 4,\n 'wae': 3,\n 'wo': 0,\n 'xh': 3,\n 'xog': 3,\n 'yo': 0,\n 'zh': 0,\n 'zu': 3\n };\n\n // utility functions for plural rules methods\n function isIn(n, list) {\n return list.indexOf(n) !== -1;\n }\n function isBetween(n, start, end) {\n return start <= n && n <= end;\n }\n\n // list of all plural rules methods:\n // map an integer to the plural form name to use\n var pluralRules = {\n '0': function(n) {\n return 'other';\n },\n '1': function(n) {\n if ((isBetween((n % 100), 3, 10)))\n return 'few';\n if (n === 0)\n return 'zero';\n if ((isBetween((n % 100), 11, 99)))\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '2': function(n) {\n if (n !== 0 && (n % 10) === 0)\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '3': function(n) {\n if (n == 1)\n return 'one';\n return 'other';\n },\n '4': function(n) {\n if ((isBetween(n, 0, 1)))\n return 'one';\n return 'other';\n },\n '5': function(n) {\n if ((isBetween(n, 0, 2)) && n != 2)\n return 'one';\n return 'other';\n },\n '6': function(n) {\n if (n === 0)\n return 'zero';\n if ((n % 10) == 1 && (n % 100) != 11)\n return 'one';\n return 'other';\n },\n '7': function(n) {\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '8': function(n) {\n if ((isBetween(n, 3, 6)))\n return 'few';\n if ((isBetween(n, 7, 10)))\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '9': function(n) {\n if (n === 0 || n != 1 && (isBetween((n % 100), 1, 19)))\n return 'few';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '10': function(n) {\n if ((isBetween((n % 10), 2, 9)) && !(isBetween((n % 100), 11, 19)))\n return 'few';\n if ((n % 10) == 1 && !(isBetween((n % 100), 11, 19)))\n return 'one';\n return 'other';\n },\n '11': function(n) {\n if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14)))\n return 'few';\n if ((n % 10) === 0 ||\n (isBetween((n % 10), 5, 9)) ||\n (isBetween((n % 100), 11, 14)))\n return 'many';\n if ((n % 10) == 1 && (n % 100) != 11)\n return 'one';\n return 'other';\n },\n '12': function(n) {\n if ((isBetween(n, 2, 4)))\n return 'few';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '13': function(n) {\n if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14)))\n return 'few';\n if (n != 1 && (isBetween((n % 10), 0, 1)) ||\n (isBetween((n % 10), 5, 9)) ||\n (isBetween((n % 100), 12, 14)))\n return 'many';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '14': function(n) {\n if ((isBetween((n % 100), 3, 4)))\n return 'few';\n if ((n % 100) == 2)\n return 'two';\n if ((n % 100) == 1)\n return 'one';\n return 'other';\n },\n '15': function(n) {\n if (n === 0 || (isBetween((n % 100), 2, 10)))\n return 'few';\n if ((isBetween((n % 100), 11, 19)))\n return 'many';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '16': function(n) {\n if ((n % 10) == 1 && n != 11)\n return 'one';\n return 'other';\n },\n '17': function(n) {\n if (n == 3)\n return 'few';\n if (n === 0)\n return 'zero';\n if (n == 6)\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '18': function(n) {\n if (n === 0)\n return 'zero';\n if ((isBetween(n, 0, 2)) && n !== 0 && n != 2)\n return 'one';\n return 'other';\n },\n '19': function(n) {\n if ((isBetween(n, 2, 10)))\n return 'few';\n if ((isBetween(n, 0, 1)))\n return 'one';\n return 'other';\n },\n '20': function(n) {\n if ((isBetween((n % 10), 3, 4) || ((n % 10) == 9)) && !(\n isBetween((n % 100), 10, 19) ||\n isBetween((n % 100), 70, 79) ||\n isBetween((n % 100), 90, 99)\n ))\n return 'few';\n if ((n % 1000000) === 0 && n !== 0)\n return 'many';\n if ((n % 10) == 2 && !isIn((n % 100), [12, 72, 92]))\n return 'two';\n if ((n % 10) == 1 && !isIn((n % 100), [11, 71, 91]))\n return 'one';\n return 'other';\n },\n '21': function(n) {\n if (n === 0)\n return 'zero';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '22': function(n) {\n if ((isBetween(n, 0, 1)) || (isBetween(n, 11, 99)))\n return 'one';\n return 'other';\n },\n '23': function(n) {\n if ((isBetween((n % 10), 1, 2)) || (n % 20) === 0)\n return 'one';\n return 'other';\n },\n '24': function(n) {\n if ((isBetween(n, 3, 10) || isBetween(n, 13, 19)))\n return 'few';\n if (isIn(n, [2, 12]))\n return 'two';\n if (isIn(n, [1, 11]))\n return 'one';\n return 'other';\n }\n };\n\n // return a function that gives the plural form name for a given integer\n var index = locales2rules[lang.replace(/-.*$/, '')];\n if (!(index in pluralRules)) {\n console.warn('plural form unknown for [' + lang + ']');\n return function() { return 'other'; };\n }\n return pluralRules[index];\n }\n\n // pre-defined 'plural' macro\n gMacros.plural = function(str, param, key, prop) {\n var n = parseFloat(param);\n if (isNaN(n))\n return str;\n\n // TODO: support other properties (l20n still doesn't...)\n if (prop != gTextProp)\n return str;\n\n // initialize _pluralRules\n if (!gMacros._pluralRules) {\n gMacros._pluralRules = getPluralRules(gLanguage);\n }\n var index = '[' + gMacros._pluralRules(n) + ']';\n\n // try to find a [zero|one|two] key if it's defined\n if (n === 0 && (key + '[zero]') in gL10nData) {\n str = gL10nData[key + '[zero]'][prop];\n } else if (n == 1 && (key + '[one]') in gL10nData) {\n str = gL10nData[key + '[one]'][prop];\n } else if (n == 2 && (key + '[two]') in gL10nData) {\n str = gL10nData[key + '[two]'][prop];\n } else if ((key + index) in gL10nData) {\n str = gL10nData[key + index][prop];\n } else if ((key + '[other]') in gL10nData) {\n str = gL10nData[key + '[other]'][prop];\n }\n\n return str;\n };\n\n\n /**\n * l10n dictionary functions\n */\n\n // fetch an l10n object, warn if not found, apply `args' if possible\n function getL10nData(key, args, fallback) {\n var data = gL10nData[key];\n if (!data) {\n console.warn('#' + key + ' is undefined.');\n if (!fallback) {\n return null;\n }\n data = fallback;\n }\n\n /** This is where l10n expressions should be processed.\n * The plan is to support C-style expressions from the l20n project;\n * until then, only two kinds of simple expressions are supported:\n * {[ index ]} and {{ arguments }}.\n */\n var rv = {};\n for (var prop in data) {\n var str = data[prop];\n str = substIndexes(str, args, key, prop);\n str = substArguments(str, args, key);\n rv[prop] = str;\n }\n return rv;\n }\n\n // replace {[macros]} with their values\n function substIndexes(str, args, key, prop) {\n var reIndex = /\\{\\[\\s*([a-zA-Z]+)\\(([a-zA-Z]+)\\)\\s*\\]\\}/;\n var reMatch = reIndex.exec(str);\n if (!reMatch || !reMatch.length)\n return str;\n\n // an index/macro has been found\n // Note: at the moment, only one parameter is supported\n var macroName = reMatch[1];\n var paramName = reMatch[2];\n var param;\n if (args && paramName in args) {\n param = args[paramName];\n } else if (paramName in gL10nData) {\n param = gL10nData[paramName];\n }\n\n // there's no macro parser yet: it has to be defined in gMacros\n if (macroName in gMacros) {\n var macro = gMacros[macroName];\n str = macro(str, param, key, prop);\n }\n return str;\n }\n\n // replace {{arguments}} with their values\n function substArguments(str, args, key) {\n var reArgs = /\\{\\{\\s*(.+?)\\s*\\}\\}/g;\n return str.replace(reArgs, function(matched_text, arg) {\n if (args && arg in args) {\n return args[arg];\n }\n if (arg in gL10nData) {\n return gL10nData[arg];\n }\n console.log('argument {{' + arg + '}} for #' + key + ' is undefined.');\n return matched_text;\n });\n }\n\n // translate an HTML element\n function translateElement(element) {\n var l10n = getL10nAttributes(element);\n if (!l10n.id)\n return;\n\n // get the related l10n object\n var data = getL10nData(l10n.id, l10n.args);\n if (!data) {\n console.warn('#' + l10n.id + ' is undefined.');\n return;\n }\n\n // translate element (TODO: security checks?)\n if (data[gTextProp]) { // XXX\n if (getChildElementCount(element) === 0) {\n element[gTextProp] = data[gTextProp];\n } else {\n // this element has element children: replace the content of the first\n // (non-empty) child textNode and clear other child textNodes\n var children = element.childNodes;\n var found = false;\n for (var i = 0, l = children.length; i < l; i++) {\n if (children[i].nodeType === 3 && /\\S/.test(children[i].nodeValue)) {\n if (found) {\n children[i].nodeValue = '';\n } else {\n children[i].nodeValue = data[gTextProp];\n found = true;\n }\n }\n }\n // if no (non-empty) textNode is found, insert a textNode before the\n // first element child.\n if (!found) {\n var textNode = document.createTextNode(data[gTextProp]);\n element.insertBefore(textNode, element.firstChild);\n }\n }\n delete data[gTextProp];\n }\n\n for (var k in data) {\n element[k] = data[k];\n }\n }\n\n // webkit browsers don't currently support 'children' on SVG elements...\n function getChildElementCount(element) {\n if (element.children) {\n return element.children.length;\n }\n if (typeof element.childElementCount !== 'undefined') {\n return element.childElementCount;\n }\n var count = 0;\n for (var i = 0; i < element.childNodes.length; i++) {\n count += element.nodeType === 1 ? 1 : 0;\n }\n return count;\n }\n\n // translate an HTML subtree\n function translateFragment(element) {\n element = element || document.documentElement;\n\n // check all translatable children (= w/ a `data-l10n-id' attribute)\n var children = getTranslatableChildren(element);\n var elementCount = children.length;\n for (var i = 0; i < elementCount; i++) {\n translateElement(children[i]);\n }\n\n // translate element itself if necessary\n translateElement(element);\n }\n\n return {\n // get a localized string\n get: function(key, args, fallbackString) {\n var index = key.lastIndexOf('.');\n var prop = gTextProp;\n if (index > 0) { // An attribute has been specified\n prop = key.substring(index + 1);\n key = key.substring(0, index);\n }\n var fallback;\n if (fallbackString) {\n fallback = {};\n fallback[prop] = fallbackString;\n }\n var data = getL10nData(key, args, fallback);\n if (data && prop in data) {\n return data[prop];\n }\n return '{{' + key + '}}';\n },\n\n // debug\n getData: function() { return gL10nData; },\n getText: function() { return gTextData; },\n\n // get|set the document language\n getLanguage: function() { return gLanguage; },\n setLanguage: function(lang, callback) {\n loadLocale(lang, function() {\n if (callback)\n callback();\n });\n },\n\n // get the direction (ltr|rtl) of the current language\n getDirection: function() {\n // http://www.w3.org/International/questions/qa-scripts\n // Arabic, Hebrew, Farsi, Pashto, Urdu\n var rtlList = ['ar', 'he', 'fa', 'ps', 'ur'];\n var shortCode = gLanguage.split('-', 1)[0];\n return (rtlList.indexOf(shortCode) >= 0) ? 'rtl' : 'ltr';\n },\n\n // translate an element or document fragment\n translate: translateFragment,\n\n // this can be used to prevent race conditions\n getReadyState: function() { return gReadyState; },\n ready: function(callback) {\n if (!callback) {\n return;\n } else if (gReadyState == 'complete' || gReadyState == 'interactive') {\n window.setTimeout(function() {\n callback();\n });\n } else if (document.addEventListener) {\n document.addEventListener('localized', function once() {\n document.removeEventListener('localized', once);\n callback();\n });\n }\n }\n };\n}) (window, document);\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getPdfFilenameFromUrl, loadScript } from \"pdfjs-lib\";\n\nasync function docPropertiesLookup(pdfDocument) {\n const url = \"\",\n baseUrl = url.split(\"#\")[0];\n // eslint-disable-next-line prefer-const\n let { info, metadata, contentDispositionFilename, contentLength } =\n await pdfDocument.getMetadata();\n\n if (!contentLength) {\n const { length } = await pdfDocument.getDownloadInfo();\n contentLength = length;\n }\n\n return {\n ...info,\n baseURL: baseUrl,\n filesize: contentLength,\n filename: contentDispositionFilename || getPdfFilenameFromUrl(url),\n metadata: metadata?.getRaw(),\n authors: metadata?.get(\"dc:creator\"),\n numPages: pdfDocument.numPages,\n URL: url,\n };\n}\n\nclass GenericScripting {\n constructor(sandboxBundleSrc) {\n this._ready = loadScript(\n sandboxBundleSrc,\n /* removeScriptElement = */ true\n ).then(() => {\n return window.pdfjsSandbox.QuickJSSandbox();\n });\n }\n\n async createSandbox(data) {\n const sandbox = await this._ready;\n sandbox.create(data);\n }\n\n async dispatchEventInSandbox(event) {\n const sandbox = await this._ready;\n sandbox.dispatchEvent(event);\n }\n\n async destroySandbox() {\n const sandbox = await this._ready;\n sandbox.nukeSandbox();\n }\n}\n\nexport { docPropertiesLookup, GenericScripting };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationMode, PixelsPerInch } from \"pdfjs-lib\";\nimport { PDFPrintServiceFactory, PDFViewerApplication } from \"./app.js\";\nimport { compatibilityParams } from \"./app_options.js\";\nimport { getXfaHtmlForPrinting } from \"./print_utils.js\";\n\nlet activeService = null;\nlet overlayManager = null;\n\n// Renders the page to the canvas of the given print service, and returns\n// the suggested dimensions of the output page.\nfunction renderPage(\n activeServiceOnEntry,\n pdfDocument,\n pageNumber,\n size,\n printResolution,\n optionalContentConfigPromise\n) {\n const scratchCanvas = activeService.scratchCanvas;\n\n // The size of the canvas in pixels for printing.\n const PRINT_UNITS = printResolution / PixelsPerInch.PDF;\n scratchCanvas.width = Math.floor(size.width * PRINT_UNITS);\n scratchCanvas.height = Math.floor(size.height * PRINT_UNITS);\n\n const ctx = scratchCanvas.getContext(\"2d\");\n ctx.save();\n ctx.fillStyle = \"rgb(255, 255, 255)\";\n ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height);\n ctx.restore();\n\n return pdfDocument.getPage(pageNumber).then(function (pdfPage) {\n const renderContext = {\n canvasContext: ctx,\n transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],\n viewport: pdfPage.getViewport({ scale: 1, rotation: size.rotation }),\n intent: \"print\",\n annotationMode: AnnotationMode.ENABLE_STORAGE,\n optionalContentConfigPromise,\n };\n return pdfPage.render(renderContext).promise;\n });\n}\n\nfunction PDFPrintService(\n pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise = null,\n l10n\n) {\n this.pdfDocument = pdfDocument;\n this.pagesOverview = pagesOverview;\n this.printContainer = printContainer;\n this._printResolution = printResolution || 150;\n this._optionalContentConfigPromise =\n optionalContentConfigPromise || pdfDocument.getOptionalContentConfig();\n this.l10n = l10n;\n this.currentPage = -1;\n // The temporary canvas where renderPage paints one page at a time.\n this.scratchCanvas = document.createElement(\"canvas\");\n}\n\nPDFPrintService.prototype = {\n layout() {\n this.throwIfInactive();\n\n const body = document.querySelector(\"body\");\n body.setAttribute(\"data-pdfjsprinting\", true);\n\n const hasEqualPageSizes = this.pagesOverview.every(function (size) {\n return (\n size.width === this.pagesOverview[0].width &&\n size.height === this.pagesOverview[0].height\n );\n }, this);\n if (!hasEqualPageSizes) {\n console.warn(\n \"Not all pages have the same size. The printed \" +\n \"result may be incorrect!\"\n );\n }\n\n // Insert a @page + size rule to make sure that the page size is correctly\n // set. Note that we assume that all pages have the same size, because\n // variable-size pages are not supported yet (e.g. in Chrome & Firefox).\n // TODO(robwu): Use named pages when size calculation bugs get resolved\n // (e.g. https://crbug.com/355116) AND when support for named pages is\n // added (http://www.w3.org/TR/css3-page/#using-named-pages).\n // In browsers where @page + size is not supported (such as Firefox,\n // https://bugzil.la/851441), the next stylesheet will be ignored and the\n // user has to select the correct paper size in the UI if wanted.\n this.pageStyleSheet = document.createElement(\"style\");\n const pageSize = this.pagesOverview[0];\n this.pageStyleSheet.textContent =\n \"@page { size: \" + pageSize.width + \"pt \" + pageSize.height + \"pt;}\";\n body.appendChild(this.pageStyleSheet);\n },\n\n destroy() {\n if (activeService !== this) {\n // |activeService| cannot be replaced without calling destroy() first,\n // so if it differs then an external consumer has a stale reference to\n // us.\n return;\n }\n this.printContainer.textContent = \"\";\n\n const body = document.querySelector(\"body\");\n body.removeAttribute(\"data-pdfjsprinting\");\n\n if (this.pageStyleSheet) {\n this.pageStyleSheet.remove();\n this.pageStyleSheet = null;\n }\n this.scratchCanvas.width = this.scratchCanvas.height = 0;\n this.scratchCanvas = null;\n activeService = null;\n ensureOverlay().then(function () {\n if (overlayManager.active !== \"printServiceOverlay\") {\n return; // overlay was already closed\n }\n overlayManager.close(\"printServiceOverlay\");\n });\n },\n\n renderPages() {\n if (this.pdfDocument.isPureXfa) {\n getXfaHtmlForPrinting(this.printContainer, this.pdfDocument);\n return Promise.resolve();\n }\n\n const pageCount = this.pagesOverview.length;\n const renderNextPage = (resolve, reject) => {\n this.throwIfInactive();\n if (++this.currentPage >= pageCount) {\n renderProgress(pageCount, pageCount, this.l10n);\n resolve();\n return;\n }\n const index = this.currentPage;\n renderProgress(index, pageCount, this.l10n);\n renderPage(\n this,\n this.pdfDocument,\n /* pageNumber = */ index + 1,\n this.pagesOverview[index],\n this._printResolution,\n this._optionalContentConfigPromise\n )\n .then(this.useRenderedPage.bind(this))\n .then(function () {\n renderNextPage(resolve, reject);\n }, reject);\n };\n return new Promise(renderNextPage);\n },\n\n useRenderedPage() {\n this.throwIfInactive();\n const img = document.createElement(\"img\");\n const scratchCanvas = this.scratchCanvas;\n if (\n \"toBlob\" in scratchCanvas &&\n !compatibilityParams.disableCreateObjectURL\n ) {\n scratchCanvas.toBlob(function (blob) {\n img.src = URL.createObjectURL(blob);\n });\n } else {\n img.src = scratchCanvas.toDataURL();\n }\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"printedPage\";\n wrapper.appendChild(img);\n this.printContainer.appendChild(wrapper);\n\n return new Promise(function (resolve, reject) {\n img.onload = resolve;\n img.onerror = reject;\n });\n },\n\n performPrint() {\n this.throwIfInactive();\n return new Promise(resolve => {\n // Push window.print in the macrotask queue to avoid being affected by\n // the deprecation of running print() code in a microtask, see\n // https://github.com/mozilla/pdf.js/issues/7547.\n setTimeout(() => {\n if (!this.active) {\n resolve();\n return;\n }\n print.call(window);\n // Delay promise resolution in case print() was not synchronous.\n setTimeout(resolve, 20); // Tidy-up.\n }, 0);\n });\n },\n\n get active() {\n return this === activeService;\n },\n\n throwIfInactive() {\n if (!this.active) {\n throw new Error(\"This print request was cancelled or completed.\");\n }\n },\n};\n\nconst print = window.print;\nwindow.print = function () {\n if (activeService) {\n console.warn(\"Ignored window.print() because of a pending print job.\");\n return;\n }\n ensureOverlay().then(function () {\n if (activeService) {\n overlayManager.open(\"printServiceOverlay\");\n }\n });\n\n try {\n dispatchEvent(\"beforeprint\");\n } finally {\n if (!activeService) {\n console.error(\"Expected print service to be initialized.\");\n ensureOverlay().then(function () {\n if (overlayManager.active === \"printServiceOverlay\") {\n overlayManager.close(\"printServiceOverlay\");\n }\n });\n return; // eslint-disable-line no-unsafe-finally\n }\n const activeServiceOnEntry = activeService;\n activeService\n .renderPages()\n .then(function () {\n return activeServiceOnEntry.performPrint();\n })\n .catch(function () {\n // Ignore any error messages.\n })\n .then(function () {\n // aborts acts on the \"active\" print request, so we need to check\n // whether the print request (activeServiceOnEntry) is still active.\n // Without the check, an unrelated print request (created after aborting\n // this print request while the pages were being generated) would be\n // aborted.\n if (activeServiceOnEntry.active) {\n abort();\n }\n });\n }\n};\n\nfunction dispatchEvent(eventType) {\n const event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventType, false, false, \"custom\");\n window.dispatchEvent(event);\n}\n\nfunction abort() {\n if (activeService) {\n activeService.destroy();\n dispatchEvent(\"afterprint\");\n }\n}\n\nfunction renderProgress(index, total, l10n) {\n const progressContainer = document.getElementById(\"printServiceOverlay\");\n const progress = Math.round((100 * index) / total);\n const progressBar = progressContainer.querySelector(\"progress\");\n const progressPerc = progressContainer.querySelector(\".relative-progress\");\n progressBar.value = progress;\n l10n.get(\"print_progress_percent\", { progress }).then(msg => {\n progressPerc.textContent = msg;\n });\n}\n\nwindow.addEventListener(\n \"keydown\",\n function (event) {\n // Intercept Cmd/Ctrl + P in all browsers.\n // Also intercept Cmd/Ctrl + Shift + P in Chrome and Opera\n if (\n event.keyCode === /* P= */ 80 &&\n (event.ctrlKey || event.metaKey) &&\n !event.altKey &&\n (!event.shiftKey || window.chrome || window.opera)\n ) {\n window.print();\n\n // The (browser) print dialog cannot be prevented from being shown in\n // IE11.\n event.preventDefault();\n if (event.stopImmediatePropagation) {\n event.stopImmediatePropagation();\n } else {\n event.stopPropagation();\n }\n }\n },\n true\n);\n\nif (\"onbeforeprint\" in window) {\n // Do not propagate before/afterprint events when they are not triggered\n // from within this polyfill. (FF / Chrome 63+).\n const stopPropagationIfNeeded = function (event) {\n if (event.detail !== \"custom\" && event.stopImmediatePropagation) {\n event.stopImmediatePropagation();\n }\n };\n window.addEventListener(\"beforeprint\", stopPropagationIfNeeded);\n window.addEventListener(\"afterprint\", stopPropagationIfNeeded);\n}\n\nlet overlayPromise;\nfunction ensureOverlay() {\n if (!overlayPromise) {\n overlayManager = PDFViewerApplication.overlayManager;\n if (!overlayManager) {\n throw new Error(\"The overlay manager has not yet been initialized.\");\n }\n\n overlayPromise = overlayManager.register(\n \"printServiceOverlay\",\n document.getElementById(\"printServiceOverlay\"),\n abort,\n true\n );\n document.getElementById(\"printCancel\").onclick = abort;\n }\n return overlayPromise;\n}\n\nPDFPrintServiceFactory.instance = {\n supportsPrinting: true,\n\n createPrintService(\n pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise,\n l10n\n ) {\n if (activeService) {\n throw new Error(\"The print service is created and active.\");\n }\n activeService = new PDFPrintService(\n pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise,\n l10n\n );\n return activeService;\n },\n};\n\nexport { PDFPrintService };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getXfaPageViewport, PixelsPerInch } from \"pdfjs-lib\";\nimport { SimpleLinkService } from \"./pdf_link_service.js\";\nimport { XfaLayerBuilder } from \"./xfa_layer_builder.js\";\n\nfunction getXfaHtmlForPrinting(printContainer, pdfDocument) {\n const xfaHtml = pdfDocument.allXfaHtml;\n const linkService = new SimpleLinkService();\n const scale = Math.round(PixelsPerInch.PDF_TO_CSS_UNITS * 100) / 100;\n\n for (const xfaPage of xfaHtml.children) {\n const page = document.createElement(\"div\");\n page.className = \"xfaPrintedPage\";\n printContainer.appendChild(page);\n\n const builder = new XfaLayerBuilder({\n pageDiv: page,\n pdfPage: null,\n annotationStorage: pdfDocument.annotationStorage,\n linkService,\n xfaHtml: xfaPage,\n });\n const viewport = getXfaPageViewport(xfaPage, { scale });\n\n builder.render(viewport, \"print\");\n }\n}\n\nexport { getXfaHtmlForPrinting };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppOptions } from \"./app_options.js\";\nimport { PDFViewerApplication } from \"./app.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nwindow.PDFViewerApplication = PDFViewerApplication;\nwindow.PDFViewerApplicationOptions = AppOptions;\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n var defaultUrl; // eslint-disable-line no-var\n\n (function rewriteUrlClosure() {\n // Run this code outside DOMContentLoaded to make sure that the URL\n // is rewritten as soon as possible.\n const queryString = document.location.search.slice(1);\n const m = /(^|&)file=([^&]*)/.exec(queryString);\n defaultUrl = m ? decodeURIComponent(m[2]) : \"\";\n\n // Example: chrome-extension://.../http://example.com/file.pdf\n const humanReadableUrl = \"/\" + defaultUrl + location.hash;\n history.replaceState(history.state, \"\", humanReadableUrl);\n if (top === window) {\n // eslint-disable-next-line no-undef\n chrome.runtime.sendMessage(\"showPageAction\");\n }\n })();\n}\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n require(\"./firefoxcom.js\");\n require(\"./firefox_print_service.js\");\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n require(\"./genericcom.js\");\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n require(\"./chromecom.js\");\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME || GENERIC\")) {\n require(\"./pdf_print_service.js\");\n}\n\nfunction getViewerConfiguration() {\n let errorWrapper = null;\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n errorWrapper = {\n container: document.getElementById(\"errorWrapper\"),\n errorMessage: document.getElementById(\"errorMessage\"),\n closeButton: document.getElementById(\"errorClose\"),\n errorMoreInfo: document.getElementById(\"errorMoreInfo\"),\n moreInfoButton: document.getElementById(\"errorShowMore\"),\n lessInfoButton: document.getElementById(\"errorShowLess\"),\n };\n }\n\n return {\n appContainer: document.body,\n mainContainer: document.getElementById(\"viewerContainer\"),\n viewerContainer: document.getElementById(\"viewer\"),\n eventBus: null,\n toolbar: {\n container: document.getElementById(\"toolbarViewer\"),\n numPages: document.getElementById(\"numPages\"),\n pageNumber: document.getElementById(\"pageNumber\"),\n scaleSelect: document.getElementById(\"scaleSelect\"),\n customScaleOption: document.getElementById(\"customScaleOption\"),\n previous: document.getElementById(\"previous\"),\n next: document.getElementById(\"next\"),\n zoomIn: document.getElementById(\"zoomIn\"),\n zoomOut: document.getElementById(\"zoomOut\"),\n viewFind: document.getElementById(\"viewFind\"),\n openFile: document.getElementById(\"openFile\"),\n print: document.getElementById(\"print\"),\n presentationModeButton: document.getElementById(\"presentationMode\"),\n download: document.getElementById(\"download\"),\n viewBookmark: document.getElementById(\"viewBookmark\"),\n },\n secondaryToolbar: {\n toolbar: document.getElementById(\"secondaryToolbar\"),\n toggleButton: document.getElementById(\"secondaryToolbarToggle\"),\n toolbarButtonContainer: document.getElementById(\n \"secondaryToolbarButtonContainer\"\n ),\n presentationModeButton: document.getElementById(\n \"secondaryPresentationMode\"\n ),\n openFileButton: document.getElementById(\"secondaryOpenFile\"),\n printButton: document.getElementById(\"secondaryPrint\"),\n downloadButton: document.getElementById(\"secondaryDownload\"),\n viewBookmarkButton: document.getElementById(\"secondaryViewBookmark\"),\n firstPageButton: document.getElementById(\"firstPage\"),\n lastPageButton: document.getElementById(\"lastPage\"),\n pageRotateCwButton: document.getElementById(\"pageRotateCw\"),\n pageRotateCcwButton: document.getElementById(\"pageRotateCcw\"),\n cursorSelectToolButton: document.getElementById(\"cursorSelectTool\"),\n cursorHandToolButton: document.getElementById(\"cursorHandTool\"),\n scrollPageButton: document.getElementById(\"scrollPage\"),\n scrollVerticalButton: document.getElementById(\"scrollVertical\"),\n scrollHorizontalButton: document.getElementById(\"scrollHorizontal\"),\n scrollWrappedButton: document.getElementById(\"scrollWrapped\"),\n spreadNoneButton: document.getElementById(\"spreadNone\"),\n spreadOddButton: document.getElementById(\"spreadOdd\"),\n spreadEvenButton: document.getElementById(\"spreadEven\"),\n documentPropertiesButton: document.getElementById(\"documentProperties\"),\n },\n sidebar: {\n // Divs (and sidebar button)\n outerContainer: document.getElementById(\"outerContainer\"),\n viewerContainer: document.getElementById(\"viewerContainer\"),\n toggleButton: document.getElementById(\"sidebarToggle\"),\n // Buttons\n thumbnailButton: document.getElementById(\"viewThumbnail\"),\n outlineButton: document.getElementById(\"viewOutline\"),\n attachmentsButton: document.getElementById(\"viewAttachments\"),\n layersButton: document.getElementById(\"viewLayers\"),\n // Views\n thumbnailView: document.getElementById(\"thumbnailView\"),\n outlineView: document.getElementById(\"outlineView\"),\n attachmentsView: document.getElementById(\"attachmentsView\"),\n layersView: document.getElementById(\"layersView\"),\n // View-specific options\n outlineOptionsContainer: document.getElementById(\n \"outlineOptionsContainer\"\n ),\n currentOutlineItemButton: document.getElementById(\"currentOutlineItem\"),\n },\n sidebarResizer: {\n outerContainer: document.getElementById(\"outerContainer\"),\n resizer: document.getElementById(\"sidebarResizer\"),\n },\n findBar: {\n bar: document.getElementById(\"findbar\"),\n toggleButton: document.getElementById(\"viewFind\"),\n findField: document.getElementById(\"findInput\"),\n highlightAllCheckbox: document.getElementById(\"findHighlightAll\"),\n caseSensitiveCheckbox: document.getElementById(\"findMatchCase\"),\n entireWordCheckbox: document.getElementById(\"findEntireWord\"),\n findMsg: document.getElementById(\"findMsg\"),\n findResultsCount: document.getElementById(\"findResultsCount\"),\n findPreviousButton: document.getElementById(\"findPrevious\"),\n findNextButton: document.getElementById(\"findNext\"),\n },\n passwordOverlay: {\n overlayName: \"passwordOverlay\",\n container: document.getElementById(\"passwordOverlay\"),\n label: document.getElementById(\"passwordText\"),\n input: document.getElementById(\"password\"),\n submitButton: document.getElementById(\"passwordSubmit\"),\n cancelButton: document.getElementById(\"passwordCancel\"),\n },\n documentProperties: {\n overlayName: \"documentPropertiesOverlay\",\n container: document.getElementById(\"documentPropertiesOverlay\"),\n closeButton: document.getElementById(\"documentPropertiesClose\"),\n fields: {\n fileName: document.getElementById(\"fileNameField\"),\n fileSize: document.getElementById(\"fileSizeField\"),\n title: document.getElementById(\"titleField\"),\n author: document.getElementById(\"authorField\"),\n subject: document.getElementById(\"subjectField\"),\n keywords: document.getElementById(\"keywordsField\"),\n creationDate: document.getElementById(\"creationDateField\"),\n modificationDate: document.getElementById(\"modificationDateField\"),\n creator: document.getElementById(\"creatorField\"),\n producer: document.getElementById(\"producerField\"),\n version: document.getElementById(\"versionField\"),\n pageCount: document.getElementById(\"pageCountField\"),\n pageSize: document.getElementById(\"pageSizeField\"),\n linearized: document.getElementById(\"linearizedField\"),\n },\n },\n errorWrapper,\n printContainer: document.getElementById(\"printContainer\"),\n openFileInputName: \"fileInput\",\n debuggerScriptPath: \"./debugger.js\",\n };\n}\n\nfunction webViewerLoad() {\n const config = getViewerConfiguration();\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n Promise.all([\n import(\"pdfjs-web/genericcom.js\"),\n import(\"pdfjs-web/pdf_print_service.js\"),\n ]).then(function ([genericCom, pdfPrintService]) {\n PDFViewerApplication.run(config);\n });\n } else {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n AppOptions.set(\"defaultUrl\", defaultUrl);\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n // Give custom implementations of the default viewer a simpler way to\n // set various `AppOptions`, by dispatching an event once all viewer\n // files are loaded but *before* the viewer initialization has run.\n const event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"webviewerloaded\", true, true, {\n source: window,\n });\n try {\n // Attempt to dispatch the event at the embedding `document`,\n // in order to support cases where the viewer is embedded in\n // a *dynamically* created <iframe> element.\n parent.document.dispatchEvent(event);\n } catch (ex) {\n // The viewer could be in e.g. a cross-origin <iframe> element,\n // fallback to dispatching the event at the current `document`.\n console.error(`webviewerloaded: ${ex}`);\n document.dispatchEvent(event);\n }\n }\n\n PDFViewerApplication.run(config);\n }\n}\n\n// Block the \"load\" event until all pages are loaded, to ensure that printing\n// works in Firefox; see https://bugzilla.mozilla.org/show_bug.cgi?id=1618553\nif (document.blockUnblockOnload) {\n document.blockUnblockOnload(true);\n}\n\nif (\n document.readyState === \"interactive\" ||\n document.readyState === \"complete\"\n) {\n webViewerLoad();\n} else {\n document.addEventListener(\"DOMContentLoaded\", webViewerLoad, true);\n}\n\nexport { PDFViewerApplication, AppOptions as PDFViewerApplicationOptions };\n"],"names":["compatibilityParams","Object","userAgent","navigator","platform","maxTouchPoints","isAndroid","isIOS","isIOSChrome","OptionKind","VIEWER","API","WORKER","PREFERENCE","defaultOptions","annotationMode","value","kind","cursorToolOnLoad","defaultUrl","defaultZoomValue","disableHistory","disablePageLabels","enablePermissions","enablePrintAutoRotate","enableScripting","externalLinkRel","externalLinkTarget","historyUpdateUrl","ignoreDestinationZoom","imageResourcesPath","maxCanvasPixels","compatibility","pdfBugEnabled","printResolution","renderer","sidebarViewOnLoad","scrollModeOnLoad","spreadModeOnLoad","textLayerMode","useOnlyCssZoom","viewerCssTheme","viewOnLoad","cMapPacked","cMapUrl","disableAutoFetch","disableFontFace","disableRange","disableStream","docBaseUrl","enableXfa","fontExtraProperties","isEvalSupported","maxImageSize","pdfBug","standardFontDataUrl","verbosity","workerPort","workerSrc","userOptions","constructor","get","userOption","defaultOption","getAll","options","valueType","Number","set","setAll","remove","_hasUserOptions","DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT","FORCE_PAGES_LOADED_TIMEOUT","WHEEL_ZOOM_DISABLED_TIMEOUT","ViewOnLoad","UNKNOWN","PREVIOUS","INITIAL","ViewerCssTheme","AUTOMATIC","LIGHT","DARK","KNOWN_VERSIONS","KNOWN_GENERATORS","updateFindControlState","updateFindMatchesCount","initPassiveLoading","fallback","reportTelemetry","createDownloadManager","createPreferences","createL10n","createScripting","supportsIntegratedFind","shadow","supportsDocumentFonts","supportedMouseWheelZoomModifierKeys","ctrlKey","metaKey","isInAutomation","PDFViewerApplication","initialBookmark","document","_initializedCapability","_fellback","appConfig","pdfDocument","pdfLoadingTask","printService","pdfViewer","pdfThumbnailViewer","pdfRenderingQueue","pdfPresentationMode","pdfDocumentProperties","pdfLinkService","pdfHistory","pdfSidebar","pdfSidebarResizer","pdfOutlineViewer","pdfAttachmentViewer","pdfLayerViewer","pdfCursorTools","pdfScriptingManager","store","downloadManager","overlayManager","preferences","toolbar","secondaryToolbar","eventBus","l10n","isInitialViewSet","downloadComplete","isViewerEmbedded","window","url","baseUrl","_downloadUrl","externalServices","_boundEvents","documentInfo","metadata","_contentDispositionFilename","_contentLength","_saveInProgress","_docStats","_wheelUnusedTicks","_idleCallbacks","AppOptions","LinkTarget","appContainer","source","console","reason","hash","params","parseQueryString","waitOn","loadFakeWorker","TextLayerMode","viewer","enabled","initPDFBug","Promise","locale","dir","_forceCssTheme","cssTheme","styleSheet","cssRules","i","ii","rule","darkRules","findController","linkService","sandboxBundleSrc","scriptingFactory","docPropertiesLookup","container","renderingQueue","scriptingManager","elements","run","zoomIn","zoomOut","zoomReset","PDFPrintServiceFactory","bar","setTitleUsingUrl","downloadUrl","title","getPdfFilenameFromUrl","decodeURIComponent","getFilenameFromUrl","setTitle","_hideViewBookmark","_cancelIdleCallbacks","sourceEventType","promises","PDFBug","workerParameters","GlobalWorkerOptions","parameters","file","apiParameters","key","args","loadingTask","getDocument","loaded","msg","message","_ensureDownloadComplete","filename","data","blob","type","downloadOrSave","download","_documentError","moreInfo","_otherError","moreInfoText","version","build","stack","line","errorWrapperConfig","errorWrapper","errorMessage","closeButton","errorMoreInfo","moreInfoButton","lessInfoButton","parts","progress","percent","Math","level","isNaN","clearTimeout","load","firstPagePromise","pageLayoutPromise","pageModePromise","openActionPromise","baseDocumentUrl","storedPromise","page","zoom","scrollLeft","scrollTop","rotation","sidebarView","SidebarView","scrollMode","ScrollMode","spreadMode","SpreadMode","pdfPage","fingerprint","initialDest","openAction","stored","parseInt","pageMode","apiPageModeToSidebarView","pageLayout","modes","apiPageLayoutToViewerModes","resolve","setTimeout","pagesPromise","onePageRendered","timestamp","outline","attachments","optionalContentConfig","callback","timeout","once","baseURL","filesize","authors","numPages","URL","markInfo","tagged","triggerAutoPrint","javaScript","js","UNSUPPORTED_FEATURES","AutoPrintRegExp","info","pdfTitle","metadataTitle","contentDispositionFilename","versionId","generatorId","producer","generator","formType","labels","numLabels","standardLabels","emptyLabels","label","_initializePdfHistory","resetHistory","updateUrl","JSON","explicitDest","pageNumber","_initializeAnnotationStorageCallbacks","annotationStorage","setInitialView","setRotation","angle","isValidRotation","setViewerModes","isValidScrollMode","isValidSpreadMode","_cleanup","RendererType","forceRendering","beforePrint","pagesOverview","printContainer","optionalContentConfigPromise","afterPrint","rotatePages","requestPresentationMode","triggerPrinting","bindEvents","bindWindowEvents","event","detail","passive","unbindEvents","unbindWindowEvents","accumulateWheelTicks","ticks","wholeTicks","_unblockDocumentLoadEvent","_reportDocumentStatsTelemetry","stats","HOSTED_VIEWER_ORIGINS","validateFileURL","viewerOrigin","origin","protocol","ex","loadScript","PDFWorker","OPS","Stats","pageView","pageStats","queryString","fileInput","files","evt","webViewerOpenFileViaURL","thumbnailView","view","webViewerSave","location","href","currentPage","loading","RenderingStates","currentScaleValue","webViewerFileInputChange","originalUrl","fileReader","buffer","webViewerOpenFile","openFileInputName","query","phraseSearch","caseSensitive","entireWord","highlightAll","findPrevious","result","setZoomDisabledTimeout","zoomDisabledTimeout","previousScale","delta","normalizeWheelEventDirection","WheelEvent","PIXELS_PER_LINE_SCALE","currentScale","scaleCorrectionFactor","rect","dx","dy","isViewerInPresentationMode","handled","ensureViewerFocused","cmd","eventState","curElement","curElementTagName","turnPage","turnOnlyIfPageFit","CursorTool","instance","supportsPrinting","createPrintService","DEFAULT_SCALE_VALUE","DEFAULT_SCALE","DEFAULT_SCALE_DELTA","MIN_SCALE","MAX_SCALE","UNKNOWN_SCALE","MAX_AUTO_SCALE","SCROLLBAR_PADDING","VERTICAL_PADDING","LOADINGBAR_END_OFFSET_VAR","RUNNING","PAUSED","FINISHED","PresentationModeState","NORMAL","CHANGING","FULLSCREEN","NONE","THUMBS","OUTLINE","ATTACHMENTS","LAYERS","CANVAS","SVG","DISABLE","ENABLE","ENABLE_ENHANCE","VERTICAL","HORIZONTAL","WRAPPED","PAGE","ODD","EVEN","devicePixelRatio","backingStoreRatio","ctx","pixelRatio","sx","sy","scaled","scrollMatches","parent","element","offsetY","offsetX","getComputedStyle","spot","debounceScroll","rAF","currentX","viewAreaElement","lastX","state","currentY","lastY","right","down","_eventHandler","minIndex","maxIndex","items","condition","currentIndex","currentItem","xinv","limit","x_","x","a","b","c","d","p","q","r","changeOrientation","rotate","width","height","index","elt","views","pageTop","sortByVisibility","horizontal","rtl","top","scrollEl","bottom","left","elementBottom","elementLeft","elementRight","visible","ids","numViews","firstVisibleElementInd","binarySearchFirstItem","backtrackBeforeAllVisibleElements","lastEdge","currentWidth","currentHeight","viewWidth","viewHeight","viewRight","viewBottom","hiddenHeight","hiddenWidth","fractionHeight","fractionWidth","id","y","widthPercent","first","last","pc","MOUSE_DOM_DELTA_PIXEL_MODE","MOUSE_DOM_DELTA_LINE_MODE","MOUSE_PIXELS_PER_LINE","MOUSE_LINES_PER_PAGE","mode","size","animationStarted","units","_updateBar","progressSize","clamp","setWidth","scrollbarWidth","doc","hide","show","curRoot","curActiveOrFocused","WaitOnType","EVENT","TIMEOUT","delay","target","eventHandler","handler","timeoutHandler","on","external","off","dispatch","eventListeners","listener","externalListeners","_on","_off","pdfjsLib","__non_webpack_require__","module","SELECT","HAND","ZOOM","activeTool","switchTool","tool","disableActiveTool","_dispatchEvent","_addEventListeners","previouslyActive","CSS_CLASS_GRAB","onMouseDown","onMouseMove","endPan","overlay","activate","deactivate","toggle","ignoreTarget","node","focusedElement","xDiff","yDiff","behavior","active","register","callerCloseMethod","canForceClose","unregister","open","close","_keyDown","_closeThroughCaller","e","passwordIncorrect","PasswordResponses","verify","password","setUpdateCallback","reset","keepRenderedCapability","attachmentsCount","_bindLink","render","names","fragment","item","content","div","_appendAttachment","renderedPromise","TREEITEM_OFFSET_TOP","TREEITEM_SELECTED_CLASS","_normalizeTextContent","removeNullCharacters","_addToggleButton","hidden","toggler","shouldShowAll","_toggleTreeItem","root","_toggleAllTreeItems","_finishRendering","hasAnyNesting","_updateCurrentTreeItem","treeItem","_scrollToCurrentTreeItem","currentNode","DEFAULT_FIELD_CONTENT","NON_METRIC_LOCALES","US_PAGE_NAMES","METRIC_PAGE_NAMES","isPortrait","pageNames","freezeFieldData","writable","enumerable","configurable","currentPageNumber","pagesRotation","getPageSizeInches","author","subject","keywords","creator","pageCount","linearized","_currentPageNumber","_pagesRotation","contentLength","setDocument","_reset","_updateUI","_parseFileSize","fileSize","kb","mb","size_mb","size_kb","size_b","_parsePageSize","pageSizeInches","isPortraitOrientation","sizeInches","sizeMillimeters","rawName","getPageName","exactMillimeters","intMillimeters","name","_parseDate","dateObject","PDFDateString","date","time","_parseLinearization","isLinearized","MATCHES_COUNT_LIMIT","dispatchEvent","findPrev","updateUIState","findMsg","status","FindState","previous","updateResultsCount","current","total","matchCountMsg","_adjustWidth","findbarHeight","inputContainerHeight","FOUND","NOT_FOUND","PENDING","FIND_TIMEOUT","MATCH_SCROLL_OFFSET_TOP","MATCH_SCROLL_OFFSET_LEFT","CHARACTERS_TO_NORMALIZE","normalizationRegex","replace","diffs","normalizedText","normalizedCh","diff","ch","totalDiff","matchIndex","highlightMatches","pageMatches","pageMatchesLength","selected","_onFind","findbarClosed","pendingTimeout","scrollMatchIntoView","selectedLeft","pageIndex","scrollIntoView","pageIdx","matchIdx","wrapped","_query","normalize","_shouldDirtyMatch","_prepareMatches","currentElem","matchesWithLength","nextElem","prevElem","len","isSubTerm","matches","matchesLength","_isEntireWord","startIdx","getCharacterType","endIdx","_calculatePhraseMatch","queryLen","pageContent","originalMatchIdx","getOriginalIndex","matchEnd","originalQueryLen","_calculateWordMatch","queryArray","subquery","subqueryLen","match","matchLength","skipped","_calculateMatch","pageDiffs","pageMatchesCount","_extractText","promise","extractTextCapability","normalizeWhitespace","textContent","textItems","strBuf","j","jj","_updatePage","_updateAllPages","_nextMatch","currentPageIndex","offset","numPageMatches","_matchesReady","numMatches","_nextPageMatch","_advanceOffsetPage","_updateMatch","found","previousPage","_onFindBarClose","_requestMatchesCount","_updateUIResultsCount","matchesCount","_updateUIState","rawQuery","CharacterType","SPACE","ALPHA_LETTER","PUNCT","HAN_LETTER","KATAKANA_LETTER","HIRAGANA_LETTER","HALFWIDTH_KATAKANA_LETTER","THAI_LETTER","charCode","isAlphabeticalScript","isAscii","isAsciiSpace","isAsciiAlpha","isAsciiDigit","isThai","isHan","isKatakana","isHiragana","isHalfwidthKatakana","HASH_CHANGE_TIMEOUT","POSITION_UPDATED_THRESHOLD","UPDATE_VIEWAREA_TIMEOUT","initialize","reInitialized","getCurrentHash","destination","push","namedDest","Array","forceReplace","isDestArraysEqual","dest","pushPage","pushCurrentPosition","back","forward","popStateInProgress","initialRotation","_pushOrReplaceState","shouldReplace","newState","uid","newUrl","_tryPushCurrentPosition","temporary","position","_isValidPage","val","_isValidState","checkReload","performance","perfEntry","_updateInternalState","removeTemporary","_parseCurrentHash","checkNameddest","unescape","nameddest","_updateViewarea","_popState","newHash","hashChanged","waitOnEventOrTimeout","_pageHide","_bindEvents","updateViewarea","popState","pageHide","_unbindEvents","destHash","second","isEntryEqual","firstDest","secondDest","setVisibility","input","_setNestedName","groups","queue","layersCount","levelData","itemsDiv","groupId","group","_resetLayers","setViewer","setHistory","pagesCount","_goToDestinationHelper","destRef","destArray","goToDestination","goToPage","addLinkAttributes","newWindow","rel","getDestinationHash","escape","str","getAnchorUrl","setHash","zoomArgs","zoomArg","zoomArgNumber","parseFloat","allowNegativeOffset","isValidExplicitDestination","executeNamedAction","cachePageRef","refStr","pageRef","_cachedPageNumber","isPageVisible","isPageCached","destLength","allowNull","param","outlineCount","currentOutlineItemPromise","_setStyles","count","totalCount","nestedCount","nestedItems","_currentOutlineItem","pageNumberToDestHash","linkElement","_getPageNumberToDestHash","pageNumberNesting","nesting","currentNesting","DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS","DELAY_BEFORE_HIDING_CONTROLS","ACTIVE_SELECTOR","CONTROLS_SELECTOR","MOUSE_SCROLL_COOLDOWN_TIME","PAGE_SWITCH_THRESHOLD","SWIPE_MIN_DISTANCE_THRESHOLD","SWIPE_ANGLE_THRESHOLD","request","Element","scaleValue","_mouseWheel","normalizeWheelEventDelta","currentTime","Date","storedTime","totalDelta","success","isFullscreen","_notifyStateChange","_setSwitchInProgress","_resetSwitchInProgress","_enter","_exit","_mouseDown","isInternalLink","_contextMenu","_showControls","_hideControls","_resetMouseScrollState","_touchSwipe","startX","startY","endX","endY","absAngle","_addWindowListeners","_removeWindowListeners","_fullscreenChange","_addFullscreenChangeListeners","_removeFullscreenChangeListeners","CLEANUP_TIMEOUT","setThumbnailViewer","isHighestPriority","hasViewer","renderHighestPriority","getHighestPriority","preRenderExtra","visibleViews","numVisible","firstId","lastId","visibleIds","holeId","scrolledDown","holeView","preRenderIndex","preRenderView","isViewFinished","renderView","error","docProperties","appInfo","language","docInfo","actions","dispatchWillSave","dispatchDidSave","dispatchWillPrint","dispatchDidPrint","mouseState","destroyPromise","ready","_internalEvents","_domEvents","_pageOpenPending","_visitedPages","_updateFromSandbox","isInPresentationMode","_dispatchPageOpen","visitedPages","actionsPromise","_dispatchPageClose","_getDocProperties","_createScripting","_destroyScripting","UI_NOTIFICATION_CLASS","visibleView","isThumbnailViewVisible","isOutlineViewVisible","isAttachmentsViewVisible","isLayersViewVisible","switchView","forceOpen","_switchView","isViewChanged","shouldForceRendering","_forceRendering","_updateThumbnailViewer","_showUINotification","_hideUINotification","onTreeLoaded","button","SIDEBAR_WIDTH_VAR","SIDEBAR_MIN_WIDTH","SIDEBAR_RESIZING_CLASS","outerContainerWidth","_updateWidth","maxWidth","_mouseMove","_mouseUp","updated","THUMBNAIL_SCROLL_MARGIN","THUMBNAIL_SELECTED_CLASS","watchScroll","_scrollUpdated","getThumbnail","_getVisibleThumbs","scrollThumbnailIntoView","prevThumbnailView","shouldScroll","updateArgs","thumbnail","cleanup","TempImageFactory","_resetView","firstPdfPage","viewport","scale","checkSetImageDisabled","pageNum","defaultViewport","firstThumbnailView","_cancelRendering","setPageLabels","ensurePdfPageLoaded","thumbView","getScrollAhead","visibleThumbs","scrollAhead","DRAW_UPSCALE_FACTOR","MAX_NUM_SCALING_STEPS","THUMBNAIL_CANVAS_BORDER_WIDTH","THUMBNAIL_WIDTH","tempCanvas","getCanvas","alpha","destroyCanvas","pageWidth","pageHeight","pageRatio","anchor","ring","borderAdjustment","setPdfPage","totalRotation","update","cancelRendering","_getPageDrawContext","upscaleFactor","canvas","outputScale","getOutputScale","transform","_convertCanvasToImage","reducedCanvas","image","draw","finishRenderTask","renderTask","drawViewport","renderContinueCallback","cont","renderContext","canvasContext","resultPromise","pageCached","setImage","_reduceImage","img","reducedWidth","reducedHeight","reducedImageCtx","_thumbPageTitle","_thumbPageCanvas","setPageLabel","_updateScrollMode","_updateSpreadMode","DEFAULT_CACHE_SIZE","ENABLE_PERMISSIONS_CLASS","PagesCountLimit","FORCE_SCROLL_MODE_PAGE","FORCE_LAZY_PAGE_INIT","PAUSE_EAGER_PAGE_INIT","buf","destroyFirstView","resize","idsToKeep","has","Symbol","iterator","firstView","AnnotationMode","previousAnnotationMode","previousContainerHeight","scrollModePageState","viewerVersion","getPageView","pageViewsReady","renderForms","_setCurrentPageNumber","resetCurrentPageView","pageLabel","currentPageLabel","initializePermissions","permissions","PermissionFlag","onePageRenderedOrForceFetch","isPureXfa","permissionsPromise","viewerElement","PixelsPerInch","textLayerFactory","annotationLayerFactory","xfaLayerFactory","textHighlighterFactory","structTreeLayerFactory","firstPageView","ensurePageViewVisible","getPagesLeft","previousPageNumber","scrollDown","pages","spread","dummyPage","pageIndexSet","parity","_scrollUpdate","_scrollIntoView","pageSpot","pageDiv","isSameScale","newScale","_setScaleUpdatePages","noScroll","preset","newValue","presetValue","_pageWidthScaleFactor","_setScale","hPadding","vPadding","pageWidthScale","pageHeightScale","horizontalScale","_resetCurrentPageView","pageLabelToPageNumber","scrollPageIntoView","widthScale","heightScale","boundingRect","_updateLocation","normalizedScaleValue","firstPage","pdfOpenParams","currentPageView","topLeft","intLeft","intTop","visiblePages","numVisiblePages","newCacheSize","isSimpleLayout","currentId","stillFullyVisible","containsElement","focus","_isContainerRtl","isChangingPresentationMode","isHorizontalScrollbarEnabled","isVerticalScrollbarEnabled","_getCurrentVisiblePage","_getVisiblePages","toggleLoadingIconSpinner","currentlyVisiblePages","createTextLayerBuilder","enhanceTextSelection","createTextHighlighter","createAnnotationLayerBuilder","hasJSActionsPromise","fieldObjectsPromise","annotationCanvasMap","createXfaLayerBuilder","createStructTreeLayerBuilder","hasEqualPageSizes","getPagesOverview","_getPageAdvance","yArray","expectedId","nextPage","advance","increaseScale","steps","decreaseScale","intent","hasJSActions","fieldObjects","annotations","dontFlip","AnnotationLayer","cancel","DEFAULT_L10N_STRINGS","of_pages","page_of_pages","document_properties_kb","document_properties_mb","document_properties_date_string","document_properties_page_size_unit_inches","document_properties_page_size_unit_millimeters","document_properties_page_size_orientation_portrait","document_properties_page_size_orientation_landscape","document_properties_page_size_name_a3","document_properties_page_size_name_a4","document_properties_page_size_name_letter","document_properties_page_size_name_legal","document_properties_page_size_dimension_string","document_properties_page_size_dimension_name_string","document_properties_linearized_yes","document_properties_linearized_no","print_progress_percent","additional_layers","page_landmark","thumb_page_title","thumb_page_canvas","find_reached_top","find_reached_bottom","find_not_found","error_version_info","error_message","error_stack","error_file","error_line","rendering_error","page_scale_width","page_scale_fit","page_scale_auto","page_scale_actual","page_scale_percent","loading_error","invalid_file_error","missing_file_error","unexpected_response_error","printing_not_supported","printing_not_ready","web_fonts_disabled","PARTIAL_LANG_CODES","en","es","fy","ga","gu","hi","hy","nb","ne","nn","pa","pt","sv","zh","langCode","NullL10n","getL10nFallback","formatL10nValue","MAX_CANVAS_PIXELS","destroy","_renderAnnotationLayer","_renderXfaLayer","_buildXfaTextContentItems","text","_resetZoomLayer","removeFromDOM","zoomLayerCanvas","keepZoomLayer","keepAnnotationLayer","keepXfaLayer","childNodes","zoomLayerNode","annotationLayerNode","xfaLayerNode","arguments","viewportScale","style","redrawAnnotationLayer","redrawXfaLayer","cssTransform","isScalingRestricted","relativeRotation","absRotation","scaleX","scaleY","textLayerViewport","textRelativeRotation","textAbsRotation","textLayerDiv","transX","transY","getPagePoint","viewVisible","canvasWrapper","textLayer","finishPaintTask","paintTask","readableStream","includeMarkedContent","tree","treeDom","paintOnCanvas","renderCapability","onRenderContinue","isCanvasHidden","showCanvas","actualSizeViewport","pixelsInViewport","maxScale","sfx","approximateFraction","sfy","roundToDivide","paintOnSvg","cancelled","ensureNotCancelled","opList","svgGfx","svg","wrapper","PDF_ROLE_TO_HTML_ROLE","Document","DocumentFragment","Part","Sect","Div","Aside","NonStruct","P","H","Title","FENote","Sub","Lbl","Span","Em","Strong","Link","Annot","Form","Ruby","RB","RT","RP","Warichu","WT","WP","L","LI","LBody","Table","TR","TH","TD","THead","TBody","TFoot","Caption","Figure","Formula","Artifact","HEADING_PATTERN","_setAttributes","structElement","htmlElement","_walk","role","setTextMapping","enable","disable","_convertMatches","iIndex","end","textContentItemsStr","m","mm","begin","divIdx","_renderMatches","isSelectedPage","selectedMatchIdx","prevEnd","infinity","textDivs","appendTextToDiv","Node","span","className","i0","i1","isSelected","highlightSuffix","beginText","n0","n1","_updateMatches","clearedUntilDivIdx","n","EXPAND_DIVS_TIMEOUT","highlighter","endOfContent","numTextDivs","textLayerFrag","textContentStream","setTextContentStream","setTextContent","_bindMouse","expandDivsTimer","adjustTop","divBounds","xfaHtml","XfaLayer","eventName","eventDetails","lastPage","pageRotateCw","pageRotateCcw","isOpen","setPageNumber","setPagesCount","_bindClickListeners","details","_bindCursorToolsListener","buttons","_bindScrollModeListener","scrollModeChanged","forceScrollModePage","isScrollModeHorizontal","_bindSpreadModeListener","spreadModeChanged","_setMaxHeight","PAGE_NUMBER_LOADING_INDICATOR","scaleSelect","customScaleOption","next","setPageScale","_bindListeners","self","resetNumPages","pageScale","predefinedValueFound","option","updateLoadingIndicatorState","pageNumberInput","_adjustScaleWidth","predefinedValuesPromise","scaleSelectContainerWidth","scaleSelectOverflow","DEFAULT_VIEW_HISTORY_CACHE_SIZE","cacheSize","databaseStr","database","branch","_writeToStorage","localStorage","_readFromStorage","setMultiple","properties","getMultiple","values","GenericCom","prefs","prefValue","defaultValue","defaultType","obj","createValidAbsoluteUrl","downloadData","blobUrl","createObjectURL","openOrDownloadData","isPdfData","isPdfFile","contentType","viewerUrl","encodeURIComponent","webL10n","fixupLangCode","getLanguage","getDirection","translate","gL10nData","gTextData","gTextProp","gLanguage","gMacros","gReadyState","gAsyncResourceLoading","script","l10nId","l10nArgs","onSuccess","onFailure","xhr","dictionary","reBlank","reComment","reSection","reImport","reSplit","entries","rawText","currentLang","genericLang","lang","skipLang","parsedRawLinesCallback","loadImport","tmp","evalString","nextEntry","xhrLoadText","parseRawLines","parsedPropertiesCallback","parseProperties","prop","successCallback","clear","langLinks","getL10nResourceLinks","langCount","dict","getL10nDictionary","defaultLocale","anyCaseLang","onResourceLoaded","gResourceCount","link","parseResource","resource","locales2rules","list","start","pluralRules","isBetween","getPluralRules","rv","substIndexes","substArguments","reIndex","reMatch","macroName","paramName","macro","reArgs","arg","getL10nAttributes","getL10nData","getChildElementCount","children","l","textNode","getTranslatableChildren","elementCount","translateElement","getData","getText","setLanguage","loadLocale","rtlList","shortCode","getReadyState","createSandbox","sandbox","dispatchEventInSandbox","destroySandbox","activeService","scratchCanvas","PRINT_UNITS","PDFPrintService","layout","body","pageSize","ensureOverlay","renderPages","getXfaHtmlForPrinting","renderNextPage","renderProgress","renderPage","useRenderedPage","performPrint","print","throwIfInactive","activeServiceOnEntry","abort","progressContainer","progressBar","progressPerc","stopPropagationIfNeeded","overlayPromise","builder","getXfaPageViewport","pdfjsVersion","pdfjsBuild","require","mainContainer","viewerContainer","viewFind","openFile","presentationModeButton","viewBookmark","toggleButton","toolbarButtonContainer","openFileButton","printButton","downloadButton","viewBookmarkButton","firstPageButton","lastPageButton","pageRotateCwButton","pageRotateCcwButton","cursorSelectToolButton","cursorHandToolButton","scrollPageButton","scrollVerticalButton","scrollHorizontalButton","scrollWrappedButton","spreadNoneButton","spreadOddButton","spreadEvenButton","documentPropertiesButton","sidebar","outerContainer","thumbnailButton","outlineButton","attachmentsButton","layersButton","outlineView","attachmentsView","layersView","outlineOptionsContainer","currentOutlineItemButton","sidebarResizer","resizer","findBar","findField","highlightAllCheckbox","caseSensitiveCheckbox","entireWordCheckbox","findResultsCount","findPreviousButton","findNextButton","passwordOverlay","overlayName","submitButton","cancelButton","documentProperties","fields","fileName","creationDate","modificationDate","debuggerScriptPath","config","getViewerConfiguration","webViewerLoad"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"viewer.js","mappings":"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","sources":["webpack://pdf.js/web/app_options.js","webpack://pdf.js/web/app.js","webpack://pdf.js/web/ui_utils.js","webpack://pdf.js/web/event_utils.js","webpack://pdf.js/web/pdfjs.js","webpack://pdf.js/web/pdf_cursor_tools.js","webpack://pdf.js/web/grab_to_pan.js","webpack://pdf.js/web/pdf_link_service.js","webpack://pdf.js/web/overlay_manager.js","webpack://pdf.js/web/password_prompt.js","webpack://pdf.js/web/pdf_attachment_viewer.js","webpack://pdf.js/web/base_tree_viewer.js","webpack://pdf.js/web/pdf_document_properties.js","webpack://pdf.js/web/pdf_find_bar.js","webpack://pdf.js/web/pdf_find_controller.js","webpack://pdf.js/web/pdf_find_utils.js","webpack://pdf.js/web/pdf_history.js","webpack://pdf.js/web/pdf_layer_viewer.js","webpack://pdf.js/web/pdf_outline_viewer.js","webpack://pdf.js/web/pdf_presentation_mode.js","webpack://pdf.js/web/pdf_rendering_queue.js","webpack://pdf.js/web/pdf_scripting_manager.js","webpack://pdf.js/web/pdf_sidebar.js","webpack://pdf.js/web/pdf_sidebar_resizer.js","webpack://pdf.js/web/pdf_thumbnail_viewer.js","webpack://pdf.js/web/pdf_thumbnail_view.js","webpack://pdf.js/web/pdf_viewer.js","webpack://pdf.js/web/base_viewer.js","webpack://pdf.js/web/annotation_layer_builder.js","webpack://pdf.js/web/l10n_utils.js","webpack://pdf.js/web/pdf_page_view.js","webpack://pdf.js/web/struct_tree_layer_builder.js","webpack://pdf.js/web/text_highlighter.js","webpack://pdf.js/web/text_layer_builder.js","webpack://pdf.js/web/xfa_layer_builder.js","webpack://pdf.js/web/secondary_toolbar.js","webpack://pdf.js/web/toolbar.js","webpack://pdf.js/web/view_history.js","webpack://pdf.js/web/genericcom.js","webpack://pdf.js/web/preferences.js","webpack://pdf.js/web/download_manager.js","webpack://pdf.js/web/genericl10n.js","webpack://pdf.js/external/webL10n/l10n.js","webpack://pdf.js/web/generic_scripting.js","webpack://pdf.js/web/pdf_print_service.js","webpack://pdf.js/web/print_utils.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/web/viewer.js"],"sourcesContent":["/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst compatibilityParams = Object.create(null);\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"LIB\") &&\n typeof navigator === \"undefined\"\n ) {\n globalThis.navigator = Object.create(null);\n }\n const userAgent = navigator.userAgent || \"\";\n const platform = navigator.platform || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 1;\n\n const isAndroid = /Android/.test(userAgent);\n const isIOS =\n /\\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) ||\n (platform === \"MacIntel\" && maxTouchPoints > 1);\n\n // Limit canvas size to 5 mega-pixels on mobile.\n // Support: Android, iOS\n (function checkCanvasSizeLimitation() {\n if (isIOS || isAndroid) {\n compatibilityParams.maxCanvasPixels = 5242880;\n }\n })();\n}\n\nconst OptionKind = {\n VIEWER: 0x02,\n API: 0x04,\n WORKER: 0x08,\n PREFERENCE: 0x80,\n};\n\n/**\n * NOTE: These options are used to generate the `default_preferences.json` file,\n * see `OptionKind.PREFERENCE`, hence the values below must use only\n * primitive types and cannot rely on any imported types.\n */\nconst defaultOptions = {\n annotationMode: {\n /** @type {number} */\n value: 2,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n cursorToolOnLoad: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n defaultUrl: {\n /** @type {string} */\n value: \"compressed.tracemonkey-pldi-09.pdf\",\n kind: OptionKind.VIEWER,\n },\n defaultZoomValue: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n disableHistory: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER,\n },\n disablePageLabels: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePermissions: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePrintAutoRotate: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enableScripting: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\"),\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n externalLinkRel: {\n /** @type {string} */\n value: \"noopener noreferrer nofollow\",\n kind: OptionKind.VIEWER,\n },\n externalLinkTarget: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n historyUpdateUrl: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n ignoreDestinationZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n imageResourcesPath: {\n /** @type {string} */\n value: \"./images/\",\n kind: OptionKind.VIEWER,\n },\n maxCanvasPixels: {\n /** @type {number} */\n value: 16777216,\n compatibility: compatibilityParams.maxCanvasPixels,\n kind: OptionKind.VIEWER,\n },\n pdfBugEnabled: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\"),\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n printResolution: {\n /** @type {number} */\n value: 150,\n kind: OptionKind.VIEWER,\n },\n renderer: {\n /** @type {string} */\n value: \"canvas\",\n kind: OptionKind.VIEWER,\n },\n sidebarViewOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n scrollModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n spreadModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n textLayerMode: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n useOnlyCssZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewerCssTheme: {\n /** @type {number} */\n value: typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\") ? 2 : 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewOnLoad: {\n /** @type {boolean} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n\n cMapPacked: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n cMapUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/bcmaps/\"\n : \"../web/cmaps/\",\n kind: OptionKind.API,\n },\n disableAutoFetch: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableFontFace: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableRange: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableStream: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n docBaseUrl: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.API,\n },\n enableXfa: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n fontExtraProperties: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n isEvalSupported: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n maxImageSize: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.API,\n },\n pdfBug: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n standardFontDataUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/standard_fonts/\"\n : \"../web/standard_fonts/\",\n kind: OptionKind.API,\n },\n verbosity: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.API,\n },\n\n workerPort: {\n /** @type {Object} */\n value: null,\n kind: OptionKind.WORKER,\n },\n workerSrc: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../src/worker_loader.js\"\n : \"../build/pdf.worker.js\",\n kind: OptionKind.WORKER,\n },\n};\nif (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n) {\n defaultOptions.disablePreferences = {\n /** @type {boolean} */\n value: typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\"),\n kind: OptionKind.VIEWER,\n };\n defaultOptions.locale = {\n /** @type {string} */\n value: navigator.language || \"en-US\",\n kind: OptionKind.VIEWER,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../build/dev-sandbox/pdf.sandbox.js\"\n : \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n\n defaultOptions.renderer.kind += OptionKind.PREFERENCE;\n} else if (PDFJSDev.test(\"CHROME\")) {\n defaultOptions.disableTelemetry = {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value: \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n}\n\nconst userOptions = Object.create(null);\n\nclass AppOptions {\n constructor() {\n throw new Error(\"Cannot initialize AppOptions.\");\n }\n\n static get(name) {\n const userOption = userOptions[name];\n if (userOption !== undefined) {\n return userOption;\n }\n const defaultOption = defaultOptions[name];\n if (defaultOption !== undefined) {\n return defaultOption.compatibility ?? defaultOption.value;\n }\n return undefined;\n }\n\n static getAll(kind = null) {\n const options = Object.create(null);\n for (const name in defaultOptions) {\n const defaultOption = defaultOptions[name];\n if (kind) {\n if ((kind & defaultOption.kind) === 0) {\n continue;\n }\n if (kind === OptionKind.PREFERENCE) {\n const value = defaultOption.value,\n valueType = typeof value;\n\n if (\n valueType === \"boolean\" ||\n valueType === \"string\" ||\n (valueType === \"number\" && Number.isInteger(value))\n ) {\n options[name] = value;\n continue;\n }\n throw new Error(`Invalid type for preference: ${name}`);\n }\n }\n const userOption = userOptions[name];\n options[name] =\n userOption !== undefined\n ? userOption\n : defaultOption.compatibility ?? defaultOption.value;\n }\n return options;\n }\n\n static set(name, value) {\n userOptions[name] = value;\n }\n\n static setAll(options) {\n for (const name in options) {\n userOptions[name] = options[name];\n }\n }\n\n static remove(name) {\n delete userOptions[name];\n }\n\n /**\n * @ignore\n */\n static _hasUserOptions() {\n return Object.keys(userOptions).length > 0;\n }\n}\n\nexport { AppOptions, compatibilityParams, OptionKind };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals PDFBug, Stats */\n\nimport {\n animationStarted,\n apiPageLayoutToViewerModes,\n apiPageModeToSidebarView,\n AutoPrintRegExp,\n DEFAULT_SCALE_VALUE,\n getActiveOrFocusedElement,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n noContextMenuHandler,\n normalizeWheelEventDirection,\n parseQueryString,\n ProgressBar,\n RendererType,\n RenderingStates,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport { AppOptions, OptionKind } from \"./app_options.js\";\nimport { AutomationEventBus, EventBus } from \"./event_utils.js\";\nimport {\n build,\n createPromiseCapability,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n GlobalWorkerOptions,\n InvalidPDFException,\n isPdfFile,\n loadScript,\n MissingPDFException,\n OPS,\n PDFWorker,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n version,\n} from \"pdfjs-lib\";\nimport { CursorTool, PDFCursorTools } from \"./pdf_cursor_tools.js\";\nimport { LinkTarget, PDFLinkService } from \"./pdf_link_service.js\";\nimport { OverlayManager } from \"./overlay_manager.js\";\nimport { PasswordPrompt } from \"./password_prompt.js\";\nimport { PDFAttachmentViewer } from \"./pdf_attachment_viewer.js\";\nimport { PDFDocumentProperties } from \"./pdf_document_properties.js\";\nimport { PDFFindBar } from \"./pdf_find_bar.js\";\nimport { PDFFindController } from \"./pdf_find_controller.js\";\nimport { PDFHistory } from \"./pdf_history.js\";\nimport { PDFLayerViewer } from \"./pdf_layer_viewer.js\";\nimport { PDFOutlineViewer } from \"./pdf_outline_viewer.js\";\nimport { PDFPresentationMode } from \"./pdf_presentation_mode.js\";\nimport { PDFRenderingQueue } from \"./pdf_rendering_queue.js\";\nimport { PDFScriptingManager } from \"./pdf_scripting_manager.js\";\nimport { PDFSidebar } from \"./pdf_sidebar.js\";\nimport { PDFSidebarResizer } from \"./pdf_sidebar_resizer.js\";\nimport { PDFThumbnailViewer } from \"./pdf_thumbnail_viewer.js\";\nimport { PDFViewer } from \"./pdf_viewer.js\";\nimport { SecondaryToolbar } from \"./secondary_toolbar.js\";\nimport { Toolbar } from \"./toolbar.js\";\nimport { ViewHistory } from \"./view_history.js\";\n\nconst DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; // ms\nconst FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms\nconst WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; // ms\n\nconst ViewOnLoad = {\n UNKNOWN: -1,\n PREVIOUS: 0, // Default value.\n INITIAL: 1,\n};\n\nconst ViewerCssTheme = {\n AUTOMATIC: 0, // Default value.\n LIGHT: 1,\n DARK: 2,\n};\n\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_VERSIONS = [\n \"1.0\",\n \"1.1\",\n \"1.2\",\n \"1.3\",\n \"1.4\",\n \"1.5\",\n \"1.6\",\n \"1.7\",\n \"1.8\",\n \"1.9\",\n \"2.0\",\n \"2.1\",\n \"2.2\",\n \"2.3\",\n];\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_GENERATORS = [\n \"acrobat distiller\",\n \"acrobat pdfwriter\",\n \"adobe livecycle\",\n \"adobe pdf library\",\n \"adobe photoshop\",\n \"ghostscript\",\n \"tcpdf\",\n \"cairo\",\n \"dvipdfm\",\n \"dvips\",\n \"pdftex\",\n \"pdfkit\",\n \"itext\",\n \"prince\",\n \"quarkxpress\",\n \"mac os x\",\n \"microsoft\",\n \"openoffice\",\n \"oracle\",\n \"luradocument\",\n \"pdf-xchange\",\n \"antenna house\",\n \"aspose.cells\",\n \"fpdf\",\n];\n\nclass DefaultExternalServices {\n constructor() {\n throw new Error(\"Cannot initialize DefaultExternalServices.\");\n }\n\n static updateFindControlState(data) {}\n\n static updateFindMatchesCount(data) {}\n\n static initPassiveLoading(callbacks) {}\n\n static async fallback(data) {}\n\n static reportTelemetry(data) {}\n\n static createDownloadManager(options) {\n throw new Error(\"Not implemented: createDownloadManager\");\n }\n\n static createPreferences() {\n throw new Error(\"Not implemented: createPreferences\");\n }\n\n static createL10n(options) {\n throw new Error(\"Not implemented: createL10n\");\n }\n\n static createScripting(options) {\n throw new Error(\"Not implemented: createScripting\");\n }\n\n static get supportsIntegratedFind() {\n return shadow(this, \"supportsIntegratedFind\", false);\n }\n\n static get supportsDocumentFonts() {\n return shadow(this, \"supportsDocumentFonts\", true);\n }\n\n static get supportedMouseWheelZoomModifierKeys() {\n return shadow(this, \"supportedMouseWheelZoomModifierKeys\", {\n ctrlKey: true,\n metaKey: true,\n });\n }\n\n static get isInAutomation() {\n return shadow(this, \"isInAutomation\", false);\n }\n}\n\nconst PDFViewerApplication = {\n initialBookmark: document.location.hash.substring(1),\n _initializedCapability: createPromiseCapability(),\n _fellback: false,\n appConfig: null,\n pdfDocument: null,\n pdfLoadingTask: null,\n printService: null,\n /** @type {PDFViewer} */\n pdfViewer: null,\n /** @type {PDFThumbnailViewer} */\n pdfThumbnailViewer: null,\n /** @type {PDFRenderingQueue} */\n pdfRenderingQueue: null,\n /** @type {PDFPresentationMode} */\n pdfPresentationMode: null,\n /** @type {PDFDocumentProperties} */\n pdfDocumentProperties: null,\n /** @type {PDFLinkService} */\n pdfLinkService: null,\n /** @type {PDFHistory} */\n pdfHistory: null,\n /** @type {PDFSidebar} */\n pdfSidebar: null,\n /** @type {PDFSidebarResizer} */\n pdfSidebarResizer: null,\n /** @type {PDFOutlineViewer} */\n pdfOutlineViewer: null,\n /** @type {PDFAttachmentViewer} */\n pdfAttachmentViewer: null,\n /** @type {PDFLayerViewer} */\n pdfLayerViewer: null,\n /** @type {PDFCursorTools} */\n pdfCursorTools: null,\n /** @type {PDFScriptingManager} */\n pdfScriptingManager: null,\n /** @type {ViewHistory} */\n store: null,\n /** @type {DownloadManager} */\n downloadManager: null,\n /** @type {OverlayManager} */\n overlayManager: null,\n /** @type {Preferences} */\n preferences: null,\n /** @type {Toolbar} */\n toolbar: null,\n /** @type {SecondaryToolbar} */\n secondaryToolbar: null,\n /** @type {EventBus} */\n eventBus: null,\n /** @type {IL10n} */\n l10n: null,\n isInitialViewSet: false,\n downloadComplete: false,\n isViewerEmbedded: window.parent !== window,\n url: \"\",\n baseUrl: \"\",\n _downloadUrl: \"\",\n externalServices: DefaultExternalServices,\n _boundEvents: Object.create(null),\n documentInfo: null,\n metadata: null,\n _contentDispositionFilename: null,\n _contentLength: null,\n _saveInProgress: false,\n _docStats: null,\n _wheelUnusedTicks: 0,\n _idleCallbacks: new Set(),\n\n // Called once when the document is loaded.\n async initialize(appConfig) {\n this.preferences = this.externalServices.createPreferences();\n this.appConfig = appConfig;\n\n await this._readPreferences();\n await this._parseHashParameters();\n this._forceCssTheme();\n await this._initializeL10n();\n\n if (\n this.isViewerEmbedded &&\n AppOptions.get(\"externalLinkTarget\") === LinkTarget.NONE\n ) {\n // Prevent external links from \"replacing\" the viewer,\n // when it's embedded in e.g. an <iframe> or an <object>.\n AppOptions.set(\"externalLinkTarget\", LinkTarget.TOP);\n }\n await this._initializeViewerComponents();\n\n // Bind the various event handlers *after* the viewer has been\n // initialized, to prevent errors if an event arrives too soon.\n this.bindEvents();\n this.bindWindowEvents();\n\n // We can start UI localization now.\n const appContainer = appConfig.appContainer || document.documentElement;\n this.l10n.translate(appContainer).then(() => {\n // Dispatch the 'localized' event on the `eventBus` once the viewer\n // has been fully initialized and translated.\n this.eventBus.dispatch(\"localized\", { source: this });\n });\n\n this._initializedCapability.resolve();\n },\n\n /**\n * @private\n */\n async _readPreferences() {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n ) {\n if (AppOptions.get(\"disablePreferences\")) {\n // Give custom implementations of the default viewer a simpler way to\n // opt-out of having the `Preferences` override existing `AppOptions`.\n return;\n }\n if (AppOptions._hasUserOptions()) {\n console.warn(\n \"_readPreferences: The Preferences may override manually set AppOptions; \" +\n 'please use the \"disablePreferences\"-option in order to prevent that.'\n );\n }\n }\n try {\n AppOptions.setAll(await this.preferences.getAll());\n } catch (reason) {\n console.error(`_readPreferences: \"${reason?.message}\".`);\n }\n },\n\n /**\n * Potentially parse special debugging flags in the hash section of the URL.\n * @private\n */\n async _parseHashParameters() {\n if (!AppOptions.get(\"pdfBugEnabled\")) {\n return;\n }\n const hash = document.location.hash.substring(1);\n if (!hash) {\n return;\n }\n const params = parseQueryString(hash),\n waitOn = [];\n\n if (params.get(\"disableworker\") === \"true\") {\n waitOn.push(loadFakeWorker());\n }\n if (params.has(\"disablerange\")) {\n AppOptions.set(\"disableRange\", params.get(\"disablerange\") === \"true\");\n }\n if (params.has(\"disablestream\")) {\n AppOptions.set(\"disableStream\", params.get(\"disablestream\") === \"true\");\n }\n if (params.has(\"disableautofetch\")) {\n AppOptions.set(\n \"disableAutoFetch\",\n params.get(\"disableautofetch\") === \"true\"\n );\n }\n if (params.has(\"disablefontface\")) {\n AppOptions.set(\n \"disableFontFace\",\n params.get(\"disablefontface\") === \"true\"\n );\n }\n if (params.has(\"disablehistory\")) {\n AppOptions.set(\"disableHistory\", params.get(\"disablehistory\") === \"true\");\n }\n if (params.has(\"verbosity\")) {\n AppOptions.set(\"verbosity\", params.get(\"verbosity\") | 0);\n }\n if (params.has(\"textlayer\")) {\n switch (params.get(\"textlayer\")) {\n case \"off\":\n AppOptions.set(\"textLayerMode\", TextLayerMode.DISABLE);\n break;\n case \"visible\":\n case \"shadow\":\n case \"hover\":\n const viewer = this.appConfig.viewerContainer;\n viewer.classList.add(`textLayer-${params.get(\"textlayer\")}`);\n break;\n }\n }\n if (params.has(\"pdfbug\")) {\n AppOptions.set(\"pdfBug\", true);\n AppOptions.set(\"fontExtraProperties\", true);\n\n const enabled = params.get(\"pdfbug\").split(\",\");\n waitOn.push(initPDFBug(enabled));\n }\n // It is not possible to change locale for the (various) extension builds.\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")) &&\n params.has(\"locale\")\n ) {\n AppOptions.set(\"locale\", params.get(\"locale\"));\n }\n\n if (waitOn.length === 0) {\n return;\n }\n try {\n await Promise.all(waitOn);\n } catch (reason) {\n console.error(`_parseHashParameters: \"${reason.message}\".`);\n }\n },\n\n /**\n * @private\n */\n async _initializeL10n() {\n this.l10n = this.externalServices.createL10n(\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n ? { locale: AppOptions.get(\"locale\") }\n : null\n );\n const dir = await this.l10n.getDirection();\n document.getElementsByTagName(\"html\")[0].dir = dir;\n },\n\n /**\n * @private\n */\n _forceCssTheme() {\n const cssTheme = AppOptions.get(\"viewerCssTheme\");\n if (\n cssTheme === ViewerCssTheme.AUTOMATIC ||\n !Object.values(ViewerCssTheme).includes(cssTheme)\n ) {\n return;\n }\n try {\n const styleSheet = document.styleSheets[0];\n const cssRules = styleSheet?.cssRules || [];\n for (let i = 0, ii = cssRules.length; i < ii; i++) {\n const rule = cssRules[i];\n if (\n rule instanceof CSSMediaRule &&\n rule.media?.[0] === \"(prefers-color-scheme: dark)\"\n ) {\n if (cssTheme === ViewerCssTheme.LIGHT) {\n styleSheet.deleteRule(i);\n return;\n }\n // cssTheme === ViewerCssTheme.DARK\n const darkRules =\n /^@media \\(prefers-color-scheme: dark\\) {\\n\\s*([\\w\\s-.,:;/\\\\{}()]+)\\n}$/.exec(\n rule.cssText\n );\n if (darkRules?.[1]) {\n styleSheet.deleteRule(i);\n styleSheet.insertRule(darkRules[1], i);\n }\n return;\n }\n }\n } catch (reason) {\n console.error(`_forceCssTheme: \"${reason?.message}\".`);\n }\n },\n\n /**\n * @private\n */\n async _initializeViewerComponents() {\n const { appConfig, externalServices } = this;\n\n const eventBus = externalServices.isInAutomation\n ? new AutomationEventBus()\n : new EventBus();\n this.eventBus = eventBus;\n\n this.overlayManager = new OverlayManager();\n\n const pdfRenderingQueue = new PDFRenderingQueue();\n pdfRenderingQueue.onIdle = this._cleanup.bind(this);\n this.pdfRenderingQueue = pdfRenderingQueue;\n\n const pdfLinkService = new PDFLinkService({\n eventBus,\n externalLinkTarget: AppOptions.get(\"externalLinkTarget\"),\n externalLinkRel: AppOptions.get(\"externalLinkRel\"),\n ignoreDestinationZoom: AppOptions.get(\"ignoreDestinationZoom\"),\n });\n this.pdfLinkService = pdfLinkService;\n\n const downloadManager = externalServices.createDownloadManager();\n this.downloadManager = downloadManager;\n\n const findController = new PDFFindController({\n linkService: pdfLinkService,\n eventBus,\n });\n this.findController = findController;\n\n const pdfScriptingManager = new PDFScriptingManager({\n eventBus,\n sandboxBundleSrc:\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC || CHROME\")\n ? AppOptions.get(\"sandboxBundleSrc\")\n : null,\n scriptingFactory: externalServices,\n docPropertiesLookup: this._scriptingDocProperties.bind(this),\n });\n this.pdfScriptingManager = pdfScriptingManager;\n\n const container = appConfig.mainContainer;\n const viewer = appConfig.viewerContainer;\n this.pdfViewer = new PDFViewer({\n container,\n viewer,\n eventBus,\n renderingQueue: pdfRenderingQueue,\n linkService: pdfLinkService,\n downloadManager,\n findController,\n scriptingManager:\n AppOptions.get(\"enableScripting\") && pdfScriptingManager,\n renderer: AppOptions.get(\"renderer\"),\n l10n: this.l10n,\n textLayerMode: AppOptions.get(\"textLayerMode\"),\n annotationMode: AppOptions.get(\"annotationMode\"),\n imageResourcesPath: AppOptions.get(\"imageResourcesPath\"),\n enablePrintAutoRotate: AppOptions.get(\"enablePrintAutoRotate\"),\n useOnlyCssZoom: AppOptions.get(\"useOnlyCssZoom\"),\n maxCanvasPixels: AppOptions.get(\"maxCanvasPixels\"),\n enablePermissions: AppOptions.get(\"enablePermissions\"),\n });\n pdfRenderingQueue.setViewer(this.pdfViewer);\n pdfLinkService.setViewer(this.pdfViewer);\n pdfScriptingManager.setViewer(this.pdfViewer);\n\n this.pdfThumbnailViewer = new PDFThumbnailViewer({\n container: appConfig.sidebar.thumbnailView,\n eventBus,\n renderingQueue: pdfRenderingQueue,\n linkService: pdfLinkService,\n l10n: this.l10n,\n });\n pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);\n\n // The browsing history is only enabled when the viewer is standalone,\n // i.e. not when it is embedded in a web page.\n if (!this.isViewerEmbedded && !AppOptions.get(\"disableHistory\")) {\n this.pdfHistory = new PDFHistory({\n linkService: pdfLinkService,\n eventBus,\n });\n pdfLinkService.setHistory(this.pdfHistory);\n }\n\n if (!this.supportsIntegratedFind) {\n this.findBar = new PDFFindBar(appConfig.findBar, eventBus, this.l10n);\n }\n\n this.pdfDocumentProperties = new PDFDocumentProperties(\n appConfig.documentProperties,\n this.overlayManager,\n eventBus,\n this.l10n\n );\n\n this.pdfCursorTools = new PDFCursorTools({\n container,\n eventBus,\n cursorToolOnLoad: AppOptions.get(\"cursorToolOnLoad\"),\n });\n\n this.toolbar = new Toolbar(appConfig.toolbar, eventBus, this.l10n);\n\n this.secondaryToolbar = new SecondaryToolbar(\n appConfig.secondaryToolbar,\n container,\n eventBus\n );\n\n if (this.supportsFullscreen) {\n this.pdfPresentationMode = new PDFPresentationMode({\n container,\n pdfViewer: this.pdfViewer,\n eventBus,\n });\n }\n\n this.passwordPrompt = new PasswordPrompt(\n appConfig.passwordOverlay,\n this.overlayManager,\n this.l10n,\n this.isViewerEmbedded\n );\n\n this.pdfOutlineViewer = new PDFOutlineViewer({\n container: appConfig.sidebar.outlineView,\n eventBus,\n linkService: pdfLinkService,\n });\n\n this.pdfAttachmentViewer = new PDFAttachmentViewer({\n container: appConfig.sidebar.attachmentsView,\n eventBus,\n downloadManager,\n });\n\n this.pdfLayerViewer = new PDFLayerViewer({\n container: appConfig.sidebar.layersView,\n eventBus,\n l10n: this.l10n,\n });\n\n this.pdfSidebar = new PDFSidebar({\n elements: appConfig.sidebar,\n pdfViewer: this.pdfViewer,\n pdfThumbnailViewer: this.pdfThumbnailViewer,\n eventBus,\n l10n: this.l10n,\n });\n this.pdfSidebar.onToggled = this.forceRendering.bind(this);\n\n this.pdfSidebarResizer = new PDFSidebarResizer(\n appConfig.sidebarResizer,\n eventBus,\n this.l10n\n );\n },\n\n run(config) {\n this.initialize(config).then(webViewerInitialized);\n },\n\n get initialized() {\n return this._initializedCapability.settled;\n },\n\n get initializedPromise() {\n return this._initializedCapability.promise;\n },\n\n zoomIn(steps) {\n if (this.pdfViewer.isInPresentationMode) {\n return;\n }\n this.pdfViewer.increaseScale(steps);\n },\n\n zoomOut(steps) {\n if (this.pdfViewer.isInPresentationMode) {\n return;\n }\n this.pdfViewer.decreaseScale(steps);\n },\n\n zoomReset() {\n if (this.pdfViewer.isInPresentationMode) {\n return;\n }\n this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\n },\n\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n },\n\n get page() {\n return this.pdfViewer.currentPageNumber;\n },\n\n set page(val) {\n this.pdfViewer.currentPageNumber = val;\n },\n\n get supportsPrinting() {\n return PDFPrintServiceFactory.instance.supportsPrinting;\n },\n\n get supportsFullscreen() {\n return shadow(this, \"supportsFullscreen\", document.fullscreenEnabled);\n },\n\n get supportsIntegratedFind() {\n return this.externalServices.supportsIntegratedFind;\n },\n\n get supportsDocumentFonts() {\n return this.externalServices.supportsDocumentFonts;\n },\n\n get loadingBar() {\n const bar = new ProgressBar(\"#loadingBar\");\n return shadow(this, \"loadingBar\", bar);\n },\n\n get supportedMouseWheelZoomModifierKeys() {\n return this.externalServices.supportedMouseWheelZoomModifierKeys;\n },\n\n initPassiveLoading() {\n if (\n typeof PDFJSDev === \"undefined\" ||\n !PDFJSDev.test(\"MOZCENTRAL || CHROME\")\n ) {\n throw new Error(\"Not implemented: initPassiveLoading\");\n }\n this.externalServices.initPassiveLoading({\n onOpenWithTransport: (url, length, transport) => {\n this.open(url, { length, range: transport });\n },\n onOpenWithData: (data, contentDispositionFilename) => {\n if (isPdfFile(contentDispositionFilename)) {\n this._contentDispositionFilename = contentDispositionFilename;\n }\n this.open(data);\n },\n onOpenWithURL: (url, length, originalUrl) => {\n const file = originalUrl !== undefined ? { url, originalUrl } : url;\n const args = length !== undefined ? { length } : null;\n\n this.open(file, args);\n },\n onError: err => {\n this.l10n.get(\"loading_error\").then(msg => {\n this._documentError(msg, err);\n });\n },\n onProgress: (loaded, total) => {\n this.progress(loaded / total);\n },\n });\n },\n\n setTitleUsingUrl(url = \"\", downloadUrl = null) {\n this.url = url;\n this.baseUrl = url.split(\"#\")[0];\n if (downloadUrl) {\n this._downloadUrl =\n downloadUrl === url ? this.baseUrl : downloadUrl.split(\"#\")[0];\n }\n let title = getPdfFilenameFromUrl(url, \"\");\n if (!title) {\n try {\n title = decodeURIComponent(getFilenameFromUrl(url)) || url;\n } catch (ex) {\n // decodeURIComponent may throw URIError,\n // fall back to using the unprocessed url in that case\n title = url;\n }\n }\n this.setTitle(title);\n },\n\n setTitle(title) {\n if (this.isViewerEmbedded) {\n // Embedded PDF viewers should not be changing their parent page's title.\n return;\n }\n document.title = title;\n },\n\n get _docFilename() {\n // Use `this.url` instead of `this.baseUrl` to perform filename detection\n // based on the reference fragment as ultimate fallback if needed.\n return this._contentDispositionFilename || getPdfFilenameFromUrl(this.url);\n },\n\n /**\n * @private\n */\n _hideViewBookmark() {\n // URL does not reflect proper document location - hiding some buttons.\n const { toolbar, secondaryToolbar } = this.appConfig;\n toolbar.viewBookmark.hidden = true;\n secondaryToolbar.viewBookmarkButton.hidden = true;\n },\n\n /**\n * @private\n */\n _cancelIdleCallbacks() {\n if (!this._idleCallbacks.size) {\n return;\n }\n for (const callback of this._idleCallbacks) {\n window.cancelIdleCallback(callback);\n }\n this._idleCallbacks.clear();\n },\n\n /**\n * Closes opened PDF document.\n * @returns {Promise} - Returns the promise, which is resolved when all\n * destruction is completed.\n */\n async close() {\n this._unblockDocumentLoadEvent();\n this._hideViewBookmark();\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n const { container } = this.appConfig.errorWrapper;\n container.hidden = true;\n }\n\n if (!this.pdfLoadingTask) {\n return;\n }\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n this.pdfDocument?.annotationStorage.size > 0 &&\n this._annotationStorageModified\n ) {\n try {\n // Trigger saving, to prevent data loss in forms; see issue 12257.\n await this.save({ sourceEventType: \"save\" });\n } catch (reason) {\n // Ignoring errors, to ensure that document closing won't break.\n }\n }\n const promises = [];\n\n promises.push(this.pdfLoadingTask.destroy());\n this.pdfLoadingTask = null;\n\n if (this.pdfDocument) {\n this.pdfDocument = null;\n\n this.pdfThumbnailViewer.setDocument(null);\n this.pdfViewer.setDocument(null);\n this.pdfLinkService.setDocument(null);\n this.pdfDocumentProperties.setDocument(null);\n }\n this.pdfLinkService.externalLinkEnabled = true;\n this._fellback = false;\n this.store = null;\n this.isInitialViewSet = false;\n this.downloadComplete = false;\n this.url = \"\";\n this.baseUrl = \"\";\n this._downloadUrl = \"\";\n this.documentInfo = null;\n this.metadata = null;\n this._contentDispositionFilename = null;\n this._contentLength = null;\n this._saveInProgress = false;\n this._docStats = null;\n\n this._cancelIdleCallbacks();\n promises.push(this.pdfScriptingManager.destroyPromise);\n\n this.pdfSidebar.reset();\n this.pdfOutlineViewer.reset();\n this.pdfAttachmentViewer.reset();\n this.pdfLayerViewer.reset();\n\n this.pdfHistory?.reset();\n this.findBar?.reset();\n this.toolbar.reset();\n this.secondaryToolbar.reset();\n\n if (typeof PDFBug !== \"undefined\") {\n PDFBug.cleanup();\n }\n await Promise.all(promises);\n },\n\n /**\n * Opens PDF document specified by URL or array with additional arguments.\n * @param {string|TypedArray|ArrayBuffer} file - PDF location or binary data.\n * @param {Object} [args] - Additional arguments for the getDocument call,\n * e.g. HTTP headers ('httpHeaders') or alternative\n * data transport ('range').\n * @returns {Promise} - Returns the promise, which is resolved when document\n * is opened.\n */\n async open(file, args) {\n if (this.pdfLoadingTask) {\n // We need to destroy already opened document.\n await this.close();\n }\n // Set the necessary global worker parameters, using the available options.\n const workerParameters = AppOptions.getAll(OptionKind.WORKER);\n for (const key in workerParameters) {\n GlobalWorkerOptions[key] = workerParameters[key];\n }\n\n const parameters = Object.create(null);\n if (typeof file === \"string\") {\n // URL\n this.setTitleUsingUrl(file, /* downloadUrl = */ file);\n parameters.url = file;\n } else if (file && \"byteLength\" in file) {\n // ArrayBuffer\n parameters.data = file;\n } else if (file.url && file.originalUrl) {\n this.setTitleUsingUrl(file.originalUrl, /* downloadUrl = */ file.url);\n parameters.url = file.url;\n }\n // Set the necessary API parameters, using the available options.\n const apiParameters = AppOptions.getAll(OptionKind.API);\n for (const key in apiParameters) {\n let value = apiParameters[key];\n\n if (key === \"docBaseUrl\" && !value) {\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n value = document.URL.split(\"#\")[0];\n } else if (PDFJSDev.test(\"MOZCENTRAL || CHROME\")) {\n value = this.baseUrl;\n }\n }\n parameters[key] = value;\n }\n // Finally, update the API parameters with the arguments (if they exist).\n if (args) {\n for (const key in args) {\n parameters[key] = args[key];\n }\n }\n\n const loadingTask = getDocument(parameters);\n this.pdfLoadingTask = loadingTask;\n\n loadingTask.onPassword = (updateCallback, reason) => {\n this.pdfLinkService.externalLinkEnabled = false;\n this.passwordPrompt.setUpdateCallback(updateCallback, reason);\n this.passwordPrompt.open();\n };\n\n loadingTask.onProgress = ({ loaded, total }) => {\n this.progress(loaded / total);\n };\n\n // Listen for unsupported features to trigger the fallback UI.\n loadingTask.onUnsupportedFeature = this.fallback.bind(this);\n\n return loadingTask.promise.then(\n pdfDocument => {\n this.load(pdfDocument);\n },\n reason => {\n if (loadingTask !== this.pdfLoadingTask) {\n return undefined; // Ignore errors for previously opened PDF files.\n }\n\n let key = \"loading_error\";\n if (reason instanceof InvalidPDFException) {\n key = \"invalid_file_error\";\n } else if (reason instanceof MissingPDFException) {\n key = \"missing_file_error\";\n } else if (reason instanceof UnexpectedResponseException) {\n key = \"unexpected_response_error\";\n }\n return this.l10n.get(key).then(msg => {\n this._documentError(msg, { message: reason?.message });\n throw reason;\n });\n }\n );\n },\n\n /**\n * @private\n */\n _ensureDownloadComplete() {\n if (this.pdfDocument && this.downloadComplete) {\n return;\n }\n throw new Error(\"PDF document not downloaded.\");\n },\n\n async download({ sourceEventType = \"download\" } = {}) {\n const url = this._downloadUrl,\n filename = this._docFilename;\n try {\n this._ensureDownloadComplete();\n\n const data = await this.pdfDocument.getData();\n const blob = new Blob([data], { type: \"application/pdf\" });\n\n await this.downloadManager.download(blob, url, filename, sourceEventType);\n } catch (reason) {\n // When the PDF document isn't ready, or the PDF file is still\n // downloading, simply download using the URL.\n await this.downloadManager.downloadUrl(url, filename);\n }\n },\n\n async save({ sourceEventType = \"download\" } = {}) {\n if (this._saveInProgress) {\n return;\n }\n this._saveInProgress = true;\n await this.pdfScriptingManager.dispatchWillSave();\n\n const url = this._downloadUrl,\n filename = this._docFilename;\n try {\n this._ensureDownloadComplete();\n\n const data = await this.pdfDocument.saveDocument();\n const blob = new Blob([data], { type: \"application/pdf\" });\n\n await this.downloadManager.download(blob, url, filename, sourceEventType);\n } catch (reason) {\n // When the PDF document isn't ready, or the PDF file is still\n // downloading, simply fallback to a \"regular\" download.\n console.error(`Error when saving the document: ${reason.message}`);\n await this.download({ sourceEventType });\n } finally {\n await this.pdfScriptingManager.dispatchDidSave();\n this._saveInProgress = false;\n }\n },\n\n downloadOrSave(options) {\n if (this.pdfDocument?.annotationStorage.size > 0) {\n this.save(options);\n } else {\n this.download(options);\n }\n },\n\n fallback(featureId) {\n this.externalServices.reportTelemetry({\n type: \"unsupportedFeature\",\n featureId,\n });\n\n // Only trigger the fallback once so we don't spam the user with messages\n // for one PDF.\n if (this._fellback) {\n return;\n }\n this._fellback = true;\n\n this.externalServices\n .fallback({\n featureId,\n url: this.baseUrl,\n })\n .then(download => {\n if (!download) {\n return;\n }\n this.download({ sourceEventType: \"download\" });\n });\n },\n\n /**\n * Show the error box; used for errors affecting loading and/or parsing of\n * the entire PDF document.\n */\n _documentError(message, moreInfo = null) {\n this._unblockDocumentLoadEvent();\n\n this._otherError(message, moreInfo);\n\n this.eventBus.dispatch(\"documenterror\", {\n source: this,\n message,\n reason: moreInfo?.message ?? null,\n });\n },\n\n /**\n * Show the error box; used for errors affecting e.g. only a single page.\n *\n * @param {string} message - A message that is human readable.\n * @param {Object} [moreInfo] - Further information about the error that is\n * more technical. Should have a 'message' and\n * optionally a 'stack' property.\n */\n _otherError(message, moreInfo = null) {\n const moreInfoText = [\n this.l10n.get(\"error_version_info\", {\n version: version || \"?\",\n build: build || \"?\",\n }),\n ];\n if (moreInfo) {\n moreInfoText.push(\n this.l10n.get(\"error_message\", { message: moreInfo.message })\n );\n if (moreInfo.stack) {\n moreInfoText.push(\n this.l10n.get(\"error_stack\", { stack: moreInfo.stack })\n );\n } else {\n if (moreInfo.filename) {\n moreInfoText.push(\n this.l10n.get(\"error_file\", { file: moreInfo.filename })\n );\n }\n if (moreInfo.lineNumber) {\n moreInfoText.push(\n this.l10n.get(\"error_line\", { line: moreInfo.lineNumber })\n );\n }\n }\n }\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n const errorWrapperConfig = this.appConfig.errorWrapper;\n const errorWrapper = errorWrapperConfig.container;\n errorWrapper.hidden = false;\n\n const errorMessage = errorWrapperConfig.errorMessage;\n errorMessage.textContent = message;\n\n const closeButton = errorWrapperConfig.closeButton;\n closeButton.onclick = function () {\n errorWrapper.hidden = true;\n };\n\n const errorMoreInfo = errorWrapperConfig.errorMoreInfo;\n const moreInfoButton = errorWrapperConfig.moreInfoButton;\n const lessInfoButton = errorWrapperConfig.lessInfoButton;\n moreInfoButton.onclick = function () {\n errorMoreInfo.hidden = false;\n moreInfoButton.hidden = true;\n lessInfoButton.hidden = false;\n errorMoreInfo.style.height = errorMoreInfo.scrollHeight + \"px\";\n };\n lessInfoButton.onclick = function () {\n errorMoreInfo.hidden = true;\n moreInfoButton.hidden = false;\n lessInfoButton.hidden = true;\n };\n moreInfoButton.oncontextmenu = noContextMenuHandler;\n lessInfoButton.oncontextmenu = noContextMenuHandler;\n closeButton.oncontextmenu = noContextMenuHandler;\n moreInfoButton.hidden = false;\n lessInfoButton.hidden = true;\n Promise.all(moreInfoText).then(parts => {\n errorMoreInfo.value = parts.join(\"\\n\");\n });\n } else {\n Promise.all(moreInfoText).then(parts => {\n console.error(message + \"\\n\" + parts.join(\"\\n\"));\n });\n this.fallback();\n }\n },\n\n progress(level) {\n if (this.downloadComplete) {\n // Don't accidentally show the loading bar again when the entire file has\n // already been fetched (only an issue when disableAutoFetch is enabled).\n return;\n }\n const percent = Math.round(level * 100);\n // When we transition from full request to range requests, it's possible\n // that we discard some of the loaded data. This can cause the loading\n // bar to move backwards. So prevent this by only updating the bar if it\n // increases.\n if (percent > this.loadingBar.percent || isNaN(percent)) {\n this.loadingBar.percent = percent;\n\n // When disableAutoFetch is enabled, it's not uncommon for the entire file\n // to never be fetched (depends on e.g. the file structure). In this case\n // the loading bar will not be completely filled, nor will it be hidden.\n // To prevent displaying a partially filled loading bar permanently, we\n // hide it when no data has been loaded during a certain amount of time.\n const disableAutoFetch = this.pdfDocument\n ? this.pdfDocument.loadingParams.disableAutoFetch\n : AppOptions.get(\"disableAutoFetch\");\n\n if (disableAutoFetch && percent) {\n if (this.disableAutoFetchLoadingBarTimeout) {\n clearTimeout(this.disableAutoFetchLoadingBarTimeout);\n this.disableAutoFetchLoadingBarTimeout = null;\n }\n this.loadingBar.show();\n\n this.disableAutoFetchLoadingBarTimeout = setTimeout(() => {\n this.loadingBar.hide();\n this.disableAutoFetchLoadingBarTimeout = null;\n }, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT);\n }\n }\n },\n\n load(pdfDocument) {\n this.pdfDocument = pdfDocument;\n\n pdfDocument.getDownloadInfo().then(({ length }) => {\n this._contentLength = length; // Ensure that the correct length is used.\n this.downloadComplete = true;\n this.loadingBar.hide();\n\n firstPagePromise.then(() => {\n this.eventBus.dispatch(\"documentloaded\", { source: this });\n });\n });\n\n // Since the `setInitialView` call below depends on this being resolved,\n // fetch it early to avoid delaying initial rendering of the PDF document.\n const pageLayoutPromise = pdfDocument.getPageLayout().catch(function () {\n /* Avoid breaking initial rendering; ignoring errors. */\n });\n const pageModePromise = pdfDocument.getPageMode().catch(function () {\n /* Avoid breaking initial rendering; ignoring errors. */\n });\n const openActionPromise = pdfDocument.getOpenAction().catch(function () {\n /* Avoid breaking initial rendering; ignoring errors. */\n });\n\n this.toolbar.setPagesCount(pdfDocument.numPages, false);\n this.secondaryToolbar.setPagesCount(pdfDocument.numPages);\n\n let baseDocumentUrl;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n baseDocumentUrl = null;\n } else if (PDFJSDev.test(\"MOZCENTRAL\")) {\n baseDocumentUrl = this.baseUrl;\n } else if (PDFJSDev.test(\"CHROME\")) {\n baseDocumentUrl = location.href.split(\"#\")[0];\n }\n this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl);\n this.pdfDocumentProperties.setDocument(pdfDocument, this.url);\n\n const pdfViewer = this.pdfViewer;\n pdfViewer.setDocument(pdfDocument);\n const { firstPagePromise, onePageRendered, pagesPromise } = pdfViewer;\n\n const pdfThumbnailViewer = this.pdfThumbnailViewer;\n pdfThumbnailViewer.setDocument(pdfDocument);\n\n const storedPromise = (this.store = new ViewHistory(\n pdfDocument.fingerprints[0]\n ))\n .getMultiple({\n page: null,\n zoom: DEFAULT_SCALE_VALUE,\n scrollLeft: \"0\",\n scrollTop: \"0\",\n rotation: null,\n sidebarView: SidebarView.UNKNOWN,\n scrollMode: ScrollMode.UNKNOWN,\n spreadMode: SpreadMode.UNKNOWN,\n })\n .catch(() => {\n /* Unable to read from storage; ignoring errors. */\n return Object.create(null);\n });\n\n firstPagePromise.then(pdfPage => {\n this.loadingBar.setWidth(this.appConfig.viewerContainer);\n this._initializeAnnotationStorageCallbacks(pdfDocument);\n\n Promise.all([\n animationStarted,\n storedPromise,\n pageLayoutPromise,\n pageModePromise,\n openActionPromise,\n ])\n .then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => {\n const viewOnLoad = AppOptions.get(\"viewOnLoad\");\n\n this._initializePdfHistory({\n fingerprint: pdfDocument.fingerprints[0],\n viewOnLoad,\n initialDest: openAction?.dest,\n });\n const initialBookmark = this.initialBookmark;\n\n // Initialize the default values, from user preferences.\n const zoom = AppOptions.get(\"defaultZoomValue\");\n let hash = zoom ? `zoom=${zoom}` : null;\n\n let rotation = null;\n let sidebarView = AppOptions.get(\"sidebarViewOnLoad\");\n let scrollMode = AppOptions.get(\"scrollModeOnLoad\");\n let spreadMode = AppOptions.get(\"spreadModeOnLoad\");\n\n if (stored.page && viewOnLoad !== ViewOnLoad.INITIAL) {\n hash =\n `page=${stored.page}&zoom=${zoom || stored.zoom},` +\n `${stored.scrollLeft},${stored.scrollTop}`;\n\n rotation = parseInt(stored.rotation, 10);\n // Always let user preference take precedence over the view history.\n if (sidebarView === SidebarView.UNKNOWN) {\n sidebarView = stored.sidebarView | 0;\n }\n if (scrollMode === ScrollMode.UNKNOWN) {\n scrollMode = stored.scrollMode | 0;\n }\n if (spreadMode === SpreadMode.UNKNOWN) {\n spreadMode = stored.spreadMode | 0;\n }\n }\n // Always let the user preference/view history take precedence.\n if (pageMode && sidebarView === SidebarView.UNKNOWN) {\n sidebarView = apiPageModeToSidebarView(pageMode);\n }\n if (\n pageLayout &&\n scrollMode === ScrollMode.UNKNOWN &&\n spreadMode === SpreadMode.UNKNOWN\n ) {\n const modes = apiPageLayoutToViewerModes(pageLayout);\n // TODO: Try to improve page-switching when using the mouse-wheel\n // and/or arrow-keys before allowing the document to control this.\n // scrollMode = modes.scrollMode;\n spreadMode = modes.spreadMode;\n }\n\n this.setInitialView(hash, {\n rotation,\n sidebarView,\n scrollMode,\n spreadMode,\n });\n this.eventBus.dispatch(\"documentinit\", { source: this });\n // Make all navigation keys work on document load,\n // unless the viewer is embedded in a web page.\n if (!this.isViewerEmbedded) {\n pdfViewer.focus();\n }\n\n // For documents with different page sizes, once all pages are\n // resolved, ensure that the correct location becomes visible on load.\n // (To reduce the risk, in very large and/or slow loading documents,\n // that the location changes *after* the user has started interacting\n // with the viewer, wait for either `pagesPromise` or a timeout.)\n await Promise.race([\n pagesPromise,\n new Promise(resolve => {\n setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT);\n }),\n ]);\n if (!initialBookmark && !hash) {\n return;\n }\n if (pdfViewer.hasEqualPageSizes) {\n return;\n }\n this.initialBookmark = initialBookmark;\n\n // eslint-disable-next-line no-self-assign\n pdfViewer.currentScaleValue = pdfViewer.currentScaleValue;\n // Re-apply the initial document location.\n this.setInitialView(hash);\n })\n .catch(() => {\n // Ensure that the document is always completely initialized,\n // even if there are any errors thrown above.\n this.setInitialView();\n })\n .then(function () {\n // At this point, rendering of the initial page(s) should always have\n // started (and may even have completed).\n // To prevent any future issues, e.g. the document being completely\n // blank on load, always trigger rendering here.\n pdfViewer.update();\n });\n });\n\n pagesPromise.then(\n () => {\n this._unblockDocumentLoadEvent();\n\n this._initializeAutoPrint(pdfDocument, openActionPromise);\n },\n reason => {\n this.l10n.get(\"loading_error\").then(msg => {\n this._documentError(msg, { message: reason?.message });\n });\n }\n );\n\n onePageRendered.then(data => {\n this.externalServices.reportTelemetry({\n type: \"pageInfo\",\n timestamp: data.timestamp,\n });\n\n pdfDocument.getOutline().then(outline => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the outline resolved.\n }\n this.pdfOutlineViewer.render({ outline, pdfDocument });\n });\n pdfDocument.getAttachments().then(attachments => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the attachments resolved.\n }\n this.pdfAttachmentViewer.render({ attachments });\n });\n // Ensure that the layers accurately reflects the current state in the\n // viewer itself, rather than the default state provided by the API.\n pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the layers resolved.\n }\n this.pdfLayerViewer.render({ optionalContentConfig, pdfDocument });\n });\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n \"requestIdleCallback\" in window\n ) {\n const callback = window.requestIdleCallback(\n () => {\n this._collectTelemetry(pdfDocument);\n this._idleCallbacks.delete(callback);\n },\n { timeout: 1000 }\n );\n this._idleCallbacks.add(callback);\n }\n });\n\n this._initializePageLabels(pdfDocument);\n this._initializeMetadata(pdfDocument);\n },\n\n /**\n * @private\n */\n async _scriptingDocProperties(pdfDocument) {\n if (!this.documentInfo) {\n // It should be *extremely* rare for metadata to not have been resolved\n // when this code runs, but ensure that we handle that case here.\n await new Promise(resolve => {\n this.eventBus._on(\"metadataloaded\", resolve, { once: true });\n });\n if (pdfDocument !== this.pdfDocument) {\n return null; // The document was closed while the metadata resolved.\n }\n }\n if (!this._contentLength) {\n // Always waiting for the entire PDF document to be loaded will, most\n // likely, delay sandbox-creation too much in the general case for all\n // PDF documents which are not provided as binary data to the API.\n // Hence we'll simply have to trust that the `contentLength` (as provided\n // by the server), when it exists, is accurate enough here.\n await new Promise(resolve => {\n this.eventBus._on(\"documentloaded\", resolve, { once: true });\n });\n if (pdfDocument !== this.pdfDocument) {\n return null; // The document was closed while the downloadInfo resolved.\n }\n }\n\n return {\n ...this.documentInfo,\n baseURL: this.baseUrl,\n filesize: this._contentLength,\n filename: this._docFilename,\n metadata: this.metadata?.getRaw(),\n authors: this.metadata?.get(\"dc:creator\"),\n numPages: this.pagesCount,\n URL: this.url,\n };\n },\n\n /**\n * A place to fetch data for telemetry after one page is rendered and the\n * viewer is idle.\n * @private\n */\n async _collectTelemetry(pdfDocument) {\n const markInfo = await this.pdfDocument.getMarkInfo();\n if (pdfDocument !== this.pdfDocument) {\n return; // Document was closed while waiting for mark info.\n }\n const tagged = markInfo?.Marked || false;\n this.externalServices.reportTelemetry({\n type: \"tagged\",\n tagged,\n });\n },\n\n /**\n * @private\n */\n async _initializeAutoPrint(pdfDocument, openActionPromise) {\n const [openAction, javaScript] = await Promise.all([\n openActionPromise,\n !this.pdfViewer.enableScripting ? pdfDocument.getJavaScript() : null,\n ]);\n\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the auto print data resolved.\n }\n let triggerAutoPrint = false;\n\n if (openAction?.action === \"Print\") {\n triggerAutoPrint = true;\n }\n if (javaScript) {\n javaScript.some(js => {\n if (!js) {\n // Don't warn/fallback for empty JavaScript actions.\n return false;\n }\n console.warn(\"Warning: JavaScript support is not enabled\");\n this.fallback(UNSUPPORTED_FEATURES.javaScript);\n return true;\n });\n\n if (!triggerAutoPrint) {\n // Hack to support auto printing.\n for (const js of javaScript) {\n if (js && AutoPrintRegExp.test(js)) {\n triggerAutoPrint = true;\n break;\n }\n }\n }\n }\n\n if (triggerAutoPrint) {\n this.triggerPrinting();\n }\n },\n\n /**\n * @private\n */\n async _initializeMetadata(pdfDocument) {\n const { info, metadata, contentDispositionFilename, contentLength } =\n await pdfDocument.getMetadata();\n\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the metadata resolved.\n }\n this.documentInfo = info;\n this.metadata = metadata;\n this._contentDispositionFilename ??= contentDispositionFilename;\n this._contentLength ??= contentLength; // See `getDownloadInfo`-call above.\n\n // Provides some basic debug information\n console.log(\n `PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` +\n `${(info.Producer || \"-\").trim()} / ${(info.Creator || \"-\").trim()}] ` +\n `(PDF.js: ${version || \"-\"})`\n );\n let pdfTitle = info?.Title;\n\n const metadataTitle = metadata?.get(\"dc:title\");\n if (metadataTitle) {\n // Ghostscript can produce invalid 'dc:title' Metadata entries:\n // - The title may be \"Untitled\" (fixes bug 1031612).\n // - The title may contain incorrectly encoded characters, which thus\n // looks broken, hence we ignore the Metadata entry when it\n // contains characters from the Specials Unicode block\n // (fixes bug 1605526).\n if (\n metadataTitle !== \"Untitled\" &&\n !/[\\uFFF0-\\uFFFF]/g.test(metadataTitle)\n ) {\n pdfTitle = metadataTitle;\n }\n }\n if (pdfTitle) {\n this.setTitle(\n `${pdfTitle} - ${contentDispositionFilename || document.title}`\n );\n } else if (contentDispositionFilename) {\n this.setTitle(contentDispositionFilename);\n }\n\n if (\n info.IsXFAPresent &&\n !info.IsAcroFormPresent &&\n !pdfDocument.isPureXfa\n ) {\n if (pdfDocument.loadingParams.enableXfa) {\n console.warn(\"Warning: XFA Foreground documents are not supported\");\n } else {\n console.warn(\"Warning: XFA support is not enabled\");\n }\n this.fallback(UNSUPPORTED_FEATURES.forms);\n } else if (\n (info.IsAcroFormPresent || info.IsXFAPresent) &&\n !this.pdfViewer.renderForms\n ) {\n console.warn(\"Warning: Interactive form support is not enabled\");\n this.fallback(UNSUPPORTED_FEATURES.forms);\n }\n\n if (info.IsSignaturesPresent) {\n console.warn(\"Warning: Digital signatures validation is not supported\");\n this.fallback(UNSUPPORTED_FEATURES.signatures);\n }\n\n // Telemetry labels must be C++ variable friendly.\n let versionId = \"other\";\n if (KNOWN_VERSIONS.includes(info.PDFFormatVersion)) {\n versionId = `v${info.PDFFormatVersion.replace(\".\", \"_\")}`;\n }\n let generatorId = \"other\";\n if (info.Producer) {\n const producer = info.Producer.toLowerCase();\n KNOWN_GENERATORS.some(function (generator) {\n if (!producer.includes(generator)) {\n return false;\n }\n generatorId = generator.replace(/[ .-]/g, \"_\");\n return true;\n });\n }\n let formType = null;\n if (info.IsXFAPresent) {\n formType = \"xfa\";\n } else if (info.IsAcroFormPresent) {\n formType = \"acroform\";\n }\n this.externalServices.reportTelemetry({\n type: \"documentInfo\",\n version: versionId,\n generator: generatorId,\n formType,\n });\n\n this.eventBus.dispatch(\"metadataloaded\", { source: this });\n },\n\n /**\n * @private\n */\n async _initializePageLabels(pdfDocument) {\n const labels = await pdfDocument.getPageLabels();\n\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the page labels resolved.\n }\n if (!labels || AppOptions.get(\"disablePageLabels\")) {\n return;\n }\n const numLabels = labels.length;\n // Ignore page labels that correspond to standard page numbering,\n // or page labels that are all empty.\n let standardLabels = 0,\n emptyLabels = 0;\n for (let i = 0; i < numLabels; i++) {\n const label = labels[i];\n if (label === (i + 1).toString()) {\n standardLabels++;\n } else if (label === \"\") {\n emptyLabels++;\n } else {\n break;\n }\n }\n if (standardLabels >= numLabels || emptyLabels >= numLabels) {\n return;\n }\n const { pdfViewer, pdfThumbnailViewer, toolbar } = this;\n\n pdfViewer.setPageLabels(labels);\n pdfThumbnailViewer.setPageLabels(labels);\n\n // Changing toolbar page display to use labels and we need to set\n // the label of the current page.\n toolbar.setPagesCount(numLabels, true);\n toolbar.setPageNumber(\n pdfViewer.currentPageNumber,\n pdfViewer.currentPageLabel\n );\n },\n\n /**\n * @private\n */\n _initializePdfHistory({ fingerprint, viewOnLoad, initialDest = null }) {\n if (!this.pdfHistory) {\n return;\n }\n this.pdfHistory.initialize({\n fingerprint,\n resetHistory: viewOnLoad === ViewOnLoad.INITIAL,\n updateUrl: AppOptions.get(\"historyUpdateUrl\"),\n });\n\n if (this.pdfHistory.initialBookmark) {\n this.initialBookmark = this.pdfHistory.initialBookmark;\n\n this.initialRotation = this.pdfHistory.initialRotation;\n }\n\n // Always let the browser history/document hash take precedence.\n if (\n initialDest &&\n !this.initialBookmark &&\n viewOnLoad === ViewOnLoad.UNKNOWN\n ) {\n this.initialBookmark = JSON.stringify(initialDest);\n // TODO: Re-factor the `PDFHistory` initialization to remove this hack\n // that's currently necessary to prevent weird initial history state.\n this.pdfHistory.push({ explicitDest: initialDest, pageNumber: null });\n }\n },\n\n /**\n * @private\n */\n _initializeAnnotationStorageCallbacks(pdfDocument) {\n if (pdfDocument !== this.pdfDocument) {\n return;\n }\n const { annotationStorage } = pdfDocument;\n\n annotationStorage.onSetModified = () => {\n window.addEventListener(\"beforeunload\", beforeUnload);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n this._annotationStorageModified = true;\n }\n };\n annotationStorage.onResetModified = () => {\n window.removeEventListener(\"beforeunload\", beforeUnload);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n delete this._annotationStorageModified;\n }\n };\n },\n\n setInitialView(\n storedHash,\n { rotation, sidebarView, scrollMode, spreadMode } = {}\n ) {\n const setRotation = angle => {\n if (isValidRotation(angle)) {\n this.pdfViewer.pagesRotation = angle;\n }\n };\n const setViewerModes = (scroll, spread) => {\n if (isValidScrollMode(scroll)) {\n this.pdfViewer.scrollMode = scroll;\n }\n if (isValidSpreadMode(spread)) {\n this.pdfViewer.spreadMode = spread;\n }\n };\n this.isInitialViewSet = true;\n this.pdfSidebar.setInitialView(sidebarView);\n\n setViewerModes(scrollMode, spreadMode);\n\n if (this.initialBookmark) {\n setRotation(this.initialRotation);\n delete this.initialRotation;\n\n this.pdfLinkService.setHash(this.initialBookmark);\n this.initialBookmark = null;\n } else if (storedHash) {\n setRotation(rotation);\n\n this.pdfLinkService.setHash(storedHash);\n }\n\n // Ensure that the correct page number is displayed in the UI,\n // even if the active page didn't change during document load.\n this.toolbar.setPageNumber(\n this.pdfViewer.currentPageNumber,\n this.pdfViewer.currentPageLabel\n );\n this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber);\n\n if (!this.pdfViewer.currentScaleValue) {\n // Scale was not initialized: invalid bookmark or scale was not specified.\n // Setting the default one.\n this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\n }\n },\n\n /**\n * @private\n */\n _cleanup() {\n if (!this.pdfDocument) {\n return; // run cleanup when document is loaded\n }\n this.pdfViewer.cleanup();\n this.pdfThumbnailViewer.cleanup();\n\n // We don't want to remove fonts used by active page SVGs.\n this.pdfDocument.cleanup(\n /* keepLoadedFonts = */ this.pdfViewer.renderer === RendererType.SVG\n );\n },\n\n forceRendering() {\n this.pdfRenderingQueue.printing = !!this.printService;\n this.pdfRenderingQueue.isThumbnailViewEnabled =\n this.pdfSidebar.isThumbnailViewVisible;\n this.pdfRenderingQueue.renderHighestPriority();\n },\n\n beforePrint() {\n // Given that the \"beforeprint\" browser event is synchronous, we\n // unfortunately cannot await the scripting event dispatching here.\n this.pdfScriptingManager.dispatchWillPrint();\n\n if (this.printService) {\n // There is no way to suppress beforePrint/afterPrint events,\n // but PDFPrintService may generate double events -- this will ignore\n // the second event that will be coming from native window.print().\n return;\n }\n\n if (!this.supportsPrinting) {\n this.l10n.get(\"printing_not_supported\").then(msg => {\n this._otherError(msg);\n });\n return;\n }\n\n // The beforePrint is a sync method and we need to know layout before\n // returning from this method. Ensure that we can get sizes of the pages.\n if (!this.pdfViewer.pageViewsReady) {\n this.l10n.get(\"printing_not_ready\").then(msg => {\n // eslint-disable-next-line no-alert\n window.alert(msg);\n });\n return;\n }\n\n const pagesOverview = this.pdfViewer.getPagesOverview();\n const printContainer = this.appConfig.printContainer;\n const printResolution = AppOptions.get(\"printResolution\");\n const optionalContentConfigPromise =\n this.pdfViewer.optionalContentConfigPromise;\n\n const printService = PDFPrintServiceFactory.instance.createPrintService(\n this.pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise,\n this.l10n\n );\n this.printService = printService;\n this.forceRendering();\n\n printService.layout();\n\n this.externalServices.reportTelemetry({\n type: \"print\",\n });\n },\n\n afterPrint() {\n // Given that the \"afterprint\" browser event is synchronous, we\n // unfortunately cannot await the scripting event dispatching here.\n this.pdfScriptingManager.dispatchDidPrint();\n\n if (this.printService) {\n this.printService.destroy();\n this.printService = null;\n\n this.pdfDocument?.annotationStorage.resetModified();\n }\n this.forceRendering();\n },\n\n rotatePages(delta) {\n this.pdfViewer.pagesRotation += delta;\n // Note that the thumbnail viewer is updated, and rendering is triggered,\n // in the 'rotationchanging' event handler.\n },\n\n requestPresentationMode() {\n this.pdfPresentationMode?.request();\n },\n\n triggerPrinting() {\n if (!this.supportsPrinting) {\n return;\n }\n window.print();\n },\n\n bindEvents() {\n const { eventBus, _boundEvents } = this;\n\n _boundEvents.beforePrint = this.beforePrint.bind(this);\n _boundEvents.afterPrint = this.afterPrint.bind(this);\n\n eventBus._on(\"resize\", webViewerResize);\n eventBus._on(\"hashchange\", webViewerHashchange);\n eventBus._on(\"beforeprint\", _boundEvents.beforePrint);\n eventBus._on(\"afterprint\", _boundEvents.afterPrint);\n eventBus._on(\"pagerendered\", webViewerPageRendered);\n eventBus._on(\"updateviewarea\", webViewerUpdateViewarea);\n eventBus._on(\"pagechanging\", webViewerPageChanging);\n eventBus._on(\"scalechanging\", webViewerScaleChanging);\n eventBus._on(\"rotationchanging\", webViewerRotationChanging);\n eventBus._on(\"sidebarviewchanged\", webViewerSidebarViewChanged);\n eventBus._on(\"pagemode\", webViewerPageMode);\n eventBus._on(\"namedaction\", webViewerNamedAction);\n eventBus._on(\"presentationmodechanged\", webViewerPresentationModeChanged);\n eventBus._on(\"presentationmode\", webViewerPresentationMode);\n eventBus._on(\"print\", webViewerPrint);\n eventBus._on(\"download\", webViewerDownload);\n eventBus._on(\"save\", webViewerSave);\n eventBus._on(\"firstpage\", webViewerFirstPage);\n eventBus._on(\"lastpage\", webViewerLastPage);\n eventBus._on(\"nextpage\", webViewerNextPage);\n eventBus._on(\"previouspage\", webViewerPreviousPage);\n eventBus._on(\"zoomin\", webViewerZoomIn);\n eventBus._on(\"zoomout\", webViewerZoomOut);\n eventBus._on(\"zoomreset\", webViewerZoomReset);\n eventBus._on(\"pagenumberchanged\", webViewerPageNumberChanged);\n eventBus._on(\"scalechanged\", webViewerScaleChanged);\n eventBus._on(\"rotatecw\", webViewerRotateCw);\n eventBus._on(\"rotateccw\", webViewerRotateCcw);\n eventBus._on(\"optionalcontentconfig\", webViewerOptionalContentConfig);\n eventBus._on(\"switchscrollmode\", webViewerSwitchScrollMode);\n eventBus._on(\"scrollmodechanged\", webViewerScrollModeChanged);\n eventBus._on(\"switchspreadmode\", webViewerSwitchSpreadMode);\n eventBus._on(\"spreadmodechanged\", webViewerSpreadModeChanged);\n eventBus._on(\"documentproperties\", webViewerDocumentProperties);\n eventBus._on(\"findfromurlhash\", webViewerFindFromUrlHash);\n eventBus._on(\"updatefindmatchescount\", webViewerUpdateFindMatchesCount);\n eventBus._on(\"updatefindcontrolstate\", webViewerUpdateFindControlState);\n\n if (AppOptions.get(\"pdfBug\")) {\n _boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug;\n\n eventBus._on(\"pagerendered\", _boundEvents.reportPageStatsPDFBug);\n eventBus._on(\"pagechanging\", _boundEvents.reportPageStatsPDFBug);\n }\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n eventBus._on(\"fileinputchange\", webViewerFileInputChange);\n eventBus._on(\"openfile\", webViewerOpenFile);\n }\n },\n\n bindWindowEvents() {\n const { eventBus, _boundEvents } = this;\n\n _boundEvents.windowResize = () => {\n eventBus.dispatch(\"resize\", { source: window });\n };\n _boundEvents.windowHashChange = () => {\n eventBus.dispatch(\"hashchange\", {\n source: window,\n hash: document.location.hash.substring(1),\n });\n };\n _boundEvents.windowBeforePrint = () => {\n eventBus.dispatch(\"beforeprint\", { source: window });\n };\n _boundEvents.windowAfterPrint = () => {\n eventBus.dispatch(\"afterprint\", { source: window });\n };\n _boundEvents.windowUpdateFromSandbox = event => {\n eventBus.dispatch(\"updatefromsandbox\", {\n source: window,\n detail: event.detail,\n });\n };\n\n window.addEventListener(\"visibilitychange\", webViewerVisibilityChange);\n window.addEventListener(\"wheel\", webViewerWheel, { passive: false });\n window.addEventListener(\"touchstart\", webViewerTouchStart, {\n passive: false,\n });\n window.addEventListener(\"click\", webViewerClick);\n window.addEventListener(\"keydown\", webViewerKeyDown);\n window.addEventListener(\"resize\", _boundEvents.windowResize);\n window.addEventListener(\"hashchange\", _boundEvents.windowHashChange);\n window.addEventListener(\"beforeprint\", _boundEvents.windowBeforePrint);\n window.addEventListener(\"afterprint\", _boundEvents.windowAfterPrint);\n window.addEventListener(\n \"updatefromsandbox\",\n _boundEvents.windowUpdateFromSandbox\n );\n },\n\n unbindEvents() {\n const { eventBus, _boundEvents } = this;\n\n eventBus._off(\"resize\", webViewerResize);\n eventBus._off(\"hashchange\", webViewerHashchange);\n eventBus._off(\"beforeprint\", _boundEvents.beforePrint);\n eventBus._off(\"afterprint\", _boundEvents.afterPrint);\n eventBus._off(\"pagerendered\", webViewerPageRendered);\n eventBus._off(\"updateviewarea\", webViewerUpdateViewarea);\n eventBus._off(\"pagechanging\", webViewerPageChanging);\n eventBus._off(\"scalechanging\", webViewerScaleChanging);\n eventBus._off(\"rotationchanging\", webViewerRotationChanging);\n eventBus._off(\"sidebarviewchanged\", webViewerSidebarViewChanged);\n eventBus._off(\"pagemode\", webViewerPageMode);\n eventBus._off(\"namedaction\", webViewerNamedAction);\n eventBus._off(\"presentationmodechanged\", webViewerPresentationModeChanged);\n eventBus._off(\"presentationmode\", webViewerPresentationMode);\n eventBus._off(\"print\", webViewerPrint);\n eventBus._off(\"download\", webViewerDownload);\n eventBus._off(\"save\", webViewerSave);\n eventBus._off(\"firstpage\", webViewerFirstPage);\n eventBus._off(\"lastpage\", webViewerLastPage);\n eventBus._off(\"nextpage\", webViewerNextPage);\n eventBus._off(\"previouspage\", webViewerPreviousPage);\n eventBus._off(\"zoomin\", webViewerZoomIn);\n eventBus._off(\"zoomout\", webViewerZoomOut);\n eventBus._off(\"zoomreset\", webViewerZoomReset);\n eventBus._off(\"pagenumberchanged\", webViewerPageNumberChanged);\n eventBus._off(\"scalechanged\", webViewerScaleChanged);\n eventBus._off(\"rotatecw\", webViewerRotateCw);\n eventBus._off(\"rotateccw\", webViewerRotateCcw);\n eventBus._off(\"optionalcontentconfig\", webViewerOptionalContentConfig);\n eventBus._off(\"switchscrollmode\", webViewerSwitchScrollMode);\n eventBus._off(\"scrollmodechanged\", webViewerScrollModeChanged);\n eventBus._off(\"switchspreadmode\", webViewerSwitchSpreadMode);\n eventBus._off(\"spreadmodechanged\", webViewerSpreadModeChanged);\n eventBus._off(\"documentproperties\", webViewerDocumentProperties);\n eventBus._off(\"findfromurlhash\", webViewerFindFromUrlHash);\n eventBus._off(\"updatefindmatchescount\", webViewerUpdateFindMatchesCount);\n eventBus._off(\"updatefindcontrolstate\", webViewerUpdateFindControlState);\n\n if (_boundEvents.reportPageStatsPDFBug) {\n eventBus._off(\"pagerendered\", _boundEvents.reportPageStatsPDFBug);\n eventBus._off(\"pagechanging\", _boundEvents.reportPageStatsPDFBug);\n\n _boundEvents.reportPageStatsPDFBug = null;\n }\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n eventBus._off(\"fileinputchange\", webViewerFileInputChange);\n eventBus._off(\"openfile\", webViewerOpenFile);\n }\n\n _boundEvents.beforePrint = null;\n _boundEvents.afterPrint = null;\n },\n\n unbindWindowEvents() {\n const { _boundEvents } = this;\n\n window.removeEventListener(\"visibilitychange\", webViewerVisibilityChange);\n window.removeEventListener(\"wheel\", webViewerWheel, { passive: false });\n window.removeEventListener(\"touchstart\", webViewerTouchStart, {\n passive: false,\n });\n window.removeEventListener(\"click\", webViewerClick);\n window.removeEventListener(\"keydown\", webViewerKeyDown);\n window.removeEventListener(\"resize\", _boundEvents.windowResize);\n window.removeEventListener(\"hashchange\", _boundEvents.windowHashChange);\n window.removeEventListener(\"beforeprint\", _boundEvents.windowBeforePrint);\n window.removeEventListener(\"afterprint\", _boundEvents.windowAfterPrint);\n window.removeEventListener(\n \"updatefromsandbox\",\n _boundEvents.windowUpdateFromSandbox\n );\n\n _boundEvents.windowResize = null;\n _boundEvents.windowHashChange = null;\n _boundEvents.windowBeforePrint = null;\n _boundEvents.windowAfterPrint = null;\n _boundEvents.windowUpdateFromSandbox = null;\n },\n\n accumulateWheelTicks(ticks) {\n // If the scroll direction changed, reset the accumulated wheel ticks.\n if (\n (this._wheelUnusedTicks > 0 && ticks < 0) ||\n (this._wheelUnusedTicks < 0 && ticks > 0)\n ) {\n this._wheelUnusedTicks = 0;\n }\n this._wheelUnusedTicks += ticks;\n const wholeTicks =\n Math.sign(this._wheelUnusedTicks) *\n Math.floor(Math.abs(this._wheelUnusedTicks));\n this._wheelUnusedTicks -= wholeTicks;\n return wholeTicks;\n },\n\n /**\n * Should be called *after* all pages have loaded, or if an error occurred,\n * to unblock the \"load\" event; see https://bugzilla.mozilla.org/show_bug.cgi?id=1618553\n * @private\n */\n _unblockDocumentLoadEvent() {\n if (document.blockUnblockOnload) {\n document.blockUnblockOnload(false);\n }\n // Ensure that this method is only ever run once.\n this._unblockDocumentLoadEvent = () => {};\n },\n\n /**\n * @ignore\n */\n _reportDocumentStatsTelemetry() {\n const { stats } = this.pdfDocument;\n if (stats !== this._docStats) {\n this._docStats = stats;\n\n this.externalServices.reportTelemetry({\n type: \"documentStats\",\n stats,\n });\n }\n },\n\n /**\n * Used together with the integration-tests, to enable awaiting full\n * initialization of the scripting/sandbox.\n */\n get scriptingReady() {\n return this.pdfScriptingManager.ready;\n },\n};\n\nlet validateFileURL;\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const HOSTED_VIEWER_ORIGINS = [\n \"null\",\n \"http://mozilla.github.io\",\n \"https://mozilla.github.io\",\n ];\n validateFileURL = function (file) {\n if (file === undefined) {\n return;\n }\n try {\n const viewerOrigin = new URL(window.location.href).origin || \"null\";\n if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) {\n // Hosted or local viewer, allow for any file locations\n return;\n }\n const fileOrigin = new URL(file, window.location.href).origin;\n // Removing of the following line will not guarantee that the viewer will\n // start accepting URLs from foreign origin -- CORS headers on the remote\n // server must be properly configured.\n if (fileOrigin !== viewerOrigin) {\n throw new Error(\"file origin does not match viewer's\");\n }\n } catch (ex) {\n PDFViewerApplication.l10n.get(\"loading_error\").then(msg => {\n PDFViewerApplication._documentError(msg, { message: ex?.message });\n });\n throw ex;\n }\n };\n}\n\nasync function loadFakeWorker() {\n if (!GlobalWorkerOptions.workerSrc) {\n GlobalWorkerOptions.workerSrc = AppOptions.get(\"workerSrc\");\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n window.pdfjsWorker = await import(\"pdfjs/core/worker.js\");\n return;\n }\n await loadScript(PDFWorker.workerSrc);\n}\n\nasync function initPDFBug(enabledTabs) {\n const { debuggerScriptPath, mainContainer } = PDFViewerApplication.appConfig;\n await loadScript(debuggerScriptPath);\n PDFBug.init({ OPS }, mainContainer, enabledTabs);\n}\n\nfunction reportPageStatsPDFBug({ pageNumber }) {\n if (typeof Stats === \"undefined\" || !Stats.enabled) {\n return;\n }\n const pageView = PDFViewerApplication.pdfViewer.getPageView(\n /* index = */ pageNumber - 1\n );\n const pageStats = pageView?.pdfPage?.stats;\n if (!pageStats) {\n return;\n }\n Stats.add(pageNumber, pageStats);\n}\n\nfunction webViewerInitialized() {\n const appConfig = PDFViewerApplication.appConfig;\n let file;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const queryString = document.location.search.substring(1);\n const params = parseQueryString(queryString);\n file = params.get(\"file\") ?? AppOptions.get(\"defaultUrl\");\n validateFileURL(file);\n } else if (PDFJSDev.test(\"MOZCENTRAL\")) {\n file = window.location.href;\n } else if (PDFJSDev.test(\"CHROME\")) {\n file = AppOptions.get(\"defaultUrl\");\n }\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const fileInput = document.createElement(\"input\");\n fileInput.id = appConfig.openFileInputName;\n fileInput.className = \"fileInput\";\n fileInput.setAttribute(\"type\", \"file\");\n fileInput.oncontextmenu = noContextMenuHandler;\n document.body.appendChild(fileInput);\n\n if (\n !window.File ||\n !window.FileReader ||\n !window.FileList ||\n !window.Blob\n ) {\n appConfig.toolbar.openFile.hidden = true;\n appConfig.secondaryToolbar.openFileButton.hidden = true;\n } else {\n fileInput.value = null;\n }\n\n fileInput.addEventListener(\"change\", function (evt) {\n const files = evt.target.files;\n if (!files || files.length === 0) {\n return;\n }\n PDFViewerApplication.eventBus.dispatch(\"fileinputchange\", {\n source: this,\n fileInput: evt.target,\n });\n });\n\n // Enable dragging-and-dropping a new PDF file onto the viewerContainer.\n appConfig.mainContainer.addEventListener(\"dragover\", function (evt) {\n evt.preventDefault();\n\n evt.dataTransfer.dropEffect = \"move\";\n });\n appConfig.mainContainer.addEventListener(\"drop\", function (evt) {\n evt.preventDefault();\n\n const files = evt.dataTransfer.files;\n if (!files || files.length === 0) {\n return;\n }\n PDFViewerApplication.eventBus.dispatch(\"fileinputchange\", {\n source: this,\n fileInput: evt.dataTransfer,\n });\n });\n } else {\n appConfig.toolbar.openFile.hidden = true;\n appConfig.secondaryToolbar.openFileButton.hidden = true;\n }\n\n if (!PDFViewerApplication.supportsDocumentFonts) {\n AppOptions.set(\"disableFontFace\", true);\n PDFViewerApplication.l10n.get(\"web_fonts_disabled\").then(msg => {\n console.warn(msg);\n });\n }\n\n if (!PDFViewerApplication.supportsPrinting) {\n appConfig.toolbar.print.classList.add(\"hidden\");\n appConfig.secondaryToolbar.printButton.classList.add(\"hidden\");\n }\n\n if (!PDFViewerApplication.supportsFullscreen) {\n appConfig.toolbar.presentationModeButton.classList.add(\"hidden\");\n appConfig.secondaryToolbar.presentationModeButton.classList.add(\"hidden\");\n }\n\n if (PDFViewerApplication.supportsIntegratedFind) {\n appConfig.toolbar.viewFind.classList.add(\"hidden\");\n }\n\n appConfig.mainContainer.addEventListener(\n \"transitionend\",\n function (evt) {\n if (evt.target === /* mainContainer */ this) {\n PDFViewerApplication.eventBus.dispatch(\"resize\", { source: this });\n }\n },\n true\n );\n\n try {\n webViewerOpenFileViaURL(file);\n } catch (reason) {\n PDFViewerApplication.l10n.get(\"loading_error\").then(msg => {\n PDFViewerApplication._documentError(msg, reason);\n });\n }\n}\n\nfunction webViewerOpenFileViaURL(file) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (file) {\n PDFViewerApplication.open(file);\n } else {\n PDFViewerApplication._hideViewBookmark();\n }\n } else if (PDFJSDev.test(\"MOZCENTRAL || CHROME\")) {\n PDFViewerApplication.setTitleUsingUrl(file, /* downloadUrl = */ file);\n PDFViewerApplication.initPassiveLoading();\n } else {\n if (file) {\n throw new Error(\"Not implemented: webViewerOpenFileViaURL\");\n } else {\n PDFViewerApplication._hideViewBookmark();\n }\n }\n}\n\nfunction webViewerPageRendered({ pageNumber, error }) {\n // If the page is still visible when it has finished rendering,\n // ensure that the page number input loading indicator is hidden.\n if (pageNumber === PDFViewerApplication.page) {\n PDFViewerApplication.toolbar.updateLoadingIndicatorState(false);\n }\n\n // Use the rendered page to set the corresponding thumbnail image.\n if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {\n const pageView = PDFViewerApplication.pdfViewer.getPageView(\n /* index = */ pageNumber - 1\n );\n const thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(\n /* index = */ pageNumber - 1\n );\n if (pageView && thumbnailView) {\n thumbnailView.setImage(pageView);\n }\n }\n\n if (error) {\n PDFViewerApplication.l10n.get(\"rendering_error\").then(msg => {\n PDFViewerApplication._otherError(msg, error);\n });\n }\n\n // It is a good time to report stream and font types.\n PDFViewerApplication._reportDocumentStatsTelemetry();\n}\n\nfunction webViewerPageMode({ mode }) {\n // Handle the 'pagemode' hash parameter, see also `PDFLinkService_setHash`.\n let view;\n switch (mode) {\n case \"thumbs\":\n view = SidebarView.THUMBS;\n break;\n case \"bookmarks\":\n case \"outline\": // non-standard\n view = SidebarView.OUTLINE;\n break;\n case \"attachments\": // non-standard\n view = SidebarView.ATTACHMENTS;\n break;\n case \"layers\": // non-standard\n view = SidebarView.LAYERS;\n break;\n case \"none\":\n view = SidebarView.NONE;\n break;\n default:\n console.error('Invalid \"pagemode\" hash parameter: ' + mode);\n return;\n }\n PDFViewerApplication.pdfSidebar.switchView(view, /* forceOpen = */ true);\n}\n\nfunction webViewerNamedAction(evt) {\n // Processing a couple of named actions that might be useful, see also\n // `PDFLinkService.executeNamedAction`.\n switch (evt.action) {\n case \"GoToPage\":\n PDFViewerApplication.appConfig.toolbar.pageNumber.select();\n break;\n\n case \"Find\":\n if (!PDFViewerApplication.supportsIntegratedFind) {\n PDFViewerApplication.findBar.toggle();\n }\n break;\n\n case \"Print\":\n PDFViewerApplication.triggerPrinting();\n break;\n\n case \"SaveAs\":\n webViewerSave();\n break;\n }\n}\n\nfunction webViewerPresentationModeChanged(evt) {\n PDFViewerApplication.pdfViewer.presentationModeState = evt.state;\n}\n\nfunction webViewerSidebarViewChanged(evt) {\n PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled =\n PDFViewerApplication.pdfSidebar.isThumbnailViewVisible;\n\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store?.set(\"sidebarView\", evt.view).catch(() => {\n // Unable to write to storage.\n });\n }\n}\n\nfunction webViewerUpdateViewarea(evt) {\n const location = evt.location;\n\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store\n ?.setMultiple({\n page: location.pageNumber,\n zoom: location.scale,\n scrollLeft: location.left,\n scrollTop: location.top,\n rotation: location.rotation,\n })\n .catch(() => {\n // Unable to write to storage.\n });\n }\n const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(\n location.pdfOpenParams\n );\n PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href;\n PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href =\n href;\n\n // Show/hide the loading indicator in the page number input element.\n const currentPage = PDFViewerApplication.pdfViewer.getPageView(\n /* index = */ PDFViewerApplication.page - 1\n );\n const loading = currentPage?.renderingState !== RenderingStates.FINISHED;\n PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading);\n}\n\nfunction webViewerScrollModeChanged(evt) {\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store?.set(\"scrollMode\", evt.mode).catch(() => {\n // Unable to write to storage.\n });\n }\n}\n\nfunction webViewerSpreadModeChanged(evt) {\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store?.set(\"spreadMode\", evt.mode).catch(() => {\n // Unable to write to storage.\n });\n }\n}\n\nfunction webViewerResize() {\n const { pdfDocument, pdfViewer } = PDFViewerApplication;\n if (!pdfDocument) {\n return;\n }\n const currentScaleValue = pdfViewer.currentScaleValue;\n if (\n currentScaleValue === \"auto\" ||\n currentScaleValue === \"page-fit\" ||\n currentScaleValue === \"page-width\"\n ) {\n // Note: the scale is constant for 'page-actual'.\n pdfViewer.currentScaleValue = currentScaleValue;\n }\n pdfViewer.update();\n}\n\nfunction webViewerHashchange(evt) {\n const hash = evt.hash;\n if (!hash) {\n return;\n }\n if (!PDFViewerApplication.isInitialViewSet) {\n PDFViewerApplication.initialBookmark = hash;\n } else if (!PDFViewerApplication.pdfHistory?.popStateInProgress) {\n PDFViewerApplication.pdfLinkService.setHash(hash);\n }\n}\n\nlet webViewerFileInputChange, webViewerOpenFile;\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n webViewerFileInputChange = function (evt) {\n if (PDFViewerApplication.pdfViewer?.isInPresentationMode) {\n return; // Opening a new PDF file isn't supported in Presentation Mode.\n }\n const file = evt.fileInput.files[0];\n\n let url = URL.createObjectURL(file);\n if (file.name) {\n url = { url, originalUrl: file.name };\n }\n PDFViewerApplication.open(url);\n };\n\n webViewerOpenFile = function (evt) {\n const openFileInputName = PDFViewerApplication.appConfig.openFileInputName;\n document.getElementById(openFileInputName).click();\n };\n}\n\nfunction webViewerPresentationMode() {\n PDFViewerApplication.requestPresentationMode();\n}\nfunction webViewerPrint() {\n PDFViewerApplication.triggerPrinting();\n}\nfunction webViewerDownload() {\n PDFViewerApplication.downloadOrSave({ sourceEventType: \"download\" });\n}\nfunction webViewerSave() {\n PDFViewerApplication.downloadOrSave({ sourceEventType: \"save\" });\n}\nfunction webViewerFirstPage() {\n if (PDFViewerApplication.pdfDocument) {\n PDFViewerApplication.page = 1;\n }\n}\nfunction webViewerLastPage() {\n if (PDFViewerApplication.pdfDocument) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n }\n}\nfunction webViewerNextPage() {\n PDFViewerApplication.pdfViewer.nextPage();\n}\nfunction webViewerPreviousPage() {\n PDFViewerApplication.pdfViewer.previousPage();\n}\nfunction webViewerZoomIn() {\n PDFViewerApplication.zoomIn();\n}\nfunction webViewerZoomOut() {\n PDFViewerApplication.zoomOut();\n}\nfunction webViewerZoomReset() {\n PDFViewerApplication.zoomReset();\n}\nfunction webViewerPageNumberChanged(evt) {\n const pdfViewer = PDFViewerApplication.pdfViewer;\n // Note that for `<input type=\"number\">` HTML elements, an empty string will\n // be returned for non-number inputs; hence we simply do nothing in that case.\n if (evt.value !== \"\") {\n PDFViewerApplication.pdfLinkService.goToPage(evt.value);\n }\n\n // Ensure that the page number input displays the correct value, even if the\n // value entered by the user was invalid (e.g. a floating point number).\n if (\n evt.value !== pdfViewer.currentPageNumber.toString() &&\n evt.value !== pdfViewer.currentPageLabel\n ) {\n PDFViewerApplication.toolbar.setPageNumber(\n pdfViewer.currentPageNumber,\n pdfViewer.currentPageLabel\n );\n }\n}\nfunction webViewerScaleChanged(evt) {\n PDFViewerApplication.pdfViewer.currentScaleValue = evt.value;\n}\nfunction webViewerRotateCw() {\n PDFViewerApplication.rotatePages(90);\n}\nfunction webViewerRotateCcw() {\n PDFViewerApplication.rotatePages(-90);\n}\nfunction webViewerOptionalContentConfig(evt) {\n PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise;\n}\nfunction webViewerSwitchScrollMode(evt) {\n PDFViewerApplication.pdfViewer.scrollMode = evt.mode;\n}\nfunction webViewerSwitchSpreadMode(evt) {\n PDFViewerApplication.pdfViewer.spreadMode = evt.mode;\n}\nfunction webViewerDocumentProperties() {\n PDFViewerApplication.pdfDocumentProperties.open();\n}\n\nfunction webViewerFindFromUrlHash(evt) {\n PDFViewerApplication.eventBus.dispatch(\"find\", {\n source: evt.source,\n type: \"\",\n query: evt.query,\n phraseSearch: evt.phraseSearch,\n caseSensitive: false,\n entireWord: false,\n highlightAll: true,\n findPrevious: false,\n matchDiacritics: true,\n });\n}\n\nfunction webViewerUpdateFindMatchesCount({ matchesCount }) {\n if (PDFViewerApplication.supportsIntegratedFind) {\n PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount);\n } else {\n PDFViewerApplication.findBar.updateResultsCount(matchesCount);\n }\n}\n\nfunction webViewerUpdateFindControlState({\n state,\n previous,\n matchesCount,\n rawQuery,\n}) {\n if (PDFViewerApplication.supportsIntegratedFind) {\n PDFViewerApplication.externalServices.updateFindControlState({\n result: state,\n findPrevious: previous,\n matchesCount,\n rawQuery,\n });\n } else {\n PDFViewerApplication.findBar.updateUIState(state, previous, matchesCount);\n }\n}\n\nfunction webViewerScaleChanging(evt) {\n PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale);\n\n PDFViewerApplication.pdfViewer.update();\n}\n\nfunction webViewerRotationChanging(evt) {\n PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation;\n\n PDFViewerApplication.forceRendering();\n // Ensure that the active page doesn't change during rotation.\n PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber;\n}\n\nfunction webViewerPageChanging({ pageNumber, pageLabel }) {\n PDFViewerApplication.toolbar.setPageNumber(pageNumber, pageLabel);\n PDFViewerApplication.secondaryToolbar.setPageNumber(pageNumber);\n\n if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {\n PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(pageNumber);\n }\n}\n\nfunction webViewerVisibilityChange(evt) {\n if (document.visibilityState === \"visible\") {\n // Ignore mouse wheel zooming during tab switches (bug 1503412).\n setZoomDisabledTimeout();\n }\n}\n\nlet zoomDisabledTimeout = null;\nfunction setZoomDisabledTimeout() {\n if (zoomDisabledTimeout) {\n clearTimeout(zoomDisabledTimeout);\n }\n zoomDisabledTimeout = setTimeout(function () {\n zoomDisabledTimeout = null;\n }, WHEEL_ZOOM_DISABLED_TIMEOUT);\n}\n\nfunction webViewerWheel(evt) {\n const { pdfViewer, supportedMouseWheelZoomModifierKeys } =\n PDFViewerApplication;\n\n if (pdfViewer.isInPresentationMode) {\n return;\n }\n\n if (\n (evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey) ||\n (evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey)\n ) {\n // Only zoom the pages, not the entire viewer.\n evt.preventDefault();\n // NOTE: this check must be placed *after* preventDefault.\n if (zoomDisabledTimeout || document.visibilityState === \"hidden\") {\n return;\n }\n\n // It is important that we query deltaMode before delta{X,Y}, so that\n // Firefox doesn't switch to DOM_DELTA_PIXEL mode for compat with other\n // browsers, see https://bugzilla.mozilla.org/show_bug.cgi?id=1392460.\n const deltaMode = evt.deltaMode;\n const delta = normalizeWheelEventDirection(evt);\n const previousScale = pdfViewer.currentScale;\n\n let ticks = 0;\n if (\n deltaMode === WheelEvent.DOM_DELTA_LINE ||\n deltaMode === WheelEvent.DOM_DELTA_PAGE\n ) {\n // For line-based devices, use one tick per event, because different\n // OSs have different defaults for the number lines. But we generally\n // want one \"clicky\" roll of the wheel (which produces one event) to\n // adjust the zoom by one step.\n if (Math.abs(delta) >= 1) {\n ticks = Math.sign(delta);\n } else {\n // If we're getting fractional lines (I can't think of a scenario\n // this might actually happen), be safe and use the accumulator.\n ticks = PDFViewerApplication.accumulateWheelTicks(delta);\n }\n } else {\n // pixel-based devices\n const PIXELS_PER_LINE_SCALE = 30;\n ticks = PDFViewerApplication.accumulateWheelTicks(\n delta / PIXELS_PER_LINE_SCALE\n );\n }\n\n if (ticks < 0) {\n PDFViewerApplication.zoomOut(-ticks);\n } else if (ticks > 0) {\n PDFViewerApplication.zoomIn(ticks);\n }\n\n const currentScale = pdfViewer.currentScale;\n if (previousScale !== currentScale) {\n // After scaling the page via zoomIn/zoomOut, the position of the upper-\n // left corner is restored. When the mouse wheel is used, the position\n // under the cursor should be restored instead.\n const scaleCorrectionFactor = currentScale / previousScale - 1;\n const rect = pdfViewer.container.getBoundingClientRect();\n const dx = evt.clientX - rect.left;\n const dy = evt.clientY - rect.top;\n pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor;\n pdfViewer.container.scrollTop += dy * scaleCorrectionFactor;\n }\n } else {\n setZoomDisabledTimeout();\n }\n}\n\nfunction webViewerTouchStart(evt) {\n if (evt.touches.length > 1) {\n // Disable touch-based zooming, because the entire UI bits gets zoomed and\n // that doesn't look great. If we do want to have a good touch-based\n // zooming experience, we need to implement smooth zoom capability (probably\n // using a CSS transform for faster visual response, followed by async\n // re-rendering at the final zoom level) and do gesture detection on the\n // touchmove events to drive it. Or if we want to settle for a less good\n // experience we can make the touchmove events drive the existing step-zoom\n // behaviour that the ctrl+mousewheel path takes.\n evt.preventDefault();\n }\n}\n\nfunction webViewerClick(evt) {\n if (!PDFViewerApplication.secondaryToolbar.isOpen) {\n return;\n }\n const appConfig = PDFViewerApplication.appConfig;\n if (\n PDFViewerApplication.pdfViewer.containsElement(evt.target) ||\n (appConfig.toolbar.container.contains(evt.target) &&\n evt.target !== appConfig.secondaryToolbar.toggleButton)\n ) {\n PDFViewerApplication.secondaryToolbar.close();\n }\n}\n\nfunction webViewerKeyDown(evt) {\n if (PDFViewerApplication.overlayManager.active) {\n return;\n }\n const { eventBus, pdfViewer } = PDFViewerApplication;\n const isViewerInPresentationMode = pdfViewer.isInPresentationMode;\n\n let handled = false,\n ensureViewerFocused = false;\n const cmd =\n (evt.ctrlKey ? 1 : 0) |\n (evt.altKey ? 2 : 0) |\n (evt.shiftKey ? 4 : 0) |\n (evt.metaKey ? 8 : 0);\n\n // First, handle the key bindings that are independent whether an input\n // control is selected or not.\n if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {\n // either CTRL or META key with optional SHIFT.\n switch (evt.keyCode) {\n case 70: // f\n if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) {\n PDFViewerApplication.findBar.open();\n handled = true;\n }\n break;\n case 71: // g\n if (!PDFViewerApplication.supportsIntegratedFind) {\n const { state } = PDFViewerApplication.findController;\n if (state) {\n const eventState = Object.assign(Object.create(null), state, {\n source: window,\n type: \"again\",\n findPrevious: cmd === 5 || cmd === 12,\n });\n eventBus.dispatch(\"find\", eventState);\n }\n handled = true;\n }\n break;\n case 61: // FF/Mac '='\n case 107: // FF '+' and '='\n case 187: // Chrome '+'\n case 171: // FF with German keyboard\n if (!isViewerInPresentationMode) {\n PDFViewerApplication.zoomIn();\n }\n handled = true;\n break;\n case 173: // FF/Mac '-'\n case 109: // FF '-'\n case 189: // Chrome '-'\n if (!isViewerInPresentationMode) {\n PDFViewerApplication.zoomOut();\n }\n handled = true;\n break;\n case 48: // '0'\n case 96: // '0' on Numpad of Swedish keyboard\n if (!isViewerInPresentationMode) {\n // keeping it unhandled (to restore page zoom to 100%)\n setTimeout(function () {\n // ... and resetting the scale after browser adjusts its scale\n PDFViewerApplication.zoomReset();\n });\n handled = false;\n }\n break;\n\n case 38: // up arrow\n if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\n PDFViewerApplication.page = 1;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n case 40: // down arrow\n if (\n isViewerInPresentationMode ||\n PDFViewerApplication.page < PDFViewerApplication.pagesCount\n ) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n }\n }\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC || CHROME\")) {\n // CTRL or META without shift\n if (cmd === 1 || cmd === 8) {\n switch (evt.keyCode) {\n case 83: // s\n eventBus.dispatch(\"download\", { source: window });\n handled = true;\n break;\n\n case 79: // o\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n eventBus.dispatch(\"openfile\", { source: window });\n handled = true;\n }\n break;\n }\n }\n }\n\n // CTRL+ALT or Option+Command\n if (cmd === 3 || cmd === 10) {\n switch (evt.keyCode) {\n case 80: // p\n PDFViewerApplication.requestPresentationMode();\n handled = true;\n break;\n case 71: // g\n // focuses input#pageNumber field\n PDFViewerApplication.appConfig.toolbar.pageNumber.select();\n handled = true;\n break;\n }\n }\n\n if (handled) {\n if (ensureViewerFocused && !isViewerInPresentationMode) {\n pdfViewer.focus();\n }\n evt.preventDefault();\n return;\n }\n\n // Some shortcuts should not get handled if a control/input element\n // is selected.\n const curElement = getActiveOrFocusedElement();\n const curElementTagName = curElement?.tagName.toUpperCase();\n if (\n curElementTagName === \"INPUT\" ||\n curElementTagName === \"TEXTAREA\" ||\n curElementTagName === \"SELECT\" ||\n curElement?.isContentEditable\n ) {\n // Make sure that the secondary toolbar is closed when Escape is pressed.\n if (evt.keyCode !== /* Esc = */ 27) {\n return;\n }\n }\n\n // No control key pressed at all.\n if (cmd === 0) {\n let turnPage = 0,\n turnOnlyIfPageFit = false;\n switch (evt.keyCode) {\n case 38: // up arrow\n case 33: // pg up\n // vertical scrolling using arrow/pg keys\n if (pdfViewer.isVerticalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n turnPage = -1;\n break;\n case 8: // backspace\n if (!isViewerInPresentationMode) {\n turnOnlyIfPageFit = true;\n }\n turnPage = -1;\n break;\n case 37: // left arrow\n // horizontal scrolling using arrow keys\n if (pdfViewer.isHorizontalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n /* falls through */\n case 75: // 'k'\n case 80: // 'p'\n turnPage = -1;\n break;\n case 27: // esc key\n if (PDFViewerApplication.secondaryToolbar.isOpen) {\n PDFViewerApplication.secondaryToolbar.close();\n handled = true;\n }\n if (\n !PDFViewerApplication.supportsIntegratedFind &&\n PDFViewerApplication.findBar.opened\n ) {\n PDFViewerApplication.findBar.close();\n handled = true;\n }\n break;\n case 40: // down arrow\n case 34: // pg down\n // vertical scrolling using arrow/pg keys\n if (pdfViewer.isVerticalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n turnPage = 1;\n break;\n case 13: // enter key\n case 32: // spacebar\n if (!isViewerInPresentationMode) {\n turnOnlyIfPageFit = true;\n }\n turnPage = 1;\n break;\n case 39: // right arrow\n // horizontal scrolling using arrow keys\n if (pdfViewer.isHorizontalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n /* falls through */\n case 74: // 'j'\n case 78: // 'n'\n turnPage = 1;\n break;\n\n case 36: // home\n if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\n PDFViewerApplication.page = 1;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n case 35: // end\n if (\n isViewerInPresentationMode ||\n PDFViewerApplication.page < PDFViewerApplication.pagesCount\n ) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n\n case 83: // 's'\n PDFViewerApplication.pdfCursorTools.switchTool(CursorTool.SELECT);\n break;\n case 72: // 'h'\n PDFViewerApplication.pdfCursorTools.switchTool(CursorTool.HAND);\n break;\n\n case 82: // 'r'\n PDFViewerApplication.rotatePages(90);\n break;\n\n case 115: // F4\n PDFViewerApplication.pdfSidebar.toggle();\n break;\n }\n\n if (\n turnPage !== 0 &&\n (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === \"page-fit\")\n ) {\n if (turnPage > 0) {\n pdfViewer.nextPage();\n } else {\n pdfViewer.previousPage();\n }\n handled = true;\n }\n }\n\n // shift-key\n if (cmd === 4) {\n switch (evt.keyCode) {\n case 13: // enter key\n case 32: // spacebar\n if (\n !isViewerInPresentationMode &&\n pdfViewer.currentScaleValue !== \"page-fit\"\n ) {\n break;\n }\n pdfViewer.previousPage();\n\n handled = true;\n break;\n\n case 82: // 'r'\n PDFViewerApplication.rotatePages(-90);\n break;\n }\n }\n\n if (!handled && !isViewerInPresentationMode) {\n // 33=Page Up 34=Page Down 35=End 36=Home\n // 37=Left 38=Up 39=Right 40=Down\n // 32=Spacebar\n if (\n (evt.keyCode >= 33 && evt.keyCode <= 40) ||\n (evt.keyCode === 32 && curElementTagName !== \"BUTTON\")\n ) {\n ensureViewerFocused = true;\n }\n }\n\n if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) {\n // The page container is not focused, but a page navigation key has been\n // pressed. Change the focus to the viewer container to make sure that\n // navigation by keyboard works as expected.\n pdfViewer.focus();\n }\n\n if (handled) {\n evt.preventDefault();\n }\n}\n\nfunction beforeUnload(evt) {\n evt.preventDefault();\n evt.returnValue = \"\";\n return false;\n}\n\n/* Abstract factory for the print service. */\nconst PDFPrintServiceFactory = {\n instance: {\n supportsPrinting: false,\n createPrintService() {\n throw new Error(\"Not implemented: createPrintService\");\n },\n },\n};\n\nexport {\n DefaultExternalServices,\n PDFPrintServiceFactory,\n PDFViewerApplication,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst DEFAULT_SCALE_VALUE = \"auto\";\nconst DEFAULT_SCALE = 1.0;\nconst DEFAULT_SCALE_DELTA = 1.1;\nconst MIN_SCALE = 0.1;\nconst MAX_SCALE = 10.0;\nconst UNKNOWN_SCALE = 0;\nconst MAX_AUTO_SCALE = 1.25;\nconst SCROLLBAR_PADDING = 40;\nconst VERTICAL_PADDING = 5;\n\nconst LOADINGBAR_END_OFFSET_VAR = \"--loadingBar-end-offset\";\n\nconst RenderingStates = {\n INITIAL: 0,\n RUNNING: 1,\n PAUSED: 2,\n FINISHED: 3,\n};\n\nconst PresentationModeState = {\n UNKNOWN: 0,\n NORMAL: 1,\n CHANGING: 2,\n FULLSCREEN: 3,\n};\n\nconst SidebarView = {\n UNKNOWN: -1,\n NONE: 0,\n THUMBS: 1, // Default value.\n OUTLINE: 2,\n ATTACHMENTS: 3,\n LAYERS: 4,\n};\n\nconst RendererType = {\n CANVAS: \"canvas\",\n SVG: \"svg\",\n};\n\nconst TextLayerMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_ENHANCE: 2,\n};\n\nconst ScrollMode = {\n UNKNOWN: -1,\n VERTICAL: 0, // Default value.\n HORIZONTAL: 1,\n WRAPPED: 2,\n PAGE: 3,\n};\n\nconst SpreadMode = {\n UNKNOWN: -1,\n NONE: 0, // Default value.\n ODD: 1,\n EVEN: 2,\n};\n\n// Used by `PDFViewerApplication`, and by the API unit-tests.\nconst AutoPrintRegExp = /\\bprint\\s*\\(/;\n\n/**\n * Scale factors for the canvas, necessary with HiDPI displays.\n */\nclass OutputScale {\n constructor() {\n const pixelRatio = window.devicePixelRatio || 1;\n\n /**\n * @type {number} Horizontal scale.\n */\n this.sx = pixelRatio;\n\n /**\n * @type {number} Vertical scale.\n */\n this.sy = pixelRatio;\n }\n\n /**\n * @type {boolean} Returns `true` when scaling is required, `false` otherwise.\n */\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n}\n\n/**\n * Scrolls specified element into view of its parent.\n * @param {Object} element - The element to be visible.\n * @param {Object} spot - An object with optional top and left properties,\n * specifying the offset from the top left edge.\n * @param {boolean} [scrollMatches] - When scrolling search results into view,\n * ignore elements that either: Contains marked content identifiers,\n * or have the CSS-rule `overflow: hidden;` set. The default value is `false`.\n */\nfunction scrollIntoView(element, spot, scrollMatches = false) {\n // Assuming offsetParent is available (it's not available when viewer is in\n // hidden iframe or object). We have to scroll: if the offsetParent is not set\n // producing the error. See also animationStarted.\n let parent = element.offsetParent;\n if (!parent) {\n console.error(\"offsetParent is not set -- cannot scroll\");\n return;\n }\n let offsetY = element.offsetTop + element.clientTop;\n let offsetX = element.offsetLeft + element.clientLeft;\n while (\n (parent.clientHeight === parent.scrollHeight &&\n parent.clientWidth === parent.scrollWidth) ||\n (scrollMatches &&\n (parent.classList.contains(\"markedContent\") ||\n getComputedStyle(parent).overflow === \"hidden\"))\n ) {\n offsetY += parent.offsetTop;\n offsetX += parent.offsetLeft;\n\n parent = parent.offsetParent;\n if (!parent) {\n return; // no need to scroll\n }\n }\n if (spot) {\n if (spot.top !== undefined) {\n offsetY += spot.top;\n }\n if (spot.left !== undefined) {\n offsetX += spot.left;\n parent.scrollLeft = offsetX;\n }\n }\n parent.scrollTop = offsetY;\n}\n\n/**\n * Helper function to start monitoring the scroll event and converting them into\n * PDF.js friendly one: with scroll debounce and scroll direction.\n */\nfunction watchScroll(viewAreaElement, callback) {\n const debounceScroll = function (evt) {\n if (rAF) {\n return;\n }\n // schedule an invocation of scroll for next animation frame.\n rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {\n rAF = null;\n\n const currentX = viewAreaElement.scrollLeft;\n const lastX = state.lastX;\n if (currentX !== lastX) {\n state.right = currentX > lastX;\n }\n state.lastX = currentX;\n const currentY = viewAreaElement.scrollTop;\n const lastY = state.lastY;\n if (currentY !== lastY) {\n state.down = currentY > lastY;\n }\n state.lastY = currentY;\n callback(state);\n });\n };\n\n const state = {\n right: true,\n down: true,\n lastX: viewAreaElement.scrollLeft,\n lastY: viewAreaElement.scrollTop,\n _eventHandler: debounceScroll,\n };\n\n let rAF = null;\n viewAreaElement.addEventListener(\"scroll\", debounceScroll, true);\n return state;\n}\n\n/**\n * Helper function to parse query string (e.g. ?param1=value&param2=...).\n * @param {string}\n * @returns {Map}\n */\nfunction parseQueryString(query) {\n const params = new Map();\n for (const [key, value] of new URLSearchParams(query)) {\n params.set(key.toLowerCase(), value);\n }\n return params;\n}\n\nconst NullCharactersRegExp = /\\x00/g;\nconst InvisibleCharactersRegExp = /[\\x01-\\x1F]/g;\n\n/**\n * @param {string} str\n * @param {boolean} [replaceInvisible]\n */\nfunction removeNullCharacters(str, replaceInvisible = false) {\n if (typeof str !== \"string\") {\n console.error(`The argument must be a string.`);\n return str;\n }\n if (replaceInvisible) {\n str = str.replace(InvisibleCharactersRegExp, \" \");\n }\n return str.replace(NullCharactersRegExp, \"\");\n}\n\n/**\n * Use binary search to find the index of the first item in a given array which\n * passes a given condition. The items are expected to be sorted in the sense\n * that if the condition is true for one item in the array, then it is also true\n * for all following items.\n *\n * @returns {number} Index of the first array element to pass the test,\n * or |items.length| if no such element exists.\n */\nfunction binarySearchFirstItem(items, condition, start = 0) {\n let minIndex = start;\n let maxIndex = items.length - 1;\n\n if (maxIndex < 0 || !condition(items[maxIndex])) {\n return items.length;\n }\n if (condition(items[minIndex])) {\n return minIndex;\n }\n\n while (minIndex < maxIndex) {\n const currentIndex = (minIndex + maxIndex) >> 1;\n const currentItem = items[currentIndex];\n if (condition(currentItem)) {\n maxIndex = currentIndex;\n } else {\n minIndex = currentIndex + 1;\n }\n }\n return minIndex; /* === maxIndex */\n}\n\n/**\n * Approximates float number as a fraction using Farey sequence (max order\n * of 8).\n * @param {number} x - Positive float number.\n * @returns {Array} Estimated fraction: the first array item is a numerator,\n * the second one is a denominator.\n */\nfunction approximateFraction(x) {\n // Fast paths for int numbers or their inversions.\n if (Math.floor(x) === x) {\n return [x, 1];\n }\n const xinv = 1 / x;\n const limit = 8;\n if (xinv > limit) {\n return [1, limit];\n } else if (Math.floor(xinv) === xinv) {\n return [1, xinv];\n }\n\n const x_ = x > 1 ? xinv : x;\n // a/b and c/d are neighbours in Farey sequence.\n let a = 0,\n b = 1,\n c = 1,\n d = 1;\n // Limiting search to order 8.\n while (true) {\n // Generating next term in sequence (order of q).\n const p = a + c,\n q = b + d;\n if (q > limit) {\n break;\n }\n if (x_ <= p / q) {\n c = p;\n d = q;\n } else {\n a = p;\n b = q;\n }\n }\n let result;\n // Select closest of the neighbours to x.\n if (x_ - a / b < c / d - x_) {\n result = x_ === x ? [a, b] : [b, a];\n } else {\n result = x_ === x ? [c, d] : [d, c];\n }\n return result;\n}\n\nfunction roundToDivide(x, div) {\n const r = x % div;\n return r === 0 ? x : Math.round(x - r + div);\n}\n\n/**\n * @typedef {Object} GetPageSizeInchesParameters\n * @property {number[]} view\n * @property {number} userUnit\n * @property {number} rotate\n */\n\n/**\n * @typedef {Object} PageSize\n * @property {number} width - In inches.\n * @property {number} height - In inches.\n */\n\n/**\n * Gets the size of the specified page, converted from PDF units to inches.\n * @param {GetPageSizeInchesParameters} params\n * @returns {PageSize}\n */\nfunction getPageSizeInches({ view, userUnit, rotate }) {\n const [x1, y1, x2, y2] = view;\n // We need to take the page rotation into account as well.\n const changeOrientation = rotate % 180 !== 0;\n\n const width = ((x2 - x1) / 72) * userUnit;\n const height = ((y2 - y1) / 72) * userUnit;\n\n return {\n width: changeOrientation ? height : width,\n height: changeOrientation ? width : height,\n };\n}\n\n/**\n * Helper function for getVisibleElements.\n *\n * @param {number} index - initial guess at the first visible element\n * @param {Array} views - array of pages, into which `index` is an index\n * @param {number} top - the top of the scroll pane\n * @returns {number} less than or equal to `index` that is definitely at or\n * before the first visible element in `views`, but not by too much. (Usually,\n * this will be the first element in the first partially visible row in\n * `views`, although sometimes it goes back one row further.)\n */\nfunction backtrackBeforeAllVisibleElements(index, views, top) {\n // binarySearchFirstItem's assumption is that the input is ordered, with only\n // one index where the conditions flips from false to true: [false ...,\n // true...]. With vertical scrolling and spreads, it is possible to have\n // [false ..., true, false, true ...]. With wrapped scrolling we can have a\n // similar sequence, with many more mixed true and false in the middle.\n //\n // So there is no guarantee that the binary search yields the index of the\n // first visible element. It could have been any of the other visible elements\n // that were preceded by a hidden element.\n\n // Of course, if either this element or the previous (hidden) element is also\n // the first element, there's nothing to worry about.\n if (index < 2) {\n return index;\n }\n\n // That aside, the possible cases are represented below.\n //\n // **** = fully hidden\n // A*B* = mix of partially visible and/or hidden pages\n // CDEF = fully visible\n //\n // (1) Binary search could have returned A, in which case we can stop.\n // (2) Binary search could also have returned B, in which case we need to\n // check the whole row.\n // (3) Binary search could also have returned C, in which case we need to\n // check the whole previous row.\n //\n // There's one other possibility:\n //\n // **** = fully hidden\n // ABCD = mix of fully and/or partially visible pages\n //\n // (4) Binary search could only have returned A.\n\n // Initially assume that we need to find the beginning of the current row\n // (case 1, 2, or 4), which means finding a page that is above the current\n // page's top. If the found page is partially visible, we're definitely not in\n // case 3, and this assumption is correct.\n let elt = views[index].div;\n let pageTop = elt.offsetTop + elt.clientTop;\n\n if (pageTop >= top) {\n // The found page is fully visible, so we're actually either in case 3 or 4,\n // and unfortunately we can't tell the difference between them without\n // scanning the entire previous row, so we just conservatively assume that\n // we do need to backtrack to that row. In both cases, the previous page is\n // in the previous row, so use its top instead.\n elt = views[index - 1].div;\n pageTop = elt.offsetTop + elt.clientTop;\n }\n\n // Now we backtrack to the first page that still has its bottom below\n // `pageTop`, which is the top of a page in the first visible row (unless\n // we're in case 4, in which case it's the row before that).\n // `index` is found by binary search, so the page at `index - 1` is\n // invisible and we can start looking for potentially visible pages from\n // `index - 2`. (However, if this loop terminates on its first iteration,\n // which is the case when pages are stacked vertically, `index` should remain\n // unchanged, so we use a distinct loop variable.)\n for (let i = index - 2; i >= 0; --i) {\n elt = views[i].div;\n if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) {\n // We have reached the previous row, so stop now.\n // This loop is expected to terminate relatively quickly because the\n // number of pages per row is expected to be small.\n break;\n }\n index = i;\n }\n return index;\n}\n\n/**\n * @typedef {Object} GetVisibleElementsParameters\n * @property {HTMLElement} scrollEl - A container that can possibly scroll.\n * @property {Array} views - Objects with a `div` property that contains an\n * HTMLElement, which should all be descendants of `scrollEl` satisfying the\n * relevant layout assumptions.\n * @property {boolean} sortByVisibility - If `true`, the returned elements are\n * sorted in descending order of the percent of their padding box that is\n * visible. The default value is `false`.\n * @property {boolean} horizontal - If `true`, the elements are assumed to be\n * laid out horizontally instead of vertically. The default value is `false`.\n * @property {boolean} rtl - If `true`, the `scrollEl` container is assumed to\n * be in right-to-left mode. The default value is `false`.\n */\n\n/**\n * Generic helper to find out what elements are visible within a scroll pane.\n *\n * Well, pretty generic. There are some assumptions placed on the elements\n * referenced by `views`:\n * - If `horizontal`, no left of any earlier element is to the right of the\n * left of any later element.\n * - Otherwise, `views` can be split into contiguous rows where, within a row,\n * no top of any element is below the bottom of any other element, and\n * between rows, no bottom of any element in an earlier row is below the\n * top of any element in a later row.\n *\n * (Here, top, left, etc. all refer to the padding edge of the element in\n * question. For pages, that ends up being equivalent to the bounding box of the\n * rendering canvas. Earlier and later refer to index in `views`, not page\n * layout.)\n *\n * @param {GetVisibleElementsParameters}\n * @returns {Object} `{ first, last, views: [{ id, x, y, view, percent }] }`\n */\nfunction getVisibleElements({\n scrollEl,\n views,\n sortByVisibility = false,\n horizontal = false,\n rtl = false,\n}) {\n const top = scrollEl.scrollTop,\n bottom = top + scrollEl.clientHeight;\n const left = scrollEl.scrollLeft,\n right = left + scrollEl.clientWidth;\n\n // Throughout this \"generic\" function, comments will assume we're working with\n // PDF document pages, which is the most important and complex case. In this\n // case, the visible elements we're actually interested is the page canvas,\n // which is contained in a wrapper which adds no padding/border/margin, which\n // is itself contained in `view.div` which adds no padding (but does add a\n // border). So, as specified in this function's doc comment, this function\n // does all of its work on the padding edge of the provided views, starting at\n // offsetLeft/Top (which includes margin) and adding clientLeft/Top (which is\n // the border). Adding clientWidth/Height gets us the bottom-right corner of\n // the padding edge.\n function isElementBottomAfterViewTop(view) {\n const element = view.div;\n const elementBottom =\n element.offsetTop + element.clientTop + element.clientHeight;\n return elementBottom > top;\n }\n function isElementNextAfterViewHorizontally(view) {\n const element = view.div;\n const elementLeft = element.offsetLeft + element.clientLeft;\n const elementRight = elementLeft + element.clientWidth;\n return rtl ? elementLeft < right : elementRight > left;\n }\n\n const visible = [],\n ids = new Set(),\n numViews = views.length;\n let firstVisibleElementInd = binarySearchFirstItem(\n views,\n horizontal\n ? isElementNextAfterViewHorizontally\n : isElementBottomAfterViewTop\n );\n\n // Please note the return value of the `binarySearchFirstItem` function when\n // no valid element is found (hence the `firstVisibleElementInd` check below).\n if (\n firstVisibleElementInd > 0 &&\n firstVisibleElementInd < numViews &&\n !horizontal\n ) {\n // In wrapped scrolling (or vertical scrolling with spreads), with some page\n // sizes, isElementBottomAfterViewTop doesn't satisfy the binary search\n // condition: there can be pages with bottoms above the view top between\n // pages with bottoms below. This function detects and corrects that error;\n // see it for more comments.\n firstVisibleElementInd = backtrackBeforeAllVisibleElements(\n firstVisibleElementInd,\n views,\n top\n );\n }\n\n // lastEdge acts as a cutoff for us to stop looping, because we know all\n // subsequent pages will be hidden.\n //\n // When using wrapped scrolling or vertical scrolling with spreads, we can't\n // simply stop the first time we reach a page below the bottom of the view;\n // the tops of subsequent pages on the same row could still be visible. In\n // horizontal scrolling, we don't have that issue, so we can stop as soon as\n // we pass `right`, without needing the code below that handles the -1 case.\n let lastEdge = horizontal ? right : -1;\n\n for (let i = firstVisibleElementInd; i < numViews; i++) {\n const view = views[i],\n element = view.div;\n const currentWidth = element.offsetLeft + element.clientLeft;\n const currentHeight = element.offsetTop + element.clientTop;\n const viewWidth = element.clientWidth,\n viewHeight = element.clientHeight;\n const viewRight = currentWidth + viewWidth;\n const viewBottom = currentHeight + viewHeight;\n\n if (lastEdge === -1) {\n // As commented above, this is only needed in non-horizontal cases.\n // Setting lastEdge to the bottom of the first page that is partially\n // visible ensures that the next page fully below lastEdge is on the\n // next row, which has to be fully hidden along with all subsequent rows.\n if (viewBottom >= bottom) {\n lastEdge = viewBottom;\n }\n } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {\n break;\n }\n\n if (\n viewBottom <= top ||\n currentHeight >= bottom ||\n viewRight <= left ||\n currentWidth >= right\n ) {\n continue;\n }\n\n const hiddenHeight =\n Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);\n const hiddenWidth =\n Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);\n\n const fractionHeight = (viewHeight - hiddenHeight) / viewHeight,\n fractionWidth = (viewWidth - hiddenWidth) / viewWidth;\n const percent = (fractionHeight * fractionWidth * 100) | 0;\n\n visible.push({\n id: view.id,\n x: currentWidth,\n y: currentHeight,\n view,\n percent,\n widthPercent: (fractionWidth * 100) | 0,\n });\n ids.add(view.id);\n }\n\n const first = visible[0],\n last = visible[visible.length - 1];\n\n if (sortByVisibility) {\n visible.sort(function (a, b) {\n const pc = a.percent - b.percent;\n if (Math.abs(pc) > 0.001) {\n return -pc;\n }\n return a.id - b.id; // ensure stability\n });\n }\n return { first, last, views: visible, ids };\n}\n\n/**\n * Event handler to suppress context menu.\n */\nfunction noContextMenuHandler(evt) {\n evt.preventDefault();\n}\n\nfunction normalizeWheelEventDirection(evt) {\n let delta = Math.hypot(evt.deltaX, evt.deltaY);\n const angle = Math.atan2(evt.deltaY, evt.deltaX);\n if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {\n // All that is left-up oriented has to change the sign.\n delta = -delta;\n }\n return delta;\n}\n\nfunction normalizeWheelEventDelta(evt) {\n let delta = normalizeWheelEventDirection(evt);\n\n const MOUSE_DOM_DELTA_PIXEL_MODE = 0;\n const MOUSE_DOM_DELTA_LINE_MODE = 1;\n const MOUSE_PIXELS_PER_LINE = 30;\n const MOUSE_LINES_PER_PAGE = 30;\n\n // Converts delta to per-page units\n if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) {\n delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;\n } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) {\n delta /= MOUSE_LINES_PER_PAGE;\n }\n return delta;\n}\n\nfunction isValidRotation(angle) {\n return Number.isInteger(angle) && angle % 90 === 0;\n}\n\nfunction isValidScrollMode(mode) {\n return (\n Number.isInteger(mode) &&\n Object.values(ScrollMode).includes(mode) &&\n mode !== ScrollMode.UNKNOWN\n );\n}\n\nfunction isValidSpreadMode(mode) {\n return (\n Number.isInteger(mode) &&\n Object.values(SpreadMode).includes(mode) &&\n mode !== SpreadMode.UNKNOWN\n );\n}\n\nfunction isPortraitOrientation(size) {\n return size.width <= size.height;\n}\n\n/**\n * Promise that is resolved when DOM window becomes visible.\n */\nconst animationStarted = new Promise(function (resolve) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"LIB\") &&\n typeof window === \"undefined\"\n ) {\n // Prevent \"ReferenceError: window is not defined\" errors when running the\n // unit-tests in Node.js environments.\n setTimeout(resolve, 20);\n return;\n }\n window.requestAnimationFrame(resolve);\n});\n\nfunction clamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\n\nclass ProgressBar {\n constructor(id, { height, width, units } = {}) {\n this.visible = true;\n\n // Fetch the sub-elements for later.\n this.div = document.querySelector(id + \" .progress\");\n // Get the loading bar element, so it can be resized to fit the viewer.\n this.bar = this.div.parentNode;\n\n // Get options, with sensible defaults.\n this.height = height || 100;\n this.width = width || 100;\n this.units = units || \"%\";\n\n // Initialize heights.\n this.div.style.height = this.height + this.units;\n this.percent = 0;\n }\n\n _updateBar() {\n if (this._indeterminate) {\n this.div.classList.add(\"indeterminate\");\n this.div.style.width = this.width + this.units;\n return;\n }\n\n this.div.classList.remove(\"indeterminate\");\n const progressSize = (this.width * this._percent) / 100;\n this.div.style.width = progressSize + this.units;\n }\n\n get percent() {\n return this._percent;\n }\n\n set percent(val) {\n this._indeterminate = isNaN(val);\n this._percent = clamp(val, 0, 100);\n this._updateBar();\n }\n\n setWidth(viewer) {\n if (!viewer) {\n return;\n }\n const container = viewer.parentNode;\n const scrollbarWidth = container.offsetWidth - viewer.offsetWidth;\n if (scrollbarWidth > 0) {\n const doc = document.documentElement;\n doc.style.setProperty(LOADINGBAR_END_OFFSET_VAR, `${scrollbarWidth}px`);\n }\n }\n\n hide() {\n if (!this.visible) {\n return;\n }\n this.visible = false;\n this.bar.classList.add(\"hidden\");\n }\n\n show() {\n if (this.visible) {\n return;\n }\n this.visible = true;\n this.bar.classList.remove(\"hidden\");\n }\n}\n\n/**\n * Get the active or focused element in current DOM.\n *\n * Recursively search for the truly active or focused element in case there are\n * shadow DOMs.\n *\n * @returns {Element} the truly active or focused element.\n */\nfunction getActiveOrFocusedElement() {\n let curRoot = document;\n let curActiveOrFocused =\n curRoot.activeElement || curRoot.querySelector(\":focus\");\n\n while (curActiveOrFocused?.shadowRoot) {\n curRoot = curActiveOrFocused.shadowRoot;\n curActiveOrFocused =\n curRoot.activeElement || curRoot.querySelector(\":focus\");\n }\n\n return curActiveOrFocused;\n}\n\n/**\n * Converts API PageLayout values to the format used by `BaseViewer`.\n * NOTE: This is supported to the extent that the viewer implements the\n * necessary Scroll/Spread modes (since SinglePage, TwoPageLeft,\n * and TwoPageRight all suggests using non-continuous scrolling).\n * @param {string} mode - The API PageLayout value.\n * @returns {Object}\n */\nfunction apiPageLayoutToViewerModes(layout) {\n let scrollMode = ScrollMode.VERTICAL,\n spreadMode = SpreadMode.NONE;\n\n switch (layout) {\n case \"SinglePage\":\n scrollMode = ScrollMode.PAGE;\n break;\n case \"OneColumn\":\n break;\n case \"TwoPageLeft\":\n scrollMode = ScrollMode.PAGE;\n /* falls through */\n case \"TwoColumnLeft\":\n spreadMode = SpreadMode.ODD;\n break;\n case \"TwoPageRight\":\n scrollMode = ScrollMode.PAGE;\n /* falls through */\n case \"TwoColumnRight\":\n spreadMode = SpreadMode.EVEN;\n break;\n }\n return { scrollMode, spreadMode };\n}\n\n/**\n * Converts API PageMode values to the format used by `PDFSidebar`.\n * NOTE: There's also a \"FullScreen\" parameter which is not possible to support,\n * since the Fullscreen API used in browsers requires that entering\n * fullscreen mode only occurs as a result of a user-initiated event.\n * @param {string} mode - The API PageMode value.\n * @returns {number} A value from {SidebarView}.\n */\nfunction apiPageModeToSidebarView(mode) {\n switch (mode) {\n case \"UseNone\":\n return SidebarView.NONE;\n case \"UseThumbs\":\n return SidebarView.THUMBS;\n case \"UseOutlines\":\n return SidebarView.OUTLINE;\n case \"UseAttachments\":\n return SidebarView.ATTACHMENTS;\n case \"UseOC\":\n return SidebarView.LAYERS;\n }\n return SidebarView.NONE; // Default value.\n}\n\nexport {\n animationStarted,\n apiPageLayoutToViewerModes,\n apiPageModeToSidebarView,\n approximateFraction,\n AutoPrintRegExp,\n backtrackBeforeAllVisibleElements, // only exported for testing\n binarySearchFirstItem,\n DEFAULT_SCALE,\n DEFAULT_SCALE_DELTA,\n DEFAULT_SCALE_VALUE,\n getActiveOrFocusedElement,\n getPageSizeInches,\n getVisibleElements,\n isPortraitOrientation,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n MAX_AUTO_SCALE,\n MAX_SCALE,\n MIN_SCALE,\n noContextMenuHandler,\n normalizeWheelEventDelta,\n normalizeWheelEventDirection,\n OutputScale,\n parseQueryString,\n PresentationModeState,\n ProgressBar,\n removeNullCharacters,\n RendererType,\n RenderingStates,\n roundToDivide,\n SCROLLBAR_PADDING,\n scrollIntoView,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n UNKNOWN_SCALE,\n VERTICAL_PADDING,\n watchScroll,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst WaitOnType = {\n EVENT: \"event\",\n TIMEOUT: \"timeout\",\n};\n\n/**\n * @typedef {Object} WaitOnEventOrTimeoutParameters\n * @property {Object} target - The event target, can for example be:\n * `window`, `document`, a DOM element, or an {EventBus} instance.\n * @property {string} name - The name of the event.\n * @property {number} delay - The delay, in milliseconds, after which the\n * timeout occurs (if the event wasn't already dispatched).\n */\n\n/**\n * Allows waiting for an event or a timeout, whichever occurs first.\n * Can be used to ensure that an action always occurs, even when an event\n * arrives late or not at all.\n *\n * @param {WaitOnEventOrTimeoutParameters}\n * @returns {Promise} A promise that is resolved with a {WaitOnType} value.\n */\nfunction waitOnEventOrTimeout({ target, name, delay = 0 }) {\n return new Promise(function (resolve, reject) {\n if (\n typeof target !== \"object\" ||\n !(name && typeof name === \"string\") ||\n !(Number.isInteger(delay) && delay >= 0)\n ) {\n throw new Error(\"waitOnEventOrTimeout - invalid parameters.\");\n }\n\n function handler(type) {\n if (target instanceof EventBus) {\n target._off(name, eventHandler);\n } else {\n target.removeEventListener(name, eventHandler);\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n resolve(type);\n }\n\n const eventHandler = handler.bind(null, WaitOnType.EVENT);\n if (target instanceof EventBus) {\n target._on(name, eventHandler);\n } else {\n target.addEventListener(name, eventHandler);\n }\n\n const timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT);\n const timeout = setTimeout(timeoutHandler, delay);\n });\n}\n\n/**\n * Simple event bus for an application. Listeners are attached using the `on`\n * and `off` methods. To raise an event, the `dispatch` method shall be used.\n */\nclass EventBus {\n constructor() {\n this._listeners = Object.create(null);\n }\n\n /**\n * @param {string} eventName\n * @param {function} listener\n * @param {Object} [options]\n */\n on(eventName, listener, options = null) {\n this._on(eventName, listener, {\n external: true,\n once: options?.once,\n });\n }\n\n /**\n * @param {string} eventName\n * @param {function} listener\n * @param {Object} [options]\n */\n off(eventName, listener, options = null) {\n this._off(eventName, listener, {\n external: true,\n once: options?.once,\n });\n }\n\n /**\n * @param {string} eventName\n * @param {Object} data\n */\n dispatch(eventName, data) {\n const eventListeners = this._listeners[eventName];\n if (!eventListeners || eventListeners.length === 0) {\n return;\n }\n let externalListeners;\n // Making copy of the listeners array in case if it will be modified\n // during dispatch.\n for (const { listener, external, once } of eventListeners.slice(0)) {\n if (once) {\n this._off(eventName, listener);\n }\n if (external) {\n (externalListeners ||= []).push(listener);\n continue;\n }\n listener(data);\n }\n // Dispatch any \"external\" listeners *after* the internal ones, to give the\n // viewer components time to handle events and update their state first.\n if (externalListeners) {\n for (const listener of externalListeners) {\n listener(data);\n }\n externalListeners = null;\n }\n }\n\n /**\n * @ignore\n */\n _on(eventName, listener, options = null) {\n const eventListeners = (this._listeners[eventName] ||= []);\n eventListeners.push({\n listener,\n external: options?.external === true,\n once: options?.once === true,\n });\n }\n\n /**\n * @ignore\n */\n _off(eventName, listener, options = null) {\n const eventListeners = this._listeners[eventName];\n if (!eventListeners) {\n return;\n }\n for (let i = 0, ii = eventListeners.length; i < ii; i++) {\n if (eventListeners[i].listener === listener) {\n eventListeners.splice(i, 1);\n return;\n }\n }\n }\n}\n\n/**\n * NOTE: Only used to support various PDF viewer tests in `mozilla-central`.\n */\nclass AutomationEventBus extends EventBus {\n dispatch(eventName, data) {\n if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: AutomationEventBus.dispatch\");\n }\n super.dispatch(eventName, data);\n\n const details = Object.create(null);\n if (data) {\n for (const key in data) {\n const value = data[key];\n if (key === \"source\") {\n if (value === window || value === document) {\n return; // No need to re-dispatch (already) global events.\n }\n continue; // Ignore the `source` property.\n }\n details[key] = value;\n }\n }\n const event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventName, true, true, details);\n document.dispatchEvent(event);\n }\n}\n\nexport { AutomationEventBus, EventBus, waitOnEventOrTimeout, WaitOnType };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals module, __non_webpack_require__ */\n\n\"use strict\";\n\nlet pdfjsLib;\nif (typeof window !== \"undefined\" && window[\"pdfjs-dist/build/pdf\"]) {\n pdfjsLib = window[\"pdfjs-dist/build/pdf\"];\n} else {\n pdfjsLib = __non_webpack_require__(\"../build/pdf.js\");\n}\nmodule.exports = pdfjsLib;\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { GrabToPan } from \"./grab_to_pan.js\";\nimport { PresentationModeState } from \"./ui_utils.js\";\n\nconst CursorTool = {\n SELECT: 0, // The default value.\n HAND: 1,\n ZOOM: 2,\n};\n\n/**\n * @typedef {Object} PDFCursorToolsOptions\n * @property {HTMLDivElement} container - The document container.\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} [cursorToolOnLoad] - The cursor tool that will be enabled\n * on load; the constants from {CursorTool} should be used. The default value\n * is `CursorTool.SELECT`.\n */\n\nclass PDFCursorTools {\n /**\n * @param {PDFCursorToolsOptions} options\n */\n constructor({ container, eventBus, cursorToolOnLoad = CursorTool.SELECT }) {\n this.container = container;\n this.eventBus = eventBus;\n\n this.active = CursorTool.SELECT;\n this.activeBeforePresentationMode = null;\n\n this.handTool = new GrabToPan({\n element: this.container,\n });\n\n this._addEventListeners();\n\n // Defer the initial `switchTool` call, to give other viewer components\n // time to initialize *and* register 'cursortoolchanged' event listeners.\n Promise.resolve().then(() => {\n this.switchTool(cursorToolOnLoad);\n });\n }\n\n /**\n * @type {number} One of the values in {CursorTool}.\n */\n get activeTool() {\n return this.active;\n }\n\n /**\n * NOTE: This method is ignored while Presentation Mode is active.\n * @param {number} tool - The cursor mode that should be switched to,\n * must be one of the values in {CursorTool}.\n */\n switchTool(tool) {\n if (this.activeBeforePresentationMode !== null) {\n return; // Cursor tools cannot be used in Presentation Mode.\n }\n if (tool === this.active) {\n return; // The requested tool is already active.\n }\n\n const disableActiveTool = () => {\n switch (this.active) {\n case CursorTool.SELECT:\n break;\n case CursorTool.HAND:\n this.handTool.deactivate();\n break;\n case CursorTool.ZOOM:\n /* falls through */\n }\n };\n\n // Enable the new cursor tool.\n switch (tool) {\n case CursorTool.SELECT:\n disableActiveTool();\n break;\n case CursorTool.HAND:\n disableActiveTool();\n this.handTool.activate();\n break;\n case CursorTool.ZOOM:\n /* falls through */\n default:\n console.error(`switchTool: \"${tool}\" is an unsupported value.`);\n return;\n }\n // Update the active tool *after* it has been validated above,\n // in order to prevent setting it to an invalid state.\n this.active = tool;\n\n this._dispatchEvent();\n }\n\n /**\n * @private\n */\n _dispatchEvent() {\n this.eventBus.dispatch(\"cursortoolchanged\", {\n source: this,\n tool: this.active,\n });\n }\n\n /**\n * @private\n */\n _addEventListeners() {\n this.eventBus._on(\"switchcursortool\", evt => {\n this.switchTool(evt.tool);\n });\n\n this.eventBus._on(\"presentationmodechanged\", evt => {\n switch (evt.state) {\n case PresentationModeState.FULLSCREEN: {\n const previouslyActive = this.active;\n\n this.switchTool(CursorTool.SELECT);\n this.activeBeforePresentationMode = previouslyActive;\n break;\n }\n case PresentationModeState.NORMAL: {\n const previouslyActive = this.activeBeforePresentationMode;\n\n this.activeBeforePresentationMode = null;\n this.switchTool(previouslyActive);\n break;\n }\n }\n });\n }\n}\n\nexport { CursorTool, PDFCursorTools };\n","/* Copyright 2013 Rob Wu <rob@robwu.nl>\n * https://github.com/Rob--W/grab-to-pan.js\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Class name of element which can be grabbed.\nconst CSS_CLASS_GRAB = \"grab-to-pan-grab\";\n\nclass GrabToPan {\n /**\n * Construct a GrabToPan instance for a given HTML element.\n * @param {Element} options.element\n * @param {function} [options.ignoreTarget] - See `ignoreTarget(node)`.\n * @param {function(boolean)} [options.onActiveChanged] - Called when\n * grab-to-pan is (de)activated. The first argument is a boolean that\n * shows whether grab-to-pan is activated.\n */\n constructor(options) {\n this.element = options.element;\n this.document = options.element.ownerDocument;\n if (typeof options.ignoreTarget === \"function\") {\n this.ignoreTarget = options.ignoreTarget;\n }\n this.onActiveChanged = options.onActiveChanged;\n\n // Bind the contexts to ensure that `this` always points to\n // the GrabToPan instance.\n this.activate = this.activate.bind(this);\n this.deactivate = this.deactivate.bind(this);\n this.toggle = this.toggle.bind(this);\n this._onMouseDown = this.#onMouseDown.bind(this);\n this._onMouseMove = this.#onMouseMove.bind(this);\n this._endPan = this.#endPan.bind(this);\n\n // This overlay will be inserted in the document when the mouse moves during\n // a grab operation, to ensure that the cursor has the desired appearance.\n const overlay = (this.overlay = document.createElement(\"div\"));\n overlay.className = \"grab-to-pan-grabbing\";\n }\n\n /**\n * Bind a mousedown event to the element to enable grab-detection.\n */\n activate() {\n if (!this.active) {\n this.active = true;\n this.element.addEventListener(\"mousedown\", this._onMouseDown, true);\n this.element.classList.add(CSS_CLASS_GRAB);\n\n this.onActiveChanged?.(true);\n }\n }\n\n /**\n * Removes all events. Any pending pan session is immediately stopped.\n */\n deactivate() {\n if (this.active) {\n this.active = false;\n this.element.removeEventListener(\"mousedown\", this._onMouseDown, true);\n this._endPan();\n this.element.classList.remove(CSS_CLASS_GRAB);\n\n this.onActiveChanged?.(false);\n }\n }\n\n toggle() {\n if (this.active) {\n this.deactivate();\n } else {\n this.activate();\n }\n }\n\n /**\n * Whether to not pan if the target element is clicked.\n * Override this method to change the default behaviour.\n *\n * @param {Element} node - The target of the event.\n * @returns {boolean} Whether to not react to the click event.\n */\n ignoreTarget(node) {\n // Check whether the clicked element is, a child of, an input element/link.\n return node.matches(\n \"a[href], a[href] *, input, textarea, button, button *, select, option\"\n );\n }\n\n #onMouseDown(event) {\n if (event.button !== 0 || this.ignoreTarget(event.target)) {\n return;\n }\n if (event.originalTarget) {\n try {\n // eslint-disable-next-line no-unused-expressions\n event.originalTarget.tagName;\n } catch (e) {\n // Mozilla-specific: element is a scrollbar (XUL element)\n return;\n }\n }\n\n this.scrollLeftStart = this.element.scrollLeft;\n this.scrollTopStart = this.element.scrollTop;\n this.clientXStart = event.clientX;\n this.clientYStart = event.clientY;\n this.document.addEventListener(\"mousemove\", this._onMouseMove, true);\n this.document.addEventListener(\"mouseup\", this._endPan, true);\n // When a scroll event occurs before a mousemove, assume that the user\n // dragged a scrollbar (necessary for Opera Presto, Safari and IE)\n // (not needed for Chrome/Firefox)\n this.element.addEventListener(\"scroll\", this._endPan, true);\n event.preventDefault();\n event.stopPropagation();\n\n const focusedElement = document.activeElement;\n if (focusedElement && !focusedElement.contains(event.target)) {\n focusedElement.blur();\n }\n }\n\n #onMouseMove(event) {\n this.element.removeEventListener(\"scroll\", this._endPan, true);\n if (!(event.buttons & 1)) {\n // The left mouse button is released.\n this._endPan();\n return;\n }\n const xDiff = event.clientX - this.clientXStart;\n const yDiff = event.clientY - this.clientYStart;\n const scrollTop = this.scrollTopStart - yDiff;\n const scrollLeft = this.scrollLeftStart - xDiff;\n if (this.element.scrollTo) {\n this.element.scrollTo({\n top: scrollTop,\n left: scrollLeft,\n behavior: \"instant\",\n });\n } else {\n this.element.scrollTop = scrollTop;\n this.element.scrollLeft = scrollLeft;\n }\n if (!this.overlay.parentNode) {\n document.body.appendChild(this.overlay);\n }\n }\n\n #endPan() {\n this.element.removeEventListener(\"scroll\", this._endPan, true);\n this.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n this.document.removeEventListener(\"mouseup\", this._endPan, true);\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.overlay.remove();\n }\n}\n\nexport { GrabToPan };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { parseQueryString, removeNullCharacters } from \"./ui_utils.js\";\n\nconst DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\n\nconst LinkTarget = {\n NONE: 0, // Default value.\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4,\n};\n\n/**\n * @typedef ExternalLinkParameters\n * @typedef {Object} ExternalLinkParameters\n * @property {string} url - An absolute URL.\n * @property {LinkTarget} [target] - The link target. The default value is\n * `LinkTarget.NONE`.\n * @property {string} [rel] - The link relationship. The default value is\n * `DEFAULT_LINK_REL`.\n * @property {boolean} [enabled] - Whether the link should be enabled. The\n * default value is true.\n */\n\n/**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLAnchorElement} link - The link element.\n * @param {ExternalLinkParameters} params\n */\nfunction addLinkAttributes(link, { url, target, rel, enabled = true } = {}) {\n if (!url || typeof url !== \"string\") {\n throw new Error('A valid \"url\" parameter must provided.');\n }\n\n const urlNullRemoved = removeNullCharacters(url);\n if (enabled) {\n link.href = link.title = urlNullRemoved;\n } else {\n link.href = \"\";\n link.title = `Disabled: ${urlNullRemoved}`;\n link.onclick = () => {\n return false;\n };\n }\n\n let targetStr = \"\"; // LinkTarget.NONE\n switch (target) {\n case LinkTarget.NONE:\n break;\n case LinkTarget.SELF:\n targetStr = \"_self\";\n break;\n case LinkTarget.BLANK:\n targetStr = \"_blank\";\n break;\n case LinkTarget.PARENT:\n targetStr = \"_parent\";\n break;\n case LinkTarget.TOP:\n targetStr = \"_top\";\n break;\n }\n link.target = targetStr;\n\n link.rel = typeof rel === \"string\" ? rel : DEFAULT_LINK_REL;\n}\n\n/**\n * @typedef {Object} PDFLinkServiceOptions\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} [externalLinkTarget] - Specifies the `target` attribute\n * for external links. Must use one of the values from {LinkTarget}.\n * Defaults to using no target.\n * @property {string} [externalLinkRel] - Specifies the `rel` attribute for\n * external links. Defaults to stripping the referrer.\n * @property {boolean} [ignoreDestinationZoom] - Ignores the zoom argument,\n * thus preserving the current zoom level in the viewer, when navigating\n * to internal destinations. The default value is `false`.\n */\n\n/**\n * Performs navigation functions inside PDF, such as opening specified page,\n * or destination.\n * @implements {IPDFLinkService}\n */\nclass PDFLinkService {\n #pagesRefCache = new Map();\n\n /**\n * @param {PDFLinkServiceOptions} options\n */\n constructor({\n eventBus,\n externalLinkTarget = null,\n externalLinkRel = null,\n ignoreDestinationZoom = false,\n } = {}) {\n this.eventBus = eventBus;\n this.externalLinkTarget = externalLinkTarget;\n this.externalLinkRel = externalLinkRel;\n this.externalLinkEnabled = true;\n this._ignoreDestinationZoom = ignoreDestinationZoom;\n\n this.baseUrl = null;\n this.pdfDocument = null;\n this.pdfViewer = null;\n this.pdfHistory = null;\n }\n\n setDocument(pdfDocument, baseUrl = null) {\n this.baseUrl = baseUrl;\n this.pdfDocument = pdfDocument;\n this.#pagesRefCache.clear();\n }\n\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n\n setHistory(pdfHistory) {\n this.pdfHistory = pdfHistory;\n }\n\n /**\n * @type {number}\n */\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n }\n\n /**\n * @type {number}\n */\n get page() {\n return this.pdfViewer.currentPageNumber;\n }\n\n /**\n * @param {number} value\n */\n set page(value) {\n this.pdfViewer.currentPageNumber = value;\n }\n\n /**\n * @type {number}\n */\n get rotation() {\n return this.pdfViewer.pagesRotation;\n }\n\n /**\n * @param {number} value\n */\n set rotation(value) {\n this.pdfViewer.pagesRotation = value;\n }\n\n #goToDestinationHelper(rawDest, namedDest = null, explicitDest) {\n // Dest array looks like that: <page-ref> </XYZ|/FitXXX> <args..>\n const destRef = explicitDest[0];\n let pageNumber;\n\n if (typeof destRef === \"object\" && destRef !== null) {\n pageNumber = this._cachedPageNumber(destRef);\n\n if (!pageNumber) {\n // Fetch the page reference if it's not yet available. This could\n // only occur during loading, before all pages have been resolved.\n this.pdfDocument\n .getPageIndex(destRef)\n .then(pageIndex => {\n this.cachePageRef(pageIndex + 1, destRef);\n this.#goToDestinationHelper(rawDest, namedDest, explicitDest);\n })\n .catch(() => {\n console.error(\n `PDFLinkService.#goToDestinationHelper: \"${destRef}\" is not ` +\n `a valid page reference, for dest=\"${rawDest}\".`\n );\n });\n return;\n }\n } else if (Number.isInteger(destRef)) {\n pageNumber = destRef + 1;\n } else {\n console.error(\n `PDFLinkService.#goToDestinationHelper: \"${destRef}\" is not ` +\n `a valid destination reference, for dest=\"${rawDest}\".`\n );\n return;\n }\n if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {\n console.error(\n `PDFLinkService.#goToDestinationHelper: \"${pageNumber}\" is not ` +\n `a valid page number, for dest=\"${rawDest}\".`\n );\n return;\n }\n\n if (this.pdfHistory) {\n // Update the browser history before scrolling the new destination into\n // view, to be able to accurately capture the current document position.\n this.pdfHistory.pushCurrentPosition();\n this.pdfHistory.push({ namedDest, explicitDest, pageNumber });\n }\n\n this.pdfViewer.scrollPageIntoView({\n pageNumber,\n destArray: explicitDest,\n ignoreDestinationZoom: this._ignoreDestinationZoom,\n });\n }\n\n /**\n * This method will, when available, also update the browser history.\n *\n * @param {string|Array} dest - The named, or explicit, PDF destination.\n */\n async goToDestination(dest) {\n if (!this.pdfDocument) {\n return;\n }\n let namedDest, explicitDest;\n if (typeof dest === \"string\") {\n namedDest = dest;\n explicitDest = await this.pdfDocument.getDestination(dest);\n } else {\n namedDest = null;\n explicitDest = await dest;\n }\n if (!Array.isArray(explicitDest)) {\n console.error(\n `PDFLinkService.goToDestination: \"${explicitDest}\" is not ` +\n `a valid destination array, for dest=\"${dest}\".`\n );\n return;\n }\n this.#goToDestinationHelper(dest, namedDest, explicitDest);\n }\n\n /**\n * This method will, when available, also update the browser history.\n *\n * @param {number|string} val - The page number, or page label.\n */\n goToPage(val) {\n if (!this.pdfDocument) {\n return;\n }\n const pageNumber =\n (typeof val === \"string\" && this.pdfViewer.pageLabelToPageNumber(val)) ||\n val | 0;\n if (\n !(\n Number.isInteger(pageNumber) &&\n pageNumber > 0 &&\n pageNumber <= this.pagesCount\n )\n ) {\n console.error(`PDFLinkService.goToPage: \"${val}\" is not a valid page.`);\n return;\n }\n\n if (this.pdfHistory) {\n // Update the browser history before scrolling the new page into view,\n // to be able to accurately capture the current document position.\n this.pdfHistory.pushCurrentPosition();\n this.pdfHistory.pushPage(pageNumber);\n }\n\n this.pdfViewer.scrollPageIntoView({ pageNumber });\n }\n\n /**\n * Wrapper around the `addLinkAttributes` helper function.\n * @param {HTMLAnchorElement} link\n * @param {string} url\n * @param {boolean} [newWindow]\n */\n addLinkAttributes(link, url, newWindow = false) {\n addLinkAttributes(link, {\n url,\n target: newWindow ? LinkTarget.BLANK : this.externalLinkTarget,\n rel: this.externalLinkRel,\n enabled: this.externalLinkEnabled,\n });\n }\n\n /**\n * @param {string|Array} dest - The PDF destination object.\n * @returns {string} The hyperlink to the PDF object.\n */\n getDestinationHash(dest) {\n if (typeof dest === \"string\") {\n if (dest.length > 0) {\n return this.getAnchorUrl(\"#\" + escape(dest));\n }\n } else if (Array.isArray(dest)) {\n const str = JSON.stringify(dest);\n if (str.length > 0) {\n return this.getAnchorUrl(\"#\" + escape(str));\n }\n }\n return this.getAnchorUrl(\"\");\n }\n\n /**\n * Prefix the full url on anchor links to make sure that links are resolved\n * relative to the current URL instead of the one defined in <base href>.\n * @param {string} anchor - The anchor hash, including the #.\n * @returns {string} The hyperlink to the PDF object.\n */\n getAnchorUrl(anchor) {\n return (this.baseUrl || \"\") + anchor;\n }\n\n /**\n * @param {string} hash\n */\n setHash(hash) {\n if (!this.pdfDocument) {\n return;\n }\n let pageNumber, dest;\n if (hash.includes(\"=\")) {\n const params = parseQueryString(hash);\n if (params.has(\"search\")) {\n this.eventBus.dispatch(\"findfromurlhash\", {\n source: this,\n query: params.get(\"search\").replace(/\"/g, \"\"),\n phraseSearch: params.get(\"phrase\") === \"true\",\n });\n }\n // borrowing syntax from \"Parameters for Opening PDF Files\"\n if (params.has(\"page\")) {\n pageNumber = params.get(\"page\") | 0 || 1;\n }\n if (params.has(\"zoom\")) {\n // Build the destination array.\n const zoomArgs = params.get(\"zoom\").split(\",\"); // scale,left,top\n const zoomArg = zoomArgs[0];\n const zoomArgNumber = parseFloat(zoomArg);\n\n if (!zoomArg.includes(\"Fit\")) {\n // If the zoomArg is a number, it has to get divided by 100. If it's\n // a string, it should stay as it is.\n dest = [\n null,\n { name: \"XYZ\" },\n zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\n zoomArgs.length > 2 ? zoomArgs[2] | 0 : null,\n zoomArgNumber ? zoomArgNumber / 100 : zoomArg,\n ];\n } else {\n if (zoomArg === \"Fit\" || zoomArg === \"FitB\") {\n dest = [null, { name: zoomArg }];\n } else if (\n zoomArg === \"FitH\" ||\n zoomArg === \"FitBH\" ||\n zoomArg === \"FitV\" ||\n zoomArg === \"FitBV\"\n ) {\n dest = [\n null,\n { name: zoomArg },\n zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\n ];\n } else if (zoomArg === \"FitR\") {\n if (zoomArgs.length !== 5) {\n console.error(\n 'PDFLinkService.setHash: Not enough parameters for \"FitR\".'\n );\n } else {\n dest = [\n null,\n { name: zoomArg },\n zoomArgs[1] | 0,\n zoomArgs[2] | 0,\n zoomArgs[3] | 0,\n zoomArgs[4] | 0,\n ];\n }\n } else {\n console.error(\n `PDFLinkService.setHash: \"${zoomArg}\" is not a valid zoom value.`\n );\n }\n }\n }\n if (dest) {\n this.pdfViewer.scrollPageIntoView({\n pageNumber: pageNumber || this.page,\n destArray: dest,\n allowNegativeOffset: true,\n });\n } else if (pageNumber) {\n this.page = pageNumber; // simple page\n }\n if (params.has(\"pagemode\")) {\n this.eventBus.dispatch(\"pagemode\", {\n source: this,\n mode: params.get(\"pagemode\"),\n });\n }\n // Ensure that this parameter is *always* handled last, in order to\n // guarantee that it won't be overridden (e.g. by the \"page\" parameter).\n if (params.has(\"nameddest\")) {\n this.goToDestination(params.get(\"nameddest\"));\n }\n } else {\n // Named (or explicit) destination.\n dest = unescape(hash);\n try {\n dest = JSON.parse(dest);\n\n if (!Array.isArray(dest)) {\n // Avoid incorrectly rejecting a valid named destination, such as\n // e.g. \"4.3\" or \"true\", because `JSON.parse` converted its type.\n dest = dest.toString();\n }\n } catch (ex) {}\n\n if (\n typeof dest === \"string\" ||\n PDFLinkService.#isValidExplicitDestination(dest)\n ) {\n this.goToDestination(dest);\n return;\n }\n console.error(\n `PDFLinkService.setHash: \"${unescape(\n hash\n )}\" is not a valid destination.`\n );\n }\n }\n\n /**\n * @param {string} action\n */\n executeNamedAction(action) {\n // See PDF reference, table 8.45 - Named action\n switch (action) {\n case \"GoBack\":\n this.pdfHistory?.back();\n break;\n\n case \"GoForward\":\n this.pdfHistory?.forward();\n break;\n\n case \"NextPage\":\n this.pdfViewer.nextPage();\n break;\n\n case \"PrevPage\":\n this.pdfViewer.previousPage();\n break;\n\n case \"LastPage\":\n this.page = this.pagesCount;\n break;\n\n case \"FirstPage\":\n this.page = 1;\n break;\n\n default:\n break; // No action according to spec\n }\n\n this.eventBus.dispatch(\"namedaction\", {\n source: this,\n action,\n });\n }\n\n /**\n * @param {number} pageNum - page number.\n * @param {Object} pageRef - reference to the page.\n */\n cachePageRef(pageNum, pageRef) {\n if (!pageRef) {\n return;\n }\n const refStr =\n pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;\n this.#pagesRefCache.set(refStr, pageNum);\n }\n\n /**\n * @ignore\n */\n _cachedPageNumber(pageRef) {\n if (!pageRef) {\n return null;\n }\n const refStr =\n pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;\n return this.#pagesRefCache.get(refStr) || null;\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageVisible(pageNumber) {\n return this.pdfViewer.isPageVisible(pageNumber);\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageCached(pageNumber) {\n return this.pdfViewer.isPageCached(pageNumber);\n }\n\n static #isValidExplicitDestination(dest) {\n if (!Array.isArray(dest)) {\n return false;\n }\n const destLength = dest.length;\n if (destLength < 2) {\n return false;\n }\n const page = dest[0];\n if (\n !(\n typeof page === \"object\" &&\n Number.isInteger(page.num) &&\n Number.isInteger(page.gen)\n ) &&\n !(Number.isInteger(page) && page >= 0)\n ) {\n return false;\n }\n const zoom = dest[1];\n if (!(typeof zoom === \"object\" && typeof zoom.name === \"string\")) {\n return false;\n }\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (destLength !== 5) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return destLength === 2;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (destLength !== 3) {\n return false;\n }\n break;\n case \"FitR\":\n if (destLength !== 6) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (let i = 2; i < destLength; i++) {\n const param = dest[i];\n if (!(typeof param === \"number\" || (allowNull && param === null))) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * @implements {IPDFLinkService}\n */\nclass SimpleLinkService {\n constructor() {\n this.externalLinkEnabled = true;\n }\n\n /**\n * @type {number}\n */\n get pagesCount() {\n return 0;\n }\n\n /**\n * @type {number}\n */\n get page() {\n return 0;\n }\n\n /**\n * @param {number} value\n */\n set page(value) {}\n\n /**\n * @type {number}\n */\n get rotation() {\n return 0;\n }\n\n /**\n * @param {number} value\n */\n set rotation(value) {}\n\n /**\n * @param {string|Array} dest - The named, or explicit, PDF destination.\n */\n async goToDestination(dest) {}\n\n /**\n * @param {number|string} val - The page number, or page label.\n */\n goToPage(val) {}\n\n /**\n * @param {HTMLAnchorElement} link\n * @param {string} url\n * @param {boolean} [newWindow]\n */\n addLinkAttributes(link, url, newWindow = false) {\n addLinkAttributes(link, { url, enabled: this.externalLinkEnabled });\n }\n\n /**\n * @param dest - The PDF destination object.\n * @returns {string} The hyperlink to the PDF object.\n */\n getDestinationHash(dest) {\n return \"#\";\n }\n\n /**\n * @param hash - The PDF parameters/hash.\n * @returns {string} The hyperlink to the PDF object.\n */\n getAnchorUrl(hash) {\n return \"#\";\n }\n\n /**\n * @param {string} hash\n */\n setHash(hash) {}\n\n /**\n * @param {string} action\n */\n executeNamedAction(action) {}\n\n /**\n * @param {number} pageNum - page number.\n * @param {Object} pageRef - reference to the page.\n */\n cachePageRef(pageNum, pageRef) {}\n\n /**\n * @param {number} pageNumber\n */\n isPageVisible(pageNumber) {\n return true;\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageCached(pageNumber) {\n return true;\n }\n}\n\nexport { LinkTarget, PDFLinkService, SimpleLinkService };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass OverlayManager {\n constructor() {\n this._overlays = {};\n this._active = null;\n this._keyDownBound = this._keyDown.bind(this);\n }\n\n get active() {\n return this._active;\n }\n\n /**\n * @param {string} name - The name of the overlay that is registered.\n * @param {HTMLDivElement} element - The overlay's DOM element.\n * @param {function} [callerCloseMethod] - The method that, if present, calls\n * `OverlayManager.close` from the object registering the\n * overlay. Access to this method is necessary in order to\n * run cleanup code when e.g. the overlay is force closed.\n * The default is `null`.\n * @param {boolean} [canForceClose] - Indicates if opening the overlay closes\n * an active overlay. The default is `false`.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * registered.\n */\n async register(\n name,\n element,\n callerCloseMethod = null,\n canForceClose = false\n ) {\n let container;\n if (!name || !element || !(container = element.parentNode)) {\n throw new Error(\"Not enough parameters.\");\n } else if (this._overlays[name]) {\n throw new Error(\"The overlay is already registered.\");\n }\n this._overlays[name] = {\n element,\n container,\n callerCloseMethod,\n canForceClose,\n };\n }\n\n /**\n * @param {string} name - The name of the overlay that is unregistered.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * unregistered.\n */\n async unregister(name) {\n if (!this._overlays[name]) {\n throw new Error(\"The overlay does not exist.\");\n } else if (this._active === name) {\n throw new Error(\"The overlay cannot be removed while it is active.\");\n }\n delete this._overlays[name];\n }\n\n /**\n * @param {string} name - The name of the overlay that should be opened.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * opened.\n */\n async open(name) {\n if (!this._overlays[name]) {\n throw new Error(\"The overlay does not exist.\");\n } else if (this._active) {\n if (this._overlays[name].canForceClose) {\n this._closeThroughCaller();\n } else if (this._active === name) {\n throw new Error(\"The overlay is already active.\");\n } else {\n throw new Error(\"Another overlay is currently active.\");\n }\n }\n this._active = name;\n this._overlays[this._active].element.classList.remove(\"hidden\");\n this._overlays[this._active].container.classList.remove(\"hidden\");\n\n window.addEventListener(\"keydown\", this._keyDownBound);\n }\n\n /**\n * @param {string} name - The name of the overlay that should be closed.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * closed.\n */\n async close(name) {\n if (!this._overlays[name]) {\n throw new Error(\"The overlay does not exist.\");\n } else if (!this._active) {\n throw new Error(\"The overlay is currently not active.\");\n } else if (this._active !== name) {\n throw new Error(\"Another overlay is currently active.\");\n }\n this._overlays[this._active].container.classList.add(\"hidden\");\n this._overlays[this._active].element.classList.add(\"hidden\");\n this._active = null;\n\n window.removeEventListener(\"keydown\", this._keyDownBound);\n }\n\n /**\n * @private\n */\n _keyDown(evt) {\n if (this._active && evt.keyCode === /* Esc = */ 27) {\n this._closeThroughCaller();\n evt.preventDefault();\n }\n }\n\n /**\n * @private\n */\n _closeThroughCaller() {\n if (this._overlays[this._active].callerCloseMethod) {\n this._overlays[this._active].callerCloseMethod();\n }\n if (this._active) {\n this.close(this._active);\n }\n }\n}\n\nexport { OverlayManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PasswordResponses } from \"pdfjs-lib\";\n\n/**\n * @typedef {Object} PasswordPromptOptions\n * @property {string} overlayName - Name of the overlay for the overlay manager.\n * @property {HTMLDivElement} container - Div container for the overlay.\n * @property {HTMLParagraphElement} label - Label containing instructions for\n * entering the password.\n * @property {HTMLInputElement} input - Input field for entering the password.\n * @property {HTMLButtonElement} submitButton - Button for submitting the\n * password.\n * @property {HTMLButtonElement} cancelButton - Button for cancelling password\n * entry.\n */\n\nclass PasswordPrompt {\n /**\n * @param {PasswordPromptOptions} options\n * @param {OverlayManager} overlayManager - Manager for the viewer overlays.\n * @param {IL10n} l10n - Localization service.\n * @param {boolean} [isViewerEmbedded] - If the viewer is embedded, in e.g.\n * an <iframe> or an <object>. The default value is `false`.\n */\n constructor(options, overlayManager, l10n, isViewerEmbedded = false) {\n this.overlayName = options.overlayName;\n this.container = options.container;\n this.label = options.label;\n this.input = options.input;\n this.submitButton = options.submitButton;\n this.cancelButton = options.cancelButton;\n this.overlayManager = overlayManager;\n this.l10n = l10n;\n this._isViewerEmbedded = isViewerEmbedded;\n\n this.updateCallback = null;\n this.reason = null;\n\n // Attach the event listeners.\n this.submitButton.addEventListener(\"click\", this.#verify.bind(this));\n this.cancelButton.addEventListener(\"click\", this.#cancel.bind(this));\n this.input.addEventListener(\"keydown\", e => {\n if (e.keyCode === /* Enter = */ 13) {\n this.#verify();\n }\n });\n\n this.overlayManager.register(\n this.overlayName,\n this.container,\n this.#cancel.bind(this),\n true\n );\n }\n\n async open() {\n await this.overlayManager.open(this.overlayName);\n\n const passwordIncorrect =\n this.reason === PasswordResponses.INCORRECT_PASSWORD;\n\n if (!this._isViewerEmbedded || passwordIncorrect) {\n this.input.focus();\n }\n this.label.textContent = await this.l10n.get(\n `password_${passwordIncorrect ? \"invalid\" : \"label\"}`\n );\n }\n\n async close() {\n await this.overlayManager.close(this.overlayName);\n this.input.value = \"\";\n }\n\n #verify() {\n const password = this.input.value;\n if (password?.length > 0) {\n this.close();\n this.updateCallback(password);\n }\n }\n\n #cancel() {\n this.close();\n this.updateCallback(new Error(\"PasswordPrompt cancelled.\"));\n }\n\n setUpdateCallback(updateCallback, reason) {\n this.updateCallback = updateCallback;\n this.reason = reason;\n }\n}\n\nexport { PasswordPrompt };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createPromiseCapability, getFilenameFromUrl } from \"pdfjs-lib\";\nimport { BaseTreeViewer } from \"./base_tree_viewer.js\";\n\n/**\n * @typedef {Object} PDFAttachmentViewerOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {DownloadManager} downloadManager - The download manager.\n */\n\n/**\n * @typedef {Object} PDFAttachmentViewerRenderParameters\n * @property {Object|null} attachments - A lookup table of attachment objects.\n */\n\nclass PDFAttachmentViewer extends BaseTreeViewer {\n /**\n * @param {PDFAttachmentViewerOptions} options\n */\n constructor(options) {\n super(options);\n this.downloadManager = options.downloadManager;\n\n this.eventBus._on(\n \"fileattachmentannotation\",\n this._appendAttachment.bind(this)\n );\n }\n\n reset(keepRenderedCapability = false) {\n super.reset();\n this._attachments = null;\n\n if (!keepRenderedCapability) {\n // The only situation in which the `_renderedCapability` should *not* be\n // replaced is when appending FileAttachment annotations.\n this._renderedCapability = createPromiseCapability();\n }\n if (this._pendingDispatchEvent) {\n clearTimeout(this._pendingDispatchEvent);\n }\n this._pendingDispatchEvent = null;\n }\n\n /**\n * @private\n */\n _dispatchEvent(attachmentsCount) {\n this._renderedCapability.resolve();\n\n if (this._pendingDispatchEvent) {\n clearTimeout(this._pendingDispatchEvent);\n this._pendingDispatchEvent = null;\n }\n if (attachmentsCount === 0) {\n // Delay the event when no \"regular\" attachments exist, to allow time for\n // parsing of any FileAttachment annotations that may be present on the\n // *initially* rendered page; this reduces the likelihood of temporarily\n // disabling the attachmentsView when the `PDFSidebar` handles the event.\n this._pendingDispatchEvent = setTimeout(() => {\n this.eventBus.dispatch(\"attachmentsloaded\", {\n source: this,\n attachmentsCount: 0,\n });\n this._pendingDispatchEvent = null;\n });\n return;\n }\n\n this.eventBus.dispatch(\"attachmentsloaded\", {\n source: this,\n attachmentsCount,\n });\n }\n\n /**\n * @private\n */\n _bindLink(element, { content, filename }) {\n element.onclick = () => {\n this.downloadManager.openOrDownloadData(element, content, filename);\n return false;\n };\n }\n\n /**\n * @param {PDFAttachmentViewerRenderParameters} params\n */\n render({ attachments, keepRenderedCapability = false }) {\n if (this._attachments) {\n this.reset(keepRenderedCapability);\n }\n this._attachments = attachments || null;\n\n if (!attachments) {\n this._dispatchEvent(/* attachmentsCount = */ 0);\n return;\n }\n const names = Object.keys(attachments).sort(function (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase());\n });\n\n const fragment = document.createDocumentFragment();\n let attachmentsCount = 0;\n for (const name of names) {\n const item = attachments[name];\n const content = item.content,\n filename = getFilenameFromUrl(item.filename);\n\n const div = document.createElement(\"div\");\n div.className = \"treeItem\";\n\n const element = document.createElement(\"a\");\n this._bindLink(element, { content, filename });\n element.textContent = this._normalizeTextContent(filename);\n\n div.appendChild(element);\n\n fragment.appendChild(div);\n attachmentsCount++;\n }\n\n this._finishRendering(fragment, attachmentsCount);\n }\n\n /**\n * Used to append FileAttachment annotations to the sidebar.\n * @private\n */\n _appendAttachment({ id, filename, content }) {\n const renderedPromise = this._renderedCapability.promise;\n\n renderedPromise.then(() => {\n if (renderedPromise !== this._renderedCapability.promise) {\n return; // The FileAttachment annotation belongs to a previous document.\n }\n let attachments = this._attachments;\n\n if (!attachments) {\n attachments = Object.create(null);\n } else {\n for (const name in attachments) {\n if (id === name) {\n return; // Ignore the new attachment if it already exists.\n }\n }\n }\n attachments[id] = {\n filename,\n content,\n };\n this.render({\n attachments,\n keepRenderedCapability: true,\n });\n });\n }\n}\n\nexport { PDFAttachmentViewer };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { removeNullCharacters } from \"./ui_utils.js\";\n\nconst TREEITEM_OFFSET_TOP = -100; // px\nconst TREEITEM_SELECTED_CLASS = \"selected\";\n\nclass BaseTreeViewer {\n constructor(options) {\n if (this.constructor === BaseTreeViewer) {\n throw new Error(\"Cannot initialize BaseTreeViewer.\");\n }\n this.container = options.container;\n this.eventBus = options.eventBus;\n\n this.reset();\n }\n\n reset() {\n this._pdfDocument = null;\n this._lastToggleIsShow = true;\n this._currentTreeItem = null;\n\n // Remove the tree from the DOM.\n this.container.textContent = \"\";\n // Ensure that the left (right in RTL locales) margin is always reset,\n // to prevent incorrect tree alignment if a new document is opened.\n this.container.classList.remove(\"treeWithDeepNesting\");\n }\n\n /**\n * @private\n */\n _dispatchEvent(count) {\n throw new Error(\"Not implemented: _dispatchEvent\");\n }\n\n /**\n * @private\n */\n _bindLink(element, params) {\n throw new Error(\"Not implemented: _bindLink\");\n }\n\n /**\n * @private\n */\n _normalizeTextContent(str) {\n // Chars in range [0x01-0x1F] will be replaced with a white space\n // and 0x00 by \"\".\n return (\n removeNullCharacters(str, /* replaceInvisible */ true) ||\n /* en dash = */ \"\\u2013\"\n );\n }\n\n /**\n * Prepend a button before a tree item which allows the user to collapse or\n * expand all tree items at that level; see `_toggleTreeItem`.\n * @private\n */\n _addToggleButton(div, hidden = false) {\n const toggler = document.createElement(\"div\");\n toggler.className = \"treeItemToggler\";\n if (hidden) {\n toggler.classList.add(\"treeItemsHidden\");\n }\n toggler.onclick = evt => {\n evt.stopPropagation();\n toggler.classList.toggle(\"treeItemsHidden\");\n\n if (evt.shiftKey) {\n const shouldShowAll = !toggler.classList.contains(\"treeItemsHidden\");\n this._toggleTreeItem(div, shouldShowAll);\n }\n };\n div.insertBefore(toggler, div.firstChild);\n }\n\n /**\n * Collapse or expand the subtree of a tree item.\n *\n * @param {Element} root - the root of the item (sub)tree.\n * @param {boolean} show - whether to show the item (sub)tree. If false,\n * the item subtree rooted at `root` will be collapsed.\n * @private\n */\n _toggleTreeItem(root, show = false) {\n this._lastToggleIsShow = show;\n for (const toggler of root.querySelectorAll(\".treeItemToggler\")) {\n toggler.classList.toggle(\"treeItemsHidden\", !show);\n }\n }\n\n /**\n * Collapse or expand all subtrees of the `container`.\n * @private\n */\n _toggleAllTreeItems() {\n this._toggleTreeItem(this.container, !this._lastToggleIsShow);\n }\n\n /**\n * @private\n */\n _finishRendering(fragment, count, hasAnyNesting = false) {\n if (hasAnyNesting) {\n this.container.classList.add(\"treeWithDeepNesting\");\n\n this._lastToggleIsShow = !fragment.querySelector(\".treeItemsHidden\");\n }\n this.container.appendChild(fragment);\n\n this._dispatchEvent(count);\n }\n\n render(params) {\n throw new Error(\"Not implemented: render\");\n }\n\n /**\n * @private\n */\n _updateCurrentTreeItem(treeItem = null) {\n if (this._currentTreeItem) {\n // Ensure that the current treeItem-selection is always removed.\n this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS);\n this._currentTreeItem = null;\n }\n if (treeItem) {\n treeItem.classList.add(TREEITEM_SELECTED_CLASS);\n this._currentTreeItem = treeItem;\n }\n }\n\n /**\n * @private\n */\n _scrollToCurrentTreeItem(treeItem) {\n if (!treeItem) {\n return;\n }\n // Ensure that the treeItem is *fully* expanded, such that it will first of\n // all be visible and secondly that scrolling it into view works correctly.\n let currentNode = treeItem.parentNode;\n while (currentNode && currentNode !== this.container) {\n if (currentNode.classList.contains(\"treeItem\")) {\n const toggler = currentNode.firstElementChild;\n toggler?.classList.remove(\"treeItemsHidden\");\n }\n currentNode = currentNode.parentNode;\n }\n this._updateCurrentTreeItem(treeItem);\n\n this.container.scrollTo(\n treeItem.offsetLeft,\n treeItem.offsetTop + TREEITEM_OFFSET_TOP\n );\n }\n}\n\nexport { BaseTreeViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createPromiseCapability,\n getPdfFilenameFromUrl,\n PDFDateString,\n} from \"pdfjs-lib\";\nimport { getPageSizeInches, isPortraitOrientation } from \"./ui_utils.js\";\n\nconst DEFAULT_FIELD_CONTENT = \"-\";\n\n// See https://en.wikibooks.org/wiki/Lentis/Conversion_to_the_Metric_Standard_in_the_United_States\nconst NON_METRIC_LOCALES = [\"en-us\", \"en-lr\", \"my\"];\n\n// Should use the format: `width x height`, in portrait orientation.\n// See https://en.wikipedia.org/wiki/Paper_size\nconst US_PAGE_NAMES = {\n \"8.5x11\": \"Letter\",\n \"8.5x14\": \"Legal\",\n};\nconst METRIC_PAGE_NAMES = {\n \"297x420\": \"A3\",\n \"210x297\": \"A4\",\n};\n\nfunction getPageName(size, isPortrait, pageNames) {\n const width = isPortrait ? size.width : size.height;\n const height = isPortrait ? size.height : size.width;\n\n return pageNames[`${width}x${height}`];\n}\n\n/**\n * @typedef {Object} PDFDocumentPropertiesOptions\n * @property {string} overlayName - Name/identifier for the overlay.\n * @property {Object} fields - Names and elements of the overlay's fields.\n * @property {HTMLDivElement} container - Div container for the overlay.\n * @property {HTMLButtonElement} closeButton - Button for closing the overlay.\n */\n\nclass PDFDocumentProperties {\n /**\n * @param {PDFDocumentPropertiesOptions} options\n * @param {OverlayManager} overlayManager - Manager for the viewer overlays.\n * @param {EventBus} eventBus - The application event bus.\n * @param {IL10n} l10n - Localization service.\n */\n constructor(\n { overlayName, fields, container, closeButton },\n overlayManager,\n eventBus,\n l10n\n ) {\n this.overlayName = overlayName;\n this.fields = fields;\n this.container = container;\n this.overlayManager = overlayManager;\n this.l10n = l10n;\n\n this._reset();\n // Bind the event listener for the Close button.\n closeButton.addEventListener(\"click\", this.close.bind(this));\n\n this.overlayManager.register(\n this.overlayName,\n this.container,\n this.close.bind(this)\n );\n\n eventBus._on(\"pagechanging\", evt => {\n this._currentPageNumber = evt.pageNumber;\n });\n eventBus._on(\"rotationchanging\", evt => {\n this._pagesRotation = evt.pagesRotation;\n });\n\n this._isNonMetricLocale = true; // The default viewer locale is 'en-us'.\n l10n.getLanguage().then(locale => {\n this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale);\n });\n }\n\n /**\n * Open the document properties overlay.\n */\n async open() {\n const freezeFieldData = data => {\n Object.defineProperty(this, \"fieldData\", {\n value: Object.freeze(data),\n writable: false,\n enumerable: true,\n configurable: true,\n });\n };\n\n await Promise.all([\n this.overlayManager.open(this.overlayName),\n this._dataAvailableCapability.promise,\n ]);\n const currentPageNumber = this._currentPageNumber;\n const pagesRotation = this._pagesRotation;\n\n // If the document properties were previously fetched (for this PDF file),\n // just update the dialog immediately to avoid redundant lookups.\n if (\n this.fieldData &&\n currentPageNumber === this.fieldData._currentPageNumber &&\n pagesRotation === this.fieldData._pagesRotation\n ) {\n this._updateUI();\n return;\n }\n\n // Get the document properties.\n const {\n info,\n /* metadata, */\n contentDispositionFilename,\n contentLength,\n } = await this.pdfDocument.getMetadata();\n\n const [\n fileName,\n fileSize,\n creationDate,\n modificationDate,\n pageSize,\n isLinearized,\n ] = await Promise.all([\n contentDispositionFilename || getPdfFilenameFromUrl(this.url),\n this._parseFileSize(contentLength),\n this._parseDate(info.CreationDate),\n this._parseDate(info.ModDate),\n this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {\n return this._parsePageSize(getPageSizeInches(pdfPage), pagesRotation);\n }),\n this._parseLinearization(info.IsLinearized),\n ]);\n\n freezeFieldData({\n fileName,\n fileSize,\n title: info.Title,\n author: info.Author,\n subject: info.Subject,\n keywords: info.Keywords,\n creationDate,\n modificationDate,\n creator: info.Creator,\n producer: info.Producer,\n version: info.PDFFormatVersion,\n pageCount: this.pdfDocument.numPages,\n pageSize,\n linearized: isLinearized,\n _currentPageNumber: currentPageNumber,\n _pagesRotation: pagesRotation,\n });\n this._updateUI();\n\n // Get the correct fileSize, since it may not have been available\n // or could potentially be wrong.\n const { length } = await this.pdfDocument.getDownloadInfo();\n if (contentLength === length) {\n return; // The fileSize has already been correctly set.\n }\n const data = Object.assign(Object.create(null), this.fieldData);\n data.fileSize = await this._parseFileSize(length);\n\n freezeFieldData(data);\n this._updateUI();\n }\n\n /**\n * Close the document properties overlay.\n */\n close() {\n this.overlayManager.close(this.overlayName);\n }\n\n /**\n * Set a reference to the PDF document and the URL in order\n * to populate the overlay fields with the document properties.\n * Note that the overlay will contain no information if this method\n * is not called.\n *\n * @param {PDFDocumentProxy} pdfDocument - A reference to the PDF document.\n * @param {string} url - The URL of the document.\n */\n setDocument(pdfDocument, url = null) {\n if (this.pdfDocument) {\n this._reset();\n this._updateUI(true);\n }\n if (!pdfDocument) {\n return;\n }\n this.pdfDocument = pdfDocument;\n this.url = url;\n\n this._dataAvailableCapability.resolve();\n }\n\n /**\n * @private\n */\n _reset() {\n this.pdfDocument = null;\n this.url = null;\n\n delete this.fieldData;\n this._dataAvailableCapability = createPromiseCapability();\n this._currentPageNumber = 1;\n this._pagesRotation = 0;\n }\n\n /**\n * Always updates all of the dialog fields, to prevent inconsistent UI state.\n * NOTE: If the contents of a particular field is neither a non-empty string,\n * nor a number, it will fall back to `DEFAULT_FIELD_CONTENT`.\n * @private\n */\n _updateUI(reset = false) {\n if (reset || !this.fieldData) {\n for (const id in this.fields) {\n this.fields[id].textContent = DEFAULT_FIELD_CONTENT;\n }\n return;\n }\n if (this.overlayManager.active !== this.overlayName) {\n // Don't bother updating the dialog if has already been closed,\n // since it will be updated the next time `this.open` is called.\n return;\n }\n for (const id in this.fields) {\n const content = this.fieldData[id];\n this.fields[id].textContent =\n content || content === 0 ? content : DEFAULT_FIELD_CONTENT;\n }\n }\n\n /**\n * @private\n */\n async _parseFileSize(fileSize = 0) {\n const kb = fileSize / 1024,\n mb = kb / 1024;\n if (!kb) {\n return undefined;\n }\n return this.l10n.get(`document_properties_${mb >= 1 ? \"mb\" : \"kb\"}`, {\n size_mb: mb >= 1 && (+mb.toPrecision(3)).toLocaleString(),\n size_kb: mb < 1 && (+kb.toPrecision(3)).toLocaleString(),\n size_b: fileSize.toLocaleString(),\n });\n }\n\n /**\n * @private\n */\n async _parsePageSize(pageSizeInches, pagesRotation) {\n if (!pageSizeInches) {\n return undefined;\n }\n // Take the viewer rotation into account as well; compare with Adobe Reader.\n if (pagesRotation % 180 !== 0) {\n pageSizeInches = {\n width: pageSizeInches.height,\n height: pageSizeInches.width,\n };\n }\n const isPortrait = isPortraitOrientation(pageSizeInches);\n\n let sizeInches = {\n width: Math.round(pageSizeInches.width * 100) / 100,\n height: Math.round(pageSizeInches.height * 100) / 100,\n };\n // 1in == 25.4mm; no need to round to 2 decimals for millimeters.\n let sizeMillimeters = {\n width: Math.round(pageSizeInches.width * 25.4 * 10) / 10,\n height: Math.round(pageSizeInches.height * 25.4 * 10) / 10,\n };\n\n let rawName =\n getPageName(sizeInches, isPortrait, US_PAGE_NAMES) ||\n getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES);\n\n if (\n !rawName &&\n !(\n Number.isInteger(sizeMillimeters.width) &&\n Number.isInteger(sizeMillimeters.height)\n )\n ) {\n // Attempt to improve the page name detection by falling back to fuzzy\n // matching of the metric dimensions, to account for e.g. rounding errors\n // and/or PDF files that define the page sizes in an imprecise manner.\n const exactMillimeters = {\n width: pageSizeInches.width * 25.4,\n height: pageSizeInches.height * 25.4,\n };\n const intMillimeters = {\n width: Math.round(sizeMillimeters.width),\n height: Math.round(sizeMillimeters.height),\n };\n\n // Try to avoid false positives, by only considering \"small\" differences.\n if (\n Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 &&\n Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1\n ) {\n rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);\n if (rawName) {\n // Update *both* sizes, computed above, to ensure that the displayed\n // dimensions always correspond to the detected page name.\n sizeInches = {\n width: Math.round((intMillimeters.width / 25.4) * 100) / 100,\n height: Math.round((intMillimeters.height / 25.4) * 100) / 100,\n };\n sizeMillimeters = intMillimeters;\n }\n }\n }\n\n const [{ width, height }, unit, name, orientation] = await Promise.all([\n this._isNonMetricLocale ? sizeInches : sizeMillimeters,\n this.l10n.get(\n `document_properties_page_size_unit_${\n this._isNonMetricLocale ? \"inches\" : \"millimeters\"\n }`\n ),\n rawName &&\n this.l10n.get(\n `document_properties_page_size_name_${rawName.toLowerCase()}`\n ),\n this.l10n.get(\n `document_properties_page_size_orientation_${\n isPortrait ? \"portrait\" : \"landscape\"\n }`\n ),\n ]);\n\n return this.l10n.get(\n `document_properties_page_size_dimension_${name ? \"name_\" : \"\"}string`,\n {\n width: width.toLocaleString(),\n height: height.toLocaleString(),\n unit,\n name,\n orientation,\n }\n );\n }\n\n /**\n * @private\n */\n async _parseDate(inputDate) {\n const dateObject = PDFDateString.toDateObject(inputDate);\n if (!dateObject) {\n return undefined;\n }\n return this.l10n.get(\"document_properties_date_string\", {\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString(),\n });\n }\n\n /**\n * @private\n */\n _parseLinearization(isLinearized) {\n return this.l10n.get(\n `document_properties_linearized_${isLinearized ? \"yes\" : \"no\"}`\n );\n }\n}\n\nexport { PDFDocumentProperties };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FindState } from \"./pdf_find_controller.js\";\n\nconst MATCHES_COUNT_LIMIT = 1000;\n\n/**\n * Creates a \"search bar\" given a set of DOM elements that act as controls\n * for searching or for setting search preferences in the UI. This object\n * also sets up the appropriate events for the controls. Actual searching\n * is done by PDFFindController.\n */\nclass PDFFindBar {\n constructor(options, eventBus, l10n) {\n this.opened = false;\n\n this.bar = options.bar;\n this.toggleButton = options.toggleButton;\n this.findField = options.findField;\n this.highlightAll = options.highlightAllCheckbox;\n this.caseSensitive = options.caseSensitiveCheckbox;\n this.matchDiacritics = options.matchDiacriticsCheckbox;\n this.entireWord = options.entireWordCheckbox;\n this.findMsg = options.findMsg;\n this.findResultsCount = options.findResultsCount;\n this.findPreviousButton = options.findPreviousButton;\n this.findNextButton = options.findNextButton;\n this.eventBus = eventBus;\n this.l10n = l10n;\n\n // Add event listeners to the DOM elements.\n this.toggleButton.addEventListener(\"click\", () => {\n this.toggle();\n });\n\n this.findField.addEventListener(\"input\", () => {\n this.dispatchEvent(\"\");\n });\n\n this.bar.addEventListener(\"keydown\", e => {\n switch (e.keyCode) {\n case 13: // Enter\n if (e.target === this.findField) {\n this.dispatchEvent(\"again\", e.shiftKey);\n }\n break;\n case 27: // Escape\n this.close();\n break;\n }\n });\n\n this.findPreviousButton.addEventListener(\"click\", () => {\n this.dispatchEvent(\"again\", true);\n });\n\n this.findNextButton.addEventListener(\"click\", () => {\n this.dispatchEvent(\"again\", false);\n });\n\n this.highlightAll.addEventListener(\"click\", () => {\n this.dispatchEvent(\"highlightallchange\");\n });\n\n this.caseSensitive.addEventListener(\"click\", () => {\n this.dispatchEvent(\"casesensitivitychange\");\n });\n\n this.entireWord.addEventListener(\"click\", () => {\n this.dispatchEvent(\"entirewordchange\");\n });\n\n this.matchDiacritics.addEventListener(\"click\", () => {\n this.dispatchEvent(\"diacriticmatchingchange\");\n });\n\n this.eventBus._on(\"resize\", this._adjustWidth.bind(this));\n }\n\n reset() {\n this.updateUIState();\n }\n\n dispatchEvent(type, findPrev = false) {\n this.eventBus.dispatch(\"find\", {\n source: this,\n type,\n query: this.findField.value,\n phraseSearch: true,\n caseSensitive: this.caseSensitive.checked,\n entireWord: this.entireWord.checked,\n highlightAll: this.highlightAll.checked,\n findPrevious: findPrev,\n matchDiacritics: this.matchDiacritics.checked,\n });\n }\n\n updateUIState(state, previous, matchesCount) {\n let findMsg = Promise.resolve(\"\");\n let status = \"\";\n\n switch (state) {\n case FindState.FOUND:\n break;\n case FindState.PENDING:\n status = \"pending\";\n break;\n case FindState.NOT_FOUND:\n findMsg = this.l10n.get(\"find_not_found\");\n status = \"notFound\";\n break;\n case FindState.WRAPPED:\n findMsg = this.l10n.get(`find_reached_${previous ? \"top\" : \"bottom\"}`);\n break;\n }\n this.findField.setAttribute(\"data-status\", status);\n\n findMsg.then(msg => {\n this.findMsg.textContent = msg;\n this._adjustWidth();\n });\n\n this.updateResultsCount(matchesCount);\n }\n\n updateResultsCount({ current = 0, total = 0 } = {}) {\n const limit = MATCHES_COUNT_LIMIT;\n let matchCountMsg = Promise.resolve(\"\");\n\n if (total > 0) {\n if (total > limit) {\n let key = \"find_match_count_limit\";\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n // TODO: Remove this hard-coded `[other]` form once plural support has\n // been implemented in the mozilla-central specific `l10n.js` file.\n key += \"[other]\";\n }\n matchCountMsg = this.l10n.get(key, { limit });\n } else {\n let key = \"find_match_count\";\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n // TODO: Remove this hard-coded `[other]` form once plural support has\n // been implemented in the mozilla-central specific `l10n.js` file.\n key += \"[other]\";\n }\n matchCountMsg = this.l10n.get(key, { current, total });\n }\n }\n matchCountMsg.then(msg => {\n this.findResultsCount.textContent = msg;\n // Since `updateResultsCount` may be called from `PDFFindController`,\n // ensure that the width of the findbar is always updated correctly.\n this._adjustWidth();\n });\n }\n\n open() {\n if (!this.opened) {\n this.opened = true;\n this.toggleButton.classList.add(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.bar.classList.remove(\"hidden\");\n }\n this.findField.select();\n this.findField.focus();\n\n this._adjustWidth();\n }\n\n close() {\n if (!this.opened) {\n return;\n }\n this.opened = false;\n this.toggleButton.classList.remove(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.bar.classList.add(\"hidden\");\n\n this.eventBus.dispatch(\"findbarclose\", { source: this });\n }\n\n toggle() {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * @private\n */\n _adjustWidth() {\n if (!this.opened) {\n return;\n }\n\n // The find bar has an absolute position and thus the browser extends\n // its width to the maximum possible width once the find bar does not fit\n // entirely within the window anymore (and its elements are automatically\n // wrapped). Here we detect and fix that.\n this.bar.classList.remove(\"wrapContainers\");\n\n const findbarHeight = this.bar.clientHeight;\n const inputContainerHeight = this.bar.firstElementChild.clientHeight;\n\n if (findbarHeight > inputContainerHeight) {\n // The findbar is taller than the input container, which means that\n // the browser wrapped some of the elements. For a consistent look,\n // wrap all of them to adjust the width of the find bar.\n this.bar.classList.add(\"wrapContainers\");\n }\n }\n}\n\nexport { PDFFindBar };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { binarySearchFirstItem, scrollIntoView } from \"./ui_utils.js\";\nimport { createPromiseCapability } from \"pdfjs-lib\";\nimport { getCharacterType } from \"./pdf_find_utils.js\";\n\nconst FindState = {\n FOUND: 0,\n NOT_FOUND: 1,\n WRAPPED: 2,\n PENDING: 3,\n};\n\nconst FIND_TIMEOUT = 250; // ms\nconst MATCH_SCROLL_OFFSET_TOP = -50; // px\nconst MATCH_SCROLL_OFFSET_LEFT = -400; // px\n\nconst CHARACTERS_TO_NORMALIZE = {\n \"\\u2010\": \"-\", // Hyphen\n \"\\u2018\": \"'\", // Left single quotation mark\n \"\\u2019\": \"'\", // Right single quotation mark\n \"\\u201A\": \"'\", // Single low-9 quotation mark\n \"\\u201B\": \"'\", // Single high-reversed-9 quotation mark\n \"\\u201C\": '\"', // Left double quotation mark\n \"\\u201D\": '\"', // Right double quotation mark\n \"\\u201E\": '\"', // Double low-9 quotation mark\n \"\\u201F\": '\"', // Double high-reversed-9 quotation mark\n \"\\u00BC\": \"1/4\", // Vulgar fraction one quarter\n \"\\u00BD\": \"1/2\", // Vulgar fraction one half\n \"\\u00BE\": \"3/4\", // Vulgar fraction three quarters\n};\n\n// These diacritics aren't considered as combining diacritics\n// when searching in a document:\n// https://searchfox.org/mozilla-central/source/intl/unicharutil/util/is_combining_diacritic.py.\n// The combining class definitions can be found:\n// https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values\n// Category 0 corresponds to [^\\p{Mn}].\nconst DIACRITICS_EXCEPTION = new Set([\n // UNICODE_COMBINING_CLASS_KANA_VOICING\n // https://www.compart.com/fr/unicode/combining/8\n 0x3099, 0x309a,\n // UNICODE_COMBINING_CLASS_VIRAMA (under 0xFFFF)\n // https://www.compart.com/fr/unicode/combining/9\n 0x094d, 0x09cd, 0x0a4d, 0x0acd, 0x0b4d, 0x0bcd, 0x0c4d, 0x0ccd, 0x0d3b,\n 0x0d3c, 0x0d4d, 0x0dca, 0x0e3a, 0x0eba, 0x0f84, 0x1039, 0x103a, 0x1714,\n 0x1734, 0x17d2, 0x1a60, 0x1b44, 0x1baa, 0x1bab, 0x1bf2, 0x1bf3, 0x2d7f,\n 0xa806, 0xa82c, 0xa8c4, 0xa953, 0xa9c0, 0xaaf6, 0xabed,\n // 91\n // https://www.compart.com/fr/unicode/combining/91\n 0x0c56,\n // 129\n // https://www.compart.com/fr/unicode/combining/129\n 0x0f71,\n // 130\n // https://www.compart.com/fr/unicode/combining/130\n 0x0f72, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f80,\n // 132\n // https://www.compart.com/fr/unicode/combining/132\n 0x0f74,\n]);\nconst DIACRITICS_EXCEPTION_STR = [...DIACRITICS_EXCEPTION.values()]\n .map(x => String.fromCharCode(x))\n .join(\"\");\n\nconst DIACRITICS_REG_EXP = /\\p{M}+/gu;\nconst SPECIAL_CHARS_REG_EXP =\n /([.*+?^${}()|[\\]\\\\])|(\\p{P})|(\\s+)|(\\p{M})|(\\p{L})/gu;\nconst NOT_DIACRITIC_FROM_END_REG_EXP = /([^\\p{M}])\\p{M}*$/u;\nconst NOT_DIACRITIC_FROM_START_REG_EXP = /^\\p{M}*([^\\p{M}])/u;\n\nlet normalizationRegex = null;\nfunction normalize(text) {\n // The diacritics in the text or in the query can be composed or not.\n // So we use a decomposed text using NFD (and the same for the query)\n // in order to be sure that diacritics are in the same order.\n\n if (!normalizationRegex) {\n // Compile the regular expression for text normalization once.\n const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(\"\");\n normalizationRegex = new RegExp(\n `([${replace}])|(\\\\p{M}+(?:-\\\\n)?)|(\\\\S-\\\\n)|(\\\\n)`,\n \"gum\"\n );\n }\n\n // The goal of this function is to normalize the string and\n // be able to get from an index in the new string the\n // corresponding index in the old string.\n // For example if we have: abCd12ef456gh where C is replaced by ccc\n // and numbers replaced by nothing (it's the case for diacritics), then\n // we'll obtain the normalized string: abcccdefgh.\n // So here the reverse map is: [0,1,2,2,2,3,6,7,11,12].\n\n // The goal is to obtain the array: [[0, 0], [3, -1], [4, -2],\n // [6, 0], [8, 3]].\n // which can be used like this:\n // - let say that i is the index in new string and j the index\n // the old string.\n // - if i is in [0; 3[ then j = i + 0\n // - if i is in [3; 4[ then j = i - 1\n // - if i is in [4; 6[ then j = i - 2\n // ...\n // Thanks to a binary search it's easy to know where is i and what's the\n // shift.\n // Let say that the last entry in the array is [x, s] and we have a\n // substitution at index y (old string) which will replace o chars by n chars.\n // Firstly, if o === n, then no need to add a new entry: the shift is\n // the same.\n // Secondly, if o < n, then we push the n - o elements:\n // [y - (s - 1), s - 1], [y - (s - 2), s - 2], ...\n // Thirdly, if o > n, then we push the element: [y - (s - n), o + s - n]\n\n // Collect diacritics length and positions.\n const rawDiacriticsPositions = [];\n let m;\n while ((m = DIACRITICS_REG_EXP.exec(text)) !== null) {\n rawDiacriticsPositions.push([m[0].length, m.index]);\n }\n\n let normalized = text.normalize(\"NFD\");\n const positions = [[0, 0]];\n let k = 0;\n let shift = 0;\n let shiftOrigin = 0;\n let eol = 0;\n let hasDiacritics = false;\n\n normalized = normalized.replace(\n normalizationRegex,\n (match, p1, p2, p3, p4, i) => {\n i -= shiftOrigin;\n if (p1) {\n // Maybe fractions or quotations mark...\n const replacement = CHARACTERS_TO_NORMALIZE[match];\n const jj = replacement.length;\n for (let j = 1; j < jj; j++) {\n positions.push([i - shift + j, shift - j]);\n }\n shift -= jj - 1;\n return replacement;\n }\n\n if (p2) {\n const hasTrailingDashEOL = p2.endsWith(\"\\n\");\n const len = hasTrailingDashEOL ? p2.length - 2 : p2.length;\n\n // Diacritics.\n hasDiacritics = true;\n let jj = len;\n if (i + eol === rawDiacriticsPositions[k]?.[1]) {\n jj -= rawDiacriticsPositions[k][0];\n ++k;\n }\n\n for (let j = 1; j < jj + 1; j++) {\n // i is the position of the first diacritic\n // so (i - 1) is the position for the letter before.\n positions.push([i - 1 - shift + j, shift - j]);\n }\n shift -= jj;\n shiftOrigin += jj;\n\n if (hasTrailingDashEOL) {\n // Diacritics are followed by a -\\n.\n // See comments in `if (p3)` block.\n i += len - 1;\n positions.push([i - shift + 1, 1 + shift]);\n shift += 1;\n shiftOrigin += 1;\n eol += 1;\n return p2.slice(0, len);\n }\n\n return p2;\n }\n\n if (p3) {\n // \"X-\\n\" is removed because an hyphen at the end of a line\n // with not a space before is likely here to mark a break\n // in a word.\n // The \\n isn't in the original text so here y = i, n = 1 and o = 2.\n positions.push([i - shift + 1, 1 + shift]);\n shift += 1;\n shiftOrigin += 1;\n eol += 1;\n return p3.charAt(0);\n }\n\n // p4\n // eol is replaced by space: \"foo\\nbar\" is likely equivalent to\n // \"foo bar\".\n positions.push([i - shift + 1, shift - 1]);\n shift -= 1;\n shiftOrigin += 1;\n eol += 1;\n return \" \";\n }\n );\n\n positions.push([normalized.length, shift]);\n\n return [normalized, positions, hasDiacritics];\n}\n\n// Determine the original, non-normalized, match index such that highlighting of\n// search results is correct in the `textLayer` for strings containing e.g. \"½\"\n// characters; essentially \"inverting\" the result of the `normalize` function.\nfunction getOriginalIndex(diffs, pos, len) {\n if (!diffs) {\n return [pos, len];\n }\n\n const start = pos;\n const end = pos + len;\n let i = binarySearchFirstItem(diffs, x => x[0] >= start);\n if (diffs[i][0] > start) {\n --i;\n }\n\n let j = binarySearchFirstItem(diffs, x => x[0] >= end, i);\n if (diffs[j][0] > end) {\n --j;\n }\n\n return [start + diffs[i][1], len + diffs[j][1] - diffs[i][1]];\n}\n\n/**\n * @typedef {Object} PDFFindControllerOptions\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {EventBus} eventBus - The application event bus.\n */\n\n/**\n * Provides search functionality to find a given string in a PDF document.\n */\nclass PDFFindController {\n /**\n * @param {PDFFindControllerOptions} options\n */\n constructor({ linkService, eventBus }) {\n this._linkService = linkService;\n this._eventBus = eventBus;\n\n this._reset();\n eventBus._on(\"find\", this._onFind.bind(this));\n eventBus._on(\"findbarclose\", this._onFindBarClose.bind(this));\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n this.executeCommand = (cmd, state) => {\n console.error(\n \"Deprecated method `PDFFindController.executeCommand` called, \" +\n 'please dispatch a \"find\"-event using the EventBus instead.'\n );\n\n const eventState = Object.assign(Object.create(null), state, {\n type: cmd.substring(\"find\".length),\n });\n this._onFind(eventState);\n };\n }\n }\n\n get highlightMatches() {\n return this._highlightMatches;\n }\n\n get pageMatches() {\n return this._pageMatches;\n }\n\n get pageMatchesLength() {\n return this._pageMatchesLength;\n }\n\n get selected() {\n return this._selected;\n }\n\n get state() {\n return this._state;\n }\n\n /**\n * Set a reference to the PDF document in order to search it.\n * Note that searching is not possible if this method is not called.\n *\n * @param {PDFDocumentProxy} pdfDocument - The PDF document to search.\n */\n setDocument(pdfDocument) {\n if (this._pdfDocument) {\n this._reset();\n }\n if (!pdfDocument) {\n return;\n }\n this._pdfDocument = pdfDocument;\n this._firstPageCapability.resolve();\n }\n\n /**\n * @private\n */\n _onFind(state) {\n if (!state) {\n return;\n }\n const pdfDocument = this._pdfDocument;\n const { type } = state;\n\n if (this._state === null || this._shouldDirtyMatch(state)) {\n this._dirtyMatch = true;\n }\n this._state = state;\n if (type !== \"highlightallchange\") {\n this._updateUIState(FindState.PENDING);\n }\n\n this._firstPageCapability.promise.then(() => {\n // If the document was closed before searching began, or if the search\n // operation was relevant for a previously opened document, do nothing.\n if (\n !this._pdfDocument ||\n (pdfDocument && this._pdfDocument !== pdfDocument)\n ) {\n return;\n }\n this._extractText();\n\n const findbarClosed = !this._highlightMatches;\n const pendingTimeout = !!this._findTimeout;\n\n if (this._findTimeout) {\n clearTimeout(this._findTimeout);\n this._findTimeout = null;\n }\n if (!type) {\n // Trigger the find action with a small delay to avoid starting the\n // search when the user is still typing (saving resources).\n this._findTimeout = setTimeout(() => {\n this._nextMatch();\n this._findTimeout = null;\n }, FIND_TIMEOUT);\n } else if (this._dirtyMatch) {\n // Immediately trigger searching for non-'find' operations, when the\n // current state needs to be reset and matches re-calculated.\n this._nextMatch();\n } else if (type === \"again\") {\n this._nextMatch();\n\n // When the findbar was previously closed, and `highlightAll` is set,\n // ensure that the matches on all active pages are highlighted again.\n if (findbarClosed && this._state.highlightAll) {\n this._updateAllPages();\n }\n } else if (type === \"highlightallchange\") {\n // If there was a pending search operation, synchronously trigger a new\n // search *first* to ensure that the correct matches are highlighted.\n if (pendingTimeout) {\n this._nextMatch();\n } else {\n this._highlightMatches = true;\n }\n this._updateAllPages(); // Update the highlighting on all active pages.\n } else {\n this._nextMatch();\n }\n });\n }\n\n scrollMatchIntoView({\n element = null,\n selectedLeft = 0,\n pageIndex = -1,\n matchIndex = -1,\n }) {\n if (!this._scrollMatches || !element) {\n return;\n } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) {\n return;\n } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) {\n return;\n }\n this._scrollMatches = false; // Ensure that scrolling only happens once.\n\n const spot = {\n top: MATCH_SCROLL_OFFSET_TOP,\n left: selectedLeft + MATCH_SCROLL_OFFSET_LEFT,\n };\n scrollIntoView(element, spot, /* scrollMatches = */ true);\n }\n\n _reset() {\n this._highlightMatches = false;\n this._scrollMatches = false;\n this._pdfDocument = null;\n this._pageMatches = [];\n this._pageMatchesLength = [];\n this._state = null;\n // Currently selected match.\n this._selected = {\n pageIdx: -1,\n matchIdx: -1,\n };\n // Where the find algorithm currently is in the document.\n this._offset = {\n pageIdx: null,\n matchIdx: null,\n wrapped: false,\n };\n this._extractTextPromises = [];\n this._pageContents = []; // Stores the normalized text for each page.\n this._pageDiffs = [];\n this._hasDiacritics = [];\n this._matchesCountTotal = 0;\n this._pagesToSearch = null;\n this._pendingFindMatches = new Set();\n this._resumePageIdx = null;\n this._dirtyMatch = false;\n clearTimeout(this._findTimeout);\n this._findTimeout = null;\n\n this._firstPageCapability = createPromiseCapability();\n }\n\n /**\n * @type {string} The (current) normalized search query.\n */\n get _query() {\n if (this._state.query !== this._rawQuery) {\n this._rawQuery = this._state.query;\n [this._normalizedQuery] = normalize(this._state.query);\n }\n return this._normalizedQuery;\n }\n\n _shouldDirtyMatch(state) {\n // When the search query changes, regardless of the actual search command\n // used, always re-calculate matches to avoid errors (fixes bug 1030622).\n if (state.query !== this._state.query) {\n return true;\n }\n switch (state.type) {\n case \"again\":\n const pageNumber = this._selected.pageIdx + 1;\n const linkService = this._linkService;\n // Only treat a 'findagain' event as a new search operation when it's\n // *absolutely* certain that the currently selected match is no longer\n // visible, e.g. as a result of the user scrolling in the document.\n //\n // NOTE: If only a simple `this._linkService.page` check was used here,\n // there's a risk that consecutive 'findagain' operations could \"skip\"\n // over matches at the top/bottom of pages thus making them completely\n // inaccessible when there's multiple pages visible in the viewer.\n if (\n pageNumber >= 1 &&\n pageNumber <= linkService.pagesCount &&\n pageNumber !== linkService.page &&\n !linkService.isPageVisible(pageNumber)\n ) {\n return true;\n }\n return false;\n case \"highlightallchange\":\n return false;\n }\n return true;\n }\n\n /**\n * Determine if the search query constitutes a \"whole word\", by comparing the\n * first/last character type with the preceding/following character type.\n */\n _isEntireWord(content, startIdx, length) {\n let match = content\n .slice(0, startIdx)\n .match(NOT_DIACRITIC_FROM_END_REG_EXP);\n if (match) {\n const first = content.charCodeAt(startIdx);\n const limit = match[1].charCodeAt(0);\n if (getCharacterType(first) === getCharacterType(limit)) {\n return false;\n }\n }\n\n match = content\n .slice(startIdx + length)\n .match(NOT_DIACRITIC_FROM_START_REG_EXP);\n if (match) {\n const last = content.charCodeAt(startIdx + length - 1);\n const limit = match[1].charCodeAt(0);\n if (getCharacterType(last) === getCharacterType(limit)) {\n return false;\n }\n }\n\n return true;\n }\n\n _calculateRegExpMatch(query, entireWord, pageIndex, pageContent) {\n const matches = [],\n matchesLength = [];\n\n const diffs = this._pageDiffs[pageIndex];\n let match;\n while ((match = query.exec(pageContent)) !== null) {\n if (\n entireWord &&\n !this._isEntireWord(pageContent, match.index, match[0].length)\n ) {\n continue;\n }\n\n const [matchPos, matchLen] = getOriginalIndex(\n diffs,\n match.index,\n match[0].length\n );\n\n if (matchLen) {\n matches.push(matchPos);\n matchesLength.push(matchLen);\n }\n }\n this._pageMatches[pageIndex] = matches;\n this._pageMatchesLength[pageIndex] = matchesLength;\n }\n\n _convertToRegExpString(query, hasDiacritics) {\n const { matchDiacritics } = this._state;\n let isUnicode = false;\n query = query.replace(\n SPECIAL_CHARS_REG_EXP,\n (\n match,\n p1 /* to escape */,\n p2 /* punctuation */,\n p3 /* whitespaces */,\n p4 /* diacritics */,\n p5 /* letters */\n ) => {\n // We don't need to use a \\s for whitespaces since all the different\n // kind of whitespaces are replaced by a single \" \".\n\n if (p1) {\n // Escape characters like *+?... to not interfer with regexp syntax.\n return `[ ]*\\\\${p1}[ ]*`;\n }\n if (p2) {\n // Allow whitespaces around punctuation signs.\n return `[ ]*${p2}[ ]*`;\n }\n if (p3) {\n // Replace spaces by \\s+ to be sure to match any spaces.\n return \"[ ]+\";\n }\n if (matchDiacritics) {\n return p4 || p5;\n }\n\n if (p4) {\n // Diacritics are removed with few exceptions.\n return DIACRITICS_EXCEPTION.has(p4.charCodeAt(0)) ? p4 : \"\";\n }\n\n // A letter has been matched and it can be followed by any diacritics\n // in normalized text.\n if (hasDiacritics) {\n isUnicode = true;\n return `${p5}\\\\p{M}*`;\n }\n return p5;\n }\n );\n\n const trailingSpaces = \"[ ]*\";\n if (query.endsWith(trailingSpaces)) {\n // The [ ]* has been added in order to help to match \"foo . bar\" but\n // it doesn't make sense to match some whitespaces after the dot\n // when it's the last character.\n query = query.slice(0, query.length - trailingSpaces.length);\n }\n\n if (matchDiacritics) {\n // aX must not match aXY.\n if (hasDiacritics) {\n isUnicode = true;\n query = `${query}(?=[${DIACRITICS_EXCEPTION_STR}]|[^\\\\p{M}]|$)`;\n }\n }\n\n return [isUnicode, query];\n }\n\n _calculateMatch(pageIndex) {\n let query = this._query;\n if (query.length === 0) {\n // Do nothing: the matches should be wiped out already.\n return;\n }\n\n const { caseSensitive, entireWord, phraseSearch } = this._state;\n const pageContent = this._pageContents[pageIndex];\n const hasDiacritics = this._hasDiacritics[pageIndex];\n\n let isUnicode = false;\n if (phraseSearch) {\n [isUnicode, query] = this._convertToRegExpString(query, hasDiacritics);\n } else {\n // Words are sorted in reverse order to be sure that \"foobar\" is matched\n // before \"foo\" in case the query is \"foobar foo\".\n const match = query.match(/\\S+/g);\n if (match) {\n query = match\n .sort()\n .reverse()\n .map(q => {\n const [isUnicodePart, queryPart] = this._convertToRegExpString(\n q,\n hasDiacritics\n );\n isUnicode ||= isUnicodePart;\n return `(${queryPart})`;\n })\n .join(\"|\");\n }\n }\n\n const flags = `g${isUnicode ? \"u\" : \"\"}${caseSensitive ? \"\" : \"i\"}`;\n query = new RegExp(query, flags);\n\n this._calculateRegExpMatch(query, entireWord, pageIndex, pageContent);\n\n // When `highlightAll` is set, ensure that the matches on previously\n // rendered (and still active) pages are correctly highlighted.\n if (this._state.highlightAll) {\n this._updatePage(pageIndex);\n }\n if (this._resumePageIdx === pageIndex) {\n this._resumePageIdx = null;\n this._nextPageMatch();\n }\n\n // Update the match count.\n const pageMatchesCount = this._pageMatches[pageIndex].length;\n if (pageMatchesCount > 0) {\n this._matchesCountTotal += pageMatchesCount;\n this._updateUIResultsCount();\n }\n }\n\n _extractText() {\n // Perform text extraction once if this method is called multiple times.\n if (this._extractTextPromises.length > 0) {\n return;\n }\n\n let promise = Promise.resolve();\n for (let i = 0, ii = this._linkService.pagesCount; i < ii; i++) {\n const extractTextCapability = createPromiseCapability();\n this._extractTextPromises[i] = extractTextCapability.promise;\n\n promise = promise.then(() => {\n return this._pdfDocument\n .getPage(i + 1)\n .then(pdfPage => {\n return pdfPage.getTextContent();\n })\n .then(\n textContent => {\n const textItems = textContent.items;\n const strBuf = [];\n\n for (let j = 0, jj = textItems.length; j < jj; j++) {\n strBuf.push(textItems[j].str);\n if (textItems[j].hasEOL) {\n strBuf.push(\"\\n\");\n }\n }\n\n // Store the normalized page content (text items) as one string.\n [\n this._pageContents[i],\n this._pageDiffs[i],\n this._hasDiacritics[i],\n ] = normalize(strBuf.join(\"\"));\n extractTextCapability.resolve(i);\n },\n reason => {\n console.error(\n `Unable to get text content for page ${i + 1}`,\n reason\n );\n // Page error -- assuming no text content.\n this._pageContents[i] = \"\";\n this._pageDiffs[i] = null;\n this._hasDiacritics[i] = false;\n extractTextCapability.resolve(i);\n }\n );\n });\n }\n }\n\n _updatePage(index) {\n if (this._scrollMatches && this._selected.pageIdx === index) {\n // If the page is selected, scroll the page into view, which triggers\n // rendering the page, which adds the text layer. Once the text layer\n // is built, it will attempt to scroll the selected match into view.\n this._linkService.page = index + 1;\n }\n\n this._eventBus.dispatch(\"updatetextlayermatches\", {\n source: this,\n pageIndex: index,\n });\n }\n\n _updateAllPages() {\n this._eventBus.dispatch(\"updatetextlayermatches\", {\n source: this,\n pageIndex: -1,\n });\n }\n\n _nextMatch() {\n const previous = this._state.findPrevious;\n const currentPageIndex = this._linkService.page - 1;\n const numPages = this._linkService.pagesCount;\n\n this._highlightMatches = true;\n\n if (this._dirtyMatch) {\n // Need to recalculate the matches, reset everything.\n this._dirtyMatch = false;\n this._selected.pageIdx = this._selected.matchIdx = -1;\n this._offset.pageIdx = currentPageIndex;\n this._offset.matchIdx = null;\n this._offset.wrapped = false;\n this._resumePageIdx = null;\n this._pageMatches.length = 0;\n this._pageMatchesLength.length = 0;\n this._matchesCountTotal = 0;\n\n this._updateAllPages(); // Wipe out any previously highlighted matches.\n\n for (let i = 0; i < numPages; i++) {\n // Start finding the matches as soon as the text is extracted.\n if (this._pendingFindMatches.has(i)) {\n continue;\n }\n this._pendingFindMatches.add(i);\n this._extractTextPromises[i].then(pageIdx => {\n this._pendingFindMatches.delete(pageIdx);\n this._calculateMatch(pageIdx);\n });\n }\n }\n\n // If there's no query there's no point in searching.\n if (this._query === \"\") {\n this._updateUIState(FindState.FOUND);\n return;\n }\n // If we're waiting on a page, we return since we can't do anything else.\n if (this._resumePageIdx) {\n return;\n }\n\n const offset = this._offset;\n // Keep track of how many pages we should maximally iterate through.\n this._pagesToSearch = numPages;\n // If there's already a `matchIdx` that means we are iterating through a\n // page's matches.\n if (offset.matchIdx !== null) {\n const numPageMatches = this._pageMatches[offset.pageIdx].length;\n if (\n (!previous && offset.matchIdx + 1 < numPageMatches) ||\n (previous && offset.matchIdx > 0)\n ) {\n // The simple case; we just have advance the matchIdx to select\n // the next match on the page.\n offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;\n this._updateMatch(/* found = */ true);\n return;\n }\n // We went beyond the current page's matches, so we advance to\n // the next page.\n this._advanceOffsetPage(previous);\n }\n // Start searching through the page.\n this._nextPageMatch();\n }\n\n _matchesReady(matches) {\n const offset = this._offset;\n const numMatches = matches.length;\n const previous = this._state.findPrevious;\n\n if (numMatches) {\n // There were matches for the page, so initialize `matchIdx`.\n offset.matchIdx = previous ? numMatches - 1 : 0;\n this._updateMatch(/* found = */ true);\n return true;\n }\n // No matches, so attempt to search the next page.\n this._advanceOffsetPage(previous);\n if (offset.wrapped) {\n offset.matchIdx = null;\n if (this._pagesToSearch < 0) {\n // No point in wrapping again, there were no matches.\n this._updateMatch(/* found = */ false);\n // While matches were not found, searching for a page\n // with matches should nevertheless halt.\n return true;\n }\n }\n // Matches were not found (and searching is not done).\n return false;\n }\n\n _nextPageMatch() {\n if (this._resumePageIdx !== null) {\n console.error(\"There can only be one pending page.\");\n }\n\n let matches = null;\n do {\n const pageIdx = this._offset.pageIdx;\n matches = this._pageMatches[pageIdx];\n if (!matches) {\n // The matches don't exist yet for processing by `_matchesReady`,\n // so set a resume point for when they do exist.\n this._resumePageIdx = pageIdx;\n break;\n }\n } while (!this._matchesReady(matches));\n }\n\n _advanceOffsetPage(previous) {\n const offset = this._offset;\n const numPages = this._linkService.pagesCount;\n offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;\n offset.matchIdx = null;\n\n this._pagesToSearch--;\n\n if (offset.pageIdx >= numPages || offset.pageIdx < 0) {\n offset.pageIdx = previous ? numPages - 1 : 0;\n offset.wrapped = true;\n }\n }\n\n _updateMatch(found = false) {\n let state = FindState.NOT_FOUND;\n const wrapped = this._offset.wrapped;\n this._offset.wrapped = false;\n\n if (found) {\n const previousPage = this._selected.pageIdx;\n this._selected.pageIdx = this._offset.pageIdx;\n this._selected.matchIdx = this._offset.matchIdx;\n state = wrapped ? FindState.WRAPPED : FindState.FOUND;\n\n // Update the currently selected page to wipe out any selected matches.\n if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {\n this._updatePage(previousPage);\n }\n }\n\n this._updateUIState(state, this._state.findPrevious);\n if (this._selected.pageIdx !== -1) {\n // Ensure that the match will be scrolled into view.\n this._scrollMatches = true;\n\n this._updatePage(this._selected.pageIdx);\n }\n }\n\n _onFindBarClose(evt) {\n const pdfDocument = this._pdfDocument;\n // Since searching is asynchronous, ensure that the removal of highlighted\n // matches (from the UI) is async too such that the 'updatetextlayermatches'\n // events will always be dispatched in the expected order.\n this._firstPageCapability.promise.then(() => {\n // Only update the UI if the document is open, and is the current one.\n if (\n !this._pdfDocument ||\n (pdfDocument && this._pdfDocument !== pdfDocument)\n ) {\n return;\n }\n // Ensure that a pending, not yet started, search operation is aborted.\n if (this._findTimeout) {\n clearTimeout(this._findTimeout);\n this._findTimeout = null;\n }\n // Abort any long running searches, to avoid a match being scrolled into\n // view *after* the findbar has been closed. In this case `this._offset`\n // will most likely differ from `this._selected`, hence we also ensure\n // that any new search operation will always start with a clean slate.\n if (this._resumePageIdx) {\n this._resumePageIdx = null;\n this._dirtyMatch = true;\n }\n // Avoid the UI being in a pending state when the findbar is re-opened.\n this._updateUIState(FindState.FOUND);\n\n this._highlightMatches = false;\n this._updateAllPages(); // Wipe out any previously highlighted matches.\n });\n }\n\n _requestMatchesCount() {\n const { pageIdx, matchIdx } = this._selected;\n let current = 0,\n total = this._matchesCountTotal;\n if (matchIdx !== -1) {\n for (let i = 0; i < pageIdx; i++) {\n current += this._pageMatches[i]?.length || 0;\n }\n current += matchIdx + 1;\n }\n // When searching starts, this method may be called before the `pageMatches`\n // have been counted (in `_calculateMatch`). Ensure that the UI won't show\n // temporarily broken state when the active find result doesn't make sense.\n if (current < 1 || current > total) {\n current = total = 0;\n }\n return { current, total };\n }\n\n _updateUIResultsCount() {\n this._eventBus.dispatch(\"updatefindmatchescount\", {\n source: this,\n matchesCount: this._requestMatchesCount(),\n });\n }\n\n _updateUIState(state, previous = false) {\n this._eventBus.dispatch(\"updatefindcontrolstate\", {\n source: this,\n state,\n previous,\n matchesCount: this._requestMatchesCount(),\n rawQuery: this._state?.query ?? null,\n });\n }\n}\n\nexport { FindState, PDFFindController };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst CharacterType = {\n SPACE: 0,\n ALPHA_LETTER: 1,\n PUNCT: 2,\n HAN_LETTER: 3,\n KATAKANA_LETTER: 4,\n HIRAGANA_LETTER: 5,\n HALFWIDTH_KATAKANA_LETTER: 6,\n THAI_LETTER: 7,\n};\n\nfunction isAlphabeticalScript(charCode) {\n return charCode < 0x2e80;\n}\n\nfunction isAscii(charCode) {\n return (charCode & 0xff80) === 0;\n}\n\nfunction isAsciiAlpha(charCode) {\n return (\n (charCode >= /* a = */ 0x61 && charCode <= /* z = */ 0x7a) ||\n (charCode >= /* A = */ 0x41 && charCode <= /* Z = */ 0x5a)\n );\n}\n\nfunction isAsciiDigit(charCode) {\n return charCode >= /* 0 = */ 0x30 && charCode <= /* 9 = */ 0x39;\n}\n\nfunction isAsciiSpace(charCode) {\n return (\n charCode === /* SPACE = */ 0x20 ||\n charCode === /* TAB = */ 0x09 ||\n charCode === /* CR = */ 0x0d ||\n charCode === /* LF = */ 0x0a\n );\n}\n\nfunction isHan(charCode) {\n return (\n (charCode >= 0x3400 && charCode <= 0x9fff) ||\n (charCode >= 0xf900 && charCode <= 0xfaff)\n );\n}\n\nfunction isKatakana(charCode) {\n return charCode >= 0x30a0 && charCode <= 0x30ff;\n}\n\nfunction isHiragana(charCode) {\n return charCode >= 0x3040 && charCode <= 0x309f;\n}\n\nfunction isHalfwidthKatakana(charCode) {\n return charCode >= 0xff60 && charCode <= 0xff9f;\n}\n\nfunction isThai(charCode) {\n return (charCode & 0xff80) === 0x0e00;\n}\n\n/**\n * This function is based on the word-break detection implemented in:\n * https://hg.mozilla.org/mozilla-central/file/tip/intl/lwbrk/WordBreaker.cpp\n */\nfunction getCharacterType(charCode) {\n if (isAlphabeticalScript(charCode)) {\n if (isAscii(charCode)) {\n if (isAsciiSpace(charCode)) {\n return CharacterType.SPACE;\n } else if (\n isAsciiAlpha(charCode) ||\n isAsciiDigit(charCode) ||\n charCode === /* UNDERSCORE = */ 0x5f\n ) {\n return CharacterType.ALPHA_LETTER;\n }\n return CharacterType.PUNCT;\n } else if (isThai(charCode)) {\n return CharacterType.THAI_LETTER;\n } else if (charCode === /* NBSP = */ 0xa0) {\n return CharacterType.SPACE;\n }\n return CharacterType.ALPHA_LETTER;\n }\n\n if (isHan(charCode)) {\n return CharacterType.HAN_LETTER;\n } else if (isKatakana(charCode)) {\n return CharacterType.KATAKANA_LETTER;\n } else if (isHiragana(charCode)) {\n return CharacterType.HIRAGANA_LETTER;\n } else if (isHalfwidthKatakana(charCode)) {\n return CharacterType.HALFWIDTH_KATAKANA_LETTER;\n }\n return CharacterType.ALPHA_LETTER;\n}\n\nexport { CharacterType, getCharacterType };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n isValidRotation,\n parseQueryString,\n PresentationModeState,\n} from \"./ui_utils.js\";\nimport { waitOnEventOrTimeout } from \"./event_utils.js\";\n\n// Heuristic value used when force-resetting `this._blockHashChange`.\nconst HASH_CHANGE_TIMEOUT = 1000; // milliseconds\n// Heuristic value used when adding the current position to the browser history.\nconst POSITION_UPDATED_THRESHOLD = 50;\n// Heuristic value used when adding a temporary position to the browser history.\nconst UPDATE_VIEWAREA_TIMEOUT = 1000; // milliseconds\n\n/**\n * @typedef {Object} PDFHistoryOptions\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {EventBus} eventBus - The application event bus.\n */\n\n/**\n * @typedef {Object} InitializeParameters\n * @property {string} fingerprint - The PDF document's unique fingerprint.\n * @property {boolean} [resetHistory] - Reset the browsing history.\n * @property {boolean} [updateUrl] - Attempt to update the document URL, with\n * the current hash, when pushing/replacing browser history entries.\n */\n\n/**\n * @typedef {Object} PushParameters\n * @property {string} [namedDest] - The named destination. If absent, a\n * stringified version of `explicitDest` is used.\n * @property {Array} explicitDest - The explicit destination array.\n * @property {number} pageNumber - The page to which the destination points.\n */\n\nfunction getCurrentHash() {\n return document.location.hash;\n}\n\nclass PDFHistory {\n /**\n * @param {PDFHistoryOptions} options\n */\n constructor({ linkService, eventBus }) {\n this.linkService = linkService;\n this.eventBus = eventBus;\n\n this._initialized = false;\n this._fingerprint = \"\";\n this.reset();\n\n this._boundEvents = null;\n this._isViewerInPresentationMode = false;\n // Ensure that we don't miss either a 'presentationmodechanged' or a\n // 'pagesinit' event, by registering the listeners immediately.\n this.eventBus._on(\"presentationmodechanged\", evt => {\n this._isViewerInPresentationMode =\n evt.state !== PresentationModeState.NORMAL;\n });\n this.eventBus._on(\"pagesinit\", () => {\n this._isPagesLoaded = false;\n\n this.eventBus._on(\n \"pagesloaded\",\n evt => {\n this._isPagesLoaded = !!evt.pagesCount;\n },\n { once: true }\n );\n });\n }\n\n /**\n * Initialize the history for the PDF document, using either the current\n * browser history entry or the document hash, whichever is present.\n * @param {InitializeParameters} params\n */\n initialize({ fingerprint, resetHistory = false, updateUrl = false }) {\n if (!fingerprint || typeof fingerprint !== \"string\") {\n console.error(\n 'PDFHistory.initialize: The \"fingerprint\" must be a non-empty string.'\n );\n return;\n }\n // Ensure that any old state is always reset upon initialization.\n if (this._initialized) {\n this.reset();\n }\n const reInitialized =\n this._fingerprint !== \"\" && this._fingerprint !== fingerprint;\n this._fingerprint = fingerprint;\n this._updateUrl = updateUrl === true;\n\n this._initialized = true;\n this._bindEvents();\n const state = window.history.state;\n\n this._popStateInProgress = false;\n this._blockHashChange = 0;\n this._currentHash = getCurrentHash();\n this._numPositionUpdates = 0;\n\n this._uid = this._maxUid = 0;\n this._destination = null;\n this._position = null;\n\n if (!this._isValidState(state, /* checkReload = */ true) || resetHistory) {\n const { hash, page, rotation } = this._parseCurrentHash(\n /* checkNameddest = */ true\n );\n\n if (!hash || reInitialized || resetHistory) {\n // Ensure that the browser history is reset on PDF document load.\n this._pushOrReplaceState(null, /* forceReplace = */ true);\n return;\n }\n // Ensure that the browser history is initialized correctly when\n // the document hash is present on PDF document load.\n this._pushOrReplaceState(\n { hash, page, rotation },\n /* forceReplace = */ true\n );\n return;\n }\n\n // The browser history contains a valid entry, ensure that the history is\n // initialized correctly on PDF document load.\n const destination = state.destination;\n this._updateInternalState(\n destination,\n state.uid,\n /* removeTemporary = */ true\n );\n\n if (destination.rotation !== undefined) {\n this._initialRotation = destination.rotation;\n }\n if (destination.dest) {\n this._initialBookmark = JSON.stringify(destination.dest);\n\n // If the history is updated, e.g. through the user changing the hash,\n // before the initial destination has become visible, then we do *not*\n // want to potentially add `this._position` to the browser history.\n this._destination.page = null;\n } else if (destination.hash) {\n this._initialBookmark = destination.hash;\n } else if (destination.page) {\n // Fallback case; shouldn't be necessary, but better safe than sorry.\n this._initialBookmark = `page=${destination.page}`;\n }\n }\n\n /**\n * Reset the current `PDFHistory` instance, and consequently prevent any\n * further updates and/or navigation of the browser history.\n */\n reset() {\n if (this._initialized) {\n this._pageHide(); // Simulate a 'pagehide' event when resetting.\n\n this._initialized = false;\n this._unbindEvents();\n }\n if (this._updateViewareaTimeout) {\n clearTimeout(this._updateViewareaTimeout);\n this._updateViewareaTimeout = null;\n }\n this._initialBookmark = null;\n this._initialRotation = null;\n }\n\n /**\n * Push an internal destination to the browser history.\n * @param {PushParameters}\n */\n push({ namedDest = null, explicitDest, pageNumber }) {\n if (!this._initialized) {\n return;\n }\n if (namedDest && typeof namedDest !== \"string\") {\n console.error(\n \"PDFHistory.push: \" +\n `\"${namedDest}\" is not a valid namedDest parameter.`\n );\n return;\n } else if (!Array.isArray(explicitDest)) {\n console.error(\n \"PDFHistory.push: \" +\n `\"${explicitDest}\" is not a valid explicitDest parameter.`\n );\n return;\n } else if (!this._isValidPage(pageNumber)) {\n // Allow an unset `pageNumber` if and only if the history is still empty;\n // please refer to the `this._destination.page = null;` comment above.\n if (pageNumber !== null || this._destination) {\n console.error(\n \"PDFHistory.push: \" +\n `\"${pageNumber}\" is not a valid pageNumber parameter.`\n );\n return;\n }\n }\n\n const hash = namedDest || JSON.stringify(explicitDest);\n if (!hash) {\n // The hash *should* never be undefined, but if that were to occur,\n // avoid any possible issues by not updating the browser history.\n return;\n }\n\n let forceReplace = false;\n if (\n this._destination &&\n (isDestHashesEqual(this._destination.hash, hash) ||\n isDestArraysEqual(this._destination.dest, explicitDest))\n ) {\n // When the new destination is identical to `this._destination`, and\n // its `page` is undefined, replace the current browser history entry.\n // NOTE: This can only occur if `this._destination` was set either:\n // - through the document hash being specified on load.\n // - through the user changing the hash of the document.\n if (this._destination.page) {\n return;\n }\n forceReplace = true;\n }\n if (this._popStateInProgress && !forceReplace) {\n return;\n }\n\n this._pushOrReplaceState(\n {\n dest: explicitDest,\n hash,\n page: pageNumber,\n rotation: this.linkService.rotation,\n },\n forceReplace\n );\n\n if (!this._popStateInProgress) {\n // Prevent the browser history from updating while the new destination is\n // being scrolled into view, to avoid potentially inconsistent state.\n this._popStateInProgress = true;\n // We defer the resetting of `this._popStateInProgress`, to account for\n // e.g. zooming occurring when the new destination is being navigated to.\n Promise.resolve().then(() => {\n this._popStateInProgress = false;\n });\n }\n }\n\n /**\n * Push a page to the browser history; generally the `push` method should be\n * used instead.\n * @param {number} pageNumber\n */\n pushPage(pageNumber) {\n if (!this._initialized) {\n return;\n }\n if (!this._isValidPage(pageNumber)) {\n console.error(\n `PDFHistory.pushPage: \"${pageNumber}\" is not a valid page number.`\n );\n return;\n }\n\n if (this._destination?.page === pageNumber) {\n // When the new page is identical to the one in `this._destination`, we\n // don't want to add a potential duplicate entry in the browser history.\n return;\n }\n if (this._popStateInProgress) {\n return;\n }\n\n this._pushOrReplaceState({\n // Simulate an internal destination, for `this._tryPushCurrentPosition`:\n dest: null,\n hash: `page=${pageNumber}`,\n page: pageNumber,\n rotation: this.linkService.rotation,\n });\n\n if (!this._popStateInProgress) {\n // Prevent the browser history from updating while the new page is\n // being scrolled into view, to avoid potentially inconsistent state.\n this._popStateInProgress = true;\n // We defer the resetting of `this._popStateInProgress`, to account for\n // e.g. zooming occurring when the new page is being navigated to.\n Promise.resolve().then(() => {\n this._popStateInProgress = false;\n });\n }\n }\n\n /**\n * Push the current position to the browser history.\n */\n pushCurrentPosition() {\n if (!this._initialized || this._popStateInProgress) {\n return;\n }\n this._tryPushCurrentPosition();\n }\n\n /**\n * Go back one step in the browser history.\n * NOTE: Avoids navigating away from the document, useful for \"named actions\".\n */\n back() {\n if (!this._initialized || this._popStateInProgress) {\n return;\n }\n const state = window.history.state;\n if (this._isValidState(state) && state.uid > 0) {\n window.history.back();\n }\n }\n\n /**\n * Go forward one step in the browser history.\n * NOTE: Avoids navigating away from the document, useful for \"named actions\".\n */\n forward() {\n if (!this._initialized || this._popStateInProgress) {\n return;\n }\n const state = window.history.state;\n if (this._isValidState(state) && state.uid < this._maxUid) {\n window.history.forward();\n }\n }\n\n /**\n * @type {boolean} Indicating if the user is currently moving through the\n * browser history, useful e.g. for skipping the next 'hashchange' event.\n */\n get popStateInProgress() {\n return (\n this._initialized &&\n (this._popStateInProgress || this._blockHashChange > 0)\n );\n }\n\n get initialBookmark() {\n return this._initialized ? this._initialBookmark : null;\n }\n\n get initialRotation() {\n return this._initialized ? this._initialRotation : null;\n }\n\n /**\n * @private\n */\n _pushOrReplaceState(destination, forceReplace = false) {\n const shouldReplace = forceReplace || !this._destination;\n const newState = {\n fingerprint: this._fingerprint,\n uid: shouldReplace ? this._uid : this._uid + 1,\n destination,\n };\n\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"CHROME\") &&\n window.history.state?.chromecomState\n ) {\n // history.state.chromecomState is managed by chromecom.js.\n newState.chromecomState = window.history.state.chromecomState;\n }\n this._updateInternalState(destination, newState.uid);\n\n let newUrl;\n if (this._updateUrl && destination?.hash) {\n const baseUrl = document.location.href.split(\"#\")[0];\n // Prevent errors in Firefox.\n if (!baseUrl.startsWith(\"file://\")) {\n newUrl = `${baseUrl}#${destination.hash}`;\n }\n }\n if (shouldReplace) {\n window.history.replaceState(newState, \"\", newUrl);\n } else {\n window.history.pushState(newState, \"\", newUrl);\n }\n\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"CHROME\") &&\n top === window\n ) {\n // eslint-disable-next-line no-undef\n chrome.runtime.sendMessage(\"showPageAction\");\n }\n }\n\n /**\n * @private\n */\n _tryPushCurrentPosition(temporary = false) {\n if (!this._position) {\n return;\n }\n let position = this._position;\n if (temporary) {\n position = Object.assign(Object.create(null), this._position);\n position.temporary = true;\n }\n\n if (!this._destination) {\n this._pushOrReplaceState(position);\n return;\n }\n if (this._destination.temporary) {\n // Always replace a previous *temporary* position.\n this._pushOrReplaceState(position, /* forceReplace = */ true);\n return;\n }\n if (this._destination.hash === position.hash) {\n return; // The current document position has not changed.\n }\n if (\n !this._destination.page &&\n (POSITION_UPDATED_THRESHOLD <= 0 ||\n this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)\n ) {\n // `this._destination` was set through the user changing the hash of\n // the document. Do not add `this._position` to the browser history,\n // to avoid \"flooding\" it with lots of (nearly) identical entries,\n // since we cannot ensure that the document position has changed.\n return;\n }\n\n let forceReplace = false;\n if (\n this._destination.page >= position.first &&\n this._destination.page <= position.page\n ) {\n // When the `page` of `this._destination` is still visible, do not\n // update the browsing history when `this._destination` either:\n // - contains an internal destination, since in this case we\n // cannot ensure that the document position has actually changed.\n // - was set through the user changing the hash of the document.\n if (this._destination.dest !== undefined || !this._destination.first) {\n return;\n }\n // To avoid \"flooding\" the browser history, replace the current entry.\n forceReplace = true;\n }\n this._pushOrReplaceState(position, forceReplace);\n }\n\n /**\n * @private\n */\n _isValidPage(val) {\n return (\n Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount\n );\n }\n\n /**\n * @private\n */\n _isValidState(state, checkReload = false) {\n if (!state) {\n return false;\n }\n if (state.fingerprint !== this._fingerprint) {\n if (checkReload) {\n // Potentially accept the history entry, even if the fingerprints don't\n // match, when the viewer was reloaded (see issue 6847).\n if (\n typeof state.fingerprint !== \"string\" ||\n state.fingerprint.length !== this._fingerprint.length\n ) {\n return false;\n }\n const [perfEntry] = performance.getEntriesByType(\"navigation\");\n if (perfEntry?.type !== \"reload\") {\n return false;\n }\n } else {\n // This should only occur in viewers with support for opening more than\n // one PDF document, e.g. the GENERIC viewer.\n return false;\n }\n }\n if (!Number.isInteger(state.uid) || state.uid < 0) {\n return false;\n }\n if (state.destination === null || typeof state.destination !== \"object\") {\n return false;\n }\n return true;\n }\n\n /**\n * @private\n */\n _updateInternalState(destination, uid, removeTemporary = false) {\n if (this._updateViewareaTimeout) {\n // When updating `this._destination`, make sure that we always wait for\n // the next 'updateviewarea' event before (potentially) attempting to\n // push the current position to the browser history.\n clearTimeout(this._updateViewareaTimeout);\n this._updateViewareaTimeout = null;\n }\n if (removeTemporary && destination?.temporary) {\n // When the `destination` comes from the browser history,\n // we no longer treat it as a *temporary* position.\n delete destination.temporary;\n }\n this._destination = destination;\n this._uid = uid;\n this._maxUid = Math.max(this._maxUid, uid);\n // This should always be reset when `this._destination` is updated.\n this._numPositionUpdates = 0;\n }\n\n /**\n * @private\n */\n _parseCurrentHash(checkNameddest = false) {\n const hash = unescape(getCurrentHash()).substring(1);\n const params = parseQueryString(hash);\n\n const nameddest = params.get(\"nameddest\") || \"\";\n let page = params.get(\"page\") | 0;\n\n if (!this._isValidPage(page) || (checkNameddest && nameddest.length > 0)) {\n page = null;\n }\n return { hash, page, rotation: this.linkService.rotation };\n }\n\n /**\n * @private\n */\n _updateViewarea({ location }) {\n if (this._updateViewareaTimeout) {\n clearTimeout(this._updateViewareaTimeout);\n this._updateViewareaTimeout = null;\n }\n\n this._position = {\n hash: this._isViewerInPresentationMode\n ? `page=${location.pageNumber}`\n : location.pdfOpenParams.substring(1),\n page: this.linkService.page,\n first: location.pageNumber,\n rotation: location.rotation,\n };\n\n if (this._popStateInProgress) {\n return;\n }\n\n if (\n POSITION_UPDATED_THRESHOLD > 0 &&\n this._isPagesLoaded &&\n this._destination &&\n !this._destination.page\n ) {\n // If the current destination was set through the user changing the hash\n // of the document, we will usually not try to push the current position\n // to the browser history; see `this._tryPushCurrentPosition()`.\n //\n // To prevent `this._tryPushCurrentPosition()` from effectively being\n // reduced to a no-op in this case, we will assume that the position\n // *did* in fact change if the 'updateviewarea' event was dispatched\n // more than `POSITION_UPDATED_THRESHOLD` times.\n this._numPositionUpdates++;\n }\n\n if (UPDATE_VIEWAREA_TIMEOUT > 0) {\n // When closing the browser, a 'pagehide' event will be dispatched which\n // *should* allow us to push the current position to the browser history.\n // In practice, it seems that the event is arriving too late in order for\n // the session history to be successfully updated.\n // (For additional details, please refer to the discussion in\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1153393.)\n //\n // To workaround this we attempt to *temporarily* add the current position\n // to the browser history only when the viewer is *idle*,\n // i.e. when scrolling and/or zooming does not occur.\n //\n // PLEASE NOTE: It's absolutely imperative that the browser history is\n // *not* updated too often, since that would render the viewer more or\n // less unusable. Hence the use of a timeout to delay the update until\n // the viewer has been idle for `UPDATE_VIEWAREA_TIMEOUT` milliseconds.\n this._updateViewareaTimeout = setTimeout(() => {\n if (!this._popStateInProgress) {\n this._tryPushCurrentPosition(/* temporary = */ true);\n }\n this._updateViewareaTimeout = null;\n }, UPDATE_VIEWAREA_TIMEOUT);\n }\n }\n\n /**\n * @private\n */\n _popState({ state }) {\n const newHash = getCurrentHash(),\n hashChanged = this._currentHash !== newHash;\n this._currentHash = newHash;\n\n if (\n (typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"CHROME\") &&\n state?.chromecomState &&\n !this._isValidState(state)) ||\n !state\n ) {\n // This case corresponds to the user changing the hash of the document.\n this._uid++;\n\n const { hash, page, rotation } = this._parseCurrentHash();\n this._pushOrReplaceState(\n { hash, page, rotation },\n /* forceReplace = */ true\n );\n return;\n }\n if (!this._isValidState(state)) {\n // This should only occur in viewers with support for opening more than\n // one PDF document, e.g. the GENERIC viewer.\n return;\n }\n\n // Prevent the browser history from updating until the new destination,\n // as stored in the browser history, has been scrolled into view.\n this._popStateInProgress = true;\n\n if (hashChanged) {\n // When the hash changed, implying that the 'popstate' event will be\n // followed by a 'hashchange' event, then we do *not* want to update the\n // browser history when handling the 'hashchange' event (in web/app.js)\n // since that would *overwrite* the new destination navigated to below.\n //\n // To avoid accidentally disabling all future user-initiated hash changes,\n // if there's e.g. another 'hashchange' listener that stops the event\n // propagation, we make sure to always force-reset `this._blockHashChange`\n // after `HASH_CHANGE_TIMEOUT` milliseconds have passed.\n this._blockHashChange++;\n waitOnEventOrTimeout({\n target: window,\n name: \"hashchange\",\n delay: HASH_CHANGE_TIMEOUT,\n }).then(() => {\n this._blockHashChange--;\n });\n }\n\n // Navigate to the new destination.\n const destination = state.destination;\n this._updateInternalState(\n destination,\n state.uid,\n /* removeTemporary = */ true\n );\n\n if (isValidRotation(destination.rotation)) {\n this.linkService.rotation = destination.rotation;\n }\n if (destination.dest) {\n this.linkService.goToDestination(destination.dest);\n } else if (destination.hash) {\n this.linkService.setHash(destination.hash);\n } else if (destination.page) {\n // Fallback case; shouldn't be necessary, but better safe than sorry.\n this.linkService.page = destination.page;\n }\n\n // Since `PDFLinkService.goToDestination` is asynchronous, we thus defer the\n // resetting of `this._popStateInProgress` slightly.\n Promise.resolve().then(() => {\n this._popStateInProgress = false;\n });\n }\n\n /**\n * @private\n */\n _pageHide() {\n // Attempt to push the `this._position` into the browser history when\n // navigating away from the document. This is *only* done if the history\n // is empty/temporary, since otherwise an existing browser history entry\n // will end up being overwritten (given that new entries cannot be pushed\n // into the browser history when the 'unload' event has already fired).\n if (!this._destination || this._destination.temporary) {\n this._tryPushCurrentPosition();\n }\n }\n\n /**\n * @private\n */\n _bindEvents() {\n if (this._boundEvents) {\n return; // The event listeners were already added.\n }\n this._boundEvents = {\n updateViewarea: this._updateViewarea.bind(this),\n popState: this._popState.bind(this),\n pageHide: this._pageHide.bind(this),\n };\n\n this.eventBus._on(\"updateviewarea\", this._boundEvents.updateViewarea);\n window.addEventListener(\"popstate\", this._boundEvents.popState);\n window.addEventListener(\"pagehide\", this._boundEvents.pageHide);\n }\n\n /**\n * @private\n */\n _unbindEvents() {\n if (!this._boundEvents) {\n return; // The event listeners were already removed.\n }\n this.eventBus._off(\"updateviewarea\", this._boundEvents.updateViewarea);\n window.removeEventListener(\"popstate\", this._boundEvents.popState);\n window.removeEventListener(\"pagehide\", this._boundEvents.pageHide);\n\n this._boundEvents = null;\n }\n}\n\nfunction isDestHashesEqual(destHash, pushHash) {\n if (typeof destHash !== \"string\" || typeof pushHash !== \"string\") {\n return false;\n }\n if (destHash === pushHash) {\n return true;\n }\n const nameddest = parseQueryString(destHash).get(\"nameddest\");\n if (nameddest === pushHash) {\n return true;\n }\n return false;\n}\n\nfunction isDestArraysEqual(firstDest, secondDest) {\n function isEntryEqual(first, second) {\n if (typeof first !== typeof second) {\n return false;\n }\n if (Array.isArray(first) || Array.isArray(second)) {\n return false;\n }\n if (first !== null && typeof first === \"object\" && second !== null) {\n if (Object.keys(first).length !== Object.keys(second).length) {\n return false;\n }\n for (const key in first) {\n if (!isEntryEqual(first[key], second[key])) {\n return false;\n }\n }\n return true;\n }\n return first === second || (Number.isNaN(first) && Number.isNaN(second));\n }\n\n if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {\n return false;\n }\n if (firstDest.length !== secondDest.length) {\n return false;\n }\n for (let i = 0, ii = firstDest.length; i < ii; i++) {\n if (!isEntryEqual(firstDest[i], secondDest[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport { isDestArraysEqual, isDestHashesEqual, PDFHistory };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseTreeViewer } from \"./base_tree_viewer.js\";\n\n/**\n * @typedef {Object} PDFLayerViewerOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IL10n} l10n - Localization service.\n */\n\n/**\n * @typedef {Object} PDFLayerViewerRenderParameters\n * @property {OptionalContentConfig|null} optionalContentConfig - An\n * {OptionalContentConfig} instance.\n * @property {PDFDocument} pdfDocument - A {PDFDocument} instance.\n */\n\nclass PDFLayerViewer extends BaseTreeViewer {\n constructor(options) {\n super(options);\n this.l10n = options.l10n;\n\n this.eventBus._on(\"resetlayers\", this._resetLayers.bind(this));\n this.eventBus._on(\"togglelayerstree\", this._toggleAllTreeItems.bind(this));\n }\n\n reset() {\n super.reset();\n this._optionalContentConfig = null;\n }\n\n /**\n * @private\n */\n _dispatchEvent(layersCount) {\n this.eventBus.dispatch(\"layersloaded\", {\n source: this,\n layersCount,\n });\n }\n\n /**\n * @private\n */\n _bindLink(element, { groupId, input }) {\n const setVisibility = () => {\n this._optionalContentConfig.setVisibility(groupId, input.checked);\n\n this.eventBus.dispatch(\"optionalcontentconfig\", {\n source: this,\n promise: Promise.resolve(this._optionalContentConfig),\n });\n };\n\n element.onclick = evt => {\n if (evt.target === input) {\n setVisibility();\n return true;\n } else if (evt.target !== element) {\n return true; // The target is the \"label\", which is handled above.\n }\n input.checked = !input.checked;\n setVisibility();\n return false;\n };\n }\n\n /**\n * @private\n */\n async _setNestedName(element, { name = null }) {\n if (typeof name === \"string\") {\n element.textContent = this._normalizeTextContent(name);\n return;\n }\n element.textContent = await this.l10n.get(\"additional_layers\");\n element.style.fontStyle = \"italic\";\n }\n\n /**\n * @private\n */\n _addToggleButton(div, { name = null }) {\n super._addToggleButton(div, /* hidden = */ name === null);\n }\n\n /**\n * @private\n */\n _toggleAllTreeItems() {\n if (!this._optionalContentConfig) {\n return;\n }\n super._toggleAllTreeItems();\n }\n\n /**\n * @param {PDFLayerViewerRenderParameters} params\n */\n render({ optionalContentConfig, pdfDocument }) {\n if (this._optionalContentConfig) {\n this.reset();\n }\n this._optionalContentConfig = optionalContentConfig || null;\n this._pdfDocument = pdfDocument || null;\n\n const groups = optionalContentConfig?.getOrder();\n if (!groups) {\n this._dispatchEvent(/* layersCount = */ 0);\n return;\n }\n\n const fragment = document.createDocumentFragment(),\n queue = [{ parent: fragment, groups }];\n let layersCount = 0,\n hasAnyNesting = false;\n while (queue.length > 0) {\n const levelData = queue.shift();\n for (const groupId of levelData.groups) {\n const div = document.createElement(\"div\");\n div.className = \"treeItem\";\n\n const element = document.createElement(\"a\");\n div.appendChild(element);\n\n if (typeof groupId === \"object\") {\n hasAnyNesting = true;\n this._addToggleButton(div, groupId);\n this._setNestedName(element, groupId);\n\n const itemsDiv = document.createElement(\"div\");\n itemsDiv.className = \"treeItems\";\n div.appendChild(itemsDiv);\n\n queue.push({ parent: itemsDiv, groups: groupId.order });\n } else {\n const group = optionalContentConfig.getGroup(groupId);\n\n const input = document.createElement(\"input\");\n this._bindLink(element, { groupId, input });\n input.type = \"checkbox\";\n input.id = groupId;\n input.checked = group.visible;\n\n const label = document.createElement(\"label\");\n label.setAttribute(\"for\", groupId);\n label.textContent = this._normalizeTextContent(group.name);\n\n element.appendChild(input);\n element.appendChild(label);\n\n layersCount++;\n }\n\n levelData.parent.appendChild(div);\n }\n }\n\n this._finishRendering(fragment, layersCount, hasAnyNesting);\n }\n\n /**\n * @private\n */\n async _resetLayers() {\n if (!this._optionalContentConfig) {\n return;\n }\n // Fetch the default optional content configuration...\n const optionalContentConfig =\n await this._pdfDocument.getOptionalContentConfig();\n\n this.eventBus.dispatch(\"optionalcontentconfig\", {\n source: this,\n promise: Promise.resolve(optionalContentConfig),\n });\n\n // ... and reset the sidebarView to the default state.\n this.render({\n optionalContentConfig,\n pdfDocument: this._pdfDocument,\n });\n }\n}\n\nexport { PDFLayerViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseTreeViewer } from \"./base_tree_viewer.js\";\nimport { createPromiseCapability } from \"pdfjs-lib\";\nimport { SidebarView } from \"./ui_utils.js\";\n\n/**\n * @typedef {Object} PDFOutlineViewerOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {EventBus} eventBus - The application event bus.\n */\n\n/**\n * @typedef {Object} PDFOutlineViewerRenderParameters\n * @property {Array|null} outline - An array of outline objects.\n * @property {PDFDocument} pdfDocument - A {PDFDocument} instance.\n */\n\nclass PDFOutlineViewer extends BaseTreeViewer {\n /**\n * @param {PDFOutlineViewerOptions} options\n */\n constructor(options) {\n super(options);\n this.linkService = options.linkService;\n\n this.eventBus._on(\"toggleoutlinetree\", this._toggleAllTreeItems.bind(this));\n this.eventBus._on(\n \"currentoutlineitem\",\n this._currentOutlineItem.bind(this)\n );\n\n this.eventBus._on(\"pagechanging\", evt => {\n this._currentPageNumber = evt.pageNumber;\n });\n this.eventBus._on(\"pagesloaded\", evt => {\n this._isPagesLoaded = !!evt.pagesCount;\n\n // If the capability is still pending, see the `_dispatchEvent`-method,\n // we know that the `currentOutlineItem`-button can be enabled here.\n if (\n this._currentOutlineItemCapability &&\n !this._currentOutlineItemCapability.settled\n ) {\n this._currentOutlineItemCapability.resolve(\n /* enabled = */ this._isPagesLoaded\n );\n }\n });\n this.eventBus._on(\"sidebarviewchanged\", evt => {\n this._sidebarView = evt.view;\n });\n }\n\n reset() {\n super.reset();\n this._outline = null;\n\n this._pageNumberToDestHashCapability = null;\n this._currentPageNumber = 1;\n this._isPagesLoaded = null;\n\n if (\n this._currentOutlineItemCapability &&\n !this._currentOutlineItemCapability.settled\n ) {\n this._currentOutlineItemCapability.resolve(/* enabled = */ false);\n }\n this._currentOutlineItemCapability = null;\n }\n\n /**\n * @private\n */\n _dispatchEvent(outlineCount) {\n this._currentOutlineItemCapability = createPromiseCapability();\n if (\n outlineCount === 0 ||\n this._pdfDocument?.loadingParams.disableAutoFetch\n ) {\n this._currentOutlineItemCapability.resolve(/* enabled = */ false);\n } else if (this._isPagesLoaded !== null) {\n this._currentOutlineItemCapability.resolve(\n /* enabled = */ this._isPagesLoaded\n );\n }\n\n this.eventBus.dispatch(\"outlineloaded\", {\n source: this,\n outlineCount,\n currentOutlineItemPromise: this._currentOutlineItemCapability.promise,\n });\n }\n\n /**\n * @private\n */\n _bindLink(element, { url, newWindow, dest }) {\n const { linkService } = this;\n\n if (url) {\n linkService.addLinkAttributes(element, url, newWindow);\n return;\n }\n\n element.href = linkService.getDestinationHash(dest);\n element.onclick = evt => {\n this._updateCurrentTreeItem(evt.target.parentNode);\n\n if (dest) {\n linkService.goToDestination(dest);\n }\n return false;\n };\n }\n\n /**\n * @private\n */\n _setStyles(element, { bold, italic }) {\n if (bold) {\n element.style.fontWeight = \"bold\";\n }\n if (italic) {\n element.style.fontStyle = \"italic\";\n }\n }\n\n /**\n * @private\n */\n _addToggleButton(div, { count, items }) {\n let hidden = false;\n if (count < 0) {\n let totalCount = items.length;\n if (totalCount > 0) {\n const queue = [...items];\n while (queue.length > 0) {\n const { count: nestedCount, items: nestedItems } = queue.shift();\n if (nestedCount > 0 && nestedItems.length > 0) {\n totalCount += nestedItems.length;\n queue.push(...nestedItems);\n }\n }\n }\n if (Math.abs(count) === totalCount) {\n hidden = true;\n }\n }\n super._addToggleButton(div, hidden);\n }\n\n /**\n * @private\n */\n _toggleAllTreeItems() {\n if (!this._outline) {\n return;\n }\n super._toggleAllTreeItems();\n }\n\n /**\n * @param {PDFOutlineViewerRenderParameters} params\n */\n render({ outline, pdfDocument }) {\n if (this._outline) {\n this.reset();\n }\n this._outline = outline || null;\n this._pdfDocument = pdfDocument || null;\n\n if (!outline) {\n this._dispatchEvent(/* outlineCount = */ 0);\n return;\n }\n\n const fragment = document.createDocumentFragment();\n const queue = [{ parent: fragment, items: outline }];\n let outlineCount = 0,\n hasAnyNesting = false;\n while (queue.length > 0) {\n const levelData = queue.shift();\n for (const item of levelData.items) {\n const div = document.createElement(\"div\");\n div.className = \"treeItem\";\n\n const element = document.createElement(\"a\");\n this._bindLink(element, item);\n this._setStyles(element, item);\n element.textContent = this._normalizeTextContent(item.title);\n\n div.appendChild(element);\n\n if (item.items.length > 0) {\n hasAnyNesting = true;\n this._addToggleButton(div, item);\n\n const itemsDiv = document.createElement(\"div\");\n itemsDiv.className = \"treeItems\";\n div.appendChild(itemsDiv);\n\n queue.push({ parent: itemsDiv, items: item.items });\n }\n\n levelData.parent.appendChild(div);\n outlineCount++;\n }\n }\n\n this._finishRendering(fragment, outlineCount, hasAnyNesting);\n }\n\n /**\n * Find/highlight the current outline item, corresponding to the active page.\n * @private\n */\n async _currentOutlineItem() {\n if (!this._isPagesLoaded) {\n throw new Error(\"_currentOutlineItem: All pages have not been loaded.\");\n }\n if (!this._outline || !this._pdfDocument) {\n return;\n }\n\n const pageNumberToDestHash = await this._getPageNumberToDestHash(\n this._pdfDocument\n );\n if (!pageNumberToDestHash) {\n return;\n }\n this._updateCurrentTreeItem(/* treeItem = */ null);\n\n if (this._sidebarView !== SidebarView.OUTLINE) {\n return; // The outline view is no longer visible, hence do nothing.\n }\n // When there is no destination on the current page, always check the\n // previous ones in (reverse) order.\n for (let i = this._currentPageNumber; i > 0; i--) {\n const destHash = pageNumberToDestHash.get(i);\n if (!destHash) {\n continue;\n }\n const linkElement = this.container.querySelector(`a[href=\"${destHash}\"]`);\n if (!linkElement) {\n continue;\n }\n this._scrollToCurrentTreeItem(linkElement.parentNode);\n break;\n }\n }\n\n /**\n * To (significantly) simplify the overall implementation, we will only\n * consider *one* destination per page when finding/highlighting the current\n * outline item (similar to e.g. Adobe Reader); more specifically, we choose\n * the *first* outline item at the *lowest* level of the outline tree.\n * @private\n */\n async _getPageNumberToDestHash(pdfDocument) {\n if (this._pageNumberToDestHashCapability) {\n return this._pageNumberToDestHashCapability.promise;\n }\n this._pageNumberToDestHashCapability = createPromiseCapability();\n\n const pageNumberToDestHash = new Map(),\n pageNumberNesting = new Map();\n const queue = [{ nesting: 0, items: this._outline }];\n while (queue.length > 0) {\n const levelData = queue.shift(),\n currentNesting = levelData.nesting;\n for (const { dest, items } of levelData.items) {\n let explicitDest, pageNumber;\n if (typeof dest === \"string\") {\n explicitDest = await pdfDocument.getDestination(dest);\n\n if (pdfDocument !== this._pdfDocument) {\n return null; // The document was closed while the data resolved.\n }\n } else {\n explicitDest = dest;\n }\n if (Array.isArray(explicitDest)) {\n const [destRef] = explicitDest;\n\n if (typeof destRef === \"object\" && destRef !== null) {\n pageNumber = this.linkService._cachedPageNumber(destRef);\n\n if (!pageNumber) {\n try {\n pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1;\n\n if (pdfDocument !== this._pdfDocument) {\n return null; // The document was closed while the data resolved.\n }\n this.linkService.cachePageRef(pageNumber, destRef);\n } catch (ex) {\n // Invalid page reference, ignore it and continue parsing.\n }\n }\n } else if (Number.isInteger(destRef)) {\n pageNumber = destRef + 1;\n }\n\n if (\n Number.isInteger(pageNumber) &&\n (!pageNumberToDestHash.has(pageNumber) ||\n currentNesting > pageNumberNesting.get(pageNumber))\n ) {\n const destHash = this.linkService.getDestinationHash(dest);\n pageNumberToDestHash.set(pageNumber, destHash);\n pageNumberNesting.set(pageNumber, currentNesting);\n }\n }\n\n if (items.length > 0) {\n queue.push({ nesting: currentNesting + 1, items });\n }\n }\n }\n\n this._pageNumberToDestHashCapability.resolve(\n pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null\n );\n return this._pageNumberToDestHashCapability.promise;\n }\n}\n\nexport { PDFOutlineViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n normalizeWheelEventDelta,\n PresentationModeState,\n ScrollMode,\n SpreadMode,\n} from \"./ui_utils.js\";\n\nconst DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500; // in ms\nconst DELAY_BEFORE_HIDING_CONTROLS = 3000; // in ms\nconst ACTIVE_SELECTOR = \"pdfPresentationMode\";\nconst CONTROLS_SELECTOR = \"pdfPresentationModeControls\";\nconst MOUSE_SCROLL_COOLDOWN_TIME = 50; // in ms\nconst PAGE_SWITCH_THRESHOLD = 0.1;\n\n// Number of CSS pixels for a movement to count as a swipe.\nconst SWIPE_MIN_DISTANCE_THRESHOLD = 50;\n\n// Swipe angle deviation from the x or y axis before it is not\n// considered a swipe in that direction any more.\nconst SWIPE_ANGLE_THRESHOLD = Math.PI / 6;\n\n/**\n * @typedef {Object} PDFPresentationModeOptions\n * @property {HTMLDivElement} container - The container for the viewer element.\n * @property {PDFViewer} pdfViewer - The document viewer.\n * @property {EventBus} eventBus - The application event bus.\n */\n\nclass PDFPresentationMode {\n /**\n * @param {PDFPresentationModeOptions} options\n */\n constructor({ container, pdfViewer, eventBus }) {\n this.container = container;\n this.pdfViewer = pdfViewer;\n this.eventBus = eventBus;\n\n this.active = false;\n this.args = null;\n this.contextMenuOpen = false;\n this.mouseScrollTimeStamp = 0;\n this.mouseScrollDelta = 0;\n this.touchSwipeState = null;\n }\n\n /**\n * Request the browser to enter fullscreen mode.\n * @returns {boolean} Indicating if the request was successful.\n */\n request() {\n if (\n this.switchInProgress ||\n this.active ||\n !this.pdfViewer.pagesCount ||\n !this.container.requestFullscreen\n ) {\n return false;\n }\n this.#addFullscreenChangeListeners();\n this.#setSwitchInProgress();\n this.#notifyStateChange();\n\n this.container.requestFullscreen();\n\n this.args = {\n pageNumber: this.pdfViewer.currentPageNumber,\n scaleValue: this.pdfViewer.currentScaleValue,\n scrollMode: this.pdfViewer.scrollMode,\n spreadMode: this.pdfViewer.spreadMode,\n };\n return true;\n }\n\n #mouseWheel(evt) {\n if (!this.active) {\n return;\n }\n\n evt.preventDefault();\n\n const delta = normalizeWheelEventDelta(evt);\n const currentTime = Date.now();\n const storedTime = this.mouseScrollTimeStamp;\n\n // If we've already switched page, avoid accidentally switching again.\n if (\n currentTime > storedTime &&\n currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME\n ) {\n return;\n }\n // If the scroll direction changed, reset the accumulated scroll delta.\n if (\n (this.mouseScrollDelta > 0 && delta < 0) ||\n (this.mouseScrollDelta < 0 && delta > 0)\n ) {\n this.#resetMouseScrollState();\n }\n this.mouseScrollDelta += delta;\n\n if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {\n const totalDelta = this.mouseScrollDelta;\n this.#resetMouseScrollState();\n const success =\n totalDelta > 0\n ? this.pdfViewer.previousPage()\n : this.pdfViewer.nextPage();\n if (success) {\n this.mouseScrollTimeStamp = currentTime;\n }\n }\n }\n\n #notifyStateChange() {\n let state = PresentationModeState.NORMAL;\n if (this.switchInProgress) {\n state = PresentationModeState.CHANGING;\n } else if (this.active) {\n state = PresentationModeState.FULLSCREEN;\n }\n this.eventBus.dispatch(\"presentationmodechanged\", {\n source: this,\n state,\n });\n }\n\n /**\n * Used to initialize a timeout when requesting Presentation Mode,\n * i.e. when the browser is requested to enter fullscreen mode.\n * This timeout is used to prevent the current page from being scrolled\n * partially, or completely, out of view when entering Presentation Mode.\n * NOTE: This issue seems limited to certain zoom levels (e.g. page-width).\n */\n #setSwitchInProgress() {\n if (this.switchInProgress) {\n clearTimeout(this.switchInProgress);\n }\n this.switchInProgress = setTimeout(() => {\n this.#removeFullscreenChangeListeners();\n delete this.switchInProgress;\n this.#notifyStateChange();\n }, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS);\n }\n\n #resetSwitchInProgress() {\n if (this.switchInProgress) {\n clearTimeout(this.switchInProgress);\n delete this.switchInProgress;\n }\n }\n\n #enter() {\n this.active = true;\n this.#resetSwitchInProgress();\n this.#notifyStateChange();\n this.container.classList.add(ACTIVE_SELECTOR);\n\n // Ensure that the correct page is scrolled into view when entering\n // Presentation Mode, by waiting until fullscreen mode in enabled.\n setTimeout(() => {\n this.pdfViewer.scrollMode = ScrollMode.PAGE;\n this.pdfViewer.spreadMode = SpreadMode.NONE;\n this.pdfViewer.currentPageNumber = this.args.pageNumber;\n this.pdfViewer.currentScaleValue = \"page-fit\";\n }, 0);\n\n this.#addWindowListeners();\n this.#showControls();\n this.contextMenuOpen = false;\n\n // Text selection is disabled in Presentation Mode, thus it's not possible\n // for the user to deselect text that is selected (e.g. with \"Select all\")\n // when entering Presentation Mode, hence we remove any active selection.\n window.getSelection().removeAllRanges();\n }\n\n #exit() {\n const pageNumber = this.pdfViewer.currentPageNumber;\n this.container.classList.remove(ACTIVE_SELECTOR);\n\n // Ensure that the correct page is scrolled into view when exiting\n // Presentation Mode, by waiting until fullscreen mode is disabled.\n setTimeout(() => {\n this.active = false;\n this.#removeFullscreenChangeListeners();\n this.#notifyStateChange();\n\n this.pdfViewer.scrollMode = this.args.scrollMode;\n this.pdfViewer.spreadMode = this.args.spreadMode;\n this.pdfViewer.currentScaleValue = this.args.scaleValue;\n this.pdfViewer.currentPageNumber = pageNumber;\n this.args = null;\n }, 0);\n\n this.#removeWindowListeners();\n this.#hideControls();\n this.#resetMouseScrollState();\n this.contextMenuOpen = false;\n }\n\n #mouseDown(evt) {\n if (this.contextMenuOpen) {\n this.contextMenuOpen = false;\n evt.preventDefault();\n return;\n }\n if (evt.button === 0) {\n // Enable clicking of links in presentation mode. Note: only links\n // pointing to destinations in the current PDF document work.\n const isInternalLink =\n evt.target.href && evt.target.classList.contains(\"internalLink\");\n if (!isInternalLink) {\n // Unless an internal link was clicked, advance one page.\n evt.preventDefault();\n\n if (evt.shiftKey) {\n this.pdfViewer.previousPage();\n } else {\n this.pdfViewer.nextPage();\n }\n }\n }\n }\n\n #contextMenu() {\n this.contextMenuOpen = true;\n }\n\n #showControls() {\n if (this.controlsTimeout) {\n clearTimeout(this.controlsTimeout);\n } else {\n this.container.classList.add(CONTROLS_SELECTOR);\n }\n this.controlsTimeout = setTimeout(() => {\n this.container.classList.remove(CONTROLS_SELECTOR);\n delete this.controlsTimeout;\n }, DELAY_BEFORE_HIDING_CONTROLS);\n }\n\n #hideControls() {\n if (!this.controlsTimeout) {\n return;\n }\n clearTimeout(this.controlsTimeout);\n this.container.classList.remove(CONTROLS_SELECTOR);\n delete this.controlsTimeout;\n }\n\n /**\n * Resets the properties used for tracking mouse scrolling events.\n */\n #resetMouseScrollState() {\n this.mouseScrollTimeStamp = 0;\n this.mouseScrollDelta = 0;\n }\n\n #touchSwipe(evt) {\n if (!this.active) {\n return;\n }\n if (evt.touches.length > 1) {\n // Multiple touch points detected; cancel the swipe.\n this.touchSwipeState = null;\n return;\n }\n\n switch (evt.type) {\n case \"touchstart\":\n this.touchSwipeState = {\n startX: evt.touches[0].pageX,\n startY: evt.touches[0].pageY,\n endX: evt.touches[0].pageX,\n endY: evt.touches[0].pageY,\n };\n break;\n case \"touchmove\":\n if (this.touchSwipeState === null) {\n return;\n }\n this.touchSwipeState.endX = evt.touches[0].pageX;\n this.touchSwipeState.endY = evt.touches[0].pageY;\n // Avoid the swipe from triggering browser gestures (Chrome in\n // particular has some sort of swipe gesture in fullscreen mode).\n evt.preventDefault();\n break;\n case \"touchend\":\n if (this.touchSwipeState === null) {\n return;\n }\n let delta = 0;\n const dx = this.touchSwipeState.endX - this.touchSwipeState.startX;\n const dy = this.touchSwipeState.endY - this.touchSwipeState.startY;\n const absAngle = Math.abs(Math.atan2(dy, dx));\n if (\n Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD &&\n (absAngle <= SWIPE_ANGLE_THRESHOLD ||\n absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)\n ) {\n // Horizontal swipe.\n delta = dx;\n } else if (\n Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD &&\n Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD\n ) {\n // Vertical swipe.\n delta = dy;\n }\n if (delta > 0) {\n this.pdfViewer.previousPage();\n } else if (delta < 0) {\n this.pdfViewer.nextPage();\n }\n break;\n }\n }\n\n #addWindowListeners() {\n this.showControlsBind = this.#showControls.bind(this);\n this.mouseDownBind = this.#mouseDown.bind(this);\n this.mouseWheelBind = this.#mouseWheel.bind(this);\n this.resetMouseScrollStateBind = this.#resetMouseScrollState.bind(this);\n this.contextMenuBind = this.#contextMenu.bind(this);\n this.touchSwipeBind = this.#touchSwipe.bind(this);\n\n window.addEventListener(\"mousemove\", this.showControlsBind);\n window.addEventListener(\"mousedown\", this.mouseDownBind);\n window.addEventListener(\"wheel\", this.mouseWheelBind, { passive: false });\n window.addEventListener(\"keydown\", this.resetMouseScrollStateBind);\n window.addEventListener(\"contextmenu\", this.contextMenuBind);\n window.addEventListener(\"touchstart\", this.touchSwipeBind);\n window.addEventListener(\"touchmove\", this.touchSwipeBind);\n window.addEventListener(\"touchend\", this.touchSwipeBind);\n }\n\n #removeWindowListeners() {\n window.removeEventListener(\"mousemove\", this.showControlsBind);\n window.removeEventListener(\"mousedown\", this.mouseDownBind);\n window.removeEventListener(\"wheel\", this.mouseWheelBind, {\n passive: false,\n });\n window.removeEventListener(\"keydown\", this.resetMouseScrollStateBind);\n window.removeEventListener(\"contextmenu\", this.contextMenuBind);\n window.removeEventListener(\"touchstart\", this.touchSwipeBind);\n window.removeEventListener(\"touchmove\", this.touchSwipeBind);\n window.removeEventListener(\"touchend\", this.touchSwipeBind);\n\n delete this.showControlsBind;\n delete this.mouseDownBind;\n delete this.mouseWheelBind;\n delete this.resetMouseScrollStateBind;\n delete this.contextMenuBind;\n delete this.touchSwipeBind;\n }\n\n #fullscreenChange() {\n if (/* isFullscreen = */ document.fullscreenElement) {\n this.#enter();\n } else {\n this.#exit();\n }\n }\n\n #addFullscreenChangeListeners() {\n this.fullscreenChangeBind = this.#fullscreenChange.bind(this);\n window.addEventListener(\"fullscreenchange\", this.fullscreenChangeBind);\n }\n\n #removeFullscreenChangeListeners() {\n window.removeEventListener(\"fullscreenchange\", this.fullscreenChangeBind);\n delete this.fullscreenChangeBind;\n }\n}\n\nexport { PDFPresentationMode };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IRenderableView} IRenderableView */\n/** @typedef {import(\"./pdf_viewer\").PDFViewer} PDFViewer */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_thumbnail_viewer\").PDFThumbnailViewer} PDFThumbnailViewer */\n\nimport { RenderingCancelledException } from \"pdfjs-lib\";\nimport { RenderingStates } from \"./ui_utils.js\";\n\nconst CLEANUP_TIMEOUT = 30000;\n\n/**\n * Controls rendering of the views for pages and thumbnails.\n */\nclass PDFRenderingQueue {\n constructor() {\n this.pdfViewer = null;\n this.pdfThumbnailViewer = null;\n this.onIdle = null;\n this.highestPriorityPage = null;\n /** @type {number} */\n this.idleTimeout = null;\n this.printing = false;\n this.isThumbnailViewEnabled = false;\n }\n\n /**\n * @param {PDFViewer} pdfViewer\n */\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n\n /**\n * @param {PDFThumbnailViewer} pdfThumbnailViewer\n */\n setThumbnailViewer(pdfThumbnailViewer) {\n this.pdfThumbnailViewer = pdfThumbnailViewer;\n }\n\n /**\n * @param {IRenderableView} view\n * @returns {boolean}\n */\n isHighestPriority(view) {\n return this.highestPriorityPage === view.renderingId;\n }\n\n /**\n * @returns {boolean}\n */\n hasViewer() {\n return !!this.pdfViewer;\n }\n\n /**\n * @param {Object} currentlyVisiblePages\n */\n renderHighestPriority(currentlyVisiblePages) {\n if (this.idleTimeout) {\n clearTimeout(this.idleTimeout);\n this.idleTimeout = null;\n }\n\n // Pages have a higher priority than thumbnails, so check them first.\n if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {\n return;\n }\n // No pages needed rendering, so check thumbnails.\n if (\n this.isThumbnailViewEnabled &&\n this.pdfThumbnailViewer?.forceRendering()\n ) {\n return;\n }\n\n if (this.printing) {\n // If printing is currently ongoing do not reschedule cleanup.\n return;\n }\n\n if (this.onIdle) {\n this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);\n }\n }\n\n /**\n * @param {Object} visible\n * @param {Array} views\n * @param {boolean} scrolledDown\n * @param {boolean} [preRenderExtra]\n */\n getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) {\n /**\n * The state has changed. Figure out which page has the highest priority to\n * render next (if any).\n *\n * Priority:\n * 1. visible pages\n * 2. if last scrolled down, the page after the visible pages, or\n * if last scrolled up, the page before the visible pages\n */\n const visibleViews = visible.views,\n numVisible = visibleViews.length;\n\n if (numVisible === 0) {\n return null;\n }\n for (let i = 0; i < numVisible; i++) {\n const view = visibleViews[i].view;\n if (!this.isViewFinished(view)) {\n return view;\n }\n }\n const firstId = visible.first.id,\n lastId = visible.last.id;\n\n // All the visible views have rendered; try to handle any \"holes\" in the\n // page layout (can happen e.g. with spreadModes at higher zoom levels).\n if (lastId - firstId + 1 > numVisible) {\n const visibleIds = visible.ids;\n for (let i = 1, ii = lastId - firstId; i < ii; i++) {\n const holeId = scrolledDown ? firstId + i : lastId - i;\n if (visibleIds.has(holeId)) {\n continue;\n }\n const holeView = views[holeId - 1];\n if (!this.isViewFinished(holeView)) {\n return holeView;\n }\n }\n }\n\n // All the visible views have rendered; try to render next/previous page.\n // (IDs start at 1, so no need to add 1 when `scrolledDown === true`.)\n let preRenderIndex = scrolledDown ? lastId : firstId - 2;\n let preRenderView = views[preRenderIndex];\n\n if (preRenderView && !this.isViewFinished(preRenderView)) {\n return preRenderView;\n }\n if (preRenderExtra) {\n preRenderIndex += scrolledDown ? 1 : -1;\n preRenderView = views[preRenderIndex];\n\n if (preRenderView && !this.isViewFinished(preRenderView)) {\n return preRenderView;\n }\n }\n // Everything that needs to be rendered has been.\n return null;\n }\n\n /**\n * @param {IRenderableView} view\n * @returns {boolean}\n */\n isViewFinished(view) {\n return view.renderingState === RenderingStates.FINISHED;\n }\n\n /**\n * Render a page or thumbnail view. This calls the appropriate function\n * based on the views state. If the view is already rendered it will return\n * `false`.\n *\n * @param {IRenderableView} view\n */\n renderView(view) {\n switch (view.renderingState) {\n case RenderingStates.FINISHED:\n return false;\n case RenderingStates.PAUSED:\n this.highestPriorityPage = view.renderingId;\n view.resume();\n break;\n case RenderingStates.RUNNING:\n this.highestPriorityPage = view.renderingId;\n break;\n case RenderingStates.INITIAL:\n this.highestPriorityPage = view.renderingId;\n view\n .draw()\n .finally(() => {\n this.renderHighestPriority();\n })\n .catch(reason => {\n if (reason instanceof RenderingCancelledException) {\n return;\n }\n console.error(`renderView: \"${reason}\"`);\n });\n break;\n }\n return true;\n }\n}\n\nexport { PDFRenderingQueue };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n\nimport { apiPageLayoutToViewerModes, RenderingStates } from \"./ui_utils.js\";\nimport { createPromiseCapability, shadow } from \"pdfjs-lib\";\n\n/**\n * @typedef {Object} PDFScriptingManagerOptions\n * @property {EventBus} eventBus - The application event bus.\n * @property {string} sandboxBundleSrc - The path and filename of the scripting\n * bundle.\n * @property {Object} [scriptingFactory] - The factory that is used when\n * initializing scripting; must contain a `createScripting` method.\n * PLEASE NOTE: Primarily intended for the default viewer use-case.\n * @property {function} [docPropertiesLookup] - The function that is used to\n * lookup the necessary document properties.\n */\n\nclass PDFScriptingManager {\n /**\n * @param {PDFScriptingManagerOptions} options\n */\n constructor({\n eventBus,\n sandboxBundleSrc = null,\n scriptingFactory = null,\n docPropertiesLookup = null,\n }) {\n this._pdfDocument = null;\n this._pdfViewer = null;\n this._closeCapability = null;\n this._destroyCapability = null;\n\n this._scripting = null;\n this._mouseState = Object.create(null);\n this._ready = false;\n\n this._eventBus = eventBus;\n this._sandboxBundleSrc = sandboxBundleSrc;\n this._scriptingFactory = scriptingFactory;\n this._docPropertiesLookup = docPropertiesLookup;\n\n // The default viewer already handles adding/removing of DOM events,\n // hence limit this to only the viewer components.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"COMPONENTS\") &&\n !this._scriptingFactory\n ) {\n window.addEventListener(\"updatefromsandbox\", event => {\n this._eventBus.dispatch(\"updatefromsandbox\", {\n source: window,\n detail: event.detail,\n });\n });\n }\n }\n\n setViewer(pdfViewer) {\n this._pdfViewer = pdfViewer;\n }\n\n async setDocument(pdfDocument) {\n if (this._pdfDocument) {\n await this._destroyScripting();\n }\n this._pdfDocument = pdfDocument;\n\n if (!pdfDocument) {\n return;\n }\n const [objects, calculationOrder, docActions] = await Promise.all([\n pdfDocument.getFieldObjects(),\n pdfDocument.getCalculationOrderIds(),\n pdfDocument.getJSActions(),\n ]);\n\n if (!objects && !docActions) {\n // No FieldObjects or JavaScript actions were found in the document.\n await this._destroyScripting();\n return;\n }\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the data resolved.\n }\n try {\n this._scripting = this._createScripting();\n } catch (error) {\n console.error(`PDFScriptingManager.setDocument: \"${error?.message}\".`);\n\n await this._destroyScripting();\n return;\n }\n\n this._internalEvents.set(\"updatefromsandbox\", event => {\n if (event?.source !== window) {\n return;\n }\n this._updateFromSandbox(event.detail);\n });\n this._internalEvents.set(\"dispatcheventinsandbox\", event => {\n this._scripting?.dispatchEventInSandbox(event.detail);\n });\n\n this._internalEvents.set(\"pagechanging\", ({ pageNumber, previous }) => {\n if (pageNumber === previous) {\n return; // The current page didn't change.\n }\n this._dispatchPageClose(previous);\n this._dispatchPageOpen(pageNumber);\n });\n this._internalEvents.set(\"pagerendered\", ({ pageNumber }) => {\n if (!this._pageOpenPending.has(pageNumber)) {\n return; // No pending \"PageOpen\" event for the newly rendered page.\n }\n if (pageNumber !== this._pdfViewer.currentPageNumber) {\n return; // The newly rendered page is no longer the current one.\n }\n this._dispatchPageOpen(pageNumber);\n });\n this._internalEvents.set(\"pagesdestroy\", async event => {\n await this._dispatchPageClose(this._pdfViewer.currentPageNumber);\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"WillClose\",\n });\n\n this._closeCapability?.resolve();\n });\n\n this._domEvents.set(\"mousedown\", event => {\n this._mouseState.isDown = true;\n });\n this._domEvents.set(\"mouseup\", event => {\n this._mouseState.isDown = false;\n });\n\n for (const [name, listener] of this._internalEvents) {\n this._eventBus._on(name, listener);\n }\n for (const [name, listener] of this._domEvents) {\n window.addEventListener(name, listener);\n }\n\n try {\n const docProperties = await this._getDocProperties();\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the properties resolved.\n }\n\n await this._scripting.createSandbox({\n objects,\n calculationOrder,\n appInfo: {\n platform: navigator.platform,\n language: navigator.language,\n },\n docInfo: {\n ...docProperties,\n actions: docActions,\n },\n });\n\n this._eventBus.dispatch(\"sandboxcreated\", { source: this });\n } catch (error) {\n console.error(`PDFScriptingManager.setDocument: \"${error?.message}\".`);\n\n await this._destroyScripting();\n return;\n }\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"Open\",\n });\n await this._dispatchPageOpen(\n this._pdfViewer.currentPageNumber,\n /* initialize = */ true\n );\n\n // Defer this slightly, to ensure that scripting is *fully* initialized.\n Promise.resolve().then(() => {\n if (pdfDocument === this._pdfDocument) {\n this._ready = true;\n }\n });\n }\n\n async dispatchWillSave(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"WillSave\",\n });\n }\n\n async dispatchDidSave(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"DidSave\",\n });\n }\n\n async dispatchWillPrint(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"WillPrint\",\n });\n }\n\n async dispatchDidPrint(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"DidPrint\",\n });\n }\n\n get mouseState() {\n return this._mouseState;\n }\n\n get destroyPromise() {\n return this._destroyCapability?.promise || null;\n }\n\n get ready() {\n return this._ready;\n }\n\n /**\n * @private\n */\n get _internalEvents() {\n return shadow(this, \"_internalEvents\", new Map());\n }\n\n /**\n * @private\n */\n get _domEvents() {\n return shadow(this, \"_domEvents\", new Map());\n }\n\n /**\n * @private\n */\n get _pageOpenPending() {\n return shadow(this, \"_pageOpenPending\", new Set());\n }\n\n /**\n * @private\n */\n get _visitedPages() {\n return shadow(this, \"_visitedPages\", new Map());\n }\n\n /**\n * @private\n */\n async _updateFromSandbox(detail) {\n // Ignore some events, see below, that don't make sense in PresentationMode.\n const isInPresentationMode =\n this._pdfViewer.isInPresentationMode ||\n this._pdfViewer.isChangingPresentationMode;\n\n const { id, siblings, command, value } = detail;\n if (!id) {\n switch (command) {\n case \"clear\":\n console.clear();\n break;\n case \"error\":\n console.error(value);\n break;\n case \"layout\":\n if (isInPresentationMode) {\n return;\n }\n const modes = apiPageLayoutToViewerModes(value);\n this._pdfViewer.spreadMode = modes.spreadMode;\n break;\n case \"page-num\":\n this._pdfViewer.currentPageNumber = value + 1;\n break;\n case \"print\":\n await this._pdfViewer.pagesPromise;\n this._eventBus.dispatch(\"print\", { source: this });\n break;\n case \"println\":\n console.log(value);\n break;\n case \"zoom\":\n if (isInPresentationMode) {\n return;\n }\n this._pdfViewer.currentScaleValue = value;\n break;\n case \"SaveAs\":\n this._eventBus.dispatch(\"save\", { source: this });\n break;\n case \"FirstPage\":\n this._pdfViewer.currentPageNumber = 1;\n break;\n case \"LastPage\":\n this._pdfViewer.currentPageNumber = this._pdfViewer.pagesCount;\n break;\n case \"NextPage\":\n this._pdfViewer.nextPage();\n break;\n case \"PrevPage\":\n this._pdfViewer.previousPage();\n break;\n case \"ZoomViewIn\":\n if (isInPresentationMode) {\n return;\n }\n this._pdfViewer.increaseScale();\n break;\n case \"ZoomViewOut\":\n if (isInPresentationMode) {\n return;\n }\n this._pdfViewer.decreaseScale();\n break;\n }\n return;\n }\n\n if (isInPresentationMode) {\n if (detail.focus) {\n return;\n }\n }\n delete detail.id;\n delete detail.siblings;\n\n const ids = siblings ? [id, ...siblings] : [id];\n for (const elementId of ids) {\n const element = document.getElementById(elementId);\n if (element) {\n element.dispatchEvent(new CustomEvent(\"updatefromsandbox\", { detail }));\n } else {\n // The element hasn't been rendered yet, use the AnnotationStorage.\n this._pdfDocument?.annotationStorage.setValue(elementId, detail);\n }\n }\n }\n\n /**\n * @private\n */\n async _dispatchPageOpen(pageNumber, initialize = false) {\n const pdfDocument = this._pdfDocument,\n visitedPages = this._visitedPages;\n\n if (initialize) {\n this._closeCapability = createPromiseCapability();\n }\n if (!this._closeCapability) {\n return; // Scripting isn't fully initialized yet.\n }\n const pageView = this._pdfViewer.getPageView(/* index = */ pageNumber - 1);\n\n if (pageView?.renderingState !== RenderingStates.FINISHED) {\n this._pageOpenPending.add(pageNumber);\n return; // Wait for the page to finish rendering.\n }\n this._pageOpenPending.delete(pageNumber);\n\n const actionsPromise = (async () => {\n // Avoid sending, and thus serializing, the `actions` data more than once.\n const actions = await (!visitedPages.has(pageNumber)\n ? pageView.pdfPage?.getJSActions()\n : null);\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the actions resolved.\n }\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"page\",\n name: \"PageOpen\",\n pageNumber,\n actions,\n });\n })();\n visitedPages.set(pageNumber, actionsPromise);\n }\n\n /**\n * @private\n */\n async _dispatchPageClose(pageNumber) {\n const pdfDocument = this._pdfDocument,\n visitedPages = this._visitedPages;\n\n if (!this._closeCapability) {\n return; // Scripting isn't fully initialized yet.\n }\n if (this._pageOpenPending.has(pageNumber)) {\n return; // The page is still rendering; no \"PageOpen\" event dispatched.\n }\n const actionsPromise = visitedPages.get(pageNumber);\n if (!actionsPromise) {\n return; // The \"PageClose\" event must be preceded by a \"PageOpen\" event.\n }\n visitedPages.set(pageNumber, null);\n\n // Ensure that the \"PageOpen\" event is dispatched first.\n await actionsPromise;\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the actions resolved.\n }\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"page\",\n name: \"PageClose\",\n pageNumber,\n });\n }\n\n /**\n * @returns {Promise<Object>} A promise that is resolved with an {Object}\n * containing the necessary document properties; please find the expected\n * format in `PDFViewerApplication._scriptingDocProperties`.\n * @private\n */\n async _getDocProperties() {\n if (this._docPropertiesLookup) {\n return this._docPropertiesLookup(this._pdfDocument);\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"COMPONENTS\")) {\n const { docPropertiesLookup } = require(\"./generic_scripting.js\");\n\n return docPropertiesLookup(this._pdfDocument);\n }\n throw new Error(\"_getDocProperties: Unable to lookup properties.\");\n }\n\n /**\n * @private\n */\n _createScripting() {\n this._destroyCapability = createPromiseCapability();\n\n if (this._scripting) {\n throw new Error(\"_createScripting: Scripting already exists.\");\n }\n if (this._scriptingFactory) {\n return this._scriptingFactory.createScripting({\n sandboxBundleSrc: this._sandboxBundleSrc,\n });\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"COMPONENTS\")) {\n const { GenericScripting } = require(\"./generic_scripting.js\");\n\n return new GenericScripting(this._sandboxBundleSrc);\n }\n throw new Error(\"_createScripting: Cannot create scripting.\");\n }\n\n /**\n * @private\n */\n async _destroyScripting() {\n if (!this._scripting) {\n this._pdfDocument = null;\n\n this._destroyCapability?.resolve();\n return;\n }\n if (this._closeCapability) {\n await Promise.race([\n this._closeCapability.promise,\n new Promise(resolve => {\n // Avoid the scripting/sandbox-destruction hanging indefinitely.\n setTimeout(resolve, 1000);\n }),\n ]).catch(reason => {\n // Ignore any errors, to ensure that the sandbox is always destroyed.\n });\n this._closeCapability = null;\n }\n this._pdfDocument = null;\n\n try {\n await this._scripting.destroySandbox();\n } catch (ex) {}\n\n for (const [name, listener] of this._internalEvents) {\n this._eventBus._off(name, listener);\n }\n this._internalEvents.clear();\n\n for (const [name, listener] of this._domEvents) {\n window.removeEventListener(name, listener);\n }\n this._domEvents.clear();\n\n this._pageOpenPending.clear();\n this._visitedPages.clear();\n\n this._scripting = null;\n delete this._mouseState.isDown;\n this._ready = false;\n\n this._destroyCapability?.resolve();\n }\n}\n\nexport { PDFScriptingManager };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n PresentationModeState,\n RenderingStates,\n SidebarView,\n} from \"./ui_utils.js\";\n\nconst UI_NOTIFICATION_CLASS = \"pdfSidebarNotification\";\n\n/**\n * @typedef {Object} PDFSidebarOptions\n * @property {PDFSidebarElements} elements - The DOM elements.\n * @property {PDFViewer} pdfViewer - The document viewer.\n * @property {PDFThumbnailViewer} pdfThumbnailViewer - The thumbnail viewer.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IL10n} l10n - The localization service.\n */\n\n/**\n * @typedef {Object} PDFSidebarElements\n * @property {HTMLDivElement} outerContainer - The outer container\n * (encasing both the viewer and sidebar elements).\n * @property {HTMLDivElement} viewerContainer - The viewer container\n * (in which the viewer element is placed).\n * @property {HTMLButtonElement} toggleButton - The button used for\n * opening/closing the sidebar.\n * @property {HTMLButtonElement} thumbnailButton - The button used to show\n * the thumbnail view.\n * @property {HTMLButtonElement} outlineButton - The button used to show\n * the outline view.\n * @property {HTMLButtonElement} attachmentsButton - The button used to show\n * the attachments view.\n * @property {HTMLButtonElement} layersButton - The button used to show\n * the layers view.\n * @property {HTMLDivElement} thumbnailView - The container in which\n * the thumbnails are placed.\n * @property {HTMLDivElement} outlineView - The container in which\n * the outline is placed.\n * @property {HTMLDivElement} attachmentsView - The container in which\n * the attachments are placed.\n * @property {HTMLDivElement} layersView - The container in which\n * the layers are placed.\n * @property {HTMLDivElement} outlineOptionsContainer - The container in which\n * the outline view-specific option button(s) are placed.\n * @property {HTMLButtonElement} currentOutlineItemButton - The button used to\n * find the current outline item.\n */\n\nclass PDFSidebar {\n /**\n * @param {PDFSidebarOptions} options\n */\n constructor({ elements, pdfViewer, pdfThumbnailViewer, eventBus, l10n }) {\n this.isOpen = false;\n this.active = SidebarView.THUMBS;\n this.isInitialViewSet = false;\n\n /**\n * Callback used when the sidebar has been opened/closed, to ensure that\n * the viewers (PDFViewer/PDFThumbnailViewer) are updated correctly.\n */\n this.onToggled = null;\n\n this.pdfViewer = pdfViewer;\n this.pdfThumbnailViewer = pdfThumbnailViewer;\n\n this.outerContainer = elements.outerContainer;\n this.viewerContainer = elements.viewerContainer;\n this.toggleButton = elements.toggleButton;\n\n this.thumbnailButton = elements.thumbnailButton;\n this.outlineButton = elements.outlineButton;\n this.attachmentsButton = elements.attachmentsButton;\n this.layersButton = elements.layersButton;\n\n this.thumbnailView = elements.thumbnailView;\n this.outlineView = elements.outlineView;\n this.attachmentsView = elements.attachmentsView;\n this.layersView = elements.layersView;\n\n this._outlineOptionsContainer = elements.outlineOptionsContainer;\n this._currentOutlineItemButton = elements.currentOutlineItemButton;\n\n this.eventBus = eventBus;\n this.l10n = l10n;\n\n this._addEventListeners();\n }\n\n reset() {\n this.isInitialViewSet = false;\n\n this._hideUINotification(/* reset = */ true);\n this.switchView(SidebarView.THUMBS);\n\n this.outlineButton.disabled = false;\n this.attachmentsButton.disabled = false;\n this.layersButton.disabled = false;\n this._currentOutlineItemButton.disabled = true;\n }\n\n /**\n * @type {number} One of the values in {SidebarView}.\n */\n get visibleView() {\n return this.isOpen ? this.active : SidebarView.NONE;\n }\n\n get isThumbnailViewVisible() {\n return this.isOpen && this.active === SidebarView.THUMBS;\n }\n\n get isOutlineViewVisible() {\n return this.isOpen && this.active === SidebarView.OUTLINE;\n }\n\n get isAttachmentsViewVisible() {\n return this.isOpen && this.active === SidebarView.ATTACHMENTS;\n }\n\n get isLayersViewVisible() {\n return this.isOpen && this.active === SidebarView.LAYERS;\n }\n\n /**\n * @param {number} view - The sidebar view that should become visible,\n * must be one of the values in {SidebarView}.\n */\n setInitialView(view = SidebarView.NONE) {\n if (this.isInitialViewSet) {\n return;\n }\n this.isInitialViewSet = true;\n\n // If the user has already manually opened the sidebar, immediately closing\n // it would be bad UX; also ignore the \"unknown\" sidebar view value.\n if (view === SidebarView.NONE || view === SidebarView.UNKNOWN) {\n this._dispatchEvent();\n return;\n }\n // Prevent dispatching two back-to-back `sidebarviewchanged` events,\n // since `this._switchView` dispatched the event if the view changed.\n if (!this._switchView(view, /* forceOpen */ true)) {\n this._dispatchEvent();\n }\n }\n\n /**\n * @param {number} view - The sidebar view that should be switched to,\n * must be one of the values in {SidebarView}.\n * @param {boolean} [forceOpen] - Ensure that the sidebar is open.\n * The default value is `false`.\n */\n switchView(view, forceOpen = false) {\n this._switchView(view, forceOpen);\n }\n\n /**\n * @returns {boolean} Indicating if `this._dispatchEvent` was called.\n * @private\n */\n _switchView(view, forceOpen = false) {\n const isViewChanged = view !== this.active;\n let shouldForceRendering = false;\n\n switch (view) {\n case SidebarView.NONE:\n if (this.isOpen) {\n this.close();\n return true; // Closing will trigger rendering and dispatch the event.\n }\n return false;\n case SidebarView.THUMBS:\n if (this.isOpen && isViewChanged) {\n shouldForceRendering = true;\n }\n break;\n case SidebarView.OUTLINE:\n if (this.outlineButton.disabled) {\n return false;\n }\n break;\n case SidebarView.ATTACHMENTS:\n if (this.attachmentsButton.disabled) {\n return false;\n }\n break;\n case SidebarView.LAYERS:\n if (this.layersButton.disabled) {\n return false;\n }\n break;\n default:\n console.error(`PDFSidebar._switchView: \"${view}\" is not a valid view.`);\n return false;\n }\n // Update the active view *after* it has been validated above,\n // in order to prevent setting it to an invalid state.\n this.active = view;\n\n // Update the CSS classes, for all buttons...\n this.thumbnailButton.classList.toggle(\n \"toggled\",\n view === SidebarView.THUMBS\n );\n this.outlineButton.classList.toggle(\n \"toggled\",\n view === SidebarView.OUTLINE\n );\n this.attachmentsButton.classList.toggle(\n \"toggled\",\n view === SidebarView.ATTACHMENTS\n );\n this.layersButton.classList.toggle(\"toggled\", view === SidebarView.LAYERS);\n // ... and for all views.\n this.thumbnailView.classList.toggle(\"hidden\", view !== SidebarView.THUMBS);\n this.outlineView.classList.toggle(\"hidden\", view !== SidebarView.OUTLINE);\n this.attachmentsView.classList.toggle(\n \"hidden\",\n view !== SidebarView.ATTACHMENTS\n );\n this.layersView.classList.toggle(\"hidden\", view !== SidebarView.LAYERS);\n\n // Finally, update view-specific CSS classes.\n this._outlineOptionsContainer.classList.toggle(\n \"hidden\",\n view !== SidebarView.OUTLINE\n );\n\n if (forceOpen && !this.isOpen) {\n this.open();\n return true; // Opening will trigger rendering and dispatch the event.\n }\n if (shouldForceRendering) {\n this._updateThumbnailViewer();\n this._forceRendering();\n }\n if (isViewChanged) {\n this._dispatchEvent();\n }\n return isViewChanged;\n }\n\n open() {\n if (this.isOpen) {\n return;\n }\n this.isOpen = true;\n this.toggleButton.classList.add(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"true\");\n\n this.outerContainer.classList.add(\"sidebarMoving\", \"sidebarOpen\");\n\n if (this.active === SidebarView.THUMBS) {\n this._updateThumbnailViewer();\n }\n this._forceRendering();\n this._dispatchEvent();\n\n this._hideUINotification();\n }\n\n close() {\n if (!this.isOpen) {\n return;\n }\n this.isOpen = false;\n this.toggleButton.classList.remove(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"false\");\n\n this.outerContainer.classList.add(\"sidebarMoving\");\n this.outerContainer.classList.remove(\"sidebarOpen\");\n\n this._forceRendering();\n this._dispatchEvent();\n }\n\n toggle() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * @private\n */\n _dispatchEvent() {\n this.eventBus.dispatch(\"sidebarviewchanged\", {\n source: this,\n view: this.visibleView,\n });\n }\n\n /**\n * @private\n */\n _forceRendering() {\n if (this.onToggled) {\n this.onToggled();\n } else {\n // Fallback\n this.pdfViewer.forceRendering();\n this.pdfThumbnailViewer.forceRendering();\n }\n }\n\n /**\n * @private\n */\n _updateThumbnailViewer() {\n const { pdfViewer, pdfThumbnailViewer } = this;\n\n // Use the rendered pages to set the corresponding thumbnail images.\n const pagesCount = pdfViewer.pagesCount;\n for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) {\n const pageView = pdfViewer.getPageView(pageIndex);\n if (pageView?.renderingState === RenderingStates.FINISHED) {\n const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex);\n thumbnailView.setImage(pageView);\n }\n }\n pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);\n }\n\n /**\n * @private\n */\n _showUINotification() {\n this.l10n.get(\"toggle_sidebar_notification2.title\").then(msg => {\n this.toggleButton.title = msg;\n });\n\n if (!this.isOpen) {\n // Only show the notification on the `toggleButton` if the sidebar is\n // currently closed, to avoid unnecessarily bothering the user.\n this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);\n }\n }\n\n /**\n * @private\n */\n _hideUINotification(reset = false) {\n if (this.isOpen || reset) {\n // Only hide the notification on the `toggleButton` if the sidebar is\n // currently open, or when the current PDF document is being closed.\n this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);\n }\n\n if (reset) {\n this.l10n.get(\"toggle_sidebar.title\").then(msg => {\n this.toggleButton.title = msg;\n });\n }\n }\n\n /**\n * @private\n */\n _addEventListeners() {\n this.viewerContainer.addEventListener(\"transitionend\", evt => {\n if (evt.target === this.viewerContainer) {\n this.outerContainer.classList.remove(\"sidebarMoving\");\n }\n });\n\n this.toggleButton.addEventListener(\"click\", () => {\n this.toggle();\n });\n\n // Buttons for switching views.\n this.thumbnailButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.THUMBS);\n });\n\n this.outlineButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.OUTLINE);\n });\n this.outlineButton.addEventListener(\"dblclick\", () => {\n this.eventBus.dispatch(\"toggleoutlinetree\", { source: this });\n });\n\n this.attachmentsButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.ATTACHMENTS);\n });\n\n this.layersButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.LAYERS);\n });\n this.layersButton.addEventListener(\"dblclick\", () => {\n this.eventBus.dispatch(\"resetlayers\", { source: this });\n });\n\n // Buttons for view-specific options.\n this._currentOutlineItemButton.addEventListener(\"click\", () => {\n this.eventBus.dispatch(\"currentoutlineitem\", { source: this });\n });\n\n // Disable/enable views.\n const onTreeLoaded = (count, button, view) => {\n button.disabled = !count;\n\n if (count) {\n this._showUINotification();\n } else if (this.active === view) {\n // If the `view` was opened by the user during document load,\n // switch away from it if it turns out to be empty.\n this.switchView(SidebarView.THUMBS);\n }\n };\n\n this.eventBus._on(\"outlineloaded\", evt => {\n onTreeLoaded(evt.outlineCount, this.outlineButton, SidebarView.OUTLINE);\n\n evt.currentOutlineItemPromise.then(enabled => {\n if (!this.isInitialViewSet) {\n return;\n }\n this._currentOutlineItemButton.disabled = !enabled;\n });\n });\n\n this.eventBus._on(\"attachmentsloaded\", evt => {\n onTreeLoaded(\n evt.attachmentsCount,\n this.attachmentsButton,\n SidebarView.ATTACHMENTS\n );\n });\n\n this.eventBus._on(\"layersloaded\", evt => {\n onTreeLoaded(evt.layersCount, this.layersButton, SidebarView.LAYERS);\n });\n\n // Update the thumbnailViewer, if visible, when exiting presentation mode.\n this.eventBus._on(\"presentationmodechanged\", evt => {\n if (\n evt.state === PresentationModeState.NORMAL &&\n this.isThumbnailViewVisible\n ) {\n this._updateThumbnailViewer();\n }\n });\n }\n}\n\nexport { PDFSidebar };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst SIDEBAR_WIDTH_VAR = \"--sidebar-width\";\nconst SIDEBAR_MIN_WIDTH = 200; // pixels\nconst SIDEBAR_RESIZING_CLASS = \"sidebarResizing\";\n\n/**\n * @typedef {Object} PDFSidebarResizerOptions\n * @property {HTMLDivElement} outerContainer - The outer container\n * (encasing both the viewer and sidebar elements).\n * @property {HTMLDivElement} resizer - The DOM element that can be dragged in\n * order to adjust the width of the sidebar.\n */\n\nclass PDFSidebarResizer {\n /**\n * @param {PDFSidebarResizerOptions} options\n * @param {EventBus} eventBus - The application event bus.\n * @param {IL10n} l10n - Localization service.\n */\n constructor(options, eventBus, l10n) {\n this.isRTL = false;\n this.sidebarOpen = false;\n this.doc = document.documentElement;\n this._width = null;\n this._outerContainerWidth = null;\n this._boundEvents = Object.create(null);\n\n this.outerContainer = options.outerContainer;\n this.resizer = options.resizer;\n this.eventBus = eventBus;\n\n l10n.getDirection().then(dir => {\n this.isRTL = dir === \"rtl\";\n });\n this._addEventListeners();\n }\n\n /**\n * @type {number}\n */\n get outerContainerWidth() {\n return (this._outerContainerWidth ||= this.outerContainer.clientWidth);\n }\n\n /**\n * @private\n * returns {boolean} Indicating if the sidebar width was updated.\n */\n _updateWidth(width = 0) {\n // Prevent the sidebar from becoming too narrow, or from occupying more\n // than half of the available viewer width.\n const maxWidth = Math.floor(this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < SIDEBAR_MIN_WIDTH) {\n width = SIDEBAR_MIN_WIDTH;\n }\n // Only update the UI when the sidebar width did in fact change.\n if (width === this._width) {\n return false;\n }\n this._width = width;\n this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`);\n return true;\n }\n\n /**\n * @private\n */\n _mouseMove(evt) {\n let width = evt.clientX;\n // For sidebar resizing to work correctly in RTL mode, invert the width.\n if (this.isRTL) {\n width = this.outerContainerWidth - width;\n }\n this._updateWidth(width);\n }\n\n /**\n * @private\n */\n _mouseUp(evt) {\n // Re-enable the `transition-duration` rules when sidebar resizing ends...\n this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\n // ... and ensure that rendering will always be triggered.\n this.eventBus.dispatch(\"resize\", { source: this });\n\n const _boundEvents = this._boundEvents;\n window.removeEventListener(\"mousemove\", _boundEvents.mouseMove);\n window.removeEventListener(\"mouseup\", _boundEvents.mouseUp);\n }\n\n /**\n * @private\n */\n _addEventListeners() {\n const _boundEvents = this._boundEvents;\n _boundEvents.mouseMove = this._mouseMove.bind(this);\n _boundEvents.mouseUp = this._mouseUp.bind(this);\n\n this.resizer.addEventListener(\"mousedown\", evt => {\n if (evt.button !== 0) {\n return;\n }\n // Disable the `transition-duration` rules when sidebar resizing begins,\n // in order to improve responsiveness and to avoid visual glitches.\n this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\n\n window.addEventListener(\"mousemove\", _boundEvents.mouseMove);\n window.addEventListener(\"mouseup\", _boundEvents.mouseUp);\n });\n\n this.eventBus._on(\"sidebarviewchanged\", evt => {\n this.sidebarOpen = !!evt?.view;\n });\n\n this.eventBus._on(\"resize\", evt => {\n // When the *entire* viewer is resized, such that it becomes narrower,\n // ensure that the sidebar doesn't end up being too wide.\n if (evt?.source !== window) {\n return;\n }\n // Always reset the cached width when the viewer is resized.\n this._outerContainerWidth = null;\n\n if (!this._width) {\n // The sidebar hasn't been resized, hence no need to adjust its width.\n return;\n }\n // NOTE: If the sidebar is closed, we don't need to worry about\n // visual glitches nor ensure that rendering is triggered.\n if (!this.sidebarOpen) {\n this._updateWidth(this._width);\n return;\n }\n this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\n const updated = this._updateWidth(this._width);\n\n Promise.resolve().then(() => {\n this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\n // Trigger rendering if the sidebar width changed, to avoid\n // depending on the order in which 'resize' events are handled.\n if (updated) {\n this.eventBus.dispatch(\"resize\", { source: this });\n }\n });\n });\n }\n}\n\nexport { PDFSidebarResizer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_rendering_queue\").PDFRenderingQueue} PDFRenderingQueue */\n\nimport {\n getVisibleElements,\n isValidRotation,\n RenderingStates,\n scrollIntoView,\n watchScroll,\n} from \"./ui_utils.js\";\nimport { PDFThumbnailView, TempImageFactory } from \"./pdf_thumbnail_view.js\";\n\nconst THUMBNAIL_SCROLL_MARGIN = -19;\nconst THUMBNAIL_SELECTED_CLASS = \"selected\";\n\n/**\n * @typedef {Object} PDFThumbnailViewerOptions\n * @property {HTMLDivElement} container - The container for the thumbnail\n * elements.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {IL10n} l10n - Localization service.\n */\n\n/**\n * Viewer control to display thumbnails for pages in a PDF document.\n */\nclass PDFThumbnailViewer {\n /**\n * @param {PDFThumbnailViewerOptions} options\n */\n constructor({ container, eventBus, linkService, renderingQueue, l10n }) {\n this.container = container;\n this.linkService = linkService;\n this.renderingQueue = renderingQueue;\n this.l10n = l10n;\n\n this.scroll = watchScroll(this.container, this._scrollUpdated.bind(this));\n this._resetView();\n\n eventBus._on(\"optionalcontentconfigchanged\", () => {\n // Ensure that the thumbnails always render with the *default* optional\n // content configuration.\n this._setImageDisabled = true;\n });\n }\n\n /**\n * @private\n */\n _scrollUpdated() {\n this.renderingQueue.renderHighestPriority();\n }\n\n getThumbnail(index) {\n return this._thumbnails[index];\n }\n\n /**\n * @private\n */\n _getVisibleThumbs() {\n return getVisibleElements({\n scrollEl: this.container,\n views: this._thumbnails,\n });\n }\n\n scrollThumbnailIntoView(pageNumber) {\n if (!this.pdfDocument) {\n return;\n }\n const thumbnailView = this._thumbnails[pageNumber - 1];\n\n if (!thumbnailView) {\n console.error('scrollThumbnailIntoView: Invalid \"pageNumber\" parameter.');\n return;\n }\n\n if (pageNumber !== this._currentPageNumber) {\n const prevThumbnailView = this._thumbnails[this._currentPageNumber - 1];\n // Remove the highlight from the previous thumbnail...\n prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS);\n // ... and add the highlight to the new thumbnail.\n thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);\n }\n const { first, last, views } = this._getVisibleThumbs();\n\n // If the thumbnail isn't currently visible, scroll it into view.\n if (views.length > 0) {\n let shouldScroll = false;\n if (pageNumber <= first.id || pageNumber >= last.id) {\n shouldScroll = true;\n } else {\n for (const { id, percent } of views) {\n if (id !== pageNumber) {\n continue;\n }\n shouldScroll = percent < 100;\n break;\n }\n }\n if (shouldScroll) {\n scrollIntoView(thumbnailView.div, { top: THUMBNAIL_SCROLL_MARGIN });\n }\n }\n\n this._currentPageNumber = pageNumber;\n }\n\n get pagesRotation() {\n return this._pagesRotation;\n }\n\n set pagesRotation(rotation) {\n if (!isValidRotation(rotation)) {\n throw new Error(\"Invalid thumbnails rotation angle.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n if (this._pagesRotation === rotation) {\n return; // The rotation didn't change.\n }\n this._pagesRotation = rotation;\n\n const updateArgs = { rotation };\n for (const thumbnail of this._thumbnails) {\n thumbnail.update(updateArgs);\n }\n }\n\n cleanup() {\n for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {\n if (\n this._thumbnails[i] &&\n this._thumbnails[i].renderingState !== RenderingStates.FINISHED\n ) {\n this._thumbnails[i].reset();\n }\n }\n TempImageFactory.destroyCanvas();\n }\n\n /**\n * @private\n */\n _resetView() {\n this._thumbnails = [];\n this._currentPageNumber = 1;\n this._pageLabels = null;\n this._pagesRotation = 0;\n this._optionalContentConfigPromise = null;\n this._setImageDisabled = false;\n\n // Remove the thumbnails from the DOM.\n this.container.textContent = \"\";\n }\n\n /**\n * @param {PDFDocumentProxy} pdfDocument\n */\n setDocument(pdfDocument) {\n if (this.pdfDocument) {\n this._cancelRendering();\n this._resetView();\n }\n\n this.pdfDocument = pdfDocument;\n if (!pdfDocument) {\n return;\n }\n const firstPagePromise = pdfDocument.getPage(1);\n const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();\n\n firstPagePromise\n .then(firstPdfPage => {\n this._optionalContentConfigPromise = optionalContentConfigPromise;\n\n const pagesCount = pdfDocument.numPages;\n const viewport = firstPdfPage.getViewport({ scale: 1 });\n const checkSetImageDisabled = () => {\n return this._setImageDisabled;\n };\n\n for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {\n const thumbnail = new PDFThumbnailView({\n container: this.container,\n id: pageNum,\n defaultViewport: viewport.clone(),\n optionalContentConfigPromise,\n linkService: this.linkService,\n renderingQueue: this.renderingQueue,\n checkSetImageDisabled,\n l10n: this.l10n,\n });\n this._thumbnails.push(thumbnail);\n }\n // Set the first `pdfPage` immediately, since it's already loaded,\n // rather than having to repeat the `PDFDocumentProxy.getPage` call in\n // the `this.#ensurePdfPageLoaded` method before rendering can start.\n const firstThumbnailView = this._thumbnails[0];\n if (firstThumbnailView) {\n firstThumbnailView.setPdfPage(firstPdfPage);\n }\n\n // Ensure that the current thumbnail is always highlighted on load.\n const thumbnailView = this._thumbnails[this._currentPageNumber - 1];\n thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);\n })\n .catch(reason => {\n console.error(\"Unable to initialize thumbnail viewer\", reason);\n });\n }\n\n /**\n * @private\n */\n _cancelRendering() {\n for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {\n if (this._thumbnails[i]) {\n this._thumbnails[i].cancelRendering();\n }\n }\n }\n\n /**\n * @param {Array|null} labels\n */\n setPageLabels(labels) {\n if (!this.pdfDocument) {\n return;\n }\n if (!labels) {\n this._pageLabels = null;\n } else if (\n !(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)\n ) {\n this._pageLabels = null;\n console.error(\"PDFThumbnailViewer_setPageLabels: Invalid page labels.\");\n } else {\n this._pageLabels = labels;\n }\n // Update all the `PDFThumbnailView` instances.\n for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {\n this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null);\n }\n }\n\n /**\n * @param {PDFThumbnailView} thumbView\n * @returns {Promise<PDFPageProxy | null>}\n */\n async #ensurePdfPageLoaded(thumbView) {\n if (thumbView.pdfPage) {\n return thumbView.pdfPage;\n }\n try {\n const pdfPage = await this.pdfDocument.getPage(thumbView.id);\n if (!thumbView.pdfPage) {\n thumbView.setPdfPage(pdfPage);\n }\n return pdfPage;\n } catch (reason) {\n console.error(\"Unable to get page for thumb view\", reason);\n return null; // Page error -- there is nothing that can be done.\n }\n }\n\n #getScrollAhead(visible) {\n if (visible.first?.id === 1) {\n return true;\n } else if (visible.last?.id === this._thumbnails.length) {\n return false;\n }\n return this.scroll.down;\n }\n\n forceRendering() {\n const visibleThumbs = this._getVisibleThumbs();\n const scrollAhead = this.#getScrollAhead(visibleThumbs);\n const thumbView = this.renderingQueue.getHighestPriority(\n visibleThumbs,\n this._thumbnails,\n scrollAhead\n );\n if (thumbView) {\n this.#ensurePdfPageLoaded(thumbView).then(() => {\n this.renderingQueue.renderView(thumbView);\n });\n return true;\n }\n return false;\n }\n}\n\nexport { PDFThumbnailViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n/** @typedef {import(\"./interfaces\").IRenderableView} IRenderableView */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_rendering_queue\").PDFRenderingQueue} PDFRenderingQueue */\n\nimport { OutputScale, RenderingStates } from \"./ui_utils.js\";\nimport { RenderingCancelledException } from \"pdfjs-lib\";\n\nconst DRAW_UPSCALE_FACTOR = 2; // See comment in `PDFThumbnailView.draw` below.\nconst MAX_NUM_SCALING_STEPS = 3;\nconst THUMBNAIL_CANVAS_BORDER_WIDTH = 1; // px\nconst THUMBNAIL_WIDTH = 98; // px\n\n/**\n * @typedef {Object} PDFThumbnailViewOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {number} id - The thumbnail's unique ID (normally its number).\n * @property {PageViewport} defaultViewport - The page viewport.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that is resolved with an {@link OptionalContentConfig} instance.\n * The default value is `null`.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {function} checkSetImageDisabled\n * @property {IL10n} l10n - Localization service.\n */\n\nclass TempImageFactory {\n static #tempCanvas = null;\n\n static getCanvas(width, height) {\n const tempCanvas = (this.#tempCanvas ||= document.createElement(\"canvas\"));\n tempCanvas.width = width;\n tempCanvas.height = height;\n\n // Since this is a temporary canvas, we need to fill it with a white\n // background ourselves. `_getPageDrawContext` uses CSS rules for this.\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n tempCanvas.mozOpaque = true;\n }\n\n const ctx = tempCanvas.getContext(\"2d\", { alpha: false });\n ctx.save();\n ctx.fillStyle = \"rgb(255, 255, 255)\";\n ctx.fillRect(0, 0, width, height);\n ctx.restore();\n return [tempCanvas, tempCanvas.getContext(\"2d\")];\n }\n\n static destroyCanvas() {\n const tempCanvas = this.#tempCanvas;\n if (tempCanvas) {\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n tempCanvas.width = 0;\n tempCanvas.height = 0;\n }\n this.#tempCanvas = null;\n }\n}\n\n/**\n * @implements {IRenderableView}\n */\nclass PDFThumbnailView {\n /**\n * @param {PDFThumbnailViewOptions} options\n */\n constructor({\n container,\n id,\n defaultViewport,\n optionalContentConfigPromise,\n linkService,\n renderingQueue,\n checkSetImageDisabled,\n l10n,\n }) {\n this.id = id;\n this.renderingId = \"thumbnail\" + id;\n this.pageLabel = null;\n\n this.pdfPage = null;\n this.rotation = 0;\n this.viewport = defaultViewport;\n this.pdfPageRotate = defaultViewport.rotation;\n this._optionalContentConfigPromise = optionalContentConfigPromise || null;\n\n this.linkService = linkService;\n this.renderingQueue = renderingQueue;\n\n this.renderTask = null;\n this.renderingState = RenderingStates.INITIAL;\n this.resume = null;\n this._checkSetImageDisabled =\n checkSetImageDisabled ||\n function () {\n return false;\n };\n\n const pageWidth = this.viewport.width,\n pageHeight = this.viewport.height,\n pageRatio = pageWidth / pageHeight;\n\n this.canvasWidth = THUMBNAIL_WIDTH;\n this.canvasHeight = (this.canvasWidth / pageRatio) | 0;\n this.scale = this.canvasWidth / pageWidth;\n\n this.l10n = l10n;\n\n const anchor = document.createElement(\"a\");\n anchor.href = linkService.getAnchorUrl(\"#page=\" + id);\n this._thumbPageTitle.then(msg => {\n anchor.title = msg;\n });\n anchor.onclick = function () {\n linkService.goToPage(id);\n return false;\n };\n this.anchor = anchor;\n\n const div = document.createElement(\"div\");\n div.className = \"thumbnail\";\n div.setAttribute(\"data-page-number\", this.id);\n this.div = div;\n\n const ring = document.createElement(\"div\");\n ring.className = \"thumbnailSelectionRing\";\n const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;\n ring.style.width = this.canvasWidth + borderAdjustment + \"px\";\n ring.style.height = this.canvasHeight + borderAdjustment + \"px\";\n this.ring = ring;\n\n div.appendChild(ring);\n anchor.appendChild(div);\n container.appendChild(anchor);\n }\n\n setPdfPage(pdfPage) {\n this.pdfPage = pdfPage;\n this.pdfPageRotate = pdfPage.rotate;\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = pdfPage.getViewport({ scale: 1, rotation: totalRotation });\n this.reset();\n }\n\n reset() {\n this.cancelRendering();\n this.renderingState = RenderingStates.INITIAL;\n\n const pageWidth = this.viewport.width,\n pageHeight = this.viewport.height,\n pageRatio = pageWidth / pageHeight;\n\n this.canvasHeight = (this.canvasWidth / pageRatio) | 0;\n this.scale = this.canvasWidth / pageWidth;\n\n this.div.removeAttribute(\"data-loaded\");\n const ring = this.ring;\n ring.textContent = \"\"; // Remove the thumbnail from the DOM.\n const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;\n ring.style.width = this.canvasWidth + borderAdjustment + \"px\";\n ring.style.height = this.canvasHeight + borderAdjustment + \"px\";\n\n if (this.canvas) {\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this.canvas.width = 0;\n this.canvas.height = 0;\n delete this.canvas;\n }\n if (this.image) {\n this.image.removeAttribute(\"src\");\n delete this.image;\n }\n }\n\n update({ rotation = null }) {\n if (typeof rotation === \"number\") {\n this.rotation = rotation; // The rotation may be zero.\n }\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = this.viewport.clone({\n scale: 1,\n rotation: totalRotation,\n });\n this.reset();\n }\n\n /**\n * PLEASE NOTE: Most likely you want to use the `this.reset()` method,\n * rather than calling this one directly.\n */\n cancelRendering() {\n if (this.renderTask) {\n this.renderTask.cancel();\n this.renderTask = null;\n }\n this.resume = null;\n }\n\n /**\n * @private\n */\n _getPageDrawContext(upscaleFactor = 1) {\n // Keep the no-thumbnail outline visible, i.e. `data-loaded === false`,\n // until rendering/image conversion is complete, to avoid display issues.\n const canvas = document.createElement(\"canvas\");\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n canvas.mozOpaque = true;\n }\n const ctx = canvas.getContext(\"2d\", { alpha: false });\n const outputScale = new OutputScale();\n\n canvas.width = (upscaleFactor * this.canvasWidth * outputScale.sx) | 0;\n canvas.height = (upscaleFactor * this.canvasHeight * outputScale.sy) | 0;\n\n const transform = outputScale.scaled\n ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0]\n : null;\n\n return { ctx, canvas, transform };\n }\n\n /**\n * @private\n */\n _convertCanvasToImage(canvas) {\n if (this.renderingState !== RenderingStates.FINISHED) {\n throw new Error(\"_convertCanvasToImage: Rendering has not finished.\");\n }\n const reducedCanvas = this._reduceImage(canvas);\n\n const image = document.createElement(\"img\");\n image.className = \"thumbnailImage\";\n this._thumbPageCanvas.then(msg => {\n image.setAttribute(\"aria-label\", msg);\n });\n image.style.width = this.canvasWidth + \"px\";\n image.style.height = this.canvasHeight + \"px\";\n\n image.src = reducedCanvas.toDataURL();\n this.image = image;\n\n this.div.setAttribute(\"data-loaded\", true);\n this.ring.appendChild(image);\n\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n reducedCanvas.width = 0;\n reducedCanvas.height = 0;\n }\n\n draw() {\n if (this.renderingState !== RenderingStates.INITIAL) {\n console.error(\"Must be in new state before drawing\");\n return Promise.resolve();\n }\n const { pdfPage } = this;\n\n if (!pdfPage) {\n this.renderingState = RenderingStates.FINISHED;\n return Promise.reject(new Error(\"pdfPage is not loaded\"));\n }\n\n this.renderingState = RenderingStates.RUNNING;\n\n const finishRenderTask = async (error = null) => {\n // The renderTask may have been replaced by a new one, so only remove\n // the reference to the renderTask if it matches the one that is\n // triggering this callback.\n if (renderTask === this.renderTask) {\n this.renderTask = null;\n }\n\n if (error instanceof RenderingCancelledException) {\n return;\n }\n this.renderingState = RenderingStates.FINISHED;\n this._convertCanvasToImage(canvas);\n\n if (error) {\n throw error;\n }\n };\n\n // Render the thumbnail at a larger size and downsize the canvas (similar\n // to `setImage`), to improve consistency between thumbnails created by\n // the `draw` and `setImage` methods (fixes issue 8233).\n // NOTE: To primarily avoid increasing memory usage too much, but also to\n // reduce downsizing overhead, we purposely limit the up-scaling factor.\n const { ctx, canvas, transform } =\n this._getPageDrawContext(DRAW_UPSCALE_FACTOR);\n const drawViewport = this.viewport.clone({\n scale: DRAW_UPSCALE_FACTOR * this.scale,\n });\n const renderContinueCallback = cont => {\n if (!this.renderingQueue.isHighestPriority(this)) {\n this.renderingState = RenderingStates.PAUSED;\n this.resume = () => {\n this.renderingState = RenderingStates.RUNNING;\n cont();\n };\n return;\n }\n cont();\n };\n\n const renderContext = {\n canvasContext: ctx,\n transform,\n viewport: drawViewport,\n optionalContentConfigPromise: this._optionalContentConfigPromise,\n };\n const renderTask = (this.renderTask = pdfPage.render(renderContext));\n renderTask.onContinue = renderContinueCallback;\n\n const resultPromise = renderTask.promise.then(\n function () {\n return finishRenderTask(null);\n },\n function (error) {\n return finishRenderTask(error);\n }\n );\n resultPromise.finally(() => {\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvas.width = 0;\n canvas.height = 0;\n\n // Only trigger cleanup, once rendering has finished, when the current\n // pageView is *not* cached on the `BaseViewer`-instance.\n const pageCached = this.linkService.isPageCached(this.id);\n if (!pageCached) {\n this.pdfPage?.cleanup();\n }\n });\n\n return resultPromise;\n }\n\n setImage(pageView) {\n if (this._checkSetImageDisabled()) {\n return;\n }\n if (this.renderingState !== RenderingStates.INITIAL) {\n return;\n }\n const { canvas, pdfPage } = pageView;\n if (!canvas) {\n return;\n }\n if (!this.pdfPage) {\n this.setPdfPage(pdfPage);\n }\n this.renderingState = RenderingStates.FINISHED;\n this._convertCanvasToImage(canvas);\n }\n\n /**\n * @private\n */\n _reduceImage(img) {\n const { ctx, canvas } = this._getPageDrawContext();\n\n if (img.width <= 2 * canvas.width) {\n ctx.drawImage(\n img,\n 0,\n 0,\n img.width,\n img.height,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n return canvas;\n }\n // drawImage does an awful job of rescaling the image, doing it gradually.\n let reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS;\n let reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS;\n const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(\n reducedWidth,\n reducedHeight\n );\n\n while (reducedWidth > img.width || reducedHeight > img.height) {\n reducedWidth >>= 1;\n reducedHeight >>= 1;\n }\n reducedImageCtx.drawImage(\n img,\n 0,\n 0,\n img.width,\n img.height,\n 0,\n 0,\n reducedWidth,\n reducedHeight\n );\n while (reducedWidth > 2 * canvas.width) {\n reducedImageCtx.drawImage(\n reducedImage,\n 0,\n 0,\n reducedWidth,\n reducedHeight,\n 0,\n 0,\n reducedWidth >> 1,\n reducedHeight >> 1\n );\n reducedWidth >>= 1;\n reducedHeight >>= 1;\n }\n ctx.drawImage(\n reducedImage,\n 0,\n 0,\n reducedWidth,\n reducedHeight,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n return canvas;\n }\n\n get _thumbPageTitle() {\n return this.l10n.get(\"thumb_page_title\", {\n page: this.pageLabel ?? this.id,\n });\n }\n\n get _thumbPageCanvas() {\n return this.l10n.get(\"thumb_page_canvas\", {\n page: this.pageLabel ?? this.id,\n });\n }\n\n /**\n * @param {string|null} label\n */\n setPageLabel(label) {\n this.pageLabel = typeof label === \"string\" ? label : null;\n\n this._thumbPageTitle.then(msg => {\n this.anchor.title = msg;\n });\n\n if (this.renderingState !== RenderingStates.FINISHED) {\n return;\n }\n\n this._thumbPageCanvas.then(msg => {\n this.image?.setAttribute(\"aria-label\", msg);\n });\n }\n}\n\nexport { PDFThumbnailView, TempImageFactory };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ScrollMode, SpreadMode } from \"./ui_utils.js\";\nimport { BaseViewer } from \"./base_viewer.js\";\n\nclass PDFViewer extends BaseViewer {}\n\nclass PDFSinglePageViewer extends BaseViewer {\n _resetView() {\n super._resetView();\n this._scrollMode = ScrollMode.PAGE;\n this._spreadMode = SpreadMode.NONE;\n }\n\n // eslint-disable-next-line accessor-pairs\n set scrollMode(mode) {}\n\n _updateScrollMode() {}\n\n // eslint-disable-next-line accessor-pairs\n set spreadMode(mode) {}\n\n _updateSpreadMode() {}\n}\n\nexport { PDFSinglePageViewer, PDFViewer };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFAnnotationLayerFactory} IPDFAnnotationLayerFactory */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFStructTreeLayerFactory} IPDFStructTreeLayerFactory */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFTextLayerFactory} IPDFTextLayerFactory */\n/** @typedef {import(\"./interfaces\").IPDFXfaLayerFactory} IPDFXfaLayerFactory */\n\nimport {\n AnnotationMode,\n createPromiseCapability,\n PermissionFlag,\n PixelsPerInch,\n version,\n} from \"pdfjs-lib\";\nimport {\n DEFAULT_SCALE,\n DEFAULT_SCALE_DELTA,\n DEFAULT_SCALE_VALUE,\n getVisibleElements,\n isPortraitOrientation,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n MAX_AUTO_SCALE,\n MAX_SCALE,\n MIN_SCALE,\n PresentationModeState,\n RendererType,\n RenderingStates,\n SCROLLBAR_PADDING,\n scrollIntoView,\n ScrollMode,\n SpreadMode,\n TextLayerMode,\n UNKNOWN_SCALE,\n VERTICAL_PADDING,\n watchScroll,\n} from \"./ui_utils.js\";\nimport { AnnotationLayerBuilder } from \"./annotation_layer_builder.js\";\nimport { NullL10n } from \"./l10n_utils.js\";\nimport { PDFPageView } from \"./pdf_page_view.js\";\nimport { PDFRenderingQueue } from \"./pdf_rendering_queue.js\";\nimport { SimpleLinkService } from \"./pdf_link_service.js\";\nimport { StructTreeLayerBuilder } from \"./struct_tree_layer_builder.js\";\nimport { TextHighlighter } from \"./text_highlighter.js\";\nimport { TextLayerBuilder } from \"./text_layer_builder.js\";\nimport { XfaLayerBuilder } from \"./xfa_layer_builder.js\";\n\nconst DEFAULT_CACHE_SIZE = 10;\nconst ENABLE_PERMISSIONS_CLASS = \"enablePermissions\";\n\nconst PagesCountLimit = {\n FORCE_SCROLL_MODE_PAGE: 15000,\n FORCE_LAZY_PAGE_INIT: 7500,\n PAUSE_EAGER_PAGE_INIT: 250,\n};\n\n/**\n * @typedef {Object} PDFViewerOptions\n * @property {HTMLDivElement} container - The container for the viewer element.\n * @property {HTMLDivElement} [viewer] - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {IDownloadManager} [downloadManager] - The download manager\n * component.\n * @property {PDFFindController} [findController] - The find controller\n * component.\n * @property {PDFScriptingManager} [scriptingManager] - The scripting manager\n * component.\n * @property {PDFRenderingQueue} [renderingQueue] - The rendering queue object.\n * @property {boolean} [removePageBorders] - Removes the border shadow around\n * the pages. The default value is `false`.\n * @property {number} [textLayerMode] - Controls if the text layer used for\n * selection and searching is created, and if the improved text selection\n * behaviour is enabled. The constants from {TextLayerMode} should be used.\n * The default value is `TextLayerMode.ENABLE`.\n * @property {number} [annotationMode] - Controls if the annotation layer is\n * created, and if interactive form elements or `AnnotationStorage`-data are\n * being rendered. The constants from {@link AnnotationMode} should be used;\n * see also {@link RenderParameters} and {@link GetOperatorListParameters}.\n * The default value is `AnnotationMode.ENABLE_FORMS`.\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * mainly for annotation icons. Include trailing slash.\n * @property {boolean} [enablePrintAutoRotate] - Enables automatic rotation of\n * landscape pages upon printing. The default is `false`.\n * @property {string} renderer - 'canvas' or 'svg'. The default is 'canvas'.\n * @property {boolean} [useOnlyCssZoom] - Enables CSS only zooming. The default\n * value is `false`.\n * @property {number} [maxCanvasPixels] - The maximum supported canvas size in\n * total pixels, i.e. width * height. Use -1 for no limit. The default value\n * is 4096 * 4096 (16 mega-pixels).\n * @property {IL10n} l10n - Localization service.\n * @property {boolean} [enablePermissions] - Enables PDF document permissions,\n * when they exist. The default value is `false`.\n */\n\nclass PDFPageViewBuffer {\n // Here we rely on the fact that `Set`s preserve the insertion order.\n #buf = new Set();\n\n #size = 0;\n\n constructor(size) {\n this.#size = size;\n }\n\n push(view) {\n const buf = this.#buf;\n if (buf.has(view)) {\n buf.delete(view); // Move the view to the \"end\" of the buffer.\n }\n buf.add(view);\n\n if (buf.size > this.#size) {\n this.#destroyFirstView();\n }\n }\n\n /**\n * After calling resize, the size of the buffer will be `newSize`.\n * The optional parameter `idsToKeep` is, if present, a Set of page-ids to\n * push to the back of the buffer, delaying their destruction. The size of\n * `idsToKeep` has no impact on the final size of the buffer; if `idsToKeep`\n * is larger than `newSize`, some of those pages will be destroyed anyway.\n */\n resize(newSize, idsToKeep = null) {\n this.#size = newSize;\n\n const buf = this.#buf;\n if (idsToKeep) {\n const ii = buf.size;\n let i = 1;\n for (const view of buf) {\n if (idsToKeep.has(view.id)) {\n buf.delete(view); // Move the view to the \"end\" of the buffer.\n buf.add(view);\n }\n if (++i > ii) {\n break;\n }\n }\n }\n\n while (buf.size > this.#size) {\n this.#destroyFirstView();\n }\n }\n\n has(view) {\n return this.#buf.has(view);\n }\n\n [Symbol.iterator]() {\n return this.#buf.keys();\n }\n\n #destroyFirstView() {\n const firstView = this.#buf.keys().next().value;\n\n firstView?.destroy();\n this.#buf.delete(firstView);\n }\n}\n\n/**\n * Simple viewer control to display PDF content/pages.\n *\n * @implements {IPDFAnnotationLayerFactory}\n * @implements {IPDFStructTreeLayerFactory}\n * @implements {IPDFTextLayerFactory}\n * @implements {IPDFXfaLayerFactory}\n */\nclass BaseViewer {\n #buffer = null;\n\n #annotationMode = AnnotationMode.ENABLE_FORMS;\n\n #previousAnnotationMode = null;\n\n #enablePermissions = false;\n\n #previousContainerHeight = 0;\n\n #scrollModePageState = null;\n\n #onVisibilityChange = null;\n\n /**\n * @param {PDFViewerOptions} options\n */\n constructor(options) {\n if (this.constructor === BaseViewer) {\n throw new Error(\"Cannot initialize BaseViewer.\");\n }\n const viewerVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n if (version !== viewerVersion) {\n throw new Error(\n `The API version \"${version}\" does not match the Viewer version \"${viewerVersion}\".`\n );\n }\n this.container = options.container;\n this.viewer = options.viewer || options.container.firstElementChild;\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n ) {\n if (\n !(\n this.container?.tagName.toUpperCase() === \"DIV\" &&\n this.viewer?.tagName.toUpperCase() === \"DIV\"\n )\n ) {\n throw new Error(\"Invalid `container` and/or `viewer` option.\");\n }\n\n if (\n this.container.offsetParent &&\n getComputedStyle(this.container).position !== \"absolute\"\n ) {\n throw new Error(\"The `container` must be absolutely positioned.\");\n }\n }\n this.eventBus = options.eventBus;\n this.linkService = options.linkService || new SimpleLinkService();\n this.downloadManager = options.downloadManager || null;\n this.findController = options.findController || null;\n this._scriptingManager = options.scriptingManager || null;\n this.removePageBorders = options.removePageBorders || false;\n this.textLayerMode = options.textLayerMode ?? TextLayerMode.ENABLE;\n this.#annotationMode =\n options.annotationMode ?? AnnotationMode.ENABLE_FORMS;\n this.imageResourcesPath = options.imageResourcesPath || \"\";\n this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;\n this.renderer = options.renderer || RendererType.CANVAS;\n this.useOnlyCssZoom = options.useOnlyCssZoom || false;\n this.maxCanvasPixels = options.maxCanvasPixels;\n this.l10n = options.l10n || NullL10n;\n this.#enablePermissions = options.enablePermissions || false;\n\n this.defaultRenderingQueue = !options.renderingQueue;\n if (this.defaultRenderingQueue) {\n // Custom rendering queue is not specified, using default one\n this.renderingQueue = new PDFRenderingQueue();\n this.renderingQueue.setViewer(this);\n } else {\n this.renderingQueue = options.renderingQueue;\n }\n this._doc = document.documentElement;\n\n this.scroll = watchScroll(this.container, this._scrollUpdate.bind(this));\n this.presentationModeState = PresentationModeState.UNKNOWN;\n this._onBeforeDraw = this._onAfterDraw = null;\n this._resetView();\n\n if (this.removePageBorders) {\n this.viewer.classList.add(\"removePageBorders\");\n }\n // Defer the dispatching of this event, to give other viewer components\n // time to initialize *and* register 'baseviewerinit' event listeners.\n Promise.resolve().then(() => {\n this.eventBus.dispatch(\"baseviewerinit\", { source: this });\n });\n }\n\n get pagesCount() {\n return this._pages.length;\n }\n\n getPageView(index) {\n return this._pages[index];\n }\n\n /**\n * @type {boolean} - True if all {PDFPageView} objects are initialized.\n */\n get pageViewsReady() {\n if (!this._pagesCapability.settled) {\n return false;\n }\n // Prevent printing errors when 'disableAutoFetch' is set, by ensuring\n // that *all* pages have in fact been completely loaded.\n return this._pages.every(function (pageView) {\n return pageView?.pdfPage;\n });\n }\n\n /**\n * @type {boolean}\n */\n get renderForms() {\n return this.#annotationMode === AnnotationMode.ENABLE_FORMS;\n }\n\n /**\n * @type {boolean}\n */\n get enableScripting() {\n return !!this._scriptingManager;\n }\n\n /**\n * @type {number}\n */\n get currentPageNumber() {\n return this._currentPageNumber;\n }\n\n /**\n * @param {number} val - The page number.\n */\n set currentPageNumber(val) {\n if (!Number.isInteger(val)) {\n throw new Error(\"Invalid page number.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n // The intent can be to just reset a scroll position and/or scale.\n if (!this._setCurrentPageNumber(val, /* resetCurrentPageView = */ true)) {\n console.error(`currentPageNumber: \"${val}\" is not a valid page.`);\n }\n }\n\n /**\n * @returns {boolean} Whether the pageNumber is valid (within bounds).\n * @private\n */\n _setCurrentPageNumber(val, resetCurrentPageView = false) {\n if (this._currentPageNumber === val) {\n if (resetCurrentPageView) {\n this._resetCurrentPageView();\n }\n return true;\n }\n\n if (!(0 < val && val <= this.pagesCount)) {\n return false;\n }\n const previous = this._currentPageNumber;\n this._currentPageNumber = val;\n\n this.eventBus.dispatch(\"pagechanging\", {\n source: this,\n pageNumber: val,\n pageLabel: this._pageLabels?.[val - 1] ?? null,\n previous,\n });\n\n if (resetCurrentPageView) {\n this._resetCurrentPageView();\n }\n return true;\n }\n\n /**\n * @type {string|null} Returns the current page label, or `null` if no page\n * labels exist.\n */\n get currentPageLabel() {\n return this._pageLabels?.[this._currentPageNumber - 1] ?? null;\n }\n\n /**\n * @param {string} val - The page label.\n */\n set currentPageLabel(val) {\n if (!this.pdfDocument) {\n return;\n }\n let page = val | 0; // Fallback page number.\n if (this._pageLabels) {\n const i = this._pageLabels.indexOf(val);\n if (i >= 0) {\n page = i + 1;\n }\n }\n // The intent can be to just reset a scroll position and/or scale.\n if (!this._setCurrentPageNumber(page, /* resetCurrentPageView = */ true)) {\n console.error(`currentPageLabel: \"${val}\" is not a valid page.`);\n }\n }\n\n /**\n * @type {number}\n */\n get currentScale() {\n return this._currentScale !== UNKNOWN_SCALE\n ? this._currentScale\n : DEFAULT_SCALE;\n }\n\n /**\n * @param {number} val - Scale of the pages in percents.\n */\n set currentScale(val) {\n if (isNaN(val)) {\n throw new Error(\"Invalid numeric scale.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n this._setScale(val, false);\n }\n\n /**\n * @type {string}\n */\n get currentScaleValue() {\n return this._currentScaleValue;\n }\n\n /**\n * @param val - The scale of the pages (in percent or predefined value).\n */\n set currentScaleValue(val) {\n if (!this.pdfDocument) {\n return;\n }\n this._setScale(val, false);\n }\n\n /**\n * @type {number}\n */\n get pagesRotation() {\n return this._pagesRotation;\n }\n\n /**\n * @param {number} rotation - The rotation of the pages (0, 90, 180, 270).\n */\n set pagesRotation(rotation) {\n if (!isValidRotation(rotation)) {\n throw new Error(\"Invalid pages rotation angle.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n // Normalize the rotation, by clamping it to the [0, 360) range.\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n if (this._pagesRotation === rotation) {\n return; // The rotation didn't change.\n }\n this._pagesRotation = rotation;\n\n const pageNumber = this._currentPageNumber;\n\n const updateArgs = { rotation };\n for (const pageView of this._pages) {\n pageView.update(updateArgs);\n }\n // Prevent errors in case the rotation changes *before* the scale has been\n // set to a non-default value.\n if (this._currentScaleValue) {\n this._setScale(this._currentScaleValue, true);\n }\n\n this.eventBus.dispatch(\"rotationchanging\", {\n source: this,\n pagesRotation: rotation,\n pageNumber,\n });\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n }\n\n get firstPagePromise() {\n return this.pdfDocument ? this._firstPageCapability.promise : null;\n }\n\n get onePageRendered() {\n return this.pdfDocument ? this._onePageRenderedCapability.promise : null;\n }\n\n get pagesPromise() {\n return this.pdfDocument ? this._pagesCapability.promise : null;\n }\n\n /**\n * Currently only *some* permissions are supported.\n */\n #initializePermissions(permissions) {\n if (!permissions) {\n return;\n }\n\n if (!permissions.includes(PermissionFlag.COPY)) {\n this.viewer.classList.add(ENABLE_PERMISSIONS_CLASS);\n }\n\n if (\n !permissions.includes(PermissionFlag.MODIFY_ANNOTATIONS) &&\n !permissions.includes(PermissionFlag.FILL_INTERACTIVE_FORMS)\n ) {\n if (this.#annotationMode === AnnotationMode.ENABLE_FORMS) {\n this.#previousAnnotationMode = this.#annotationMode; // Allow resetting.\n this.#annotationMode = AnnotationMode.ENABLE;\n }\n }\n }\n\n #onePageRenderedOrForceFetch() {\n // Unless the viewer *and* its pages are visible, rendering won't start and\n // `this._onePageRenderedCapability` thus won't be resolved.\n // To ensure that automatic printing, on document load, still works even in\n // those cases we force-allow fetching of all pages when:\n // - The current window/tab is inactive, which will prevent rendering since\n // `requestAnimationFrame` is being used; fixes bug 1746213.\n // - The viewer is hidden in the DOM, e.g. in a `display: none` <iframe>\n // element; fixes bug 1618621.\n // - The viewer is visible, but none of the pages are (e.g. if the\n // viewer is very small); fixes bug 1618955.\n if (\n document.visibilityState === \"hidden\" ||\n !this.container.offsetParent ||\n this._getVisiblePages().views.length === 0\n ) {\n return Promise.resolve();\n }\n\n // Handle the window/tab becoming inactive *after* rendering has started;\n // fixes (another part of) bug 1746213.\n const visibilityChangePromise = new Promise(resolve => {\n this.#onVisibilityChange = () => {\n if (document.visibilityState !== \"hidden\") {\n return;\n }\n resolve();\n\n document.removeEventListener(\n \"visibilitychange\",\n this.#onVisibilityChange\n );\n this.#onVisibilityChange = null;\n };\n document.addEventListener(\"visibilitychange\", this.#onVisibilityChange);\n });\n\n return Promise.race([\n this._onePageRenderedCapability.promise,\n visibilityChangePromise,\n ]);\n }\n\n /**\n * @param {PDFDocumentProxy} pdfDocument\n */\n setDocument(pdfDocument) {\n if (this.pdfDocument) {\n this.eventBus.dispatch(\"pagesdestroy\", { source: this });\n\n this._cancelRendering();\n this._resetView();\n\n if (this.findController) {\n this.findController.setDocument(null);\n }\n if (this._scriptingManager) {\n this._scriptingManager.setDocument(null);\n }\n }\n\n this.pdfDocument = pdfDocument;\n if (!pdfDocument) {\n return;\n }\n const isPureXfa = pdfDocument.isPureXfa;\n const pagesCount = pdfDocument.numPages;\n const firstPagePromise = pdfDocument.getPage(1);\n // Rendering (potentially) depends on this, hence fetching it immediately.\n const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();\n const permissionsPromise = this.#enablePermissions\n ? pdfDocument.getPermissions()\n : Promise.resolve();\n\n // Given that browsers don't handle huge amounts of DOM-elements very well,\n // enforce usage of PAGE-scrolling when loading *very* long/large documents.\n if (pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {\n console.warn(\n \"Forcing PAGE-scrolling for performance reasons, given the length of the document.\"\n );\n const mode = (this._scrollMode = ScrollMode.PAGE);\n this.eventBus.dispatch(\"scrollmodechanged\", { source: this, mode });\n }\n\n this._pagesCapability.promise.then(\n () => {\n this.eventBus.dispatch(\"pagesloaded\", { source: this, pagesCount });\n },\n () => {\n /* Prevent \"Uncaught (in promise)\"-messages in the console. */\n }\n );\n\n this._onBeforeDraw = evt => {\n const pageView = this._pages[evt.pageNumber - 1];\n if (!pageView) {\n return;\n }\n // Add the page to the buffer at the start of drawing. That way it can be\n // evicted from the buffer and destroyed even if we pause its rendering.\n this.#buffer.push(pageView);\n };\n this.eventBus._on(\"pagerender\", this._onBeforeDraw);\n\n this._onAfterDraw = evt => {\n if (evt.cssTransform || this._onePageRenderedCapability.settled) {\n return;\n }\n this._onePageRenderedCapability.resolve({ timestamp: evt.timestamp });\n\n this.eventBus._off(\"pagerendered\", this._onAfterDraw);\n this._onAfterDraw = null;\n\n if (this.#onVisibilityChange) {\n document.removeEventListener(\n \"visibilitychange\",\n this.#onVisibilityChange\n );\n this.#onVisibilityChange = null;\n }\n };\n this.eventBus._on(\"pagerendered\", this._onAfterDraw);\n\n // Fetch a single page so we can get a viewport that will be the default\n // viewport for all pages\n Promise.all([firstPagePromise, permissionsPromise])\n .then(([firstPdfPage, permissions]) => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the first page resolved.\n }\n this._firstPageCapability.resolve(firstPdfPage);\n this._optionalContentConfigPromise = optionalContentConfigPromise;\n this.#initializePermissions(permissions);\n\n const viewerElement =\n this._scrollMode === ScrollMode.PAGE ? null : this.viewer;\n const scale = this.currentScale;\n const viewport = firstPdfPage.getViewport({\n scale: scale * PixelsPerInch.PDF_TO_CSS_UNITS,\n });\n const textLayerFactory =\n this.textLayerMode !== TextLayerMode.DISABLE && !isPureXfa\n ? this\n : null;\n const annotationLayerFactory =\n this.#annotationMode !== AnnotationMode.DISABLE ? this : null;\n const xfaLayerFactory = isPureXfa ? this : null;\n\n for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {\n const pageView = new PDFPageView({\n container: viewerElement,\n eventBus: this.eventBus,\n id: pageNum,\n scale,\n defaultViewport: viewport.clone(),\n optionalContentConfigPromise,\n renderingQueue: this.renderingQueue,\n textLayerFactory,\n textLayerMode: this.textLayerMode,\n annotationLayerFactory,\n annotationMode: this.#annotationMode,\n xfaLayerFactory,\n textHighlighterFactory: this,\n structTreeLayerFactory: this,\n imageResourcesPath: this.imageResourcesPath,\n renderer: this.renderer,\n useOnlyCssZoom: this.useOnlyCssZoom,\n maxCanvasPixels: this.maxCanvasPixels,\n l10n: this.l10n,\n });\n this._pages.push(pageView);\n }\n // Set the first `pdfPage` immediately, since it's already loaded,\n // rather than having to repeat the `PDFDocumentProxy.getPage` call in\n // the `this.#ensurePdfPageLoaded` method before rendering can start.\n const firstPageView = this._pages[0];\n if (firstPageView) {\n firstPageView.setPdfPage(firstPdfPage);\n this.linkService.cachePageRef(1, firstPdfPage.ref);\n }\n\n if (this._scrollMode === ScrollMode.PAGE) {\n // Ensure that the current page becomes visible on document load.\n this.#ensurePageViewVisible();\n } else if (this._spreadMode !== SpreadMode.NONE) {\n this._updateSpreadMode();\n }\n\n // Fetch all the pages since the viewport is needed before printing\n // starts to create the correct size canvas. Wait until one page is\n // rendered so we don't tie up too many resources early on.\n this.#onePageRenderedOrForceFetch().then(async () => {\n if (this.findController) {\n this.findController.setDocument(pdfDocument); // Enable searching.\n }\n if (this._scriptingManager) {\n this._scriptingManager.setDocument(pdfDocument); // Enable scripting.\n }\n\n // In addition to 'disableAutoFetch' being set, also attempt to reduce\n // resource usage when loading *very* long/large documents.\n if (\n pdfDocument.loadingParams.disableAutoFetch ||\n pagesCount > PagesCountLimit.FORCE_LAZY_PAGE_INIT\n ) {\n // XXX: Printing is semi-broken with auto fetch disabled.\n this._pagesCapability.resolve();\n return;\n }\n let getPagesLeft = pagesCount - 1; // The first page was already loaded.\n\n if (getPagesLeft <= 0) {\n this._pagesCapability.resolve();\n return;\n }\n for (let pageNum = 2; pageNum <= pagesCount; ++pageNum) {\n const promise = pdfDocument.getPage(pageNum).then(\n pdfPage => {\n const pageView = this._pages[pageNum - 1];\n if (!pageView.pdfPage) {\n pageView.setPdfPage(pdfPage);\n }\n this.linkService.cachePageRef(pageNum, pdfPage.ref);\n if (--getPagesLeft === 0) {\n this._pagesCapability.resolve();\n }\n },\n reason => {\n console.error(\n `Unable to get page ${pageNum} to initialize viewer`,\n reason\n );\n if (--getPagesLeft === 0) {\n this._pagesCapability.resolve();\n }\n }\n );\n\n if (pageNum % PagesCountLimit.PAUSE_EAGER_PAGE_INIT === 0) {\n await promise;\n }\n }\n });\n\n this.eventBus.dispatch(\"pagesinit\", { source: this });\n\n pdfDocument.getMetadata().then(({ info }) => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the metadata resolved.\n }\n if (info.Language) {\n this.viewer.lang = info.Language;\n }\n });\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n })\n .catch(reason => {\n console.error(\"Unable to initialize viewer\", reason);\n\n this._pagesCapability.reject(reason);\n });\n }\n\n /**\n * @param {Array|null} labels\n */\n setPageLabels(labels) {\n if (!this.pdfDocument) {\n return;\n }\n if (!labels) {\n this._pageLabels = null;\n } else if (\n !(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)\n ) {\n this._pageLabels = null;\n console.error(`setPageLabels: Invalid page labels.`);\n } else {\n this._pageLabels = labels;\n }\n // Update all the `PDFPageView` instances.\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null);\n }\n }\n\n _resetView() {\n this._pages = [];\n this._currentPageNumber = 1;\n this._currentScale = UNKNOWN_SCALE;\n this._currentScaleValue = null;\n this._pageLabels = null;\n this.#buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);\n this._location = null;\n this._pagesRotation = 0;\n this._optionalContentConfigPromise = null;\n this._firstPageCapability = createPromiseCapability();\n this._onePageRenderedCapability = createPromiseCapability();\n this._pagesCapability = createPromiseCapability();\n this._scrollMode = ScrollMode.VERTICAL;\n this._previousScrollMode = ScrollMode.UNKNOWN;\n this._spreadMode = SpreadMode.NONE;\n\n this.#scrollModePageState = {\n previousPageNumber: 1,\n scrollDown: true,\n pages: [],\n };\n\n if (this._onBeforeDraw) {\n this.eventBus._off(\"pagerender\", this._onBeforeDraw);\n this._onBeforeDraw = null;\n }\n if (this._onAfterDraw) {\n this.eventBus._off(\"pagerendered\", this._onAfterDraw);\n this._onAfterDraw = null;\n }\n if (this.#onVisibilityChange) {\n document.removeEventListener(\n \"visibilitychange\",\n this.#onVisibilityChange\n );\n this.#onVisibilityChange = null;\n }\n // Remove the pages from the DOM...\n this.viewer.textContent = \"\";\n // ... and reset the Scroll mode CSS class(es) afterwards.\n this._updateScrollMode();\n\n this.viewer.removeAttribute(\"lang\");\n // Reset all PDF document permissions.\n this.viewer.classList.remove(ENABLE_PERMISSIONS_CLASS);\n\n if (this.#previousAnnotationMode !== null) {\n this.#annotationMode = this.#previousAnnotationMode;\n this.#previousAnnotationMode = null;\n }\n }\n\n #ensurePageViewVisible() {\n if (this._scrollMode !== ScrollMode.PAGE) {\n throw new Error(\"#ensurePageViewVisible: Invalid scrollMode value.\");\n }\n const pageNumber = this._currentPageNumber,\n state = this.#scrollModePageState,\n viewer = this.viewer;\n\n // Temporarily remove all the pages from the DOM...\n viewer.textContent = \"\";\n // ... and clear out the active ones.\n state.pages.length = 0;\n\n if (this._spreadMode === SpreadMode.NONE) {\n // Finally, append the new page to the viewer.\n const pageView = this._pages[pageNumber - 1];\n\n if (this.isInPresentationMode) {\n const spread = document.createElement(\"div\");\n spread.className = \"spread\";\n const dummyPage = document.createElement(\"div\");\n dummyPage.className = \"dummyPage\";\n dummyPage.style.height = `${this.container.clientHeight}px`;\n\n spread.appendChild(dummyPage);\n spread.appendChild(pageView.div);\n viewer.appendChild(spread);\n } else {\n viewer.appendChild(pageView.div);\n }\n\n state.pages.push(pageView);\n } else {\n const pageIndexSet = new Set(),\n parity = this._spreadMode - 1;\n\n // Determine the pageIndices in the new spread.\n if (pageNumber % 2 !== parity) {\n // Left-hand side page.\n pageIndexSet.add(pageNumber - 1);\n pageIndexSet.add(pageNumber);\n } else {\n // Right-hand side page.\n pageIndexSet.add(pageNumber - 2);\n pageIndexSet.add(pageNumber - 1);\n }\n\n // Finally, append the new pages to the viewer and apply the spreadMode.\n let spread = null;\n for (const i of pageIndexSet) {\n const pageView = this._pages[i];\n if (!pageView) {\n continue;\n }\n if (spread === null) {\n spread = document.createElement(\"div\");\n spread.className = \"spread\";\n viewer.appendChild(spread);\n } else if (i % 2 === parity) {\n spread = spread.cloneNode(false);\n viewer.appendChild(spread);\n }\n spread.appendChild(pageView.div);\n\n state.pages.push(pageView);\n }\n }\n\n state.scrollDown = pageNumber >= state.previousPageNumber;\n state.previousPageNumber = pageNumber;\n }\n\n _scrollUpdate() {\n if (this.pagesCount === 0) {\n return;\n }\n this.update();\n }\n\n _scrollIntoView({ pageDiv, pageSpot = null, pageNumber = null }) {\n if (this._scrollMode === ScrollMode.PAGE) {\n if (pageNumber) {\n // Ensure that `this._currentPageNumber` is correct.\n this._setCurrentPageNumber(pageNumber);\n }\n this.#ensurePageViewVisible();\n // Ensure that rendering always occurs, to avoid showing a blank page,\n // even if the current position doesn't change when the page is scrolled.\n this.update();\n }\n\n if (!pageSpot && !this.isInPresentationMode) {\n const left = pageDiv.offsetLeft + pageDiv.clientLeft;\n const right = left + pageDiv.clientWidth;\n const { scrollLeft, clientWidth } = this.container;\n if (\n this._scrollMode === ScrollMode.HORIZONTAL ||\n left < scrollLeft ||\n right > scrollLeft + clientWidth\n ) {\n pageSpot = { left: 0, top: 0 };\n }\n }\n scrollIntoView(pageDiv, pageSpot);\n }\n\n /**\n * Prevent unnecessary re-rendering of all pages when the scale changes\n * only because of limited numerical precision.\n */\n #isSameScale(newScale) {\n if (\n this.isInPresentationMode &&\n this.container.clientHeight !== this.#previousContainerHeight\n ) {\n // Ensure that the current page remains centered vertically if/when\n // the window is resized while PresentationMode is active.\n return false;\n }\n return (\n newScale === this._currentScale ||\n Math.abs(newScale - this._currentScale) < 1e-15\n );\n }\n\n _setScaleUpdatePages(newScale, newValue, noScroll = false, preset = false) {\n this._currentScaleValue = newValue.toString();\n\n if (this.#isSameScale(newScale)) {\n if (preset) {\n this.eventBus.dispatch(\"scalechanging\", {\n source: this,\n scale: newScale,\n presetValue: newValue,\n });\n }\n return;\n }\n\n this._doc.style.setProperty(\"--zoom-factor\", newScale);\n this._doc.style.setProperty(\n \"--viewport-scale-factor\",\n newScale * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n\n const updateArgs = { scale: newScale };\n for (const pageView of this._pages) {\n pageView.update(updateArgs);\n }\n this._currentScale = newScale;\n\n if (!noScroll) {\n let page = this._currentPageNumber,\n dest;\n if (\n this._location &&\n !(this.isInPresentationMode || this.isChangingPresentationMode)\n ) {\n page = this._location.pageNumber;\n dest = [\n null,\n { name: \"XYZ\" },\n this._location.left,\n this._location.top,\n null,\n ];\n }\n this.scrollPageIntoView({\n pageNumber: page,\n destArray: dest,\n allowNegativeOffset: true,\n });\n }\n\n this.eventBus.dispatch(\"scalechanging\", {\n source: this,\n scale: newScale,\n presetValue: preset ? newValue : undefined,\n });\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n\n this.#previousContainerHeight = this.container.clientHeight;\n }\n\n /**\n * @private\n */\n get _pageWidthScaleFactor() {\n if (\n this._spreadMode !== SpreadMode.NONE &&\n this._scrollMode !== ScrollMode.HORIZONTAL\n ) {\n return 2;\n }\n return 1;\n }\n\n _setScale(value, noScroll = false) {\n let scale = parseFloat(value);\n\n if (scale > 0) {\n this._setScaleUpdatePages(scale, value, noScroll, /* preset = */ false);\n } else {\n const currentPage = this._pages[this._currentPageNumber - 1];\n if (!currentPage) {\n return;\n }\n let hPadding = SCROLLBAR_PADDING,\n vPadding = VERTICAL_PADDING;\n\n if (this.isInPresentationMode) {\n hPadding = vPadding = 4;\n } else if (this.removePageBorders) {\n hPadding = vPadding = 0;\n }\n if (this._scrollMode === ScrollMode.HORIZONTAL) {\n [hPadding, vPadding] = [vPadding, hPadding]; // Swap the padding values.\n }\n const pageWidthScale =\n (((this.container.clientWidth - hPadding) / currentPage.width) *\n currentPage.scale) /\n this._pageWidthScaleFactor;\n const pageHeightScale =\n ((this.container.clientHeight - vPadding) / currentPage.height) *\n currentPage.scale;\n switch (value) {\n case \"page-actual\":\n scale = 1;\n break;\n case \"page-width\":\n scale = pageWidthScale;\n break;\n case \"page-height\":\n scale = pageHeightScale;\n break;\n case \"page-fit\":\n scale = Math.min(pageWidthScale, pageHeightScale);\n break;\n case \"auto\":\n // For pages in landscape mode, fit the page height to the viewer\n // *unless* the page would thus become too wide to fit horizontally.\n const horizontalScale = isPortraitOrientation(currentPage)\n ? pageWidthScale\n : Math.min(pageHeightScale, pageWidthScale);\n scale = Math.min(MAX_AUTO_SCALE, horizontalScale);\n break;\n default:\n console.error(`_setScale: \"${value}\" is an unknown zoom value.`);\n return;\n }\n this._setScaleUpdatePages(scale, value, noScroll, /* preset = */ true);\n }\n }\n\n /**\n * Refreshes page view: scrolls to the current page and updates the scale.\n * @private\n */\n _resetCurrentPageView() {\n if (this.isInPresentationMode) {\n // Fixes the case when PDF has different page sizes.\n this._setScale(this._currentScaleValue, true);\n }\n\n const pageView = this._pages[this._currentPageNumber - 1];\n this._scrollIntoView({ pageDiv: pageView.div });\n }\n\n /**\n * @param {string} label - The page label.\n * @returns {number|null} The page number corresponding to the page label,\n * or `null` when no page labels exist and/or the input is invalid.\n */\n pageLabelToPageNumber(label) {\n if (!this._pageLabels) {\n return null;\n }\n const i = this._pageLabels.indexOf(label);\n if (i < 0) {\n return null;\n }\n return i + 1;\n }\n\n /**\n * @typedef ScrollPageIntoViewParameters\n * @property {number} pageNumber - The page number.\n * @property {Array} [destArray] - The original PDF destination array, in the\n * format: <page-ref> </XYZ|/FitXXX> <args..>\n * @property {boolean} [allowNegativeOffset] - Allow negative page offsets.\n * The default value is `false`.\n * @property {boolean} [ignoreDestinationZoom] - Ignore the zoom argument in\n * the destination array. The default value is `false`.\n */\n\n /**\n * Scrolls page into view.\n * @param {ScrollPageIntoViewParameters} params\n */\n scrollPageIntoView({\n pageNumber,\n destArray = null,\n allowNegativeOffset = false,\n ignoreDestinationZoom = false,\n }) {\n if (!this.pdfDocument) {\n return;\n }\n const pageView =\n Number.isInteger(pageNumber) && this._pages[pageNumber - 1];\n if (!pageView) {\n console.error(\n `scrollPageIntoView: \"${pageNumber}\" is not a valid pageNumber parameter.`\n );\n return;\n }\n\n if (this.isInPresentationMode || !destArray) {\n this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView = */ true);\n return;\n }\n let x = 0,\n y = 0;\n let width = 0,\n height = 0,\n widthScale,\n heightScale;\n const changeOrientation = pageView.rotation % 180 !== 0;\n const pageWidth =\n (changeOrientation ? pageView.height : pageView.width) /\n pageView.scale /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n const pageHeight =\n (changeOrientation ? pageView.width : pageView.height) /\n pageView.scale /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n let scale = 0;\n switch (destArray[1].name) {\n case \"XYZ\":\n x = destArray[2];\n y = destArray[3];\n scale = destArray[4];\n // If x and/or y coordinates are not supplied, default to\n // _top_ left of the page (not the obvious bottom left,\n // since aligning the bottom of the intended page with the\n // top of the window is rarely helpful).\n x = x !== null ? x : 0;\n y = y !== null ? y : pageHeight;\n break;\n case \"Fit\":\n case \"FitB\":\n scale = \"page-fit\";\n break;\n case \"FitH\":\n case \"FitBH\":\n y = destArray[2];\n scale = \"page-width\";\n // According to the PDF spec, section 12.3.2.2, a `null` value in the\n // parameter should maintain the position relative to the new page.\n if (y === null && this._location) {\n x = this._location.left;\n y = this._location.top;\n } else if (typeof y !== \"number\" || y < 0) {\n // The \"top\" value isn't optional, according to the spec, however some\n // bad PDF generators will pretend that it is (fixes bug 1663390).\n y = pageHeight;\n }\n break;\n case \"FitV\":\n case \"FitBV\":\n x = destArray[2];\n width = pageWidth;\n height = pageHeight;\n scale = \"page-height\";\n break;\n case \"FitR\":\n x = destArray[2];\n y = destArray[3];\n width = destArray[4] - x;\n height = destArray[5] - y;\n const hPadding = this.removePageBorders ? 0 : SCROLLBAR_PADDING;\n const vPadding = this.removePageBorders ? 0 : VERTICAL_PADDING;\n\n widthScale =\n (this.container.clientWidth - hPadding) /\n width /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n heightScale =\n (this.container.clientHeight - vPadding) /\n height /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));\n break;\n default:\n console.error(\n `scrollPageIntoView: \"${destArray[1].name}\" is not a valid destination type.`\n );\n return;\n }\n\n if (!ignoreDestinationZoom) {\n if (scale && scale !== this._currentScale) {\n this.currentScaleValue = scale;\n } else if (this._currentScale === UNKNOWN_SCALE) {\n this.currentScaleValue = DEFAULT_SCALE_VALUE;\n }\n }\n\n if (scale === \"page-fit\" && !destArray[4]) {\n this._scrollIntoView({\n pageDiv: pageView.div,\n pageNumber,\n });\n return;\n }\n\n const boundingRect = [\n pageView.viewport.convertToViewportPoint(x, y),\n pageView.viewport.convertToViewportPoint(x + width, y + height),\n ];\n let left = Math.min(boundingRect[0][0], boundingRect[1][0]);\n let top = Math.min(boundingRect[0][1], boundingRect[1][1]);\n\n if (!allowNegativeOffset) {\n // Some bad PDF generators will create destinations with e.g. top values\n // that exceeds the page height. Ensure that offsets are not negative,\n // to prevent a previous page from becoming visible (fixes bug 874482).\n left = Math.max(left, 0);\n top = Math.max(top, 0);\n }\n this._scrollIntoView({\n pageDiv: pageView.div,\n pageSpot: { left, top },\n pageNumber,\n });\n }\n\n _updateLocation(firstPage) {\n const currentScale = this._currentScale;\n const currentScaleValue = this._currentScaleValue;\n const normalizedScaleValue =\n parseFloat(currentScaleValue) === currentScale\n ? Math.round(currentScale * 10000) / 100\n : currentScaleValue;\n\n const pageNumber = firstPage.id;\n let pdfOpenParams = \"#page=\" + pageNumber;\n pdfOpenParams += \"&zoom=\" + normalizedScaleValue;\n const currentPageView = this._pages[pageNumber - 1];\n const container = this.container;\n const topLeft = currentPageView.getPagePoint(\n container.scrollLeft - firstPage.x,\n container.scrollTop - firstPage.y\n );\n const intLeft = Math.round(topLeft[0]);\n const intTop = Math.round(topLeft[1]);\n pdfOpenParams += \",\" + intLeft + \",\" + intTop;\n\n this._location = {\n pageNumber,\n scale: normalizedScaleValue,\n top: intTop,\n left: intLeft,\n rotation: this._pagesRotation,\n pdfOpenParams,\n };\n }\n\n update() {\n const visible = this._getVisiblePages();\n const visiblePages = visible.views,\n numVisiblePages = visiblePages.length;\n\n if (numVisiblePages === 0) {\n return;\n }\n const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);\n this.#buffer.resize(newCacheSize, visible.ids);\n\n this.renderingQueue.renderHighestPriority(visible);\n\n if (!this.isInPresentationMode) {\n const isSimpleLayout =\n this._spreadMode === SpreadMode.NONE &&\n (this._scrollMode === ScrollMode.PAGE ||\n this._scrollMode === ScrollMode.VERTICAL);\n let currentId = this._currentPageNumber;\n let stillFullyVisible = false;\n\n for (const page of visiblePages) {\n if (page.percent < 100) {\n break;\n }\n if (page.id === currentId && isSimpleLayout) {\n stillFullyVisible = true;\n break;\n }\n }\n if (!stillFullyVisible) {\n currentId = visiblePages[0].id;\n }\n this._setCurrentPageNumber(currentId);\n }\n\n this._updateLocation(visible.first);\n this.eventBus.dispatch(\"updateviewarea\", {\n source: this,\n location: this._location,\n });\n }\n\n containsElement(element) {\n return this.container.contains(element);\n }\n\n focus() {\n this.container.focus();\n }\n\n get _isContainerRtl() {\n return getComputedStyle(this.container).direction === \"rtl\";\n }\n\n get isInPresentationMode() {\n return this.presentationModeState === PresentationModeState.FULLSCREEN;\n }\n\n get isChangingPresentationMode() {\n return this.presentationModeState === PresentationModeState.CHANGING;\n }\n\n get isHorizontalScrollbarEnabled() {\n return this.isInPresentationMode\n ? false\n : this.container.scrollWidth > this.container.clientWidth;\n }\n\n get isVerticalScrollbarEnabled() {\n return this.isInPresentationMode\n ? false\n : this.container.scrollHeight > this.container.clientHeight;\n }\n\n /**\n * Helper method for `this._getVisiblePages`. Should only ever be used when\n * the viewer can only display a single page at a time, for example:\n * - When PresentationMode is active.\n */\n _getCurrentVisiblePage() {\n if (!this.pagesCount) {\n return { views: [] };\n }\n const pageView = this._pages[this._currentPageNumber - 1];\n // NOTE: Compute the `x` and `y` properties of the current view,\n // since `this._updateLocation` depends of them being available.\n const element = pageView.div;\n\n const view = {\n id: pageView.id,\n x: element.offsetLeft + element.clientLeft,\n y: element.offsetTop + element.clientTop,\n view: pageView,\n };\n const ids = new Set([pageView.id]);\n\n return { first: view, last: view, views: [view], ids };\n }\n\n _getVisiblePages() {\n if (this.isInPresentationMode) {\n // The algorithm in `getVisibleElements` doesn't work in all browsers and\n // configurations (e.g. Chrome) when PresentationMode is active.\n return this._getCurrentVisiblePage();\n }\n const views =\n this._scrollMode === ScrollMode.PAGE\n ? this.#scrollModePageState.pages\n : this._pages,\n horizontal = this._scrollMode === ScrollMode.HORIZONTAL,\n rtl = horizontal && this._isContainerRtl;\n\n return getVisibleElements({\n scrollEl: this.container,\n views,\n sortByVisibility: true,\n horizontal,\n rtl,\n });\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageVisible(pageNumber) {\n if (!this.pdfDocument) {\n return false;\n }\n if (\n !(\n Number.isInteger(pageNumber) &&\n pageNumber > 0 &&\n pageNumber <= this.pagesCount\n )\n ) {\n console.error(`isPageVisible: \"${pageNumber}\" is not a valid page.`);\n return false;\n }\n return this._getVisiblePages().ids.has(pageNumber);\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageCached(pageNumber) {\n if (!this.pdfDocument) {\n return false;\n }\n if (\n !(\n Number.isInteger(pageNumber) &&\n pageNumber > 0 &&\n pageNumber <= this.pagesCount\n )\n ) {\n console.error(`isPageCached: \"${pageNumber}\" is not a valid page.`);\n return false;\n }\n const pageView = this._pages[pageNumber - 1];\n return this.#buffer.has(pageView);\n }\n\n cleanup() {\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n if (\n this._pages[i] &&\n this._pages[i].renderingState !== RenderingStates.FINISHED\n ) {\n this._pages[i].reset();\n }\n }\n }\n\n /**\n * @private\n */\n _cancelRendering() {\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n if (this._pages[i]) {\n this._pages[i].cancelRendering();\n }\n }\n }\n\n /**\n * @param {PDFPageView} pageView\n * @returns {Promise<PDFPageProxy | null>}\n */\n async #ensurePdfPageLoaded(pageView) {\n if (pageView.pdfPage) {\n return pageView.pdfPage;\n }\n try {\n const pdfPage = await this.pdfDocument.getPage(pageView.id);\n if (!pageView.pdfPage) {\n pageView.setPdfPage(pdfPage);\n }\n if (!this.linkService._cachedPageNumber?.(pdfPage.ref)) {\n this.linkService.cachePageRef(pageView.id, pdfPage.ref);\n }\n return pdfPage;\n } catch (reason) {\n console.error(\"Unable to get page for page view\", reason);\n return null; // Page error -- there is nothing that can be done.\n }\n }\n\n #getScrollAhead(visible) {\n if (visible.first?.id === 1) {\n return true;\n } else if (visible.last?.id === this.pagesCount) {\n return false;\n }\n switch (this._scrollMode) {\n case ScrollMode.PAGE:\n return this.#scrollModePageState.scrollDown;\n case ScrollMode.HORIZONTAL:\n return this.scroll.right;\n }\n return this.scroll.down;\n }\n\n /**\n * Only show the `loadingIcon`-spinner on visible pages (see issue 14242).\n */\n #toggleLoadingIconSpinner(visibleIds) {\n for (const id of visibleIds) {\n const pageView = this._pages[id - 1];\n pageView?.toggleLoadingIconSpinner(/* viewVisible = */ true);\n }\n for (const pageView of this.#buffer) {\n if (visibleIds.has(pageView.id)) {\n // Handled above, since the \"buffer\" may not contain all visible pages.\n continue;\n }\n pageView.toggleLoadingIconSpinner(/* viewVisible = */ false);\n }\n }\n\n forceRendering(currentlyVisiblePages) {\n const visiblePages = currentlyVisiblePages || this._getVisiblePages();\n const scrollAhead = this.#getScrollAhead(visiblePages);\n const preRenderExtra =\n this._spreadMode !== SpreadMode.NONE &&\n this._scrollMode !== ScrollMode.HORIZONTAL;\n\n const pageView = this.renderingQueue.getHighestPriority(\n visiblePages,\n this._pages,\n scrollAhead,\n preRenderExtra\n );\n this.#toggleLoadingIconSpinner(visiblePages.ids);\n\n if (pageView) {\n this.#ensurePdfPageLoaded(pageView).then(() => {\n this.renderingQueue.renderView(pageView);\n });\n return true;\n }\n return false;\n }\n\n /**\n * @param {HTMLDivElement} textLayerDiv\n * @param {number} pageIndex\n * @param {PageViewport} viewport\n * @param {boolean} enhanceTextSelection\n * @param {EventBus} eventBus\n * @param {TextHighlighter} highlighter\n * @returns {TextLayerBuilder}\n */\n createTextLayerBuilder(\n textLayerDiv,\n pageIndex,\n viewport,\n enhanceTextSelection = false,\n eventBus,\n highlighter\n ) {\n return new TextLayerBuilder({\n textLayerDiv,\n eventBus,\n pageIndex,\n viewport,\n enhanceTextSelection: this.isInPresentationMode\n ? false\n : enhanceTextSelection,\n highlighter,\n });\n }\n\n /**\n * @param {number} pageIndex\n * @param {EventBus} eventBus\n * @returns {TextHighlighter}\n */\n createTextHighlighter(pageIndex, eventBus) {\n return new TextHighlighter({\n eventBus,\n pageIndex,\n findController: this.isInPresentationMode ? null : this.findController,\n });\n }\n\n /**\n * @param {HTMLDivElement} pageDiv\n * @param {PDFPageProxy} pdfPage\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n * data in forms.\n * @param {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @param {boolean} renderForms\n * @param {IL10n} l10n\n * @param {boolean} [enableScripting]\n * @param {Promise<boolean>} [hasJSActionsPromise]\n * @param {Object} [mouseState]\n * @param {Promise<Object<string, Array<Object>> | null>}\n * [fieldObjectsPromise]\n * @param {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n * @returns {AnnotationLayerBuilder}\n */\n createAnnotationLayerBuilder(\n pageDiv,\n pdfPage,\n annotationStorage = null,\n imageResourcesPath = \"\",\n renderForms = true,\n l10n = NullL10n,\n enableScripting = null,\n hasJSActionsPromise = null,\n mouseState = null,\n fieldObjectsPromise = null,\n annotationCanvasMap = null\n ) {\n return new AnnotationLayerBuilder({\n pageDiv,\n pdfPage,\n annotationStorage:\n annotationStorage || this.pdfDocument?.annotationStorage,\n imageResourcesPath,\n renderForms,\n linkService: this.linkService,\n downloadManager: this.downloadManager,\n l10n,\n enableScripting: enableScripting ?? this.enableScripting,\n hasJSActionsPromise:\n hasJSActionsPromise || this.pdfDocument?.hasJSActions(),\n fieldObjectsPromise:\n fieldObjectsPromise || this.pdfDocument?.getFieldObjects(),\n mouseState: mouseState || this._scriptingManager?.mouseState,\n annotationCanvasMap,\n });\n }\n\n /**\n * @param {HTMLDivElement} pageDiv\n * @param {PDFPageProxy} pdfPage\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n * data in forms.\n * @returns {XfaLayerBuilder}\n */\n createXfaLayerBuilder(pageDiv, pdfPage, annotationStorage = null) {\n return new XfaLayerBuilder({\n pageDiv,\n pdfPage,\n annotationStorage:\n annotationStorage || this.pdfDocument?.annotationStorage,\n linkService: this.linkService,\n });\n }\n\n /**\n * @param {PDFPageProxy} pdfPage\n * @returns {StructTreeLayerBuilder}\n */\n createStructTreeLayerBuilder(pdfPage) {\n return new StructTreeLayerBuilder({\n pdfPage,\n });\n }\n\n /**\n * @type {boolean} Whether all pages of the PDF document have identical\n * widths and heights.\n */\n get hasEqualPageSizes() {\n const firstPageView = this._pages[0];\n for (let i = 1, ii = this._pages.length; i < ii; ++i) {\n const pageView = this._pages[i];\n if (\n pageView.width !== firstPageView.width ||\n pageView.height !== firstPageView.height\n ) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Returns sizes of the pages.\n * @returns {Array} Array of objects with width/height/rotation fields.\n */\n getPagesOverview() {\n return this._pages.map(pageView => {\n const viewport = pageView.pdfPage.getViewport({ scale: 1 });\n\n if (!this.enablePrintAutoRotate || isPortraitOrientation(viewport)) {\n return {\n width: viewport.width,\n height: viewport.height,\n rotation: viewport.rotation,\n };\n }\n // Landscape orientation.\n return {\n width: viewport.height,\n height: viewport.width,\n rotation: (viewport.rotation - 90) % 360,\n };\n });\n }\n\n /**\n * @type {Promise<OptionalContentConfig | null>}\n */\n get optionalContentConfigPromise() {\n if (!this.pdfDocument) {\n return Promise.resolve(null);\n }\n if (!this._optionalContentConfigPromise) {\n // Prevent issues if the getter is accessed *before* the `onePageRendered`\n // promise has resolved; won't (normally) happen in the default viewer.\n return this.pdfDocument.getOptionalContentConfig();\n }\n return this._optionalContentConfigPromise;\n }\n\n /**\n * @param {Promise<OptionalContentConfig>} promise - A promise that is\n * resolved with an {@link OptionalContentConfig} instance.\n */\n set optionalContentConfigPromise(promise) {\n if (!(promise instanceof Promise)) {\n throw new Error(`Invalid optionalContentConfigPromise: ${promise}`);\n }\n if (!this.pdfDocument) {\n return;\n }\n if (!this._optionalContentConfigPromise) {\n // Ignore the setter *before* the `onePageRendered` promise has resolved,\n // since it'll be overwritten anyway; won't happen in the default viewer.\n return;\n }\n this._optionalContentConfigPromise = promise;\n\n const updateArgs = { optionalContentConfigPromise: promise };\n for (const pageView of this._pages) {\n pageView.update(updateArgs);\n }\n this.update();\n\n this.eventBus.dispatch(\"optionalcontentconfigchanged\", {\n source: this,\n promise,\n });\n }\n\n /**\n * @type {number} One of the values in {ScrollMode}.\n */\n get scrollMode() {\n return this._scrollMode;\n }\n\n /**\n * @param {number} mode - The direction in which the document pages should be\n * laid out within the scrolling container.\n * The constants from {ScrollMode} should be used.\n */\n set scrollMode(mode) {\n if (this._scrollMode === mode) {\n return; // The Scroll mode didn't change.\n }\n if (!isValidScrollMode(mode)) {\n throw new Error(`Invalid scroll mode: ${mode}`);\n }\n if (this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {\n return; // Disabled for performance reasons.\n }\n this._previousScrollMode = this._scrollMode;\n\n this._scrollMode = mode;\n this.eventBus.dispatch(\"scrollmodechanged\", { source: this, mode });\n\n this._updateScrollMode(/* pageNumber = */ this._currentPageNumber);\n }\n\n _updateScrollMode(pageNumber = null) {\n const scrollMode = this._scrollMode,\n viewer = this.viewer;\n\n viewer.classList.toggle(\n \"scrollHorizontal\",\n scrollMode === ScrollMode.HORIZONTAL\n );\n viewer.classList.toggle(\"scrollWrapped\", scrollMode === ScrollMode.WRAPPED);\n\n if (!this.pdfDocument || !pageNumber) {\n return;\n }\n\n if (scrollMode === ScrollMode.PAGE) {\n this.#ensurePageViewVisible();\n } else if (this._previousScrollMode === ScrollMode.PAGE) {\n // Ensure that the current spreadMode is still applied correctly when\n // the *previous* scrollMode was `ScrollMode.PAGE`.\n this._updateSpreadMode();\n }\n // Non-numeric scale values can be sensitive to the scroll orientation.\n // Call this before re-scrolling to the current page, to ensure that any\n // changes in scale don't move the current page.\n if (this._currentScaleValue && isNaN(this._currentScaleValue)) {\n this._setScale(this._currentScaleValue, true);\n }\n this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView = */ true);\n this.update();\n }\n\n /**\n * @type {number} One of the values in {SpreadMode}.\n */\n get spreadMode() {\n return this._spreadMode;\n }\n\n /**\n * @param {number} mode - Group the pages in spreads, starting with odd- or\n * even-number pages (unless `SpreadMode.NONE` is used).\n * The constants from {SpreadMode} should be used.\n */\n set spreadMode(mode) {\n if (this._spreadMode === mode) {\n return; // The Spread mode didn't change.\n }\n if (!isValidSpreadMode(mode)) {\n throw new Error(`Invalid spread mode: ${mode}`);\n }\n this._spreadMode = mode;\n this.eventBus.dispatch(\"spreadmodechanged\", { source: this, mode });\n\n this._updateSpreadMode(/* pageNumber = */ this._currentPageNumber);\n }\n\n _updateSpreadMode(pageNumber = null) {\n if (!this.pdfDocument) {\n return;\n }\n const viewer = this.viewer,\n pages = this._pages;\n\n if (this._scrollMode === ScrollMode.PAGE) {\n this.#ensurePageViewVisible();\n } else {\n // Temporarily remove all the pages from the DOM.\n viewer.textContent = \"\";\n\n if (this._spreadMode === SpreadMode.NONE) {\n for (let i = 0, ii = pages.length; i < ii; ++i) {\n viewer.appendChild(pages[i].div);\n }\n } else {\n const parity = this._spreadMode - 1;\n let spread = null;\n for (let i = 0, ii = pages.length; i < ii; ++i) {\n if (spread === null) {\n spread = document.createElement(\"div\");\n spread.className = \"spread\";\n viewer.appendChild(spread);\n } else if (i % 2 === parity) {\n spread = spread.cloneNode(false);\n viewer.appendChild(spread);\n }\n spread.appendChild(pages[i].div);\n }\n }\n }\n\n if (!pageNumber) {\n return;\n }\n // Non-numeric scale values can be sensitive to the scroll orientation.\n // Call this before re-scrolling to the current page, to ensure that any\n // changes in scale don't move the current page.\n if (this._currentScaleValue && isNaN(this._currentScaleValue)) {\n this._setScale(this._currentScaleValue, true);\n }\n this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView = */ true);\n this.update();\n }\n\n /**\n * @private\n */\n _getPageAdvance(currentPageNumber, previous = false) {\n switch (this._scrollMode) {\n case ScrollMode.WRAPPED: {\n const { views } = this._getVisiblePages(),\n pageLayout = new Map();\n\n // Determine the current (visible) page layout.\n for (const { id, y, percent, widthPercent } of views) {\n if (percent === 0 || widthPercent < 100) {\n continue;\n }\n let yArray = pageLayout.get(y);\n if (!yArray) {\n pageLayout.set(y, (yArray ||= []));\n }\n yArray.push(id);\n }\n // Find the row of the current page.\n for (const yArray of pageLayout.values()) {\n const currentIndex = yArray.indexOf(currentPageNumber);\n if (currentIndex === -1) {\n continue;\n }\n const numPages = yArray.length;\n if (numPages === 1) {\n break;\n }\n // Handle documents with varying page sizes.\n if (previous) {\n for (let i = currentIndex - 1, ii = 0; i >= ii; i--) {\n const currentId = yArray[i],\n expectedId = yArray[i + 1] - 1;\n if (currentId < expectedId) {\n return currentPageNumber - expectedId;\n }\n }\n } else {\n for (let i = currentIndex + 1, ii = numPages; i < ii; i++) {\n const currentId = yArray[i],\n expectedId = yArray[i - 1] + 1;\n if (currentId > expectedId) {\n return expectedId - currentPageNumber;\n }\n }\n }\n // The current row is \"complete\", advance to the previous/next one.\n if (previous) {\n const firstId = yArray[0];\n if (firstId < currentPageNumber) {\n return currentPageNumber - firstId + 1;\n }\n } else {\n const lastId = yArray[numPages - 1];\n if (lastId > currentPageNumber) {\n return lastId - currentPageNumber + 1;\n }\n }\n break;\n }\n break;\n }\n case ScrollMode.HORIZONTAL: {\n break;\n }\n case ScrollMode.PAGE:\n case ScrollMode.VERTICAL: {\n if (this._spreadMode === SpreadMode.NONE) {\n break; // Normal vertical scrolling.\n }\n const parity = this._spreadMode - 1;\n\n if (previous && currentPageNumber % 2 !== parity) {\n break; // Left-hand side page.\n } else if (!previous && currentPageNumber % 2 === parity) {\n break; // Right-hand side page.\n }\n const { views } = this._getVisiblePages(),\n expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1;\n\n for (const { id, percent, widthPercent } of views) {\n if (id !== expectedId) {\n continue;\n }\n if (percent > 0 && widthPercent === 100) {\n return 2;\n }\n break;\n }\n break;\n }\n }\n return 1;\n }\n\n /**\n * Go to the next page, taking scroll/spread-modes into account.\n * @returns {boolean} Whether navigation occured.\n */\n nextPage() {\n const currentPageNumber = this._currentPageNumber,\n pagesCount = this.pagesCount;\n\n if (currentPageNumber >= pagesCount) {\n return false;\n }\n const advance =\n this._getPageAdvance(currentPageNumber, /* previous = */ false) || 1;\n\n this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount);\n return true;\n }\n\n /**\n * Go to the previous page, taking scroll/spread-modes into account.\n * @returns {boolean} Whether navigation occured.\n */\n previousPage() {\n const currentPageNumber = this._currentPageNumber;\n\n if (currentPageNumber <= 1) {\n return false;\n }\n const advance =\n this._getPageAdvance(currentPageNumber, /* previous = */ true) || 1;\n\n this.currentPageNumber = Math.max(currentPageNumber - advance, 1);\n return true;\n }\n\n /**\n * Increase the current zoom level one, or more, times.\n * @param {number} [steps] - Defaults to zooming once.\n */\n increaseScale(steps = 1) {\n let newScale = this._currentScale;\n do {\n newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2);\n newScale = Math.ceil(newScale * 10) / 10;\n newScale = Math.min(MAX_SCALE, newScale);\n } while (--steps > 0 && newScale < MAX_SCALE);\n this.currentScaleValue = newScale;\n }\n\n /**\n * Decrease the current zoom level one, or more, times.\n * @param {number} [steps] - Defaults to zooming once.\n */\n decreaseScale(steps = 1) {\n let newScale = this._currentScale;\n do {\n newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2);\n newScale = Math.floor(newScale * 10) / 10;\n newScale = Math.max(MIN_SCALE, newScale);\n } while (--steps > 0 && newScale > MIN_SCALE);\n this.currentScaleValue = newScale;\n }\n}\n\nexport { BaseViewer, PagesCountLimit, PDFPageViewBuffer };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { AnnotationLayer } from \"pdfjs-lib\";\nimport { NullL10n } from \"./l10n_utils.js\";\n\n/**\n * @typedef {Object} AnnotationLayerBuilderOptions\n * @property {HTMLDivElement} pageDiv\n * @property {PDFPageProxy} pdfPage\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {IL10n} l10n - Localization service.\n * @property {boolean} [enableScripting]\n * @property {Promise<boolean>} [hasJSActionsPromise]\n * @property {Promise<Object<string, Array<Object>> | null>}\n * [fieldObjectsPromise]\n * @property {Object} [mouseState]\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n */\n\nclass AnnotationLayerBuilder {\n /**\n * @param {AnnotationLayerBuilderOptions} options\n */\n constructor({\n pageDiv,\n pdfPage,\n linkService,\n downloadManager,\n annotationStorage = null,\n imageResourcesPath = \"\",\n renderForms = true,\n l10n = NullL10n,\n enableScripting = false,\n hasJSActionsPromise = null,\n fieldObjectsPromise = null,\n mouseState = null,\n annotationCanvasMap = null,\n }) {\n this.pageDiv = pageDiv;\n this.pdfPage = pdfPage;\n this.linkService = linkService;\n this.downloadManager = downloadManager;\n this.imageResourcesPath = imageResourcesPath;\n this.renderForms = renderForms;\n this.l10n = l10n;\n this.annotationStorage = annotationStorage;\n this.enableScripting = enableScripting;\n this._hasJSActionsPromise = hasJSActionsPromise;\n this._fieldObjectsPromise = fieldObjectsPromise;\n this._mouseState = mouseState;\n this._annotationCanvasMap = annotationCanvasMap;\n\n this.div = null;\n this._cancelled = false;\n }\n\n /**\n * @param {PageViewport} viewport\n * @param {string} intent (default value is 'display')\n * @returns {Promise<void>} A promise that is resolved when rendering of the\n * annotations is complete.\n */\n async render(viewport, intent = \"display\") {\n const [annotations, hasJSActions = false, fieldObjects = null] =\n await Promise.all([\n this.pdfPage.getAnnotations({ intent }),\n this._hasJSActionsPromise,\n this._fieldObjectsPromise,\n ]);\n\n if (this._cancelled || annotations.length === 0) {\n return;\n }\n\n const parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: this.div,\n annotations,\n page: this.pdfPage,\n imageResourcesPath: this.imageResourcesPath,\n renderForms: this.renderForms,\n linkService: this.linkService,\n downloadManager: this.downloadManager,\n annotationStorage: this.annotationStorage,\n enableScripting: this.enableScripting,\n hasJSActions,\n fieldObjects,\n mouseState: this._mouseState,\n annotationCanvasMap: this._annotationCanvasMap,\n };\n\n if (this.div) {\n // If an annotationLayer already exists, refresh its children's\n // transformation matrices.\n AnnotationLayer.update(parameters);\n } else {\n // Create an annotation layer div and render the annotations\n // if there is at least one annotation.\n this.div = document.createElement(\"div\");\n this.div.className = \"annotationLayer\";\n this.pageDiv.appendChild(this.div);\n parameters.div = this.div;\n\n AnnotationLayer.render(parameters);\n this.l10n.translate(this.div);\n }\n }\n\n cancel() {\n this._cancelled = true;\n }\n\n hide() {\n if (!this.div) {\n return;\n }\n this.div.hidden = true;\n }\n}\n\nexport { AnnotationLayerBuilder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A subset of the l10n strings in the `l10n/en-US/viewer.properties` file.\n */\nconst DEFAULT_L10N_STRINGS = {\n of_pages: \"of {{pagesCount}}\",\n page_of_pages: \"({{pageNumber}} of {{pagesCount}})\",\n\n document_properties_kb: \"{{size_kb}} KB ({{size_b}} bytes)\",\n document_properties_mb: \"{{size_mb}} MB ({{size_b}} bytes)\",\n document_properties_date_string: \"{{date}}, {{time}}\",\n document_properties_page_size_unit_inches: \"in\",\n document_properties_page_size_unit_millimeters: \"mm\",\n document_properties_page_size_orientation_portrait: \"portrait\",\n document_properties_page_size_orientation_landscape: \"landscape\",\n document_properties_page_size_name_a3: \"A3\",\n document_properties_page_size_name_a4: \"A4\",\n document_properties_page_size_name_letter: \"Letter\",\n document_properties_page_size_name_legal: \"Legal\",\n document_properties_page_size_dimension_string:\n \"{{width}} × {{height}} {{unit}} ({{orientation}})\",\n document_properties_page_size_dimension_name_string:\n \"{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\",\n document_properties_linearized_yes: \"Yes\",\n document_properties_linearized_no: \"No\",\n\n print_progress_percent: \"{{progress}}%\",\n\n \"toggle_sidebar.title\": \"Toggle Sidebar\",\n \"toggle_sidebar_notification2.title\":\n \"Toggle Sidebar (document contains outline/attachments/layers)\",\n\n additional_layers: \"Additional Layers\",\n page_landmark: \"Page {{page}}\",\n thumb_page_title: \"Page {{page}}\",\n thumb_page_canvas: \"Thumbnail of Page {{page}}\",\n\n find_reached_top: \"Reached top of document, continued from bottom\",\n find_reached_bottom: \"Reached end of document, continued from top\",\n \"find_match_count[one]\": \"{{current}} of {{total}} match\",\n \"find_match_count[other]\": \"{{current}} of {{total}} matches\",\n \"find_match_count_limit[one]\": \"More than {{limit}} match\",\n \"find_match_count_limit[other]\": \"More than {{limit}} matches\",\n find_not_found: \"Phrase not found\",\n\n error_version_info: \"PDF.js v{{version}} (build: {{build}})\",\n error_message: \"Message: {{message}}\",\n error_stack: \"Stack: {{stack}}\",\n error_file: \"File: {{file}}\",\n error_line: \"Line: {{line}}\",\n rendering_error: \"An error occurred while rendering the page.\",\n\n page_scale_width: \"Page Width\",\n page_scale_fit: \"Page Fit\",\n page_scale_auto: \"Automatic Zoom\",\n page_scale_actual: \"Actual Size\",\n page_scale_percent: \"{{scale}}%\",\n\n loading: \"Loading…\",\n loading_error: \"An error occurred while loading the PDF.\",\n invalid_file_error: \"Invalid or corrupted PDF file.\",\n missing_file_error: \"Missing PDF file.\",\n unexpected_response_error: \"Unexpected server response.\",\n\n printing_not_supported:\n \"Warning: Printing is not fully supported by this browser.\",\n printing_not_ready: \"Warning: The PDF is not fully loaded for printing.\",\n web_fonts_disabled:\n \"Web fonts are disabled: unable to use embedded PDF fonts.\",\n};\n\nfunction getL10nFallback(key, args) {\n switch (key) {\n case \"find_match_count\":\n key = `find_match_count[${args.total === 1 ? \"one\" : \"other\"}]`;\n break;\n case \"find_match_count_limit\":\n key = `find_match_count_limit[${args.limit === 1 ? \"one\" : \"other\"}]`;\n break;\n }\n return DEFAULT_L10N_STRINGS[key] || \"\";\n}\n\nconst PARTIAL_LANG_CODES = {\n en: \"en-US\",\n es: \"es-ES\",\n fy: \"fy-NL\",\n ga: \"ga-IE\",\n gu: \"gu-IN\",\n hi: \"hi-IN\",\n hy: \"hy-AM\",\n nb: \"nb-NO\",\n ne: \"ne-NP\",\n nn: \"nn-NO\",\n pa: \"pa-IN\",\n pt: \"pt-PT\",\n sv: \"sv-SE\",\n zh: \"zh-CN\",\n};\n\n// Try to support \"incompletely\" specified language codes (see issue 13689).\nfunction fixupLangCode(langCode) {\n return PARTIAL_LANG_CODES[langCode?.toLowerCase()] || langCode;\n}\n\n// Replaces {{arguments}} with their values.\nfunction formatL10nValue(text, args) {\n if (!args) {\n return text;\n }\n return text.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (all, name) => {\n return name in args ? args[name] : \"{{\" + name + \"}}\";\n });\n}\n\n/**\n * No-op implementation of the localization service.\n * @implements {IL10n}\n */\nconst NullL10n = {\n async getLanguage() {\n return \"en-us\";\n },\n\n async getDirection() {\n return \"ltr\";\n },\n\n async get(key, args = null, fallback = getL10nFallback(key, args)) {\n return formatL10nValue(fallback, args);\n },\n\n async translate(element) {},\n};\n\nexport { fixupLangCode, getL10nFallback, NullL10n };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/optional_content_config\").OptionalContentConfig} OptionalContentConfig */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFAnnotationLayerFactory} IPDFAnnotationLayerFactory */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFStructTreeLayerFactory} IPDFStructTreeLayerFactory */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFTextLayerFactory} IPDFTextLayerFactory */\n/** @typedef {import(\"./interfaces\").IL10n} IPDFXfaLayerFactory */\n/** @typedef {import(\"./interfaces\").IRenderableView} IRenderableView */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_rendering_queue\").PDFRenderingQueue} PDFRenderingQueue */\n\nimport {\n AnnotationMode,\n createPromiseCapability,\n PixelsPerInch,\n RenderingCancelledException,\n SVGGraphics,\n} from \"pdfjs-lib\";\nimport {\n approximateFraction,\n DEFAULT_SCALE,\n OutputScale,\n RendererType,\n RenderingStates,\n roundToDivide,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport { compatibilityParams } from \"./app_options.js\";\nimport { NullL10n } from \"./l10n_utils.js\";\n\n/**\n * @typedef {Object} PDFPageViewOptions\n * @property {HTMLDivElement} [container] - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} id - The page unique ID (normally its number).\n * @property {number} scale - The page scale display.\n * @property {PageViewport} defaultViewport - The page viewport.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that is resolved with an {@link OptionalContentConfig} instance.\n * The default value is `null`.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {IPDFTextLayerFactory} textLayerFactory\n * @property {number} [textLayerMode] - Controls if the text layer used for\n * selection and searching is created, and if the improved text selection\n * behaviour is enabled. The constants from {TextLayerMode} should be used.\n * The default value is `TextLayerMode.ENABLE`.\n * @property {number} [annotationMode] - Controls if the annotation layer is\n * created, and if interactive form elements or `AnnotationStorage`-data are\n * being rendered. The constants from {@link AnnotationMode} should be used;\n * see also {@link RenderParameters} and {@link GetOperatorListParameters}.\n * The default value is `AnnotationMode.ENABLE_FORMS`.\n * @property {IPDFAnnotationLayerFactory} annotationLayerFactory\n * @property {IPDFXfaLayerFactory} xfaLayerFactory\n * @property {IPDFStructTreeLayerFactory} structTreeLayerFactory\n * @property {Object} [textHighlighterFactory]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {string} renderer - 'canvas' or 'svg'. The default is 'canvas'.\n * @property {boolean} [useOnlyCssZoom] - Enables CSS only zooming. The default\n * value is `false`.\n * @property {number} [maxCanvasPixels] - The maximum supported canvas size in\n * total pixels, i.e. width * height. Use -1 for no limit. The default value\n * is 4096 * 4096 (16 mega-pixels).\n * @property {IL10n} l10n - Localization service.\n */\n\nconst MAX_CANVAS_PIXELS = compatibilityParams.maxCanvasPixels || 16777216;\n\n/**\n * @implements {IRenderableView}\n */\nclass PDFPageView {\n #annotationMode = AnnotationMode.ENABLE_FORMS;\n\n /**\n * @param {PDFPageViewOptions} options\n */\n constructor(options) {\n const container = options.container;\n const defaultViewport = options.defaultViewport;\n\n this.id = options.id;\n this.renderingId = \"page\" + this.id;\n\n this.pdfPage = null;\n this.pageLabel = null;\n this.rotation = 0;\n this.scale = options.scale || DEFAULT_SCALE;\n this.viewport = defaultViewport;\n this.pdfPageRotate = defaultViewport.rotation;\n this._optionalContentConfigPromise =\n options.optionalContentConfigPromise || null;\n this.hasRestrictedScaling = false;\n this.textLayerMode = options.textLayerMode ?? TextLayerMode.ENABLE;\n this.#annotationMode =\n options.annotationMode ?? AnnotationMode.ENABLE_FORMS;\n this.imageResourcesPath = options.imageResourcesPath || \"\";\n this.useOnlyCssZoom = options.useOnlyCssZoom || false;\n this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS;\n\n this.eventBus = options.eventBus;\n this.renderingQueue = options.renderingQueue;\n this.textLayerFactory = options.textLayerFactory;\n this.annotationLayerFactory = options.annotationLayerFactory;\n this.xfaLayerFactory = options.xfaLayerFactory;\n this.textHighlighter =\n options.textHighlighterFactory?.createTextHighlighter(\n this.id - 1,\n this.eventBus\n );\n this.structTreeLayerFactory = options.structTreeLayerFactory;\n this.renderer = options.renderer || RendererType.CANVAS;\n this.l10n = options.l10n || NullL10n;\n\n this.paintTask = null;\n this.paintedViewportMap = new WeakMap();\n this.renderingState = RenderingStates.INITIAL;\n this.resume = null;\n this._renderError = null;\n this._isStandalone = !this.renderingQueue?.hasViewer();\n\n this._annotationCanvasMap = null;\n\n this.annotationLayer = null;\n this.textLayer = null;\n this.zoomLayer = null;\n this.xfaLayer = null;\n this.structTreeLayer = null;\n\n const div = document.createElement(\"div\");\n div.className = \"page\";\n div.style.width = Math.floor(this.viewport.width) + \"px\";\n div.style.height = Math.floor(this.viewport.height) + \"px\";\n div.setAttribute(\"data-page-number\", this.id);\n div.setAttribute(\"role\", \"region\");\n this.l10n.get(\"page_landmark\", { page: this.id }).then(msg => {\n div.setAttribute(\"aria-label\", msg);\n });\n this.div = div;\n\n container?.appendChild(div);\n }\n\n setPdfPage(pdfPage) {\n this.pdfPage = pdfPage;\n this.pdfPageRotate = pdfPage.rotate;\n\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = pdfPage.getViewport({\n scale: this.scale * PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: totalRotation,\n });\n this.reset();\n }\n\n destroy() {\n this.reset();\n if (this.pdfPage) {\n this.pdfPage.cleanup();\n }\n }\n\n /**\n * @private\n */\n async _renderAnnotationLayer() {\n let error = null;\n try {\n await this.annotationLayer.render(this.viewport, \"display\");\n } catch (ex) {\n error = ex;\n } finally {\n this.eventBus.dispatch(\"annotationlayerrendered\", {\n source: this,\n pageNumber: this.id,\n error,\n });\n }\n }\n\n /**\n * @private\n */\n async _renderXfaLayer() {\n let error = null;\n try {\n const result = await this.xfaLayer.render(this.viewport, \"display\");\n if (this.textHighlighter) {\n this._buildXfaTextContentItems(result.textDivs);\n }\n } catch (ex) {\n error = ex;\n } finally {\n this.eventBus.dispatch(\"xfalayerrendered\", {\n source: this,\n pageNumber: this.id,\n error,\n });\n }\n }\n\n async _buildXfaTextContentItems(textDivs) {\n const text = await this.pdfPage.getTextContent();\n const items = [];\n for (const item of text.items) {\n items.push(item.str);\n }\n this.textHighlighter.setTextMapping(textDivs, items);\n this.textHighlighter.enable();\n }\n\n /**\n * @private\n */\n _resetZoomLayer(removeFromDOM = false) {\n if (!this.zoomLayer) {\n return;\n }\n const zoomLayerCanvas = this.zoomLayer.firstChild;\n this.paintedViewportMap.delete(zoomLayerCanvas);\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n zoomLayerCanvas.width = 0;\n zoomLayerCanvas.height = 0;\n\n if (removeFromDOM) {\n // Note: `ChildNode.remove` doesn't throw if the parent node is undefined.\n this.zoomLayer.remove();\n }\n this.zoomLayer = null;\n }\n\n reset({\n keepZoomLayer = false,\n keepAnnotationLayer = false,\n keepXfaLayer = false,\n } = {}) {\n this.cancelRendering({ keepAnnotationLayer, keepXfaLayer });\n this.renderingState = RenderingStates.INITIAL;\n\n const div = this.div;\n div.style.width = Math.floor(this.viewport.width) + \"px\";\n div.style.height = Math.floor(this.viewport.height) + \"px\";\n\n const childNodes = div.childNodes,\n zoomLayerNode = (keepZoomLayer && this.zoomLayer) || null,\n annotationLayerNode =\n (keepAnnotationLayer && this.annotationLayer?.div) || null,\n xfaLayerNode = (keepXfaLayer && this.xfaLayer?.div) || null;\n for (let i = childNodes.length - 1; i >= 0; i--) {\n const node = childNodes[i];\n switch (node) {\n case zoomLayerNode:\n case annotationLayerNode:\n case xfaLayerNode:\n continue;\n }\n node.remove();\n }\n div.removeAttribute(\"data-loaded\");\n\n if (annotationLayerNode) {\n // Hide the annotation layer until all elements are resized\n // so they are not displayed on the already resized page.\n this.annotationLayer.hide();\n }\n if (xfaLayerNode) {\n // Hide the XFA layer until all elements are resized\n // so they are not displayed on the already resized page.\n this.xfaLayer.hide();\n }\n\n if (!zoomLayerNode) {\n if (this.canvas) {\n this.paintedViewportMap.delete(this.canvas);\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this.canvas.width = 0;\n this.canvas.height = 0;\n delete this.canvas;\n }\n this._resetZoomLayer();\n }\n if (this.svg) {\n this.paintedViewportMap.delete(this.svg);\n delete this.svg;\n }\n\n this.loadingIconDiv = document.createElement(\"div\");\n this.loadingIconDiv.className = \"loadingIcon notVisible\";\n if (this._isStandalone) {\n this.toggleLoadingIconSpinner(/* viewVisible = */ true);\n }\n this.loadingIconDiv.setAttribute(\"role\", \"img\");\n this.l10n.get(\"loading\").then(msg => {\n this.loadingIconDiv?.setAttribute(\"aria-label\", msg);\n });\n div.appendChild(this.loadingIconDiv);\n }\n\n update({ scale = 0, rotation = null, optionalContentConfigPromise = null }) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n typeof arguments[0] !== \"object\"\n ) {\n console.error(\n \"PDFPageView.update called with separate parameters, please use an object instead.\"\n );\n\n this.update({\n scale: arguments[0],\n rotation: arguments[1],\n optionalContentConfigPromise: arguments[2],\n });\n return;\n }\n\n this.scale = scale || this.scale;\n if (typeof rotation === \"number\") {\n this.rotation = rotation; // The rotation may be zero.\n }\n if (optionalContentConfigPromise instanceof Promise) {\n this._optionalContentConfigPromise = optionalContentConfigPromise;\n }\n\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n const viewportScale = this.scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n this.viewport = this.viewport.clone({\n scale: viewportScale,\n rotation: totalRotation,\n });\n\n if (this._isStandalone) {\n const { style } = document.documentElement;\n style.setProperty(\"--zoom-factor\", this.scale);\n style.setProperty(\"--viewport-scale-factor\", viewportScale);\n }\n\n if (this.svg) {\n this.cssTransform({\n target: this.svg,\n redrawAnnotationLayer: true,\n redrawXfaLayer: true,\n });\n\n this.eventBus.dispatch(\"pagerendered\", {\n source: this,\n pageNumber: this.id,\n cssTransform: true,\n timestamp: performance.now(),\n error: this._renderError,\n });\n return;\n }\n\n let isScalingRestricted = false;\n if (this.canvas && this.maxCanvasPixels > 0) {\n const outputScale = this.outputScale;\n if (\n ((Math.floor(this.viewport.width) * outputScale.sx) | 0) *\n ((Math.floor(this.viewport.height) * outputScale.sy) | 0) >\n this.maxCanvasPixels\n ) {\n isScalingRestricted = true;\n }\n }\n\n if (this.canvas) {\n if (\n this.useOnlyCssZoom ||\n (this.hasRestrictedScaling && isScalingRestricted)\n ) {\n this.cssTransform({\n target: this.canvas,\n redrawAnnotationLayer: true,\n redrawXfaLayer: true,\n });\n\n this.eventBus.dispatch(\"pagerendered\", {\n source: this,\n pageNumber: this.id,\n cssTransform: true,\n timestamp: performance.now(),\n error: this._renderError,\n });\n return;\n }\n if (!this.zoomLayer && !this.canvas.hidden) {\n this.zoomLayer = this.canvas.parentNode;\n this.zoomLayer.style.position = \"absolute\";\n }\n }\n if (this.zoomLayer) {\n this.cssTransform({ target: this.zoomLayer.firstChild });\n }\n this.reset({\n keepZoomLayer: true,\n keepAnnotationLayer: true,\n keepXfaLayer: true,\n });\n }\n\n /**\n * PLEASE NOTE: Most likely you want to use the `this.reset()` method,\n * rather than calling this one directly.\n */\n cancelRendering({ keepAnnotationLayer = false, keepXfaLayer = false } = {}) {\n if (this.paintTask) {\n this.paintTask.cancel();\n this.paintTask = null;\n }\n this.resume = null;\n\n if (this.textLayer) {\n this.textLayer.cancel();\n this.textLayer = null;\n }\n if (\n this.annotationLayer &&\n (!keepAnnotationLayer || !this.annotationLayer.div)\n ) {\n this.annotationLayer.cancel();\n this.annotationLayer = null;\n this._annotationCanvasMap = null;\n }\n if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) {\n this.xfaLayer.cancel();\n this.xfaLayer = null;\n this.textHighlighter?.disable();\n }\n if (this._onTextLayerRendered) {\n this.eventBus._off(\"textlayerrendered\", this._onTextLayerRendered);\n this._onTextLayerRendered = null;\n }\n }\n\n cssTransform({\n target,\n redrawAnnotationLayer = false,\n redrawXfaLayer = false,\n }) {\n // Scale target (canvas or svg), its wrapper and page container.\n const width = this.viewport.width;\n const height = this.viewport.height;\n const div = this.div;\n target.style.width =\n target.parentNode.style.width =\n div.style.width =\n Math.floor(width) + \"px\";\n target.style.height =\n target.parentNode.style.height =\n div.style.height =\n Math.floor(height) + \"px\";\n // The canvas may have been originally rotated; rotate relative to that.\n const relativeRotation =\n this.viewport.rotation - this.paintedViewportMap.get(target).rotation;\n const absRotation = Math.abs(relativeRotation);\n let scaleX = 1,\n scaleY = 1;\n if (absRotation === 90 || absRotation === 270) {\n // Scale x and y because of the rotation.\n scaleX = height / width;\n scaleY = width / height;\n }\n target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`;\n\n if (this.textLayer) {\n // Rotating the text layer is more complicated since the divs inside the\n // the text layer are rotated.\n // TODO: This could probably be simplified by drawing the text layer in\n // one orientation and then rotating overall.\n const textLayerViewport = this.textLayer.viewport;\n const textRelativeRotation =\n this.viewport.rotation - textLayerViewport.rotation;\n const textAbsRotation = Math.abs(textRelativeRotation);\n let scale = width / textLayerViewport.width;\n if (textAbsRotation === 90 || textAbsRotation === 270) {\n scale = width / textLayerViewport.height;\n }\n const textLayerDiv = this.textLayer.textLayerDiv;\n let transX, transY;\n switch (textAbsRotation) {\n case 0:\n transX = transY = 0;\n break;\n case 90:\n transX = 0;\n transY = \"-\" + textLayerDiv.style.height;\n break;\n case 180:\n transX = \"-\" + textLayerDiv.style.width;\n transY = \"-\" + textLayerDiv.style.height;\n break;\n case 270:\n transX = \"-\" + textLayerDiv.style.width;\n transY = 0;\n break;\n default:\n console.error(\"Bad rotation value.\");\n break;\n }\n\n textLayerDiv.style.transform =\n `rotate(${textAbsRotation}deg) ` +\n `scale(${scale}) ` +\n `translate(${transX}, ${transY})`;\n textLayerDiv.style.transformOrigin = \"0% 0%\";\n }\n\n if (redrawAnnotationLayer && this.annotationLayer) {\n this._renderAnnotationLayer();\n }\n if (redrawXfaLayer && this.xfaLayer) {\n this._renderXfaLayer();\n }\n }\n\n get width() {\n return this.viewport.width;\n }\n\n get height() {\n return this.viewport.height;\n }\n\n getPagePoint(x, y) {\n return this.viewport.convertToPdfPoint(x, y);\n }\n\n /**\n * @ignore\n */\n toggleLoadingIconSpinner(viewVisible = false) {\n this.loadingIconDiv?.classList.toggle(\"notVisible\", !viewVisible);\n }\n\n draw() {\n if (this.renderingState !== RenderingStates.INITIAL) {\n console.error(\"Must be in new state before drawing\");\n this.reset(); // Ensure that we reset all state to prevent issues.\n }\n const { div, pdfPage } = this;\n\n if (!pdfPage) {\n this.renderingState = RenderingStates.FINISHED;\n\n if (this.loadingIconDiv) {\n this.loadingIconDiv.remove();\n delete this.loadingIconDiv;\n }\n return Promise.reject(new Error(\"pdfPage is not loaded\"));\n }\n\n this.renderingState = RenderingStates.RUNNING;\n\n // Wrap the canvas so that if it has a CSS transform for high DPI the\n // overflow will be hidden in Firefox.\n const canvasWrapper = document.createElement(\"div\");\n canvasWrapper.style.width = div.style.width;\n canvasWrapper.style.height = div.style.height;\n canvasWrapper.classList.add(\"canvasWrapper\");\n\n if (this.annotationLayer?.div) {\n // The annotation layer needs to stay on top.\n div.insertBefore(canvasWrapper, this.annotationLayer.div);\n } else {\n div.appendChild(canvasWrapper);\n }\n\n let textLayer = null;\n if (this.textLayerMode !== TextLayerMode.DISABLE && this.textLayerFactory) {\n const textLayerDiv = document.createElement(\"div\");\n textLayerDiv.className = \"textLayer\";\n textLayerDiv.style.width = canvasWrapper.style.width;\n textLayerDiv.style.height = canvasWrapper.style.height;\n if (this.annotationLayer?.div) {\n // The annotation layer needs to stay on top.\n div.insertBefore(textLayerDiv, this.annotationLayer.div);\n } else {\n div.appendChild(textLayerDiv);\n }\n\n textLayer = this.textLayerFactory.createTextLayerBuilder(\n textLayerDiv,\n this.id - 1,\n this.viewport,\n this.textLayerMode === TextLayerMode.ENABLE_ENHANCE,\n this.eventBus,\n this.textHighlighter\n );\n }\n this.textLayer = textLayer;\n\n if (\n this.#annotationMode !== AnnotationMode.DISABLE &&\n this.annotationLayerFactory\n ) {\n this._annotationCanvasMap ||= new Map();\n this.annotationLayer ||=\n this.annotationLayerFactory.createAnnotationLayerBuilder(\n div,\n pdfPage,\n /* annotationStorage = */ null,\n this.imageResourcesPath,\n this.#annotationMode === AnnotationMode.ENABLE_FORMS,\n this.l10n,\n /* enableScripting = */ null,\n /* hasJSActionsPromise = */ null,\n /* mouseState = */ null,\n /* fieldObjectsPromise = */ null,\n /* annotationCanvasMap */ this._annotationCanvasMap\n );\n }\n\n if (this.xfaLayer?.div) {\n // The xfa layer needs to stay on top.\n div.appendChild(this.xfaLayer.div);\n }\n\n let renderContinueCallback = null;\n if (this.renderingQueue) {\n renderContinueCallback = cont => {\n if (!this.renderingQueue.isHighestPriority(this)) {\n this.renderingState = RenderingStates.PAUSED;\n this.resume = () => {\n this.renderingState = RenderingStates.RUNNING;\n cont();\n };\n return;\n }\n cont();\n };\n }\n\n const finishPaintTask = async (error = null) => {\n // The paintTask may have been replaced by a new one, so only remove\n // the reference to the paintTask if it matches the one that is\n // triggering this callback.\n if (paintTask === this.paintTask) {\n this.paintTask = null;\n }\n\n if (error instanceof RenderingCancelledException) {\n this._renderError = null;\n return;\n }\n this._renderError = error;\n\n this.renderingState = RenderingStates.FINISHED;\n\n if (this.loadingIconDiv) {\n this.loadingIconDiv.remove();\n delete this.loadingIconDiv;\n }\n this._resetZoomLayer(/* removeFromDOM = */ true);\n\n this.eventBus.dispatch(\"pagerendered\", {\n source: this,\n pageNumber: this.id,\n cssTransform: false,\n timestamp: performance.now(),\n error: this._renderError,\n });\n\n if (error) {\n throw error;\n }\n };\n\n const paintTask =\n this.renderer === RendererType.SVG\n ? this.paintOnSvg(canvasWrapper)\n : this.paintOnCanvas(canvasWrapper);\n paintTask.onRenderContinue = renderContinueCallback;\n this.paintTask = paintTask;\n\n const resultPromise = paintTask.promise.then(\n () => {\n return finishPaintTask(null).then(() => {\n if (textLayer) {\n const readableStream = pdfPage.streamTextContent({\n includeMarkedContent: true,\n });\n textLayer.setTextContentStream(readableStream);\n textLayer.render();\n }\n\n if (this.annotationLayer) {\n this._renderAnnotationLayer();\n }\n });\n },\n function (reason) {\n return finishPaintTask(reason);\n }\n );\n\n if (this.xfaLayerFactory) {\n if (!this.xfaLayer) {\n this.xfaLayer = this.xfaLayerFactory.createXfaLayerBuilder(\n div,\n pdfPage,\n /* annotationStorage = */ null\n );\n }\n this._renderXfaLayer();\n }\n\n // The structure tree is currently only supported when the text layer is\n // enabled and a canvas is used for rendering.\n if (this.structTreeLayerFactory && this.textLayer && this.canvas) {\n // The structure tree must be generated after the text layer for the\n // aria-owns to work.\n this._onTextLayerRendered = event => {\n if (event.pageNumber !== this.id) {\n return;\n }\n this.eventBus._off(\"textlayerrendered\", this._onTextLayerRendered);\n this._onTextLayerRendered = null;\n\n if (!this.canvas) {\n return; // The canvas was removed, prevent errors below.\n }\n this.pdfPage.getStructTree().then(tree => {\n if (!tree) {\n return;\n }\n if (!this.canvas) {\n return; // The canvas was removed, prevent errors below.\n }\n const treeDom = this.structTreeLayer.render(tree);\n treeDom.classList.add(\"structTree\");\n this.canvas.appendChild(treeDom);\n });\n };\n this.eventBus._on(\"textlayerrendered\", this._onTextLayerRendered);\n this.structTreeLayer =\n this.structTreeLayerFactory.createStructTreeLayerBuilder(pdfPage);\n }\n\n div.setAttribute(\"data-loaded\", true);\n\n this.eventBus.dispatch(\"pagerender\", {\n source: this,\n pageNumber: this.id,\n });\n return resultPromise;\n }\n\n paintOnCanvas(canvasWrapper) {\n const renderCapability = createPromiseCapability();\n const result = {\n promise: renderCapability.promise,\n onRenderContinue(cont) {\n cont();\n },\n cancel() {\n renderTask.cancel();\n },\n };\n\n const viewport = this.viewport;\n const canvas = document.createElement(\"canvas\");\n\n // Keep the canvas hidden until the first draw callback, or until drawing\n // is complete when `!this.renderingQueue`, to prevent black flickering.\n canvas.hidden = true;\n let isCanvasHidden = true;\n const showCanvas = function () {\n if (isCanvasHidden) {\n canvas.hidden = false;\n isCanvasHidden = false;\n }\n };\n\n canvasWrapper.appendChild(canvas);\n this.canvas = canvas;\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n canvas.mozOpaque = true;\n }\n\n const ctx = canvas.getContext(\"2d\", { alpha: false });\n const outputScale = (this.outputScale = new OutputScale());\n\n if (this.useOnlyCssZoom) {\n const actualSizeViewport = viewport.clone({\n scale: PixelsPerInch.PDF_TO_CSS_UNITS,\n });\n // Use a scale that makes the canvas have the originally intended size\n // of the page.\n outputScale.sx *= actualSizeViewport.width / viewport.width;\n outputScale.sy *= actualSizeViewport.height / viewport.height;\n }\n\n if (this.maxCanvasPixels > 0) {\n const pixelsInViewport = viewport.width * viewport.height;\n const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport);\n if (outputScale.sx > maxScale || outputScale.sy > maxScale) {\n outputScale.sx = maxScale;\n outputScale.sy = maxScale;\n this.hasRestrictedScaling = true;\n } else {\n this.hasRestrictedScaling = false;\n }\n }\n\n const sfx = approximateFraction(outputScale.sx);\n const sfy = approximateFraction(outputScale.sy);\n canvas.width = roundToDivide(viewport.width * outputScale.sx, sfx[0]);\n canvas.height = roundToDivide(viewport.height * outputScale.sy, sfy[0]);\n canvas.style.width = roundToDivide(viewport.width, sfx[1]) + \"px\";\n canvas.style.height = roundToDivide(viewport.height, sfy[1]) + \"px\";\n\n // Add the viewport so it's known what it was originally drawn with.\n this.paintedViewportMap.set(canvas, viewport);\n\n // Rendering area\n const transform = outputScale.scaled\n ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0]\n : null;\n const renderContext = {\n canvasContext: ctx,\n transform,\n viewport: this.viewport,\n annotationMode: this.#annotationMode,\n optionalContentConfigPromise: this._optionalContentConfigPromise,\n annotationCanvasMap: this._annotationCanvasMap,\n };\n const renderTask = this.pdfPage.render(renderContext);\n renderTask.onContinue = function (cont) {\n showCanvas();\n if (result.onRenderContinue) {\n result.onRenderContinue(cont);\n } else {\n cont();\n }\n };\n\n renderTask.promise.then(\n function () {\n showCanvas();\n renderCapability.resolve();\n },\n function (error) {\n showCanvas();\n renderCapability.reject(error);\n }\n );\n return result;\n }\n\n paintOnSvg(wrapper) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"MOZCENTRAL || CHROME\")\n ) {\n // Return a mock object, to prevent errors such as e.g.\n // \"TypeError: paintTask.promise is undefined\".\n return {\n promise: Promise.reject(new Error(\"SVG rendering is not supported.\")),\n onRenderContinue(cont) {},\n cancel() {},\n };\n }\n\n let cancelled = false;\n const ensureNotCancelled = () => {\n if (cancelled) {\n throw new RenderingCancelledException(\n `Rendering cancelled, page ${this.id}`,\n \"svg\"\n );\n }\n };\n\n const pdfPage = this.pdfPage;\n const actualSizeViewport = this.viewport.clone({\n scale: PixelsPerInch.PDF_TO_CSS_UNITS,\n });\n const promise = pdfPage\n .getOperatorList({\n annotationMode: this.#annotationMode,\n })\n .then(opList => {\n ensureNotCancelled();\n const svgGfx = new SVGGraphics(pdfPage.commonObjs, pdfPage.objs);\n return svgGfx.getSVG(opList, actualSizeViewport).then(svg => {\n ensureNotCancelled();\n this.svg = svg;\n this.paintedViewportMap.set(svg, actualSizeViewport);\n\n svg.style.width = wrapper.style.width;\n svg.style.height = wrapper.style.height;\n this.renderingState = RenderingStates.FINISHED;\n wrapper.appendChild(svg);\n });\n });\n\n return {\n promise,\n onRenderContinue(cont) {\n cont();\n },\n cancel() {\n cancelled = true;\n },\n };\n }\n\n /**\n * @param {string|null} label\n */\n setPageLabel(label) {\n this.pageLabel = typeof label === \"string\" ? label : null;\n\n if (this.pageLabel !== null) {\n this.div.setAttribute(\"data-page-label\", this.pageLabel);\n } else {\n this.div.removeAttribute(\"data-page-label\");\n }\n }\n}\n\nexport { PDFPageView };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n\nconst PDF_ROLE_TO_HTML_ROLE = {\n // Document level structure types\n Document: null, // There's a \"document\" role, but it doesn't make sense here.\n DocumentFragment: null,\n // Grouping level structure types\n Part: \"group\",\n Sect: \"group\", // XXX: There's a \"section\" role, but it's abstract.\n Div: \"group\",\n Aside: \"note\",\n NonStruct: \"none\",\n // Block level structure types\n P: null,\n // H<n>,\n H: \"heading\",\n Title: null,\n FENote: \"note\",\n // Sub-block level structure type\n Sub: \"group\",\n // General inline level structure types\n Lbl: null,\n Span: null,\n Em: null,\n Strong: null,\n Link: \"link\",\n Annot: \"note\",\n Form: \"form\",\n // Ruby and Warichu structure types\n Ruby: null,\n RB: null,\n RT: null,\n RP: null,\n Warichu: null,\n WT: null,\n WP: null,\n // List standard structure types\n L: \"list\",\n LI: \"listitem\",\n LBody: null,\n // Table standard structure types\n Table: \"table\",\n TR: \"row\",\n TH: \"columnheader\",\n TD: \"cell\",\n THead: \"columnheader\",\n TBody: null,\n TFoot: null,\n // Standard structure type Caption\n Caption: null,\n // Standard structure type Figure\n Figure: \"figure\",\n // Standard structure type Formula\n Formula: null,\n // standard structure type Artifact\n Artifact: null,\n};\n\nconst HEADING_PATTERN = /^H(\\d+)$/;\n\n/**\n * @typedef {Object} StructTreeLayerBuilderOptions\n * @property {PDFPageProxy} pdfPage\n */\n\nclass StructTreeLayerBuilder {\n /**\n * @param {StructTreeLayerBuilderOptions} options\n */\n constructor({ pdfPage }) {\n this.pdfPage = pdfPage;\n }\n\n render(structTree) {\n return this._walk(structTree);\n }\n\n _setAttributes(structElement, htmlElement) {\n if (structElement.alt !== undefined) {\n htmlElement.setAttribute(\"aria-label\", structElement.alt);\n }\n if (structElement.id !== undefined) {\n htmlElement.setAttribute(\"aria-owns\", structElement.id);\n }\n if (structElement.lang !== undefined) {\n htmlElement.setAttribute(\"lang\", structElement.lang);\n }\n }\n\n _walk(node) {\n if (!node) {\n return null;\n }\n\n const element = document.createElement(\"span\");\n if (\"role\" in node) {\n const { role } = node;\n const match = role.match(HEADING_PATTERN);\n if (match) {\n element.setAttribute(\"role\", \"heading\");\n element.setAttribute(\"aria-level\", match[1]);\n } else if (PDF_ROLE_TO_HTML_ROLE[role]) {\n element.setAttribute(\"role\", PDF_ROLE_TO_HTML_ROLE[role]);\n }\n }\n\n this._setAttributes(node, element);\n\n if (node.children) {\n if (node.children.length === 1 && \"id\" in node.children[0]) {\n // Often there is only one content node so just set the values on the\n // parent node to avoid creating an extra span.\n this._setAttributes(node.children[0], element);\n } else {\n for (const kid of node.children) {\n element.appendChild(this._walk(kid));\n }\n }\n }\n return element;\n }\n}\n\nexport { StructTreeLayerBuilder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_find_controller\").PDFFindController} PDFFindController */\n\n/**\n * @typedef {Object} TextHighlighterOptions\n * @property {PDFFindController} findController\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} pageIndex - The page index.\n */\n\n/**\n * TextHighlighter handles highlighting matches from the FindController in\n * either the text layer or XFA layer depending on the type of document.\n */\nclass TextHighlighter {\n /**\n * @param {TextHighlighterOptions} options\n */\n constructor({ findController, eventBus, pageIndex }) {\n this.findController = findController;\n this.matches = [];\n this.eventBus = eventBus;\n this.pageIdx = pageIndex;\n this._onUpdateTextLayerMatches = null;\n this.textDivs = null;\n this.textContentItemsStr = null;\n this.enabled = false;\n }\n\n /**\n * Store two arrays that will map DOM nodes to text they should contain.\n * The arrays should be of equal length and the array element at each index\n * should correspond to the other. e.g.\n * `items[0] = \"<span>Item 0</span>\" and texts[0] = \"Item 0\";\n *\n * @param {Array<Node>} divs\n * @param {Array<string>} texts\n */\n setTextMapping(divs, texts) {\n this.textDivs = divs;\n this.textContentItemsStr = texts;\n }\n\n /**\n * Start listening for events to update the highlighter and check if there are\n * any current matches that need be highlighted.\n */\n enable() {\n if (!this.textDivs || !this.textContentItemsStr) {\n throw new Error(\"Text divs and strings have not been set.\");\n }\n if (this.enabled) {\n throw new Error(\"TextHighlighter is already enabled.\");\n }\n this.enabled = true;\n if (!this._onUpdateTextLayerMatches) {\n this._onUpdateTextLayerMatches = evt => {\n if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) {\n this._updateMatches();\n }\n };\n this.eventBus._on(\n \"updatetextlayermatches\",\n this._onUpdateTextLayerMatches\n );\n }\n this._updateMatches();\n }\n\n disable() {\n if (!this.enabled) {\n return;\n }\n this.enabled = false;\n if (this._onUpdateTextLayerMatches) {\n this.eventBus._off(\n \"updatetextlayermatches\",\n this._onUpdateTextLayerMatches\n );\n this._onUpdateTextLayerMatches = null;\n }\n }\n\n _convertMatches(matches, matchesLength) {\n // Early exit if there is nothing to convert.\n if (!matches) {\n return [];\n }\n const { textContentItemsStr } = this;\n\n let i = 0,\n iIndex = 0;\n const end = textContentItemsStr.length - 1;\n const result = [];\n\n for (let m = 0, mm = matches.length; m < mm; m++) {\n // Calculate the start position.\n let matchIdx = matches[m];\n\n // Loop over the divIdxs.\n while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) {\n iIndex += textContentItemsStr[i].length;\n i++;\n }\n\n if (i === textContentItemsStr.length) {\n console.error(\"Could not find a matching mapping\");\n }\n\n const match = {\n begin: {\n divIdx: i,\n offset: matchIdx - iIndex,\n },\n };\n\n // Calculate the end position.\n matchIdx += matchesLength[m];\n\n // Somewhat the same array as above, but use > instead of >= to get\n // the end position right.\n while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {\n iIndex += textContentItemsStr[i].length;\n i++;\n }\n\n match.end = {\n divIdx: i,\n offset: matchIdx - iIndex,\n };\n result.push(match);\n }\n return result;\n }\n\n _renderMatches(matches) {\n // Early exit if there is nothing to render.\n if (matches.length === 0) {\n return;\n }\n const { findController, pageIdx } = this;\n const { textContentItemsStr, textDivs } = this;\n\n const isSelectedPage = pageIdx === findController.selected.pageIdx;\n const selectedMatchIdx = findController.selected.matchIdx;\n const highlightAll = findController.state.highlightAll;\n let prevEnd = null;\n const infinity = {\n divIdx: -1,\n offset: undefined,\n };\n\n function beginText(begin, className) {\n const divIdx = begin.divIdx;\n textDivs[divIdx].textContent = \"\";\n return appendTextToDiv(divIdx, 0, begin.offset, className);\n }\n\n function appendTextToDiv(divIdx, fromOffset, toOffset, className) {\n let div = textDivs[divIdx];\n if (div.nodeType === Node.TEXT_NODE) {\n const span = document.createElement(\"span\");\n div.parentNode.insertBefore(span, div);\n span.appendChild(div);\n textDivs[divIdx] = span;\n div = span;\n }\n const content = textContentItemsStr[divIdx].substring(\n fromOffset,\n toOffset\n );\n const node = document.createTextNode(content);\n if (className) {\n const span = document.createElement(\"span\");\n span.className = `${className} appended`;\n span.appendChild(node);\n div.appendChild(span);\n return className.includes(\"selected\") ? span.offsetLeft : 0;\n }\n div.appendChild(node);\n return 0;\n }\n\n let i0 = selectedMatchIdx,\n i1 = i0 + 1;\n if (highlightAll) {\n i0 = 0;\n i1 = matches.length;\n } else if (!isSelectedPage) {\n // Not highlighting all and this isn't the selected page, so do nothing.\n return;\n }\n\n for (let i = i0; i < i1; i++) {\n const match = matches[i];\n const begin = match.begin;\n const end = match.end;\n const isSelected = isSelectedPage && i === selectedMatchIdx;\n const highlightSuffix = isSelected ? \" selected\" : \"\";\n let selectedLeft = 0;\n\n // Match inside new div.\n if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {\n // If there was a previous div, then add the text at the end.\n if (prevEnd !== null) {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n }\n // Clear the divs and set the content until the starting point.\n beginText(begin);\n } else {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);\n }\n\n if (begin.divIdx === end.divIdx) {\n selectedLeft = appendTextToDiv(\n begin.divIdx,\n begin.offset,\n end.offset,\n \"highlight\" + highlightSuffix\n );\n } else {\n selectedLeft = appendTextToDiv(\n begin.divIdx,\n begin.offset,\n infinity.offset,\n \"highlight begin\" + highlightSuffix\n );\n for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {\n textDivs[n0].className = \"highlight middle\" + highlightSuffix;\n }\n beginText(end, \"highlight end\" + highlightSuffix);\n }\n prevEnd = end;\n\n if (isSelected) {\n // Attempt to scroll the selected match into view.\n findController.scrollMatchIntoView({\n element: textDivs[begin.divIdx],\n selectedLeft,\n pageIndex: pageIdx,\n matchIndex: selectedMatchIdx,\n });\n }\n }\n\n if (prevEnd) {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n }\n }\n\n _updateMatches() {\n if (!this.enabled) {\n return;\n }\n const { findController, matches, pageIdx } = this;\n const { textContentItemsStr, textDivs } = this;\n let clearedUntilDivIdx = -1;\n\n // Clear all current matches.\n for (let i = 0, ii = matches.length; i < ii; i++) {\n const match = matches[i];\n const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);\n for (let n = begin, end = match.end.divIdx; n <= end; n++) {\n const div = textDivs[n];\n div.textContent = textContentItemsStr[n];\n div.className = \"\";\n }\n clearedUntilDivIdx = match.end.divIdx + 1;\n }\n\n if (!findController?.highlightMatches) {\n return;\n }\n // Convert the matches on the `findController` into the match format\n // used for the textLayer.\n const pageMatches = findController.pageMatches[pageIdx] || null;\n const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null;\n\n this.matches = this._convertMatches(pageMatches, pageMatchesLength);\n this._renderMatches(this.matches);\n }\n}\n\nexport { TextHighlighter };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./text_highlighter\").TextHighlighter} TextHighlighter */\n\nimport { renderTextLayer } from \"pdfjs-lib\";\n\nconst EXPAND_DIVS_TIMEOUT = 300; // ms\n\n/**\n * @typedef {Object} TextLayerBuilderOptions\n * @property {HTMLDivElement} textLayerDiv - The text layer container.\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} pageIndex - The page index.\n * @property {PageViewport} viewport - The viewport of the text layer.\n * @property {TextHighlighter} highlighter - Optional object that will handle\n * highlighting text from the find controller.\n * @property {boolean} enhanceTextSelection - Option to turn on improved\n * text selection.\n */\n\n/**\n * The text layer builder provides text selection functionality for the PDF.\n * It does this by creating overlay divs over the PDF's text. These divs\n * contain text that matches the PDF text they are overlaying.\n */\nclass TextLayerBuilder {\n constructor({\n textLayerDiv,\n eventBus,\n pageIndex,\n viewport,\n highlighter = null,\n enhanceTextSelection = false,\n }) {\n this.textLayerDiv = textLayerDiv;\n this.eventBus = eventBus;\n this.textContent = null;\n this.textContentItemsStr = [];\n this.textContentStream = null;\n this.renderingDone = false;\n this.pageNumber = pageIndex + 1;\n this.viewport = viewport;\n this.textDivs = [];\n this.textLayerRenderTask = null;\n this.highlighter = highlighter;\n this.enhanceTextSelection = enhanceTextSelection;\n\n this._bindMouse();\n }\n\n /**\n * @private\n */\n _finishRendering() {\n this.renderingDone = true;\n\n if (!this.enhanceTextSelection) {\n const endOfContent = document.createElement(\"div\");\n endOfContent.className = \"endOfContent\";\n this.textLayerDiv.appendChild(endOfContent);\n }\n\n this.eventBus.dispatch(\"textlayerrendered\", {\n source: this,\n pageNumber: this.pageNumber,\n numTextDivs: this.textDivs.length,\n });\n }\n\n /**\n * Renders the text layer.\n *\n * @param {number} [timeout] - Wait for a specified amount of milliseconds\n * before rendering.\n */\n render(timeout = 0) {\n if (!(this.textContent || this.textContentStream) || this.renderingDone) {\n return;\n }\n this.cancel();\n\n this.textDivs.length = 0;\n this.highlighter?.setTextMapping(this.textDivs, this.textContentItemsStr);\n\n const textLayerFrag = document.createDocumentFragment();\n this.textLayerRenderTask = renderTextLayer({\n textContent: this.textContent,\n textContentStream: this.textContentStream,\n container: textLayerFrag,\n viewport: this.viewport,\n textDivs: this.textDivs,\n textContentItemsStr: this.textContentItemsStr,\n timeout,\n enhanceTextSelection: this.enhanceTextSelection,\n });\n this.textLayerRenderTask.promise.then(\n () => {\n this.textLayerDiv.appendChild(textLayerFrag);\n this._finishRendering();\n this.highlighter?.enable();\n },\n function (reason) {\n // Cancelled or failed to render text layer; skipping errors.\n }\n );\n }\n\n /**\n * Cancel rendering of the text layer.\n */\n cancel() {\n if (this.textLayerRenderTask) {\n this.textLayerRenderTask.cancel();\n this.textLayerRenderTask = null;\n }\n this.highlighter?.disable();\n }\n\n setTextContentStream(readableStream) {\n this.cancel();\n this.textContentStream = readableStream;\n }\n\n setTextContent(textContent) {\n this.cancel();\n this.textContent = textContent;\n }\n\n /**\n * Improves text selection by adding an additional div where the mouse was\n * clicked. This reduces flickering of the content if the mouse is slowly\n * dragged up or down.\n *\n * @private\n */\n _bindMouse() {\n const div = this.textLayerDiv;\n let expandDivsTimer = null;\n\n div.addEventListener(\"mousedown\", evt => {\n if (this.enhanceTextSelection && this.textLayerRenderTask) {\n this.textLayerRenderTask.expandTextDivs(true);\n if (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) &&\n expandDivsTimer\n ) {\n clearTimeout(expandDivsTimer);\n expandDivsTimer = null;\n }\n return;\n }\n\n const end = div.querySelector(\".endOfContent\");\n if (!end) {\n return;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n // On non-Firefox browsers, the selection will feel better if the height\n // of the `endOfContent` div is adjusted to start at mouse click\n // location. This avoids flickering when the selection moves up.\n // However it does not work when selection is started on empty space.\n let adjustTop = evt.target !== div;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n adjustTop =\n adjustTop &&\n window\n .getComputedStyle(end)\n .getPropertyValue(\"-moz-user-select\") !== \"none\";\n }\n if (adjustTop) {\n const divBounds = div.getBoundingClientRect();\n const r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height);\n end.style.top = (r * 100).toFixed(2) + \"%\";\n }\n }\n end.classList.add(\"active\");\n });\n\n div.addEventListener(\"mouseup\", () => {\n if (this.enhanceTextSelection && this.textLayerRenderTask) {\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n expandDivsTimer = setTimeout(() => {\n if (this.textLayerRenderTask) {\n this.textLayerRenderTask.expandTextDivs(false);\n }\n expandDivsTimer = null;\n }, EXPAND_DIVS_TIMEOUT);\n } else {\n this.textLayerRenderTask.expandTextDivs(false);\n }\n return;\n }\n\n const end = div.querySelector(\".endOfContent\");\n if (!end) {\n return;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n end.style.top = \"\";\n }\n end.classList.remove(\"active\");\n });\n }\n}\n\nexport { TextLayerBuilder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaLayer } from \"pdfjs-lib\";\n\n/**\n * @typedef {Object} XfaLayerBuilderOptions\n * @property {HTMLDivElement} pageDiv\n * @property {PDFPageProxy} pdfPage\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {Object} [xfaHtml]\n */\n\nclass XfaLayerBuilder {\n /**\n * @param {XfaLayerBuilderOptions} options\n */\n constructor({\n pageDiv,\n pdfPage,\n annotationStorage = null,\n linkService,\n xfaHtml = null,\n }) {\n this.pageDiv = pageDiv;\n this.pdfPage = pdfPage;\n this.annotationStorage = annotationStorage;\n this.linkService = linkService;\n this.xfaHtml = xfaHtml;\n\n this.div = null;\n this._cancelled = false;\n }\n\n /**\n * @param {PageViewport} viewport\n * @param {string} intent (default value is 'display')\n * @returns {Promise<Object | void>} A promise that is resolved when rendering\n * of the XFA layer is complete. The first rendering will return an object\n * with a `textDivs` property that can be used with the TextHighlighter.\n */\n render(viewport, intent = \"display\") {\n if (intent === \"print\") {\n const parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: this.div,\n xfaHtml: this.xfaHtml,\n annotationStorage: this.annotationStorage,\n linkService: this.linkService,\n intent,\n };\n\n // Create an xfa layer div and render the form\n const div = document.createElement(\"div\");\n this.pageDiv.appendChild(div);\n parameters.div = div;\n\n const result = XfaLayer.render(parameters);\n return Promise.resolve(result);\n }\n\n // intent === \"display\"\n return this.pdfPage\n .getXfa()\n .then(xfaHtml => {\n if (this._cancelled || !xfaHtml) {\n return { textDivs: [] };\n }\n\n const parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: this.div,\n xfaHtml,\n annotationStorage: this.annotationStorage,\n linkService: this.linkService,\n intent,\n };\n\n if (this.div) {\n return XfaLayer.update(parameters);\n }\n // Create an xfa layer div and render the form\n this.div = document.createElement(\"div\");\n this.pageDiv.appendChild(this.div);\n parameters.div = this.div;\n return XfaLayer.render(parameters);\n })\n .catch(error => {\n console.error(error);\n });\n }\n\n cancel() {\n this._cancelled = true;\n }\n\n hide() {\n if (!this.div) {\n return;\n }\n this.div.hidden = true;\n }\n}\n\nexport { XfaLayerBuilder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SCROLLBAR_PADDING, ScrollMode, SpreadMode } from \"./ui_utils.js\";\nimport { CursorTool } from \"./pdf_cursor_tools.js\";\nimport { PagesCountLimit } from \"./base_viewer.js\";\n\n/**\n * @typedef {Object} SecondaryToolbarOptions\n * @property {HTMLDivElement} toolbar - Container for the secondary toolbar.\n * @property {HTMLButtonElement} toggleButton - Button to toggle the visibility\n * of the secondary toolbar.\n * @property {HTMLDivElement} toolbarButtonContainer - Container where all the\n * toolbar buttons are placed. The maximum height of the toolbar is controlled\n * dynamically by adjusting the 'max-height' CSS property of this DOM element.\n * @property {HTMLButtonElement} presentationModeButton - Button for entering\n * presentation mode.\n * @property {HTMLButtonElement} openFileButton - Button to open a file.\n * @property {HTMLButtonElement} printButton - Button to print the document.\n * @property {HTMLButtonElement} downloadButton - Button to download the\n * document.\n * @property {HTMLAnchorElement} viewBookmarkButton - Button to obtain a\n * bookmark link to the current location in the document.\n * @property {HTMLButtonElement} firstPageButton - Button to go to the first\n * page in the document.\n * @property {HTMLButtonElement} lastPageButton - Button to go to the last page\n * in the document.\n * @property {HTMLButtonElement} pageRotateCwButton - Button to rotate the pages\n * clockwise.\n * @property {HTMLButtonElement} pageRotateCcwButton - Button to rotate the\n * pages counterclockwise.\n * @property {HTMLButtonElement} cursorSelectToolButton - Button to enable the\n * select tool.\n * @property {HTMLButtonElement} cursorHandToolButton - Button to enable the\n * hand tool.\n * @property {HTMLButtonElement} documentPropertiesButton - Button for opening\n * the document properties dialog.\n */\n\nclass SecondaryToolbar {\n /**\n * @param {SecondaryToolbarOptions} options\n * @param {HTMLDivElement} mainContainer\n * @param {EventBus} eventBus\n */\n constructor(options, mainContainer, eventBus) {\n this.toolbar = options.toolbar;\n this.toggleButton = options.toggleButton;\n this.toolbarButtonContainer = options.toolbarButtonContainer;\n this.buttons = [\n {\n element: options.presentationModeButton,\n eventName: \"presentationmode\",\n close: true,\n },\n { element: options.openFileButton, eventName: \"openfile\", close: true },\n { element: options.printButton, eventName: \"print\", close: true },\n { element: options.downloadButton, eventName: \"download\", close: true },\n { element: options.viewBookmarkButton, eventName: null, close: true },\n { element: options.firstPageButton, eventName: \"firstpage\", close: true },\n { element: options.lastPageButton, eventName: \"lastpage\", close: true },\n {\n element: options.pageRotateCwButton,\n eventName: \"rotatecw\",\n close: false,\n },\n {\n element: options.pageRotateCcwButton,\n eventName: \"rotateccw\",\n close: false,\n },\n {\n element: options.cursorSelectToolButton,\n eventName: \"switchcursortool\",\n eventDetails: { tool: CursorTool.SELECT },\n close: true,\n },\n {\n element: options.cursorHandToolButton,\n eventName: \"switchcursortool\",\n eventDetails: { tool: CursorTool.HAND },\n close: true,\n },\n {\n element: options.scrollPageButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.PAGE },\n close: true,\n },\n {\n element: options.scrollVerticalButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.VERTICAL },\n close: true,\n },\n {\n element: options.scrollHorizontalButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.HORIZONTAL },\n close: true,\n },\n {\n element: options.scrollWrappedButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.WRAPPED },\n close: true,\n },\n {\n element: options.spreadNoneButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.NONE },\n close: true,\n },\n {\n element: options.spreadOddButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.ODD },\n close: true,\n },\n {\n element: options.spreadEvenButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.EVEN },\n close: true,\n },\n {\n element: options.documentPropertiesButton,\n eventName: \"documentproperties\",\n close: true,\n },\n ];\n this.items = {\n firstPage: options.firstPageButton,\n lastPage: options.lastPageButton,\n pageRotateCw: options.pageRotateCwButton,\n pageRotateCcw: options.pageRotateCcwButton,\n };\n\n this.mainContainer = mainContainer;\n this.eventBus = eventBus;\n\n this.opened = false;\n this.containerHeight = null;\n this.previousContainerHeight = null;\n\n this.reset();\n\n // Bind the event listeners for click, cursor tool, and scroll/spread mode\n // actions.\n this._bindClickListeners();\n this._bindCursorToolsListener(options);\n this._bindScrollModeListener(options);\n this._bindSpreadModeListener(options);\n\n // Bind the event listener for adjusting the 'max-height' of the toolbar.\n this.eventBus._on(\"resize\", this._setMaxHeight.bind(this));\n }\n\n /**\n * @type {boolean}\n */\n get isOpen() {\n return this.opened;\n }\n\n setPageNumber(pageNumber) {\n this.pageNumber = pageNumber;\n this._updateUIState();\n }\n\n setPagesCount(pagesCount) {\n this.pagesCount = pagesCount;\n this._updateUIState();\n }\n\n reset() {\n this.pageNumber = 0;\n this.pagesCount = 0;\n this._updateUIState();\n\n // Reset the Scroll/Spread buttons too, since they're document specific.\n this.eventBus.dispatch(\"secondarytoolbarreset\", { source: this });\n }\n\n _updateUIState() {\n this.items.firstPage.disabled = this.pageNumber <= 1;\n this.items.lastPage.disabled = this.pageNumber >= this.pagesCount;\n this.items.pageRotateCw.disabled = this.pagesCount === 0;\n this.items.pageRotateCcw.disabled = this.pagesCount === 0;\n }\n\n _bindClickListeners() {\n // Button to toggle the visibility of the secondary toolbar.\n this.toggleButton.addEventListener(\"click\", this.toggle.bind(this));\n\n // All items within the secondary toolbar.\n for (const { element, eventName, close, eventDetails } of this.buttons) {\n element.addEventListener(\"click\", evt => {\n if (eventName !== null) {\n const details = { source: this };\n for (const property in eventDetails) {\n details[property] = eventDetails[property];\n }\n this.eventBus.dispatch(eventName, details);\n }\n if (close) {\n this.close();\n }\n });\n }\n }\n\n _bindCursorToolsListener(buttons) {\n this.eventBus._on(\"cursortoolchanged\", function ({ tool }) {\n buttons.cursorSelectToolButton.classList.toggle(\n \"toggled\",\n tool === CursorTool.SELECT\n );\n buttons.cursorHandToolButton.classList.toggle(\n \"toggled\",\n tool === CursorTool.HAND\n );\n });\n }\n\n _bindScrollModeListener(buttons) {\n const scrollModeChanged = ({ mode }) => {\n buttons.scrollPageButton.classList.toggle(\n \"toggled\",\n mode === ScrollMode.PAGE\n );\n buttons.scrollVerticalButton.classList.toggle(\n \"toggled\",\n mode === ScrollMode.VERTICAL\n );\n buttons.scrollHorizontalButton.classList.toggle(\n \"toggled\",\n mode === ScrollMode.HORIZONTAL\n );\n buttons.scrollWrappedButton.classList.toggle(\n \"toggled\",\n mode === ScrollMode.WRAPPED\n );\n\n // Permanently *disable* the Scroll buttons when PAGE-scrolling is being\n // enforced for *very* long/large documents; please see the `BaseViewer`.\n const forceScrollModePage =\n this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE;\n buttons.scrollPageButton.disabled = forceScrollModePage;\n buttons.scrollVerticalButton.disabled = forceScrollModePage;\n buttons.scrollHorizontalButton.disabled = forceScrollModePage;\n buttons.scrollWrappedButton.disabled = forceScrollModePage;\n\n // Temporarily *disable* the Spread buttons when horizontal scrolling is\n // enabled, since the non-default Spread modes doesn't affect the layout.\n const isScrollModeHorizontal = mode === ScrollMode.HORIZONTAL;\n buttons.spreadNoneButton.disabled = isScrollModeHorizontal;\n buttons.spreadOddButton.disabled = isScrollModeHorizontal;\n buttons.spreadEvenButton.disabled = isScrollModeHorizontal;\n };\n this.eventBus._on(\"scrollmodechanged\", scrollModeChanged);\n\n this.eventBus._on(\"secondarytoolbarreset\", evt => {\n if (evt.source === this) {\n scrollModeChanged({ mode: ScrollMode.VERTICAL });\n }\n });\n }\n\n _bindSpreadModeListener(buttons) {\n function spreadModeChanged({ mode }) {\n buttons.spreadNoneButton.classList.toggle(\n \"toggled\",\n mode === SpreadMode.NONE\n );\n buttons.spreadOddButton.classList.toggle(\n \"toggled\",\n mode === SpreadMode.ODD\n );\n buttons.spreadEvenButton.classList.toggle(\n \"toggled\",\n mode === SpreadMode.EVEN\n );\n }\n this.eventBus._on(\"spreadmodechanged\", spreadModeChanged);\n\n this.eventBus._on(\"secondarytoolbarreset\", evt => {\n if (evt.source === this) {\n spreadModeChanged({ mode: SpreadMode.NONE });\n }\n });\n }\n\n open() {\n if (this.opened) {\n return;\n }\n this.opened = true;\n this._setMaxHeight();\n\n this.toggleButton.classList.add(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.toolbar.classList.remove(\"hidden\");\n }\n\n close() {\n if (!this.opened) {\n return;\n }\n this.opened = false;\n this.toolbar.classList.add(\"hidden\");\n this.toggleButton.classList.remove(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"false\");\n }\n\n toggle() {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * @private\n */\n _setMaxHeight() {\n if (!this.opened) {\n return; // Only adjust the 'max-height' if the toolbar is visible.\n }\n this.containerHeight = this.mainContainer.clientHeight;\n\n if (this.containerHeight === this.previousContainerHeight) {\n return;\n }\n this.toolbarButtonContainer.style.maxHeight = `${\n this.containerHeight - SCROLLBAR_PADDING\n }px`;\n\n this.previousContainerHeight = this.containerHeight;\n }\n}\n\nexport { SecondaryToolbar };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n animationStarted,\n DEFAULT_SCALE,\n DEFAULT_SCALE_VALUE,\n MAX_SCALE,\n MIN_SCALE,\n noContextMenuHandler,\n} from \"./ui_utils.js\";\n\nconst PAGE_NUMBER_LOADING_INDICATOR = \"visiblePageIsLoading\";\n\n/**\n * @typedef {Object} ToolbarOptions\n * @property {HTMLDivElement} container - Container for the secondary toolbar.\n * @property {HTMLSpanElement} numPages - Label that contains number of pages.\n * @property {HTMLInputElement} pageNumber - Control for display and user input\n * of the current page number.\n * @property {HTMLSelectElement} scaleSelect - Scale selection control.\n * Its width is adjusted, when necessary, on UI localization.\n * @property {HTMLOptionElement} customScaleOption - The item used to display\n * a non-predefined scale.\n * @property {HTMLButtonElement} previous - Button to go to the previous page.\n * @property {HTMLButtonElement} next - Button to go to the next page.\n * @property {HTMLButtonElement} zoomIn - Button to zoom in the pages.\n * @property {HTMLButtonElement} zoomOut - Button to zoom out the pages.\n * @property {HTMLButtonElement} viewFind - Button to open find bar.\n * @property {HTMLButtonElement} openFile - Button to open a new document.\n * @property {HTMLButtonElement} presentationModeButton - Button to switch to\n * presentation mode.\n * @property {HTMLButtonElement} download - Button to download the document.\n * @property {HTMLAnchorElement} viewBookmark - Button to obtain a bookmark link\n * to the current location in the document.\n */\n\nclass Toolbar {\n /**\n * @param {ToolbarOptions} options\n * @param {EventBus} eventBus\n * @param {IL10n} l10n - Localization service.\n */\n constructor(options, eventBus, l10n) {\n this.toolbar = options.container;\n this.eventBus = eventBus;\n this.l10n = l10n;\n this.buttons = [\n { element: options.previous, eventName: \"previouspage\" },\n { element: options.next, eventName: \"nextpage\" },\n { element: options.zoomIn, eventName: \"zoomin\" },\n { element: options.zoomOut, eventName: \"zoomout\" },\n { element: options.openFile, eventName: \"openfile\" },\n { element: options.print, eventName: \"print\" },\n {\n element: options.presentationModeButton,\n eventName: \"presentationmode\",\n },\n { element: options.download, eventName: \"download\" },\n { element: options.viewBookmark, eventName: null },\n ];\n this.items = {\n numPages: options.numPages,\n pageNumber: options.pageNumber,\n scaleSelect: options.scaleSelect,\n customScaleOption: options.customScaleOption,\n previous: options.previous,\n next: options.next,\n zoomIn: options.zoomIn,\n zoomOut: options.zoomOut,\n };\n\n this._wasLocalized = false;\n this.reset();\n\n // Bind the event listeners for click and various other actions.\n this._bindListeners();\n }\n\n setPageNumber(pageNumber, pageLabel) {\n this.pageNumber = pageNumber;\n this.pageLabel = pageLabel;\n this._updateUIState(false);\n }\n\n setPagesCount(pagesCount, hasPageLabels) {\n this.pagesCount = pagesCount;\n this.hasPageLabels = hasPageLabels;\n this._updateUIState(true);\n }\n\n setPageScale(pageScaleValue, pageScale) {\n this.pageScaleValue = (pageScaleValue || pageScale).toString();\n this.pageScale = pageScale;\n this._updateUIState(false);\n }\n\n reset() {\n this.pageNumber = 0;\n this.pageLabel = null;\n this.hasPageLabels = false;\n this.pagesCount = 0;\n this.pageScaleValue = DEFAULT_SCALE_VALUE;\n this.pageScale = DEFAULT_SCALE;\n this._updateUIState(true);\n this.updateLoadingIndicatorState();\n }\n\n _bindListeners() {\n const { pageNumber, scaleSelect } = this.items;\n const self = this;\n\n // The buttons within the toolbar.\n for (const { element, eventName } of this.buttons) {\n element.addEventListener(\"click\", evt => {\n if (eventName !== null) {\n this.eventBus.dispatch(eventName, { source: this });\n }\n });\n }\n // The non-button elements within the toolbar.\n pageNumber.addEventListener(\"click\", function () {\n this.select();\n });\n pageNumber.addEventListener(\"change\", function () {\n self.eventBus.dispatch(\"pagenumberchanged\", {\n source: self,\n value: this.value,\n });\n });\n\n scaleSelect.addEventListener(\"change\", function () {\n if (this.value === \"custom\") {\n return;\n }\n self.eventBus.dispatch(\"scalechanged\", {\n source: self,\n value: this.value,\n });\n });\n // Here we depend on browsers dispatching the \"click\" event *after* the\n // \"change\" event, when the <select>-element changes.\n scaleSelect.addEventListener(\"click\", function (evt) {\n const target = evt.target;\n // Remove focus when an <option>-element was *clicked*, to improve the UX\n // for mouse users (fixes bug 1300525 and issue 4923).\n if (\n this.value === self.pageScaleValue &&\n target.tagName.toUpperCase() === \"OPTION\"\n ) {\n this.blur();\n }\n });\n // Suppress context menus for some controls.\n scaleSelect.oncontextmenu = noContextMenuHandler;\n\n this.eventBus._on(\"localized\", () => {\n this._wasLocalized = true;\n this._adjustScaleWidth();\n this._updateUIState(true);\n });\n }\n\n _updateUIState(resetNumPages = false) {\n if (!this._wasLocalized) {\n // Don't update the UI state until we localize the toolbar.\n return;\n }\n const { pageNumber, pagesCount, pageScaleValue, pageScale, items } = this;\n\n if (resetNumPages) {\n if (this.hasPageLabels) {\n items.pageNumber.type = \"text\";\n } else {\n items.pageNumber.type = \"number\";\n this.l10n.get(\"of_pages\", { pagesCount }).then(msg => {\n items.numPages.textContent = msg;\n });\n }\n items.pageNumber.max = pagesCount;\n }\n\n if (this.hasPageLabels) {\n items.pageNumber.value = this.pageLabel;\n this.l10n.get(\"page_of_pages\", { pageNumber, pagesCount }).then(msg => {\n items.numPages.textContent = msg;\n });\n } else {\n items.pageNumber.value = pageNumber;\n }\n\n items.previous.disabled = pageNumber <= 1;\n items.next.disabled = pageNumber >= pagesCount;\n\n items.zoomOut.disabled = pageScale <= MIN_SCALE;\n items.zoomIn.disabled = pageScale >= MAX_SCALE;\n\n this.l10n\n .get(\"page_scale_percent\", { scale: Math.round(pageScale * 10000) / 100 })\n .then(msg => {\n let predefinedValueFound = false;\n for (const option of items.scaleSelect.options) {\n if (option.value !== pageScaleValue) {\n option.selected = false;\n continue;\n }\n option.selected = true;\n predefinedValueFound = true;\n }\n if (!predefinedValueFound) {\n items.customScaleOption.textContent = msg;\n items.customScaleOption.selected = true;\n }\n });\n }\n\n updateLoadingIndicatorState(loading = false) {\n const pageNumberInput = this.items.pageNumber;\n\n pageNumberInput.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading);\n }\n\n /**\n * Increase the width of the zoom dropdown DOM element if, and only if, it's\n * too narrow to fit the *longest* of the localized strings.\n * @private\n */\n async _adjustScaleWidth() {\n const { items, l10n } = this;\n\n const predefinedValuesPromise = Promise.all([\n l10n.get(\"page_scale_auto\"),\n l10n.get(\"page_scale_actual\"),\n l10n.get(\"page_scale_fit\"),\n l10n.get(\"page_scale_width\"),\n ]);\n\n const style = getComputedStyle(items.scaleSelect),\n scaleSelectContainerWidth = parseInt(\n style.getPropertyValue(\"--scale-select-container-width\"),\n 10\n ),\n scaleSelectOverflow = parseInt(\n style.getPropertyValue(\"--scale-select-overflow\"),\n 10\n );\n\n // The temporary canvas is used to measure text length in the DOM.\n let canvas = document.createElement(\"canvas\");\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n canvas.mozOpaque = true;\n }\n let ctx = canvas.getContext(\"2d\", { alpha: false });\n\n await animationStarted;\n ctx.font = `${style.fontSize} ${style.fontFamily}`;\n\n let maxWidth = 0;\n for (const predefinedValue of await predefinedValuesPromise) {\n const { width } = ctx.measureText(predefinedValue);\n if (width > maxWidth) {\n maxWidth = width;\n }\n }\n maxWidth += 2 * scaleSelectOverflow;\n\n if (maxWidth > scaleSelectContainerWidth) {\n const doc = document.documentElement;\n doc.style.setProperty(\"--scale-select-container-width\", `${maxWidth}px`);\n }\n // Zeroing the width and height cause Firefox to release graphics resources\n // immediately, which can greatly reduce memory consumption.\n canvas.width = 0;\n canvas.height = 0;\n canvas = ctx = null;\n }\n}\n\nexport { Toolbar };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20;\n\n/**\n * View History - This is a utility for saving various view parameters for\n * recently opened files.\n *\n * The way that the view parameters are stored depends on how PDF.js is built,\n * for 'gulp <flag>' the following cases exist:\n * - MOZCENTRAL - uses sessionStorage.\n * - GENERIC or CHROME - uses localStorage, if it is available.\n */\nclass ViewHistory {\n constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) {\n this.fingerprint = fingerprint;\n this.cacheSize = cacheSize;\n\n this._initializedPromise = this._readFromStorage().then(databaseStr => {\n const database = JSON.parse(databaseStr || \"{}\");\n let index = -1;\n if (!Array.isArray(database.files)) {\n database.files = [];\n } else {\n while (database.files.length >= this.cacheSize) {\n database.files.shift();\n }\n\n for (let i = 0, ii = database.files.length; i < ii; i++) {\n const branch = database.files[i];\n if (branch.fingerprint === this.fingerprint) {\n index = i;\n break;\n }\n }\n }\n if (index === -1) {\n index = database.files.push({ fingerprint: this.fingerprint }) - 1;\n }\n this.file = database.files[index];\n this.database = database;\n });\n }\n\n async _writeToStorage() {\n const databaseStr = JSON.stringify(this.database);\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n sessionStorage.setItem(\"pdfjs.history\", databaseStr);\n return;\n }\n localStorage.setItem(\"pdfjs.history\", databaseStr);\n }\n\n async _readFromStorage() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return sessionStorage.getItem(\"pdfjs.history\");\n }\n return localStorage.getItem(\"pdfjs.history\");\n }\n\n async set(name, val) {\n await this._initializedPromise;\n this.file[name] = val;\n return this._writeToStorage();\n }\n\n async setMultiple(properties) {\n await this._initializedPromise;\n for (const name in properties) {\n this.file[name] = properties[name];\n }\n return this._writeToStorage();\n }\n\n async get(name, defaultValue) {\n await this._initializedPromise;\n const val = this.file[name];\n return val !== undefined ? val : defaultValue;\n }\n\n async getMultiple(properties) {\n await this._initializedPromise;\n const values = Object.create(null);\n\n for (const name in properties) {\n const val = this.file[name];\n values[name] = val !== undefined ? val : properties[name];\n }\n return values;\n }\n}\n\nexport { ViewHistory };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DefaultExternalServices, PDFViewerApplication } from \"./app.js\";\nimport { BasePreferences } from \"./preferences.js\";\nimport { DownloadManager } from \"./download_manager.js\";\nimport { GenericL10n } from \"./genericl10n.js\";\nimport { GenericScripting } from \"./generic_scripting.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\n 'Module \"pdfjs-web/genericcom\" shall not be used outside ' +\n \"GENERIC build.\"\n );\n}\n\nconst GenericCom = {};\n\nclass GenericPreferences extends BasePreferences {\n async _writeToStorage(prefObj) {\n localStorage.setItem(\"pdfjs.preferences\", JSON.stringify(prefObj));\n }\n\n async _readFromStorage(prefObj) {\n return JSON.parse(localStorage.getItem(\"pdfjs.preferences\"));\n }\n}\n\nclass GenericExternalServices extends DefaultExternalServices {\n static createDownloadManager(options) {\n return new DownloadManager();\n }\n\n static createPreferences() {\n return new GenericPreferences();\n }\n\n static createL10n({ locale = \"en-US\" }) {\n return new GenericL10n(locale);\n }\n\n static createScripting({ sandboxBundleSrc }) {\n return new GenericScripting(sandboxBundleSrc);\n }\n}\nPDFViewerApplication.externalServices = GenericExternalServices;\n\nexport { GenericCom };\n","/* Copyright 2013 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppOptions, OptionKind } from \"./app_options.js\";\n\n/**\n * BasePreferences - Abstract base class for storing persistent settings.\n * Used for settings that should be applied to all opened documents,\n * or every time the viewer is loaded.\n */\nclass BasePreferences {\n constructor() {\n if (this.constructor === BasePreferences) {\n throw new Error(\"Cannot initialize BasePreferences.\");\n }\n Object.defineProperty(this, \"defaults\", {\n value: Object.freeze(\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? AppOptions.getAll(OptionKind.PREFERENCE)\n : PDFJSDev.eval(\"DEFAULT_PREFERENCES\")\n ),\n writable: false,\n enumerable: true,\n configurable: false,\n });\n this.prefs = Object.create(null);\n\n this._initializedPromise = this._readFromStorage(this.defaults).then(\n prefs => {\n for (const name in this.defaults) {\n const prefValue = prefs?.[name];\n // Ignore preferences whose types don't match the default values.\n if (typeof prefValue === typeof this.defaults[name]) {\n this.prefs[name] = prefValue;\n }\n }\n }\n );\n }\n\n /**\n * Stub function for writing preferences to storage.\n * @param {Object} prefObj The preferences that should be written to storage.\n * @returns {Promise} A promise that is resolved when the preference values\n * have been written.\n */\n async _writeToStorage(prefObj) {\n throw new Error(\"Not implemented: _writeToStorage\");\n }\n\n /**\n * Stub function for reading preferences from storage.\n * @param {Object} prefObj The preferences that should be read from storage.\n * @returns {Promise} A promise that is resolved with an {Object} containing\n * the preferences that have been read.\n */\n async _readFromStorage(prefObj) {\n throw new Error(\"Not implemented: _readFromStorage\");\n }\n\n /**\n * Reset the preferences to their default values and update storage.\n * @returns {Promise} A promise that is resolved when the preference values\n * have been reset.\n */\n async reset() {\n await this._initializedPromise;\n this.prefs = Object.create(null);\n return this._writeToStorage(this.defaults);\n }\n\n /**\n * Set the value of a preference.\n * @param {string} name The name of the preference that should be changed.\n * @param {boolean|number|string} value The new value of the preference.\n * @returns {Promise} A promise that is resolved when the value has been set,\n * provided that the preference exists and the types match.\n */\n async set(name, value) {\n await this._initializedPromise;\n const defaultValue = this.defaults[name];\n\n if (defaultValue === undefined) {\n throw new Error(`Set preference: \"${name}\" is undefined.`);\n } else if (value === undefined) {\n throw new Error(\"Set preference: no value is specified.\");\n }\n const valueType = typeof value;\n const defaultType = typeof defaultValue;\n\n if (valueType !== defaultType) {\n if (valueType === \"number\" && defaultType === \"string\") {\n value = value.toString();\n } else {\n throw new Error(\n `Set preference: \"${value}\" is a ${valueType}, expected a ${defaultType}.`\n );\n }\n } else {\n if (valueType === \"number\" && !Number.isInteger(value)) {\n throw new Error(`Set preference: \"${value}\" must be an integer.`);\n }\n }\n this.prefs[name] = value;\n return this._writeToStorage(this.prefs);\n }\n\n /**\n * Get the value of a preference.\n * @param {string} name The name of the preference whose value is requested.\n * @returns {Promise} A promise resolved with a {boolean|number|string}\n * containing the value of the preference.\n */\n async get(name) {\n await this._initializedPromise;\n const defaultValue = this.defaults[name],\n prefValue = this.prefs[name];\n\n if (defaultValue === undefined) {\n throw new Error(`Get preference: \"${name}\" is undefined.`);\n }\n return prefValue !== undefined ? prefValue : defaultValue;\n }\n\n /**\n * Get the values of all preferences.\n * @returns {Promise} A promise that is resolved with an {Object} containing\n * the values of all preferences.\n */\n async getAll() {\n await this._initializedPromise;\n const obj = Object.create(null);\n\n for (const name in this.defaults) {\n const prefValue = this.prefs[name];\n obj[name] = prefValue !== undefined ? prefValue : this.defaults[name];\n }\n return obj;\n }\n}\n\nexport { BasePreferences };\n","/* Copyright 2013 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n\nimport { createValidAbsoluteUrl, isPdfFile } from \"pdfjs-lib\";\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"CHROME || GENERIC\")) {\n throw new Error(\n 'Module \"pdfjs-web/download_manager\" shall not be used ' +\n \"outside CHROME and GENERIC builds.\"\n );\n}\n\nfunction download(blobUrl, filename) {\n const a = document.createElement(\"a\");\n if (!a.click) {\n throw new Error('DownloadManager: \"a.click()\" is not supported.');\n }\n a.href = blobUrl;\n a.target = \"_parent\";\n // Use a.download if available. This increases the likelihood that\n // the file is downloaded instead of opened by another PDF plugin.\n if (\"download\" in a) {\n a.download = filename;\n }\n // <a> must be in the document for recent Firefox versions,\n // otherwise .click() is ignored.\n (document.body || document.documentElement).appendChild(a);\n a.click();\n a.remove();\n}\n\n/**\n * @implements {IDownloadManager}\n */\nclass DownloadManager {\n constructor() {\n this._openBlobUrls = new WeakMap();\n }\n\n downloadUrl(url, filename) {\n if (!createValidAbsoluteUrl(url, \"http://example.com\")) {\n console.error(`downloadUrl - not a valid URL: ${url}`);\n return; // restricted/invalid URL\n }\n download(url + \"#pdfjs.action=download\", filename);\n }\n\n downloadData(data, filename, contentType) {\n const blobUrl = URL.createObjectURL(\n new Blob([data], { type: contentType })\n );\n download(blobUrl, filename);\n }\n\n /**\n * @returns {boolean} Indicating if the data was opened.\n */\n openOrDownloadData(element, data, filename) {\n const isPdfData = isPdfFile(filename);\n const contentType = isPdfData ? \"application/pdf\" : \"\";\n\n if (isPdfData) {\n let blobUrl = this._openBlobUrls.get(element);\n if (!blobUrl) {\n blobUrl = URL.createObjectURL(new Blob([data], { type: contentType }));\n this._openBlobUrls.set(element, blobUrl);\n }\n let viewerUrl;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // The current URL is the viewer, let's use it and append the file.\n viewerUrl = \"?file=\" + encodeURIComponent(blobUrl + \"#\" + filename);\n } else if (PDFJSDev.test(\"CHROME\")) {\n // In the Chrome extension, the URL is rewritten using the history API\n // in viewer.js, so an absolute URL must be generated.\n viewerUrl =\n // eslint-disable-next-line no-undef\n chrome.runtime.getURL(\"/content/web/viewer.html\") +\n \"?file=\" +\n encodeURIComponent(blobUrl + \"#\" + filename);\n }\n\n try {\n window.open(viewerUrl);\n return true;\n } catch (ex) {\n console.error(`openOrDownloadData: ${ex}`);\n // Release the `blobUrl`, since opening it failed, and fallback to\n // downloading the PDF file.\n URL.revokeObjectURL(blobUrl);\n this._openBlobUrls.delete(element);\n }\n }\n\n this.downloadData(data, filename, contentType);\n return false;\n }\n\n /**\n * @param sourceEventType {string} Used to signal what triggered the download.\n * The version of PDF.js integrated with Firefox uses this to to determine\n * which dialog to show. \"save\" triggers \"save as\" and \"download\" triggers\n * the \"open with\" dialog.\n */\n download(blob, url, filename, sourceEventType = \"download\") {\n const blobUrl = URL.createObjectURL(blob);\n download(blobUrl, filename);\n }\n}\n\nexport { DownloadManager };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n\nimport \"../external/webL10n/l10n.js\";\nimport { fixupLangCode, getL10nFallback } from \"./l10n_utils.js\";\n\nconst webL10n = document.webL10n;\n\n/**\n * @implements {IL10n}\n */\nclass GenericL10n {\n constructor(lang) {\n this._lang = lang;\n this._ready = new Promise((resolve, reject) => {\n webL10n.setLanguage(fixupLangCode(lang), () => {\n resolve(webL10n);\n });\n });\n }\n\n async getLanguage() {\n const l10n = await this._ready;\n return l10n.getLanguage();\n }\n\n async getDirection() {\n const l10n = await this._ready;\n return l10n.getDirection();\n }\n\n async get(key, args = null, fallback = getL10nFallback(key, args)) {\n const l10n = await this._ready;\n return l10n.get(key, args, fallback);\n }\n\n async translate(element) {\n const l10n = await this._ready;\n return l10n.translate(element);\n }\n}\n\nexport { GenericL10n };\n","/**\n * Copyright (c) 2011-2013 Fabien Cazenave, Mozilla.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/*\n Additional modifications for PDF.js project:\n - Disables language initialization on page loading.\n - Disables document translation on page loading.\n - Removes consoleWarn and consoleLog and use console.log/warn directly.\n - Removes window._ assignment.\n - Remove compatibility code for OldIE.\n - Replaces `String.prototype.substr()` with `String.prototype.substring()`.\n - Removes `fireL10nReadyEvent` since the \"localized\" event it dispatches\n is unused and may clash with an identically named event in the viewer.\n*/\n\n/*jshint browser: true, devel: true, es5: true, globalstrict: true */\n'use strict';\n\ndocument.webL10n = (function(window, document, undefined) {\n var gL10nData = {};\n var gTextData = '';\n var gTextProp = 'textContent';\n var gLanguage = '';\n var gMacros = {};\n var gReadyState = 'loading';\n\n\n /**\n * Synchronously loading l10n resources significantly minimizes flickering\n * from displaying the app with non-localized strings and then updating the\n * strings. Although this will block all script execution on this page, we\n * expect that the l10n resources are available locally on flash-storage.\n *\n * As synchronous XHR is generally considered as a bad idea, we're still\n * loading l10n resources asynchronously -- but we keep this in a setting,\n * just in case... and applications using this library should hide their\n * content until the `localized' event happens.\n */\n\n var gAsyncResourceLoading = true; // read-only\n\n\n /**\n * DOM helpers for the so-called \"HTML API\".\n *\n * These functions are written for modern browsers. For old versions of IE,\n * they're overridden in the 'startup' section at the end of this file.\n */\n\n function getL10nResourceLinks() {\n return document.querySelectorAll('link[type=\"application/l10n\"]');\n }\n\n function getL10nDictionary() {\n var script = document.querySelector('script[type=\"application/l10n\"]');\n // TODO: support multiple and external JSON dictionaries\n return script ? JSON.parse(script.innerHTML) : null;\n }\n\n function getTranslatableChildren(element) {\n return element ? element.querySelectorAll('*[data-l10n-id]') : [];\n }\n\n function getL10nAttributes(element) {\n if (!element)\n return {};\n\n var l10nId = element.getAttribute('data-l10n-id');\n var l10nArgs = element.getAttribute('data-l10n-args');\n var args = {};\n if (l10nArgs) {\n try {\n args = JSON.parse(l10nArgs);\n } catch (e) {\n console.warn('could not parse arguments for #' + l10nId);\n }\n }\n return { id: l10nId, args: args };\n }\n\n function xhrLoadText(url, onSuccess, onFailure) {\n onSuccess = onSuccess || function _onSuccess(data) {};\n onFailure = onFailure || function _onFailure() {};\n\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, gAsyncResourceLoading);\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType('text/plain; charset=utf-8');\n }\n xhr.onreadystatechange = function() {\n if (xhr.readyState == 4) {\n if (xhr.status == 200 || xhr.status === 0) {\n onSuccess(xhr.responseText);\n } else {\n onFailure();\n }\n }\n };\n xhr.onerror = onFailure;\n xhr.ontimeout = onFailure;\n\n // in Firefox OS with the app:// protocol, trying to XHR a non-existing\n // URL will raise an exception here -- hence this ugly try...catch.\n try {\n xhr.send(null);\n } catch (e) {\n onFailure();\n }\n }\n\n\n /**\n * l10n resource parser:\n * - reads (async XHR) the l10n resource matching `lang';\n * - imports linked resources (synchronously) when specified;\n * - parses the text data (fills `gL10nData' and `gTextData');\n * - triggers success/failure callbacks when done.\n *\n * @param {string} href\n * URL of the l10n resource to parse.\n *\n * @param {string} lang\n * locale (language) to parse. Must be a lowercase string.\n *\n * @param {Function} successCallback\n * triggered when the l10n resource has been successfully parsed.\n *\n * @param {Function} failureCallback\n * triggered when the an error has occurred.\n *\n * @return {void}\n * uses the following global variables: gL10nData, gTextData, gTextProp.\n */\n\n function parseResource(href, lang, successCallback, failureCallback) {\n var baseURL = href.replace(/[^\\/]*$/, '') || './';\n\n // handle escaped characters (backslashes) in a string\n function evalString(text) {\n if (text.lastIndexOf('\\\\') < 0)\n return text;\n return text.replace(/\\\\\\\\/g, '\\\\')\n .replace(/\\\\n/g, '\\n')\n .replace(/\\\\r/g, '\\r')\n .replace(/\\\\t/g, '\\t')\n .replace(/\\\\b/g, '\\b')\n .replace(/\\\\f/g, '\\f')\n .replace(/\\\\{/g, '{')\n .replace(/\\\\}/g, '}')\n .replace(/\\\\\"/g, '\"')\n .replace(/\\\\'/g, \"'\");\n }\n\n // parse *.properties text data into an l10n dictionary\n // If gAsyncResourceLoading is false, then the callback will be called\n // synchronously. Otherwise it is called asynchronously.\n function parseProperties(text, parsedPropertiesCallback) {\n var dictionary = {};\n\n // token expressions\n var reBlank = /^\\s*|\\s*$/;\n var reComment = /^\\s*#|^\\s*$/;\n var reSection = /^\\s*\\[(.*)\\]\\s*$/;\n var reImport = /^\\s*@import\\s+url\\((.*)\\)\\s*$/i;\n var reSplit = /^([^=\\s]*)\\s*=\\s*(.+)$/; // TODO: escape EOLs with '\\'\n\n // parse the *.properties file into an associative array\n function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) {\n var entries = rawText.replace(reBlank, '').split(/[\\r\\n]+/);\n var currentLang = '*';\n var genericLang = lang.split('-', 1)[0];\n var skipLang = false;\n var match = '';\n\n function nextEntry() {\n // Use infinite loop instead of recursion to avoid reaching the\n // maximum recursion limit for content with many lines.\n while (true) {\n if (!entries.length) {\n parsedRawLinesCallback();\n return;\n }\n var line = entries.shift();\n\n // comment or blank line?\n if (reComment.test(line))\n continue;\n\n // the extended syntax supports [lang] sections and @import rules\n if (extendedSyntax) {\n match = reSection.exec(line);\n if (match) { // section start?\n // RFC 4646, section 4.4, \"All comparisons MUST be performed\n // in a case-insensitive manner.\"\n\n currentLang = match[1].toLowerCase();\n skipLang = (currentLang !== '*') &&\n (currentLang !== lang) && (currentLang !== genericLang);\n continue;\n } else if (skipLang) {\n continue;\n }\n match = reImport.exec(line);\n if (match) { // @import rule?\n loadImport(baseURL + match[1], nextEntry);\n return;\n }\n }\n\n // key-value pair\n var tmp = line.match(reSplit);\n if (tmp && tmp.length == 3) {\n dictionary[tmp[1]] = evalString(tmp[2]);\n }\n }\n }\n nextEntry();\n }\n\n // import another *.properties file\n function loadImport(url, callback) {\n xhrLoadText(url, function(content) {\n parseRawLines(content, false, callback); // don't allow recursive imports\n }, function () {\n console.warn(url + ' not found.');\n callback();\n });\n }\n\n // fill the dictionary\n parseRawLines(text, true, function() {\n parsedPropertiesCallback(dictionary);\n });\n }\n\n // load and parse l10n data (warning: global variables are used here)\n xhrLoadText(href, function(response) {\n gTextData += response; // mostly for debug\n\n // parse *.properties text data into an l10n dictionary\n parseProperties(response, function(data) {\n\n // find attribute descriptions, if any\n for (var key in data) {\n var id, prop, index = key.lastIndexOf('.');\n if (index > 0) { // an attribute has been specified\n id = key.substring(0, index);\n prop = key.substring(index + 1);\n } else { // no attribute: assuming text content by default\n id = key;\n prop = gTextProp;\n }\n if (!gL10nData[id]) {\n gL10nData[id] = {};\n }\n gL10nData[id][prop] = data[key];\n }\n\n // trigger callback\n if (successCallback) {\n successCallback();\n }\n });\n }, failureCallback);\n }\n\n // load and parse all resources for the specified locale\n function loadLocale(lang, callback) {\n // RFC 4646, section 2.1 states that language tags have to be treated as\n // case-insensitive. Convert to lowercase for case-insensitive comparisons.\n if (lang) {\n lang = lang.toLowerCase();\n }\n\n callback = callback || function _callback() {};\n\n clear();\n gLanguage = lang;\n\n // check all <link type=\"application/l10n\" href=\"...\" /> nodes\n // and load the resource files\n var langLinks = getL10nResourceLinks();\n var langCount = langLinks.length;\n if (langCount === 0) {\n // we might have a pre-compiled dictionary instead\n var dict = getL10nDictionary();\n if (dict && dict.locales && dict.default_locale) {\n console.log('using the embedded JSON directory, early way out');\n gL10nData = dict.locales[lang];\n if (!gL10nData) {\n var defaultLocale = dict.default_locale.toLowerCase();\n for (var anyCaseLang in dict.locales) {\n anyCaseLang = anyCaseLang.toLowerCase();\n if (anyCaseLang === lang) {\n gL10nData = dict.locales[lang];\n break;\n } else if (anyCaseLang === defaultLocale) {\n gL10nData = dict.locales[defaultLocale];\n }\n }\n }\n callback();\n } else {\n console.log('no resource to load, early way out');\n }\n // early way out\n gReadyState = 'complete';\n return;\n }\n\n // start the callback when all resources are loaded\n var onResourceLoaded = null;\n var gResourceCount = 0;\n onResourceLoaded = function() {\n gResourceCount++;\n if (gResourceCount >= langCount) {\n callback();\n gReadyState = 'complete';\n }\n };\n\n // load all resource files\n function L10nResourceLink(link) {\n var href = link.href;\n // Note: If |gAsyncResourceLoading| is false, then the following callbacks\n // are synchronously called.\n this.load = function(lang, callback) {\n parseResource(href, lang, callback, function() {\n console.warn(href + ' not found.');\n // lang not found, used default resource instead\n console.warn('\"' + lang + '\" resource not found');\n gLanguage = '';\n // Resource not loaded, but we still need to call the callback.\n callback();\n });\n };\n }\n\n for (var i = 0; i < langCount; i++) {\n var resource = new L10nResourceLink(langLinks[i]);\n resource.load(lang, onResourceLoaded);\n }\n }\n\n // clear all l10n data\n function clear() {\n gL10nData = {};\n gTextData = '';\n gLanguage = '';\n // TODO: clear all non predefined macros.\n // There's no such macro /yet/ but we're planning to have some...\n }\n\n\n /**\n * Get rules for plural forms (shared with JetPack), see:\n * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html\n * https://github.com/mozilla/addon-sdk/blob/master/python-lib/plural-rules-generator.p\n *\n * @param {string} lang\n * locale (language) used.\n *\n * @return {Function}\n * returns a function that gives the plural form name for a given integer:\n * var fun = getPluralRules('en');\n * fun(1) -> 'one'\n * fun(0) -> 'other'\n * fun(1000) -> 'other'.\n */\n\n function getPluralRules(lang) {\n var locales2rules = {\n 'af': 3,\n 'ak': 4,\n 'am': 4,\n 'ar': 1,\n 'asa': 3,\n 'az': 0,\n 'be': 11,\n 'bem': 3,\n 'bez': 3,\n 'bg': 3,\n 'bh': 4,\n 'bm': 0,\n 'bn': 3,\n 'bo': 0,\n 'br': 20,\n 'brx': 3,\n 'bs': 11,\n 'ca': 3,\n 'cgg': 3,\n 'chr': 3,\n 'cs': 12,\n 'cy': 17,\n 'da': 3,\n 'de': 3,\n 'dv': 3,\n 'dz': 0,\n 'ee': 3,\n 'el': 3,\n 'en': 3,\n 'eo': 3,\n 'es': 3,\n 'et': 3,\n 'eu': 3,\n 'fa': 0,\n 'ff': 5,\n 'fi': 3,\n 'fil': 4,\n 'fo': 3,\n 'fr': 5,\n 'fur': 3,\n 'fy': 3,\n 'ga': 8,\n 'gd': 24,\n 'gl': 3,\n 'gsw': 3,\n 'gu': 3,\n 'guw': 4,\n 'gv': 23,\n 'ha': 3,\n 'haw': 3,\n 'he': 2,\n 'hi': 4,\n 'hr': 11,\n 'hu': 0,\n 'id': 0,\n 'ig': 0,\n 'ii': 0,\n 'is': 3,\n 'it': 3,\n 'iu': 7,\n 'ja': 0,\n 'jmc': 3,\n 'jv': 0,\n 'ka': 0,\n 'kab': 5,\n 'kaj': 3,\n 'kcg': 3,\n 'kde': 0,\n 'kea': 0,\n 'kk': 3,\n 'kl': 3,\n 'km': 0,\n 'kn': 0,\n 'ko': 0,\n 'ksb': 3,\n 'ksh': 21,\n 'ku': 3,\n 'kw': 7,\n 'lag': 18,\n 'lb': 3,\n 'lg': 3,\n 'ln': 4,\n 'lo': 0,\n 'lt': 10,\n 'lv': 6,\n 'mas': 3,\n 'mg': 4,\n 'mk': 16,\n 'ml': 3,\n 'mn': 3,\n 'mo': 9,\n 'mr': 3,\n 'ms': 0,\n 'mt': 15,\n 'my': 0,\n 'nah': 3,\n 'naq': 7,\n 'nb': 3,\n 'nd': 3,\n 'ne': 3,\n 'nl': 3,\n 'nn': 3,\n 'no': 3,\n 'nr': 3,\n 'nso': 4,\n 'ny': 3,\n 'nyn': 3,\n 'om': 3,\n 'or': 3,\n 'pa': 3,\n 'pap': 3,\n 'pl': 13,\n 'ps': 3,\n 'pt': 3,\n 'rm': 3,\n 'ro': 9,\n 'rof': 3,\n 'ru': 11,\n 'rwk': 3,\n 'sah': 0,\n 'saq': 3,\n 'se': 7,\n 'seh': 3,\n 'ses': 0,\n 'sg': 0,\n 'sh': 11,\n 'shi': 19,\n 'sk': 12,\n 'sl': 14,\n 'sma': 7,\n 'smi': 7,\n 'smj': 7,\n 'smn': 7,\n 'sms': 7,\n 'sn': 3,\n 'so': 3,\n 'sq': 3,\n 'sr': 11,\n 'ss': 3,\n 'ssy': 3,\n 'st': 3,\n 'sv': 3,\n 'sw': 3,\n 'syr': 3,\n 'ta': 3,\n 'te': 3,\n 'teo': 3,\n 'th': 0,\n 'ti': 4,\n 'tig': 3,\n 'tk': 3,\n 'tl': 4,\n 'tn': 3,\n 'to': 0,\n 'tr': 0,\n 'ts': 3,\n 'tzm': 22,\n 'uk': 11,\n 'ur': 3,\n 've': 3,\n 'vi': 0,\n 'vun': 3,\n 'wa': 4,\n 'wae': 3,\n 'wo': 0,\n 'xh': 3,\n 'xog': 3,\n 'yo': 0,\n 'zh': 0,\n 'zu': 3\n };\n\n // utility functions for plural rules methods\n function isIn(n, list) {\n return list.indexOf(n) !== -1;\n }\n function isBetween(n, start, end) {\n return start <= n && n <= end;\n }\n\n // list of all plural rules methods:\n // map an integer to the plural form name to use\n var pluralRules = {\n '0': function(n) {\n return 'other';\n },\n '1': function(n) {\n if ((isBetween((n % 100), 3, 10)))\n return 'few';\n if (n === 0)\n return 'zero';\n if ((isBetween((n % 100), 11, 99)))\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '2': function(n) {\n if (n !== 0 && (n % 10) === 0)\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '3': function(n) {\n if (n == 1)\n return 'one';\n return 'other';\n },\n '4': function(n) {\n if ((isBetween(n, 0, 1)))\n return 'one';\n return 'other';\n },\n '5': function(n) {\n if ((isBetween(n, 0, 2)) && n != 2)\n return 'one';\n return 'other';\n },\n '6': function(n) {\n if (n === 0)\n return 'zero';\n if ((n % 10) == 1 && (n % 100) != 11)\n return 'one';\n return 'other';\n },\n '7': function(n) {\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '8': function(n) {\n if ((isBetween(n, 3, 6)))\n return 'few';\n if ((isBetween(n, 7, 10)))\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '9': function(n) {\n if (n === 0 || n != 1 && (isBetween((n % 100), 1, 19)))\n return 'few';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '10': function(n) {\n if ((isBetween((n % 10), 2, 9)) && !(isBetween((n % 100), 11, 19)))\n return 'few';\n if ((n % 10) == 1 && !(isBetween((n % 100), 11, 19)))\n return 'one';\n return 'other';\n },\n '11': function(n) {\n if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14)))\n return 'few';\n if ((n % 10) === 0 ||\n (isBetween((n % 10), 5, 9)) ||\n (isBetween((n % 100), 11, 14)))\n return 'many';\n if ((n % 10) == 1 && (n % 100) != 11)\n return 'one';\n return 'other';\n },\n '12': function(n) {\n if ((isBetween(n, 2, 4)))\n return 'few';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '13': function(n) {\n if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14)))\n return 'few';\n if (n != 1 && (isBetween((n % 10), 0, 1)) ||\n (isBetween((n % 10), 5, 9)) ||\n (isBetween((n % 100), 12, 14)))\n return 'many';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '14': function(n) {\n if ((isBetween((n % 100), 3, 4)))\n return 'few';\n if ((n % 100) == 2)\n return 'two';\n if ((n % 100) == 1)\n return 'one';\n return 'other';\n },\n '15': function(n) {\n if (n === 0 || (isBetween((n % 100), 2, 10)))\n return 'few';\n if ((isBetween((n % 100), 11, 19)))\n return 'many';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '16': function(n) {\n if ((n % 10) == 1 && n != 11)\n return 'one';\n return 'other';\n },\n '17': function(n) {\n if (n == 3)\n return 'few';\n if (n === 0)\n return 'zero';\n if (n == 6)\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '18': function(n) {\n if (n === 0)\n return 'zero';\n if ((isBetween(n, 0, 2)) && n !== 0 && n != 2)\n return 'one';\n return 'other';\n },\n '19': function(n) {\n if ((isBetween(n, 2, 10)))\n return 'few';\n if ((isBetween(n, 0, 1)))\n return 'one';\n return 'other';\n },\n '20': function(n) {\n if ((isBetween((n % 10), 3, 4) || ((n % 10) == 9)) && !(\n isBetween((n % 100), 10, 19) ||\n isBetween((n % 100), 70, 79) ||\n isBetween((n % 100), 90, 99)\n ))\n return 'few';\n if ((n % 1000000) === 0 && n !== 0)\n return 'many';\n if ((n % 10) == 2 && !isIn((n % 100), [12, 72, 92]))\n return 'two';\n if ((n % 10) == 1 && !isIn((n % 100), [11, 71, 91]))\n return 'one';\n return 'other';\n },\n '21': function(n) {\n if (n === 0)\n return 'zero';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '22': function(n) {\n if ((isBetween(n, 0, 1)) || (isBetween(n, 11, 99)))\n return 'one';\n return 'other';\n },\n '23': function(n) {\n if ((isBetween((n % 10), 1, 2)) || (n % 20) === 0)\n return 'one';\n return 'other';\n },\n '24': function(n) {\n if ((isBetween(n, 3, 10) || isBetween(n, 13, 19)))\n return 'few';\n if (isIn(n, [2, 12]))\n return 'two';\n if (isIn(n, [1, 11]))\n return 'one';\n return 'other';\n }\n };\n\n // return a function that gives the plural form name for a given integer\n var index = locales2rules[lang.replace(/-.*$/, '')];\n if (!(index in pluralRules)) {\n console.warn('plural form unknown for [' + lang + ']');\n return function() { return 'other'; };\n }\n return pluralRules[index];\n }\n\n // pre-defined 'plural' macro\n gMacros.plural = function(str, param, key, prop) {\n var n = parseFloat(param);\n if (isNaN(n))\n return str;\n\n // TODO: support other properties (l20n still doesn't...)\n if (prop != gTextProp)\n return str;\n\n // initialize _pluralRules\n if (!gMacros._pluralRules) {\n gMacros._pluralRules = getPluralRules(gLanguage);\n }\n var index = '[' + gMacros._pluralRules(n) + ']';\n\n // try to find a [zero|one|two] key if it's defined\n if (n === 0 && (key + '[zero]') in gL10nData) {\n str = gL10nData[key + '[zero]'][prop];\n } else if (n == 1 && (key + '[one]') in gL10nData) {\n str = gL10nData[key + '[one]'][prop];\n } else if (n == 2 && (key + '[two]') in gL10nData) {\n str = gL10nData[key + '[two]'][prop];\n } else if ((key + index) in gL10nData) {\n str = gL10nData[key + index][prop];\n } else if ((key + '[other]') in gL10nData) {\n str = gL10nData[key + '[other]'][prop];\n }\n\n return str;\n };\n\n\n /**\n * l10n dictionary functions\n */\n\n // fetch an l10n object, warn if not found, apply `args' if possible\n function getL10nData(key, args, fallback) {\n var data = gL10nData[key];\n if (!data) {\n console.warn('#' + key + ' is undefined.');\n if (!fallback) {\n return null;\n }\n data = fallback;\n }\n\n /** This is where l10n expressions should be processed.\n * The plan is to support C-style expressions from the l20n project;\n * until then, only two kinds of simple expressions are supported:\n * {[ index ]} and {{ arguments }}.\n */\n var rv = {};\n for (var prop in data) {\n var str = data[prop];\n str = substIndexes(str, args, key, prop);\n str = substArguments(str, args, key);\n rv[prop] = str;\n }\n return rv;\n }\n\n // replace {[macros]} with their values\n function substIndexes(str, args, key, prop) {\n var reIndex = /\\{\\[\\s*([a-zA-Z]+)\\(([a-zA-Z]+)\\)\\s*\\]\\}/;\n var reMatch = reIndex.exec(str);\n if (!reMatch || !reMatch.length)\n return str;\n\n // an index/macro has been found\n // Note: at the moment, only one parameter is supported\n var macroName = reMatch[1];\n var paramName = reMatch[2];\n var param;\n if (args && paramName in args) {\n param = args[paramName];\n } else if (paramName in gL10nData) {\n param = gL10nData[paramName];\n }\n\n // there's no macro parser yet: it has to be defined in gMacros\n if (macroName in gMacros) {\n var macro = gMacros[macroName];\n str = macro(str, param, key, prop);\n }\n return str;\n }\n\n // replace {{arguments}} with their values\n function substArguments(str, args, key) {\n var reArgs = /\\{\\{\\s*(.+?)\\s*\\}\\}/g;\n return str.replace(reArgs, function(matched_text, arg) {\n if (args && arg in args) {\n return args[arg];\n }\n if (arg in gL10nData) {\n return gL10nData[arg];\n }\n console.log('argument {{' + arg + '}} for #' + key + ' is undefined.');\n return matched_text;\n });\n }\n\n // translate an HTML element\n function translateElement(element) {\n var l10n = getL10nAttributes(element);\n if (!l10n.id)\n return;\n\n // get the related l10n object\n var data = getL10nData(l10n.id, l10n.args);\n if (!data) {\n console.warn('#' + l10n.id + ' is undefined.');\n return;\n }\n\n // translate element (TODO: security checks?)\n if (data[gTextProp]) { // XXX\n if (getChildElementCount(element) === 0) {\n element[gTextProp] = data[gTextProp];\n } else {\n // this element has element children: replace the content of the first\n // (non-empty) child textNode and clear other child textNodes\n var children = element.childNodes;\n var found = false;\n for (var i = 0, l = children.length; i < l; i++) {\n if (children[i].nodeType === 3 && /\\S/.test(children[i].nodeValue)) {\n if (found) {\n children[i].nodeValue = '';\n } else {\n children[i].nodeValue = data[gTextProp];\n found = true;\n }\n }\n }\n // if no (non-empty) textNode is found, insert a textNode before the\n // first element child.\n if (!found) {\n var textNode = document.createTextNode(data[gTextProp]);\n element.insertBefore(textNode, element.firstChild);\n }\n }\n delete data[gTextProp];\n }\n\n for (var k in data) {\n element[k] = data[k];\n }\n }\n\n // webkit browsers don't currently support 'children' on SVG elements...\n function getChildElementCount(element) {\n if (element.children) {\n return element.children.length;\n }\n if (typeof element.childElementCount !== 'undefined') {\n return element.childElementCount;\n }\n var count = 0;\n for (var i = 0; i < element.childNodes.length; i++) {\n count += element.nodeType === 1 ? 1 : 0;\n }\n return count;\n }\n\n // translate an HTML subtree\n function translateFragment(element) {\n element = element || document.documentElement;\n\n // check all translatable children (= w/ a `data-l10n-id' attribute)\n var children = getTranslatableChildren(element);\n var elementCount = children.length;\n for (var i = 0; i < elementCount; i++) {\n translateElement(children[i]);\n }\n\n // translate element itself if necessary\n translateElement(element);\n }\n\n return {\n // get a localized string\n get: function(key, args, fallbackString) {\n var index = key.lastIndexOf('.');\n var prop = gTextProp;\n if (index > 0) { // An attribute has been specified\n prop = key.substring(index + 1);\n key = key.substring(0, index);\n }\n var fallback;\n if (fallbackString) {\n fallback = {};\n fallback[prop] = fallbackString;\n }\n var data = getL10nData(key, args, fallback);\n if (data && prop in data) {\n return data[prop];\n }\n return '{{' + key + '}}';\n },\n\n // debug\n getData: function() { return gL10nData; },\n getText: function() { return gTextData; },\n\n // get|set the document language\n getLanguage: function() { return gLanguage; },\n setLanguage: function(lang, callback) {\n loadLocale(lang, function() {\n if (callback)\n callback();\n });\n },\n\n // get the direction (ltr|rtl) of the current language\n getDirection: function() {\n // http://www.w3.org/International/questions/qa-scripts\n // Arabic, Hebrew, Farsi, Pashto, Urdu\n var rtlList = ['ar', 'he', 'fa', 'ps', 'ur'];\n var shortCode = gLanguage.split('-', 1)[0];\n return (rtlList.indexOf(shortCode) >= 0) ? 'rtl' : 'ltr';\n },\n\n // translate an element or document fragment\n translate: translateFragment,\n\n // this can be used to prevent race conditions\n getReadyState: function() { return gReadyState; },\n ready: function(callback) {\n if (!callback) {\n return;\n } else if (gReadyState == 'complete' || gReadyState == 'interactive') {\n window.setTimeout(function() {\n callback();\n });\n } else if (document.addEventListener) {\n document.addEventListener('localized', function once() {\n document.removeEventListener('localized', once);\n callback();\n });\n }\n }\n };\n}) (window, document);\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getPdfFilenameFromUrl, loadScript } from \"pdfjs-lib\";\n\nasync function docPropertiesLookup(pdfDocument) {\n const url = \"\",\n baseUrl = url.split(\"#\")[0];\n // eslint-disable-next-line prefer-const\n let { info, metadata, contentDispositionFilename, contentLength } =\n await pdfDocument.getMetadata();\n\n if (!contentLength) {\n const { length } = await pdfDocument.getDownloadInfo();\n contentLength = length;\n }\n\n return {\n ...info,\n baseURL: baseUrl,\n filesize: contentLength,\n filename: contentDispositionFilename || getPdfFilenameFromUrl(url),\n metadata: metadata?.getRaw(),\n authors: metadata?.get(\"dc:creator\"),\n numPages: pdfDocument.numPages,\n URL: url,\n };\n}\n\nclass GenericScripting {\n constructor(sandboxBundleSrc) {\n this._ready = loadScript(\n sandboxBundleSrc,\n /* removeScriptElement = */ true\n ).then(() => {\n return window.pdfjsSandbox.QuickJSSandbox();\n });\n }\n\n async createSandbox(data) {\n const sandbox = await this._ready;\n sandbox.create(data);\n }\n\n async dispatchEventInSandbox(event) {\n const sandbox = await this._ready;\n setTimeout(() => sandbox.dispatchEvent(event), 0);\n }\n\n async destroySandbox() {\n const sandbox = await this._ready;\n sandbox.nukeSandbox();\n }\n}\n\nexport { docPropertiesLookup, GenericScripting };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationMode, PixelsPerInch } from \"pdfjs-lib\";\nimport { PDFPrintServiceFactory, PDFViewerApplication } from \"./app.js\";\nimport { getXfaHtmlForPrinting } from \"./print_utils.js\";\n\nlet activeService = null;\nlet overlayManager = null;\n\n// Renders the page to the canvas of the given print service, and returns\n// the suggested dimensions of the output page.\nfunction renderPage(\n activeServiceOnEntry,\n pdfDocument,\n pageNumber,\n size,\n printResolution,\n optionalContentConfigPromise\n) {\n const scratchCanvas = activeService.scratchCanvas;\n\n // The size of the canvas in pixels for printing.\n const PRINT_UNITS = printResolution / PixelsPerInch.PDF;\n scratchCanvas.width = Math.floor(size.width * PRINT_UNITS);\n scratchCanvas.height = Math.floor(size.height * PRINT_UNITS);\n\n const ctx = scratchCanvas.getContext(\"2d\");\n ctx.save();\n ctx.fillStyle = \"rgb(255, 255, 255)\";\n ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height);\n ctx.restore();\n\n return pdfDocument.getPage(pageNumber).then(function (pdfPage) {\n const renderContext = {\n canvasContext: ctx,\n transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],\n viewport: pdfPage.getViewport({ scale: 1, rotation: size.rotation }),\n intent: \"print\",\n annotationMode: AnnotationMode.ENABLE_STORAGE,\n optionalContentConfigPromise,\n };\n return pdfPage.render(renderContext).promise;\n });\n}\n\nfunction PDFPrintService(\n pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise = null,\n l10n\n) {\n this.pdfDocument = pdfDocument;\n this.pagesOverview = pagesOverview;\n this.printContainer = printContainer;\n this._printResolution = printResolution || 150;\n this._optionalContentConfigPromise =\n optionalContentConfigPromise || pdfDocument.getOptionalContentConfig();\n this.l10n = l10n;\n this.currentPage = -1;\n // The temporary canvas where renderPage paints one page at a time.\n this.scratchCanvas = document.createElement(\"canvas\");\n}\n\nPDFPrintService.prototype = {\n layout() {\n this.throwIfInactive();\n\n const body = document.querySelector(\"body\");\n body.setAttribute(\"data-pdfjsprinting\", true);\n\n const hasEqualPageSizes = this.pagesOverview.every(function (size) {\n return (\n size.width === this.pagesOverview[0].width &&\n size.height === this.pagesOverview[0].height\n );\n }, this);\n if (!hasEqualPageSizes) {\n console.warn(\n \"Not all pages have the same size. The printed \" +\n \"result may be incorrect!\"\n );\n }\n\n // Insert a @page + size rule to make sure that the page size is correctly\n // set. Note that we assume that all pages have the same size, because\n // variable-size pages are not supported yet (e.g. in Chrome & Firefox).\n // TODO(robwu): Use named pages when size calculation bugs get resolved\n // (e.g. https://crbug.com/355116) AND when support for named pages is\n // added (http://www.w3.org/TR/css3-page/#using-named-pages).\n // In browsers where @page + size is not supported (such as Firefox,\n // https://bugzil.la/851441), the next stylesheet will be ignored and the\n // user has to select the correct paper size in the UI if wanted.\n this.pageStyleSheet = document.createElement(\"style\");\n const pageSize = this.pagesOverview[0];\n this.pageStyleSheet.textContent =\n \"@page { size: \" + pageSize.width + \"pt \" + pageSize.height + \"pt;}\";\n body.appendChild(this.pageStyleSheet);\n },\n\n destroy() {\n if (activeService !== this) {\n // |activeService| cannot be replaced without calling destroy() first,\n // so if it differs then an external consumer has a stale reference to\n // us.\n return;\n }\n this.printContainer.textContent = \"\";\n\n const body = document.querySelector(\"body\");\n body.removeAttribute(\"data-pdfjsprinting\");\n\n if (this.pageStyleSheet) {\n this.pageStyleSheet.remove();\n this.pageStyleSheet = null;\n }\n this.scratchCanvas.width = this.scratchCanvas.height = 0;\n this.scratchCanvas = null;\n activeService = null;\n ensureOverlay().then(function () {\n if (overlayManager.active !== \"printServiceOverlay\") {\n return; // overlay was already closed\n }\n overlayManager.close(\"printServiceOverlay\");\n });\n },\n\n renderPages() {\n if (this.pdfDocument.isPureXfa) {\n getXfaHtmlForPrinting(this.printContainer, this.pdfDocument);\n return Promise.resolve();\n }\n\n const pageCount = this.pagesOverview.length;\n const renderNextPage = (resolve, reject) => {\n this.throwIfInactive();\n if (++this.currentPage >= pageCount) {\n renderProgress(pageCount, pageCount, this.l10n);\n resolve();\n return;\n }\n const index = this.currentPage;\n renderProgress(index, pageCount, this.l10n);\n renderPage(\n this,\n this.pdfDocument,\n /* pageNumber = */ index + 1,\n this.pagesOverview[index],\n this._printResolution,\n this._optionalContentConfigPromise\n )\n .then(this.useRenderedPage.bind(this))\n .then(function () {\n renderNextPage(resolve, reject);\n }, reject);\n };\n return new Promise(renderNextPage);\n },\n\n useRenderedPage() {\n this.throwIfInactive();\n const img = document.createElement(\"img\");\n const scratchCanvas = this.scratchCanvas;\n if (\"toBlob\" in scratchCanvas) {\n scratchCanvas.toBlob(function (blob) {\n img.src = URL.createObjectURL(blob);\n });\n } else {\n img.src = scratchCanvas.toDataURL();\n }\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"printedPage\";\n wrapper.appendChild(img);\n this.printContainer.appendChild(wrapper);\n\n return new Promise(function (resolve, reject) {\n img.onload = resolve;\n img.onerror = reject;\n });\n },\n\n performPrint() {\n this.throwIfInactive();\n return new Promise(resolve => {\n // Push window.print in the macrotask queue to avoid being affected by\n // the deprecation of running print() code in a microtask, see\n // https://github.com/mozilla/pdf.js/issues/7547.\n setTimeout(() => {\n if (!this.active) {\n resolve();\n return;\n }\n print.call(window);\n // Delay promise resolution in case print() was not synchronous.\n setTimeout(resolve, 20); // Tidy-up.\n }, 0);\n });\n },\n\n get active() {\n return this === activeService;\n },\n\n throwIfInactive() {\n if (!this.active) {\n throw new Error(\"This print request was cancelled or completed.\");\n }\n },\n};\n\nconst print = window.print;\nwindow.print = function () {\n if (activeService) {\n console.warn(\"Ignored window.print() because of a pending print job.\");\n return;\n }\n ensureOverlay().then(function () {\n if (activeService) {\n overlayManager.open(\"printServiceOverlay\");\n }\n });\n\n try {\n dispatchEvent(\"beforeprint\");\n } finally {\n if (!activeService) {\n console.error(\"Expected print service to be initialized.\");\n ensureOverlay().then(function () {\n if (overlayManager.active === \"printServiceOverlay\") {\n overlayManager.close(\"printServiceOverlay\");\n }\n });\n return; // eslint-disable-line no-unsafe-finally\n }\n const activeServiceOnEntry = activeService;\n activeService\n .renderPages()\n .then(function () {\n return activeServiceOnEntry.performPrint();\n })\n .catch(function () {\n // Ignore any error messages.\n })\n .then(function () {\n // aborts acts on the \"active\" print request, so we need to check\n // whether the print request (activeServiceOnEntry) is still active.\n // Without the check, an unrelated print request (created after aborting\n // this print request while the pages were being generated) would be\n // aborted.\n if (activeServiceOnEntry.active) {\n abort();\n }\n });\n }\n};\n\nfunction dispatchEvent(eventType) {\n const event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventType, false, false, \"custom\");\n window.dispatchEvent(event);\n}\n\nfunction abort() {\n if (activeService) {\n activeService.destroy();\n dispatchEvent(\"afterprint\");\n }\n}\n\nfunction renderProgress(index, total, l10n) {\n const progressContainer = document.getElementById(\"printServiceOverlay\");\n const progress = Math.round((100 * index) / total);\n const progressBar = progressContainer.querySelector(\"progress\");\n const progressPerc = progressContainer.querySelector(\".relative-progress\");\n progressBar.value = progress;\n l10n.get(\"print_progress_percent\", { progress }).then(msg => {\n progressPerc.textContent = msg;\n });\n}\n\nwindow.addEventListener(\n \"keydown\",\n function (event) {\n // Intercept Cmd/Ctrl + P in all browsers.\n // Also intercept Cmd/Ctrl + Shift + P in Chrome and Opera\n if (\n event.keyCode === /* P= */ 80 &&\n (event.ctrlKey || event.metaKey) &&\n !event.altKey &&\n (!event.shiftKey || window.chrome || window.opera)\n ) {\n window.print();\n\n // The (browser) print dialog cannot be prevented from being shown in\n // IE11.\n event.preventDefault();\n if (event.stopImmediatePropagation) {\n event.stopImmediatePropagation();\n } else {\n event.stopPropagation();\n }\n }\n },\n true\n);\n\nif (\"onbeforeprint\" in window) {\n // Do not propagate before/afterprint events when they are not triggered\n // from within this polyfill. (FF / Chrome 63+).\n const stopPropagationIfNeeded = function (event) {\n if (event.detail !== \"custom\" && event.stopImmediatePropagation) {\n event.stopImmediatePropagation();\n }\n };\n window.addEventListener(\"beforeprint\", stopPropagationIfNeeded);\n window.addEventListener(\"afterprint\", stopPropagationIfNeeded);\n}\n\nlet overlayPromise;\nfunction ensureOverlay() {\n if (!overlayPromise) {\n overlayManager = PDFViewerApplication.overlayManager;\n if (!overlayManager) {\n throw new Error(\"The overlay manager has not yet been initialized.\");\n }\n\n overlayPromise = overlayManager.register(\n \"printServiceOverlay\",\n document.getElementById(\"printServiceOverlay\"),\n abort,\n true\n );\n document.getElementById(\"printCancel\").onclick = abort;\n }\n return overlayPromise;\n}\n\nPDFPrintServiceFactory.instance = {\n supportsPrinting: true,\n\n createPrintService(\n pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise,\n l10n\n ) {\n if (activeService) {\n throw new Error(\"The print service is created and active.\");\n }\n activeService = new PDFPrintService(\n pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise,\n l10n\n );\n return activeService;\n },\n};\n\nexport { PDFPrintService };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getXfaPageViewport, PixelsPerInch } from \"pdfjs-lib\";\nimport { SimpleLinkService } from \"./pdf_link_service.js\";\nimport { XfaLayerBuilder } from \"./xfa_layer_builder.js\";\n\nfunction getXfaHtmlForPrinting(printContainer, pdfDocument) {\n const xfaHtml = pdfDocument.allXfaHtml;\n const linkService = new SimpleLinkService();\n const scale = Math.round(PixelsPerInch.PDF_TO_CSS_UNITS * 100) / 100;\n\n for (const xfaPage of xfaHtml.children) {\n const page = document.createElement(\"div\");\n page.className = \"xfaPrintedPage\";\n printContainer.appendChild(page);\n\n const builder = new XfaLayerBuilder({\n pageDiv: page,\n pdfPage: null,\n annotationStorage: pdfDocument.annotationStorage,\n linkService,\n xfaHtml: xfaPage,\n });\n const viewport = getXfaPageViewport(xfaPage, { scale });\n\n builder.render(viewport, \"print\");\n }\n}\n\nexport { getXfaHtmlForPrinting };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppOptions } from \"./app_options.js\";\nimport { PDFViewerApplication } from \"./app.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nwindow.PDFViewerApplication = PDFViewerApplication;\nwindow.PDFViewerApplicationOptions = AppOptions;\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n var defaultUrl; // eslint-disable-line no-var\n\n (function rewriteUrlClosure() {\n // Run this code outside DOMContentLoaded to make sure that the URL\n // is rewritten as soon as possible.\n const queryString = document.location.search.slice(1);\n const m = /(^|&)file=([^&]*)/.exec(queryString);\n defaultUrl = m ? decodeURIComponent(m[2]) : \"\";\n\n // Example: chrome-extension://.../http://example.com/file.pdf\n const humanReadableUrl = \"/\" + defaultUrl + location.hash;\n history.replaceState(history.state, \"\", humanReadableUrl);\n if (top === window) {\n // eslint-disable-next-line no-undef\n chrome.runtime.sendMessage(\"showPageAction\");\n }\n })();\n}\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n require(\"./firefoxcom.js\");\n require(\"./firefox_print_service.js\");\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n require(\"./genericcom.js\");\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n require(\"./chromecom.js\");\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME || GENERIC\")) {\n require(\"./pdf_print_service.js\");\n}\n\nfunction getViewerConfiguration() {\n let errorWrapper = null;\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n errorWrapper = {\n container: document.getElementById(\"errorWrapper\"),\n errorMessage: document.getElementById(\"errorMessage\"),\n closeButton: document.getElementById(\"errorClose\"),\n errorMoreInfo: document.getElementById(\"errorMoreInfo\"),\n moreInfoButton: document.getElementById(\"errorShowMore\"),\n lessInfoButton: document.getElementById(\"errorShowLess\"),\n };\n }\n\n return {\n appContainer: document.body,\n mainContainer: document.getElementById(\"viewerContainer\"),\n viewerContainer: document.getElementById(\"viewer\"),\n toolbar: {\n container: document.getElementById(\"toolbarViewer\"),\n numPages: document.getElementById(\"numPages\"),\n pageNumber: document.getElementById(\"pageNumber\"),\n scaleSelect: document.getElementById(\"scaleSelect\"),\n customScaleOption: document.getElementById(\"customScaleOption\"),\n previous: document.getElementById(\"previous\"),\n next: document.getElementById(\"next\"),\n zoomIn: document.getElementById(\"zoomIn\"),\n zoomOut: document.getElementById(\"zoomOut\"),\n viewFind: document.getElementById(\"viewFind\"),\n openFile: document.getElementById(\"openFile\"),\n print: document.getElementById(\"print\"),\n presentationModeButton: document.getElementById(\"presentationMode\"),\n download: document.getElementById(\"download\"),\n viewBookmark: document.getElementById(\"viewBookmark\"),\n },\n secondaryToolbar: {\n toolbar: document.getElementById(\"secondaryToolbar\"),\n toggleButton: document.getElementById(\"secondaryToolbarToggle\"),\n toolbarButtonContainer: document.getElementById(\n \"secondaryToolbarButtonContainer\"\n ),\n presentationModeButton: document.getElementById(\n \"secondaryPresentationMode\"\n ),\n openFileButton: document.getElementById(\"secondaryOpenFile\"),\n printButton: document.getElementById(\"secondaryPrint\"),\n downloadButton: document.getElementById(\"secondaryDownload\"),\n viewBookmarkButton: document.getElementById(\"secondaryViewBookmark\"),\n firstPageButton: document.getElementById(\"firstPage\"),\n lastPageButton: document.getElementById(\"lastPage\"),\n pageRotateCwButton: document.getElementById(\"pageRotateCw\"),\n pageRotateCcwButton: document.getElementById(\"pageRotateCcw\"),\n cursorSelectToolButton: document.getElementById(\"cursorSelectTool\"),\n cursorHandToolButton: document.getElementById(\"cursorHandTool\"),\n scrollPageButton: document.getElementById(\"scrollPage\"),\n scrollVerticalButton: document.getElementById(\"scrollVertical\"),\n scrollHorizontalButton: document.getElementById(\"scrollHorizontal\"),\n scrollWrappedButton: document.getElementById(\"scrollWrapped\"),\n spreadNoneButton: document.getElementById(\"spreadNone\"),\n spreadOddButton: document.getElementById(\"spreadOdd\"),\n spreadEvenButton: document.getElementById(\"spreadEven\"),\n documentPropertiesButton: document.getElementById(\"documentProperties\"),\n },\n sidebar: {\n // Divs (and sidebar button)\n outerContainer: document.getElementById(\"outerContainer\"),\n viewerContainer: document.getElementById(\"viewerContainer\"),\n toggleButton: document.getElementById(\"sidebarToggle\"),\n // Buttons\n thumbnailButton: document.getElementById(\"viewThumbnail\"),\n outlineButton: document.getElementById(\"viewOutline\"),\n attachmentsButton: document.getElementById(\"viewAttachments\"),\n layersButton: document.getElementById(\"viewLayers\"),\n // Views\n thumbnailView: document.getElementById(\"thumbnailView\"),\n outlineView: document.getElementById(\"outlineView\"),\n attachmentsView: document.getElementById(\"attachmentsView\"),\n layersView: document.getElementById(\"layersView\"),\n // View-specific options\n outlineOptionsContainer: document.getElementById(\n \"outlineOptionsContainer\"\n ),\n currentOutlineItemButton: document.getElementById(\"currentOutlineItem\"),\n },\n sidebarResizer: {\n outerContainer: document.getElementById(\"outerContainer\"),\n resizer: document.getElementById(\"sidebarResizer\"),\n },\n findBar: {\n bar: document.getElementById(\"findbar\"),\n toggleButton: document.getElementById(\"viewFind\"),\n findField: document.getElementById(\"findInput\"),\n highlightAllCheckbox: document.getElementById(\"findHighlightAll\"),\n caseSensitiveCheckbox: document.getElementById(\"findMatchCase\"),\n matchDiacriticsCheckbox: document.getElementById(\"findMatchDiacritics\"),\n entireWordCheckbox: document.getElementById(\"findEntireWord\"),\n findMsg: document.getElementById(\"findMsg\"),\n findResultsCount: document.getElementById(\"findResultsCount\"),\n findPreviousButton: document.getElementById(\"findPrevious\"),\n findNextButton: document.getElementById(\"findNext\"),\n },\n passwordOverlay: {\n overlayName: \"passwordOverlay\",\n container: document.getElementById(\"passwordOverlay\"),\n label: document.getElementById(\"passwordText\"),\n input: document.getElementById(\"password\"),\n submitButton: document.getElementById(\"passwordSubmit\"),\n cancelButton: document.getElementById(\"passwordCancel\"),\n },\n documentProperties: {\n overlayName: \"documentPropertiesOverlay\",\n container: document.getElementById(\"documentPropertiesOverlay\"),\n closeButton: document.getElementById(\"documentPropertiesClose\"),\n fields: {\n fileName: document.getElementById(\"fileNameField\"),\n fileSize: document.getElementById(\"fileSizeField\"),\n title: document.getElementById(\"titleField\"),\n author: document.getElementById(\"authorField\"),\n subject: document.getElementById(\"subjectField\"),\n keywords: document.getElementById(\"keywordsField\"),\n creationDate: document.getElementById(\"creationDateField\"),\n modificationDate: document.getElementById(\"modificationDateField\"),\n creator: document.getElementById(\"creatorField\"),\n producer: document.getElementById(\"producerField\"),\n version: document.getElementById(\"versionField\"),\n pageCount: document.getElementById(\"pageCountField\"),\n pageSize: document.getElementById(\"pageSizeField\"),\n linearized: document.getElementById(\"linearizedField\"),\n },\n },\n errorWrapper,\n printContainer: document.getElementById(\"printContainer\"),\n openFileInputName: \"fileInput\",\n debuggerScriptPath: \"./debugger.js\",\n };\n}\n\nfunction webViewerLoad() {\n const config = getViewerConfiguration();\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n Promise.all([\n import(\"pdfjs-web/genericcom.js\"),\n import(\"pdfjs-web/pdf_print_service.js\"),\n ]).then(function ([genericCom, pdfPrintService]) {\n PDFViewerApplication.run(config);\n });\n } else {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n AppOptions.set(\"defaultUrl\", defaultUrl);\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n // Give custom implementations of the default viewer a simpler way to\n // set various `AppOptions`, by dispatching an event once all viewer\n // files are loaded but *before* the viewer initialization has run.\n const event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"webviewerloaded\", true, true, {\n source: window,\n });\n try {\n // Attempt to dispatch the event at the embedding `document`,\n // in order to support cases where the viewer is embedded in\n // a *dynamically* created <iframe> element.\n parent.document.dispatchEvent(event);\n } catch (ex) {\n // The viewer could be in e.g. a cross-origin <iframe> element,\n // fallback to dispatching the event at the current `document`.\n console.error(`webviewerloaded: ${ex}`);\n document.dispatchEvent(event);\n }\n }\n\n PDFViewerApplication.run(config);\n }\n}\n\n// Block the \"load\" event until all pages are loaded, to ensure that printing\n// works in Firefox; see https://bugzilla.mozilla.org/show_bug.cgi?id=1618553\nif (document.blockUnblockOnload) {\n document.blockUnblockOnload(true);\n}\n\nif (\n document.readyState === \"interactive\" ||\n document.readyState === \"complete\"\n) {\n webViewerLoad();\n} else {\n document.addEventListener(\"DOMContentLoaded\", webViewerLoad, true);\n}\n\nexport { PDFViewerApplication, AppOptions as PDFViewerApplicationOptions };\n"],"names":["compatibilityParams","Object","create","userAgent","navigator","platform","maxTouchPoints","isAndroid","test","isIOS","checkCanvasSizeLimitation","maxCanvasPixels","OptionKind","VIEWER","API","WORKER","PREFERENCE","defaultOptions","annotationMode","value","kind","cursorToolOnLoad","defaultUrl","defaultZoomValue","disableHistory","disablePageLabels","enablePermissions","enablePrintAutoRotate","enableScripting","externalLinkRel","externalLinkTarget","historyUpdateUrl","ignoreDestinationZoom","imageResourcesPath","compatibility","pdfBugEnabled","printResolution","renderer","sidebarViewOnLoad","scrollModeOnLoad","spreadModeOnLoad","textLayerMode","useOnlyCssZoom","viewerCssTheme","viewOnLoad","cMapPacked","cMapUrl","disableAutoFetch","disableFontFace","disableRange","disableStream","docBaseUrl","enableXfa","fontExtraProperties","isEvalSupported","maxImageSize","pdfBug","standardFontDataUrl","verbosity","workerPort","workerSrc","disablePreferences","locale","language","sandboxBundleSrc","userOptions","AppOptions","constructor","Error","get","name","userOption","undefined","defaultOption","getAll","options","valueType","Number","isInteger","set","setAll","remove","_hasUserOptions","keys","length","DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT","FORCE_PAGES_LOADED_TIMEOUT","WHEEL_ZOOM_DISABLED_TIMEOUT","ViewOnLoad","UNKNOWN","PREVIOUS","INITIAL","ViewerCssTheme","AUTOMATIC","LIGHT","DARK","KNOWN_VERSIONS","KNOWN_GENERATORS","DefaultExternalServices","updateFindControlState","data","updateFindMatchesCount","initPassiveLoading","callbacks","fallback","reportTelemetry","createDownloadManager","createPreferences","createL10n","createScripting","supportsIntegratedFind","shadow","supportsDocumentFonts","supportedMouseWheelZoomModifierKeys","ctrlKey","metaKey","isInAutomation","PDFViewerApplication","initialBookmark","document","location","hash","substring","_initializedCapability","createPromiseCapability","_fellback","appConfig","pdfDocument","pdfLoadingTask","printService","pdfViewer","pdfThumbnailViewer","pdfRenderingQueue","pdfPresentationMode","pdfDocumentProperties","pdfLinkService","pdfHistory","pdfSidebar","pdfSidebarResizer","pdfOutlineViewer","pdfAttachmentViewer","pdfLayerViewer","pdfCursorTools","pdfScriptingManager","store","downloadManager","overlayManager","preferences","toolbar","secondaryToolbar","eventBus","l10n","isInitialViewSet","downloadComplete","isViewerEmbedded","window","parent","url","baseUrl","_downloadUrl","externalServices","_boundEvents","documentInfo","metadata","_contentDispositionFilename","_contentLength","_saveInProgress","_docStats","_wheelUnusedTicks","_idleCallbacks","Set","initialize","_readPreferences","_parseHashParameters","_forceCssTheme","_initializeL10n","LinkTarget","NONE","TOP","_initializeViewerComponents","bindEvents","bindWindowEvents","appContainer","documentElement","translate","then","dispatch","source","resolve","console","warn","reason","error","message","params","parseQueryString","waitOn","push","loadFakeWorker","has","TextLayerMode","DISABLE","viewer","viewerContainer","classList","add","enabled","split","initPDFBug","Promise","all","dir","getDirection","getElementsByTagName","cssTheme","values","includes","styleSheet","styleSheets","cssRules","i","ii","rule","CSSMediaRule","media","deleteRule","darkRules","exec","cssText","insertRule","AutomationEventBus","EventBus","OverlayManager","PDFRenderingQueue","onIdle","_cleanup","bind","PDFLinkService","findController","PDFFindController","linkService","PDFScriptingManager","scriptingFactory","docPropertiesLookup","_scriptingDocProperties","container","mainContainer","PDFViewer","renderingQueue","scriptingManager","setViewer","PDFThumbnailViewer","sidebar","thumbnailView","setThumbnailViewer","PDFHistory","setHistory","findBar","PDFFindBar","PDFDocumentProperties","documentProperties","PDFCursorTools","Toolbar","SecondaryToolbar","supportsFullscreen","PDFPresentationMode","passwordPrompt","PasswordPrompt","passwordOverlay","PDFOutlineViewer","outlineView","PDFAttachmentViewer","attachmentsView","PDFLayerViewer","layersView","PDFSidebar","elements","onToggled","forceRendering","PDFSidebarResizer","sidebarResizer","run","config","webViewerInitialized","initialized","settled","initializedPromise","promise","zoomIn","steps","isInPresentationMode","increaseScale","zoomOut","decreaseScale","zoomReset","currentScaleValue","DEFAULT_SCALE_VALUE","pagesCount","numPages","page","currentPageNumber","val","supportsPrinting","PDFPrintServiceFactory","instance","fullscreenEnabled","loadingBar","bar","ProgressBar","setTitleUsingUrl","downloadUrl","title","getPdfFilenameFromUrl","decodeURIComponent","getFilenameFromUrl","ex","setTitle","_docFilename","_hideViewBookmark","viewBookmark","hidden","viewBookmarkButton","_cancelIdleCallbacks","size","callback","cancelIdleCallback","clear","close","_unblockDocumentLoadEvent","errorWrapper","annotationStorage","_annotationStorageModified","save","sourceEventType","promises","destroy","setDocument","externalLinkEnabled","destroyPromise","reset","PDFBug","cleanup","open","file","args","workerParameters","key","GlobalWorkerOptions","parameters","originalUrl","apiParameters","loadingTask","getDocument","onPassword","updateCallback","setUpdateCallback","onProgress","loaded","total","progress","onUnsupportedFeature","load","InvalidPDFException","MissingPDFException","UnexpectedResponseException","msg","_documentError","_ensureDownloadComplete","download","filename","getData","blob","Blob","type","dispatchWillSave","saveDocument","dispatchDidSave","downloadOrSave","featureId","moreInfo","_otherError","moreInfoText","version","build","stack","lineNumber","line","errorWrapperConfig","errorMessage","textContent","closeButton","onclick","errorMoreInfo","moreInfoButton","lessInfoButton","style","height","scrollHeight","oncontextmenu","noContextMenuHandler","parts","join","level","percent","Math","round","isNaN","loadingParams","disableAutoFetchLoadingBarTimeout","clearTimeout","show","setTimeout","hide","getDownloadInfo","firstPagePromise","pageLayoutPromise","getPageLayout","catch","pageModePromise","getPageMode","openActionPromise","getOpenAction","setPagesCount","baseDocumentUrl","onePageRendered","pagesPromise","storedPromise","ViewHistory","fingerprints","getMultiple","zoom","scrollLeft","scrollTop","rotation","sidebarView","SidebarView","scrollMode","ScrollMode","spreadMode","SpreadMode","pdfPage","setWidth","_initializeAnnotationStorageCallbacks","animationStarted","timeStamp","stored","pageLayout","pageMode","openAction","_initializePdfHistory","fingerprint","initialDest","dest","parseInt","apiPageModeToSidebarView","modes","apiPageLayoutToViewerModes","setInitialView","focus","race","hasEqualPageSizes","update","_initializeAutoPrint","timestamp","getOutline","outline","render","getAttachments","attachments","optionalContentConfigPromise","optionalContentConfig","requestIdleCallback","_collectTelemetry","delete","timeout","_initializePageLabels","_initializeMetadata","_on","once","baseURL","filesize","getRaw","authors","URL","markInfo","getMarkInfo","tagged","Marked","javaScript","getJavaScript","triggerAutoPrint","action","some","js","UNSUPPORTED_FEATURES","AutoPrintRegExp","triggerPrinting","info","contentDispositionFilename","contentLength","getMetadata","log","PDFFormatVersion","Producer","trim","Creator","pdfTitle","Title","metadataTitle","IsXFAPresent","IsAcroFormPresent","isPureXfa","forms","renderForms","IsSignaturesPresent","signatures","versionId","replace","generatorId","producer","toLowerCase","generator","formType","labels","getPageLabels","numLabels","standardLabels","emptyLabels","label","toString","setPageLabels","setPageNumber","currentPageLabel","resetHistory","updateUrl","initialRotation","JSON","stringify","explicitDest","pageNumber","onSetModified","addEventListener","beforeUnload","onResetModified","removeEventListener","storedHash","setRotation","angle","isValidRotation","pagesRotation","setViewerModes","scroll","spread","isValidScrollMode","isValidSpreadMode","setHash","RendererType","SVG","printing","isThumbnailViewEnabled","isThumbnailViewVisible","renderHighestPriority","beforePrint","dispatchWillPrint","pageViewsReady","alert","pagesOverview","getPagesOverview","printContainer","createPrintService","layout","afterPrint","dispatchDidPrint","resetModified","rotatePages","delta","requestPresentationMode","request","print","webViewerResize","webViewerHashchange","webViewerPageRendered","webViewerUpdateViewarea","webViewerPageChanging","webViewerScaleChanging","webViewerRotationChanging","webViewerSidebarViewChanged","webViewerPageMode","webViewerNamedAction","webViewerPresentationModeChanged","webViewerPresentationMode","webViewerPrint","webViewerDownload","webViewerSave","webViewerFirstPage","webViewerLastPage","webViewerNextPage","webViewerPreviousPage","webViewerZoomIn","webViewerZoomOut","webViewerZoomReset","webViewerPageNumberChanged","webViewerScaleChanged","webViewerRotateCw","webViewerRotateCcw","webViewerOptionalContentConfig","webViewerSwitchScrollMode","webViewerScrollModeChanged","webViewerSwitchSpreadMode","webViewerSpreadModeChanged","webViewerDocumentProperties","webViewerFindFromUrlHash","webViewerUpdateFindMatchesCount","webViewerUpdateFindControlState","reportPageStatsPDFBug","webViewerFileInputChange","webViewerOpenFile","windowResize","windowHashChange","windowBeforePrint","windowAfterPrint","windowUpdateFromSandbox","event","detail","webViewerVisibilityChange","webViewerWheel","passive","webViewerTouchStart","webViewerClick","webViewerKeyDown","unbindEvents","_off","unbindWindowEvents","accumulateWheelTicks","ticks","wholeTicks","sign","floor","abs","blockUnblockOnload","_reportDocumentStatsTelemetry","stats","scriptingReady","ready","validateFileURL","HOSTED_VIEWER_ORIGINS","viewerOrigin","href","origin","fileOrigin","loadScript","PDFWorker","enabledTabs","debuggerScriptPath","init","OPS","Stats","pageView","getPageView","pageStats","queryString","search","fileInput","createElement","id","openFileInputName","className","setAttribute","body","appendChild","File","FileReader","FileList","openFile","openFileButton","evt","files","target","preventDefault","dataTransfer","dropEffect","printButton","presentationModeButton","viewFind","webViewerOpenFileViaURL","updateLoadingIndicatorState","getThumbnail","setImage","mode","view","THUMBS","OUTLINE","ATTACHMENTS","LAYERS","switchView","select","toggle","presentationModeState","state","setMultiple","scale","left","top","getAnchorUrl","pdfOpenParams","currentPage","loading","renderingState","RenderingStates","FINISHED","popStateInProgress","createObjectURL","getElementById","click","nextPage","previousPage","goToPage","query","phraseSearch","caseSensitive","entireWord","highlightAll","findPrevious","matchDiacritics","matchesCount","updateResultsCount","previous","rawQuery","result","updateUIState","setPageScale","presetValue","pageLabel","scrollThumbnailIntoView","visibilityState","setZoomDisabledTimeout","zoomDisabledTimeout","deltaMode","normalizeWheelEventDirection","previousScale","currentScale","WheelEvent","DOM_DELTA_LINE","DOM_DELTA_PAGE","PIXELS_PER_LINE_SCALE","scaleCorrectionFactor","rect","getBoundingClientRect","dx","clientX","dy","clientY","touches","isOpen","containsElement","contains","toggleButton","active","isViewerInPresentationMode","handled","ensureViewerFocused","cmd","altKey","shiftKey","keyCode","eventState","assign","curElement","getActiveOrFocusedElement","curElementTagName","tagName","toUpperCase","isContentEditable","turnPage","turnOnlyIfPageFit","isVerticalScrollbarEnabled","isHorizontalScrollbarEnabled","opened","switchTool","CursorTool","SELECT","HAND","returnValue","DEFAULT_SCALE","DEFAULT_SCALE_DELTA","MIN_SCALE","MAX_SCALE","UNKNOWN_SCALE","MAX_AUTO_SCALE","SCROLLBAR_PADDING","VERTICAL_PADDING","LOADINGBAR_END_OFFSET_VAR","RUNNING","PAUSED","PresentationModeState","NORMAL","CHANGING","FULLSCREEN","CANVAS","ENABLE","ENABLE_ENHANCE","VERTICAL","HORIZONTAL","WRAPPED","PAGE","ODD","EVEN","OutputScale","pixelRatio","devicePixelRatio","sx","sy","scaled","scrollIntoView","element","spot","scrollMatches","offsetParent","offsetY","offsetTop","clientTop","offsetX","offsetLeft","clientLeft","clientHeight","clientWidth","scrollWidth","getComputedStyle","overflow","watchScroll","viewAreaElement","debounceScroll","rAF","requestAnimationFrame","viewAreaElementScrolled","currentX","lastX","right","currentY","lastY","down","_eventHandler","Map","URLSearchParams","NullCharactersRegExp","InvisibleCharactersRegExp","removeNullCharacters","str","replaceInvisible","binarySearchFirstItem","items","condition","start","minIndex","maxIndex","currentIndex","currentItem","approximateFraction","x","xinv","limit","x_","a","b","c","d","p","q","roundToDivide","div","r","getPageSizeInches","userUnit","rotate","x1","y1","x2","y2","changeOrientation","width","backtrackBeforeAllVisibleElements","index","views","elt","pageTop","getVisibleElements","scrollEl","sortByVisibility","horizontal","rtl","bottom","isElementBottomAfterViewTop","elementBottom","isElementNextAfterViewHorizontally","elementLeft","elementRight","visible","ids","numViews","firstVisibleElementInd","lastEdge","currentWidth","currentHeight","viewWidth","viewHeight","viewRight","viewBottom","hiddenHeight","max","hiddenWidth","fractionHeight","fractionWidth","y","widthPercent","first","last","sort","pc","hypot","deltaX","deltaY","atan2","PI","normalizeWheelEventDelta","MOUSE_DOM_DELTA_PIXEL_MODE","MOUSE_DOM_DELTA_LINE_MODE","MOUSE_PIXELS_PER_LINE","MOUSE_LINES_PER_PAGE","isPortraitOrientation","clamp","v","min","units","querySelector","parentNode","_updateBar","_indeterminate","progressSize","_percent","scrollbarWidth","offsetWidth","doc","setProperty","curRoot","curActiveOrFocused","activeElement","shadowRoot","WaitOnType","EVENT","TIMEOUT","waitOnEventOrTimeout","delay","reject","handler","eventHandler","timeoutHandler","_listeners","on","eventName","listener","external","off","eventListeners","externalListeners","slice","splice","pdfjsLib","__non_webpack_require__","module","exports","ZOOM","activeBeforePresentationMode","handTool","GrabToPan","_addEventListeners","activeTool","tool","disableActiveTool","deactivate","activate","_dispatchEvent","previouslyActive","CSS_CLASS_GRAB","ownerDocument","ignoreTarget","onActiveChanged","_onMouseDown","onMouseDown","_onMouseMove","onMouseMove","_endPan","endPan","overlay","node","matches","button","originalTarget","e","scrollLeftStart","scrollTopStart","clientXStart","clientYStart","stopPropagation","focusedElement","blur","buttons","xDiff","yDiff","scrollTo","behavior","DEFAULT_LINK_REL","SELF","BLANK","PARENT","addLinkAttributes","link","rel","urlNullRemoved","targetStr","pagesRefCache","_ignoreDestinationZoom","goToDestinationHelper","rawDest","namedDest","destRef","_cachedPageNumber","getPageIndex","pageIndex","cachePageRef","pushCurrentPosition","scrollPageIntoView","destArray","goToDestination","getDestination","Array","isArray","pageLabelToPageNumber","pushPage","newWindow","getDestinationHash","escape","anchor","zoomArgs","zoomArg","zoomArgNumber","parseFloat","allowNegativeOffset","unescape","parse","isValidExplicitDestination","executeNamedAction","back","forward","pageNum","pageRef","refStr","gen","num","isPageVisible","isPageCached","destLength","allowNull","param","SimpleLinkService","_overlays","_active","_keyDownBound","_keyDown","register","callerCloseMethod","canForceClose","unregister","_closeThroughCaller","overlayName","input","submitButton","cancelButton","_isViewerEmbedded","verify","cancel","passwordIncorrect","PasswordResponses","INCORRECT_PASSWORD","password","BaseTreeViewer","_appendAttachment","keepRenderedCapability","_attachments","_renderedCapability","_pendingDispatchEvent","attachmentsCount","_bindLink","content","openOrDownloadData","names","localeCompare","fragment","createDocumentFragment","item","_normalizeTextContent","_finishRendering","renderedPromise","TREEITEM_OFFSET_TOP","TREEITEM_SELECTED_CLASS","_pdfDocument","_lastToggleIsShow","_currentTreeItem","count","_addToggleButton","toggler","shouldShowAll","_toggleTreeItem","insertBefore","firstChild","root","querySelectorAll","_toggleAllTreeItems","hasAnyNesting","_updateCurrentTreeItem","treeItem","_scrollToCurrentTreeItem","currentNode","firstElementChild","DEFAULT_FIELD_CONTENT","NON_METRIC_LOCALES","US_PAGE_NAMES","METRIC_PAGE_NAMES","getPageName","isPortrait","pageNames","fields","_reset","_currentPageNumber","_pagesRotation","_isNonMetricLocale","getLanguage","freezeFieldData","defineProperty","freeze","writable","enumerable","configurable","_dataAvailableCapability","fieldData","_updateUI","fileName","fileSize","creationDate","modificationDate","pageSize","isLinearized","_parseFileSize","_parseDate","CreationDate","ModDate","getPage","_parsePageSize","_parseLinearization","IsLinearized","author","Author","subject","Subject","keywords","Keywords","creator","pageCount","linearized","kb","mb","size_mb","toPrecision","toLocaleString","size_kb","size_b","pageSizeInches","sizeInches","sizeMillimeters","rawName","exactMillimeters","intMillimeters","unit","orientation","inputDate","dateObject","PDFDateString","toDateObject","date","toLocaleDateString","time","toLocaleTimeString","MATCHES_COUNT_LIMIT","findField","highlightAllCheckbox","caseSensitiveCheckbox","matchDiacriticsCheckbox","entireWordCheckbox","findMsg","findResultsCount","findPreviousButton","findNextButton","dispatchEvent","_adjustWidth","findPrev","checked","status","FindState","FOUND","PENDING","NOT_FOUND","current","matchCountMsg","findbarHeight","inputContainerHeight","FIND_TIMEOUT","MATCH_SCROLL_OFFSET_TOP","MATCH_SCROLL_OFFSET_LEFT","CHARACTERS_TO_NORMALIZE","DIACRITICS_EXCEPTION","DIACRITICS_EXCEPTION_STR","map","String","fromCharCode","DIACRITICS_REG_EXP","SPECIAL_CHARS_REG_EXP","NOT_DIACRITIC_FROM_END_REG_EXP","NOT_DIACRITIC_FROM_START_REG_EXP","normalizationRegex","normalize","text","RegExp","rawDiacriticsPositions","m","normalized","positions","k","shift","shiftOrigin","eol","hasDiacritics","match","p1","p2","p3","p4","replacement","jj","j","hasTrailingDashEOL","endsWith","len","charAt","getOriginalIndex","diffs","pos","end","_linkService","_eventBus","_onFind","_onFindBarClose","executeCommand","highlightMatches","_highlightMatches","pageMatches","_pageMatches","pageMatchesLength","_pageMatchesLength","selected","_selected","_state","_firstPageCapability","_shouldDirtyMatch","_dirtyMatch","_updateUIState","_extractText","findbarClosed","pendingTimeout","_findTimeout","_nextMatch","_updateAllPages","scrollMatchIntoView","selectedLeft","matchIndex","_scrollMatches","matchIdx","pageIdx","_offset","wrapped","_extractTextPromises","_pageContents","_pageDiffs","_hasDiacritics","_matchesCountTotal","_pagesToSearch","_pendingFindMatches","_resumePageIdx","_query","_rawQuery","_normalizedQuery","_isEntireWord","startIdx","charCodeAt","getCharacterType","_calculateRegExpMatch","pageContent","matchesLength","matchPos","matchLen","_convertToRegExpString","isUnicode","p5","trailingSpaces","_calculateMatch","reverse","isUnicodePart","queryPart","flags","_updatePage","_nextPageMatch","pageMatchesCount","_updateUIResultsCount","extractTextCapability","getTextContent","textItems","strBuf","hasEOL","currentPageIndex","offset","numPageMatches","_updateMatch","_advanceOffsetPage","_matchesReady","numMatches","found","_requestMatchesCount","CharacterType","SPACE","ALPHA_LETTER","PUNCT","HAN_LETTER","KATAKANA_LETTER","HIRAGANA_LETTER","HALFWIDTH_KATAKANA_LETTER","THAI_LETTER","isAlphabeticalScript","charCode","isAscii","isAsciiAlpha","isAsciiDigit","isAsciiSpace","isHan","isKatakana","isHiragana","isHalfwidthKatakana","isThai","HASH_CHANGE_TIMEOUT","POSITION_UPDATED_THRESHOLD","UPDATE_VIEWAREA_TIMEOUT","getCurrentHash","_initialized","_fingerprint","_isViewerInPresentationMode","_isPagesLoaded","reInitialized","_updateUrl","_bindEvents","history","_popStateInProgress","_blockHashChange","_currentHash","_numPositionUpdates","_uid","_maxUid","_destination","_position","_isValidState","_parseCurrentHash","_pushOrReplaceState","destination","_updateInternalState","uid","_initialRotation","_initialBookmark","_pageHide","_unbindEvents","_updateViewareaTimeout","_isValidPage","forceReplace","isDestHashesEqual","isDestArraysEqual","_tryPushCurrentPosition","shouldReplace","newState","newUrl","startsWith","replaceState","pushState","temporary","position","checkReload","perfEntry","performance","getEntriesByType","removeTemporary","checkNameddest","nameddest","_updateViewarea","_popState","newHash","hashChanged","updateViewarea","popState","pageHide","destHash","pushHash","firstDest","secondDest","isEntryEqual","second","_resetLayers","_optionalContentConfig","layersCount","groupId","setVisibility","_setNestedName","fontStyle","groups","getOrder","queue","levelData","itemsDiv","order","group","getGroup","getOptionalContentConfig","_currentOutlineItem","_currentOutlineItemCapability","_sidebarView","_outline","_pageNumberToDestHashCapability","outlineCount","currentOutlineItemPromise","_setStyles","bold","italic","fontWeight","totalCount","nestedCount","nestedItems","pageNumberToDestHash","_getPageNumberToDestHash","linkElement","pageNumberNesting","nesting","currentNesting","DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS","DELAY_BEFORE_HIDING_CONTROLS","ACTIVE_SELECTOR","CONTROLS_SELECTOR","MOUSE_SCROLL_COOLDOWN_TIME","PAGE_SWITCH_THRESHOLD","SWIPE_MIN_DISTANCE_THRESHOLD","SWIPE_ANGLE_THRESHOLD","contextMenuOpen","mouseScrollTimeStamp","mouseScrollDelta","touchSwipeState","switchInProgress","requestFullscreen","addFullscreenChangeListeners","setSwitchInProgress","notifyStateChange","scaleValue","mouseWheel","currentTime","Date","now","storedTime","resetMouseScrollState","totalDelta","success","removeFullscreenChangeListeners","resetSwitchInProgress","enter","addWindowListeners","showControls","getSelection","removeAllRanges","exit","removeWindowListeners","hideControls","mouseDown","isInternalLink","contextMenu","controlsTimeout","touchSwipe","startX","pageX","startY","pageY","endX","endY","absAngle","showControlsBind","mouseDownBind","mouseWheelBind","resetMouseScrollStateBind","contextMenuBind","touchSwipeBind","fullscreenChange","fullscreenElement","fullscreenChangeBind","CLEANUP_TIMEOUT","highestPriorityPage","idleTimeout","isHighestPriority","renderingId","hasViewer","currentlyVisiblePages","getHighestPriority","scrolledDown","preRenderExtra","visibleViews","numVisible","isViewFinished","firstId","lastId","visibleIds","holeId","holeView","preRenderIndex","preRenderView","renderView","resume","draw","finally","RenderingCancelledException","_pdfViewer","_closeCapability","_destroyCapability","_scripting","_mouseState","_ready","_sandboxBundleSrc","_scriptingFactory","_docPropertiesLookup","_destroyScripting","objects","calculationOrder","docActions","getFieldObjects","getCalculationOrderIds","getJSActions","_createScripting","_internalEvents","_updateFromSandbox","dispatchEventInSandbox","_dispatchPageClose","_dispatchPageOpen","_pageOpenPending","_domEvents","isDown","docProperties","_getDocProperties","createSandbox","appInfo","docInfo","actions","mouseState","_visitedPages","isChangingPresentationMode","siblings","command","elementId","CustomEvent","setValue","visitedPages","actionsPromise","destroySandbox","UI_NOTIFICATION_CLASS","outerContainer","thumbnailButton","outlineButton","attachmentsButton","layersButton","_outlineOptionsContainer","outlineOptionsContainer","_currentOutlineItemButton","currentOutlineItemButton","_hideUINotification","disabled","visibleView","isOutlineViewVisible","isAttachmentsViewVisible","isLayersViewVisible","_switchView","forceOpen","isViewChanged","shouldForceRendering","_updateThumbnailViewer","_forceRendering","_showUINotification","onTreeLoaded","SIDEBAR_WIDTH_VAR","SIDEBAR_MIN_WIDTH","SIDEBAR_RESIZING_CLASS","isRTL","sidebarOpen","_width","_outerContainerWidth","resizer","outerContainerWidth","_updateWidth","maxWidth","_mouseMove","_mouseUp","mouseMove","mouseUp","updated","THUMBNAIL_SCROLL_MARGIN","THUMBNAIL_SELECTED_CLASS","_scrollUpdated","_resetView","_setImageDisabled","_thumbnails","_getVisibleThumbs","prevThumbnailView","shouldScroll","updateArgs","thumbnail","TempImageFactory","destroyCanvas","_pageLabels","_optionalContentConfigPromise","_cancelRendering","firstPdfPage","viewport","getViewport","checkSetImageDisabled","PDFThumbnailView","defaultViewport","clone","firstThumbnailView","setPdfPage","cancelRendering","setPageLabel","ensurePdfPageLoaded","thumbView","getScrollAhead","visibleThumbs","scrollAhead","DRAW_UPSCALE_FACTOR","MAX_NUM_SCALING_STEPS","THUMBNAIL_CANVAS_BORDER_WIDTH","THUMBNAIL_WIDTH","tempCanvas","getCanvas","mozOpaque","ctx","getContext","alpha","fillStyle","fillRect","restore","pdfPageRotate","renderTask","_checkSetImageDisabled","pageWidth","pageHeight","pageRatio","canvasWidth","canvasHeight","_thumbPageTitle","ring","borderAdjustment","totalRotation","removeAttribute","canvas","image","_getPageDrawContext","upscaleFactor","outputScale","transform","_convertCanvasToImage","reducedCanvas","_reduceImage","_thumbPageCanvas","src","toDataURL","finishRenderTask","drawViewport","renderContinueCallback","cont","renderContext","canvasContext","onContinue","resultPromise","pageCached","img","drawImage","reducedWidth","reducedHeight","reducedImage","reducedImageCtx","BaseViewer","PDFSinglePageViewer","_scrollMode","_spreadMode","_updateScrollMode","_updateSpreadMode","DEFAULT_CACHE_SIZE","ENABLE_PERMISSIONS_CLASS","PagesCountLimit","FORCE_SCROLL_MODE_PAGE","FORCE_LAZY_PAGE_INIT","PAUSE_EAGER_PAGE_INIT","PDFPageViewBuffer","buf","destroyFirstView","resize","newSize","idsToKeep","Symbol","iterator","firstView","next","buffer","AnnotationMode","ENABLE_FORMS","previousAnnotationMode","previousContainerHeight","scrollModePageState","onVisibilityChange","viewerVersion","_scriptingManager","removePageBorders","NullL10n","defaultRenderingQueue","_doc","_scrollUpdate","_onBeforeDraw","_onAfterDraw","_pages","_pagesCapability","every","_setCurrentPageNumber","resetCurrentPageView","_resetCurrentPageView","indexOf","_currentScale","_setScale","_currentScaleValue","_onePageRenderedCapability","initializePermissions","permissions","PermissionFlag","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","onePageRenderedOrForceFetch","_getVisiblePages","visibilityChangePromise","permissionsPromise","getPermissions","cssTransform","viewerElement","PixelsPerInch","PDF_TO_CSS_UNITS","textLayerFactory","annotationLayerFactory","xfaLayerFactory","PDFPageView","textHighlighterFactory","structTreeLayerFactory","firstPageView","ref","ensurePageViewVisible","getPagesLeft","Language","lang","_location","_previousScrollMode","previousPageNumber","scrollDown","pages","dummyPage","pageIndexSet","parity","cloneNode","_scrollIntoView","pageDiv","pageSpot","isSameScale","newScale","_setScaleUpdatePages","newValue","noScroll","preset","_pageWidthScaleFactor","hPadding","vPadding","pageWidthScale","pageHeightScale","horizontalScale","widthScale","heightScale","boundingRect","convertToViewportPoint","_updateLocation","firstPage","normalizedScaleValue","currentPageView","topLeft","getPagePoint","intLeft","intTop","visiblePages","numVisiblePages","newCacheSize","isSimpleLayout","currentId","stillFullyVisible","_isContainerRtl","direction","_getCurrentVisiblePage","toggleLoadingIconSpinner","createTextLayerBuilder","textLayerDiv","enhanceTextSelection","highlighter","TextLayerBuilder","createTextHighlighter","TextHighlighter","createAnnotationLayerBuilder","hasJSActionsPromise","fieldObjectsPromise","annotationCanvasMap","AnnotationLayerBuilder","hasJSActions","createXfaLayerBuilder","XfaLayerBuilder","createStructTreeLayerBuilder","StructTreeLayerBuilder","_getPageAdvance","yArray","expectedId","advance","toFixed","ceil","_hasJSActionsPromise","_fieldObjectsPromise","_annotationCanvasMap","_cancelled","intent","annotations","fieldObjects","getAnnotations","dontFlip","AnnotationLayer","DEFAULT_L10N_STRINGS","of_pages","page_of_pages","document_properties_kb","document_properties_mb","document_properties_date_string","document_properties_page_size_unit_inches","document_properties_page_size_unit_millimeters","document_properties_page_size_orientation_portrait","document_properties_page_size_orientation_landscape","document_properties_page_size_name_a3","document_properties_page_size_name_a4","document_properties_page_size_name_letter","document_properties_page_size_name_legal","document_properties_page_size_dimension_string","document_properties_page_size_dimension_name_string","document_properties_linearized_yes","document_properties_linearized_no","print_progress_percent","additional_layers","page_landmark","thumb_page_title","thumb_page_canvas","find_reached_top","find_reached_bottom","find_not_found","error_version_info","error_message","error_stack","error_file","error_line","rendering_error","page_scale_width","page_scale_fit","page_scale_auto","page_scale_actual","page_scale_percent","loading_error","invalid_file_error","missing_file_error","unexpected_response_error","printing_not_supported","printing_not_ready","web_fonts_disabled","getL10nFallback","PARTIAL_LANG_CODES","en","es","fy","ga","gu","hi","hy","nb","ne","nn","pa","pt","sv","zh","fixupLangCode","langCode","formatL10nValue","MAX_CANVAS_PIXELS","hasRestrictedScaling","textHighlighter","paintTask","paintedViewportMap","WeakMap","_renderError","_isStandalone","annotationLayer","textLayer","zoomLayer","xfaLayer","structTreeLayer","_renderAnnotationLayer","_renderXfaLayer","_buildXfaTextContentItems","textDivs","setTextMapping","enable","_resetZoomLayer","removeFromDOM","zoomLayerCanvas","keepZoomLayer","keepAnnotationLayer","keepXfaLayer","childNodes","zoomLayerNode","annotationLayerNode","xfaLayerNode","svg","loadingIconDiv","arguments","viewportScale","redrawAnnotationLayer","redrawXfaLayer","isScalingRestricted","disable","_onTextLayerRendered","relativeRotation","absRotation","scaleX","scaleY","textLayerViewport","textRelativeRotation","textAbsRotation","transX","transY","transformOrigin","convertToPdfPoint","viewVisible","canvasWrapper","finishPaintTask","paintOnSvg","paintOnCanvas","onRenderContinue","readableStream","streamTextContent","includeMarkedContent","setTextContentStream","getStructTree","tree","treeDom","renderCapability","isCanvasHidden","showCanvas","actualSizeViewport","pixelsInViewport","maxScale","sqrt","sfx","sfy","wrapper","cancelled","ensureNotCancelled","getOperatorList","opList","svgGfx","SVGGraphics","commonObjs","objs","getSVG","PDF_ROLE_TO_HTML_ROLE","Document","DocumentFragment","Part","Sect","Div","Aside","NonStruct","P","H","FENote","Sub","Lbl","Span","Em","Strong","Link","Annot","Form","Ruby","RB","RT","RP","Warichu","WT","WP","L","LI","LBody","Table","TR","TH","TD","THead","TBody","TFoot","Caption","Figure","Formula","Artifact","HEADING_PATTERN","structTree","_walk","_setAttributes","structElement","htmlElement","alt","role","children","kid","_onUpdateTextLayerMatches","textContentItemsStr","divs","texts","_updateMatches","_convertMatches","iIndex","mm","begin","divIdx","_renderMatches","isSelectedPage","selectedMatchIdx","prevEnd","infinity","beginText","appendTextToDiv","fromOffset","toOffset","nodeType","Node","TEXT_NODE","span","createTextNode","i0","i1","isSelected","highlightSuffix","n0","n1","clearedUntilDivIdx","n","EXPAND_DIVS_TIMEOUT","textContentStream","renderingDone","textLayerRenderTask","_bindMouse","endOfContent","numTextDivs","textLayerFrag","renderTextLayer","setTextContent","expandDivsTimer","expandTextDivs","adjustTop","getPropertyValue","divBounds","xfaHtml","XfaLayer","getXfa","toolbarButtonContainer","downloadButton","firstPageButton","lastPageButton","pageRotateCwButton","pageRotateCcwButton","cursorSelectToolButton","eventDetails","cursorHandToolButton","scrollPageButton","scrollVerticalButton","scrollHorizontalButton","scrollWrappedButton","spreadNoneButton","spreadOddButton","spreadEvenButton","documentPropertiesButton","lastPage","pageRotateCw","pageRotateCcw","containerHeight","_bindClickListeners","_bindCursorToolsListener","_bindScrollModeListener","_bindSpreadModeListener","_setMaxHeight","details","property","scrollModeChanged","forceScrollModePage","isScrollModeHorizontal","spreadModeChanged","maxHeight","PAGE_NUMBER_LOADING_INDICATOR","scaleSelect","customScaleOption","_wasLocalized","_bindListeners","hasPageLabels","pageScaleValue","pageScale","self","_adjustScaleWidth","resetNumPages","predefinedValueFound","option","pageNumberInput","predefinedValuesPromise","scaleSelectContainerWidth","scaleSelectOverflow","font","fontSize","fontFamily","predefinedValue","measureText","DEFAULT_VIEW_HISTORY_CACHE_SIZE","cacheSize","_initializedPromise","_readFromStorage","databaseStr","database","branch","_writeToStorage","localStorage","setItem","getItem","properties","defaultValue","GenericCom","GenericPreferences","BasePreferences","prefObj","GenericExternalServices","DownloadManager","GenericL10n","GenericScripting","prefs","defaults","prefValue","defaultType","obj","blobUrl","_openBlobUrls","createValidAbsoluteUrl","downloadData","contentType","isPdfData","isPdfFile","viewerUrl","encodeURIComponent","revokeObjectURL","webL10n","_lang","setLanguage","gL10nData","gTextData","gTextProp","gLanguage","gMacros","gReadyState","gAsyncResourceLoading","getL10nResourceLinks","getL10nDictionary","script","innerHTML","getTranslatableChildren","getL10nAttributes","l10nId","getAttribute","l10nArgs","xhrLoadText","onSuccess","onFailure","_onSuccess","_onFailure","xhr","XMLHttpRequest","overrideMimeType","onreadystatechange","readyState","responseText","onerror","ontimeout","send","parseResource","successCallback","failureCallback","evalString","lastIndexOf","parseProperties","parsedPropertiesCallback","dictionary","reBlank","reComment","reSection","reImport","reSplit","parseRawLines","rawText","extendedSyntax","parsedRawLinesCallback","entries","currentLang","genericLang","skipLang","nextEntry","loadImport","tmp","response","prop","loadLocale","_callback","langLinks","langCount","dict","locales","default_locale","defaultLocale","anyCaseLang","onResourceLoaded","gResourceCount","L10nResourceLink","resource","getPluralRules","locales2rules","isIn","list","isBetween","pluralRules","plural","_pluralRules","getL10nData","rv","substIndexes","substArguments","reIndex","reMatch","macroName","paramName","macro","reArgs","matched_text","arg","translateElement","getChildElementCount","l","nodeValue","textNode","childElementCount","translateFragment","elementCount","fallbackString","getText","rtlList","shortCode","getReadyState","pdfjsSandbox","QuickJSSandbox","sandbox","nukeSandbox","activeService","renderPage","activeServiceOnEntry","scratchCanvas","PRINT_UNITS","PDF","ENABLE_STORAGE","PDFPrintService","_printResolution","prototype","throwIfInactive","pageStyleSheet","ensureOverlay","renderPages","getXfaHtmlForPrinting","renderNextPage","renderProgress","useRenderedPage","toBlob","onload","performPrint","call","abort","eventType","createEvent","initCustomEvent","progressContainer","progressBar","progressPerc","chrome","opera","stopImmediatePropagation","stopPropagationIfNeeded","overlayPromise","allXfaHtml","xfaPage","builder","getXfaPageViewport","pdfjsVersion","pdfjsBuild","PDFViewerApplicationOptions","require","getViewerConfiguration","webViewerLoad"],"sourceRoot":""} \ No newline at end of file